From 0c819da6f5601f52292eaffe0f93b214fdf6df99 Mon Sep 17 00:00:00 2001 From: Seven Du Date: Wed, 27 May 2015 03:15:00 +0800 Subject: [PATCH] FS-7585: add rtmp video support --- clients/flex/freeswitch-h264.swf | Bin 0 -> 307762 bytes clients/flex/freeswitch-video.html | 195 ++++++ clients/flex/jquery.min.js | 167 +++++ src/mod/endpoints/mod_rtmp/Makefile.am | 2 +- src/mod/endpoints/mod_rtmp/handshake.h | 771 ++++++++++++++++++++++++ src/mod/endpoints/mod_rtmp/mod_rtmp.c | 237 ++++++-- src/mod/endpoints/mod_rtmp/mod_rtmp.h | 60 +- src/mod/endpoints/mod_rtmp/rtmp.c | 157 ++++- src/mod/endpoints/mod_rtmp/rtmp_sig.c | 31 +- src/mod/endpoints/mod_rtmp/rtmp_tcp.c | 80 +-- src/mod/endpoints/mod_rtmp/rtmp_video.c | 749 +++++++++++++++++++++++ src/mod/endpoints/mod_rtmp/rtmp_video.h | 49 ++ 12 files changed, 2364 insertions(+), 134 deletions(-) create mode 100644 clients/flex/freeswitch-h264.swf create mode 100644 clients/flex/freeswitch-video.html create mode 100644 clients/flex/jquery.min.js create mode 100644 src/mod/endpoints/mod_rtmp/handshake.h create mode 100644 src/mod/endpoints/mod_rtmp/rtmp_video.c create mode 100644 src/mod/endpoints/mod_rtmp/rtmp_video.h diff --git a/clients/flex/freeswitch-h264.swf b/clients/flex/freeswitch-h264.swf new file mode 100644 index 0000000000000000000000000000000000000000..fb9f23945ff7029aeae8f4a4458d5ade3fa92bbf GIT binary patch literal 307762 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
    oE}MyY&E8* zCh|t%V6li#IrZDgE&>yN{<_Xu-D#-D?4K?>g4SxSZ#86`WMK>C)eIGeq*YGRsuW&v zO00L*ZDx@Y^ta(e%5HnVj@Q@q`tHzNad(+*vF&JiclOGw`i$wxTz1mP6*5LX^iLM@ zUqWPjTv#g?dhyaOJNw)2Gz^xofWnKG7DY_y5glklTE;_DcjN^Vl{+iPjO~&Z@IYp`0}#Z zOQ%%#QNN4QG z6gZu+uhJAKbio{>NS#YOnlGes1%8wzq21HA$pecsZAbKtOyzQTBRyI$rbYLTt%A%< zZ0WO%i_kVRvvFwVcp*DAvUNH`g-!_)&!s?my;)zHo##2fC=3?Jqr(IHd8U8W2l`j0 zHYU=&?P-l#sZ&zfo$@=nMY9RMha0xj`Z8UmNQc6ozs}$x``7*(Na}D15NfC+EdYQk2_foKZDb=&ST=t99V2oeE(7X z?#H%?dBD z(#I<`XX0KL%8{(NZ$&a2C6mz>MoJng6Em~6k0jHR&EUw^%vgFll}-nQWr0#DB2YPl zCYLZ{#jZ;yjdUU}wg=^AFtBy6(v-J3gm7lS1w#=(dI$TooDxFD94@9h|x{#CUKKCCQLdma-X`3 z7_Br`hsA~v^mjST^^4hksWM*QQ=tt)X>S=_#2g2|4bF=uDW2b4=JjGyPog9$!J3hJ z4z;%xEL0Rr<%PwZRB!5N#Z%d$f^RH~Tsli-SC}NJ&8ZrVSUxX?;+bWK-UDIZ?All# z1~zKHg0?z4?U3klboVs1pj6$cn0!m_*lm))E|zC$afc>5pp9*% zy}g!M#9r3L+*7VP_|DEkHaj+rwS}Y{dptr*%_?r_CSL>y5yM;uM+b{x&+UbM?XH~p|mg%t9cmc-R0iEGGQngIvgMDzNE z9r|dKg(*dv>B|j&&d8$?J!6HOCs!ErG@8|JOzZh<4y0ltwZ$061g{NeCeoNZG`S}2 zwAQAWRMMa&eq(eLE7Fi~s78YJ4Fq9{%onngq1H_W5gU!K3Og<}h{}kZF^O82OG;tp z$BLSoOrt$yl;B7Di7T8c(3(0`$YpkjWz#?#7KrR z8sTpSi-d((H&O60p;{x(8MP>d;ExYjY?L=`1Os#Q(bI2y!*pA0e@!U1yRn1Z``tK; z>xj-QVXitlEk>OP9V0{Cf?gM-^+uu!0wavhIq<=W?6hb`pD{jJ*csZI&1K$_ohYQn zLapOAfo-&k9!ZS_3tKZI$4?mfd@xm*9?ljD+3`RTG>){OHK4|f(SpC&Bz@%of;kdL zXvHS0ANzqor%J)cJX}QjykGhO712-R8hF%`~(ZQXKAp{>hk$f} zS2c1VzMc8WR1SQ)749or2T1wgo)8%KS`E)4BBFLvM%0DtvqJfuZ#!_w8GR+{4y<2)FT`cd}#k?Su)YQ!7 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Ã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%0DQ`JQA4^ zp!|?$#(m-JIz52#VAye@jpI0NoRWPk8K|1^zp0#`L;0!%^{YNszxu7x^k_1D@Ycph z3Evfs{|EKA>OUy?$CLa?dGk*sb1!HJWjm9~h_Lnx<+o2MD-9NeOG*naD39@~u(p{6KrM^_LGD{VOnmDF8Xg*|2YBpFv0TEpx zSkN;M8%pbs#x#dyzY8Hck{H7>DI~0f-|C#x-_-KLk+VWH*PofbR%iHkH6A$(ZH{ zGRi_C)NgSDoKXsq%o#;-%L-rf4$C&)kwT`g5(SFecM>5p&iWQ_{e5+2TBiJpL&3k{^BxB4}Zj@~Mh35AqJA5*((m|LljD*8*6N;C&jW(hgq^qrH)_2tELV7;W5=h)YOguP%kT6 zq6y0E)B}@ytjsR@0nU}ZKxiORppd+tG2DM>(;|GiLFhJ)wuJ$-ca%(V`|?1h!Yxmkp}z)kGnp zAAlHbROGqz*E-_@WS@n%R2ZKAD@g@*%_psEzs?6Su24HGEZxzg~ijNvd{eqpCjRO&ChBT z3FnY-4z0KgUw3gU?%`G(5v`b^32F^ol`6?q=_3sDUfn7eXX+NT+o;7B6v8MExH#?= zQX=d&$|T-BM0U;$2K>W3>=zPqgWwJ7DdJ4&a%J2f(s^2aJqxICR1OoOs!JOE`HF8U zCbqMiaUNZyig&ABE;Txp%Gv{Bgh8g^C~Kpry*`k33h#44+5oabulWf#cZEJA`Flc; zzd+@{yRb~6tIcQhY}ZK5%C1B^I<%T5JQ-H(pwb`Is+o&uKA;sBXjOm42@h&k?&+l2 zl|)n<)Mc7BM;kXs1I2|})kp>56OqOf5e`>#_*k^@m`GPRyd&1QBgWw~oWC4xEQ|EL z9Nr#j+%EFl96lRsJS*VWaQIBD@r(#ROW~^Jn1=_n=3si~^@ZRK&^QWIO%4RoYi^Z6 zrOKq>S|_Mh{YMI}bAqfdkbc_3M`@uEJ(KSxt~_;c3rfG49Z#|tm-@j|c13%SQTbitq6&-^K-M*Zh` zM99#jw%0Cga&fWO82_tpkW0ikRxbEbEYTv`4$b|w9t0-V0;f&^|TFH^}l?ICrO9MoQ5X@h>Y3-Wt{6f=M zf3WN|Z6BJp7a?>abcfGm@U8A4IQEGm95~>Bf z@@J~TZWQ-|1&pT%#Al~kb6ny>P#Ws7YrY5itu;wF(6xd>e?c=>B)cT9)oe>zgu8$g zVPv0CeSzgeot@?%1J$lg9>B=2_(x%m09rwsBSixeH@aI}G#PnjT$TzKxU6r?Gem!$LH$iRdnI_;rSIeScp)$m~;j7N03ZFZ_vKKqz$nxZ+x*he0- z7MK>aD}2maDOug&NX4x51~qe>CvGQ8-)w`+5VC0nU znj_#MP$6E3XFt=8sydp~*OE?b(0n~ff8M~KH}U7K zWOhw5Qi#?36BQVv?m+3U3I*TB1y}hBrgZ9QjCx9cp2Z&;0;isD%X)?cszS9@sJ05# zRyozu6oWrhkzLDtx)XeYK0vrbvd;$9SNlW1O%fZ$hCQR$tJt|V^p!v*4$NPIot?~I z%FnO3is@WKUs+HGY*aLj^%qZa>!xw*gst2U13u$8*MRTqE#n&cm>{pML!+*4-R3rg z$&@xWdfLSnmVB1Nv%`|Oommpcwm$8~EvC4|9CwDfW03X0_R$~sgahC8X=W4Yk{FLY zyJIA72=O)EmV6%kn(LtE8VH`f$tRb&Cq8&kmB2p;9x7IA0)oV7z`G7B3g1eO9J57=Ub)su0tio*)ARVe6XYDkCi}~ z#k*s`=(wQP{t{FS=uSEjZxRR3O$9x3lak1Y%OpGxF1WJ(n*Qz}8GWaVeDCx`Ev=M$FsVGwpRnm@vE^>8v~K3Qj( zmIvX+4D>Q#3y4xfeh%!zHW4N>CCEk$mbpo-`5#OwZ&FKOa+Z<=bXl7cXwxcR6IO)= zgd1S{g9u-n2FEygyfzU8)VZ`!EE;>*rRR-gb0`Jw`>5tfsyS-oX0l)#0@>Af903~P zfuLR_UQW2HjNT`rXUOP2u>gUy*^IL}h;57DJW;UBK_MyPg$-?P#(_h;8Z)$RLs0!c zrv$F5x&bxrXPBWT*kI4-X+?;A_-+lgFit7;FD5q|VBZWz$f1(qBtsURo>nh|R=Q1o zhUxan3#n(GZlAnDKm{Xvze;yisa`FF7j~A#PxhUp3N!JVW=wUz>bq4ZH%FUB*>uj+ z^*b+Fh-ThRD&ph4q_SY)0-KKTp^`cmE+DKMbJJ8umDedKH{Y*Tft4={l$i$s)&~d- z;&5v?o`#PUBFtO7sCMQl6M|qZPSrZ0WNopYp%DB;93o*^MGNG>Zq_ypGrIu!u~!Qb zoW-b7h8BxZA;|DtLH2#z=(%QbFf>!cnw9K^WPlNaU~X?rY|y@-BiXf7vIXHKXd)^A+c->=vA_mA)IZ|?7J@9(E@neL{qm?pYgVKQk( zP~rPOb5Ah9-d60kHVp4f9i%JR=K{#t@JQisN6nuxb~0VJtlZ96_uzC8x=9pRYAMdp zSxyZc32b~O3mcfJFVrV5@omqRUCGSsAjoFudh((eCPZsNmVYTQ$7$77Dg5@;Yt9i0 zWGjW;rv-GjnecCvR8=vs+_8RSEa%NqXYXZ*$mD zR!9`@69bohAgI^^7o?oqVnlv1MP?8gW|+OnY+q7EVUI=4RU^5y@6qY-SX4wbK1P%m z%`6cj`6r@f6zFLL^91D|k6LAURNSr0b^_}{6OVK6*sF*8U{b3DMUSWbcye$0zNo#Lr99@2q)hzZ<>Fi#7;RUI;39?!wN3 z(K)#nx{gzI9Bxol#4`W-eoxc&AdA-%I8Nv!>yScvaSjU_1U7m%@!c{G$eEYHMiw)XdzYHkj&leF{$_2~!e?O!XI-ARqgZ`zYA=#6`liUz8yP1nQG*qtih z419+5StWUx>3;r+#$LIsvUwmXHxVC31>K2oAu{(-ZkYQMJt97hG@VC43&B;`n+&w! zbjs34AxN$55VRfbcKT*B*7OdwoZqIV|<0w`7cBEAybR13)nuArf7#J)eYMGVY zmsASDHOcezuf*v%E)lr7|k*7I)VZ;YqYmfh{rpaL)`74zCo>n~y zm(BaCY#TmpIB=PrT;3sY7!ffZ#hcGn;9Ky)-q-Lwg^l6NjUoV-COVYtzAH+X<0b?; zn!rKdS6SlOq%~@R;`=IBP|ELwvy*vxkox?mxK4W*5C>v?pcmg$`alv#%B7pzdbmiZ zWhnVOnp(Y&h7Q)$2`Ut}I?nR6Y-zR!KfF5B;r^HK4v=W;vvYOb)qf4NV!oQFy+(XE z?g51P$6^{qOfg#tHr=l@G~TZ$#YI6x+6~lh+se;ZZPweiS^XN9y>ov*?B3sfbbXik z_J%PKPr>)u7%1qX^i&}Ar-fDf5cvC@4WsSEpwi*ug?Gx6!ZUz6V5`8}5Y#EfCitOW zn=&_DZ6|Orjz+N02$Uu`H*s$hl%Omw7WZ0basO!G;=Xyv#qBKQd&ENC?k?mI41pmKCHKDJuvhas)8SAk}E|8a%jHbMD=mt z5y_U)v1Bu)ia^aAn#sg+|2BEMLg}cPEEZ>GR-J-dopB6Y>%T$=4RN7WqibN^hP*22 z+o_N~-Rh`{4u`^(bqMDyIHCn&P#?H%QGb8cS3|Z(U`Dp1In28KPJXykz;H!_Sy9)NNKeLf;SxsjKR10=oBDj=j0EPk-o4{p%O4A1-S#-e;g{-EOT^3Xt#(#bG zjzQUR4?U)9LWwNZTav@sbTHYZ+ZkQS9E6r7-zE_|6A>Dh%$5}fI5=t7RZw*9XrxsC zoy^&UI=PR(GyF|!jfSBtY}n@47j${vJkE#sSGd#KaNbzv3AOc`J$Ci)ltAu842P(B zD4BkuKJ$2;+Sc3jO)K-F7AQ4-lcCrG@GxpOx1({v0f>jRzbp8WBSa~>RUuL7WDjS zHLQmRGHq8KPQt&@xY{2@Ef#Eb;K=ZWv=P)jeaPT?lm*|rqB!NbY9j@?wPCM@CA zD4$CW#pi=oQd+w{r5lbl_=}=$X4wk9LYCMMJsvAyEad|gJfXfs>sUxu z$I5#jE{15BVDk}?wa=Z@TXmS~#weB9VHa+nv17zoqBX-`VZ4gJQ4)XGE7@g`pt!>< z3a|QK;tmh-P=|Ru!(ymw3yjW0s?yw3nLu|FSP{dok@FzpsPwy2Dl{?H(uL?InA1}N zJMzNyf#FdnEAY0pA!dWpthLaEAA|Kr8E3{d^>qEM=`9f^P(vli&Vv^oBvc1}G^6(P^%Q_Ir{h8}_Tb?&{gGTu`FwwUwf31P8cact$rO(O5rYib^jbT8tM8^ow!E z??Fbm);kl|YJ6U86rL$yR1a%Bn~yW7)IP|vy7Y~fxrYe}p^=I;=GD*16buWhmN zAcLeZU`re=bA;A_LslQSc5{D!L3hlND+TW$;AHQr8PK8cz=^`Yb%-N&AtHx(6(7+| z(@f)W;`)XQ&QX0oe4>}Q2R$XMQ_F1E@te6Pg_ZiO?g{^%)1_t#_?+Fkr!%;kj@Ve$ zf-6|3(lxeyq`bzqkHj^Gb87EM%$EhT&+Pi3QuUYqz)y!X9(|?$O2(tsWtO8(y=(mS z{zCcb_`hUh(wV7%GCXi^ij7I1*R@bIwvu<_iz@8_=Q$A}>WA`7FFQ7zruG7v=RrF19<1gdlmJ?$3sRuJC&Q0GVe>( zy7r&Ha}3gd$7(abQ_KwpS7&GMPX&JAKHAVLA8k;7p;UkW$DcO5a&6$X|BuRj-9;Is zv&lDjz#1LRDc{iGnV8$KVRkj-hC7;2guFC`YYVl=Ce_EfzH-i zT6#-xV9kDaO2uUwB$$yV1|#wcu5}l(SwW`&DHl7nsyiTL{}b?Fx}(i{`c&8zvcrz( zOxTsMJJNHNWjTbf-uQlhzj|kX|C0Xx_j$ptXEys;jU8?$T8~F1uiad(CvJchev{Iu z1d7Xb`O&2#iPzcOlrpK;Hs?fgVRJ`fI2{+I`uZMxu5t>uc?Q>nc_1# zLgL(WyPmYNPmPJ&hclLz%-NrWGdLg;WhiX6jp zEGap~C?I{Dj1na{{(oaLB@-F7JNQcyvqH@iWVK8I(o!iB#AWh8s;$rAH&biq)?}R- zYD5`0?Vu)bt=rvN{}gt~LIjVzLXa)yM3}2~iTm;D#lY^=Tkvo3vVKRGnvfQJOBdOZ z^t(Fz9CW!iiH)=W-@;>-R{|UmJV+NL^QWq4r$!tH1>b*^z3k`@I4V$Zr+I zv0LHa^QW{o$EVfRQT-~7bIqXpC^??47y&R|xnq`czk)|)q>F-ibgTR{@SYwv_}b0A zlMwR8+prvFXD){J}X@w&R=xbfwj;~Hv~8Y%|_EhDLeB}3bb!1y}o`pTiFrS&fyp8q3bC{ zy@imJ^tOJ#$Fc~)0g?{lKGPS}i$`hA9+j``995~IhHxO#dUNZ|gvG-XX=Zy+1?Cjt zS61ww2MBG8a1jWDFPVQhRfxbYkLMkn==9rCS&~&mae5EXn*)!ET0P$B1+1IAyzhK{ z-ggJ&-K48Jd)@(>X=A6`rOf;k1mY09e4vL23z&pM|6^(EJ;bp0xWnG-4trmTN1X;A zgC4|$vr_BL;EdC(+Ykx5lTA}?VBF|t$6&H7X0z@%1%eZ*sBl7MXC9$;1K0YH@1tvF za!e+dGLNQIPPaJwwS%)iM%meml|6LvkIUjqy59v>L?maPNCh~xtPkZNt1~se9z}2A z)Zv3t7o<3Ak4Kw-1}Rjp7iOpFeO`DzERwc*VRm4?ZRmC{q;})osE_m@&DbIpK6fB5 zs^j5>L#iGElx}erX{~kcOHy^LbxWb95sf1P<6$NQ{>xO2H4ytsWuX|@*EGW6fe6E# zcCB%Q-a3M4-qyP2AZMnK0kV*80$1O(5QJta)m-BbAq&tCCkE}HmD!^}H2i-~AWy`l4gr1T{?Bf?zv%nJgcL$Cexe@> zj&E8VZyMz$)dy%Kp-*YD7yO-i@asyn29|hSmRKKf6P*&-ZT>D^B7BRS=38X9C)qqE zmEQK~uJ?gs()$1mvJ%B(z+m_CqWZ7a*rp#e{vgo$gC2gO#D?`%enEu|JFEOc{La+! zi|~7=mVX?-Q?&dO`0ZEoofT~QkbfAzGz0VT`-Pf+1ix+Uq{F7#*v0^i&V79Juyd2+ zYHmlQy>&-K;%9XXAF8vI_Z7b^~GTU3&9wt~*27#stjS~Xst@OR~ zv3IC_iWxl0{K!WXxjdb2K3UNkW%j@DzuFpYjrNJ@(S6VP$U5x&{)qP))sw=QCHGpa zeDxwTQ|qLsBYp)=%*95U3w`ih9Ag1V-u0;ibsxtI>=!{hGp$Z_G~uanaK-8IJH%L_1eFl3yqm{wIl@<8|5vGxym}e?zjp6MyE^6eU)%uLH zv`o3QU~j}^>Yq8CbDC>&hNmkWw;v@AFQ>3@n2XLlT_NnfmRC5N?NeQPBhT%nab=t* zGuH@Et$Y+jGj|&74EXE7rZCuNUk5go!9M>wuxSi-;p@QK80_NLf!)PmU$AmTLV}gb zLjblLxWT{tdceCG@T;$@csf^n>FdB|Fj)WBf!)Jkt--GWo5^5z2EVQo*?SFmHk<;PCy6XuAu)88(8HRL9Q|oXlEdH#CuT_DtzMD3cCmQc&|}+6SNZfF$@M%Ic;q2 zvB=n5-Pl~i*j#*U?v}B+S5*A_P0a}LU-7o4B@Czirg}v2MVva*gU%b+_XVA&rb|ZR zH?_rog3edad5HRnpz}_352X$-E@fw}LFYB_C2sOEO1`GJ$bbt`H@VAA?xo~!6qh1- zxtqM#t=gvKYm2{wdA6H+z|CBy)a!~LBJ)9KFunJ!?L@k5MA1%6>`5f^J$QrqP>^n_ zcuHuoG%Y1+Zz)K+UYFt5CmDWPDfj*M@rqG>4ZkmanAU5oqKeknV{wZ;t!DPr0Si77 z)RkDppYU_r6ZbYGi+dX;?$DCO9oocYda}4o7pl>lguXP6Fh^T@lcOzNJc;IiOp7H} z!59B70~dc#r5c4~au)!O1$Bz}FX*)H_gLL@Q1^UR=isv1GP^?NX?^ZJ&YXpDg_;_H{pG`f;Q`jr5a2H5jYNdheLI zFSY^xdlKGx^WF^Paa z^?LsaGMx{qTCC!S(lx(b{KT*!KWf^b!$n8aCLMTc?g~EoVRlKoFjm3xBOd&SGx)3H z!rSWVI1m47BGJ0zt+&G|eC~F0V_oa*xKh2=oJVUec;U|xzUbQ&pJP*e;Q?F(z?Teg zoe0~t{C-yPq9NN2_xN6hFOlJruf#7=V!sD)2>`8z2XF}hgi1KW+RFNJxkuyX?z-_! zPXuW$q!)}ShDO8qBSOpCdTjwPyqabGtsw;Wk8JC$67t~IP*W#zvbPK(ncfd!GN&4D zGp0a0ei}Dp7&l`|D7P(=$nV2}*2ZuKE!Hi#Fz@oRwIN%(fpaUt+1f%)M}y30eL5u> zt=_oY?PY97#_3*oI>Ix!pj(;4xZi*kT1aL_p~KVDRL}AAJzm~>kay>)A4*b$|{10$`@$lT-kbs}!gMZM2 ze-Q8;KKKVE{GC4dd4@*t>^q;1!U}N|nx9lmuBw%u2M-g){IRhBPe$Cr4_80rWmzn< zEFPHU2w05%EDw9FdKj&m@0*N=F&U3A0KWxsK^`#|pe`ZpbKnA>YZb3whL~JydMso$ zJ{D4nkA@Hjojxu_x5mQP<>OwRok)CQ@Z#wlIO@}VqtfZ+U5LC32IpNkFz*as-i2P? zCy{rNudh#{uTKtGc!zuo?+_N=5@cHJExaY(!do(U;T^j2!dv1sV;M?Z>Mguw?!sF( zup9UI@-H(qy1jNYzu;4&_4XdjGRvy2<&$^^9m>_hj`68bZe`p&II;_jky%#&y59xr zD^a=zBLw!!U{jx;4zX0;2BunkIs{!DMB3&_J%3UcpQrTvDfxL?&!3i`XY~9Ty#z4} z!uV$biWcO@S|?>F4@f$r^YT7QNoTkK_>wntI$>YpjxG;DuFj^j1lMs{+o!ZRJzMOh zy4@E~Kr9c9#~-29etYBXf#UKIB6tY9=%?2%QNM7?Kg}%tPU<2>o#Ln!GU^nfPIJ^| z8Fd;_XE^FZ8FfYno9}7E2*)a(XRBbro|y1VC}`(?W_G2dn^**v`vWWdfoJ@ImHxmg zf8bev;JH*+&7YvZCyZ}auNVUc-e?PI11F3zZ^16C5Xzr0!l5vG+knO+T~1r;p`Wkf zbDQ`C25%UKypg=t1Bo|uihoviYr?9K_Wxg(STja;NvH6dF_3N*g6L8(tPki?((96A zSg^v-Y4gOqmcvs&Z$P$`wg`F3h-V8{GUP1fO0Pg9z?g+bPYIb=Yi2GVils@Ddgc2N z;>8ExW|aarvrAbjotghH>ozXpQm5}Zh}>m&|DIl-Qp+&Z6_*#s+Na& z6+0h7v6JBIs6Et4C70zT!Vh0az_O^8s*oSSrkCTnm*eK%y2h8|O6$vU+R%1>VU%{W zo_{qCRkZvoak?xD24j7EYs~cB8ZYo=cjMsEeqMC+c^>E&y_<>2i}7Xuc5jHN_N_)@IPZ=-LxP=!ui{n% zDWH;e)v-FRAeemdL`+rs<6-OL%kvZJ(Rz)&f~?o3FonsloJ^V0lfD?TSHs7R4Ns0n z!pc6M(uH%w4WWP#l6+*;I1!e4&PWaykJN8B1}ID)3;C3=*Yn;G9Q3#OK>Ayp13l8y zu{D8xUOyVDxr1L<4}l72J?-1X^Xopx$LuJdZ9Umfeg*rvkGec1H+P`mOwg! zQ?I+6w+^<`H*BZb!6iS9#5cuAw7h(Wbnvgk2Nl{nsi0>jDZ*zn?u%{x{Y^V``0!=1 zx;>0GWUY8hf|lY@;Q(1UGRp1NbNlq{ z){w)Su`;_t0kO6Rl`!nG609u2TA6*6fhYVxh|j&61<>#U%GZ-Ssn)>Vp0vHlNz)7Z zrHb=y{IO5Zw=+k|t!;6rrKVnC`pR`0;$fRue71+}E@1R{mIrzNAV?SaU62=_H4~^s zyLDjM3sBGkH~}S+F2>k~D0DKT^d*^--Hd`)Mp>x6D06{RX!diYEf%FB?KDay0NCNp z;!?{FETR^NWF2Ku>f#W$K>zpttj^xoW^`E5u);#)y4M=$c2ll_#_$u zv0F4j0Bq6RRD6n5OcYIbl3)BdZq$tR=F4w&7EFDMVUS~&G^Pu}b}h&jXtcs^tDOv#;JDZ0 z<4%v|d}16s7ffz8_;ye9YbXkE{@7+g$lh%(vJQ;+#zq#N3;&yB^V`G{-E$T zYuGoNxYiJ1Ma4q{4qSzFdajEwGr98%%Her%-(xE!>F6#8 zo66TJ6h9v8J)W|szDuymj~O*L3Vt}$u8tX*Iz=+Yj~R?YczO2LyEWNS_w&sf_j9WU zu&rKtcLow-Pq206@^*3hc7F}~DA#wy%5@jutPuMqyirW=KB+3%G@Xx4xGF5?XQ*Bg z`>BZU1)LK;B3BF-F+vovzh3HCav6)c3_`|dVCQ{kXhb0|cP+p9QWdt|IVlmDBKrYd zi}uh81mkWHgi7Zs?n6Pp(0H&_Y^KQq7?aA?{I>6eV~1Sv|v(;vJh z<|+eG1$zP<6kuik_d&v)JR=Ah7eTm9xNf+OjxC}Vou^6Jb%Thr;p?C(#V$7SY8vmY z0wu|3(_HTjy5qe82*$&V4B5<_1LaOva&|Mb&`U;`D6(D5A;Rqd?QuGQ%hk}n`xbPr zX)NfFrLz~B*!lvFT0loHeVpMS-GzmqFn)wlGTmVEDK@OJbhBTSo|~`iRyMy(LEsC}dv~)&%*%$sVRkZo-52GGEgOJ2OII zpwfi3%y8*73|dqFljs?KY^`-%FBR~nt_&16@mV!W$gJuE!>_VMQWG z>W80p!yrOrHZ$TTtQ~StaX63Zr6F9?S1Mxw;dapAt zqY~B<;>chdI&AOb{r%t)ZRh=cy)_n0q=;1?$UYC=8GHg?dy-Fp9Xyo(nQiom@a3(Q zdsCCf4)jGNFw?zk1;O7w()Z9{(ie@H_@-tT-_$6tm45>l_D<&UOu}@9V0>9@hEQRv z;RyM534fDPzQ-LC$NCRoHxsgi3lGQhYpy6RoFX01MWwX}E-VqktN>5P!22QTo@O2Q zZx?=a1K9k~?&wSz+F{*f4$3g=0^fH@5D(5%9f?c*V%-dlH zduK>=!X?*5#O}H-pdDhelldc+T(@OzGZqx*hbC@O@v@;KT6{U>*>LRUNrShc1|p^r zv&Yb@Vik`D*}OWGXuTCa-Sf>c3RTd*coQKuhSF;Em1%~6OrsXKwi{C|PNMlCSfof+ zt2sB4kS>*I)qD_gT(yaoHc(5;=9~ySSN?gRbv>Mel+CqT{(U-M&G#K|6a3BAp;7jG zh+zJe6dl3&_vp&TnvojP24?IUo-u=FjMMVxX&C>0b!s%tb7euF(maeE+!TftDsOHR z{B$<*>`vvoQ{Nd@$qsIYg)2p2F}JW%{v!h&g40S$yR{pXeABIzcB|5Q>zL*!67x?c z3-s||B)^0|9*E?Z!r?sK^FQQ!-k^IP<5@O4B8l2t*#Z0<724BeXw?5in?Yzm2v>GD<@bX?=`-OoqQ{}8$Xr4^#}B^MK|S2|Zf zyf(yT3@1tq7?&O@sCto34ZvkB8t}62ynB6x793!-q?(zuTSCgDUaOR`nT>pq+s6Jj z>^qzXuyKzzy-K}$6;EK}?qiX`3h6P^ZMm=6YX&rXjDu`+3E2Q=SyAJ5VvWBO1Mk&A ztp_S}h>5O<(?sZ{`(nB|=7=vwFvvgVRrs$?4BjJWApmp#SI8&M@x2O?PZoHgVM5+T zEenSAsy_+{VZkaN_%p19Ccxhs0Dk#Rebm>g`Ak3_^Ti0cz;TB+&tx7yXt^`QG+%vS z3>;(QljirGBrv`c%(a}&*Vy;*VviwDb1U;vD9}wYx&ni3J9@b>}Q_Sr2G2;^e3SZucuT`0p=uk18@Bds6W?} zsHU@ZVkyzon@At2&-5mgd?_)p%;AqkxSW`{g~LZhcndTR8}dB~J6CcE=UmzQ+>+?3 z<}Hi5_DTi^VbU~TrSv1W;J$+tlfNOnj!QPfRtBBYQsZVm=42M-3(L#I@(vHe;fnMM zhf92Vr4>Jf;ASvHmj}VdF{k(n53?)P<S|3Yd807zKEeQZny=13$Zlm!-)m^}-& z=}`%AR08bNp(n7Q#GKa2f@^qO*bbhkAC4!;n?|4rK+#dtI6|lT_;GkIUh4Ujp{^qp zc<8R7fPjX!Ad`l_$7GG@N%n#jCf-im9STqkou+#TYwG2l8wITQ?;0C`uF@qg`37<9@}Kkb8gW?SzL5f}qG}-x;bU=%+Ed5ZYNh#R zYI1X|P-(tJzZLYmhJGXTyOw^VRSCN3<9M%uVB&bOfnefnEE1t#Sc^pQz(XODnSF~o zxd+c?6{7qNA7X_VEBg#%J*jdbQiyf3iWHavg$hoq<}^A?qlF5Q*sKdDAlG~gw>dK) zLedtHkS#lZQZIx{`P1~boIgc>ar@9nJQ0GI1qy~QQ!U}h!I~t6FjPH_U_4gwDSS9k zE<8$cMxWeAs}PS-?xVj!aF3f;)R_w*$u$r9s)6?)w=9?rwMgH}5$D5@kKE)=3cG-aaPo;^Tj_={ zZYx`wqXoT$_XitbYb5H}Ke9`>`~d$b#GE6vV?lk*DjC09w08kFctL$)6||`u@a{(0 zE$gX4Wev*XmNlpjr!4B1(9tSH28xroM8718BBnU|cUEYM`@J|c#e2KgQOGK-axNiv zqB_f~a2_YeG*`4xwH0Cd3B&mVS|A3tV{oCB0~_R)>8l5gPYN6H2yH+dK(OOFY?M42 z@MAjV9F}Dv)>4y}(unKDFP!3(3J^!l3}x?*>#TbRhwC33c+}3oF+aKed1Kp;Tg-I#N z-?BU|_lE*@O-Z!6`W@Vk9r4DFc%TS5%B)bjJw&&oj~`9+>tKd;l|*s`le%E|upEja zLWu9up+z)Q#OpK>1bQMQT+C4n;ZQ=q-lr{3C5h)u9M%!|=}_#a@u_A(e9AmbB-F=T zjJWS2ICD5vWZT;fl=>nw>%<9KlSPvqSX(wh^rlIGVeIs?Wg@jW{kk z#I`5|r9BUwLxdyXy~TmeqXv{}_K2CS-hvTd6>nTcBQB(x=|`Lq-|vk0W&C|-#3f5V z1Qm#iV9~5HuO}nM3WYyIWJTx9+j9E;uP79O1U-7OBH~l?#CPn>FiJ*kxP6< zE^&*b@iiZEihL-HJEgY-Zqevfpff2*oN6s#1O_5OkLOJNV>4#fWBoph^QqhEU+|Fjr!Bs8gs(fc|9Eov3;Y zYp2k25YdFN3x^E2g&0>of*6SvHyb6U4p@@RUyLZ|1%v8eB|~t>aK;T8j8b@^(;_73 zi$kJamxs;ZsHHC`m&kF0nAJ0E8A{24CTagttO=Jsf@ z*vdW*n+^^et8T1U2sd4?D0X&}BG}wE(|cbUL0U!6F&A1mvi_ImVACZ%b4d??3eNrC z-DBVc74An3$B}ah0UACbv&+1l3P_7~S}0E{f!y{A^MgA023{JXRZ{ht;JPp6d!VyO zzh&S#OGCLw;%2!ndoZNi*>_Tbs-ofpTrdc**9Z7h4{*_CfFJn)zu^ZQTy>uh@Pue1 z9WLi927#4)VDGqKp9}{3&qg9AnTHWJZv5B&eq;Kj{^u_BZ@<*9_xFFZzyELg z`~MYG8140!13Xuoc&_GPuA16|cBVb3&?2b%kD{-07-3paoFjWXhkLul*V}*g19lDq z?C}BqIfmuWK;no&dCVJ>o84E(j4Sv=Gj4plzh9ly-~VWT|J%HFzhbTXXI&|Lik0T% zWx=dUEX|IZdodAj#BrL4qETS~q}~C>Kc_2%q)3^Bhobp~!#Cof?aGpZ6{|VOtEpZq z=nG2=c|nQQ4q{+w$f<@-8L?#BSmTnHd7BuAcT@c47_*M>G{hjeq4agQ-AMNOjk8dbwZ9N)lU=LSA#40Zn=G^Eb}d;*2!d-$M1mu5q+co*I9oATs@DUVm( zAz9ragKy`sb2}e0hPs;%dDR^+wG>AWe|8tv;aoAEd+3`l3ko2?Es(ta|Ir_2V#ZN;J3VqIhFY@0n zL)M>DPY5i31kNb#3Mo{AFb-v7$dIO2#Q(yzjX-qmkFil4^9MWy)U-Bkm(BN6nYD4n z%D)}wi{miN9;ljuynfhCdUbrsc9WOY@#Ro;^vOE-QVB&ZHbFeVs08T4byi+UZvQ!8&*lI2&r3RoOVJ5>t~C<2v!vP;OQwE%%Ab^oHUx z-O8>Eqh}9-Yd38?@`|R4_L5mo-oK`D?>KS6V`ZV1YdPt z*rnv>h0Qmpr?;|t^=ZAl02yqDp*}C1*_;aS4amlOFi@q*j#mmhSg>0k=MK`6bsP=Y z6ArLG&l8s??B#?`uY^ZY!UCR;N?JYx_QFCB>~VlC;_`$M>f?BZWS;Sa3Ei48*|?Br&3CR7qP{_@wI&Ljk)Di(pwu zr^#u;1#V4f4F_`4(D(8s{sVC!WVWROpo%+LzkG7<#C;m@y?t5YEa()MWu{CpkCw=YV*D`md znl2EPujLM~nZv|6ggOxlG;t|@iAoXVJ^jG#aZXV6^uwV&28Z?-2sySSi^6J&cF~%k zlHZ+zIBPjK_g}2BC2M$|x^h9cX-(R+{!k$*h;jwCxg#a(h;kjaxiclJiE=fzxeF20 zM%&z;60Nk&k5Y_pxwX^AqKc)4Ln|1XKtbQjKSA&1pP=vMpDEshJ^TRAlp!DRX<8N(Px$oUY zx;I?ISo6JMsaiL66jbZ-dvGPK4C&OHb;34y!j$l!`+RHuGVALu zfZU9}PxJR_{yxRur}+B}e-C}&|GC%=K0YgL4dDldH;lBlhYxuuS=?lqiuEd@Z3no6J6grE`ZgpXCeHU?VhYYBw+8@mNH& zD|_wCzEl7jV-r_uP4g~l1wdVj(DI;hwC~{d+%av4@6MuKOLy)RZGphLl;}SQpAC0@ifA_qFh->Y~psdXgZ`IR7Qy^K{GMJq(wb8xSXVCEDp z7S7MkwvVRdOJBJ+G#No-+d2*|1!cH(94dlSZ>Uvb1r`y=6ctuIl?h`oIiuYqPc=|H zlun(6+jOK7&25=ahoKS(eNNhl-fI9&)b_4$U_@92zlJVl9ulStl)ow|y$Zh>aXJ-H zw7{8EKphu&DWnDCm47AP#MIN!dFDP(W`Zy+7gQOYqI5g`z^HO(`oU411)aLqneO1P z6RFP5wjQPwH!~~fWj-W26nRQW-;aFkh2^ma&CmoiL-{bvE9uuG*}1CXh3Abzn6S%v z;UTi#IxuT}AbY>6`ZG6h#6ZGtdkFF&JpMqvuB?5SmqefAoxLPxiJ!7>s$>7^bqae2 zV6W+A40E&2y}tZYhet6e|IEuRiJso!7rm zuWJ~Cx%w~v@CTl67qNy|9L9?=%}ua;!GfSukl{1lg~GF zIox}>M^^f`5`vs^1IX26z2kQH-~baG%41;MQBVFMSm z4A{8S_#>A$zFnK#>o)#~)A%Er6Bdm>a(UyAXudMIrToqo#iQ{~6ly)^Z(#{RN0TUb zdSKFN(RlU+mP5;I>Oz-vehpk$h)^Xt>Fl%%(3icS`?MF|0-FPpn%@Sl&gD2A!oT0# zIKty~OvSQW!<46>z}JSt%CKSAr$1He1L^bl^NBiYkD5NGj_Oo@1v%+DhPVz8DnX3e zst`#1uL+`lJOiu`#noX|<8c@GGpElPO-6c8IQNV68)|w>IK4akCu>8$(i#oL7vID2 z>qPvo)n9=N@pdSpR1SL@n4^H48cy#Br#nZbt#Eq5sI(pam5N;JMXutDVJr79nJ-d- z;+sUbtqD^TsQ$(^gj2l55%s^WAJ4(H6kH!}Tptb;*HNbPmBo!=>(2wZFH@~wrJ63K z#D|r?l(N!`ZYlPMEGmmAQj5wX0@R{5SmvD(7Q|CaEOQEf!$Lo#YL&yrN?(1J`BK=C z$-Wep#rLPi^omcjKUMl!V00K6-=*DJIjjM+J43aO9@8VCT0!o=7zU=OIBprBhelnb}OXcjHqhSWMArz$M z-r(dA2tp*i7%&6^zVAjl6)T7F6O5a}(&_f5aCY@D_)FguzPttrL&YqiVyF~QmYcYg zB;Q*b!UF#D!SG8x_z#9|*fL+kHV+N*ln>-XuJw8c#Hr_LuO4gYLb`l~*h7OX_kom# z23g?)DG%M0XS}9t85&}x2hl?twsIJ=irxpSsFxQ3I7;sfBLpszIm-S?`{+8U9LDa8 zitmT5>;=9#wlXmLynj6`J;}ZvHm8i{mlC#dDx9589i5vt+H4!0y=ycZZiPZ}L369> zWvia2R^{HMTHgt$pB~j|cj9lUGjoFOWYOX6LwDx|uRA+#V49+9>hJv&!)3o%{U8C5! zNvZg5*eVy_bBd0OjIV{o#>D9D;}%};mMv?4-K%{+_w*mRryIhu@zU7~n>Jm(Q#XXu z%J7KXdQ~^d<3ZXx@UTkTYTC&IhwhEAGjs>IH#fKqlWl*~*Y<-$w|)62x9x|9E@Z_h zuaLt$xPQPDq1mo$5_FSgZgz2V*s{zIiI}M$mgyd*QWp!sMC~oi_jqPhrhT*mbwwiI z?;f3QRfh|k*WR!)aJrr!HE_C)@VdRlZCi~1dtnr9G8;Qg4#dYi{@1y1a-`O|BXyL> zqhZ(0Gz58+8=sp#+MF>uf6r*zV(I=^cIIdW54sJcGtPz6ua3gIb(wod2RgIo!gz>G zl$(BS6iODnOsDk}{W?ci#odTE1e|ErzbJ@q$j=(houyT9Fr1yu$+QFlLZ7*z6%^X(hMu9&E;qE2Lc84%Arj_cH}n#P zj&R7GF6FAz#qRpkYepex<=zOJb4C~Mj_^5bWzW;jbBa-~KI<&1G4C5~-ai`pJC;A9 zXos!zI>J2caAvN|g8-4#EZQXu$9yxKT{(3m{`GsD6<1L`O?o>8tn>BoWrQN4LsQ*9g zy?K;VS9UL~D_sruN~(#1!gd#yWFZyOC3d^p-JPU6>F%UuTz={5q|+Uem(r)JvK1xE z&Pu*+Sl@biZ>0cZ3f7*7}*8}Nh&4E62bKKEWp zP&kd#FMfZ#wW@T_u+KjG>~qdO^WJbhBrkXOxmor05wD9zqlwno!7}Mn;$HiN)(MXM z3@n|Mg5HHSl9EZ~7Lub=%*GJ#)7&Bo_|j(w*px0FNBqaA_8t#+mslAziNUFD9g9lB z9m;R<(a$!_s@`YV@3ReR8h9Xkw5LSnQh=Feo0tfRVQz~Rx&`TvLJl;}aSAzr27%!_ zb;mdSZJBi@aCczZ&v)mF27%B%W9hX}+PG3F_o>*HqDsVg1WRGw}9b>zf zNNv627&t2FeGC}=zJ8Z*)afh66?nLxauKEkT##R~`D{UI`&J(q(7M$paZ$GU&R{DA z{8{d93OMDn0)VgWo^i|t?Ttq5-kP?@nw)i!VMN+X+?;ZY6st8|DR~Y_@A9sR;}}== z1GwO)y=?MzI}c0ZvISEOmaQ^3sL+pcdwiLd<8t?o%iK3Ew`yG5{V4k$U$nMuHBnSq zoGn~4XB214nZ+R}Zcl(N`t+H#aK_r!pm=bs6%OQ~uVXlEq1v_q-D?+T(DnczrYrDs zSNqSh)Xr*KMOUumG+t(L(`>TGAhWYQ;p5KcaD2dH6wcYTx5pZ}`6HPBcqCMgI9wI+ z5l3L|sJ%1RutGmBhrU}5{RI1ewcEJjju4icFU+kU$B}jaj2loPTuQ6%PKCCUB>%kU zia6>xN5p>ME8yoz{NQ?8T|a)d;pahY40G-S+IwS*=2ffz>2PT8n?9yUJ8Jrz(7B== zGkvbQzarmp(SZD^bbQr z%IVWXuA!lC4Gmo}H1zYKp6JCjU%l4{1;feaE<$w|geCBo0 zROo8Ve(U!OE6CDdsPkA2&V{b(aGNW}4dcx9;)ZcT6GC-xOy2+%Ic<*x_?l;VDX|Gl zi7&h!s>{oTAIGuA1?b3zPBRAB6oz64>?dcwTc9<3(SQ|U^ODEOGOEo$^<^2=<|+!5C0Rt)m*W0vk@c84MdPj78^IyeSa;>$~;fm zvhqcyVdeH&b=doComD4|yH;v9YT0MhN`T1BQWJxj=VNFu8^@KjPsVEVF8GOaoX>S; z%!#pD_t;@$J{_xlHhj$IW3?}ak9lK+_MS9s%*nCZm&2zyHC8)4e9X{T?LqgjF`Y4O zN^IDesWI)N;VGCF({30(&GeXdg5L!Y`8AY{CF>P~9doZRw zMB!2G;h451rj;7CtubvI6Hq>d!JJ#5K^`qB)a(wC%L)c5i4BNVh{g#IXbJdDC465q^;M;5d@FV-I;m{%M0$0^pKKY`fU96Q1y zBBnpd_@6@D9FF@*L3_4Qf0_t5+`^cA zCMMj+NV9 za4(O8Yi;_i@Y_sk#xDf%u)=UAc?*1Q3V6(0(1;@gl;0vrA0!M$On;tyizWR9`rIMu zFH+z-S$~N>PdHJ1G5uxyyfTjYeLzINilBqS{TlP>bs&@UH|XTgr7tc)l1{i0dZ> zd%mR4Q%?O9ecp`er$w5fafM4qT-tc4`_hrWmi5j=K|2)FrzE&WrqbtdOrJ)dcVhYt zi9+-eeR={!+?YU4GbrNyn0^y`b}@A`6O`YqL?JU{gnlzcAB*X;IeJclxN=K^i+wAH z%uN)=FO&3n6n0ZYzm0s$C4D}lUqE3W#`N16uAd0~IHq?IK)0kXq^M70`Xci6Ncv)6 zy(3W=`-P<6ncz|`Nfa&}6?OdDsV_}1bCv;SIiu<($j2nTM?m%_>~>6TsE>2LE5Te@ zfi!ocEY#=5Qj5Na)30QV<1fL_5{dYAF9rM1z0FpSwD%EEucWV{sLS>Hfnzl%UPFX6 z>1#QgbsX}5DD!&uY@pw3^o=6_O$n>}5%6Xa_8@(3i0cngqCQD~IKd5I3w@@?^{o_m zm!xka-;B7vJ%Or!VjR=4gR-sFcZxa^CGHo@+np$c^gSHC7vDAxdbk`au@$&1ny6mohtKTgFZmbsJl@gq|eX@{rN<>`%qiUywRw?V73oj zj`dj<&lcLQMU3}bwshUc($(xXl<-p|Tx<%WOy>ywMat>Lkp2>gx`V^7ENF{eTn$c^ ztX)DD-pxWV^Kv7LYi6}6W`%%tg2GEjqcvG#_D(CGcN);sGshbAmyypBntaNhr!Owg z_v)|r;3Hk{6+WMN?2hT4wj_?bJ(-JUh-qO+jHp;VV8o>5!}acpj~U6I_N%m|adWhF zw_fEEFnm#BXab||9GZP?^gs!R{}~;U_RXk z5IhQJ)hC(djR0-!SCGVqZ)(#e&Z(23VaCkCW6r%^Nx&0t+Z=G6oBn0zpnuudpnujk zK>zY{(7*g^(0}uP8U4`k#|1c6qn)}~>yEb`t8tnQPR!kKABhVn4PU;VuTj3)-&FZ} z&%b5~QNG*0sq(Ek|MIQ<8s(e+4UFGY#|}@wbxr?#=wI*+(7)~+ z^N)33ga5aGQ|;@4uV`QE&r!e)U!#Cs-&6rNenkN{ouh!8zeWKUegiG=!E@06;Mbsk z(KkTx159iEnkEFJO8)Qf2G4$xkG&*fgS2s z6At-UjpJa#;l9f8TEgL}cf6i(cqPXh35T!Vv9x;YdKnIuTy^EG>oLvwoADrixxHy^ zJ!r<$RG;jY-Iwu89!if#>r*>qsAN&Ha%l_&7L8)=%|!mq#O1Q9{_xNcl-^Rp9-m8= z-TwnekkjeWCoizh&o}dWLu{8t5++5dW+nyc* zC)d9wn7h@dP}Th{dPU73v><#}d*YIKJTq-%?%7MUV?Jckg`d{%dT|g8D{$Z9TJ0t5 z#}kyQMA(72WPqC8&LZM)l=VDc64+KQ&fO@^cBb`Wehy3_20yqb$0XQqzgsC3O*ZUc zxP(YINtCIsTqf$|^Ig4@_QQ)_j>7EZ!u;YKh55iojqIMvf;62`kP@Lp?iFQth0Cyu z%b>EQW&~4S{ah;zxE0>kLlsC72Iek!kibz%zA(<R^sAvu{rOkX?;quY+oJk0F4<@<*#^Zj z7`;I$#M>U`N_)Iq*&9&VPgEq>XeZcMPVi(o!A2x_sv^NAJHaNU5Hk}zT~4qG37)A) zu-ZD3ueeMS|xl60EZmtScwj zUrw+N2?i<>JYXkypqyZ^oZtZ@c)lXRdON}Tav5GICs>aJFS2Cgw^y5$%z@C#s6#wt z*rGT%=oJL9Qiqqg;Uz6gIA(%{EAyL`BEL+6s+3G)?&DBdS<1^k7tyoQR77a!aJy-# zeZ4XtYML^yhSnzPFT!L4p{o@$uzT!b=Uq`Jxq2((*9;$DXT@)_;@6UFYpAnmeI;}+ zky;ll`MPe2}3Qco!kHZ~TTPB8ELoK*e)Cd#&70RE!@%zaiP6xOrni<$-~ z2u0pQe$2pC&Yiqd$F4Fp+q2nbhMhWCH=5*qsdx#{8o70<;L-?&yWHi(*bT*7c>Hpd zE6S#`Mr3cKo>8R9brLLmI2^~gN55$*WiUdGZ25yG{Ds^;8i@8OnCM3xBTR!Jd+e$; z*xi+=Z)AFfM<{V&PeVBcKd2{+t$P%QfuCxe{S`R-D{=N$;_R=$*keBg7bZqEn8Xp1-0`K=BgURzW9 zHjP5Yq0Vlb!Y1OqHv28N;HSqdifQ_>RJ^}SDAtyX$PTJkp@B+aBkg6|+z83M6wAFF zgZ&#fs}t~K<%Y}HppF;X=M`2?ej?HNtwe`U+s7xdu)3qf+CEE2yS-U&)`R&S!-u~D z-iWn*o^YB826dc{)mTFHug=7Y3pVcD<5;<&xAIb{i39G zqTLx*v*U<8R>U4NVviZIRUv^(8DYx&39XJi9*p59d~UDD*CXR}zC*suK9GlM1XcL_ z_>8L(Sl0^sbWiG1aDZt z2a2qVcd3%%f|7>IJ?{EPNq%~KZo#`IR^u=nD9WW&W_Z;w8JZH(Z|$k<0m*9kN)T#xBd>1T1V{c75Byo#D5ds;BYf5IGrL89&Mo>=XSqdB7xzs@ zqCK6_gv~18eP|3+*Gj)~SV}>tQH$<0j;lg+BoSt_(F&Cq62w9X+#>p4s8O*0GoQ%& zI&UTWy*B&3NQf4P#AtDUX1BO8L_0!xZ;wZ=3+seF5rjandtCJ4jPQ1gk6KWx{%Q2JN$t-FoG8%$+ zq~i;_)=v6ls3WzoO5A9YTxCYat{OC3jA6c&M0Eaw@;mB}(qNnF~If3O>>?hYS8C zPu*JhTEAlJXDv@mx~hf{JTdUO+${OS7~#$uJ17kiz}uQz73_%y%{@^}LVyDMq3_xI zp{IQ=uiMiOY{HtoXm?u`i%HBP%v@dzVPwbPhrQq|4}l>l+b;<>4|}`;RIFwa-ZI$h ztXq;5>#VV~&Z>ugSf%_NV2a}Mx#W#bVV1%Z>YUi&Eq2BR>EASKCk#HZ?cd@mekfA+ z_gu!@=T2591P7(4V>{Nd!K@5(JbpIEBb%DtOPw()$W&8x3_<)WD;a0&z5hy3|0?Bf z_wbScMas(c%Z7$BFDSX!L&A&)+cROmWxpyb({TQ842!H{S$B#iKQUN*u}m={mxhTH zY38uN(|JLnLuiCA=bD)~qjO@S!;79sSr8_fFzJ-DC+nq1y-$TY)-$3)6bv1=O4X+N zGzGiJ^~CpElVTS+)|`I))HAi9HKx2 z(YHy1rBEYDqxOpo^SU49K-h{QJbBK%4a`dGxS%qR$2pJND>33l0xp+Uj39?D09PJ;;D% z^GgK0JxE}f2%8j$0BvC<4*4K9o7Vj9d9V6C1s7IsTqxRoWX$0U-GU3JjN^@*dzqTvA5F_JhjF zQ%58RW%>p(U4K5A9Vj69>^iG;RLf^IrFR$lJsrAL4^X?)~+A5b(Bg0kb&&HaPN-V(;j_&8LVg z2c}EIlX*cUnbgHMC}tP;InRUKi_a$aOkBp#-ccZ8x7Y%10SmbA)8E8#B;Z~K@mrN) zPX4zkGD+p@Ncall57D~2#|}v=i{11Kjb%bL+9b<1MASEIG#may{IHSkQnYSGR*w2s z+?#dZi_=QQMVUTLY-=%%R}`ZTY@iww$PvJn*)_#(R;6YW)H`X=&b^m1G%T09Zj!@M ztO72BT7V#ezNMaGZ}%jc!jd~Hvj-*v;d2WgtQM9``nl8$%RbY(q3u1ZSUVJ#;*vAe zZoZ0+q7@0dK~}7{D89Z@*3(PQK1QAO3ODDF^|1#T?W`UgciDsE?dIT^XwJWjD(|-k z$B#o=uQUHKs(iOneY;_g;*$8#RUAT99zpHp21VmwdspQ`BS}r_2=MQ-@qZG^%p9qI z0{oAZ2j5RZt)G~K@1u6xTv#4_HA3`05Iv?0a}DEhnlW%cEU-qNt7P1bI12D56zgun zB1YCse-p(jIi@PXOst%2}5#j`5|7<3RkhVqJ^)PQ|qd0>~X# zTEBy95zp9JFHYLmBL0A~{tk{s73*5WL4Y}F2Gl-vbZFwG`O#4PRM`PnG>byMt~hD7 zIfiW^4;GEovvCRQCUOyt60h0oN72a9cY#)l z8{OJ-@$N#dQ|)f;yFhYb>i>@2`0g|t-(}7DQ+%3KF`+ubZ48^P+WxqxJ-LFstv@o!MOH(Tzes|y%^VCifb>&wO8WWfw*?4S$ma!quRl^_F7zfJ+3W| zYH!4~H{;q{ac$aI?ND5MJFXp$YwyIhcjMaaQSC@vdoQlNPcY5e(fF_G%x$dq6?5S% zZbh9^@IUd}RC_bPyrXBY;!cNt<B5L;QG4liaJ^jC{T>o!% zxh9^wTt7O`as?~PrS~LJtRA~qA1N-kOTH5N->bjWU! zo$2Z2nCaon^e|D?2dX|NStq+=*d4=VL5i6=2<2ExsW=8t>TwMFfjEZ6X2=&T$e|T( zMi|;s(=)=EC2DHuTMnIEGr|ONlEor+!fpsB_UCR0&l@m`M4Zpb8fm^fGkShi^eM&Z zmfb%_&-_ao-B~~NZw892F(Zxm3<^(Aw6B|HC;YJnzUMk8-uwe272DD@APqK?tx zI@W2$O$EE0D4iNMD9QA}l6_)OV&!`ya8?K<*t15(GoSf$t0QeIlF(~6q{x2RyMZ_8 zuIO;%#}n%O1&%LWIKI5PL&;1D7X?yH!UdC}c1`!7QA*vNQ?vU27MG0VS# zn#L7U=M{+#kMUCp5%LDUC78P>i3C2F;1Ei%kO$086MEzcJ3j>e3$efV3&QgY3E^2U zX0}w>P3Qdsy?tW>V&>7XKx>VVHBk!9@ z5U`RkC61$1OWQk?DVONK@$ZSY)H5R;fGnC0H}OCm*@~lEP6b=*IIB|lQX9?3d{hvc zi7E7H>*9942@f%)2d+O zX6Ox7uvX}F)uYJnQ!YN?=FMd^6HjIuH(e0|1#Sw3P)Vrq-k&rYadF1<1DX}XyJ4zv zd-!>pI^C5tU_0O5vJryuoIf~Bs#pg)ya9(Y`j^YzB=ji z`Mgn=4>|W?X z-@JSv)EOB>+YNOFMHe-4>qcd~8-#r#j4d@hxMwb>mT(cv6Pk!$o;wsmk4h$*Q?SqfzwTA##30CP1vY?Wob6Ifs#s1j>q?v0qKZ5_e_ zlu^A`fWHxI><5z%DR%56^Kj*j2lugUsNwfes%)|taWfCH&}W&>ha;BGoz z3}O@Uzz3>wl??C$jR7`BG+LNMXp(+ z+8#!=8ZzAaeFBywvan8my_3MvZIH-<|({iin6 zIzXhaLZn?FCQ$7+tEH@ui_&_t>cnVb^5s?Vek{Fc+E*GHYIhY= zE-CkLGS)~!r6Ue2K0Ot`%6_zmL*|rZ*zW0IK4Ei zJ<^Io};l_k^`)n)5wavMf+#8l1*gZU)_| zVl!wi{d)3q=+~Rykt}3=`JMEud(=rOVAxGdq%*oyp9u zWNV+KboNPjh|{a;y()eClX`!WzPpq9?j-gkx=?s5o7(qS8%jT+zlm2syzpm2_XYeH6}^mtMkW%%iA=!)KYXN%w|hdT$u&eEY%^ zq|xKQ&9mvns!SQ;zaYU)wyXUuK?`erzzA$||YIZ5g76QyhAOsz04%BV4daMVWYn3wcBxsb^?>h<120$KrfZnHcZQO?Q#ETc7SKVa}HI zV&58}sb`b4B6nE31mhop}D8 zc=`mnPQ>#k;^{BQ^+i1YMLd0sT*u=1WAXIIq?--0J^6NXfc3RRs!7tpnI!;?f}qzl|Xj_XjK)^odCMO5@-p4R#yQn0nnOCprrs> zTLrWfKHa_B?$Fh!wleWM^GA67jc*hHoYZvPYd=j z+6I!&^qO${g(fT-)rFG2CM;BcR!V1rIy9>F&?pDRLPoD48U5X>{(@!nPPO_BNVRtO z2F>B}2Q(mp_I~xO$Ea(=+Luy(Z8*Iytd*Mc>o64VR?j*YSSS|>cumrq9ikXX1B81~s@JP_9QH|HM+r`LzI!RGw>aC$>nd!aeM z0c1R);`NVWk%5CFRTek;+PlkHw|1+p&TbV0Ymch;sP+I$bUbF$@j{u7KO#E1LC52& zrQYpj)jFbCR1=!`$9Xm^qMmhjv@xvR>dbEhaR+GJ=WV`1W@GrLQs;MZL7v}1>g!Zm zhUx27Ol|cC=ws*`>9?qFpkE^DRaI8po_HmD*D-rH@JwSp&omxTG1J%xG7qW>F&tB( z?^f`elH@2sj=*ySoZG0jeis^uU$e#Bi{&E!kc#|WoG_`@q10Qd^;Y+#WN6}#@|%#; zAv^kJzr~PaBSRDaB#$}UY`-NVH-|IxoAk}#!yLbT!nZlxx;ZRP_-^rAe1Exo!uO{{ z#52g|RzJGX^_84`Fg$*A{=sniA$%VSrymZFzaal`IK3r2{=)p0aC&Qa{6+b#;q$}70J>j^%C!F3(pS_@T zt{>A+>Lr<7kl6G5<~6bOE|NRD0C5}BMP;ExF-nx#4Z!(++)0`#Y+D)>#%rz2o^ZpZ z)UEr&p~i2~S8PUW3!<4FVPUqCR8h3(@2TVct_zVf+qb*5Yt!ga8HI? zpENt%U3Q0iz1-pcj1ZN8Xoby=2W)n%9UYqZ=lQ?Iz-`BFv18vLX8kOW!FVfoimEZ= zsqomjKhHlEPCw0#r$N>>zms~&6;$W2E^zg0cPfZ^r;?a=&nD(wo0ubK5Od_5#C#QJb}?Un zZqstOf|kQc)6U>i;qxtH{~2hHRG>X#p?x}hzSQpamYp+?kp4(1;%LD>1 z@|%J8Xx;OE(qe(d9E)75AQoyX)6|z?f9F`5$Y8?SKK4xT*0Ijcu^sOAv8`hr+fNqL6hdWy)4gQCHpk(#| zs+$Rj-qnJOV3n!9b!HRyiT51b#tD`hKvpg?g()J&uKy>iso6CwHE*3o&0Ce!>>Qq& zH_xW#O`DpmT&kePYFkhFaXtHg7A`BY^+s-5fZN#L(K* z;96pem{m*@$ia00qulG5LR!jJ&)W=p-geZSx22l%uVJE6^bfPRF8Q5`OMb(NrhuCi z{~aeM#7W8oZ0iz7H}FO!ydb*Bil64Hil62>BmQJ{`jck*YjIPfGN)2?PVnLs*v3?< z&I#T#;!jqmKWV0KF<&>C8Vj z>O;;FKiD=(#z9MHM1$3MDKmo`Fy&RZ;OmnW1Xc}7xkQhkpCJA8 zbRz=;)xl#^kbWqP@@lbQ1H-@us$ik##_y&IvId)5| z^8&}B2ly_=OMYB!jS}IjgPCvVUWi-vo^YM|+Z@vRZCj^LHSqIi0Y6^>{EFXJHdVPR zIe}Jq*xNq9e5qQ|4urMS&G~_FdN8bYj>!*()6a*ssblibW3~1wv#hpq3#ym5n*45w zcmCS{rDCh8S8e?lyv};fZ*47oSl(K?ib(huY%Q_q)?fh#4d}&i`Xzi{3a4KQx2vtH zLw_ZlJ`j%U2g2!t^f?GR-mv#%4q&V0O?yw~K-eHa>{Hng2LW-&hB!zNjN|R<#&g(i zJRg~jr?ol%E(-UK-FRLPXL_3S*OB_&@^bq1aO>;la{7q9oc_4HoW2@Y-GS)6;YO+V z{kTAQk#(YZ4EM2*tKjTWwNT2x&zFjA+CDL9`)|$p_YiZ8QC3yp8)0pooPQ&nelx7y zGA93KIQ>>wn>!}|7RWwcUFZ*N#3xL|f6<)(0Ej=d7x$m~tsTEl)X>DA=RZXBXMXEh z_*(&M?SIpV(8RWU7W;t#7g6>7N~#WpX+4@-8y~w->dPMrr{4}=D(i2D(}(dr98SMu zN}G4MY67S&TyG`twdS?lu}_^I8me900I>+gQu1o|)KK1~|ErQB!9VsCdT_j$5gfRN1R@RK6^ z%Vf8ihT26yruoIyRB|-aP8GMmJae<&xoxMC&a4jt^)xx$QOAf8B*}bPHwrJ<(AzeY zlyKY6=+1hJ-693yd^h0nyW}rGT3i0-X2%6O4F`_PhN|JT= z(!l8H?M`)Sl0HQ%QVH-Dgb1G0;WMKA;KZBt_EKg(8;YNTU_kBdnUv^IqK?1?xY#Ar zUv7#v7ZBdLgeL2o%UGPi;>o&GQ#EJiP`Hl(N@6O)cSB_BavLoQsMs|5GsiI%myA^s z;H4f)VnikKK!C%Ci=q@=BwmZSB5{{o=tcpL>XQE#h9}&TZf_=OWAxB0yQj5Tp1|eK z9hD97hQ=fO$K|5%dxig)ToO-*e8T^MOtWncfKD6_Mih6}i{ZqLdg#HSrW-dgdvKbG z{r2|)-UgR^j|+9-ZxM5vdcuTi@M2H~hv^H36Hey1TC#5g8o9(BBrLk%YC?3>i#2hUI(8kBkg(U+R0Nfb`4 z?QH0P1+4TG1}G>q)F_+;XE_l%w;W1N zlVc=G1D;VXd5t*-r7CM^=@`+{(b&>4l2$tgwe}*Ky+SqM!rH};b@cwM9}Cz4UdK^4 zkd>jseLY@iOe35E7ZlR(iJ1Ez-?UJzSyL@meEm>!O)r7l+L?a8{qtvV7I z8B8~OvUOCA4b+7i)|hRoAu6qD_%m1^%{KJ#Pp{D%b!HoSg{MS(Y#<+r1>)ogaA^e9 zg-r|jf+jIVN+wgD9^_e1d1k5qQrFDZQ>KlSX`_{CBQpJS&a|0oIn&H&n#WEyvsGN6=7_tNtS*hq}5lR8H6x^q%T6R$QWb&RIo z2$|VL?aPxLO}`_%#Zq7djcEw=appnN>wrgi8{7uwSOamFUI3;5jBzUOA$b4$4! zw6^J*t5{0is5#nZXi|H?z=%SlNYv39aCHVcJP0~g738&`KCpv)7F0P%$=sx&W6#u_ zK*K(->GQJBXZn2XQ%s*?vJvYYUW8lB^dUeo0|ZOevtVyM6V|RCzYR+~$5OtGmjVv5poGJA{@0=UR~9Bbv5`TNBh(W4*2+%8g-nh5idrCy81&z z#;LGT-o3COPK8xK)HlQl;YEu600La`8?7Kj=wL=8aH zU?ZZ|pP=qXhztu6^~1?RRZq5Ias#e@+nM*4llRtOx3ivB>`>g-zzg;|EN8Rze2c7} z{T>lVLwntXx~w>z;sc!vzoOt1&RG(w@Q(sYz$Gu2%n{t$;p`GO!Fhv5)Nq7y=wz;Y zN|8fx!YO6KVlKk6=Khv2~@#+?Q+V2)1<8v~<+AbkvFYkyuYCV!@zZ zdO=oMZ4Ud&r5CQoCL0er6roxXYDI*aRmwA76*FG(lI)zJ(2`B71cOHmC<^Z5PD((H zBY3XNLlH;tN@4;^M3dWEbWn8?H%N8vBx=}xvE|7cHgWgFtJI@F2?)YNTQcA28;gCyLb#e@Y|= zXsr}O-BK?Nh>f~wF6%H4fs}*gU3*rh%+9Xzx?*iZKtf@aK68@i5tA6%E^VSiCh`m> zq9;3or$+8<(4v**_QMzVKTj($==?JMy)Y=iogpwmtdeWRG8k))I;-u}iMCTmZHL6^ zlnCZKhTUyyX<;@cg6HlhxX0Y~RXyfY(PKXQefOCE+c(av`f0AJs-NciKe%uF4z&LM z`^N9WpmN{%LiCN3U$<|38gMtzN{v@6Y75?Tp-}eA^`hOHakALkQ=}>g(#U5zYwV_H zF73@VAveZ~wY|AC%leAF)Fyj-h$avl{7bQ&QI8IA>4kv+Yc}lWeGyDbe5GDqyZU)= zfHyVFWeR8GFBP-?-X4P>RN@cKRJjKcou%%%OeqL8-RDax$ouPR@~9e0b1nLC!QVIc zKO%7Ma1`Ph`)2{Q-X-_>%!#mABKpJF66)1VSzlGtCIU zi15$l$-NI9Ovwh&vbdsa%qqjXsX&q^koBcO=7q_MM6NWTBNHHL{hgQFoPy( zGIt#6$J}j57S;4&k0)CTyD0b_XrIo&fH8`x=@AdF7^Yh1x!F4E5?-x7 zPhQRauVL2e-+@^W7M}-j%dV5wCPo5Hc3g3)^^*3}BqlGbrrH5tBrzyd1bmjnyrv@H zWD?^=MZo7tY}vy;8B=cLzD#20-g*SxC9EnHVY1|l0MwLBC#^RYR-fKoEf!`O_iO{3SOCBj^lVX_F5 zE5qC(%v~Ag5n-OnFs}&nR)+aRn6ENS5n)PYm@2~5$}qnO^H+uiL|C9QEGWW)m0>j^ ztfn%oR)pcRYC=_IoDAU5AMY>5V)fmNebXN7AC}0|15xU5d>N2ke3QNXrU>58-4wxX zrc;%nF)Q?RK=!-j(=sZzxx*dr@Wd-Mj+lpH9dhRVaHw&z!;yYJoVhypOkBI81=>4w z^1dH7uU?3VJ2_%9+JE{;xcv${RH*jQkDQfaNkxkH>=aAv6z_#I?^5pd6#Z_v{ogas z$F!Mp>%Tkocf&0%^p#y~yLkEhvPmon?mNl9z6G1k=vK639DnQ>8pp}eD9}Q=H`q6Oa zh()(S&JB}0Jel{(A@3o?TeP;2Jd?pWnnMv6iMY0#HK{I+=YkE5BKSChbF)QEP~4#7 zJ0S?jdXUN{%M=SPgx{0M76 z&OH^FJXqpM_M#RewWvj!F79B@aZaC3@-5RaqqCvI-F|Dtp!HS6*?CQ(!;>3q!sB)? zKW_H{u~JMG0}kAdD&{r@vU2Vg4G;>;ab*JRv34j~-~8WnsCEB>TPWVFN-(KgH3!kh zi7h48xZ8!-AvAeRJsV(sJ^`q`XrC9M(ZijZM?^@tjfJBhO#)&l9sxKTtW0#&VBeME zYw)%{tM=0xl_p=KZyFjpJ0n~)xs4VGsoNp~mES5tR?%IYKpQz@g*KsY!@qzWxb4MwU#%H82K%ATbSlrq98Xj!up;9 zD8G>zXxh+l39SoYu6dK-y^rs>(ITszSQ3#^Ma2o&x(+$Aq>h?WWhLWIV8bLra!Ukr z*wig(J=8=(Be2GTVh7WdlclBMM?!Ig8!Z^+p|z05Dg{rGEMFk&%k5D3t+SV%V795r zVe8OP-B^jH?zlTi753W2+On3PN~!r8tFEZ8&$l?a+zmmD-^W?2MLjJz%QCKAN4KLE)TvYVge1lp z+O6EE-Cd?a6}M>Jtdyl__9{2^AVIa;>`NuHFLZ7w_jUIT`T1_swQcyUF+|Jj8sext9UkVa?^wKo>I(A@5%BD zOEc1a26B?J7Uxxq^Qb!C$YsQNupT`O-*OJjSC8O&6@q=el3Z5W($I-dam7o zYl`GxE_sTkd@Zs>?eI~3Q@h{_rv<&Z3Cxxk{45O`X7foI$y{dDl9ByHrw_tw1Xs2}0?bFvuOupEf899A zQMB5K=vK_Dx<5E0+utR_z{n?%Tf=^b!y067*A~<^e%mUqHNN<)@#P#u{RJne5>%q* za2Xd8q}G&BO)QA~5K!GFdvx(xz#Kl{w0N z6|8t>Xb5ubcFi6M-Ilz`y6el*$IaT0zAu#Xd2PN&!S}4YYEUNOko8oBcv#yJ)c%d! zLE<6nMv<}}l*Qqg5tMx{d5r}9dzNga9;@Bp!j!-$>9d?yW@f3y)a_wOlSW|5LO!Ey zcGyXUgN=vDP%V0k(-fIqBq@ujc_dWH>4ku)kAvm)p{(3m@6@TjDXdt689AC-dsz;* zbvY$5sV+xZvv==gR-amIyV)t>1hMUQC&bfDK`5JD$gQNKL#~>uo$#BggS6QmV`Bo6 zZk$1apS;AnteX}p?#ZlXudPdS6wNmWDDx`IdBnNuTmU{cmIn(JCXPAr;c*)Zj*v>KDW_!OWeUzxVp+IT*nL)C@VwjTXmK@kfl(}i9D;~c9r7@E0moD zp?h4btk=O3)&;~Yn)c(QLCpKz#ncN;Qi#pB&I)2LBv+M4JW)bN8z^Z*=Iou2(8OIf zFmEr42|KMiSala3W5jM64*=XF=!p7DZ*trUI zM%aYh^y`&M3r<8DRPzby*xdc177oBF$22A9$~^-cWmvFeu9?w!jj-_)YV=4Bg1@Hq z8ixqWtZw3@>zX8y=XGAwkW>5B@T3-Mtk#p(G*?R?4$_>GO^tK1X>m!=c%84Ft*Bk+ zo**o@TBv8h2ktv-0E1XE89O_pUWZFvh`lP}VoRM@Vc(I0}3$;fjR#+;tW)0?^-0YLv=SCQKZba&;?;ILpQl*ci zN1abP@6cY1DR*iPNp~#K98S02zf^O$E^;i>9J1_Kt~uP-IJz~5=W0if=J1Yj^lA=Y z#L=fY6xlI5h-))(7!Wbry`kOHVmtRnZRg4sT$Y&=bdhl1Z_ej<2{mYFogrRX(!x|b zb+K@|4Q+>0I6a1TZ;Nn3TPe+;rqX)zA_zk@t6ai!)go+`LYkDsWcqSdsXs6@d{~oJDlMlIUmrxbc=C-W5*a8z1$9LhJLLp-BV9s1#&%%TZ!--QVyy@*A3y!9tuN zRw?&rRwJ~M8lX2vCR9G_rdNG9>#z97MV+tSyUjK7p&TZxy{~$S!r&<{AF`~I|jx1!Ll;9 z1=Wdew-eoKCi<)9{0=1Q3Odi!Fx?f=c8$q*MbZl++U_y=g^~24h_-i3eo-X7IHEl= zCcik6z9XVNHYR^ZBzNhbI1Y{%@d5f@0nL9On@`_O6kkiNDH2 zIo_i|>v_qNNaj$Jz64}G7POz2EQz!(iHPSVkK077((LCYzlL!R5b=afgb}o!Y@DbM zP5hhuD~K)ztrr~wcJ$81(8P)P*AP8uM<23@yk84V{M$TUsk|K==IP4eAf8qH9h*2} z9cnO^jKztv+u6Q6LX(w`6H;nQ2p# zJ11ypSMPAI`$tRhy;x2gP={S%)h2~>LSM*WsbbYFRNuQZ@B8UDw^~arjY#@x&0I;p zPRjs-!%a6D)-|?xp$8(T?$4>P_qPb2 zRQEmdtu}p5O#Ze0sPMU<vo|ic51*H}5#Oea?&ehKAhTLqnB+6y$Im2|^Xh zzni+KZT?~&@Y}%>-e z3;kc*`r5@#-n}ONV36Do_LN3GCq&JAK_|^xS_+rJx{9E|m_Ep&j`cSh-O~q!Z2Ewz z5O?r{P`KZLoxk7GqBCTgWYHuuwHTJp&|8cf@@q7S614Zxs*f*(w3-qm08Lh|{~n)3kH_Qhn9zrvMIt;;_0U9|RqQFzzZdax9q%ssQMvRX z8nS-OF|%%=JkMBTw$`k&rhzvLCKI7e>*PMSJUHF6GS(>NrifA86`MV%eJ`A3vo$I(C>Z6V!?MFdNJJ-=l`9~1BWB%5o ze%#al*cLwzlx5(5C-HL>7(TJ(*osKz?IwK%GCfh2V=E%9D@-}|sf}oTS&scZA^HG_ zKC=mgqTE3Jn-J(8`5oC-o; zAq@uFh8AsO%daGJoqRetoQ;n(;r$4Bhk|FRwz(&wy(s7JiKJIXwCBd;SAyiunyPx6 zQe)NIMzh}jpXU50z&EwV61_LpSdw|&=+MMW{sgZhYmnU)mD$}J8T*)&zc-S;FA}{b ze_tfMDiU?%S4GnIN21TJg8zo?vb?D}DtI86u6Ho|dv*sb2HS+?Yi5>Ybfcas#?~K- zq_;#W9xHB%q_;*c4d%B-(%U1MT@ihIB)x}{w+0;go=AGH>D(L15SC352rRfZ+pY)M z1vN=E9vUxi#lgHd;%*P%aQh(*5374|E)6FR^l_#P_em$*0djZa$lHc=S3oKikU;_I zEJJ!KAk_-U8bC&+RyLowwFYCJLUa{V5A(RYtp=;r`-s%|VCMZ;?&B63{xHNc725J> zY76hq$nBrD@X`E3TIy4ZRcjyu2kTmC;>j_R72_~tF0*2sR?H|fW|S4O+_vp-XZ_u!Y@nM+40hu&3emEYyI{R|3*6onXzdC(^0&hh>8=_m zpsZuPw*kCfEwrs>TcQ2jy;Tt*G@$IRhMnfJVE0tPvZ9i`)vzaRy!)zPPXg~FHMZTS zB`|#YD5q^=8+S_rtlh3)}ebJ z=_=UMfPJPKc8bl5XRBbRfER^o*r_(GQ3X2{u*GWFP8+sV1=|VO=c-|EvSIgE!QKSe zfoj-UHtb*(>@2`OUky9khJB$5b~a#NtcHCZOVc%W~fMp0$=>rS9$sFj#e7IO0g6Tn~d{&OL>GGLzL6ms_k?DtiL-2L!0uxe^i z&q&&-?x&>%wzl}T4$X`6^8;DMr%(i6YG~V`Im}KvX~67(lLpP^I;lf88{;Hsy5{Ci z;?ERBB>GG-GpWM|y7-)1jt;@{VwU2T;+>`!#KXo#R_11MlZ&I>?3o3R8w#w+)9LDF z*~*?ToZb97ojubK<1@?KCA0;Y1@2;lC5S=*MuPVKNR=|iw*H9EV*I_tYE1u*)YR0< z?&n-4uQyt}UhuVe{U&(5AkgWzdF^lY6R&IX3j*01Ukye4N4!4mw0M1!&Ffh?2|fzcI~*icHCLNSv!8Nok@r(*N#;oTsu~U%!bFR zkSSatS%p1Q;Zd?`xf0c^zg&s_Y@l3;fozaHClM2D-yJcAR|em3)@$k=@O+iVohwc4 z?`7K9Tc)g#TT_ARtF`mIU*q=6?rpNo=l~cUz!jgdLZ^koiY=;H>y^OTl+D_rU_pX7 zn>sm0iZ>=jzbaXpk$Os&KBOLK$YP%Kw4H1c!=b6)NpwsaIjD*Bpk6UO#=IEwVScxp zz%{Lka(lQyXVgg6V^QPH%7UCmE+ZVJDsD$lYTJ3nMfl zAQ}b+$hLI>9B3Tljh;Ge@|zny*EHw9hy6o)OJz>2wWabzAT;sX`~#S1-coBHWz<^d z0L9wS#9aO&9A(rFa}Kbq7K;EZ7&51taz`)8zYq|cP0MR78g`j9{6ljd3Vyn4&$^1c z4?9@1kt2W{#pgbdTYm^PJZQI(-6jeD*qr|%HvDSO zRv;eHJ{^;PDw2LWqP^tJKMf)tt}f9QyF`0TbpOZg=U`Hy z3~&+vMg_o002IprrvOl@l|BAIiIusx47SkX&B&jkiO#`5!#3pXV!2jyAtXjqTfImF zjnAD&$eV%sMf{SK)-fLm)lK__?*!}DnY16_@b%#Kfy1S3(3;$aMyh zQErB-r?=Qw$V~}$Pr}Ob1`#}+ri0GD_T_GEK|HnGEp_u^^B}8>l2dy%i5w+-+dh*q zuYazx>F%#}k>>(722bc-4x|pqG@>2gZ+8#2v=|)Lx6D`y8>~d}yw&$IuR|cbV0&MM z_eB~F{DBz+Tlo2-K>cc<{@*ZHdL_{MO2CnSHGrVFKHw7H*JAi;x5xFpquI5kMSn!N zwzlYx3fHz4{W0O%-l9LwuFOp52EJ!I(+O{Crc)~Dvz+bgWq8}x%MyPFK*Gy``pp$2 zyc|GKT))GGZ%lt_wD1qO#1|yJ9ME@b8Nq^RI6fB2f zIf|p1wwF!XUJkThOH19U!PaY?`W+&|BsTNy+&-<4n-dhfWCyCLKM+8Wp#FeK{Q;Bu z119wc0@@xyJ-PM@>dCcFP*1K$1ohP`p!2KueslCrXI=pY9^Y@1Ywey+@t}U27HS)zQE?C zLW`i_8z0~U6~sEH>~2IwMBbtZ3W6g2t^eBR*>q!a@5hhovma}(z4qQ~@4fbGt(`jc zJ1x}j)TrMns6QOkso$wlzf-6F2Bsc6mNYZf27d#7cuSP8ZM%RJ-*?5AJ6j0S)vjRf z9XE9d7x#gm=1T#2=CzqNnLRdnb2(eA^%N<-aGdZm!5TGs6h~8uH(0 z@vkNSOO^38XGle=tMb=1hFOh zWl&L<_DmnBB8zYUX+8-~AHeg6Dsl^Y5p*KR5NCogY>Y3avno-cpsumZmOl*gn>`Xp zgPp+7$As60FuJ_Ud3Q;c%)g)xmEd$=1gDF1p9iP^|4PtjIzcDTB4}5HWcc7;kwE)& zDF1Xwem~XvbV%xWIy6vK3(tlaap5`fRhATlEAAaI;tgt1=rmy zAYDjAUrRi3D9C0C(8x$uJ`}7p4z|q;fwcF(5>nD2_b}wQaCm;eU(uuvK6>OH24+cl7D(;xGU0VO_0rcv)xT7{&8yCdh;2I7c6z|^3 z`;l^gux)-wLN&xP7!CIYArRgifI!$NweAZ#%X@=}&i|LZg$i&B7XV`x0!`S$)(ip~ zrNT>fmb%~1i=+QS-S4N!q)CrXZACs942zZ{h(YMGH6RWKgB)WeQ+wD9r~FbK4qPm> ze2})%;viaZU6I?L?E<#l$}Dw|oB9^&?3JbwTXC(u71!EZaV@uE6Iu~@8NAdn)}gaZ zLX?Uch}vn*FdcrNg4im$PbGg{6E!6c{J76v${Jt#nVToD3Ml!tj3RH#Fr)MnbEtwj z`YWnn4yaGY8aVJZSU1Y(O5anLoUy^^)c}ac}{lDTDW3_+f??62{ubGCb zC#S$*s6njpv5?xD@+=5Uo$G2GEYEdK9dtI{TOPzX^${(ZgCVhGK0+dVFa#0)eXNE) zHoUvxJ!*Jaz&~cj!uttlSP$`TPRKEJw~KI;ce|$UaZ&2>9?TD)k^mMArJ;Dck(hg8 zqoXz8?g;c%{&s=a(GloZ!QOb*l96!Wb3EcC@FH#ris5fjI+>!m_IRy)U&_)Gq-p)_ z^Fk_y8yfmrw4rZtIyue;EHUt)6}Y1O?R6nsn>m4+ul+Mvi8@!!e~12GaphQ}_Pb%) z__N`*)=ow=!=qx03xFY@92WE3?uU$SoHyq?N@F|Pc2YHB5w`Ep#jlA5ZdGK1sFN@}W_%FG;JR#Q`} zsm$#0vj^`0^X6seP$T*Z6W@YHEKfGjDvkKQ(nAmAQ6&c_1})dn$AN`11DD z)HhR^8^@R5OikU9%G^A@ydyRBtyE^g`0`t+sc)w;w~a5qjSZwZQQJ0DmqEO$5&z4v z<-5>&bD8){hSk{rPAao-eEFT!)Sao!9plS8Q&ZnfW$qeZeiu2+v*$41$f2s`@T;-q zyOG1SQS*xZby3{x`g=STnB3JdxnGU3t|ApSkMsj;6=sge6Jxy^7K=Trp*=>OqUINc z)(K}t{XUxJ`lyX77bDjjq6Swk4#{t1@J_)NbPWW9n~ancq!g}cf=zcD*oI~TyTuN+ zp&2g+qPQn9Mg#lsViq^awfACZVOmP5ZjHJr)g%F-#hLb-Sk;6r&9do*57`*I4f6-X zVD7d-955jE7!V6>5C@0Bak~v--!M4tut6Li2I9`MO1Ni)67JDUco-$T%T~oNq9yLO zSMiHziA6TBXV4Oh?O@NKCGN3-^`WVI>|lM^VdPJia?Dp_iS7|5Jm;AJ+5L&H?- z@;|-N51~p{*f8%Orn2w-(<^&FFyCjxynUE*-*1C>bC`0kv{i98T4I&Gio4Mgy*98N zXo&~xU^~zft8HL!0qj9L*joTwV*{HBE?H{_n+Yy?$OiW4#RT@S9qdt5!#W1j!rB(` z%gOcTKu>UOcQru@dxUGFUIfAl=-Jirs10PB31ZgiW9D?T7}L$$8B8~i+cM0(!b-53s5oY(K!>uyNJ1&1Z8}-=99@Jd3*Nw_$#+`D~6J_|u2U=YV;; zt!Qgdop0KUwg%O?!v=N$HSm@l>;P)uZ5!A@fW2b}I|#6yHn2kgd)E$j2w=NxU>^YN zJv-P30NZT?I}EV*?O=xiw#NqcA;9+9!9E1oKKqFB5sxVQ?SV%)@PIw=WAUKP9(a@k z581LlhO9qeI9$nBa;tc4aX9LB3t|+tn(GbWTJMLpgr6YcM|PS&0nJCEUa#8|*9R-U zQ`dGd?ZIsTJ3T#3$m*y)aDFoak8%EC14-NIG!|o@*kM2A0)5JX7mC3AQYXLCZ(r)< z;d`l5QgX|j5-Te_&g1AL3uK)gQf*uAbVA8g`?4{aYBSq7$HSs1?i`%2r7HM-)OZ0!T5{lpJt-#v|Y~s(m;Gd zL;UY!%WHu6Omvv_IxS^s`5ZOZ>#t$Gj@L*rbA3KDW?PWYirJRyvtvV7;Jft|`1{%l z{F<1PkQK13pe6E>Gz(flp?FL1sOp0a@MNb3M z9kH{xeNQU0YbB){oV{CaN5Z@ge#)RV{O6~C)sTZ@C zkKtbk5vljY@V-x+)4u>DJtn|Q09axHcnJVYV|ZpbUfYh|9OBDkykoaH#5#m8y6MN$ zu`Y?h?Bln9Xmdz`sZPSMnX2l=P@H!zUkqV@;V%s$;{M0Ymir&eIiqn}MlV}3dO4&Y zRZ>1H%zR!p@_G3y^0~#5&%I`eufdFQA0zx9@SkugxLQXDPq+}PB)-eOYg|mzHR4Vk zb}5_6&woXh`y?~V`^_w0K_#!`EPo{Y3LlpmmO@DW;4RNrLzM9=Uy;cvOD3z#OkPDM zy_`v2_(#a(6=d>ih)efs=uar!0!xKHU}n4p8L#Gy8~Az0mJqC-QYKqMBH{ZMiXV(Q zU7|Otg-ul9oi5`c!9G_vzc5G>C0K{)C`GFz^;S8nrq{-7?^HG8p1+~KxCwY3iVd@) z_;5^rW0t==kQ=k{6ZTH~WXu)ucsp51aJf&{D?eGcyijo;@Kbmtr-mFe`l(k8Kn1xQ ze?0i(RpevdX%kDnX_~62&-p>QKR4i&Iwnsn1?6X&(Xom(8%s6Ox1a$JYfR_?4`L-b zy%bjCKjWiU*j)+I@|ZaT+5v;KHs{V*3{4l-1P6rfcg>)ir|1@Gc39JF&&=X9;aRvz z11ku4xf0FOqF~q@1ayd?2VfC^fIS8=Ll6sM!qatAhHhbOOS2;9W$jnKx-(}6E5({z zH6-Eb2kb4wRjX8sfu6!n7hXly_7rxx@HCM^cDtY_j6!&7e=6p^z~f!z#{p=RDl}%8 z(IZbC8s_Dx zxxNt8(pPf*`1-5zTo<46i>upn+2}Te!K!=^rY;dA7A812LEv;&dOzQqYQ81aA(3jn zE!82Us%4{mZ19Z@MJ{1;l1qg7D^*xQV~deX*skOf7%`A<@O6Br6t2oE@QvVQYx0+p z0~Z=JMjJ)#3X^4{sL`gE#uP`#zbOm?j1oIM^c~0)M>qbAHPQ#C;~i@;SRB2y@n_4X zn^pkoIee7h(fZ;T6U%lDOMj*~M#B;kSVF}yL$I8$VPOV8pAu>Ny{IPg@rEz1r58s5 zXMOJZX58{Bo(~7xV+Y5LD%Kazhp!mn3+X|wpUW%WC__$7d{Ew>!AEofK^+l%Y$E<{;PH;)-Jc2yWUIFI~UtR)xrWp!+ ziV1Q)*IbOkHfBOA$g07?s2laL`TwXMf_goKa!0?a9xRPGay`WLdWh4I5{Jdv>0;nG zs~$pJDoeY6Wj!Rh=0rUt&3eGL8w*nr?Y8H8A$eE5~^3o72&$6u9 z#8@&faAaqnlG)6fQ6@#ED48uzI2)lx2U~Vl`1cL?H<}Ij*KF_`Sr~u@qtiSKf8xXM zivJ{OK*8+2X}G!gdHY=af+^f=hY0YZDSmD@#Lw+tAuZi%k(ORE5xxn8n=JzOo1p4t z6JQSH(^pLS^rRu5o^&Brmrv&i`E<^oBA@QJNKLPrS?&N$TTJz9N&) zEtzaJGkFV{yk;r*TPXN8+e+hY%L3qS+e+hgvkBfdn&9oPpyW176I5&~jdv^=y<=Tz zC}uwI82P;O75Q{q@=?ta??j2KT;hKa{t>Em2dZ_akjQubaS}Q9QO%s*MNWMd5&T_U z1b-PTe^I9!0G>Bvf7By}9rji5 zTZTaWr6y4SZfyBI;Cq`p@hB_4y{Y!Gtz#X9y+HI%j6`;CGjw3Uu%$Y^51I>=Dz0W$ zr?Yx}2tOEHg=zGiF_++u%H@vo-Vpxo3su^0kz!h;(E#xj(yXtc zV^aukQU^jMzqaC_ZecDr6uFmWS@z)OB#aPibD6JF^tBxhNk#X~koVo74Ku8O&49co zB_;QyB*{+^kbEXXnN2L!$j^sZNqG(Rgu*p0J-G!KdS#y*7SRR`(Le}KKs7{uAewVF zq76EtO52AaN2Q^>CsfIO5OQ>krPWi>E5q_R&5J!O3~TEF8Ai})mg`|bSX&#s7jp+a z-VdD21*kVS*IR(=tya_U+nsK^0U z&TP%4s<%f#uf~9A4@xzJnz|Q;L$N`iKugr>C~8GZ*idZHQE)2&&zPaq;)%Pv?NG=i zDBi`w&F+|+*2k~7*_c8|$uD(wbu4ubRAbs@xe#Z6C9S)#Ospt5Dsjh^U;wIVUZYZ7 z1w`p)yY$l43@M%8Qo0&~BO<9+`FjdoM(JwI(g8v* zo!?qId&2Js8*E__V=dwUR##la0V-mbS;U~Fh+XK%@5kJic)Zs{n5B|dEfnRrm2)|Dt(Rn{iLeKlHfq*$*N#Mj07Js z=Xsa|X$W8rtl@zLoabQ<4A2)GSWDke-B?0-_)mZ{njDf5$>K*x}X@>y;0o}(;W!{7>jBhr%W%6hoeEA zUb?V&LF_vct$Z-nq@z@}rWvKCV%X|!E=H{07F1|-HU@}IAzP0sCN<{cS}ZoP4)aiP zqP)q4vk!7WKgT$#?P4>p%)=rsrp3`8=GyVp7{!+OI2d{m5DA9pq~+TL4a-H;TAPx^ zq>TVD!T&orNIBy^<7=TzUvs9vxfr@!%DvmAmQLU zotBs1*4~|KdutaV=B-TQ&z31mDY{bR1XXz;lY2izHC2}`)w3NGvCmRh97`D{#YAHc zdfH5LJ@G))+R7IfV^(jb7`J+}#e~)SHD-x>z!C!?8+ySK)LFS36)$F%h!!X5EHQ}{ zwKPzVD`uD_Vj?c4#nB(`QDwaIBEA!^DPz$=YG!!@+#b4wD#;rT&V@Mq||t-&oyoliS`Lp4%=g zHVAI(HwS5x+X4o+sYU;iVgTHBURB<%aocv{w(|^b+hO6h9pE;Vxb3`3krPzqevRAC zOP9_U+{XKH=b0n_U!ohMZ2&$%!M{P+gkl{}EHypFi+FCCUK$lm3W?o_(!>ABIuD+Y zu>>13#c{l=Gzz<&MK2r~>oh$c;|g9mQkU~BA)J6W_r zz0qP_j}ne+4KQj6h7hs6T30-uAx0O^>rpibwK#eSnq5F}8`lltt@8wLA?IRU@jUHP z*PfUs9i{8p+xyKFZwRJ3zfg@J)afwKzl0vep;!Hntd$o3SDxTAgnL*mB~ zH=Dkobj>2HC;}LIX4dMPMQM*((;lU@TVM3Jp950MZ;}+X&U0pv+1KIN8;hho z-tJ)K5`HS*T=Fzqn4Tok0Gs6NECuNoqF9etU&xy@z!xl2I zc`MlEJ{z0woY;IeY+(bNkFb3*47QqcVym%Xix}8y2-~N_VDq07o8N{lYGCuT*@f+2 z4z^#_dX=N&Dy$}wSP0bN&w2PW3Y->wP%Qo}f_+@yK^TYSKkR0WBl)TrNM6Xo*0{o% zP%%+04AS3Xd}8TBOdl84Tv+(Xoh~H>Y;E!)4YngpA9rCUKJiAWhvCm-_#-BK(14!> zKu=+|4Sp2E9}f}yrg$-a)-vGRB-bV5OMyZuTti9aGa(F6d^(trJHoI>%8ESMXNfu! z;wYc+%?i)pQ=demROk%znPH-M9tjfUYr;B;>T5g}rwRF*a7Er5;<}P&YiiZUWoa}TVGRD%j3C4TyKNFfZ;!NpWTQ;IIrbKTn!Z5h@<5>;aQpux6$%k zYQu@Kr0y{z=7f1NifP{YVWT}q%hze`IofQ`(Z%}Wn6uh*G`Huzk=t|M(Do$Q(P+>1 zD~HwS2+L^2XzP{Xjw?%Jv8kmL#}>|HiesU0HRi7Kcvpmty=NZnLp;=nn@f@AQnZ<` zDKwzlHV~&IhsZm9L*yN{r_^oS8&EVKWF|ZW4e_Jika@+Vy^PdlN!!Xayq&Hg+nGj8 zmutwzCRX;#6XD6M3bn1sNNAVnBogPi>+;_8RTE1Ixid_ou%9G2j22i`QKpK* zzTARl$(lKohVu|(1v?Wu3v2>|b%e3f)4@8mUU}uJnu$c^Nt#a(j@g*R%epCqi(Fy^F}^{^lBG_gtfnnN zGT28UC+gS@wYOsIdx7L3K7v8(OhP9M8e7vyAA`DvMh9op=opd*8jE-NHp8~z^imv1 z{#k3{T6+^yT*xmr5u?~JM`7a3ZMZ`smS$g7ps3CvwHB7TNaUwjvYUuaJgATKa2?=k zlg@|g;NaPPLbG%BO_$LpRBdy;6hp9ov}MA*_NgpuR0)+f}V zePTfG6WYE^7afQY4~Mk z9|)-``*beWGmri|En31iXkGMa16@M}eQGlzGH?h|8YkH9g{44cPc))v#d6#T`Q=u)u?0pr36{W+|0 zAO#d-ZM%pA%_b3DDoN{>Bj{3o(WS)n(tKJHR~t~GAZ(zp{#K%@68_bj8@EIlh`_AKzM*|WZ?Trr)`tUYU-r6Ul{B)80V;a;KG{`2Z={3f3l z?T@*`9`8aAF7RQqpt%%MXc(p5IH1rti9x`vPy=JV&9fW+_!NwKe%Ohe8P;zFP#;$? zKyvV4$PD&ZHEYpT>eOsRvgoaf{_TzaEtCMwFih9}`H&HAxk%FnH`eNM{bg&^bvFju38%|;0cMfc~u+bXFwlzl^U?o zQN;*IJjp{J@PxHxyxV|fWA_Y9ffi`7O96AD9?5}5;LWQ*(HoA4?~-B-md{Z>b`);3 zkp|||zdWU(vtBnq^2^ z#fPxv=wnD9&R+r$&X!nn4T)40u>3(+)tD4&iBVBhwOG4kdVi$|-KGa!q81nccHx5p zg7wwmUDR+4IwwrLO$<60-{BdwOJmS3JA=;Cg6D;YWza5@LA(A42HilMb5v*00V{)c znGD)>7K3(K7_{q;U{GZ9vCg0ab_VUTFlg7=4BB-zgB}(vx9cnh?HZ0jyG&@YduA}` zobcHU>bEecUohz0VHmW=!k{&RLFa@G2Aw+sgVvnIpgP+HEo@iIj5?G-bylvmuyRmv z;306}VH*eT(m9Y>_>ik=#4`);(peY`dNAg4d%XXK*G=MNQ{P8w|5fX+938(JsH&NY z6HnM^c}DKng!?Gm+l2cV+^-7vM{sWu?jvw-74DDWeqFdfapQ{MA--sM31uwuQ(y~u z)kT@LsJi}$(qGGycXo^N@FUQw5Jq#X<+Cz7$|pPh>M1WU=tg(g4Ms&<7JUwNM<1IV0j( zw5cfe2y|c_53w0CHy$M&b>mUe34SK^DK0~lKO?ule3JeK%BSdWZTWNh8!Uf8e?#Td z^fz4o5_x@W$?K^7D%CMd)F<|+Pc2c$?NKNAR@dKCZC#VK+@<_qW5^L6(g$RCrw&9A|Qu#*2UlTW(qcd(}jyZAM!Lun6 z-j`}TQ{IOQcwKR~&r>toW!bE_F zUu1^f6RuR`d&1r2hqCSK4Pa!JnJeB+1(w60jsrNe@xdw-`}=e=44)#^0ZU5k{^H><{@VfJWzQvz6~l zEs)l$b%zEA+iwg5S!V7;mEZ4>{OkPdHB-WYjS17qFq>d{fg*0?r(Q!q;3b@2SVE=1X zSf~bD6>chY)>Y({nt!G6tL0T;cq;PRux?`jZY1ahF$A$Ptm4p5O;ZA>_A!a+1u@sh zao=_{-!SeCTXRrEf*Z^PtC8TwxOpXcHF*9e6W~Dr+-w1O5CFHB0BZrTzyh!q0Jp|5 z!r}3GZe7?x;tc`a7RS}mAM$`k<4RveUJ?dJ^kZc+(SgSj2FiXrZ_GO0-_V&V%D1I^4Mqc>R4VOhm1sfPsEIJdT%V0!Cd!;Y7FfqS z0mlOH=8gp zRthfe)^ruF3KI}s3UeDqXxz0_7+wT({r?bcyG)lLc@T_$Lsa0`X_&b&+xm5G0_1A| zEe?xJC=6{^$-LWKUWB~vVw}yx;Eb6#Z_;t%wJ|67zbHYP#$KfQKgfL%Bb&@x1~p{a zVX`%O84|qdYbZPqwL6QsZ?R5=`@=Y#A=2*W0Yj)1TuWp0jsS?i#|nunKa{T>vPpyN ziF=8%g)UJsn&M2(x8s67CBBlz^jv?lBYp)ISUc0ixi@Dk@~$u~B%sgIqXphVf$!M^ zlkx%zd~|5wtrYl}5r{RCVn=!~?NRI)ImCue3$fs$5YWv%t0J!#vy~RIk3t@?gb3}x zdwGts1njYZG|T%b(fcNd2-vO7g7F3-JF|xpJswW$1ZDP;{|UoSjk7E~EWdCYFp~_r zc~aZgY#(0sHJiiBlDL~1=y9hp(s8@Y)7xdrkamG6Z)+1HK(9bcfT%wNM89Qihqlv@ z0t^hNh4i2$*L+&q(^~zQ^?v%SdOtn1-cO%Z@27{>`{}dl9Ux7XDm8iyYH0oR$_t2IrUacGZaDYQMM(%;+*Vdpd` z9*AR6eS?IT7e5_<47)U}ivoSH8~@LmD4>!kK&?bT)mi%9%k}_Yph=32jdnjma(+o% zt(hT=P8n&@WIPp$3=qav#GR^Ach}&c2;UTL>&~*ag1EcZLsV zBbD5lL(QccQJRia$uCMou0ZtfKyA@aHA<_K7paIOtTsk-3tFU37!tdyq0t@0WlLH< zHNrO9T@6ceYcF=v!iBIGebt`M0Zt9HMMBKYo|5$0o#ST2?j&COA?Fl8PJ#c8oQiJx zx;Z@vF9y!eE5Lc(J~+sY3YAdObhIP4D!hZ1cVa6^ob%THymHBZpEz*I&n4w5>F1Jq zmGkG)mE^e63H9hxa0S0|NtNYsH+K<4b2k{p-2h&#Cvc({s5AWBd8OnUTjPeFpAUqd zA1ONaLWu9qg;|Fba@?MEI8%;Q%t*fjAEk%mqrbQC5kXXmn}_gDca4R2Sh7NxegNF| zd>FIf(s0$_n$3 zd75DS?ytpCUJN*5jTiqFb;bdN#4o10;Q^@Qrx3#42tZ_{wbDR9Ba?=(SHjYaxMmf3 zESP*rSi$)X_0F*71=%$H+!^>JWfoF+q$zng`wK9u z9fg?-hSJ8uzQ7D|JxIxXNEmilNQz_L{ur-C@Cv841+N?QF}Qc6Qp;=vJ8{=hlkxzKr+6T|QePQ}^B zF30LP-ozEK^`%Xs+=<1eo;E6m2Kaqdm5L=otCl&TD(XQSPpbmHs%a3fs=eK@7sNpN zAm{WWu;$t^qD>=un^JQM%+!b*!;(IXuN@=$#M&`RZtWNe>C~$H&=@gw0O^{zlSb!X z1L@?FTY;U##=$AzM|~BAg;bomekm`c6eO-r;RVwH^U0DP&6;4vjx*otakE}T<|-`_ z)g@)&aIB4cf*$WD{8}!BM{;Y&==)G9y!s+wydD};tf4=>+R#}mKRjjz@9n1vj5xo$hFm`3G6vWhg6ak{RfGYstzq|+qJLT+ z-i!K>JhgphQ;whASGQ@R0YS}*k&>rkXXQl)KkGvxv=K-#v2 zv5EXJlk~qdij?@j3CssWjCrh%`CzCiO^Z6J1l5XL$uFnoXe6lR#O%w*NX#dh*PNJK zGFzQ(_m081wIU2{_1t+di;La^S()RYrzY-mbB7pGCGwqNEKDnHFNLwG6bD%nmQg?SNM73KmE`x%6hm|WvBgU3q&l2U4m%)6{O z&&I7mVpO66?7Sr`Q6^1z4Tz_i5awvaP?!$A1H02~c>-EtYQdt@O1>tVtMqfNhzobT zYNFcFR7iN+f8F|PN5`*eNah|$qqyjTh1+m(qNdPIA1H9;h2~wv%+bz~ByOv}AO7=M z0v{s(&YA&sNza-g#Bwy^;gFrP4^tyzRM$6Hv|S+~zc=uZg5ApYGz&s$DS6f4AaoHv z#_Q%JO%%Kw$+@K5omofbNHeyv9_L8jLg)#LskevPr=}v`5l;Grw{fsQ0S)CIu;~-L z#i*UQ9Pn#%j@%RC)x8mji49tic$e%;eqh~iNil%UU17)Q4HwIBVtX+KK5^^f3nF{F zVMn`4bGsM^D(#_a4z?2BaA8Yn29^s&cm4uVofptBbb-`Rc%g}PD^4cwWb(e)gozJ! zMj=Xl4^yHpOC`U~R!!E1g`lBrB2a193NgD;YP-M5sR?8dKTydeK56V*Iiks5u}l)2Z`cU7fc(l6p?02y?DP9nn<|OCsL!|7}h$leNVez#T26= zu5AIg{L_C*l3O{+Go0iKJ8Ma;}ypG2rUBoJp+G>{N@6m#qYhJ!&mf%#v zC=>7tzJaP0ZnVD=b*ji~&r4|LV~EZW)5)uTl|)b$71T5h4Nh1pgi~~n7Z}Ii4vWK5 zR+XexF?ll40#VT77ua6pU57H-==c3f?!{&Y?*QT)Shp&i`M6nGFZO#Ca#Llcdkvuc z@7Kjs*nxtxi*QhL`ZGtHdv)pK?(7T!%+iFz@e3s=38k2cIJ7h1?wX)p)!&vOc@i0Eq!^ zY%I{v%i@5~Ui9Nbihg{gqN{xH2FbU8Md5Ps5QL{egWq!($0tF^FM1*{TF%mKZeLiUnN*u*^=?L!tb-<5?Arl6bkT_5wE`UT zGbMnkp}2?G{TD--@04ix^Yj)tMbbm-r7n}_lJ=tFKXlb@je;$FY01{Bd zFxa*^%$87%5ei%IP(H+6;96T3s2B~NQ^OM1IqT2U4+91AMd8f5&04ptQr8pbE@E{G z@i?lTJ<#~i41G#))+nP~&0y%N$<39_=h^|q79Q>=^Q3EU>NKsAaoEe7dk*n_kC|k_ zG@1yt1tp+JLfVRhbT`cMEXi7Q;dDx4$Cej{+m~v$A+C|emVZr|z82Tj?+zFz@b`{u zxMGe}-VdU-TTbBLq>)NknC1&4ACqWbJ_?{6aYJY2$2gIEi_hj+i_zLZ{+c>joxnP> zel|r9P((n$2&n1-tVQc>6X8)He1~Qfx92h5wv=e@xSFKsehaR4jDPc;tPo8MGxME! z_d1AT?9}h-EXzuIde&G&%RqTKNhQa^Nvhg(KMwDT?whZM-j1rKuOT{_TU0Lx1a|oj zC#P|8nz3d)l_J6hUyp@zcRMBCBH~ur8HX0nsYHKgpM`D`2Qqgz0=%cQ509!X86obA zW<74aEfd78x=4@1!cAg5LhqstU2$r|64I9EoN_AztnNB!CRFY{H~bCmpVQLrhS}9u*`mP`)UjX2Y|qvA_Vu@5PTZO z?~3^ntBpPZEC(%&cZhlhD_9nc_XQa5RJc+te+I}8OlJ8E%yQWDpMw9xI1FTWF!LM< z_cuEFGJ~}hd5a(1f;lxa>muEYP7WJl@WolJ8#UMG;fBOSR&4|KEaIIQUIw_U6M#=q z`NotuBPKHG^n&%^vvM)f{k+_q_p?i3-8V5^*zyYL* zce8=RaQx4B8_pv#_6lV+G~y!XfvS?*=9gyZTWFVhJ+WOxfVale)UU{QI)O9#eI}LZ z*y7JEa!NF3Vi@H*;J{wUpm5VvAn@@%5O)O)OVQnse2lunzXNcKpVIb)x&;Px$p!FR)%_I*@7%lnn(`E;W4`hmq&=xEH{Hs<`I!bVR#b zcsy=czrH2{D`;^T`@2N=l|-Y^UmU5(r?tBYr*S1EBF^egTh8h}GZD=JqLU_~IR>IR zLlAXoi0-iHqB|9bYW&NPaAw4qo@Yk#>qA05Ss#Kow>~7v>p~shW_#e@mbaujz71ZZUuc^ zW&v(P0p?l?a2o*TnE(p`Fh7BI`I_)6i4>z=7-@gijoYZ2<#^F5i!H5kEtlg0QI3X0 zNGr%4kq(#GTY(llcQh29xyNbo+{oso{qAZ4MHH#c@%hD%o#8t(*+H*mVKI`W`~ zd{IQR9D8>JhiEr4!WYxMeG%=Le> zS^tZT`d>Vx{_g?lx0ppfE!4n9xZ6-B%Ob#hazZaIeGN;-QjoF4LPn=f#u6suR+Ee+ z1{q6+kg*hG+{Ue}krCG`a9O02J1Jp4F`*Mzz)WtofGv;AfZ83Ln=E8HFVXZ~u80`g zCCNR--a7Y2SmP$1kHf$LHxBE5ToKWAKd#UkWVxk5?lAfBKJeq6obYdjUrGE0C%iAh znl8DO&x8e%6*>}(3&!@x?1;8>c#`eV-o@C*3@PCKk!iyIBuuys3$fAyv4|lq7y{9& zGvg{|#>EL^cw1!*Z>xqhO|Mq|doAU^hq1$~%#Sy_iS9=u^ydjCz9-@K)CQ|Cquj6A zX=l=K{f|pAy&r}}7B(sQ11Yu=Eewn-Y*O^=V5Iu3&AjlkaFlBa3G9ojz@kM4Tv~ws1V|?fCXUm6f28P!FAF9tGYd zRqzL&PCR`h-RmqhM+$J78V7EFM_aFeSZRmf*XXa zBLwQ1MEOKqjE9rBQs^04$^HEI5M?jxLrk}>xBBsjgWu=Cbn-5K2mlD>`;PL=2#Zbn z84L?elcoHfuEK_9j+y5aQS&&j+&rgLDa?1auXAI|mjY5!qoZw|+o{dQu-uV=(dFe> z6m{bCTA}r%*hpO?)(1-FOfv^Kdi8)oJs|ckG)&(UiYMq(X(pGvGL%!BrOtk=s`HP! zAl*?+dkV&!Q<4#_VuK083vjKCY{QEDS`!voq`q>_;y=r$pg zz*j*$8#f?&O$b(Y{s6P`E4V7yzF2AuOoYJFx>$0RPlwwdb_=F=b9Zc_?#L`l@;M3O z!Z{~GqO@?%jgUAioU0-<^a}wmQ7f1hK9bmk)L{lLj*u83WB@a8NrWbKIP=rxI~ptU zGrVTd0&b^(XU%{a@+}nboHbwp1#C0}{zJZx0ybH3+(`k?TLbQ*fETO**yVUp3%E&i zkP4z&Z;D9eFT)UXD}~-HgkkM!=FJgJ;$59^Q7h+{|wkBpGm}~- zmE750spM%tMafR3Sff*bFD29xU@$t$@9?YBO5W-;=r5iI1#r_!{`TW3Vau=>Xpa_y zjgFpNRFWUbHu|y;NV(%F-?V-LDS8-4fJiz>FuPiSP^JXqW+(yU)L~-T2Q?Ts!EjEh z2IJCU&daV5FatxWahuev9f2B;NzFqeQR6kKd3Yphd?q#PMxds~q-OmH)c8$m9vO+6 zfJx1xBT-XpQuEjd)C5gx9v^|4kV(xGBT*AJsd;iFY9b~zPwCX0uv23&g(tf~%AH_p zPS~k2TEU-vT7VEWC+yT1ZBq062-NsZYF-$Dny^XDiz89vGO2lKBx-6*YBrBRO~|C?PXZCOlqnlP!lq#d1C}>940k=BT?frsp%hy8m~#s zzzEd%O=`A}Kuyr3=FO3)iI~*v7>OFENzGe2H77@yr@Yy>rQAuT=A@k(qZI<#cLWGg zb8>{yFOuDXe4Uu)Tl*o z&$Rw((bt3bH^rJBN=Bsl>Fc2sQThgp!D4OQdnX2`9!{}TRydr>A5N)lk7gzMR<&=@ ztvfuLqtQ`#E|gzXujYChCHhwJ?IB0eZMZz_f(`ftiGUF66!m^(VfFr%6!wA=@#T#1m)317hFZlRF&sPZ$ef$zDf#OZjtK{gA`dNEl&C+QD7Y$0{h7TUm`KeSzPow8vDv`xW&8m>QW*Iq( z?)%BvuzbbJ0(mHqThmjm+c-E#NvcNTs*(1h4ymfA;E3<`H2UvrbgvLYKo!9-F=ZF( zw;4kHW13KZ0}1t;A=JN~Fb#QD61bT=ky9!8|Kt_+D-rXZ<$v-L`&A=^k|+tc%j5k9 zVP0RKUtdp26#2u6iu}>U*7fzSj`j7lFp#f{6t0WV_xecTdaOKE-Aq&hm(DUq;@cZ3 zk@OXbs+LvA8wuNyd?iv*%dbT$)$&#ptuNsjYPI=`RJ!m*YU=4!=F9P!XPlXihRn+5 z%iV?3INI!I_}0oL`Oj0a$qvWV&r|K^w~x!em6qR5H#+3Uv$=6n=I$oGhj_kJ_&f!` zBm-6~P~X?0s2v6pH=`Y1^kAp$cB#LiW86R`v$Qdtc|DoVyfY@9SwZgm=+{U7&ywk% z_{x2eO6G}lI&&BOZl&LQ6nm0>i^;u;etqZKmH%^jl89`zd@S{ca=o1N2=@-$V49Prpa$ zcO(6}>31*vs+8Xx!qG*)x%8Vyzt<_vDx{;|Hu^0hxMlRa4>Zv49{PO*d<1(f{T?EB z55X;@?^^oaOTTByy^?;{QT&tiT|mE$^n0IvFVSxW{jP6G|71$JpK7V%OlMxB-!}Ta zO1~}i+e*LJov6owuY}l65I3~o|BWq;j?7Ih)PXZMw`B8~TUxS*rObks?1xh3)|Tu? zQs%an>=7x`-IBdo$}DWjek^5fZ^@Q3ceGHC%-q?MJt}4HYRMiW{%Fa5B4rk}WIvTM zi(9hyNtt`t-NWuBE!pEzW@$_Igp^sjO$Inx4m-4qu@{`%t+a(FiCLSwtzrp2${J1XS zzAEmrR@%?6nv7iDP55?4@~uJxKr1}CRw@5Gc?EU%c~MJu-<~kEKJ3OZ*P994*ZDei znb!mIix=YWlNSd0@P*a*E@lQ%-qna7q)U+>yX-xBzv|FH#EiNtik_ zk?#TWw-csHi9P7h?rE(y2nvcrAj?De`8ZUOdeEK_zI6_FZH-%I|c`9JT-30bXSDUqA?jMCWBg_ zfr6pS0ky-o>UcA!E6S$PxH@oZF7J;t;5HYUZGQw_!nDg$p#3P&dnWur6aHWXUV`6k zfjUrphd0yd*R1-Z9Ra8^-P3VLXgQB-u^lE%o5gV|VxLhdka_U1FaPkErQagVymwPk-Q#ZXU1RJYJ&|DxThL@IOcLZf!AG z*x;`T*3_yMgjORH_26m*!G)*&TxgZ5T*a-al3T$`5V&!dSyc+J__c^=4wXe^NlZ2f z>YP~e5iz~GMykxJi%jq(YN#g=B)_4u);^xl6%eX&wDh=b?ux_})zYztZLQr%0YihVr{`K)}i>Xp^ zi+@J^x1e)p1Rk@9ZZw#%9zxPFKemTNjw*{0gJ?NY$9l!D^u{mJU>l`m)Wn9YScN$y z6pt{9o{bQ-8y%z93=T$brwL2!MI*(ml0W)i$c9LsAV|2hQh z0nwg$k>`29w!3H@=aSNGPiG~~-H>j3ChO#vzOV4BrH>ML*7#=_jrZ|rkxootrR@;~ z>~hZO?+B0N-$PoOmutnm%s6_d80eD5Xl`f)!f5kEP`j|n!}`aJiLZ0@oio{!wq!?{ zcqsUg`vtvF`)A_nKPRpYHe8>WxCRVdpPIM^&WY<88?NIfuI&b{6DF?h=fw4#4cBKp z7ev{Nazx2Jn{}uH-$`>G)gpw1GiG?Kn`~H5CEVI`oaX)uXALO0xBj9S2cOGIG}htC zU%NkZe~Z#6`vn;p5=X_S3E(ys-P z1fPFCizR@H@A7&n|Be8^e-x3a7GB8aU(DiONBi-JHiDc2N}?NXc`_&!vWr-(Kax=lrX@_`Dpsss`VE!K(uJ)?HO=)jm?a%Jp-p=)TJR zb1A=i6zdmxXp|&yR0NLiewmDtgy#sKmeG8`oDnz$#iMWU-2;073qoZ{nNmGK}?+zve#a9NnGRRS@Yr#Tb+x4Ry z^sSlVsC_Bxklc^wwq+guI>*adM_^yj@k-WFTj!XW1mFKNrj6f1?0-kdv0Eav8vHf{xNVWP74`J3 zL^^&;jNR5d3eSU4F;)4s2vjh!_g?aDjR=iQgrfoCgLQhEmGp|0Qv2_CerRgSbOthW zT|bdpf9LK<_Tji&+r^ok#EAIU7_8oi#4d&n@E%FNE>M0W!XXe@+Iu9db6a~PiGuU+ zy%8x~7r;l!t*S?tz9xw+q{+A-Fvq8L=s7;hmI~O}uTtho@e*~&tX0ELp>%3GlX$N5 zZ6f@2>vN@>@mxuXv{$TwHzM%mNV}r#q}?QqEpNd(YfcjOy@$MA>7sJFJsE9F?Sge| zx-zq-rBYC{mG%pi+yzqkx@bkdE=uz>FXt)I+@y;};|=_5Ff`C8(bD7AXt()p_qr&q zGtqbsoq*N=O?^oUkBais*5Unc`?P9qnk3J5k^nueA1^<3r6sX92L~%^xjV}5>O=aw zdSENeY(k*+3|~CAzow}hH#zNRdOe4CHb>jEtM9)sXnV!P!ME1O`(ERPwGiK5Q*e2$ zq3v3y01WDYBrVXr0%^kB$l@ z4_>QLyH&ID7isPB^Y{4iGY1ykP|K4qbafOg+E%G%D(xwnmr_!0K~#H8W9aMP61u;Z@Ko^ik0g zpv-Hf%#Lr92m2Fs4-O7ihtM|GMjK%?eT*2l_mggq+p~p9oy>SExb#RYgqe6UmIdY8 zqD6O&n_L6|SD~{>>lx66)ZSXfHk!CgbxV{L;XYC?-(3^?28k$-)aNVB46QWdUSi?y z8Vb__?Y?TxCy7g(6?tJ)Y^5xWR@>glqLr%9A#r`waNZErUV;+s zL>d+9#v~q3mUv(pc~trCFr!L8+jLR$C81oTq~=PLSCj6#p$Q6O7*LJ%vj}uk(&ZAH z^Mq+)f97OZRfKWtnKASX=& z?RP~Ru2>+I{}I>YhnpLEIFLGT{>u~|_D=mWRr$W7@MVhpM8p#AE4MNOy0F^&J+;`~ zQAO_0cHAP-)ICYOWUJyC+i2|>+c|DO8t?p5;(*4o{5-ZAH znWO=*W|dn%URzGB`#=av>ZTq}!zmw5mk+0>zL{muo7wW4*{M5(XGgZIx%LM5CB@!= z<|}KiqiGI5n$~<}&2>zKAJcv1V`(aMMP437+1ubi>1R>tXHVc`1)>IY{Gfuk+>$7( zSEdZLWV!hhB+68WY9CA~xxo}0{Ux9b;(nlm&Yd6`i)6}2XaaF|UB)^rF-_AA; zCeO16YT$*pvxY*@0j+Xf7CJilIjWyEVnDk>FRKD0GSvLuKo3#Ecvi}PX|Tk zrAq0Z7#qb6`v6;Ntkv99x81X5usWhl_eEOLp7PQtssfmoMvWXEwB_)ik%KkygOqrg zk$9PrIP)d6UPQ$$YVw{jyg!g;J0EmDEYz&8N_t5$|0%{$Lbf*mY5cJkT^~s13Dfzc z>3piCSG(Zuu{8RImLaX4^Fa3R1%G-E@h)?JbQ$ai?+xhp?#ZbY%A!;zIs?yjwenzl zU2KzIDA;9hpwXd1UnaR!KoEi+@=ILu2C9s6)?J1%<3X~{R_CnB{E>9q$7x5j`K#$( zYN31SSJJ(7DBVk==j5vY0SSRZn6bv{@q)L)rdMOHbChy8ZqrMN2jI|QpvX7*2Z&{= z^+JmT3Gl>E!Y5&Mf)j;CC%;;A*0|2!IymV3+L^(9X9l;jQ1Jk-)JUlKxdTJ^FX;aj zw_!!rgJFDi(!9*@VA3TNSyb}(M$5gJ0~9>!!S;F|wAe>0)$-~ncDh&5WUQx85=RIfGtYvF$=X;FKR1P>>1q<2059*#EDV}C0DXnpR%Mh788 z7$sU~NyNFVPhwB+pDLGJIE!Y{RZ%7PPSzps%nAXI{N$bj3gDR4uVS0KBCn3}vlvVr z`FoOT?(qp?M^BwnQPkX1QRgf^jCq8SCq)r}0ADrtZWdzLqe<*2-@?=QH%gxNjgp>U zZX->&8zstY6co>YLtcMjMSdnKR{sR@uRF6X21x_#q9AN9tc)@=uUeof{Tu9U{f5-> z4VrTDv+Lx_gu>bYtu6}d=x?>~F#W9*)(4QZ=)uyah&`~!xSIT!YYF>$C|*k%`=}2@ zl?A93hvSK)c0Q{#I>gQTXQR-0@BsQj5ZZWfbBQ&2JehQBI{OHrfkU8qDv6D_+qot- zveET#KudsLz^XdtKT+xAR|`9{XIB)C2}ZM8wGpbyS}l{H)$k8u#r6j!_XkPdm7Ud> z|3-ydzN+RPxzH{0*J}g{#gb53^BAbQu?8P$ zyPUB@B%``&oNUX0`WavwGSA}z4b)d$F8#!rdv=0L-jgL97OW zt$QbQ2V%*#e1lIyk-If=lmQN)*JX$-D^pSB5|crzSD((ZA?uALC=~% z&8BD)N{7_nK6?TU!L#+0uUi3MIR{|H3b^$gfC|YzZqMHkAcX_?4~kVPW@S86^g`$> z4qAz55!X#nbJvkL$`->^&J=s7G?OQV9v{_k_AA=sXmtjv4KQjCG?7q+s)$g<>&R-- z6Li-ua*Oj}<8e%o{DacblBKYbQ86 z`!iC>qX0K95@}d*rb~EnG6am&O(M>Y(h>5QpCZCgNv+A*nF z6lofoWDPZ$PE`C18ljG|kB$66ODUIC8JCr`<8sztQ(4DpImhXw!wmM&tt64$L#;!f z*>?~|q^eotS=6fw7kc-d+n`Hkjecv$ZiKGWu6pN3kwf^HO9H_(u6M;IM5OBHKO|55 z9Dp%+B*j=k2oWxG0x z9P>`D&q?_%~B{`KI`JJYy3zL%b6UbC8_ZVZh9d2zzL`UNl>(0wb5!Hh9$6{TAP$ z#dks#B>hOC(#|=xRb^qaF*RIzCHLJV{iCw%jn>`yrWb)F*7pQ83Z!`y*8+%x&og9pp9Dy^t*Knq;p4q1BTcIw!8M2QEV@>dC2wJ~)Yp%cs>kx1 zAD9eu3{R!w6t=d)=bjmH8zO;I9@4(OLeAe{mD#OqD)}tL;(I}}4hZ%xOnO~^d*n59 zU0|@{=4>N*LSA)Kc=32OcVAT*I`JNkbfhCE8CNmwop%g7f~~mH8qJkQjtQ&N1#Nq} z`h8JQWgn+<4H+4P%Bh4Xk6qGsq1<-GVQ>4p@^i;M+Uk+k)DnBh8khHEB!JncQ+vs5&FZs<9(hIjbp+4;-7srbhfMN1`E3O}FWDSrQ z@NvE)=)GR%&m?UZ1c#g+@<*JS^4HZ@(vtmuej8sY_HFgnI?uSdAW5a~4T-3OlH_2K zgqN7kIvkI-DHv_Dh-j8FZhI-JvfL*?_F<#etY3X=Nqs$EyI;dd#FZZDtlFe!P}pVL zOlOMeCr}X#lk!Y-n*O6&&%C=;?N2!(DjB!U&(`*DGJ>mn1MgjHMe7A8mQp&(K&8OZ zX&VY{E5FipFxyJ%MP-$i%t;P2mO}$mmb>44mQ3u-X^9IwN;bC}j7H~AvM*e2%#F_8 z@mb%Cb6Jzz3oP!m`fL2WqLt`2cMsh56v1GU7ES4>H-o!pNV4e*$)90hv7c?yyJpXL|bqvVON5wa4nmHRff9i>qE8{jie&X zuQ%i#U@4$hE*%XwQ9g?@sg)rb8Y5$JSxg6KYi03et6jGq3Ea?Z&?((N&# zKVD9oHQz3*ld~H0c66)M9ibm-VzH45Wd&WNR-o&tD?lW@KFzr4j_rlGG7P5cwphk8 zJI3vUV%_jdteMZ)rtJsT@ibOt4mr?rtVKx!2b*@&&NOU?+^93 z>?n`uMGi%w{d7WyA(c(4>bFtn-|iW>J-(0+$9M2F1Xna($+&@x5gz4Tst|){qhtrr zzN{Sh9a0nYL7G{U)o|y@U_tgp; z+<<!OEv6OtoLHMF~KuGQ~HcEuKHtu)4q3eVkBwF@4p}B$etL+Sy ziWUG=#BS{LS$^`+I!)sIt$tZG!9?UTD>FumREvzG>V)^)juXqe(gawxND35?(@2JW zG-O5|d0ejp1U8s0k-_7p?8&2u;SYaKw`#e7h0PC_r6Uh4&T;vp)jt zScEvO=iNU8?AV0j$ZTa9gnR)F%H2F@>ph^qtSLDOizd(SBCW-iEB52!pX)k+JnbMw}m>>5JdK z0t2Bgw5@(67f+Wt^p%>_aS1doBKQG?6O?ZEk9e67S8oXalVqSSBKF~fSDmXgP5?9r%Wc~z6a)PSil=Zd9Jr;v>5LgxObQp zv*Bs5D0aW1w|{a6o)>R$JP}LwEeaIuZN6o}V{6n@S?IuX4r6>RiIN&aa($;qjh;Il z1=UJdy16VG?oPf)n~zSSmFJ=H*E5+~<{~NgnN3lFo<(@^9!*ao@=v7&>&-v;B|TJn z5tdX7@wIbtz7!riKiUz#VyO^A={)(=lUUA2!^C+|*Z1_%jeD?c{Cghu*;vZuPUZ#D z1H&^Z|PeZ)Gm&zkC^gvEeCd(G&!khDsdf$9_bdd0S4<&`@QRO4`2oOX-Vi)UE!a zK2{oz$eJ}N%*E%mEL9d>u+R&BRN~k33;FEE^{5)3=|32@WlPLzln#=0C0^KAmDwb+ zltYzkd;Y6#n9f7V$(+V@U4aHumNJ1+T)s-H*Facz*}E3icyNtMQk2zq)Vx z&Nn8E$UHI@xxeJYGGkWx0W2bbV*mjMAEM%;im2fD-OEGRo>aJB$?8v=IP7H8X#br} ziUNS?0i!E?(=aD!k{@C#Cz8BVg5Wh~h9zr(SXGVL)G&%r13CoLF@`J?omrF;he$tr zC#0&8xamUn@WNO`Igg8S(t%F!ifpEzdm{2M=bcrMCqt?zEhC#effLNih5nJDm}3*+ zow^9Sc2Om+T3Yy9` z1CTA%4l(;qQiSC_v_^#)HZ>nrrdJ^3sRBJ<2f%F@vHmk1xn_9)A@-3<3VE7PJ)}yl zQhcCwp5S~X*{ey|TjhLD^-Zu>A1`-(s7HFgeJ1gjoh05{j`mTBVEAiKc_B#RO3zt( zMYf&flssQTcHlrP3$nrkGeEN#Iwqn%yttyklltK3u$C2pDwx89wUoVOEq zVm?Vs z(+kMT^*EDgebF=1kc>4mKThM!BM38^yTqaQ>#J&8Fbeu>Me-d=IVQHkUKvT|0g?J|$?j_#&=WOCu3!1hr5mbDp!WN~5WWn-`jkl+mykKcYnC z#W;0aa_A27Hq!>{IKMB0ooe-G`tP>P z-cW2pXJ7_avrEa)5&;YUnxSYnx0%|t8&Na}-5oFiig;@CT%v#`t4vme*1T09lF`D2 z9E5Xoz8x`P*#(u+%Fv{L6zWKZgY2M?Bsv#J3=-)I(<(Wm3drpf z#nqj=)$Kc{$Qbk!4L}AA+|p22mfLT%D^A%wrPkK5*f^T}Y=@%S2KXZ@oWdq~F6{v0 zFRHbQ-ns{x))??Oaagr)H_*Plbkt$6iBFBX6jR`;KiHHtg*KL-ATpe(hvGtf7(yb0 zNN0VkRaJ}I7uoskbx{8elr5)Fa7+sn^0xhe7!AWf$9`5H?gtH<>{XRwKE<|s6qvRC z4>He^HMFH(Z4dL2ZG*|HvuGbW^7uWu!dia9`WX3qFmFyB5diR=j)b>k}sHg23Q-J1)i|@3{stVn=%%ZaSaUAE*PlLh^v=An2)NBzunXRs) zp|6C=W^$&r9GE`yBFg4pHrUnHkQjo4G$cYo%qWwd65@fg(2;;ggong=-&Io<%hLSv z6|97rt{BYPgP3&1Fmvus3*$_Ppc-mzwD2>d9`Q35`f{75zm7AaMRd`(2#+bvWMDJ`F5n?`22`qK7%*>U>Ws{D`Nv=Z$Ezkic*|Dks?|w` zRLL2o5HcXmG02Og9x_*I6VGJiFElI`7`32628ORPhNB8A6tHq^;g<|M`Z;-B7J&PM zd3e$rD@ut`Sf07ST9w93GdbG^z+KDeZyEOQmWm0>zms?gj_#)N9!D&FU7YGy?hA8+!#}(&if7OuKT6u#|;XuOw#?7;m=jU zMBkv?HUNCF$~ZiZDg?80#)(4q5-!aWLE`ZHs$jJ$l5lw|v}{!wglsj)ZWGXO=)yNK z_Bhe5$;2tL6>>$M30;b6hIi$tPB|q#n3CRU)2a&=A?-QcvPy=~MUqn%J=esN$Z6BC zi$k%}+{DbnH@cM(@{vJPH!1;1S4Y`?u=F;7Pu<1gpet_Iw2EF-$ynx;&q^s)I{aCa zkSq1Vsw1c+KIgm{_2o46eFf1Z`w3w{^4?`(6fA0cK#f(&lSxY^P>+R_D zddxJ3lBEQ2FLq=Nc4TjM;(GW0|CX^7Gn`{acFIP|T#g;dJtH-3DPg3*isGF0|9N!C zpOyH=I3FWG-=rxu+u|tncj<%#Ejz!woqYb}P8fsK05RY1zV_|8&E}NTyk#8-0 zAL^id(mNKjbR}RQG2IK3ud2VM`D;ft!(5n8?~bJ^TS%IbiRzY#3>S&3h9$CICG7vv zMj`{Imf@*aP(tk!T2%@gj<~(l#6BCU9`Wd8ln-XRp)!j;ruyt&{h3m^xp;3LE_*8e zGtD(ZaavAjq2EY6<0@x3uari58@G?_*4NGj9pO7)zGgK1S=;HJYR!i|@Gs`uFpC$Q zeoQoz`@{VQwt(i(^xewb)BF3dT+b3uTgJaf*cSY&G^6AUgFA!s2}nD_%cKx}Pp5sB=`|HDN@ngKyGJK) zdVRiJf1I~FjFPGQf!NbS5P7*{CfD227%X&+nfq%;D2V&_&7V4UxVy4BQj+e|bIHc{ zMl%xJb1qQorl4t=Y{opwDOnaKI?keo9nBxksar1a6ww^}J60+qE`Sv`_>d#ziROqr z;?PadfL92y@Wqc7(l9KyLB)%bv!&52`RtIRn_E=cuV?oq79I_x)W;#7jZpgQU|x9% z1_Pd?2FtVo@_VF{C#5vyC|yff+SH^NUij>*QNsw7=qX*~6s#0}EbIsux?2s-@=Dbb z5|H(aoo(FD{GF9vG1pkeIBF}Old&8wB{r2V2@Nst(enWfJJ?FfQgA%vfQ=0_-jMMu zAs;0ujq@Q@195HDkW>-%@!5bvU@20E<;@$La|#-!tiF@u)T-TcIqHKATMn((1M&_@ zHo^1-MafZAP8#&hJHEq`s#NP&ZqG=y2Zn;Q^;mjKh*bFN_A9q0)Uch|yC)(^_aSqP z?3s6P$xL-GLCEN|a)*Vct;%y=@#t-7ukHn@!=x_DYW~OuH zpTw@g{o?O>Y&r@AE>rTP?wFDE;#!d9Wxw)8I#+NWTi>K^OXcyIZ-`^NEEgwEdEeyh zHOfv5cK64A;7$zD8||CKZgAfuYxN2GFNotT_~WcwVLN0w(RXk`wU%Lgr=&3ElN;); zp0uL}tGFrQ)1Z%4sF`ryXqDXcg*c(^-IEem7a(u^Hq)!{H?thG*8HV1D0!P&AH|1r zyX}NwEn}dYoWYzYJg=llLk@3o?RRxJ8K=#~R@5nnhooqMvbJxK*6TTNxdApxjo(1( zgtvi|m|KS~!*3wz0Ae-lp8SA&1MKov$J%5)n&N}uZQ^;uK?tsv#8bS8*desIYZKsj z6QA;>XZ)bO^Av5SQdfI!t6e9D({A)dA%bgzE$hCv4j*No{0KBs>%nJzGr&f8D~> zu=(D!f6ByW?bggDb9z9oj3wEVCK)?#B4*kIB@^yVT);31v$^U*oI@KDh4Jsz8hk8O z-(F<*V9b314)H9hu&$(cBQ(UBwy%%fiDN(+#8by&z?lG}K(2HdJUrCimFC^K_BEM> z2-WZfR@{tYzbs8BZxnb2iT?l=oGqdk-nH;vy0a9&Z?HmX8d^5pJ9zrr)p9ClohwI1 zvSR*V+D}o~V_+nH4cTC~?8Kn9F~aFHTnd2_<(&62Q+M)+f5Rmad}>Jd@OmJqC!Y*e75F+sWj zeML62Rj~F3cX-G`QF`|D?tV!YDjP$I%s5fB%s8^pzbKBa99>m7HDqU_G6_^}_n;JR z$fhD_urFUh#wj=DsvAuSHnKY+&etN%h1{#wGl_2~a_RYt%D)NbXp7+qAJMUSz zkwb}6>ZW9E;ND7laC}BSKC%RH-AKZY6}c=aS8KrcYsdQQ? zq=^~g#qfG7lO_Lv{-6nb;-CsdD>GQ+(U|EPbcS=dh114h${EvI;y5ni|8nN?-FplK z1kP0%vC3&H(jxOVBEGRE?F@YJuOn})fF|yp_Unz8Rm~5%Zn>U z&rtUf?A?jFE#{3DA14#IN=PQSLdpkA35l;PLb#U(;t{I?nH&wFiWT)Zq@jBP}+9X6xXP}))kDFcd-|w#Mp4YGc^{!5g7LN(G2jpAHdm5g3qbz@2-Kf zbKK$GBjZNR1pJDcsxbwqF-}mZyG$j~fy@aRZ?ILS;*1^&Tj5ftQi<`3SC-(Fq+G{u z;;R!lcjq$H+0$TvYhTm6gXu%|wR%rDJ2yf-j>~YQWTn!fmgL|BSmEYdGfmC8j!n-c zR=H{s7oy9=_XQ11Aj3edrCV|Xk&DrSnH5|V6tSe>upSmDwu-T*ty;l38j%3?!rw1Z ze~81oE%)}QPS1|R5wOU5o-=1l?ij2qvJ{>4&#O|9d49DA_nHJaa4`#;8G9@8m!6 zb!eDxp$Sn2j2m`|7xcEi6K=Q#Q*J}Yg%<7VXE+tVXd2FpyyjG&hm5?LKyEqP)}|GP z+9XFH^l%VzT1otnwZ3!Gn9WI56`!v;Wi6M#Ks=W)BukTr`3S||b%A78^>*6W&ahy| zsxvJt%`|@U$nujVE%G(TlCKy`s|fEi%1sgJy-~HRUqNUHaEXPrv7)$QqzB2qNCF#( z2e!S?_A1a*#Vg7qO%F<1nT0iG%#nwh>KNHt)YWKcl9@$w>!Yh9oN^Nic%Ox~i+V(x z;uDiGjSIa;~E6l?vjhU!U{;l3GzGf0+Jwc{s*OkZhjT$%9&O z2Nm&%Z)U%v%Ss&0-=vW2Dal3@wQ!8EM9z?uo*-jCpf%X(IDl5#)v}`NUmnv25UOyl z=oiLu9pY7l;KexP=KXqPOsGHT9ePi0D3xFgNAE@`Bn z=buoT|E}xQ0aGa{nz2+msV3nOM zP;C~r2c~@FRkHrXebJc zoLeeX0x_E29v;=ADZV%LNv0`?6#Hxo3U)$GIu7Sd4;@Ptu9s}QF)P)|$2px4rOgt= z#lY8rpd)E@W0IK@dM4vt;jbr))|0X+!GNIMs&Y$!(3uX>irLsi+c|sTz?3FJY)^4K zHm1a$Wac%)8&eE(g=sXL9(btrU863@3D9c^8~Qd_CB_xYY_e4t6FZT%n$9sYzYGZS ztq=Gh0I2X7Wa&Omu-9^PR4N}e5?cSoK}sd~<*~?CnLvgYu)I2@@(Af@{)PQ;Fp$k8 z@F`7rO4v3-OAk>*$S)2jI~1R)aT#+~o!hmsr+t(#aLac>j8zawvy|~8CMT@z9ZTsQ z;R|skBV4oBx*?_PO6AD>uK>VHIsX-EghC)klGd?d*RYJHkK>j40;K(F7XKD*ztKzl zYB+z7VSgJ;jo7n)5Y9dm+CK>Bq;HP@^&HLcRU?D8ZWu%*E%(I*t zE$FcthK9*-vn=Nu$c`v;sZ92;4?FgUtB%#hWuY^UWJMDz`F7B%vnOd84l4Nw^9{n3 zCLK*4oS#18^m$?~>he!;2gS|b*UuR6izpFD#ANMCZDVHEDJFn_noITABN5`J9}dQm zEA3+2VHZk?Sw1=~x`lKI&G07R2E*D$&8Y{&j2g5+1ZseAno`YTvYs@FvY2 z8E6PZx^jrtoQ!{f9aI*~RhfT~uQd2EVWod!B$6!IA$ysAD3SxK7{aqgS)^5HRoK#n zX&JHZ@Ov5~@i^1|8q$CtS2cpo!W4Hc>x@zHi4f$W%^gl9)qRfe?MY5QVl{vIF*Cj( zKaz}Ibs9`h`40EQFzRa$daE>A3a(^ln7@lkz?Z z2yi)q@V!%1+;}v>zloW!L-F)!$&U_wN@u->bfZRzv}Z zYXANw)Kt+y7N3w7pBx!6`wJbID0RC3==9k9=ol?YRl~PE^_YBFQ=Y>u#Fwq7F8{{v zNZZs8@J6DwLYAuS6KL@C@qztD2CvvKTf2x`^e0dR6y3;CU<=BQo1t&i5dCHm`=6VS zbF|cuuoNeJUnW*X#%PfTzuK|uOhcH!se8MSD~aC~t+8N(=?pB!WScqrR@zKp1Yv8>~8Xk}ho$-1Ozsu$*ET3wh094BE< zFDPD3ylJHT3D5cyo^Nw9BLOt|P^B*o`X}eMI%4*fcnNqE2M!V|XET@X?q z_lGY0MBGy!6~*9ct)HD)sqNu$Sov;v5IgS245j*cdyE!3btX5Zqn4YRY0F_a8enx^JJ zsFvUAS=qdw&UDy0)n*(eMP>P%QZiR;C=ZY#3a6k&VP08(qHHWUFP9^M?2B9@km+&A zplu+dhd7LWsze3~tOM3(Q-^L!jyIp`eBxGWtUJx+jXH}ci&s0#IipMtMv|ZVVN8Nt zSb0~6i3f$>=3O(AAg=B2)y=gvOTntqg)7=J13{9WFo^G_39*bJ|Il#fjS7^_qC zzBPZLAH&$I&u`)!u9H^Ak#$YBjz3@r?xNk!$+sTM2lC&WKKmPj(gnpHfRnYV!OqNY zO2U!~2~{{7ZoV1H%T3KeVFhZbUvB0%`&ta~c`K6O!@S~{PgK4|tugW6o~pbqlgp~T zt|I1V?3bV`)mN}p;{YJqxq6-HgHbd3mpRGrGtniFC5eVK@2FPzfj`zt&?x9oB{xIbDRnTef1Ci<)6y0@%{xit}6 zn#0jZj@cOZqwN!)y6m^@D?NmU>+R%MxHK>FfBo2aZ->gVG*AEiIsJEJ4xAEDkTO7j zafSG*75-uY>*Je%3+LILpWp|>EeGvco}Yk@mBbOxe7s|?f)l;G*in}@N}!IjMvh0Y zyf}{JrnX1_hdFKN@y&A(fE7!QbrSErasjssz(H*6@(ooI8|0|BKpT6)+_8`8%N6g3 zTWGgl$d+kX4|~Dq@7~Um?Gx{G73!QYgxUp6*)qzG!b3|^v11#{f|a7nA6ioYzmU~# z1KAH53TX#{w=d7fYs)M*aZr3SP~eZ-n3~LjWY*$jI{HdXP$}t~D9s9|V75}#?oq5w zt?2HlI`_u^Db~&O#d&!{fi?Us|8eRCaqdMCtiEf;5wvy~6Qd4+CV#biK~cxE7C~}4 z^c6j&CZ>Ewb)pJ|qavo<<1{Hnagvet*CP-WC<@8hG!M+K7?4-pr=W32ZX8&v0{4@p zzx%EkPzqb}s~src>CdbkLeaOkFkAYR_Eb}cp6jqDAXF2XE#dpIt><$}k&Js7S0dn^ zJW?#C54w64(*dXN$6fi#YovPL8GP^_4Wf(6+S7WSyQP@EH52tSPv7E{dWh?Yh0FC;LQV|6Q>HvrKt71>a&n&DlU;I6Eg7d{-z zk37rtAzs4aU8&%%w3rtn9ID+2uDFFfE)`o^fOh9XhX2$o6y6XmE8|}%U@YhAR>*Du zrd%qzp;~pryRyMuIWaGsIF@1XX@UW?t`%|^suY+PaxdM>YCNjNum$RufLI1n)nZ!6 z3mLbn)iZ!GQk6t!z7w$4RJeKxn1N~)4!4>OvYHL; z%7brJ3de~CWV=)}Y5|O$3++rqZC4Amk*uN-R+7M1l3-m~ajmKm*bxf#mkUQtg=42e zyHeqwlMq&-0F0M_S}j0rC!oE#urr{H9yMy8+memE$vb!~BL`y*ldo z$M;_jO>;eE<#Gf^^mR+od=ojB)>LME0#A-Z_Ax4~_e*5tnt&b^@B0|(+c#ljcv%s= zt^N$mudjM2CfXQ&^k8af77M8PUf`b#1%cKq0z+w#kPX`#p+57?2}1Esc&JOd>J3ddjt5%FZ2gQwqe(+wJ-}^^Ud^PR=>$RQ~(1UVCxHb7tSnQ9FS;h!N(t5 z&bGyMUYR^EDiEYq#-U{#h@%;my z``(x_nhP3YefbeKipMp%ZoC4^F*b9=PD9HjIeAATv4nODDVASI^>$wg@wYWLL*G#! zS|YB0jM4(ujxO%~Xfv42!&`e6XVx%==-1WRXzSgQ7$~&m-B!jK7!q9yllSm;P)LUA zi<2Rff!~qYR0YH6pu0SZbVQ>LMiL%+ps%m~pu*5vqgxrk6s||F$;!OT1kOs`XrHG zbKAQv64w}X%a29-M)Btp$eYE06}y4*u_EM-6vM5F75i5T_H&g}`;qGWO-PTJ5?_W# zz+_z-k^>g~)7BQ6BeXsfWL>2NoKlQ?v`8-K7;mYF?D@|FJ069pZ-x)O^?&T1A;;4c zHj#qhidDGCvwT2TG1Li2&d~zgo&hA0s$|1?lE7VuT?K!Nbi#R}0Q@}53v?C5|3R8n zp6d{vIYfHPMSF9>pWPUi8N4x;KmEs3ntIk!oS-Cc5aB>~!wucKT5xg3#;bNcX^_Rr zFEg*?x5l-+H)CH__cT;6pV!?tXYglYGyp%M_ET$nTW$!=&NZ@BvHxIRZ2S>6A@~)VgcI(>DsvQ zvUA%0LxRR5Q-LLsQ#b;|j>VY}ba)jDl`kbB{Uj8uUPnqZ9=Nd}f5qEEwHG>HE)0{| zAX+0zr3tg7yoUXTBqK;@Gt93%{y;WyV$IxVQ+!xroRx=ux4^Imi_m=ufCyEjUqMd%l*=g@*jW7!y)oAMeoyY&sXP>wyhTiAzkZgv_GsA-Se zH%OE`9sIwH!+vdwH8~YEQ(31g9Aak!lh@Rlz zE6bSVRS|{3-_cmwmC;x{aXW7=k)Zp(?#7(@i`Bmj_bZIgEA)^2tAiSd_u18710!HG zR%!1x3#EM@Co*gLH`N9Q)wt@cG0}Ac`hI0(vVHUEW7P`+?Mq#M3_a1s&M+sNAMT zjd_8}Q5j0HnOIvvY~nA)lWIib2PUGtlGj_EOYV_(TybO9GDu~8&;Hu=4^q)eXKiWr z^E?FkQnxhM7qsR$(g(8jVEtvYfu|;c3p@>fRRV9 z#CY7lX+Tckey}&L76$uX-bgd2r1mqfnMzx^%V5}>8S~t>sL?M|*{;_2u_Du3JL<)& zh(2Q1w_=duAgtoA|Cby-uURQ`O*pasVet2g#NfnuLs>?zxhcpXQ!hp91V~uplPE+P z0aNzwc>=MrmTRLMViiN7V_(qma|VRvoO43@@@87@80aKPJ*%Ey=)X^H$|*P9%oO=Y z>l7_Hc!SySSmUea3;B?SL!&#sAm_a^uAqB!J&@Vn1@0g=!=*1*OZ${0Hv?mHuK{RyvdYn#`S3#h*$~{K+c7q+Zz$6*AC2MrST}()K#% zd(fhC@UJ}N0QoXlOeEW&`%^*|5iSIWJFN`Y&8d(H8*pTFRpW zQ6&#CaBo>1WYi&aA0jWMAZS5~Ll*-*{;I(kLfIy}_HwiKaM>6~$|K|LLD$(cYRIfZ zT+rCP`oCL?ty`dcG9K|-R*2zp%+>kvnOonw(~J7vV(r^B>ul>Y)UW}t2*eZ?lX3aX+kfGg959y6$94z5jd6G z9_{$wr;tha7%TQYr|k>-?TKF$342VN=w%>r=5jw@FBYRA!_?{f1I3_|i?|h5=iHn5 zX?Y6rvWmsHq36PM)wLQ&nQ$Stp6E8pyeARUaAZUE;cvs#kmryh3>~scWmCT~oZYfg z!Z&CEO&gDf1b^@BLlOitqavFQ{f4r8QJw|&f5%(tm?IrCQY_K-%ySaf-o8$UaSVLR z=NKt?e4j4^lyt+FZk_^*3<>YjJ50{K_?iaS$|A0`Zmpg95x(Xi4D=k2d!zP^47gY$ z5HW|i&WG^RkB?Z&`m&V``U%pAE`5V-DTJ_Q5q++BQ{u5f>F4t?4xUP>q7>v@DKmkR z#lp?B4K(gMzB7lJ3*DQNysi zhh#7NuD-D#@^L?Z_qU!nGIq-cs1I&k#^Sxv36^e1M+J zw%MUfXM`pfxtEzwyXNg*RN)}j+rUl}KadviWis5>nfO%dtUQpd8aA<*MnzAerU1kxDL4V@vor2qF3Uzi%7nmO{SJ_c$qy>8 z$XY6;GfK&Y!*FEMUWH8vfSGz5b+$9A-^J1})|~G;KS0i)+#sbpVmowDof|S4N|>lb z$aY8f_uaYXF)}SWN{#riaTG4ZFp+^@!dl>u7|J@x$#&Hc8I13cu?{?Qf7sDJAA;=q z17F;B`hfCVT@&!#Tg!`GCxlQ{|0z05zqkgd(^5#7t$e>Rxzn_)mAkFfz-@{=Si>5p6Jp8L?mO?C-L$#vvbp@Q zxrD&?Ar7)<3t$wxlSdQU2-)OIfHW9gvs*A`_?w|aeF_xS36+(R^nv+oIA`3D4hNPe z3Bq^@yvaPkQPqZ|t|Q9XHE}~s_OE#-HWka#0{j)NaSkSPzp9PKc(aEwa+P4X+}LB5pf4X`G~kU$(pG zs7^Gy6=tOy7?QLBugj4lMYBa~d*>w?t{2&$2eFbyP9o zVwbTAM4uC^rw)Qo8dy=~Ss9^tsnKQ@FbzyrBoX1SnixX>wO@vrDyDhf=NeBwRNv8= zHTE_-)@5SjzAzM|`)Wt^WfxJcx4(ZfE+^?yCK@;GCT2dQm`%C~A?S?1(1}pfR3C9A z8l_-~VjxapdNd;vWfSE$U%%pjydS990G9h&dR74JmpMA$oYK=T-a{|qV zll&Vm25qr;UO_1idBOwK9F2%XG7AI(6E_m2?+*y8odohSYRS4C%Du>Jp`2|5?^_Ty zYGZ2N6-)|2pyH^C(e)>>4FM+PW&wCFkTi@-D(6pAcaNhKVk0J5v9>+MBnL4|@);Ot zcDhNEKKj=oP%U(!g`guET4Ujk1@ry(KF_GhqHaB`nM>xeo0{>{`OSjfgvp&OYMnZ% z#=~KCm>We|_e3zXLyDwz4z2hnRH>`2n{&d2>eppJH3US#bKk;bPs4&F2sE+a8w5cO z76rOJt@H?HDp})<5-wbbppzzUxKQ0?w}@p16{;SwE_5LLC?=082xg8c8aZHarezO1 zGmNAmKPZ3|ze>lbtk{oZy^U$hM$#8|y^TdDyV#FmUEidw69Ef22b@gNDmNRlj~iT$ z^|H5mc{dx*&=#Tq!x1(9?LCnzfv2DhZ)bQinaDg z?>psKnWmhzBGD}jw?`RSl_{E7Sq}Z`B#;D-OWFe3wZG<_JcTBv@;XHu3pBX=ETOKH z5`Fvjo)2zG{?4~C+13E^Fq&5TZh{pjzuv;~Jk2i(@;Dlg8#sRrl%Xsjm}!5sN}(-I z3UUv7QM#EMc8k8es2tRZr6Xm>&tq!|+m==sVnZzyJO41ulGd+jJD8N0CG+B@C05l< z!LgV-|0}Jsd)evuvd84k6XGpM@aqep@?>4o7!=ACe%cb=(;Yy-mbOpxU{z&>B(00- zJYX#>P-g&^KZibM+4=^Z36%*@HD& zkp}azHpYXO0r6TTvAxkaJl%003X{Fb#^&*D%r0~R4nJpa48YULA@k787%UE+2Gc2Z z)CL!xaCx=v*{#DaL(C4YMe{1olx&WmDXbS>eSlssB&?a0EnU?JhhtD_UiVB4_%@gd zPrIwDz&DsSjK05W5YE|c+J+SrFgXW2m8LF2FFvR%`xlbtee)a`RVJiyOib|KT*x3y zp%Q`-uLQ*g=D0IA92p1K-mFQ+TXXg%TFjK#GNCX6K`66ZbE8EQu6lKagi!%hUi{!i zY5a%}i@?l`s&+9ncl>5;3s%2q0tVWCq-;_52Z(!iHoZf8XDYazuGYR8T+Sdz$+l*c z_z%~P3KHDI4I*r!upGfM(cv7#eQYq+qO8af(e^8yc!`ne&bi^G0{542MEMtIDv5W| z9nDNB*EdyK<1whuE!45MPRzk*Dh^i8sxqlRpZ;^zK=*km&n@c$mO09CSUW$6=tOv@ zx9HLK8>drllTNC|$d@968aa~9;(z@2yMVfMPYOgB#w^@{({FcdZtSh|cs5nYVKJ9H za39t^4J^p{#$OEus*dZKGf=*4d(9o<_Eh)QdiI9^T>p0M)u_KOJ?B@O3`y7F<@4z| zsJY+0IsG%-Fqx{fcD zVgs6rM>lG*uTlRuYiOqq+!vHs{5>H@`trtxZYD>Pqo46}y(`n{g?XUJRZ4sDa%JjO z_0?#AuK${&y8ZJZC+x-*lNgU|@g5jtduwD&zw93WeLo^kplF%TWXL;WvmY!!0jEpFeav)$3ci4U zvV^Jx1F)rtG>8S?TPdTI|8s3#X)~TL;7AjJ^6s&+kSQ(Ye@NaMyL#cB-GvJ`%k$t# z(2l7hgYYx=*0U)YLQR5!2YVH}^8a&B{M?t2!9NWAwX=}0mhSq}vHzp#m}lx*eEiy# zzP4pfOOdX7J2~U*y+#I8$ju^urSO1zlhQnAyXk6TAvV8 zARRWoh2jVFd;I<%JKSC>JA;KBJySd=yKQ%L9JQbqXq7|Y% z%YAeezW>)%)?X=nAzilSS^lA``2J7QT!?T9fJC~8KyW33y$Ja9vww=a06?Cfh9kH# z!Cn-6`mq4*&KDvqJR{*>05Fz`U%yR&dP+rmWjMuLDm0o4^j-H9A%v8}z2FN?@Gn~F zD%Q4NlYtW!3lT_FwZnOGz+KmU1+jtt*91JPi$ZWEgT09OpVBVZieeXE@o=6jaM$Jk zLtFsrNteBOmM^sc_1(9Wp!>e~7w{n;Lg8Mduov+Ev+JYz0m-+nyLUPG{{T@yuD|AX zT=X6*75D*#gJ4m+*%zGS8o?(v`|7v&f^DwgT-OLwVhf(Yd{pY@3#Ipkd!E1qWqgU0 zOok_VU~ZX$pBea><>5w%5A^JV9(fp6^V41W7R316Er=Pees?HlxpI#sgx-%#4B=-Q z;3nk4851+{Uf%cGaWp1%(!FwWugHC6#PXmoVGKC44LFZ0IHs(3G9Q;_zmpm7Q8!1% zd+?2GX|H!O$4gbI>YH(MfxIDy^%yuQ?3q2}R@)Hy7ePuf@AS{e=k}@}OunCUD4;C2+`- zGbv1WWlai~bf_^1byWpt=kglhC^P_0=|t+`Nhv!TX#zvb(*4cV{HGRPb>c?Dh&tBkL9w)%pb ztAbmqpyO=y)gSReQ$OOXKkEAx7d?usLbKN@3L8DzM^I(&xd#W%y{X< zYXX0~So*t~-*JtNeyj%Vth#D|+2%qdlqTkvI5xb+d9E{4mg_{X8>$Dz7CzEpS*;-G#f zOFI5ZsHwp!J%u-mtTBrZ4tN~aJw9t!Ea#~66FZLWw>4X&%iwQ1h-bD6-Du=@cl)_#*@PLmlPXa z`wY%5Oe>1wRfX>&>7Em9LfMu~MtmWYVgHw8GGNCmKjXb7D7s(LkjwJUD!kwJNUFS30hF0;XMT8!88XAu zcxO@$p9pa+T`BtMmQ&$RL;Q14#{Nt`UTe!Vh?uvS=;sHB7`;J^;Wg}uMClg~NJ$Q# z3~{4+QuNaxremU#d@vc)Kgnx>YVs!^Pm^xs$W~t?-=j9( zn3uBRTeJoX%Fk$Ff-?jrID<#|5P@eM_{sYX|8Uc@`M=@)+_MEN%m7`g#&7sEipYqG z&x-IhKWipI4}3W(P7Q9a!aLRIFsJ2Nt8~W1q1*{Rd@95Zw+DArsg`yyw+|;jY*=_5 zSPMsvpN0Bxe3BHA1$R}|&8sAzd6j&7a5o_RhKF8(PAIJ*c;JzW;K4^wEC%q8dwc@R zC5owlzQXbfAY}hML;xhBLMZnXlF$pKr#H?dX&{P-3!Zuu7R56I%H4w$2^W^&t;#wH z-NF*z-rmAwT@1(TpvlK$7LvtbrH6cVA|+YmhYz+{smR>_$p8{L;tS7ugi|4iBDh75 zhw6^_03&|Hx3|Ft9oz=hi|WW(xkF#XS|j63Fz1okee+7^=s_|zW`1nCd(+55%7StsQwmcN2pt$c*iYpKAl`}VJZt#NuCME5d zSu-|1%#Y+!17awuf0j!lxjDm-oL?cQyYEGEl1_dfBd?Q1V?N~Ip45k^b-}B3p+N0N zC{`N$0ZDF`$SC~y3I zLm@g#_;Er=*Mkj|krfithqywL!z&~{(o+HJ`1m#Grd=t6XR4QHw>+o8lA6QxWW_8o zt7ox^ll}N3jS2*26WyI<LAt>Nv= z`7cfEith%Tv}59|=kPH>OnmOS27BFMoOi>AeI_glu%$FxUd$28^RT?e%rUS=aeDS= zI+bU`F#K;ICD}j`yHE;0D$Qq60WVC@6fy-Slu%T62-3zw+W6Kq>C`>sGh^UC#lSe7 z(^d5p4ZsMz!-vkT=+GM8!GJv&cD5dNwxZ7PH6J>+qJskd8Uz0nUwHgZOUds@Ph8!r z5d3!#`gg72R~hgQaGh5v;}8zNDg5;;1GhbpJ78{Tpl-;o+XvQtKA89$2DpOcozlGv zAcwL1SV1~wS8`X?VDocsEN|OzY)I0Nkt@oNxp44?W+ul9X&7&iQmV-b3|>r%In#c= zop5&d!rAYNxnlV^A^=+=u|_EU9pFka)RNZV#xCzxy8QQ9mv<{&zKV5ux6&a3wLKhC#BtNSR)=VxT}bn}_&5#pB7Mzl z#AhOd0Km@x+>K~2iBV9Y<+!Zz^9m+wVd8QzF5RQq?4 zVsEZy_JLUm^I#_b0cipF*lL(^Jy=%zu~j0+Ule?=D!kt(jHc4~DFrMkcb}!~l+eqa zPWG%0?S2kGVL0k!Ew=9W;5bmJ8#aJaKP!b$kB~^bI~5%A$iStFv|=zTf=kTOcs33^ z>y`drwSXbp&v+p!%Y&LDB;k25a%iTOqmkqdBoUn|!iy#)dqqu97f(}e2a+byZ%xXS zO{#aDe;1kVXRHxE-ck()dUXVrWx*zzdAX+5wQY|f38yor6pb1AY`a2@S{^G7vcjaU zxS)(%-L-aAfCh_w8u_e*SRs?MidNxp0pnxEy~jsobi{#78PA3bFXbK0dn*t5@a6ft z^7rMVX?nq`g0%%`@{X%U-n_M%GXWPqzM2z+{QL>koG5V!_<$W5!}93nF5d9!%p%(wB}^lGla%+07q)_i6)S12I+E)o0gG$UK@fU72CPF)m#bB&8y}HiroBauJrfF>3bz^x>vLbB3_CBW{h|{ zT0>Vg;8@L=CM$G}m^GEgK7lt%y@Dv(L&%MEKdvwa&+x&|tFRrgx=&%l?xC6wzzSHX z7|!Pvd$B-xRvWTsG8D9(H#)Y6SFrp6d^xpj}^r{ELvXhWR(`J3R3Sbg;L22jvJtZ z4S>FQEyIRCS0 z!YqM=7tQvX@&s`ykITZ}LS?l;UA3^9Qr86djSikb1LCC>5ba`%sEHnyjm8XWiv-42Cf9|ANWiWQ@zp~zJ*n+j$_pC=r4 z=Ub2^hs{pAcXPZJham1!wr6q8Xpw;q(xN7+n3Wwsi^O*REK)0_zy|HfF8vv%z#g*= zL4*`A@~w~XxO;+o%ao85ec3{atv@Wv`ol6@V$0np>^A2%NEdK*h?_#(fks@J;X2t0 z1%n@F!2yHg+PorkuYaVKI4n+k}BtZzMjHsfdOx4x6GzW+N38~VSKu<0A# zN!Zx`orLxM-$_{C@3n#r{ohI0&~M~T|4erhHsAM7!eVdsorKleorKlcPM-Jnx|8sN zSG|PrI$lC(*Q{@#wZq%@orERcZ+$0Wt$HV6UGLNIrQZABN!ZB_hBv#C@txYi@G@_I zcM`UtTlb}hD-Wu%UNaS9trpldutc%O=Aa`AYBo?<8zv30w~e+@>XPmG}O4 z5?)~uH$cQ!w1}&{-{?-lmfksA1@3Z-_I@B_RdP#>`mIbve7iv>B z)XO^5a)jEZLoLsOTAmBFIUDK~9cl$aZP%ezWI?UC@12AlI@C&p+NndW%z|2Z-#ZDr zbf{GbwOfZ;l?AoxzIPJ#eA_z-o3igDwBw+^*NZ|;ON@6C-t>`do9LU!7wq$*q|stx z3z8_#DzV>_L}^uteHeW|WXon}x0o?o2Vjb^*_n8^eV(KuL;j#1YCncLWC*oi3-v06 zQUznYmSsDvBOE}4BZR=@eH_4q9MuCH!~m}wNF3BiyrG9WgrVLvz#KxDxAXw7Vt}^| z0ba!bNj<=87(j-B$Yw8PcA2D^$dPDk;x&zC%4-sol%Pm0MUqz9YZ7gC7*qm1SST`b zj#L^IJy?_^Pb-;%GOXxHGcipJ?H!`eM1*vCd6R1H1}4vDF9Iro#9pi+lq=OL)E@TW ztHmA)iP=zK-lb}Ngf6aoG~p=Q1w1d3NYvF{Pvndv{@%mM+Ajx?;5jcZsKnkkB;o^u z`9m^G43(w&43RrV#aPBliD@-}(jqBdc<4}$vb;X>iV*n+D9g=Pj`Ha0-}2QxS+}w> zxUe$3vXT!!$w%MvCF2W32(X1o1YID;pRXRSN@@m>kG&SN&0eTVdGmAOH#~Ur;FDhN zzgFCjdo3259R-@b>7#W|WNsk7A+TiFR(`3Rs$Cy2g9qNn^g1M)eJo_N64tx0I30k? zu)+w6PHxCglZqt^U2st~EX6G4rT>5{r$~U#wPN{oftV#6;Op$Lda(1g+XE))7Zd=N zz&`DfnbqdPF%jg$P_tz=Z~2@LyI9pXK;jfuEJt8lCSbbovZb zh-3?qY$1{@RLMeF;;KI%1xlmXKO6zA6)+>Osx}OP$1RUXc6;z|stB8AK>!;7Ws)$a~O2%=YBMlpJ7_0lDv5WpjZc&BqyoH3m@b)2I{514TN8ZB* z5y@!}(A0%rf8bFBT%UpHjy#ev`i_Um82u8G<;bJqrVEFgub?B5ZXC43l99=AQzXKH zlN`P^gdeSlLQHgdbUhwldqsz%;4>3$AUug1R6}up>ctY=pjuPSwml-MoVpjx!96Y} z6ssqlj3+(rAv_0s;0GQ)nNB1U4@yA?kkB67Ogi&s^ za%vnAx8TtP_2)V<9Ts_|OJfv$qsFdm)YxO9%Z-~MC}O?AoQ#{K@$HRE9BfSz8@nSDlQ%XKTW8@tGQXp$E>xR3QeejChfx88}YO!_-0XXOJ#ZlAO1KX;6~BX(wMDg zX(=yYov|VB9T)dA{=d)S=km18bk-}H9eMBYG>5$7ks~jbY;jehf|wUeU|KKXA%QSj zCuC2SORJDbd8EfkI@UWLB>)-8M~+M|ZNZVWZh}b;PcZS31!8m}YLAOtuh@cxS9iSv z6~G1_!7OKIHg79$*4<%pKkf(%-LQDAqU8N_4W-bAbcV07!egLY^F&g_xrq2=pqx{9eUZ03&gW5XxoPb zjOxOKep11PmG0DN^>T(tlT#{qu`0a2n#X;-j2l~v9q+q_H&mNoYGIOPF8~|k$YZ?5 zMXw+@Pzj4RXbr9VdpZ7vJ^c54d}DQZDBn1=JDI|9gSuqh8M7Q-VCU3Z-oTYP@_vb< z;g7nh@BS28)`Rz+lv0tktFf1W84byD=-?>&5$6s&u9G+2Ywmc9{zh)qR1Cb05wFk; z&}#y@>dn$>b`4ezdHJZFC>j5V4LR^TTvuw@(k1;3$Jvv0Kkyg&dB0GFIz~V8NYfNY z0UiB?itGQUxfbX_|8HYZ)v=c2ke!gbgGVY-%0&~rV0)=5rQ9>Y3$~XPn@PJ@BGA1O z!DhmHCBn0rOj9N^FN2p#DB&D;9VRtJFWb|y$jguqg`JXvV+Anc9W1%Llk!>)Nx@6( zUKG9|JIoY4rk@A~5`~n`S*S_ho#%yE)W-exf5LQy0Ve@nT0#bp2Zf?z_ z_+tM65_Oxa{U-mf{am%DW^=WOnqdX$L!J@is^pZv;9i96=%!~`iMipZUr4Pp8t z_+M0l{=9xE`twwJeomzZZp`FRefy)tE0my7$$krzqu3F{lMo`7j34u4DI`7SK_|aJ z3Q57h6q160DI`7SsrJxtcMOJOzo|XCrCK*{HJD#Cm|r3@>M0elE?F8-RjKqFXsc0} z=Ns(7g%8E-hHF$uDikZbMs=x5v9fDamsM--H7a|VJChM#y_0$UPUfk*nbmhQV274_ z69)&!lc+Yazro>c`WyM8u2tObil_{DH>YU&ocH$bV+2B96Omf*B`>Z(q=flznCjQEX!pa7zvcZWR z6PBMzMYmc@Pg2oXhBLaN<_xE6tq)p~inccBj>+I977OO$;3q!j3hNh`^Kf2w(7bNO z=@DF%zMF@AH%*#E<_hV=Tp?x)UaY{Ii?lSe;NmuHf{KM%4?hL?8Gs)=YP7bGYLFnt zZC`j+CGY175nY0y;C82%+W>I8+smy0+%mn~3h@Rdti+%X;i4yxx;4y&@IRK1p8@zO zz)vB3YPSO~k&hXOS(xx=ZWJb9KyRl3v4Y-C1+l{3PK87h*O0Q`giK3{{oE%3dDw}u zK>VhqR3@cEy&*!2 zVW(2%F=xz)t6vDJIOh`9!m#r11z*5vRnnV6ZXteia;O`t3jyZ z4CcvY>e_opKWp!o)V22~NM%Zyu2pYpnTs!!jtKo|)%y}p2hQT>B7QF8=Q@6F;^(%9 z8)5xchnlAhM}bpwj{-k4cu&jqKJDsHVB6;g-;x~PFATolQO^I&{Tzs%>i_uFn9}Kg zNJ+EtyS>LCVGt2PcDBS1iWJWoW zJg3QTqm#;H_$&2X^6TCwVzbKn(l|IHTjSvDvc5D9vSTy6+EI4zQ#npKl{=>%l_taI zdZ(d{;@?Af+Ieiw7YwIhbIa5NQRCs^OyxlIE<4CNcsqLE;<`t!8HNuO^)Pu!)3jDc>MS9Ip zq>Ib$eUR(_|9N{8_^6L7PrQG9sdcx6`T`wox-AjWiIikKGf5_yBs1G4B!742NW$zy zN_Q*yO(!!u`=9Z^Y%;UELKtI%v9Ym*!NwN&0%Q&&z&6I*H`wl9HeZ`PuU@@+b-faAW~bT(u_uYxcAeO#ZjrHRgvdBiWIRO~ zC+ZoWzC|r>m})7BhZnC5WN+7q&whAu-jHQnS0AP{HpA5iB(DuDWB%tTJs7?+>bt)g#VguDFpju*}I+cg& z)L>Na<)d0U;`iL8d^vxY@)*?nGD2pv*P3@J-wH*RRi)kvwWdRnYjvqKHY;Bmk#{C) z`3UVy)Ef0n)GJa=YLW-L;5tGj6uDlPQbMhnP-Lw&l?k ze3cO11B9zaSR|*DH;n;gEy3cCKR9l+lo|)mSQKe@44AgPPS_nz9s62jv}2f9%h>-1 z{Tuh11dskGVI4!OFO1Q*vp~dd1OOJTM1L*qHG*7xAH64E*#Ge_SbU2rK82VI6+S9SCL2ShC;wEO1 zpXMO~c9Tl6J1Tj#ews%SOZrcHz@|4w*d2C9D?lIjM4k*sKN=;qOMPkiF%RE@{}+CB zL*CdFxz>ow&`JBl6otF1h1pEfKE4q_N~V7VpR{NAc=wT94yhEW5D%~i&9cHzK2i1M z*&a&5Ry39FD7h+`jyI>}2Rs$x;)N8%)t)rIVo!ObJJa$bo(_Fu=n;=R!_(QJo-yR` zOwR|j8oesC20~ZyW%zpmmabZ~v2AQutu;2cRw7xJZv^9yLq>QXZc9@n*GS>6Nc-q61q|su|4~n@kDCTL`z?j7p!*}f=A`qp| zPhD_~ZPb__&8gkmG-}LT>FKX*qu;k#OdQ+!Q2&l5i`8SpL|cc{CzikgPYMQIgw3L>XO z=XtCh;*CYpr=VSl9dE=byg44x?=6;I($J2Q{~vt5@{v33!eZ6a2<=R@EeNjoW=ek~p)i0?i8-Q8Hxf~GVjKNeYmhrcTI=so6W zkGOSb&Y=1-$xGQ|q~H#%4*naZ$-s)h*BthWpOFr9xa=FP8D>aG)cS4G#SZ7Uap2*t zB6-Vg_`CYH67&r>2}pfvfhYY_OKPDf9dAypcc(`T`ls-G+B~N}2c|r~kQ1d#R`H$`%G%_tmrbC=boB~_!!K;zTd6;wJF-v)+M_nCG%P)B*h(kp$ zdE`}|F==@PFdWe_)TdSg!wO(HYLxRbppKb{dl>-l8UU*SaD0T#Ms}o)Uqtj&Y>`mU z)gJd%-e}uaJ9b;Gg@~iCwEUtcx~*1HA`?e+C$`tRXG;LtTswBN0NE@+HUs30)ScK; z>z=?M@>m%FNR51Cja;_U1og1b{WpUWFIpp))Wkm-l=yI<{wGr6sLy@dprncQYLatM z(*2{=q%)R*NmI3?G?Ic8?cPdqzmazmCyvl|5~o@$k$qL#PU62)=&YpeB>p3X&Zr?9 zE+t1^c4Sl!6@Q6M88yw}{&Nathl`MtodHc7EkXsnSNVV%a`9f}bTw3{Z{8H~=1q~y zI^w6fT+wfCHRCTrQZ)eJhvyDR1YTFj{&ITKc3(6xKi#PO-G{ z^QQ|vx<$6o!xtEr!Z)3PVLdRMHepx~3}+a?!^bB*V#9YM325|94;EC*HY%x=JS9sjXhj)>X`qAnV^b_3TX z6VN_%=GiaMTXo#~K;=j;B(Z7(C#N2XH@g~F>F+W&dj{f`x$o!b=p{;g*GQw8i zaQ-6(faW%*g0~FQ@-9!i)C(sAeaxqR>_CZ8=MI!EhMj2IBege^wZ(@(oJps=z9?z$ zO5kr=-r(t?Jej1EM;#iGvYyRU&0uOxDV%v-8DVodoEP|N8}22w6{tm@DkLL>Xz2^K z|Gb~Zx`sAKT3+J8na_Iq#J3Xd^H?Xq*r{B?j8(?2^+?24%9YN<6pxg2RDKJ{mU#H8 z731f-afnJ5V36o-QmSY?&*(9U*Nbo?D(Up}=W;D`3p3HVg;KmxUN$lrfHcjJClp^{JgGA2{W zr#(MXrG1&8ojV7FZG=hKl;J#Ep@8TiFeN;PSjBug!d~cbc3DMh^8G)ElZy96jVGCFNH=6|l;J(-HNYTSa!k(r?)(9pG5__69k_4*~<5``{ndzxd zJx2p;^evKisXr@j?{RMk;nH1mR&)o*Uz@ANmUK~LW)l5PNmp!35nE$PcBz0%ao2g6 z{SoU3p1!T~Owh*nZcit_j9U+WsjUDYo}UZ-kr4&Owh>;kX*?&G{WrMjzs-HPU(Gr5 z?q22YKKOLX&q@${Tss@vUS!E^=*y6jdxx>)Zb{k%CavMKN!yV}T6;B+e#?whyySXI z96R%HOsuv!9L~Q64hSVA%dVhTDY0Ee7F@g3WtJ6sP{)_m>P%*QC9iiNhpO85G4hUT zyG~WunJ?wlR41a#FROH0JH>3tAnHa0ERatk-0-KD7vP{wnnAJzQm; zs|)=};CNYDKw~+E#eZ12&`_D^j0njUwoEhakZkO9a)H=O%I^a8qJ(>^ouv+EuU)&O zD(-O?;1BM+7SjKs+dA4xlnPSUP~*KS;hNm?kk|5a#Io#;{kf#6X%f|=7>-`_RPbQB ziG~8SP)lD30VK$WebK%UANnTkuP)h8M`ClKa+Q9;m5X{>pQez?1%X*o0_-;<%NZz8 z%wC&Z;$XtE%D*Q@pdr*;=)+hXQGJ#O~%k}Lv<(iDHFVfb)9oGzl$ zd{PKs(RVynG7UBs;i9u=doHKe`ESg1-eRuv7E$LTraBjEbuL!xye+@Z%f4`({~aEb z;)xy{B!dTw&%=OX69fK0Fre7X0F25mH7dHdNg{#JL6Ri~6E^Ei7$c@fQ>v{bz{7A4 zcm;Y5&#J}{O1PS=cDfzTb#`OiW~pmvD-2F%p(}>q!D9gZmeK!mAwvCT{#=#@@Q1Qz zOe1wI-(tt0oOHp}AQ>DkG3FQIn4>yOzfH5-!pa4bC2PtGam#X6B1dN+*O_S3S*S*o zBn_Aqjg|b4b4juoD?g*SedC2aosAXMV*Z&dQRkz@YPgugoqSe0=@P~2_(aeg6Fca! ztF*JYZ82LXdwJm6;!$ZYHE1toQp*h5MMQbBbP(<3$ugbxvV7Xh2hd(7Xje}jLG~*D z$|PetDMFY6qaaLrq+YNYEVi%7ii7edxY*lGl3L@SE@jpm(7X4uAU*Jf1ZjbX&(RJc zQLFz0CF&pYC2HF5DN%dSD%=t!pHGT{EJddLj8YGor02g4lAdM1zw{V%mVaT1`6H9W zFk*E|FrAiZQxWe21lCYPHSjaQ&N5J^utqRbEyV=jI zBEQp=jqNAYU%M&nMHM!y$OoDjmQ`Ao6rgdfLwB`vr&RcNf6uofrd7jA$HBtW4n^HE ze1PNJMjVaE%P=BO2i?wnVmf1oB-5;ADabLKyLYJ$B6K6wt{bTiJ!~WxMk<0y2aHrZ z=2p6q3LB?W3?|xiQR<#RR@QTd>9!0DNVtWQnNTU7GFR>910HJ&&4aHL3#%}ljb%KN zR*E{=w1nLH)?n+`@6|vHkaBoPVjtoPEGz<_uz(vjF$)lpjc~ zYd!IuwW+nh_Heb068@_=QBB3}tW}~rYiSO2%#%3g(I+O4NpeShT0X8#we;9YL&i?j zV{wp%%g%4WnW%&V+wq6=O8l7qjoZN6h(|%%qtykH6L+_aZNj~w$a!1jqD`z?smoK& z#9r(fK346t7P!7*R56Pxwl4NGq!xQxH+j^YoF{VL`cp@06H4i1)^}Sg% z<`%gA5=LXTwvU+dE-@ubOv%(O(xeqdVqe4^S;aa3o% zHG#P)*|;P4jd~A4^D#}u$ISU%n5lM&+YwJz4_*+RTRqfL=Ot~a^OCyM`3Y7>o~jbMqXTlT8yUe+IyF zo>+U0h3E4nShHw3QG#z}URWA?qQsgyM-$(pP0^!GmehF4Tp zEU*vLVN2>G53dyAB#2R`Pf@1@raFC!IxRE+t^;6^3E(;ax($FF0A4f!BCrz$5^yGyv`az$z2KJpg!_ zXJd23<+e4Y?(eYfUFqS~rrWPdsZ}2L?>O#MVSRn!Jt2_*do2q)?`MWADtc(k@GOoJz7`?&t*S4`IAa<)mi9Q~V>%dO!#=qo(k z`yV7;Q;X8E*|$ktdXu<4*MvZ{NlM37(Rf3mK@$$Gn=JKoR(`_}nlC0Y4s}@(9to9yRuoc(3nMGKr5oE~^XUK}#dABsDao$2RiW84#q8Y((hT9_-NIGavML6TjZZ zeJ3iqfU#fCeE`8yVP2%=^B(rIC@$6!jVsD6T0M|BFLePz_gb}+(EVJX6FNe4A!@eE z9*x|kpP$^NCUVoUDPHhn4b%L02F=9=&7FBfUr>quV?hX-q@qH6%ex~;pEq7;gbSYW z35v;Y88igW*>HI^e5v1~tuD|fbPXwjF6!4fe#5G=<|b9wXkW(+`ZYnZKF~O_*3A1*>uuuHf@60^cOg^RE^U;;?UDp z76Tf8(~;hW$T8OsP|h|ULOki_$j1$lM@C0xj*dJ!`X|_`$B?>RLoW`oT`$D{ahrkt z0jR$n)j0DsU`XG|<2*Keequ>I=*8cMyx8BI;T6ZNc2(;~j%Gls?j|K_cX&itUD$rm zn^6*{u*veq5UCI8sc%-}=n9|Ed(caaY{DtMO45dzF#tmhJ9MD$#(spd-?O-Eyv6et zXN?HN`kHhlYwH=_EWs*O?BkG^qECs(Fw)i9cKdtkcKa5oCiRy%L{qJufa|N)PQV?n z4UXF?rGARt_-gI=*f~A<1#fWNHYxQJY$Xk499`f@FKO<5p$ZcF)_tM$_brKiAqo>M z7kTjc2YvN3{w~>u;4vjbr?fm1h&(o$Z)e9(j;svP;Bj)KzAj3Au8_hR`E*nI`_h+q zMf7Yg*Rr@Ya!%rtjkttL{kw|7W2+?9#=T?=iA&LVADM>4rI3ls+&%af|4ZKZPp1&f z$J`M{0VY0jO6nyq3OOYZ#;j$Ado8dS9d-BpzX}OniAhe7^eFCEr-RPD06r2*<iS# zVaRsEHM}YJvb@~O2ISuCMMK|rYa06VXxRG&Y3R?RVeidoxW5J}@Ry{fJJnmaa#v|5 zbV$P(e9C7WSXAXvn!{%iR@38m_o!J>#Z%RFtGKAtyNr}EGN%C7#>P4@D1s7-t z(~%V#PRmiVgc40ik@rLJS2F?g{};W%Zhatr(HoJvjYWWB_T#e*QnuK8rxJhK%6QW) zPg|Af(^g5IXQkp8$1okXfnjCgEumr@@8l9tkkYU=z`g1sA0t{cbwEcZ^R{A(!t<)nCeD(mr5L2-OtvHbYRvFnN@WLA)vcoNGTUY@pNmyOhsfMShQ zscIxOqfkoe*qg*y;%nuvc@u{!UB$QVMFCIf1pr1Y-ca-MV!U8ex0h#SFh6742~}(d z{_Mh^-Chgahohe(6YMzpRE@WXY8=#pI7_D%)j7B*MSjwbr(x3gNGUCxl992Ol^Sv?xmNdD@Ej zZ*c~51%b-irNZj?sW9t2!k?)eX<(uvOUiK+ip%|wLE4HiRo2TQkfZ}=e3FjrJkV>p zL|yS$#8q2bUgwS4B>8L;(Vz#DMTxUbL(1HdaO7g6kdx)!$f+Xrhis|D=_avU{6%vy zvFk@swV8b-KCbdPyAcm(FYa+1eID$gpizx7Q#Ec$_obUtp!FYp-=Lz>jJ24s;yH#4 zROFyG>UVFqSoBU08EzSwEQyYkFn$(yq1B3wHX(Q|nTAtu7kjzkl<{q)yg!)@TT9@E z*h-kG^JSBzXv6}3Tceb+t9-$IXM3`&E9oqA@j;<7u&L$tY|=jVb}RaiT28V&`h2OR zM{JE)MC5abY-}r+uTn|La(R+Xr3Eg;c5uI)$)o6aj6c#E_zEe(GgB<)w~W zC0`1rzq zHg|!z^iH2(!bHJ@TET>g1``_Lx}F$-V+d6Lq)XkjAqFH}f&&#$>7v$2r#k*7?N~fX zI@JNR%VDMOBVm$y{!|h(hozHF=!2v)lZ}01r${lMn^i*-XXmd(rTeI{`%R5hGpLdJ zGKy#+nzVn=lrfqoBZv!N*;8dwe^yYbs11W12DW?Kbn9;=wMZ2#oY)&=II&~0mEQQd zrV?%?%!5{nR$9cZ#FB3Gl{q)>x7efLvi?XbOBj85eQnmw`x>@0IDZYyfo}_+U*A@u z-97S{~1^0cHzTX}k0tUSHVD^G8SC=A!mEI1EIVvX-KukoGX zm8W;=<^A>Y6TwROx#U3DB42EhFExdwsv16ic*<)^ps{B*O)ehr#Xf4XB7WL%tUXq; z*NukQ1+SGRhguHc_2=QmvMK5D^Il}fMOkC9<$Wx+yi{XcfOy}Vj$LD^SzhBPcQ_Y8 zYft89K8oqLB-q|5wUy#P8?NL0OPe#pXKS%w#@j2FyW0w~h{~Fy_(&X1;TL9-g+!5x z5NGcTv&mwPDM>3yxGS|s&w1@sN@H6ox(^-+<4ciFc;YKfTx@ccZ7fa}CtaS6x!gv) zDN*2gK9@_vQ)^F+z1ZPgWo4Qj*~x9rY-G{xIN^0SnegEp-XO__Ny|rU z(YG2To|)Z&K)OM7Tv?PXs-U5jXeqok5Uh1k$gSaS<81;j7Epp?uzERnbhaz<)ab5E zSLEr@UA&Una=kEF^nFY8dZC2&av|(OD3h2}qzAHzTp^CT*khNyR(`8*MGekS{1@n; z`9+Owj>u#WwN29TJ&ViHZtH94k93Vj(h8Jb-%lKilJJo%kTx!XhMHeQ5J@|=5;g{F z94?3R3B1l6nKzmcwM+f+>xEff7cq|FEoGCJC3P~?f26k|@o^CHJI57yrV7z`RR@_0 z#PiS+&A+gYL!VFc1>4jIUL`Uuj3R#6=1?N@MQPNgG?}4+Ir<@ql!Rl*A9!I@rL(b% zG-4NEx01CO&Uwbq!z27upCwoyy{FzzII(w0+QI4kvLdI;-g_2Me( z*rR0s3N+t+xrPw%+f}Ua@kEuT@G12bq`K79=aK5tQq%GoAd^}SdbPK$kUaLF*G2+G zWnqPO?1>UdCG@+m)(BGnp^&SOSNs^)k^*Edgki(aTv>{)G+89O<&!3h)lpo0qse0X zVM$4@$zuOeNy+sli{rPJt4$W?QLm-F*;3%KOl-EeJeF%smckPymQR~3MIOs*H8!$g zpJf|X5+~mHoW1%M5J*=ba|gZsSzg)6%7?u;ZG>MrSBo>N_R8K6J<%>-JgHOD018*3{S? ze4|8>?`fXgPxcStBOC0rH%r*X30wO9iG?s_@Rnd&e$QKh#WC&vbLu@W;*>0|lb|?} z6-S@m^HKy~+0-Ky(cxd`ahO;3GY!zB@L^wLC6)ZB7)HbaL*!#-;kB#^)?+-ZIB?rt zL_6_9bY%=qbva$hkgCOtJcUUo-bt$0-bn&Jeld#3D5&D2kMT}v3Zui+08b=k#S=+5 zph3pDmdXRhIv)J7>7vq<0Z-FP^oCawH-8F6J(<_oXw_{#Q{)C-p{wF!PAyeDQ#7_| zHr80FExv~O_whmSu%#cFJKF4gn>A_A*5ZYBehJY489?U0ZsR-Sb{Bgk*;L~YXV6JC zrK6vc@o1bS>s|fChmT7lHC->9b1o$2HiZkLqCT_uOsj-$i zoR>x0Xb+L`DRvAR!O7}7WH1v%GvQ0UjYQP<@Gjs7UJ_{x;0_c`GdZ;d`5g6wV7b=T z1swHnFz|stS-_3_0}Q7MMpBpr$%2ly64AUR$zn8b5%q#1G;bj{Z;{r3E^gkEVs73N zSFu}oMb}c3E_FFHL&9-y^9pr1$LYPSCz{J)b8{cFD-C}E?}c}*b-TcPx1GQlg@0kYb2Q(PJZ5LdyRv%h&-r3 zMxqx-O$UU8Ngdw!kUy&peg|5-rA0!|1+eT#=Z=)94{oGtlR0!)eNAddjhzG}GGzT8 zXvi;6xP6Cn4bC)rP$u=gXLBAm<#8j=uFszblXpIKwwv>OZ75ze48@D+x-awFws?_& zvo?Gd8>xBXcVH_1CU2nCV@7np&yo!egYwEM(T~Y?>6CE#m=HyC9KxPAi$xNB{H#~I zu71|bJy6^wK^(gTZ~tMh5_w@X%r)U(_zn(g23uc7p3+QKPe#748N)^z`ZV^T*GBUx zHZRhwPMUdC>5ac%A6Wp)1(u&4pah6Eh2{I3@#Y;LI#6nGc`uHP*9-ed0r35Bd1^EI z{kPP9A3|EomZpq+Pfb<&D>IFEqxiDwPbkKf+sF`Zi@Ne1I?zn=`PGoPk39V zH;eNFJEWS_L2t{0W|*CTISMZBsTtygMQ;s!wD`pAtJj0S(|x7`lzlbYA%%z3LUvOj zKgTJA8toLqfg0@;!i?tNxHqKK-%{kk8pB7FZB@AOE|ChhY$FNV3H7k70fO|BO zY_h}nJXxckP& zA1<<{W~07m^@f_MHdLA#ss)#r^@h4oqj?*8raCxIky3M!^P-8hYJ#Aiv&t{2hRAg|4HIW?`;Se1F87Pbgn z6X~YhQl9{uUJD!cQPtB#uzj|Ky|o`=+Z+J8vOHp8=4Y$)H6q=2Rb#RWCK6OeTFh&zDtrou5_a}`v~ zBR%7C6<{!auokzVf16L-Y&L2ff*PlI9ux0Wo2Y@wv(!f@XEiHT*uJtO7aIpo2S1PL zbU88=aHBF?QpV1fB%~uxMoG+SZb|zxW79sc{~;3_XVm5$x!wqIc(_*5uEa0*@dT89 zx$p z^m28%1en<+M2^U!(c)H|*uB3x3Xyp1 zqW$V98jnp+V>o#cN+Avq8OAdi?LSPs;>+-q9gc9~lfEQB-i*Jqo4Z*6oSDR&W;|sv zcBRjfTH#B}D}3Uijwf)#(rJ;3VbeNN!8A62B}Zf>IZmV_o)}K zmisDr3zgclLL4vn9nGj0hR6O+oW%%&ss=Q2LuwuVypBJwLXe+i@o=l?c;2{;cWUO= z+N_Sk>wMH;g|G4g@H1(ZztTUADlQwMipz#*qh&)?d)W}x*5W#fD#L1d9Yv8tRfO4` z7=hdOw-~SR97F?HuX=k(VulPCxns-9Eh>a$hM*LxubN^trGRI5+J3iCTFjoIHc7jr zxA^OTbXKTRMcYbTP04Muk!JU^Hn~aILGz`Cx*1d z4Mt*`f}|N(YPPV{%&&FY9fc=(T=`w!0Gib{i`Pye;`Qe0S6OaT)nNtMluV#$G3<9X z!j|EsunaGSWg<&Qn-~5E2*{E_0%F9(AD86SUrx(!`m_Ziown{KQsLCQbwM#`1D6N! z_D*ZX$a+Y^Vri|kQOLwIwOIIok5<9;0d=_f=EJkK+V;ng88re$b}cjz$#ab48+<2+ zgyA#UsK_&iQ-z~pWqFji(RF@G^stM`BT4M)mQND51Z5q{Iti@vQue4D;<5Re0({isa z7uvp6e$1RfG0zW*S(q1tO(SCz-h)wiNv(0Hbq`d)QU>5tz!{&s8ZgW9qR2|JSYFDD zS_7!%c~NT-)sq*s9#JduqUK_Oe`T${d_|RyZTEqBt7;uIo!%z;FO02>FSZ$~E$gdb zi-p2FeAt!B`cz8UE1lXip4WPYyF&mIjg`MqKiB&z|JDH2JCRCv<)5le`hsZEMp3%F z!AD}0)W2EUla3)3nOmh$yk_@OIp(Y{*XrJsvZ~QVRoLmnO@b^K{|f8yxL^au0{rTt zAch)_cwu0~oPiO~4~$r-M__@zcJK|>)tEonsqmJk)cMRFn$IluwLEQ}-S%R3yTsSh zWsdAa_rGWPgd=9^*m0w#@GzE-PEk6y3Ur$;o8-6y5`kiOQ`GuAPoBgAGd zOagYlN`kuAhg%8#fL~v$owik?J-qI-p%#k+MZ6FbTkS@TH`c123&@NoD|@d`k)LhG zydUeC42}^;jmK{$`dqUWtC_Xfd-{cusOA67v(5eCoO;WAIIlVOlO0D83RY*6j=RO{ zaJa>cBwWnh2e*6STp1h31Z`J6N@3ActAzsWE3gd6BQbZ1exEXv5M#lQ!MqH{IN_U4 z2}@mL#9O1aI1fEcP^;$?S$EXh#K{G*9xH0o(Vxu(aK#4UOyXHiR4-D1K&}qPd~v^6 zRO1L%{0TSKZgFX(R=ddZJh%7@Zu}qjHd_3bxHB@;By=}5h~429Ixmyjk4g3lcq@9N zR-cc*19kCcEf!3KdU^-#{gwf6008M)_)q1V#Hj;>CSExubr66G0~QHDc{*A%lNa?M zqO!G;RTH;8oNOm4p@d#jLSJ6K8OYbqbd`xH8p3Uf84$F+)Q9bkuc(kytvJSqbGE<2 zK|YR&CP>fh_l^CPb&MJVcZ-azSY%TYQ-SJjE|e!!2h|DHL7zO^I+@=colLpjVTchb zM5zif$J$;grg3;eXTPZ$2e_0HwUp>ID?1*{k9?RT57px4PN^E1!LdUuB;|p|W?Iqw zN0W@A6IOoik~0if)5=7e z5`EGtO~9HSZu*=Y8f2~s+YPBV`MFW=94)BuN30{&j<-e4l|06wr_kjEdIsZvsk~8K1 zI6waTsy_Na*%`1*AYCRnaJ5#4at!F~<#m(`;zmmRhNt_9_o(+kYgYj^1>TIa>{ZLbJ>itms455LF z|2!YK*OhPJUaN&8;Xj11f8vWD2`y+4le15KxYPcjuS(p4!RNfNr7?ERXG_OVg&Ja4 z_*lTF+?@hLWk(iV3*!R*=q3f6Qws=-02MK?gd4Xi;T%fH)jDobh4Xp|jU1Y%6;Q7h z&|Y_o0?wm=iFGznh4`9cC3^lg2`&?cDC#|pTdDVa<`Oz?Rl<8HVbbR;;j~`D>AVu| zxm5|LQNrZUS;85;gfl*KGu(Tt63(E6DO|#rZ_*5Bb-ZWu@ZNVTyk~*;{#)XGU&s4? z9^R?9!uvk(PP--E4|KdAufZ3=14=j zpMZ55e>ar+*q2suE=+x*ejf_WTA&9Gi-3Ct=QwWUIAqFkWT+e+oa2O%A)mQgB?K z8FAK{ZpK;tc%Mlaej-^Kdfi!E4u&_94}3GD3mc^P`=OxJ0 zt@JhDoPK)fbhnm%UQ1s(q1U~V%Az8d@ODD-VlpEGv zYJ^RVdyErtS)dN@XRKy>DGr;ATYdq%=8`}1;lF%kw9=KhGFlIRIy%#p_;j=;_WTYv z#xA8R^&#+|^JThH=kRsjm+eZO_o;%m0M?$)&PJMIme5SGgm^;umo(FNDgIM9qlU}y zpTb#$kuzyeOpT=DCqr4VQSDN*>I%sy|DS3{1oaL<{g|Ot&PTrXqFyCfh08E4MPrLB zjeV()d>NOOqTy0OiLH%T;(y5M1U(%}6$%ha8?{9JVjD)f%pHzj;FdJPnN9tGY63p@$_^$PQ~lc6n$ayX@2jhQ=U@NoARZ4&5oXab&4kZ}anNEO>v+zDV)}@3IeWPZ5jK z6!CoIWs<%rkiOHp^gUUpJ)yKroqimq=|^V?cBtwwBlM8@{y`}6WKrsaQ0s@G$n2uj zhj0Y;R9&8B{IrheB^A#R!gC$$>#7@KW;riE`~12g4*fq}&H+9s6mdm4UOgrCpdZUaY5iEu@@5g6 z@1}zNaj0%8vIN6!D&ULbEc-Qju1;Tre%KFhSan$Ix}Dc>9`@r#()z-D7Zd9XjkAj{ z7`bO6_X1PynVfsWfZQ8QxfdF_A4Bd%rreKl?u`R-Z#3oZu2UU;rR975VrAl9e|=&G zU-Q~DAmb)e#utam*q~1&_=S&me5K_%{#fUirF86RzlG1ZE~!(u@)WtqkF{yyQt7FA_cGf?NEabAvzf3hq$26e$=kT9xLYkND$nm&jX2;+2H>%I4Ur zW{W~ijf7!evvT*7FF3UaB<@99t+Y#NWo*u8Nll?*r}!%`z^a(ykJpPmzj_3s^^zch z;!8z*DaV&ef~b2rZ)`asi*@-e+=?9yJ=lC|xxJ;M0TI!T28lh4T(x$Yqs~&)BwH8X zE9^HVWX1i$ex~}0H7o8DaxhCc5-=z5Imt%76TXhQ)R8@v|BDM9$#_N@Md}gx1!~c^ zC~gogwd_GCL5NqdRxwCa1c{J`p3y81Wh@Upqg8pp>kXz$uy!F5BSeklgZ1(6$xB9& zZ29ZspA^drN5+;E*nw?@8QTgSnh!x6 zcKY>z-;k|gFJma=Ph=q5=~4dM$>YdMGf69TlAKAWi6o~W$umR+W6KI`gYc}<@f0Kr zOn3^0z@t_TcyzH`0kNFt=Pt3O7HVk)tEKyRfT^ecT~CVTK7Yk{71QK~c>NSgV2Q$4 zpQ1g+B_A6#0n-|M#GjDlm#Hs4o5#xf)P4Sp3ZBuxGq(iC6|FiP9r)LLf+~OcISCpz zh#)W^pNe6Fs9+{Fi1Js}VMAUP8g%EtVP@x`VMZ@MKDV%^ax~l+iDO0!{jpb?t%`aO zX^|RIj~j^~Hipf`?HX9zt}j&Ft9iw}nqS1%&w_zv^`9Ilt-|`$ORHQk?%J#LoJHFem!TwukmYejw|qR4MXSY!363MwNMR9{9+tRD44D`mvQ zs?*=a7R$Zr|$RT@lL<{cF5}e{s~%oC#N@v^auRxlTdJf znxC&@H&8CkB2+7$mLKrrRJ*Ekgqf+1WRR4XJ^4oC%O1mMe4VYUdcFjHsxbPzU%I<5 z6V6rf410zjk!+g9=CWn7whmk1w+{p#<`&?(RrC}?ufqh!-hemm&0GA(u;Dw=-?B!X z)f}Z+%^Y?ESvTkj+}$H1AJ?XKk8FKoWaOQK)EgslUnzf{vr(TWy{;mBmk@TNe{QPN z-*c_gju0&I2gefS|#K(NFUgDH}dXB-ZafAi%SmEuyI>Q-)$ZJgknF5>2bf|7WKG4KBcY) zVZ7|uGNlet(J9o0?yG~_b9U~r-=Ci#uWjz=i%1>)c)SDgmF(8!eZSbHMH%n=83>7T zX8}PvMM_6sM%`-^E=tz=#f{ud+%Y9}#!t*x>(AyvtRo26f7w)L0S-g@(Ura$|Ej!b z)Yz|Tok=ljegHMkFvF|Fi34=#gC-Vd85r)nw__`J55w~Dg~WE;Pv|v}9RadFZh}8% zZM@EpNM#tW`=pKl^-+JzPJ3*p-rl0CPqZ3cz28813<&o!LNT8`He~J>Ou6?NxsN0F z+XlU<<7oDG41kjW*l$Q%>Le&UrI#^KFb^16Pb2F=rmUQ+x|YnU`q)`NI>sT=KE)+J z6mZJ0Kjqq=)_9thFZtDViA<+YI_FBlvKH(m!y(y=W;KF&~Qr{r%D#=EwG_Pzd! z(dbmkmc0(rK+(MpDVmg0d;LgCC#G6kmfK-E?}h1%IRkFZ)Y*xuDeNzxH+@$>k+I(q z-S4pIuGIGW(S2~*ZG|Z}OuL|p8V~$@fl^tsaQ)*ME8oP8eM(c8SbG2`mHa#Lq5^nAiCj2N;#!=?2f?XUL_r!6tKVx zV#`ww1#u0rryQ`yPNCUO)Y*%ROOD}SPJ6hmFn!lMc1zeYzL)-!66h?bqz=<^+>X!a zal6zWZfq-*C)?tSLS5r~lZEmW8Ha#&&a4KwkKqU>B@s|TM#JF{I0}GctA?Y1im1?v_(QFTMPVf4YcYRy zp)`^6O+D!?J&CH*W75<;{`m6J9>WPYg)f%%bh6*N<)sKmmzPR%Pigy~h@(Y+(*7s# zMlq7z9KpRCI~7w4W#?z?>P#<+FxP3Wv0w9x2Sh4#XW45+47*hZw0tO%dd)9B4@OdJ z{HA=^isGH9*Zeej5_~fu(UaHsX-*{g+a zDhXIU3rWX(e;l89UjH2mL%)#3lzI$p=Y@m-~&wGSzrptN?LI zJB?4#0;!#lJCqDu2#SL&2XZ-6$5QYngFimCPJX(+J9bZijMUft%F;$SgyT*wKUxf# z?(WolZXNaO?zdL^C*YhacW8o10F=7(YsHoca2B}FU%?)tc;OZRWEzOkoIZ&7)#!#t zp%`CB4?D%`@?Tk9Qj&6)VwZHEs*!ta-8@!v#bfsdETkkV^OOXxTq%4P_K=5f3gq}r zcVvK@Cz14uQ%wR*K%)*ERQ`Lch)442sUAOkmqIxyKI0b)`EU3q3peXK{F5j5!lS>&^m+AFd5}9b$gK?dV*|2l z0OT$WavMX|8<0=eSNYA5yEVw|fJ_TL7rV~G-q|`E3EE7D5H$NJtfbvVcR?MeJOYY%<xs+6i`+>&zvNe+T2DOz?k_buKJc?X zYdJ5G#yc-bY57Bc;)2vt(9%<&M0*M(t%QnK;A5d@K)Fg{^(aDkzjX@n3D1l2oh=M! zpRX8!0>Myqq?lli6icyV z#TL=+#d3F#y1w7zXSaPxd#c9|{_4+skah*vFls$#W##&uRmvou=WjS81@<;h5G0s! z!p|T{dF8k~`K%PGAo4(c^yOlS1}^tk@}yErU#X{;sWArvY79b2N9@&N^s@I^Av}AN zPSvN0b>_1=RaS$1>$5u59t|@6S)Hm^gH!;Cy}b{ZTHLCR-tb!}PIU~SL?;HYf$$-x zyY=+65~Bnh9IUfBic1#pj&cEBRUgp#`Z5)Nr+1t;jgCWR$0oJEyvhA#qu=nOdH zgg?djQ-VLGhJ81_t;{g-#vDYO8gnd7V?(|S;$qIh1^z|tTLI% zZNp&65OAbFWWbu!v!WZm>^JOW56bT1vL`pTc_SOEu)!Wb)j;O*P);`KKAWrwvc{(>*s z!dn{ne0$@r{Ni0De9AkR6O=%qvOCo2(yRvhM^w4yB}?Wd%jPA^=Ortn z57k-4Gf|CgH6#kj8dptX-6-Kle6K%j$%|I;P)&v*Bd0kyZT%=>=}v1^iSV5Z(;JT% zQRFTw6edOblJdZ9btU2e`fYrM6(?V zQ;;YtoR@UZOI9!%H^miGoMS*-fjc2sxK(9gX|j-6D5jB}1rbSSVktB6E}e-)uOM?U z*9`V(L?lb+4Z$igo(#!dHA-h{8RjrLXN#D#MetrCI6H#f{bq3VN!f=9F;g%$QpkZJYZ}1MY!06JXsy< zY7q7mI{zwOvgpB_Ab!C)Gq%cZ)w;8qwlY6$uQ_e6ISohtdC`fVixQJKepv+@7%eN{ zL)xFAIUJT$_;r<2G;tH_#CXK#HSx0sbEx(BvjNK{Jk`RC$e7k#;zGW~7uSaeH;FFfu5?b_%(3{y(+NtML42!^aB3e{IL6nR%ee0PI<{mbGI z*^~eZxXKg2JBI{=6&$-SU>>v8CB*OX`uy1M2?m;ry~f4j3CcX9R*?^n7B}LBkwCyo zY<;uE{pCEefi%_X>|^8QmUqQxkJG7dA>USR%)+1TjT<~Qg4V(C1ejJ#4- z@Do$lc_Hyn4aN*^=_Nz8G~@)lWxTj5!PGVwc#NV|=8EM#4L)av$D^vTM@HeO$t6F( zqYi_qGj`T5Y4GhqG+-p%+_JJjcV`@3Ss)qgo~IY4Wttd7A(d*sFw$`^g7N*GLGREV z=Fe1Sv9s_Y1R6c*O#R@V^w_|jG>OZrzD0SsN)fb5QW0+BZ_szmMmERmo8zU;@w(>t zYHM@6iT;f{!4Gfp;kNvUv%+5}*prSdx?W7A5l3TeLtMd;Fm0}D?Hy@4wdLA$M_^c&p49|}kY zGVIUZD50EbMcz0%H776_!xF|YEod(&Dc#J+NQqK;RzUcC8L<1?@?5FD^UHg^a{}|m z(}Zi1t&4t;wS*7%bOy%v<1TI%n96w8HjAPR!W!G`^;FH)=WN;3bGD?Ns3e1cml0=E z@s9`Q#d#|^FmFDx^4BvMsgTBNp7x|OaifHO9AMLa!6sEwA3)0&hESB z$A#{1NHhk08*Y5B)=MDenk*YEBJ2M%MP#zg5D_6Rc_M;( zQ~UrCxdaipq>9Llpo2tYnl0Tts?FKZRxql~HHtl+7O}_}Vxsv6#^q>UqHxx?6=akw zT5%rD4qf6LWrn6c5mO%9>G!<}Xf`eSxyd)UwKqvdRXOMKf%SHH5eXh@C92&W%M>fWvcz zM53UxV)cz2HCx!iyMeB*q;nox4?Tez<>8>c)MnpfWls%`Q8-)sZS8?6?w?qv%ovMC z)GEKQh_31|b=5+WOZJBMT_UECmpF>(7yTA<`68mqg?{GbU9%CQ%Q~q&GxMWwjh3io zijzfUHVf7T;lv{AnFIF~Y~P?m5eEwD+e+NCa0d(vRYb=cJyH+y4XZ zu2ZY{&VN34^NRjV?)HBscfnYem*0oGGlO|&xE>8^XSg=2XShyDHL0gzYd#h<+`M!K z&ClERj^gKSX9ZnW2VSR-^pA?H9v#^?D)QRs$lg(rHKQYaqav@5{)t_E>h|&AP*2^y zhvR5nC~9_asMqU*IEsi_sqzDu=T8K+=Sa3Nsm}!Pf81$cnGY;a1~pfkT|w>8+1BRZ zxHD4fS)|VkYKPLE(bKn4`dKOU0@9z=(--RLivz)N?@Or#NMEGmU#h2Xr~DsCsTYyH zOwYecPv1f5A4;iZNPn4PodxYy^QpJXp~&oD>T;;{<51*@VCv&g>nEYe^0L$?q1G#* z$Wy`8l~C)|P^2rEx*BS|7K+RdrmlrrKMh5m4W>Q~wO$WJo)4z3hgxrhA`6148==-* zD6%M+%7t3n!;u$*srGQ|#BgLuFf}pU+7XT{3#K~4t&_r$<-ydXaO*u`JfnV3xOFmr zOb)l+8~$=b>fUhclyLZ$sVU*s`@&7-sr$mM_lLud)cxVssSG$Z+&V3M`z2dyTDbKA zKt2#|oz5xK!>td7!}ipJ;ns)3P43h~;no=dm=SJ$I2?afN<19K0oS12Uf{~uFg1L# zD4MIbr1k{TO6CXFbo_ECbud6P(1U?gPaqwi7*4GSq#IHz1Nc@=+N z;gt3G+z`O>OctN3DK?jS4WDZQ*&r`#KOD~6P;EI;62B+R2kCaujA2JWojslqvqvOP z7Rfs)d8d|q(n!8HtUmm@ivV_M027Dn08>Q%-ITmrOTKR8pC*#upyW5S@eBPt}M^6F^!6xM2Xy5cw5KR;iU>^*B`U2@D zd+HEz^_Qu=fpp6^)AHWH*l$XyeMs#MV5g@aQvNDUwF_MQDok3QYKy%a;726%*tC3~ zO;KZC<5+$PDNd&HF^*iLN5&@;q=7m36L$r+lyNQV`%Dl`K zh@J&HJ-Y_bvp}V19n*u8dujU&8`?we#rD>EQlbSe;d`kU-Ksa>n1KoW2GZ^YE?)EN z1K>sm6vqnt(2kop;{W5Pl>bpJPzez`XIj zO4!0L4O+(YNU)i)vM;dMao*tFVi3{~Lbe*=y$EmP9Dki|CQQpzf52gB3GZ+zB#Kzm zM^pLiRU+-?-M4~6aE!fKfd`@pV!0lB-J zQJJ&tWNzc}7x^&phF#*|Gx|&&&b#a~um4p>L{~27n48O) z|5231@+McLUTx%VanDPu$%IOA;g6g9fpU1b|J>ly0iHJMy%F_RjPN0ZGt7r-=Juh$ zfF?Q=NZgO7!?K)-J$vmUnTp`ZF6S#2QA%QW1gCZlupKH`p8>W*1M4@ycB)`|4X~XW z*gmePM{8hS%D#YQ)We|rZKEDX5q>9VwH3HV;$gbUHnsO=NTGFCst3a-+tL}w6m+}& z42mah)AsuS3mY(#wof&H?*s5u03QfC90jho90VO4_B|mV@%C_)I5E}}pn=lOCp4Zd z=cmZy57)`_>)~nrp5gX8)3HgzEkb=G>Vtso&UEzCfTbd#V)`^hEm)wopt&{W$LoUK ze4A-zU3_Mp{6hWMnRSva9qSmb6+$IQ>G-u!?85;6Vyvc|v3YftJH->NgGn8sl3J#d z8q5$Ln@TCG8Qf=x~DYkn!U14_BdHi}l*m-WI% z3@S{=2(_tw<0L~v?23xK&Opxj24LqS_$vZr2r)DB@O>h_yK$*UMJOs(5&G<0W{Q3d zCmz2P&DLh8*rZ+6LEm7lqXs2+Bda7eXhoBf7E*&YUGdmi@z`DV5#70*eawyAqc?J$ zH*&wu<+^zia*zc(CETYe!77%FJ%LE}OOf@XqlX%-6y0*TA!#3bxPj#EbBO&j1H`_; zEcO=5A@0xcrY5?;H-FDAaHqKPFqoczN>7PO&$HY^G|49TD0ateKHlnX_wdRFHa zBuF#~PRP@wtHAZJ^*@d14?_cp9+FJ0??m~WSwMdvet)179^_QHhsUt10kY>m&XZ0;GwG6E1eZt#yO^j4Z7mYpgjEbdVZdZDW7=0j7)0Dn&iDENleJViPMC zsVa;a`OE)n1^8Tjut9;i-BbsD{qw179nohfL1>BzVzeORYHs$z1L?{O^C}a?4l=9OZHMXK;xAu^3v}Zq7F;*xDqX&abmzY6ucr#>dCY zv%+J?OYP(FPVB)z;+b-0N@8xg$zSfVpp}%&>wHWcFIvwnAK%AMASvpBwH*O$EDqFt zALr}7EBU(ba=z~S^s{u|`P~8_KN!| z!2)8FaM%Lj5PgtMEH;SC)b2?ZT3X&5=;ls{?ahDXJEsi|dLri;`>zhMy-KoqIZr2X zZ*ZHjafWWu20NKqX*Dgi8KfO&W9FkGVb~G^CeHm+JEZPq(Jh(d?tjLg{|0HSr1$(q>uTAjxU=_x(UqpArs#oTx*Eqq_8Hc8V{_@ z11s@hcP?lBPA<0~m)nhAKY*3rwG!5ESyd)q35k;>p9n>)N~2K$cLhTVit^ZoPFBI= zz{>$mEN&*;YSvHfLCwOlP!TT+v6rjV( zRYb=_ESM^EfTaq1wczAiy}`OF2C8_ z7rA)5)(#sjmdM7@T05+u(5BIv%6Ohamu}Zo#^V&)tftxBQz^7X4LRKZPN54bq|^P6 z6xyn$6}aOR+NOqFc#Al)T@4jtf*#qShKiuRBIi^r#ZX_7^J=IB@)FspLYC_CQpWO9 zM)Go7E?1Vmn){n;xgFPX?|hoOa6R|&_1tYYa`KJbt2c7zZ{#lD$X&aUtIFZuZ9IUU zVD-D%o^Ez8U_L5pOOi#z?RK8pEg?3$3e&NVC}cS6%OBlG<&EwT?i;%19q6pj%Fg;$ z9@7_*b-vlC~_1zR1QAnH|Te9UU4`4|3~H)cd$9s;B_u!^T_lq03hi>GS@IO~B zHzAjs#L{$~^N`9+3wNU_V$p_kE0@~S}+9H6q<^ydt z0qtr|Z4Ic@?b_ytS^1kcLS9jKLo!&gS5p1jN=25q zqb@GwhzIz)bB|?I$th0non@AuwezD22gOM8&aLtkLX~C)PY?zyj$Fx~AY8rG1cB6q{oY(o|3_i>53q#{ zVxG8l1=I z(2$*C4zNoo$Nd&VdqWZndC659<99Gnp(aG^de*&g5bMV0&#h!0a&*@HjP#EuCj}&{Li_Zt2&pXe}B&Z{(}GgivRsH?*9s%^gho| zXJeKA&rxG-G~-?Vp%&K))pq134fX@{dcd>~%7-jp4`3^_H?4f% zk~++*7wN=Pb+~pHwAl+>aOgv`<$uy_2vrf>sgI5QG>6QZ#>P)|hra{IMjMZf8*{mh zs!0qxa&9>@P&2j*4IA^$JXKc@4W=?vU6>L>ggS{bVz}!(F1ik$m*RPK#^^m6ee$cJ z7_fw;$vs=co#w^ayj3lARZ8n}c-4U0;;+@Y@b!?fmLcXm>={E>q0qbHrkZL#`v)YN zY-zlaz>T<6;_KfVZZRqrThuxFBXv;y>XPCY<=jn|RR(g77wninq9kqY?z*;6cac^1 zbje_g$z~(2(DK?l0c_LV7)jKXWKnIaXUQy? z$t=lqh+bxTzLz&MPF{4=YQ_C--m~+PV2G2_UKzEwk8wjRCWRHw=Bd zEy?T{V+^)gjcqp5@0?S2>6QfJdEfu#`}vS`tLoILQ~Rk?r_MpE8TXjuqsx3v|LU-D z^en8d7vQEh%bA4Slpcm2&;K-scZ1eT8&(r@nc%{_vk5-?pgZQjG-N7+e-3O}`7m21 zWVDXiklW~PDjrSF0Yc6g+UHipX)6N#1`>CJk3xu9pgTVFK8mj#b9h=~#rT_?NPCe$ zmh*ZZYo5(x&9B^sHOEClNShX#i^LZdl9R5S%y}kk#Ui~gl{n1%+*oEPJq4+7!@S=| zuZnxDjlUYWjM4{**e$e5BU z?`b?YIzpFs%Kpjfuml+x1u3?B8dzkI@kvoqSZdpgSJ6 z8v(6)D5t%hs3Q)4m!h4L6T|FBjdXvF!4e^IrEmvMvz0i>tQfol-!hCYv&H(GyKdn` z##b`5H2jS*2di&;BXAcM4Rs&DVRLt6Go8?iD=E}>e1+aD|KwtGs8JS;JC;ITYJ4 zz7?XSa|W$ICcnC@q}%`_b%;KC0>(XmD!Fr5`7a$7Q(8_U{lmk`igPYG#1$d*U3TOU zlIffLtvGKMTQ_}1ME*6#jS3kC2Ktk0+&awY+*HHXVNN_D*|*?%L|N;OK^489I6bUo zsMyiZz!#Y}v+oY@oe^CntwsBMxOG55^F|mdDTU^^nm2+u))*TI1<# zCiH?4&==ykk~I%o5IwhFzPb7N=8k~AGxO~cZ9dv=bCgHZ-3BoF(A2aVVjqynA|qa0 z-IBEgGlsf_uA%XmDXwMgJCK`{?j#WbBF*2stV7RU^Z0R-7SK|mZa`_c(BmsAn%8h3 zM9u|fR%Tf2eS8w18AjF;@BEmSo|Z}(X61WmEUIPti0;x$25j_vtpg)$UAGp7S44E5 zqbC>o^yHCYI*ffe zL{<>5PR$AbBN4Hz+MM(Eiiq>pv>z@amRF~5p=#m`&dg@rKg(wSdp7%z+3de%v#r_e zOk4_#Mp<2l+xR^=2gmifd?>${LYZN-S0wd%ybmfHW`cZ?&r(5-_Of+1v4tP4^Z=7_ zC;4q0);N6x8Q5-^K0-F^Esw9Xoj*;ebhP~l01J1b1I$tYG}I;f9}6PuY|NkQe(zS-Q>fc`!AATsjav*JXVRC zuS0WHLT50(qe7d3dXkS<%3k4J5vufOE;Ll~SRj>fYmdWkkM;!8{zRo0DmMbCXbZ%r z`QvBn;^*p8Nq|cNRPu>HLtDUuPH&J}`3``4m*^P+|L?zq%Cl{VW(pDVy<9?OGQQZU z&14ou>MX{0S7@`CI-BvQoZ4)rwln@lh1QP5K3OTd-JX(MVkaZ!rz+9f^-vO<*z`>f zG>oG+FhmxncH3lqhGdOHcj`pdaw(TAOC5F&<68%5bC~)x;|rYH)6CY3wbW`YEm%u; z)>5mT%Xo)Vo6BsC+j)#18=}o)wi4}p#`jfd^VtB3whI_v>eLo6OLG@J>r~1fs;b=t zOG~i77NRE8j7n5!9!TwLX~}=C+SklVkMIN!OuyYFKq_$D4P(*x`z)(ldhBkwjNLL8 zRl_T7x4G?=rgz6bgEd``J{6F(C$Zn>R9X&#o(!N8I02#+V?8dfrF{!N+M-hf(r7*I zUrYCvy^!c{i}uz_2%tybt9P`L&5n(Aqf61!W8A$K7Z7r{&Rd+6wr|wvQZlkDnP{c9 z=rls>GE4&LXpYZI9wnwj0-|#`=2p7=viky=@$0Q4i6gdEvgBPgLjg&!DY1f3{Q;j7G47YbDPc4h=+6sYi(W~v(nD*OdA*k7{j z3;tm?>pgcfd-Y~k&Sp!p*+4d{WV7|zEF|D-goHfw)tgzMF5LmY(0=N?N_4dN<5WGg zHku`_#8wf8=>c_`FJ>KZde<|_1NAtdpo%+O8SIv!J=rWjG!hUU8HtGIS9%KEz8B?G z{cq}e>K~9QT3ipw@Tc`5HwHFH4|yJt^oOJeBrZMVd_ZbE2tW@?(S!98Cb}TtN*=1m zamM8#k7CpHBEa}&nN%SjkP>p{Zo-Dq@Z$!WL?I8#@u6$c3}ET^9S#UOMFom5fI+MU zmWkgf%!xytKd*FPKmbBOy}zbOKU<57qMnb+;%nW0x3xzutl7rLi&p%hzg5kI`$nZ7Lb@=BP1S_gkWM z`PMqj-N6rzf}!I%QSXpkjt}Y`PT6s?-r?FHIX4KUz~UHP5O8R-0+z%h z3bD8@k8vG`cnsFn zMyWw^v`F2exa6Dw@O<$LBa*LF;~`UrL*~ptyExJ2q^_;*LZeT&&IFVl9YraZ26Z5X zq;a5Ab%c%TTjk6tV+gZ~m>DReJL-NJ#MLzvcPziS>Des$`|YempS5q%a^2JDYH*RO z={|+8|9`3L`rNu6&o4Yf?79WIxq8Sd*r#LzCMrv^JIe)K(}O_$Q(SxL85a{?7Z%%OOahN3u&MCS(_qv6jy`Xi9w z2Tg_F-Nj{sH1jw^)_x##*hbHrbvDz|26z%he|5^G_mTbG6C*G>M4Us!jgq zmm=cTYLf-}k%-u6M39X=jM!vEka;DH*kVNVzaNl-4X|9mE_O#YJ3Rk?bvD}|nr)f2 zDtv6L3SYpgFauYG<&~x}fW?ewDw-A}Z~P1_4=%YFSfBKAomHflJo_AAc@}m-mpnLC zk1=C<^$ezEMB0i-YL&#h?fXtEngex^=-@;SgM{Ey4C!3GLza{w&@R zFvN}UmE7((wgM4I#h$8#Ua%k*=Rz#DAOPDcI97Q5_ag_?4YRm2P%)SuBXtH~PA(3R zQl${Tm^e%ovyR+Eiv;A7f4s6%>kJSMhhuflnRm@Vr0>inedj==@608Ar$zdU`J^v3 zNnbh;={s*n`c9klHI>@Z0O4>rUdkbTEgYsj-s7YX>gtA{Uid*T5laGO`C8uXA6-GN zr-*dFS?+EaB+&c6b{J_80eNxyWYE+1VAIn#AWiGQq*BMDSMO88t2feT;p-6iehy47 z7HS~v5J<&5PsoV2A`dMfjZdu!Ky}l4Le44UfKf);y&DxvcJ`USBD>%$#wg?-~$OO8h7v??t3}ccrU9c7KWfVVm7} z>Z~yqKD0FvKU=6r7gkBF-DHs&{%}cL7wCM>2=n4#ML-9<9E4zNr%5>p9Jv@0N) zYvUO7Psbd96-et6#=?z=6m0KZL{{EQix~t><}ni|Ftw4TNQdwr&jQgWfs^c znti2JBrfogxPW>y;g2q^lFSGGUOLr~N_FYy@N*Gch~KR3GOeg2JTq4scTUihQU@a9 z*+M!&RX4kL_>g}}xY3+FWQ2s;A+Z1LkWqdF!7X*D6_Aj( z!$|Rw?L%@s1I&U0(BFwmxLuDjVYC1;b>W2weGNuChG?c8YBv)N6(kCq=2!R%eFf=+ zmrK!EH4-6&CW81KKBRVN&&@2ZRj*fie6o9%=nNU>0UC6NF{)cWi~b(lG=qb;u33iu zz)mRrjRX|K!A}f!GZXM9G#;;wieADaFTO0QMqi1{VI;v|{;XbtkwA7E4e;wG_?=?N z4*+h0-Y`H14Hnr`MnZH|K!9NnOUMcs38{5uVu(|UbI79pDIPTbY9hh}_>_#lM%3)+ z%7C+oz)Sy{M*7#wGDu{(=W78ECSdXhHRWcu8hYmqlG7|ACaqUz4jNVM3XT_@Nwh3< zr}?_NA#m{5`B$UNIg~|9fdHQY5NB(5qhF8urO|lBo#uC-LS|#Bjt`mBe0|-JA7I{1 zb;hc5uMv7aEa4ECiL(*P(y8^92z;fv<>Nl_W+i%mj+=r!S;u}tT6)m@hhINOWaLe3FGVYpO5%*HY->cA;GIbf_2P?E? zOkK|S;RmRq3$Ga!*5Z}zTXn)eqjrAZ{SAyTl9rY9D1Jg z{~5-Q4AGup>a&c`cWTcvTRgsk@#90Z6-<4O@e@O|=a4EL=CQ{+Oi)D(yc@45UJ9fV zUTrPzd+ACve?gC?*9L^s;kAL$@zehJzqA2?nMxld<2}Z|TI9#4l*FGbNhJYGGF8&> zuU>roOZ*7RuD>)Z^3U-9{;!A~`B!`jOqI!NQ0s=EU#$SXr_uwA;o$zH<9p#sFHnU# zpX&kxkkzn`?pEF-ngRfIC6A_?MAJG%bbyY9gL8>m;Hzj_;DfY-FsNMew_#8%@S!sr zNQtLv_2hHK(R8f@FzQ?%hLZDqO>=$f^Na#rtm%0q|B%JY%=MxBA1nAgvNlJo-~voN znty0JW(~`$#<0x7uw0J>AFnKfj6cmK_yxx5S%iIqeUp8QeVhFO`wsgq`yTrV`ziZl z_9yITEc)wG?FFW;WQ{YV>V_GT)U*;Qe81A;cgdT{q7N}7jS^!G60FnH*&Ba>3A4=6YxNFR+KGmjlGp2-uGjm#ur@K@&~!G7nf@#%6AME+@j5xEe78a6 zGfu-g3Lz1#Yv>x7;<@M=r%MgfB}eq+y=Z=ow{Tc4Nj{IuMF+cLa79SUojHXjJQ)<_ zi$aLr6N28aO&Mg8v668)xtdq#(Wh$B>ePu!x6dV?r1J|(%^&W?lPMh;bUFI;b!G~tORg#k1BmwM1tt32vThjV2eE$K!t5|du za{yFMHUw(gCY5F-2ch1M-az~!w-o>3+IFL$?IOqa-?Jb)n^{o1QINbAM~(Pw6V;lD zWg7^kWVRly_LUeH4ZwoH5N&ZiM1lAQXo0m<)&^0+2FbiQ!W)`sOT^JC?t=K~0z;8W zgv6}}0X-UVj5grMM;xNrA9Tluu0`dB2c-CVDY~uNjK?b}cWgq0?wa^3PM`*k{>aEa zU`84BuIq)Fl<~P*je8LT8iJ*dI2^oH5Ed((CF+J!EF4greWW8o5Rw5QniU%XPyql9FXtXvm%HVq z!wyzYcYY>+Nnh?s5xkO_d>>xPv_Rxo(;+$Z9zL0y`Y!k$?6F!?*#+N&P2r}d3%&=NTx+Vi z;CrwqxvArV@4+6gHJ{nwW1XkC`OF3%>rAON--_X5ovGY>D~6AC7L7FDis56OY217( zhL3etk1*egnKI}il0g^woWUPtvqcPjvSw@PKd1lo^#5D*|GV`62Y8+TQU0cW+S=5g zh=@(S#W`Gi88`Ja#D#40=kDt37?ZShOkK~IQ(Mo}ml<T)iFJr^By-atSjyV@&I1>U)eS z+Ivhrz*x0*fT;%=tI-ZJ^$=sV+99SMX6zpAFjJ2(R;L|d>QTlX|0MnNeL&k zNs8L0gqyWCMSV;O|E>0zqCT#KAJ86G)F+g1QhP#CCoAFqp-ooQDN0z=rYP!@O8D=z zCl&Q6B|KbvN>QgO;ea+(QKu>4|EWz=)agq2e`(Vdb%qjtP@AEsGnMc|+Dt{ArG(40 zS&BMafd-kasO<_gNV}rWQJ_KQDC*M+G|1D6I#+=PnX9Pt6ljoniaK9`0X1Jy7a;rs zMO}#S3l(*d0uyPGqAtdKixss)fr-?is7n->NJ|v8Q-O)psi;d4-%>?grocp6rl`vm zm`KYN^%(^w(ld(stO671Sw&r;z(iW1sLv@dk)Bi3=M|Vp&ns#d($S@;FDNjPUQpDP z3QVMxin>aHiL^>lS1T})Rx9cn1t!uOMSW3$iS(kPzNElJdPz~&V!N+Z)OAYu@3nP` zx?TzYZ*9GzzO01*L3>$IUs1yUsJ)`78iu#5U9xrKcDEJsJ zf6e>ETJt6wYu=-<=DmVz-lsXj=d*dj=Zp|OpR4?()9twej2xfN`3%mtjp8#opT+rX z&f7Vk!}-&k&*gj`=kqyV!1+SX7jeFr^A66JaNf!JQqGrg{@gwM-Fx_Q&Y$7@SPdTE3CCT`7X|PbH0c3*ExTKbBVvn`CFX74VVCphrh%5KF;@Zp5k2R zJk5EA^LIJ#=DdgVUe4d+`~d$|ts!PVKcJX>yb}(u8?Xs4al2%ZhDWjn`l=&DA@_Y;%18ITb^GdJV?RmnwUG2rRGURRI zPe$VYzmR_F&^87rP(^`F0g|Bs6p4K0(jh2P$8ZKPqJ=w@Nx{i2ArJi!<;{@59O>AK z8X_FNb^J!V9IaBkRZ70E)YRyihE|EpabPEWQR#(R#ed&g*(gsS%Cw1+YHPR!2ZY8a z7W8GMX-M^{NRD^#3E15eQ6hDvasYewS5d>o|L5YaF8;RCZur`JOCb}6>f1`=9q|Lz zeBnr-Q;OapHNCCixj0p?Be&Q?yrBA)Qr+~HGTi3`45OvH!V%>A9M>w{MJ_o@D$;k0 zOOc9}sSz}CJuT8)*f>4XFdZ1@=@FFdJzpK2?j#+#ioss8>g{Qo5z+Y~)<6E~J9Yk2 z4m^s@J$#Kk1WmB)Q{Z&9PjR-~UDxa;x!uf2a#o}jO)uc*>_}^?;W(fj@Mnhf$3F++ zmkv~Jq;YPfVJ^@-H-hHR<)(R&gjeUQ3ASl|q;Wx{VF4sBh@iy4+q5u}@bTV}O*02K zE{ZfPf|Ny&;!pUR#up^q@jPqD)hk*; z%|5cjoYS7NXr#eUpv2Z_{bsk>AbkIju4a$fY`hyn-ZUNJ=_no#ttA6Xp>#APA$C;N z(9x@1HF~wvE$hj%IYy#Om>(uE1PRGUYcNNAuR=;?UOk=gRY#8&c!B1Op(CDgvZ>=(G*=f|W6>7N?YdNXPUf0{I^49goC`c-3yYVLd@hZHby;Fn@kN2@R z0%(JCH>si9@Ouz`a+M3<|5Stpyl~b1DK}hoV}ju}TyGbTmj%8((1@q~;>q!8zu~HU zN|mj{|0I3Osd{X_r|g2?!h)xogz6YE#IPjrRv;DYrf0p=Z1}whKRpM2uLZx?f}df- z??d>RRW4YjIl=F<;P(;DElZ@Hv~XyjY;~p4{XN}gTigp!#+qMIe}&nX%8fepu2?KasuW}ZX+ z@$Vu`?{BccY$*m~+XE6{(gT$C8?wX^sAlEQ{L zTy9!gjJnjB3iv=}&MGHx2mdAtwcf6Y{*hK1W==`Zh>=DdrOX`d$Jn2Xm+qg9NN%sT z9=ii$fidUo_wIe4N6W#T*{pMYHv4KeyA#j!i>utS!Q&VeH=R90ZQ9Gpd#a8#>Cv%T zy^X^&X|qwFMyNDe<@Q^(pz$GmuBL(5F};EV!@G1nvqqpx>p0$8CP}cgw;LC|a`Lcb zl$MaAA4w<)hmX_v0b67AL;QgKEqV$+e9)$}A}4%;h9y;QuiMi>`w8?%MT>%Wyb3x} zR$z0$M~#icnWL_bIWU8s{8EbF*Vb|$jAc~}QOwq;=vcIl#gbp4W*MVC#HdqdlsgSn zJcF)=nmw6>M|d4-_5ekmrvU8DgTv4rJxDO zOhX|ZL@T;H>M*Fwz~*gGhaAE{nG}O~nQDU?{H^68MA<8W@vA zAW_hfS&d4Ov@+sd+3<$pj+Ws)Fd)y#Gn>xI^wD%)#tZ-D1T`WL>bxv~&dW^dFyNjU z0NVw?c0s0(ri%pi>;Tv<$^z&jVH0pGXfnJ=DfQ0xnC@lz3Vpvro?Q7>Y)S6k0F?A6A6!C|g8 z9$IZYK40+PvRTisvRU~5xAcEZHv7-?Trc4t;%M9L=PGvjMT{Z%boBdKTF^xa?-JZr z&04Jy4P{k~92rm(ph-HbR;x@fqsnVc&&vfCrd53~tr-~8nm(9TS(wu03lOf=1@Wz} z)pa;6@5!{6e-~I-vyh^)oB&n?Z?4j2k%NkJ0-~C2h^?(JHiMQyWjO)zR880n%8H9~ z0@TC`dOHFJ3P$nDDjzJbVH)ZOX{h_s;<0BsdMMz8oj;ZEiE)n%s4@0eRk?w2`at-S z^5DWuYMRK`nSA@0-nc(GJB;r=vv_k4YiTW7353q2DFtgp#b7vWQ6BVB=1+K&OKT}~ zT!fZID3nIiT?&Muxx7$8!TI@1H=6P1G5&%T-Oy%80g&TB44IIR;3_l*PZkCI zO_nGymLPn^d5#-FiC%G@H-k=k#d*ODy66?>>yi=d|5&&nxHy}2-;>RLC!76QHrtrZ zj?HEvDz2b^!L|1~$Dp7}E+W@@dC zV`n6%u$QX`5TdEoB|h6+O>M^KHD}W`r}&)UYMMZ?)lKA|<;5ygV!Mm1V+RO{5QvCs z1HemkdM*&hI~d2%T5IXxj2s9)0;qDAx;-=8*7>hDL-K_o`Rl%1W*jBI7y;yrMV)5& znt(?H@~(QCh=;*w?1&V3hN@vj!nmL@+>vm@p`eHqwIK?J`w}xkritB=@R$)E)JKP? zB`b~7XDazgpa{C8QE5;dBDiF14?5seQYBar{85tSgwyqB6@yCJARPxh6 zC;P_IPFRG9nrV23kp=HmNKG`qj7r3vgu+jk5skQ+;Bq(!f0ZN((Ck-EC1BM{cvqHl zoMCnZx>T%d9+dERb{gByAT%U2Z6<_J3m{RPgN9ndO=#{RG*-kd&|uBb@nH@Q57lK! z!e^3VMF<=v0!InrC^1PXAySI+NP#Bz5E_#dBjOflh!hGI&<+X&S{^~gwo6-XqQs6a zNem*!mbAyvikiVnD6n&uh{b$84Q?8{AL2tEhA0ZKE2NO8%Cm5?Y#r@KXg%PZfyI z?W3Buj}o6dMm6m)K06DVIt8NB{&eh_2vWU)D*jEQ;&+R63=O&DR~SuymJX9}KiO5~zQg0~_840&x|tO|H?1Q> zZF5O&b7^gJS#5K9ZS&yT<{`DsLsPM9us!`^f3YK;E1-qN6dkVi;-V_t7wgDtp|&iX zs+KtMm5kRCH~LI*qmRT|c$@lLrvn-e-2_w1AqP*vUL#l_g6|o@LJ>?G!6FgN7{Ou@ zeAfsL62WdGSd#0^*gVA)3+HS_#KITDB3O#1S}?^=y)alD8vWQ^%-MlJP`Z zZkSr5-m^2Se&mI$#6pAp%#kao8?P3^gL$JG^MdV(4$a%IZQ-8>P#56yHBe zYC7REB2lPoMxLZdfWp905pYxBI8LwKRlbnN`?l}*oL;rfcholDS=)S9ZS%0&=0I(8 zP)s;I{fktwGoE|Rk)a7DCL1|`rm42U~qOGgeH}{qNVlTW)EIc6_Aq0SApa~#Weq^Cl|U5 z^?h8gjNlj&$+%1Z7+*y|6tJ7mN8+vbuB|J_r~Zwt_gb;h)_bMoqCG zyX0S{>IDy@o0oilh+YC=e{8%j9lcM=#J0+k`MFJgu!F26IVt&qt?kHGKfQP~l@ zDq}yrLya_*#2DEC3Zj5wuPB8Y={*HsjOsN_^IiI{9Y77LnN!LEkx~sQ2{-;OjT$Kj z74+YdlLEDE$O0>$4FE5nS6yhtgr@;oPn4VR{#p_>-dBaMY=(>Hop@r)z=3Z}Z(4jh z;S<$n_U8|glr==Uj3M$k43Qf+M06S=c~9@&Q}~4v?L9?3pzuph?SP^lRQS{??H~@m zbUx;ch4}>o^AmviE5!URVaAvKhfqEDkfI(|l+#}Au%aGOlvIg!L{X0_%7#0&ql$V= zQKtPuJBB56=a<_rAj0tF-qO^@PHouF_5*RY$7&*%=%kL_33z2GP4>60v%2%x8xAtT3MqS?YLun9m9Gr^CFZj?V>bb$ni!&kyqjVZJcT7lrxa zFz*QSC4lX2-Wldg!+cqoFAwu)!u;7VUlHcdh57Sg-WBFAg!xJ!ua2(@^VMO#Cd^+9 z^OwSWZJ4hM^Yvl=GSFPdUkURKVg72EZw&KIVZJ%cUkmdsVZJrYw}tt3s8k)_5#~F? zd{>z74)Z->{(6|d5&qRT4Yk~hRRgKzPQ_k&5N6R#%V=AKfg61aD@u9*ORcRk8>M4bH zRB5La^&^FMR%st09be{8#VgiSTx(3l=`a}aH%U3_E6QdFN^jaY+7U+bx?{x&R(8ou*a-i@XhFzqdo_U+!xIKz73)3urC)3p-(MI89qHLe@|*97%4^6)e#D9Y}FHjAww z0-hKt1MRPn3H$EUFM4J4h!v#LYP45_L}x0wDMrf>B8mkNGc#EJ->~>uK~yG2?r)VhJ|wv=l1jc3B=g%8K3SbgZlEyQ z^J!d@1G5HT*5tsTe6I!uDO6zcNEbBkn`E&Z>bC{P(f)$u?n?aqYGu(Q4u^VzNJKV6 zJK<7KiV*M{+DVss)J4{}p*mlx zQ@^8JqZEPIK%>#=cgjeYON=M1QGr0Lrw#V#$&pS-{RNt>H%6MyC%S}h2qXAb*h+ab z+(o_`s-ZKDv5t}Ca;O?cMoRyMF5~okiVAHfuIt-9dildx?DC*-T8giBMOPF!QeEwa zTia#9GA_p91SZBIj8U{GmHw$iTNXqB!#eu1Aand;t?a}v!?Fv12`%df*9ikO%Yqng zS|33rLCWYiGX7$nETt*{9nd#5clnq$5?8moNc%r%_ydN)XHVwoBi(Z0po~!)dn(1h z8qwDB)rfAL^iK8Y%@GdZTVqcLC2V7~rEgEI__y1rRz6WH69{d3;@?!$mrnjf9e%FE z>-$F0zb+}&^m2p@tlRHChx=S2%RD)SAHR4>CS37vCD&D^k}r!AOXe zo?IWP9#TcF7=YfgyrNcz^_-#vMESR{eQ4l8R_L4*{^2|7(=6 zDo9qHq32!-;){=&V|vk+kss4D(X~Nm?8TrnvmFf+-E}&fP3aXt`ZwHi*+QVn?UPZv zm==tBF}v&zAg?5If)&_BvFC#h(N8o0vFFi_^GMw4#1r;!cgI)B)+2lP=8}1Bgahd4 zNE|?9xh$2OA1wQc7+3Ra#8m0lg>_|^D)WN~fOiQrDdwA#V!k;kQuvMIMa+)*=Ioen z&W`ywJK9G&VJuX`etLaG{Q8LGp6Z6{Bczt=BYHD>(~S|Cbkmdq(;XICo9+Yt`t8A= zrd{f$VLzLYajC6E>dj=*Wb%gI<)8{Q?YZ}0FRl(+en>=)abjT>f#j=^ z(e$!vKCPR#%290RNW%|Nv|ywM%4o>dBmGipr-vADs;VP>0}?GQFUFKcMUPLC+DQ49 zK7;};Dzb{3B|y25$gUG8aVa$TAEDAO&yq*O&|Vjmk`r8d@_>Y|Ocsrlf$lMej~SRe z58z>bZ9!aa6A@{eF)@sNv7lmzLJIZ9)WNZorXV$G8bNTSMFnp&Fd#H^3!2s?a?8YA zG5pjCzM*5J

    }vauX1-gcu26zwLEpLY;MG;&60QHS*FY=B6+0pT9LXeOdqXNxA9E z`{QrRO@F3;`eV82&-PD$JU4v>Y&lW^EE|m*BRT#Hs_Wy$_3;t)@r};<_`IC-8M+0R$NX*zMAR@5`}aYj);#$)=&iuwuu{X|heRY*m*=~FxkJU`O7sZ0IZ zp&bZ{13?!>qBdJ{Cv*+0ClxIvBi{`F2z4%7r$R!Ugooa>0hB zg81kLD7YMqANIGk9QOBSFey{hbOhf`wuJ^;?NhD29ZVTq&P#R;_hJp#QhU~<>T7!N zeNJ#NdFe80xHp)O3G%PA^Y6p_>qlD8mi7g$H#7T!W)r^*bI`bszUm}-AM9jzqdmv` zBODao2J4q`h@;i_6}zbYSkwk0^&vVp?l;b!@X?Bt?hhJm61@_Xj3&~9>G<?RCJjnrDChgAaJ;U{2Giu(m(#iGF%t8 z+s)LA&9s9`y-$RVH*k|{bh;!Ur^HigwA0vBy+G1ivNi8_+IT)iiNUU%{`izG6K#M` z5MWOZz$Xasx()C#0=$s}@G%0sX#<==fVXl0&LF_sHo$vWm%Vmf-n&&@PGMc%%dg8j zga@TI$pgXYv>Kc_`$nSL%5-|}+klsqJ(wt1oC87o@%Wftl6mMkG0k$uRxXmws|3J6 z*0nHuI=LwlZ)j_2z(>8MsL&Gs#7~R-l2GhMwR49vof(?JC)%)zG<$&J1HptRe?@{# z=}-`n{uSAlLX7JR)|USeXt^!=Gu5!y911qBFCe(+`T{BXase61Cs$yQMhO@JbR^`V zi^(eVL2K;px0`(u_Dc%(aC&VBbY5{`q`AsZa*f56Ws)n!FFVtEY--4rGTut+Hj=~G zcWHY~IBc&8hpjasW5XXo_;+&#!x5bS-8R5c1n9959<>o3wGj5&@W&ATJ=&*)MB|vX zPaO-2w_el}z=dnaf@y<`O(&N^WoHk1p}Y!pf^lgU&xP;9K=eK-9or#G2$hcEnE`NF z`s>Gn05T3Oq^6RSLqcnEa;TzdNpUK2@z;r9CVyC9 zADL}@z^>x^SjB_XBq0&Dn&f?f$L!rhcBT(7(_y`>fSFEWyC1RPKScPWHvES+ z{D&6&FD(m^0nX&Cnh5Z5?y89Z zpX62OTuz0~85R13D)gycp>uYH&gEC=Y#y@nImpf%$UY`y=WJx>ZDi;3k)5|mzksA) zpiFfle2c~Q3NE%6tSNWVMsX2QT(VJIycLQs5XD6c#b-8(ONipKJ=!kWq+hb&Kc^-L z=J4yN|6?$^$wft2{VzruuccGTN6n>6uY63TSbrslC*QM05k zHQC!D?j*!5%tHLctq^ziMf@nc9pa^gc)X2x%B>JD?TdHppz!hNdZ(SfC^g*fgeHrpX70W%g;sR&s%=pEbGP*2U!9%sqIc4_2bzA5cfdf zm=P$1Jx59Qcq8Zao%ZgCenz7D|nWpRR6h3S*%mx6;BmQx*FN4mM zU|g(bY-703Mntn1L>XoQDwrex8S)t&xVG`?RgWG@T7F9gm~P z+S8$M_MmY>vS=TLyU3*{q$EFcV`)vt{U|+#oo$=gJ~MrfdQZ?8`D^H2zI~*1JFvt4 z+-ZOAvOjm*pL^`jBg3rEsa0L#^)zbGPG-Jhx92(JT&zKiPYz(X&n+6;TtHv*is+32 ze9bSS*99=f?Wahwt8Q;9;TIj1@IhBO69oo_!FU4VpW6}0#w7|3tRnRbrxih|MMg;? z^&>k1Q}M2ax!u5BlTcSdi8P8IN)7P?nhm+;mP`M^cxQnSIyOCem7wP+_(6|RU`QhK zm5`J8MrBtJwZSoj&s25?Q5PI7j$U_W2riQcm&t?65FB3gu-h$@H=MYBJVo7FfiO3m zdFuzR95&X|HTo zaaEdSuWVQCmF=pvvdy;PC*lF1o#6rCC$ww8ehrZ(`#ez`04BPyWFhTE3KkZTv?#?t z>vJlYbNj}3V-=q!>b^rVj2rHLjqj!tHL&8v$ckeCSn=3bZc7?5m&zD!mO=c`uAp7Y zT-qY$QJv_m$2I5Jp0rsb9H>QRJ?0kCDPPxi1#yNLbus&E{s0B-&M9af6|}%EXoBlj z1*m0KFX$d?c=U?0<`<jD~dzGwB7O7 zaG-QhSA3s3{u+t$Y^OA?|^W3Ry}G^v5({jl4sQC-2x|wwE3ud+ll$;-YI# zBL?4@jK(lpkobSYHNj=#n&3iQ6L8`zCtQ_A#|b|esCFLTELPKHMbYb(^cv$CyP3v^ z(53{lSoZNDqnWC;@gbU`&=liCQ0)~2^oKN4CWM9veL* zCLoUI?1Cp?!Os&;5=OR$3|C04q0uCoyePG`T$H*EfygCESSkCwF!^j%E4~D`mzCC# zH6B_+B?sr^K>PlUJAw^6f{xftWWr_-!Uv{A%xrW& z(ozEW-U*I3T}&N-Ph(P$P>MNLj~_qY^iID&Xo_Ubdp8oSceNvk#}Gu|_mjqer6&Ck zbM!7LVtBn;R%AwW_KjHDH)4@^$Y)0^?i)Q3)&RKeVb8s!*AyCBKMugz<5lOrG*%rcOU>&n0 zHT!|*7hIv$w9snP zJ?-Uf68hmWhIn!QTHB7->eV6@k>(FnA^jREwp@~aAzW;OOlG7~B))<$Dq!GNpNf4f zI~qqc{*ZvlT3&PycSJ`>NNR=@JBFvClRb`9bPE1@9DhCGL0dyD!v)IOgA(58voObo zlWhom0qiiYDd>5>{i<_0DWxNXsi2PO_^qcKmP;}jipo-|E zDkq-6>Y59P5iI}=*PPSf_XO9p*jJ;R$U6f;1r-$uIrhbHcfyUHhi=&}8~d~iiuDp6 zY|4axG^L<>vnNBiNxaOwC2kKemGylZj2cTeR-u;SW_RO=h7k^k^AIhvXq;v*h1^ES zXI9ZXI5zu@7|3wOFF`~>!b~bO35>4uN@MWU@b&A17NoGh6CShYGj#AQOcW%y6*p}w zHj6EU&D-oz3>QGSv7n*Afz4e^rU#~x$pLC;=u9$1K=uc$?!yPloVn}UD5aS1861WJz!kiwrXFqOEJ+-|Ra6)aCOaGnT z1H4!;&YY#!g5$>FL)+^?a-^5cNxV(Ci%Bo56K$FuuXh;IWe~itK}N zU9*gs6Ea>&+5+CvpP{jZ9}A6yW;Z|YOSlbt3ur>&q8aRO!_6IhGn;k(GMoL6Y!<%o zZ7=h{u3LrL=EXUWTN^)i$G=6R(0<(ds?BF!?SH?titd*-5)A2k9CDgEVuzdq=2%TR zHrY82TR9F7oMR2;*i1Qym%ZUKY#&^8jx$*U=;`LQIMy1QDQB}3d$J}c@KgTC-`CGxwC>JQE}EeL>Pq}bU(2)30Fe_ynKpe{Begj$){42PW7l786! zJmNHNO`oO%);8*sb@UMLu)ha6=!q7eX6BhaXk7Uw7mV9&_ExhcIIcWMN~GI@xO*p-k`Z;*-*DDXQ2{gRlY)j%1eDi|I$YRrxR9bQo47Is4H*IT zz8Q7M-*8Ca+Gj>xDr~qUGHx=XE*3Ui6j3X1k}gHM_Xm6VkzpBQilVQE?ISbB3`JiJ zJB*N%d^PMeLN4;vu-gd9F7Fx(H~Hv;&HvnSTA(EV1~Um9a#1ljJivLx5k#3t5~kxEK_ z-$Spf8sDddKKj1LgfO`hZF?}MyzNvTUa?_;bjx-!h{n8u){{Ytj`xFj$A$M+v3C{N zSWo2Ft%BfB3sxv91dE^8^Q7#!g?c^18xod z>p=h(dN;^45#O7`vdt(OCrlXW6F#+mNGJJnc*wD%!}Z?qq17v<1C(N9TteW4lw)1@H&X zFP{X*!nx~g5bc~sXNDZ)*)}#ikjKiDPLY6I+& z1$H4H47I^8SlBMOw37nta(}SP7PiX>rc*7f6984lJho)8PG(X<#=3R2+w$36*0#w| zB^`gCq~D(e@%LGjZSST&Yn8-yMDGWVI0x!*tE25LVQ^4fALFDc6_aLi$euK*SbOMp zootvl9+$fT?V+uXZsxAzBlV{bb})cl zT{5=YvZLV_66-b>nhx4rsHYQdoJu%(?9xr@&6-DVR2H@AQ_T~I)iw(@L$Oa8&nIb zj526Zuigv}<#cXW^(jH7BcB-A892)UdU3sgsMCE=Ul<6r-CAD{wV*naGj0WlIX2%N zAVrMKZj$MKCsm)Z4j_+)#^LFVn%@*5Ua54U47*zw{S3Xq{I}dZ#x$~!$d!T9M7Sk%fqY4dy*RmokH6fSP(G!2&v}a;$ye1|QMVm0$ zRHZ2@{~lA6L?0d+OEmug51rf3xKL^LW4h}}#}?9daEPH*ys@eJ+TL0eQcQH|wv=y@ zD-C@^cBv=2kQtcd!k(s!qBN?Dp%k|y=eDQ@uR5H1hCB!G&zu>O@dNebYJgvMCggN( zha9G>;(JXM=_0G4P_QxDkS@T4NbVvPX%sBrgg8PH=dNW6x`C(Q!_O!rs-$7!F?i$^y_XtIx&y*>+Zg!pCAV09lDV%=+4szugTE|hXbg|KF%K0UT$Ai{l=;bt{>K! z6Jk~up@8R`M*6BEq10dX%Ex?KK`jfWr)8MT;gx5@wW~C zq613;FQkR}Ku{xN1*e#4|7%;W-jMJxK!F%al{LxDg*AiDqrtvGqeGmqP# zEa4f4N4hw3XSAu- z=e}?`tMF&5w6ltOPT>oOY3CI6yuzQa(#|XD1%>EtgrIHMY+wNH=`z@rLgU z=p&CeNSC_nLl_xfP@FtcC2r1ALov^ncAl3p&lSoe^u}IB;;u4uq)iTJUJV%sM3{PB zM0Kpnd?NtJFda48auB?V2(H^DY(jt=IaF;5nW*xq`icrAGllCy))D7b`*Sl){W7}c zTo+1VF#2W4p>4$SZZgaBw?O?tWiIM0%sY?wybB-W^;EP-y^UQ!#DUq=DVFmOU?t+`&7c#-%JBPcAjI;?wbGB@*zY@T)Bo-4ham3Y4fD*$fvPn(W1y+kGGdh=1b%lT&zMZ5^#6}YoNnntW>~Q`O~l8=fA5pe;^+Bq7c>J_^gzUJ}XJdr-5C5DKrSB0!9>uV+%bJ zx)x6**M^3svf0wVkovd!cMW`1i0?<~=#Ql2^=iU~*WDCBxL%LgxZVX^Ug_)g&(NIy zfrz%)+aam+Eu)K?@$YNYRRj}#BOAUV4LK<4Zw4wt$}2*`PNpI}FdnD~k5vTvtP@3e@{6E1w-}X5z7j%#ICcFF zx&eSiBESC~jz<+-c!rCGjz(<_u1*!OEMZLSDs6(}6_@Pse?an~+mC}XyRY^5ciWe0OsX|$PB zg!;eNXW7w`bDxx!$miY!#pUsM|4n#6qcUm z>FCaob4;%opxZ+*P*$2g(;X|z_P}t(Ya)?(fP83JYNCQG|8H^rFZG}v?NZNL<4Iz? zVQqOGdW2i*X@kVNW;ywchaUMi=+Op=r^Bh_JL1JnwYEEiZg5@-vFs2Z>6 z^o~OWFy@irP8$Q>OAm&`Xh&1qFs^6>w~#4wDh-z*Xj)hjvAAY8D!uv>l$vmNFh>Ta z;GPKjjzr^TxONUbidF#Ne1`J?m40tgyvr`0crq%U<|uSTpW@$)+`jm?BDXC5u>qTJ z>fN_$zUg=OX}-r5r_19Vfdi4wyndb5zV^HEi4-k;pAg&=I8D9x81=jh>z0YV6LG?^ zcpprGbaiZh#ECm6#5e6hV_TCI= z=2&*)BJ!kyM)pFc6(-~rJ45($|7^0cw+4ZpQU)+RJXOhK2B#?&+m%ALYdW>uKj7$J z=-2ZP3EriS?1VHt$NgL~s%8ISIb(?iBZ z!wkg<1;cqZJ~?E_4dNu?7KcvyZcDDIY587nDih1VaUm0XmwtCsyUkQQ&|{;?(+$wA zhtSquD%ukw2Tbv7Fy0c1r6OqAKBT7`6%o^*IAa~d>B>cqExH$vrFF55Wcpy1B0)!q zQ`l_!M)jT84!TTkS6mSBLuj^|XfFzNx^+}lj(4!5GU|Ln804&--!v_i;*qQNj>=2n4G;CoSYeBavm`!@WIgSV2la; zWoa6rawaf(CRE&RukW8|=Jlc|RL+@QElN)u=Hf`$WO_nkHuh%h*$8QRCY?70fhjIW z&xnn~1sKeuIQgHW`wB?ZQTDfaIO!+DV(Rsw(J#zI+%u%dUK@@pLI+G*udl%BNK`(? zW+&a3OkT6^58==KbI7KIb^zPH6F|MbK5f5Lak+iIDoenM3;S47I2~&kY?d>IW29w@ z&*LkYAfs>MW_SGq612=i1rJEI4;A9Cq6Z}XA?X1r{gCqkDf5u)0VyFrBtIbic&XAd z^dbKPko2I$oJ+?(H23`23E;5r==M<4D9&Fx+u8;wbbxjzt_re#df{ z?LNOX`JbVncmqvZ;xHe4{%TSHKN=bwpeF=JLyd3A__DL#p1Z=%ejKwumy`Xtnf>@J zvp;WVKY`i1a@V2aPh$3!IoVH|*-zdw`zky8Da^h)C;KTg`>9)IUt?!K zjoDw!$$r|*e)^W#U$V1*jM>-bWdGRA{_!odud}m%irLraWdGF6{^>2VziekehuL4r z$$s9U$|xVjY_HP^PhsVX>Ct!FJ19{5;AVREX9!X{bG*w zi}^srl>Znnr)u=v^*#k_TnZL3M4f`Q2@$4XAwe`Ln2VS>1rtBE@xGE$QX={Y*1^Gl zB)(AV#99|ALR>oHqS%{PPMSG8Gw>7pQug3ZpO+ZhRD-6>HYskX@3+OZDarSYThqpi zik?oz#YNLa1@FhlcI%D3p$syGc<+jaOTKpQHoSASa<@_L*Oa3F%iWuYM|Ea*!gZ@| zZQ3Xa$!^=!Vkq5`#5IBZds)Vqe?#}!%58~FloO9mu z?%O%%b$h(qsH}|$o?w@aD!8~WH3brWCs~B}8Atq_qxrE>xDae!Ito{U@y{LcV~+T7 zS``)C*yHu&S`nq+*K@j*5$legHq)FLae==32eS{kgWpNy;P+(zo8j3Pm-KsRQ{nOc z6?3m~tw6XyE38OpdJqM@)fUty3Lu-&%VF;ogueN~guqHRqjR*cR(5&3^CV$7_tyJe zj^Drk8D~rAL6-If_n#$qV~@^?`bBjnba|-sn@;nFdw;Fd>+!x}7y6wpeB6;%59L-d zD&4G1vjSP#_{=B=YR9;ou`bZ7iZ9S#7WM%Q3>Zlvui1Nk82pcXY z>E!PJ_$ce`XI!G==$HaU1J!TUpQ|k^_jnK5#RIPT>l|RNOx*QDq7E1QtxgEa&;~3Q zJ1?X^T3tmUEJI<+3b@#Y)HIe?$QFh0Q-r>Eu;roRA#_nNNW4(eK-V|al3uP;@$_VN zNNkp3XL4+*`N~V9yg{5Yn$KfW2nwm0Q-d;9(v>Ws&1NSa^L8gog;NLuCEd9n+TF{b z-|q9{O$IIwnSN0S&ZMVdZ>y(viBxlaK93FG^Vk&N>Zeo1@c$_f3uANXS=d*+ zP-~MM4!B;fHSCa|8x@-Jh&|oI@@*6^v$5CL%=n8G|EN8^3Zbvp4)bKe8?@_`ojzem zT1#KT4bdR>A#c{gt{qDdTpq=zWtrHeQMUBuQ3!xo7X#oTE5w0=x|UwkAWzm>tzpsn z1KpzaV|IV~0!U|T4de0!jO1#eu3uv?GTl#%boev5^dj{0w`xu8ze0E(HQB99>hTgZz z;eM3E2Ua=U?{AZ!aZQOfJ>s`z)MF?If%c(=wg6}!S!fIV9aixzpaj3P&_1p;b#!xl&KWdiq{A}9gf}MY+vn*`h z?z>fx=IgUe^OCa3OUi73r7*~XKo~2>X9S{YyIdtYfW#&ie z%$MoRw;57ri~Nu}`-}_XPq2Q~!0X6*#O0wJU4W$}+8nwT_98#hGE3;FRj?1DU_ZAC z_QAq}eUQ+;wF>swu)I;Z3Eq}4Z^xO|Ul@AmM5|E%@>PtnIPw@QUa;#dF7fLc=_0K! zhD~d_Q4SArT3=deLAdMt(wc4*$3uQyDP5%XmDSMm_JWp7DSTb)@;Y4)IQSqv)HX-L zTTrdex>i@6m}-XULe!@9$64Skc$}p+FG22%!=?`4Wd1+062|@hZ0e&4M4Z+t`jORR ze$%L5YL*{Dmwwnc%cSPOv&bPlv*GFRYu&o-vs_JYKF=$o+5WJNX!3-{nkWcpNPILw zkIgMIV#`EqZV_=u@nNZ-^;6JQydX)_U8S+!n$3*zdZzOId_J42#vJuOXe3@Vl@8mUEQ=o>ssDPeC_unJ@C{V%;$ao$Y+q> z@Gx0TW8W|XBhC4C{i#=dSjnX3`|)3|^b_XD`ElXM`8Y<-nSO|?nA7AXa~fRk4^4T( zo?e5{%e9vD(_pRLEu=?y(&@#d(}PK8gC8$Ltn}k$h}HCUrPqRX-nz9|fezTF$PSk~ zB>da~E4iVr@Hao|SMydEyhkw+R{^ozLR?jdxQY=kScuat#5F*?*Fsz)rXqp3h7r$O zh#eNrbrp({GPI(SzR&{=^3S zuJohl#y^>m`gB5v7;9GgI}$7X&7Vz}{MiIs+h-HdOK15LM<*oZ_#A)YbNtTsCywEF zu|KhxI%RyJKe5oCOUjAeRk)L#rx?fO$IZqz(~tjCmho|UH(JI03XaRKEfkPCSfhEwqO)>GrpFXWelQEa`As_%_@r&uk7~xEhTrd zwrRI&)8f4}=!B(sk3YV_A7AN@ulC2+`kS5@r@u0uCBR(MX1_y=Z;zy&icqOifl^sg zIF%$7V$&BB+_=h8a3}Cn&iG$%^4qyC`Pt~tCgf7Pt74x`kOYau0x#{WPS$2YwlMZ& zEzQWNip7dt>h>&jQkGlgI%6oWGae7jf^*7f)p6yo7U>V!)(~$(f@9Z z4dTvpba&#S36BPf$fS39?8^xfR$ux;3@j z;me{YA`6iHy&_*(!CL``abAoz%~hqW`K&ns;!+l)1a#HJrMNLjbo2iyo#Jw5E*s`o zyfpXRS~yais#Q<+~B6ao3h=^k+}_0On>RdV-A>df!a2*=5_e6KoFIc4C5! z+TY`flhy|x;TWW20HS#EjqR|}+v?I~Fj=JMs8^TF%Z5gdlAw*h-A~!bq&_JjZVWNN zPfB7>`R)4L^hrra$3XmaZ4LnCFkZvXHc4!CBq0=YqJmPRs^RT-769q3G)q;Dx3O8? zZGLd#yO!5q+x$rvnzW0c=r8frg#9jl7+sfAp(LrHnetrZJ7w>w`dc>I3lZ#cHm0YZ zXo#JhAW@&@M06yatx($oZ`AZU29i_+CT#4~1be$UX5xGe5U1E3ZS^QQf@fU3>*gaWCAr3HnJB|De!cE4G|mf+WR|J_wtZb!d=Ne@>z z4G@yU_}A=3Zem{XWOY?xMiEh*Rm!P@s_4foH0ETXu?!D2lqlCykpp=AP$Sn<4q}a_ zNN2GGA8lv1qaQC*ASQMjHSYNQ$odAHHr3}s>sj(Vo1X z;BcoNp2@|Y_H($)z{K4(_xkIETt3r`ot|J*+w47)vcp zS1HCCd^fGZyY1<<2wkmU=T@|0I-{?c&R{@WqZA1Xt!1vRTqvz$u&XST_V7ZfhZmv0 z(?V&_(1p@^#Z&5X@4ea*Bz~sWScLr9zxyI2Yc4|I!vF3pPLYQ!Lb5+}5t9A4FG8}$ zA|(62a}fg3v@^ATm}LkN8oCgnpntD(7n}^LG1r1%0 z0LomFkf(4_a>c^@jIl7^8NtGQgEB;}Y-4e+F4*TR=UzPY5hgJKq;MlB~hgJIu4^j6SN4C##C);A7?FZUc3vGYlk?nrt$X1|jQ=pdS6DH{V zFa@HE(`{GucSDSy}s9^=aImvcvhAWU=irveaQw0TbKpbRaG1kLp z3LE%L0p|;DK40*N^M$9a%s-FJKVxP7`NA@L-YB!zIP=e1XfFV5w}tjX;kn=ogvN&w z0&S0l_9D>sT4*m87WIopQ46$v7TQZd+i#)0RG8XJgm%F~d(J|88EDU2XfGG$?PWqc zZ=tCU4ewx*g-alr+RKISz zvH4BEHu+7zlzzjXQPQvbGfiLkZN)MoR3jStPgXGnOf*zqPJw_4>pW!rntuM26=W>w zytgc@EMG3MpAW9y@C(aEZ}?-Y%WZ9bUY>#DHURcB`9I-H(!NaWEd=+qe8^`4;!Q~G zKJgyp@f)yfO&`CZ<;xqeD;35#1{8>B;FdL$>i4&sHcj95Yd!6{f$L1_9e=i`Y7=F~ zT=@?8m$3CELdv8L`dJwj&O=n~4mc;}#05V<+Z&LD`dsSlSa|8Dr`-&@Ai^#nj1nBd zf#*cvxv|VdIfq>oVHd~t2vaU1>y25_^nbI6gu$p#&-te<{ zQnR0JLL{BtY``Ju>SoHqKNEf-pz3D9*`ymKgo1#KD{Bf7A@u8S{0?EEPlH^2L#t;= zVM5Rlbx&#@7!@0Uplqubb_Y^l%k=qHZaNR)^*8*f8Sb_XQY$PHF7vA&-(=dMDZy0< zEx800zL|&6C||yZB?5oKA6pQl#aJ1GPHiox@~pr*&xcPX`Ko*iB%9awm(aJMm|ir* zWJ$7OQR>13Dr+B`j9)K_Vo%l}iehk(nu{IwJFE07_x%;gie$Nd(XRu=?+I*KQn@Oh zN7M)a)=M@$j_5VCjsygrxuTS%&Z(_c$&q|<@1tL=-YfT4_)Z`;S-yyNh$D2;1gldQ zy_T_(z8=#@wN=UM+q1d~Am<2gRGl0iSvq?stIf_~?o}E>4h=1rI&O+JbQ6nrez)zCVE$Wpt(4$8+8CfAp-1XFEeBO@}2&TjUBG*>@-5#`^*mKdC6lj8R_Y9oz_9^F0$+DmvTC``W~m6Pq@=n#(LC&(RN;Eq zbO(n~x0X7r^xIt z2ZxnxXNP?vDKv>>4Pa^zWx1Fd#32;f>G9q~E0h8eG1*Xs)<&^qENv3&XQ9Q?xP)he zeh5~!0Ba_&jwodwk9VK`j(}Te8yF`C5ULtZ;LMaByaC%nSnVkUGsV$#nIf7ibg?4L z3stx1hEsIGBXro|#Esn0Zf2=4%r$QA9xf(OD$j$Sd_v{VcyI zf1muKO)}&c8Kc#y%P$I_up4m=Rsxn#U{3EXmhhsJMG^&=DU6uYyGOP_#<9=}13oK&ADyCjOHtfq zb*<%ftrc*NsB87rwN}zP!6=BkiyQXc;#NwCA{Pk>%X~-8O1YoV<{TYZ*cG%EBuk2s zhZ%pb+MN=N$Vb&i7c6B9q13uc(Yi|Y*7Y;d_B;6emz^_tD25R$EW|M|d$gpx3;(;b zNlzF4qx8MhBuacS*o?)v9nzab85Yas_*9rP4{d01(@dpJ4FmN{5az5SBC`}Z(}=9N zYQBDn_QhoMpKcvd{{dsDi)59K&ZntWN$&<>Scj3cji!f&g^j!ht%AKYCmT}3`Eq$< zm2nhXK~9J<4Fs!;FkpD9k7)t{F1ZJs`=_h*aua~R3R5j&0K1KHy393sWB zI}h_k8i>RW>k=NnA=ljrJ?n=Va|pr4q8yHG%tVMO z4Z*3)6ZmHab*7xZX>bAx<8wZdslaJ3R64a=-{s5fW4u!-r=1Gt=~nS*)^Rg5gp&pw zML>d4u{%88cGh&b_3cp-<`u6vbJCS@e+fCef4ou|_m7K|abY+4g6^}kqV9R!ccoby z`wg4&d3jkrZ~kp!QMoTUJK#`rYNMD5$UQ2OL%aFd6VTF*Tb807g~m(y03_+4;m73_$L<0+c%R&hFm_nhbe|CuR)vd)&`)MpLhsUFPDhgvp6vp@pV@eBS%CgPv0opp!b~@>!?M>O_ z_J9ilp2<>-eq|`fRxHkcDi^0bl*&B;#=a+DFUBVJf5UGs-7$@ixqglVB-oBvG?jOS zw9%{T5eIu&Y_vL4ZPEDbz!oT-h=8!Ixh;_NCQBx_5pkH&sKVhyCDQOBjS}A~$9FT= zCYWm*${aC8SxXPaPI|r@D-EnDVI|%FhP3Vm)+PH7t-zslXNzhA?b!i&2dN@b}IO~pOzy@FCW2tcisFepyOD)6c01LpG(viTStallOy%<@&bK-s{1707xev& z?z8*eqwnA7K8G)ZR>Q--8TYbe)wN?pATbx z_!qjb(j4=vc+9WzjJ)B!!F<&{7xVOYk^dgPguj0NE4z%poB8hv{`=7&{x0I=CkD6R_Gd4$(f>m~CkAad&SQAXUN{9Z@qV3PAK*2xVl{q&VTSwdOnlh9Hu zoN&D9A?}=DAz8}o>@P`{B)v6n91MJsh(Ek5wdfw%=WO#GC5;@2MDHk+PO}Ge=4swBCW2R z$rdD4%z4~R^EgyG@S0OYYdNP{fzbxZR(Q&3HQ~WR%3F+Yt`6L^IzS^(Xh<1@k&YGv zdXy)e?-3U4z=j9s+rAr-w_%bobGMjk-o-EE!b|HHWCT>JYfRLASD;SCeMtDPtxWx@ zr)ux_BvtlDcvJT3g;Mh!_)}ZUU?lOo3Z?P~W%p^yZW(-KWsnc~pKhpKYpD87{Y&QYrx|1?4 zAF#Rih_fAjfD5wP+~?eElnpmB*!t^-CH&tRJAI>b5)N+BIANM8+ii>_dJyOvK||B= z>gkk#n}=|<;e}ZjJ{F_e(VYlgV1<%XPuFISSS-Lz*LgKgVVZb z;gg>@Fyag&;!r$L?GdWS7wlbJLCh*2(RGQMYL8geF+DP*I_`~JwK`tr>gXuIo)K}l z`8|0)0J#Nbg6<7KA2dLFj~M}o(aa1$RVCu~I9(^PRZF^JvjS3EFUH|4adpn0(vuM$ zkrrak7si}7Vw&!W%8YoSF#19v;>E(4i&r3CDvZ8VhH@@e)E2 z0M2A}{{`KDQTJcG8i67J`n{z4FX{fvy8rUk2owR(@1X7<)ctwgpC3w~p%p!2cEnrh zbRBXP7MJ^X>?Ig1j5e0*HXE4HUvwz1fI4qNogWUWL_l3Ip)L#uRVtt^not*qgDMkH zmrSTj!$Fk`sLLkQ<>8p92mzHhq4L8)`Lb0fXq=?o504={aCqVJ!iBqC zzSzwsT}|g|J$&MiTNQDW?h;}dRqKaRFppdL(3wx1znj9Zhf*jPSGs%`%h$8tN1<*g z1zeZ%{bs_2@U+Ij)4BK2?A*RPtDW=oblSE zoDDm|^72@FlrOX>#F;A$aYHZ`vISjX-*VcaLPi!c2EyyjH1|rAdnH?XdH}o{1U-zN zIOo>`X?nLpFK}qe{Ncjs;xp2sU=&vuADA)?S|C_7E(s{}hiP;gG^}9I=(K2X-gFX! zI&%zq&PcU!1V^6tTdC?n7YpI_6b23W%k0l3^88B!=G=k_`M!w5D?9OGa?%Y0&|1zg z@|%=CvlL9a*JY z9homR-y0RSJ67BM={Nn&9lCc7dDlzLGuXRc!v87jAQ{>gXr5UZ*n_}(0?o4u1J@(4 zJbcE9GhQ4qwUFlo z3bc^t1fbpVrlt41BmyOqYb+%b{LC?RO&*GThpx$e0qlVuj{MHLCiew~=$bq-OmcIK za__S1FDK1%7*?+`MkZO?LufT15i5R9 zkrD`Q;HcSgG_RGcqVs5pP6LdA{(g^KgKLPaJuH_)^*fAx zaBY?NZ5CFQ+bO|n`6j8=$!c3Z8Vwp+T^;>Nm&et?W~ZAUuG3-<*GUDzTKvcSC`(RV zI<|8l7r#)u6_>a4n@i1&iZ@&Qu<=fqtLvopK9(nCjY^kpMcvhWaJ&{fI9_57nm0+4 zH%T_)qXB1liF-mxXExCu0>z{=F*iy(eJOS4U5~1}uC;a22GJpxQv1GGt7Rz?R#GFh z(U*fzKD$WFP&VkdVL&5xa@n6q9>=8ke7s%MO+D2iS6~PWX{mcclc$I9?9B2=(dod7 zh+%-}K7E|&rE%td3@IxkhNYw@BZhj~yl803CVTopgl>-DVsMCF$Cil0?k!W8e9I># z@dqNA*nx3U`jZmVx_qBrF4E5==g4c>viw#eC3w(c|OF z_;~sF__k~Df69|$4ECoV0mIuP!zh~Uh~SMIjC9&9tgR9;br&AP$oCY-UoZSPdxFmB zV*&Uy9NI%yC1MEq&u31SUx)uwHe>L86bU~aF%~n1*VnO(8!O!b=f67xWWoA*=~ZUK6mTR|ibzTFbfKa`pzmcl?l&dRGbC zQVXN$ZAkrPt9W;ycweE`>h#=>G;#)In)%G$O->OFLcpMoF)u z#5M}mSbte65Y7tYBli1>rEjCqZo7xA1*j@ng zE5cfOJGJW>b{I#nSK@t()M|^4rX)J-LkVb=yP+9PK@W#)yjzJ-fkOGEFv<0S*rM-B za_09XSx7)na(!Wv8<6Cig-P~)PcCPDUy{97=CZdi$xTQy!$}I`iBtPBshxqUJ3w$< zfS)XGdMaS!mfR6(u2zrVG`U)8dLSy{0t^jD!0al7`ND(=iK@lnf2Qf_LYOa2n24U1 z(@blF?qQ;vbPr>%3z(V_8!YFhz}@-_v3iSYT2?tab%*={^atEKL> z^JBDBYV9<`^ZT)L>Lk{WE_gk*Ga_jbycNadM475@vg#4bm8V$$~yO6?aEl194w! z@lE>c64UMJtpQ)D-R4zjNyRN(i!BLB%w((Vi}52CXg>}7z6CX)q>O%o3paaZjc7tJ zmajLWq-^z-LP|-wa%(|%Dbc$NeR=|-nQO5Jt#tp_u<6eHzH~FGo&cnehNcg}K7N32 zZ6OX73ts8CGI?V5w*?)oMDJ+y*%-)H9u_FQ#U-_ASdM4?;W_>rgl;sE3OP5C)?X!? zy+i9{@-Uq{=~`0x)#ZHBEgH%{L+A%CYAM;uRzYZWadrJnWWL>wzJ-jnQ}(Pr!H@J7 zcZ#HJ^@<@yzlC_pQSrg9W5h68c=b+<$7gvg;)kHO1>)7IM`)L^C(v|Bu@?mF3+Qj$ zJPFEujKXidJQ=`Hs9AUfhNnlhVnp=Czo1a+do?@&yr;C^ts8yNV$TJn_PZf#1gwWm zEI^^F;K~wpEB{D+~FzGW4(+ z0PqiPBJeZmwqLYhU20zvwMo^shoUz7(ui#!0v&Fiy!QvfHayyh3tn?t{x@%1Aq$0IB`m=1FFKkQi4@4$qV-H7dY(FL}QGhbZh_Kn-HdmOBL<`hN zw_%038H43J!!7C#a-*pfYwh>1Rll|0E~VeU7KSq;c9+xj*BBuGfwnukv>LVF2nKg* zz>h}T{(<%%siWR(HIAU1slFP*r|?Ybg+R|FJkgZH?K-%7m${?GWAkIoU5fsuYzJ@8 zqlym?$J={Dc>CJq?FjSMCSA!~QfF>y0dqe`FMl~uHJX{62SOB&*Rxo~jQQ4smP{&w zSRw>Hia_*yJtXq=zL~Gbt$gi3zFtDUKHz*s3iq7%DC*Or)AuMX?TY&B=ybc%GF?&k zj80EiV9+yy$3S%hX1A~!J6i(!DB=`HGtG;o_yTYI%ZB(@4KQ0Xd9frziNR#!31*|3 z{-*2%8;eo(pG1avC+Jf?hOu@vpRxZ(ECShElS#cE;D$!OTB5fG@~;uQI4R+{auJtW zAIiv&kLa8fw!uy&)9@FAXicA7C+X)Quc1_q@sSHsx^?piTVYB~6o8MNL zji%lZv}j*P4!(}K+%EStD(@|lE>kjji{xzEf_;B{v6O08GO0`euc{>3KYfV*9@C#m zeN+<~=@l>0eN>b9h>HF-8XGD~M9^yi6dz&r)=)JhT~x~7MDT*t4YU*6UPFK*cwzQB z;l!Q{NljXS%{y{Ul(OwdOEkt!j4{H$FvE}4=%~jT z^~)OH8Qb^ph9kp_PKgk|)YJ6+SVz1%!y^sEuBe&fv6_O^Sc%@`5o2{h!n{cUB+WLu zK8u3|zleo`giRWpJCnxoLK?@eq;b3kq#JK6!vRR+jVK~Y*YZAgQK%3c z^$K1RE20dvCYnAhfDR7@S{Y5OjJCWUXnrHWwS?lj-Ht*;LETP^jhfgS0hv4MXEjw5 z1>#Rqv&PZD5r{OcjXFfY%%K4r>&yTM1Vx-Kx93UPjmGDcG|j#d$}5@F+W}F~T|#@Q zBFF{NA87W9aLVpF&MrW^I;l1o?VW(AjAFC_9c_6b+B-lS0K68qrFx=?&M3PjxVxev z5S6riTE7TIB`k;0>4Sl6H!Cb03go(>=Yyc6+yw?Zxk*q=(%FTSJE=Wz6}??hMQ@9s zcM5`-b3h@uX?@flr?DOv0Ivs>#DM?|P_!HfDCq+M6w{m=F$!LwrKsEUdf~$;dR_mR zYlA9!T0fJ0H;`D3?4>qDsUx#i6njz|qY;+3ByTp+8!c=KI*palX#-5-a3Hbf`)K46 zo1!$5W&=|EWKGos3e)Qp1l|gWGDbO43A3v|fI{N@n%TM-ktJb1bl8UV-x<|! zU%sfBhEb$&1jC7eNka$wvIYZ~B8Z>7g7~o_;#~&TF~T~g6F*)|{A2;~<24xBlz|-U zu#0HBp2Y1#`1hG3Pwaz$boESB^KpVfsQ^~bNk2!Px+0ll#mTIU#y&Jrhslna3{xtA z)$`P!wes|>kywR+#35q#y&REg_GMdjoIC3HqMp#_moKLk$zT!0N&}+Hg2?lw!9~3El%&ZFRaa(B{pBE0R|O z_&;TrFb0|fi!VHe*1MSan zpgofTMzclG&jM5iM+42T$W5=vLyYY}_KexU`**j#B-6U*n*eS7@=agy8gF);!%cPFcc{KcZA9$-RsA5C$1iPx#MwGK*TjERv-wT*L1KC7dDSnZo#Dk?&Cr44zbLt$P(y|?p6TI~h zQA>RqX#4X%SmbG5=2X{(W6PXUCynlSl!pS|&;zLJe$4?J^ng}bOMS~BZyF&mBMar( zT+-RedYzvKB8f+tiPS@-Nmpn5<3Q@TqvA(`Z{bV2x)OWp;8zH?b)c3Zww=hr3u2d#j8Jrv^J(YT7Dek$>F9Z3s7vn)*Q)OE{~s&8w3sjo+f3ejcd23&T#b z`E6%>=E&IFPAQg@(x`AM+bz-5<4WROiKv84rJ{gmmkR&<(!$EgB<9$)aK4&Gqvp-B z*#Mh1%Mv74nzvYCTGJL8dA+~RL5)5n_$bJTKolAI9L;UM)v-QD$6COJ)Qn?+ANL{S zmA4WyRlxgP0Tif(M*bN_xSMS#3Uuw+cG0zG+qtA>+a++Uv&BUhwt+9Jm=EWqB7DEz9<7G~S}LX0>_wgIl3nKt-=384j%29KfhQ!xHas3lUk`u1{4HSv z!leM(D*a}})t;wZRM%GXn~Gmax7!5C+iZenbBDr4fjbn5BFc;ayB<*9JQLn>Sp038 zsn|vG5S{npRYm>jL=R;JKMC=(_gB(b@W>A^mccM?x^@>LBvm_dLw8=Y@ydietzL~XdpW;2W*ueA z3|$SAdZ3_m3_1X4BZ6!Y2-l(lqw(X1B$|T$VsI6SGJr}iA)YzVn+D2@Z zY>Vq;*&*MQ8IMNTj|aVJ^zdezXDC_@wKGGJ_(2ax4o81ARDoIQ{Y$7PIpphUi4og# zlP&&1P`xx(-4wjpu3o$;_OOaKTOX>k6X74T;bY6faaNURhNNCc31mUMV?fKr7S%~K zY{6!4PQS!|xUNX<;Sui6e@5MTmJ+t5XDKbSm9Uhat+dQh!uIqWrDd)XcBJPjE%zy5 zIenkfGEWIR)AN*;`<1XOeLoKT9<6gY9daFJ@Vf?}Wp-DqjKP^-FMol%eQx1h1G%JJ zbBr&p9;=f}9r7Bs?~ zKg23e1md$PecxRY0V9P5sE_e8Cp0U191vE^r=AnK0v+&Z^ra)K19#nZruRxv8NtAcEJ{TOgNjD&S?4us?f7=U=4o-;l!n$_5im z>Z$sfQMRxgaX&$2Q|AJxPLy$c9tWI-Ebt4_HmLzC-+J@}K!}K>Gx0(c<(?zx5wLjX z6lt<4a(9h7n9nv{2-wgqme%16T7S&ybO7Hofy`~T^jUVF3y9YIIQ2Q%d5(ph`ogyU z3?UIcg(jqYgVR zH9ZcGoi^*I1FJLPYo4!YV7O^ME|fq6 zhqW4<;*FtGR?sO95*TL~gT^i{Nb1!MeD9YFba2sTxhSuJMQ{s;g3;*-FDg4K-=yMV zmBDk|4Qv(FShStCTkz*N4Glf}!3YGNmeoP-r-JGllbnVRjKXztFhBTpf-2=iphs9G zK_)c%516hxhg)_Yu?u0hHfex{6uBsEc=UipVX0|N#I8)@wgS7`$Rl5!dSNl6D3cEA z6diq0m$UK%%8|?C)T+i=O^8y;Aqj~e2{W3JGAWlUOb6vzzz8)K5l{fYRfE?HtoA|y zIQ3W2Z~%g;s*ac-M)h|zw8{ipA?~721&R?yviOAF>TqLJlt53Vp28_cI9+tiy%?`Qy|DODti?EOQ2v-s(;VR-KJd(HxR}(+s8saE?4e=DdmbeQ4 zi1-R$N1TPPC*Hz05O?8G#9!D?9EJnLV>n1$hC{c7(hn#tixl+<;^|KM-X^Kb#)YLj z)lN9O2>4F5oAB;bmyf&6uCCy?m55u#&ed?PVdok+*HUKgRM){dGlI|_I6Ezp>)E*; z&JFC`0Ov-^`JHMnoSQgw6P!=7^GP^2vvV_?Tc}v>RJX#pjY{KAbvv9p7+?pSJK6aZ zoV(b$3(lw6nIA*WXW01+LZ9V)KMUt>4&4ps9(L}5b1ysh!MUHE&%yaTmF%7LCFkWa z2)zutFHjZVslLd>>`cr~&X+ieml663J70zK026x+&ez%b2AprQ^G!H2?99NaG2JYj zISzdb&OT}*cdGqx4shrIQy)M*y=@ivI~@8BoCi7d5S;H)v$|6~4Ci|s`W~D|sO{aU zz7OXI9Qq-gA2EfG;rxW1pThYW1003(b9R2tai1gkV^*mir*^56{DRuJ?);M4sP6oV zTB`2+np(K-{Kn$sTg!QZ>7Ib|q?N-{7Qkt0(|4+8;5`wI@oae0uaeYB!pd5tuV+}}v!$b5q3CdIv1U4Ss)a}QQ$jiL|w zD`%0rD|b{b7s{w>LSFVnQ)g?AB1-?K1=XHO{fpS zg$h<5h70|fTNC#x^$~=jV{@bB&O!AR7CoH%w)$uzVW4Ys)8sa%J_fX986i?L%{&O5gMkQpCetZ1oMqHT_WT&Nlk_DGX*Sq`A(gb@;7 zs5JYMa?B@DOzhPtgd|qfK_Xuv3J>ZO`m;sw*&^_joFFuk78wb~A5cU}t#U5ZBQ^+0 zIn-07vtcFK(NIZY^(q#JtBSX;t8t9wz%kYVUH;eBxlEpHxCLWxIEXd8-?-dJadp1-LR-%G^X zf_VDEB)-`so+0ANN0CYydj&g9Z(?N}&w1o6Pcy+GetXNs)P2tp&E&TiMW z^3yW_u&d6H&dL@_XFUfIou$a_({;m$=sZ&gF%ziZY2r1*+$~PxVHPMpTW7qOm@_FZ zmGFPc^DL4v6HvRkxW*S2*P&YVb$j|yZOh||`l>zsxYF{3q8_lPpHNzk)T*!9(?_7} zwWqk~_L@camR@u(P|?js68kubA{nP;iu&&8^fINTQ&Ha=o$gdxx)gQZHR&!?%Kl=? z&zY3_bjmLhBF)PCtsuUA?&D79a?(;JkQjY{p;?({~mdZ3QBt**a=KHbuiSbmf({a{dV zy*QXjJs4DT_39cm_IA`xd##p-y{e>js&6!Q=Ct@Kr7QJLw3CJ(JUk|~Lvos;vYqXn z>4%|=_nOtP7o%anZnootg?cQnpdBwlmftY@@B3!|T@egTK}$pE2X!8*l$OFG=~Zr; zC#8FpmQ70SyQS$(O3RaqdgKQ6%|}0#`(OnfxGg~V5a%g zGDL)>$)A?l)4f!{y}|hZN*z!$sds{q=YqJMMPe67e9GHzem;3)P&aO@rFS8<&n(bY z06of}V>>fX^*}X8~}`^6!TKxaHpq{}+~jKm1=>{^#NUs!o6IT=2q=FnmojjO^S- zTmQ&Fgf{(LK3aM;Wo~tFNkgT$M_e7G-7aKV%$7>|jv3djO)W8-tl_>Too@2ET`*>D~B!FPdJ9-y_j< z4}RZ|rq|*3gJ^m^v9{h~Z9P~s#GH3q;k$#wvykDaWnn(!wQWjo3g+$>rlm8nH-fgi zCqWcT=a0&R#*B?7V@cTreI1}S+c$MIKReg*Q|ZLXU>(R#>(j!vGUzEGse-T(<5@z6 z0XvZqxB(QlX|V+nyB@YXsD-6Y3XmvG$Ox}D13LP%!0pchs3u(8*JVZ%1qu8k`hbm;mxEr2O~{qJZSzWxQYEpG+7}%`D~E+K~ID1 zAp<~4G@M7thEUHTRB{M493uW9amY}A%0@$1Ba|{p@O$~YpTEx|cmsOyrr;Hsg+L;o zX+8^aoj&x%Y5k@>XPIT!`f=J@$ak>Fcc`(aYK0wC-;E~ayKsAQszIVg zTD@Hql%}q$W&WnMIyDLx?gp4XE&EfPUehm?8}W(;o_H_nV`1$g_TP`r->;6UUIceZr#bbSMP>6`r@4RbS z=XWcw58|5?S{z8}ZA5IFu{d~>M^5UieNdOdJEuX7(@cCAWe;_DJ>BDGK=byH;ml~0 zw}%{wFDzg&BEJ=E`Z8+Q7T(pT#h+9#7Io$GnNZW4K?#S==j$9E*}2JXsIb@JtbUu$ z_;xHt{sH6jnjjAB*9BR9i+(!>e1By;BsrGZT@xhoNhgM-!%@DsGQ3|!3Azg1ZXrxc zI(0T)$>(vgOg*g;vuz4CeG|1KK=8Jx%+D76TokgfmF>wTwg)|KkBiHO zDiflfJVmZx;i|j(5D^;5bD3UxA+F!8!K&Y)pr~3?MzvC^RjhL|w4%NR6C#ipO?@4$ zy6y_Fey&g0Ff}5YPDF(}L`{V&8a@>9{itbbbdccWhI|W}CC#O&l|gekv@*Da_1vtb zF0C}1j$LQNWliDQ0HBzNu||L#XPrY58z5`?r#x(O+qp9^mE+g3b-+5OTXs%&@Rjrc zl|`#eGn6ybb}|ZGO3_WUViFp-0p--GXnJ!{C%GwD^&u8swQZhmS|4K~sKTsU;5(^xMJ7Cu#R4%JbQv`f(#P zLv{z7?x}b9Sg%D?Daik9{mqlK)KPD2lGHY7AeUNFAEC~nrRH9rIuljD zsIC4hW^HQ_QK_?0Di|ICnFEMnat(!TO}U`G01WMrn~d+L5Zn~hzO3yLk3SdzUsC`? zRqJ&uz3cG~A`^QlXscwUV~rbIp0_U?HtU@;20(0ZhLE#ZZ26=GAiH&{@X?e&(mgy{?mc~I^w78{(E;ySpOVK+&l?}W^* zxFyJM9z}?accai%=A}35{V_I{$QEI2Rk85j7_4e$rN}7ywtjP~(aeeQ&-5OSVvIJu z??*9=o8BW)44XYw-<_7t)=_VqWt`K`G7i}N>8G%9pHXj_2c22(aIjii27T@m>T~J$ z^&^MFv{6bQ;&u3YME6s!-dXjyTkdk1hEzJl5YfC$n!HT1wJnqSGEJXRgSyUc^J?*L zf~l=aVu4pv_cSCMSGop5gsKZv&d?RX$h*}ml zqwX@Ic8aKVwPw_RrYQB(#!QSnorPcQ%G&JJKY~^(VLru}iiwBuMg6QX+u8JGQ1Xog zmEPc$RCHPcIrWXPCaqmeD^g7BXk$*$dPyQ$hZ}~Wf@|$v4JMhVnM}wegAT5K-k6jH zo!^4avBn`3oN8`N_4PW1-Ao~VU!<7E@y4W6(D*Z$BaeL) z@~W4{_VB(i_K6PZXGJX9twReoG%2HgG8X<$^@~P9_(K8E>Y^r*bm?ZzyJ=ByaIEf? ze2d6?XpHW)`|c(0VZ-b2O(XBJuA@8S+y4U5Su0YkJd)+V+OeL&) zJ&@#}g3`TS-wot_+K4SN&5xI|`SDVZ>xN5%`O4nj4r=JVOO-26!-=?VK{ zpG54jUR5IYITm&I1+%*mEPTLDobT{sRay0&vE)2p6PZZ5I|YV}2 zo#IRN&M-|h*;2hTpt-LI>RyM@+)MS&faZR}@H)A<_Zq-1ZtjByWj8nXxrWzcHg_*K zcdw`PhAH{Hch+Ej(O~|G!Tj36{MNzzp27T|F!!;H<1%SLrP)D@8W0iE=(n?v8=g6~2pOD{Tu%(Tw!V51OJva)(lG>> zO>L{EMBD!-j4OwNON_-A;hwhlRQ;!6k*TU7R9F-vdeUh@twI=%9|o`T6Uudvis~vL z#{~#8urv(eOO1ZNE1y4v(i3BP3P#=eYEM-Pgr68=5JvEs#-1yO=Bp6q^w0i~^qajJ zEwZQeHxG=@#srCgqu<6`TXRa@~L-Fc8Y=d3>+D=K2!yMXs&H9=xf{8Xl=XXddlYF zg0=0E`XZZZUtvA_HMZCf)mx8u;3nnadh4p@D*!xV0elUBM+*R$!eb@}7j+I^Ck~cj zb-lD6ca{GwGrncB63(YLD=k}aRk=lJ*@~;mtxC%_TvcvUTDIeMd%M!I16P$hl$M>4 zCEuyEJf(!)>8F&IT}s%K-leoWt%SYlr`^Ef zVx{%2Qdw@|<7(IxkERBrZ4XEdv_Ke%CtYlK^P#=9gq0BRYDfT(%{yoojqQ*O;|fjB zgq+b5Z{?wU-c#bi#bh@M*HsM#n7;A9lK!fzzO4rOEO$`fmu63}Nj0|RynVCG6xPcn zvh$SK8N-a@PRP%b(-k6yTHRWFk)%H{t;OO;MdQ^m89T02esBf+3I=@|p;Oj6F~ zn!XJ>qFzrWjUgVd$KzW5VuaCcUra9CojhhgEzMD9&XmJXBv0lJ3E{8-Msn=88vNWOCW2 z6G3~_+$J^Ot9vu#-HxubmK*CdYOMQ|_-m2WJ|(?RY58gl++U4Je>JA1 zi^IE=beGbyjNQu=NGm+f?#C4&69M-V3dAA~j)wc-==8zSEd%Tx7@Zy%-SYP6+J}CY zetUGwJELnK{#p8+(Ukf+8a^EIVJc^g?OtWl@PCm>zPD(W?H36e@7hhb*+ivjnduuL%?xck3Fz`@a3eJ%HwB49udaQeoHfPFfO3!5!b7Fm5oXG|3yo+>;Z z`wa=I*IV-WpXc*U`TT#%=WpX>+keUDTk?5|v)OuzYiGSVc68{~p;2|5#MrT+piVay zWA&O?GjyyhVRfStHw`!9JX!CQ9WwR#_(PE#Ufk61BnKYrpn+y{Jyd(5P(k)?!9AT= zfxx`#Oxl}Q>aXcEzo2AeFF<7tTZ+`oiG;eP9_mKF(ostc)X?qrNgA8?$6xz+b^7?*Ty2g%Y%!lgit@FFwcN{I{Gaj`L^#f|tWrH>K18xl*B9A*ex_bG zwA(zJnf;gX@tHOFKc$aljxMldQoXKlVu^UXsHo5VDE*?+@{*!H|D*Ivn0|KG%Pyy@ zrqI^WC6=nWuLSZ(^)6xp_GT^y3oITHMC!hh$rpooX<~1^VfARvMAPa~Kk{*r1(WIx zQIzNF4N;W26GKx5?CHyhe}VGm@rr!DSP$#5)j|pU8($>-jnC2re~AFSB|Nd`F|of) zbC0(~Oze43dIj`75m>;TIGjdkaLU_;mD&9_KrX1DVh_~of?rU{X$y&Reytv_y0DS9 zwvd*ZH?f`C*!;-#)zB9TXqnhxt-ZaUBeRKl6R~M}ol(Y7BS!F6vD_*EW_;b=n2v_| z`Hgx*pyz&OeYFq&r@Vtw+=Q}wlY8RLg|+#zqJAi)UshUPQPde@(yu5juPW-SG3i&8 zmII19XH5El((;<3-Zv)wn$q&RqHcAhUq_8+ctKPtvN|Iq7FhS9XKVFNkJFR4TPEHX zNzh3R+n|%mimI8^j1Z>x)clEU4q=e3a*|}Dh)ir&$ab48HaBD!G2+?yep4^VdYl$sQAK(@dqaM;2;943|C_QL_cnUqE5N;EgAux9y#Z6 znA8^iA*glgIfI^T?7@k)smS0Ra@bbQIx&>Y;)#_sb2PuusCJA;hC9_6<2yNK;lxgL z=J?L07aApKj53~75f;F+bl}+qz;niTA|1xaz?E7ukuBBD4%vjLYk>iEPIt3$xWIE|;4=Tv6G|dS){ta{=|97JM#1Et!0o|Y3?8~S^sS-Q6M&IH^;Qz!L zP^|wJ2^CV8xz76=bDhV_xK!6fg275w)WeU2tOoVLRQE)}%O+hpVgfJsq7B|ZerP+z zB5}P~B*Ks+4f*`uVW>kK_ECSrfh6~%K*vBfr{#z?QADTtOmrFyZvEyYxm=$l4?=Pm zL&pHmHburg-cZ!}W72P6$a%Y7_OOLmYm(Vif=OmxD3f%h@29UDJvQlXlVHRiYL@9; zqhKzv-b>^1XoxRPRG%HCwwI`TMyY#8sqcH#y%BX^M13Y4TQL!j6dtVi5a<{T|Dl4p ziV{juGAT+VwQJPm`$BGlJ!H;VE3G-}5JubkkehdhTlXBU*M*ZIV=!NzBHrV&e3FkW z7E%feLS=j)C^>z8;h z@@S}EY)Bk^U=z%hA3<-Q&u+n5zi%Q=C_rvuXrE4QA(JyRFD?#>(Xys6B9!uaDtG1c zXm(j*5G^lcv^>c0gMsF$x!6<*1e&(Wc36NyJA6m9L&yYv4-YtBAAJS$L%GUI~1|+B{XG ztYnc7ZIbVH-paWcq`lSc`!nR+opc4n9&I#j{i<=C)jV2@jh326C!Men^GL{kH(MKO zo=O2awWM=W)a`<$YfNt0ef_9^ZdCf)jxH`AAyq-;BY?6wE*!jqkiDiZpU3F^!4GW) z3$APi3(QuvK(7LUR8i0j7W}@=V8M4cgRAmT)C?AUPc!(iUUtjQZ}d_a;Ij#?|9;<_ z#q~ds({1|X^xAJXYCmB0z+o!?Hm-bUj%(ji8p1oreVpl8!scAr|Lau~DF&%OMh#D-{urmOO+q>!*PHUF^Qqh@4!6@(SK&O3fRNWV z$5*`udm*$<`$^gP=ctyy9MIzDlr3zD=A5F%&M8vryh6dbY;18IwwUExaNOBkuEolw zY;2pG!m?1R{;Xj0dz4eb>bLm;Y4QV-jpi9Klz(oXZLHR3w|8lFTN7wrqk9jN_fc?q zjA^Kalii!j?Y6|5N=rrwmn1Sui>8DUn$nV0a7~-V9C*B*cDK%d!S?n|$Y3OvhRDG$ zQ^Yl;vcYB}B*?90SZB_4!$B1C(pbs?I( z*Mu^;^y(0vkd^sLMK?+zhx61sT)JU(81|&WyCB}l@sJ^?J?c(6m!}`+rO-+&h0?2N z;XvgFsbuOMOG6o0y~Q0@e2bK6%5iypQ*Y{o^q_xzYxy_8f1=(}e%gTgKUoi}*X3*w zjgrYGRw49M0oV!zoMx~VVdR)?Z=i3-E0Z6>uU6dH-V zWSdrnBq1NTE|hIrH<99&Qg0toDtNc5`%FEwy53?Nj$+PP%xhu#IwO4l?B$3QmO8t$oseebGmb!JJbEZ;$ z#EzUW`)YDy+P8E2%ss;vRKm_jIGp0eRerQ zv&$Bwac{#g33oJL9=u*8oQ3M6mY(UQp=U=3FMt4KMgzpb!u&p(Fn<9n{e}g%A?ZV(S-|{~V|AGdiww|0=pz!tqYU?QwSlD2kGCtT~ zoHA~n7@G2-J-q{=e>w8kGzFB}9JYUKy(2O8|8I@^wXzR&H&{X9 zu!(7X04qz~CfXXKIMKSdXTX6=luh#CFH1k$k{PhuVGZh>UYXG|@Ua0X7Dcgmo{y){ z^}u^$8B}mg4wivWD-BG+ x)}PHrlf|vE?YUsRnTWwv8zR#m60oAiuS~0b#66~*^ub9Vf7pu<;u{^b|AG^0-B$nr literal 0 Hc-jL100001 diff --git a/clients/flex/freeswitch-video.html b/clients/flex/freeswitch-video.html new file mode 100644 index 0000000000..fe84842d07 --- /dev/null +++ b/clients/flex/freeswitch-video.html @@ -0,0 +1,195 @@ + + + + FreeSWITCH Video Flash Phone Demo + + + + + + + + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Flash Phone
    + +
    + Ready + +
    +
    + +
    + SessionID:
    + Incoming: + +
    + + + + +
    + + + + +
    + +
    + +
    + + + + + diff --git a/clients/flex/jquery.min.js b/clients/flex/jquery.min.js new file mode 100644 index 0000000000..8f3ca2e2da --- /dev/null +++ b/clients/flex/jquery.min.js @@ -0,0 +1,167 @@ +/*! + * jQuery JavaScript Library v1.4.4 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Thu Nov 11 19:04:53 2010 -0500 + */ +(function(E,B){function ka(a,b,d){if(d===B&&a.nodeType===1){d=a.getAttribute("data-"+b);if(typeof d==="string"){try{d=d==="true"?true:d==="false"?false:d==="null"?null:!c.isNaN(d)?parseFloat(d):Ja.test(d)?c.parseJSON(d):d}catch(e){}c.data(a,b,d)}else d=B}return d}function U(){return false}function ca(){return true}function la(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function Ka(a){var b,d,e,f,h,l,k,o,x,r,A,C=[];f=[];h=c.data(this,this.nodeType?"events":"__events__");if(typeof h==="function")h= +h.events;if(!(a.liveFired===this||!h||!h.live||a.button&&a.type==="click")){if(a.namespace)A=RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");a.liveFired=this;var J=h.live.slice(0);for(k=0;kd)break;a.currentTarget=f.elem;a.data=f.handleObj.data;a.handleObj=f.handleObj;A=f.handleObj.origHandler.apply(f.elem,arguments);if(A===false||a.isPropagationStopped()){d=f.level;if(A===false)b=false;if(a.isImmediatePropagationStopped())break}}return b}}function Y(a,b){return(a&&a!=="*"?a+".":"")+b.replace(La, +"`").replace(Ma,"&")}function ma(a,b,d){if(c.isFunction(b))return c.grep(a,function(f,h){return!!b.call(f,h,f)===d});else if(b.nodeType)return c.grep(a,function(f){return f===b===d});else if(typeof b==="string"){var e=c.grep(a,function(f){return f.nodeType===1});if(Na.test(b))return c.filter(b,e,!d);else b=c.filter(b,e)}return c.grep(a,function(f){return c.inArray(f,b)>=0===d})}function na(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var e=c.data(a[d++]),f=c.data(this, +e);if(e=e&&e.events){delete f.handle;f.events={};for(var h in e)for(var l in e[h])c.event.add(this,h,e[h][l],e[h][l].data)}}})}function Oa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function oa(a,b,d){var e=b==="width"?a.offsetWidth:a.offsetHeight;if(d==="border")return e;c.each(b==="width"?Pa:Qa,function(){d||(e-=parseFloat(c.css(a,"padding"+this))||0);if(d==="margin")e+=parseFloat(c.css(a, +"margin"+this))||0;else e-=parseFloat(c.css(a,"border"+this+"Width"))||0});return e}function da(a,b,d,e){if(c.isArray(b)&&b.length)c.each(b,function(f,h){d||Ra.test(a)?e(a,h):da(a+"["+(typeof h==="object"||c.isArray(h)?f:"")+"]",h,d,e)});else if(!d&&b!=null&&typeof b==="object")c.isEmptyObject(b)?e(a,""):c.each(b,function(f,h){da(a+"["+f+"]",h,d,e)});else e(a,b)}function S(a,b){var d={};c.each(pa.concat.apply([],pa.slice(0,b)),function(){d[this]=a});return d}function qa(a){if(!ea[a]){var b=c("<"+ +a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d==="")d="block";ea[a]=d}return ea[a]}function fa(a){return c.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var t=E.document,c=function(){function a(){if(!b.isReady){try{t.documentElement.doScroll("left")}catch(j){setTimeout(a,1);return}b.ready()}}var b=function(j,s){return new b.fn.init(j,s)},d=E.jQuery,e=E.$,f,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,l=/\S/,k=/^\s+/,o=/\s+$/,x=/\W/,r=/\d/,A=/^<(\w+)\s*\/?>(?:<\/\1>)?$/, +C=/^[\],:{}\s]*$/,J=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,I=/(?:^|:|,)(?:\s*\[)+/g,L=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,i=/(msie) ([\w.]+)/,n=/(mozilla)(?:.*? rv:([\w.]+))?/,m=navigator.userAgent,p=false,q=[],u,y=Object.prototype.toString,F=Object.prototype.hasOwnProperty,M=Array.prototype.push,N=Array.prototype.slice,O=String.prototype.trim,D=Array.prototype.indexOf,R={};b.fn=b.prototype={init:function(j, +s){var v,z,H;if(!j)return this;if(j.nodeType){this.context=this[0]=j;this.length=1;return this}if(j==="body"&&!s&&t.body){this.context=t;this[0]=t.body;this.selector="body";this.length=1;return this}if(typeof j==="string")if((v=h.exec(j))&&(v[1]||!s))if(v[1]){H=s?s.ownerDocument||s:t;if(z=A.exec(j))if(b.isPlainObject(s)){j=[t.createElement(z[1])];b.fn.attr.call(j,s,true)}else j=[H.createElement(z[1])];else{z=b.buildFragment([v[1]],[H]);j=(z.cacheable?z.fragment.cloneNode(true):z.fragment).childNodes}return b.merge(this, +j)}else{if((z=t.getElementById(v[2]))&&z.parentNode){if(z.id!==v[2])return f.find(j);this.length=1;this[0]=z}this.context=t;this.selector=j;return this}else if(!s&&!x.test(j)){this.selector=j;this.context=t;j=t.getElementsByTagName(j);return b.merge(this,j)}else return!s||s.jquery?(s||f).find(j):b(s).find(j);else if(b.isFunction(j))return f.ready(j);if(j.selector!==B){this.selector=j.selector;this.context=j.context}return b.makeArray(j,this)},selector:"",jquery:"1.4.4",length:0,size:function(){return this.length}, +toArray:function(){return N.call(this,0)},get:function(j){return j==null?this.toArray():j<0?this.slice(j)[0]:this[j]},pushStack:function(j,s,v){var z=b();b.isArray(j)?M.apply(z,j):b.merge(z,j);z.prevObject=this;z.context=this.context;if(s==="find")z.selector=this.selector+(this.selector?" ":"")+v;else if(s)z.selector=this.selector+"."+s+"("+v+")";return z},each:function(j,s){return b.each(this,j,s)},ready:function(j){b.bindReady();if(b.isReady)j.call(t,b);else q&&q.push(j);return this},eq:function(j){return j=== +-1?this.slice(j):this.slice(j,+j+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(N.apply(this,arguments),"slice",N.call(arguments).join(","))},map:function(j){return this.pushStack(b.map(this,function(s,v){return j.call(s,v,s)}))},end:function(){return this.prevObject||b(null)},push:M,sort:[].sort,splice:[].splice};b.fn.init.prototype=b.fn;b.extend=b.fn.extend=function(){var j,s,v,z,H,G=arguments[0]||{},K=1,Q=arguments.length,ga=false; +if(typeof G==="boolean"){ga=G;G=arguments[1]||{};K=2}if(typeof G!=="object"&&!b.isFunction(G))G={};if(Q===K){G=this;--K}for(;K0))if(q){var s=0,v=q;for(q=null;j=v[s++];)j.call(t,b);b.fn.trigger&&b(t).trigger("ready").unbind("ready")}}},bindReady:function(){if(!p){p=true;if(t.readyState==="complete")return setTimeout(b.ready,1);if(t.addEventListener){t.addEventListener("DOMContentLoaded",u,false);E.addEventListener("load",b.ready,false)}else if(t.attachEvent){t.attachEvent("onreadystatechange",u);E.attachEvent("onload", +b.ready);var j=false;try{j=E.frameElement==null}catch(s){}t.documentElement.doScroll&&j&&a()}}},isFunction:function(j){return b.type(j)==="function"},isArray:Array.isArray||function(j){return b.type(j)==="array"},isWindow:function(j){return j&&typeof j==="object"&&"setInterval"in j},isNaN:function(j){return j==null||!r.test(j)||isNaN(j)},type:function(j){return j==null?String(j):R[y.call(j)]||"object"},isPlainObject:function(j){if(!j||b.type(j)!=="object"||j.nodeType||b.isWindow(j))return false;if(j.constructor&& +!F.call(j,"constructor")&&!F.call(j.constructor.prototype,"isPrototypeOf"))return false;for(var s in j);return s===B||F.call(j,s)},isEmptyObject:function(j){for(var s in j)return false;return true},error:function(j){throw j;},parseJSON:function(j){if(typeof j!=="string"||!j)return null;j=b.trim(j);if(C.test(j.replace(J,"@").replace(w,"]").replace(I,"")))return E.JSON&&E.JSON.parse?E.JSON.parse(j):(new Function("return "+j))();else b.error("Invalid JSON: "+j)},noop:function(){},globalEval:function(j){if(j&& +l.test(j)){var s=t.getElementsByTagName("head")[0]||t.documentElement,v=t.createElement("script");v.type="text/javascript";if(b.support.scriptEval)v.appendChild(t.createTextNode(j));else v.text=j;s.insertBefore(v,s.firstChild);s.removeChild(v)}},nodeName:function(j,s){return j.nodeName&&j.nodeName.toUpperCase()===s.toUpperCase()},each:function(j,s,v){var z,H=0,G=j.length,K=G===B||b.isFunction(j);if(v)if(K)for(z in j){if(s.apply(j[z],v)===false)break}else for(;H
    a";var f=d.getElementsByTagName("*"),h=d.getElementsByTagName("a")[0],l=t.createElement("select"), +k=l.appendChild(t.createElement("option"));if(!(!f||!f.length||!h)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(h.getAttribute("style")),hrefNormalized:h.getAttribute("href")==="/a",opacity:/^0.55$/.test(h.style.opacity),cssFloat:!!h.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:k.selected,deleteExpando:true,optDisabled:false,checkClone:false, +scriptEval:false,noCloneEvent:true,boxModel:null,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableHiddenOffsets:true};l.disabled=true;c.support.optDisabled=!k.disabled;b.type="text/javascript";try{b.appendChild(t.createTextNode("window."+e+"=1;"))}catch(o){}a.insertBefore(b,a.firstChild);if(E[e]){c.support.scriptEval=true;delete E[e]}try{delete b.test}catch(x){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function r(){c.support.noCloneEvent= +false;d.detachEvent("onclick",r)});d.cloneNode(true).fireEvent("onclick")}d=t.createElement("div");d.innerHTML="";a=t.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var r=t.createElement("div");r.style.width=r.style.paddingLeft="1px";t.body.appendChild(r);c.boxModel=c.support.boxModel=r.offsetWidth===2;if("zoom"in r.style){r.style.display="inline";r.style.zoom= +1;c.support.inlineBlockNeedsLayout=r.offsetWidth===2;r.style.display="";r.innerHTML="
    ";c.support.shrinkWrapBlocks=r.offsetWidth!==2}r.innerHTML="
    t
    ";var A=r.getElementsByTagName("td");c.support.reliableHiddenOffsets=A[0].offsetHeight===0;A[0].style.display="";A[1].style.display="none";c.support.reliableHiddenOffsets=c.support.reliableHiddenOffsets&&A[0].offsetHeight===0;r.innerHTML="";t.body.removeChild(r).style.display= +"none"});a=function(r){var A=t.createElement("div");r="on"+r;var C=r in A;if(!C){A.setAttribute(r,"return;");C=typeof A[r]==="function"}return C};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=f=h=null}})();var ra={},Ja=/^(?:\{.*\}|\[.*\])$/;c.extend({cache:{},uuid:0,expando:"jQuery"+c.now(),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},data:function(a,b,d){if(c.acceptData(a)){a=a==E?ra:a;var e=a.nodeType,f=e?a[c.expando]:null,h= +c.cache;if(!(e&&!f&&typeof b==="string"&&d===B)){if(e)f||(a[c.expando]=f=++c.uuid);else h=a;if(typeof b==="object")if(e)h[f]=c.extend(h[f],b);else c.extend(h,b);else if(e&&!h[f])h[f]={};a=e?h[f]:h;if(d!==B)a[b]=d;return typeof b==="string"?a[b]:a}}},removeData:function(a,b){if(c.acceptData(a)){a=a==E?ra:a;var d=a.nodeType,e=d?a[c.expando]:a,f=c.cache,h=d?f[e]:e;if(b){if(h){delete h[b];d&&c.isEmptyObject(h)&&c.removeData(a)}}else if(d&&c.support.deleteExpando)delete a[c.expando];else if(a.removeAttribute)a.removeAttribute(c.expando); +else if(d)delete f[e];else for(var l in a)delete a[l]}},acceptData:function(a){if(a.nodeName){var b=c.noData[a.nodeName.toLowerCase()];if(b)return!(b===true||a.getAttribute("classid")!==b)}return true}});c.fn.extend({data:function(a,b){var d=null;if(typeof a==="undefined"){if(this.length){var e=this[0].attributes,f;d=c.data(this[0]);for(var h=0,l=e.length;h-1)return true;return false},val:function(a){if(!arguments.length){var b=this[0];if(b){if(c.nodeName(b,"option")){var d=b.attributes.value;return!d||d.specified?b.value:b.text}if(c.nodeName(b,"select")){var e=b.selectedIndex;d=[];var f=b.options;b=b.type==="select-one"; +if(e<0)return null;var h=b?e:0;for(e=b?e+1:f.length;h=0;else if(c.nodeName(this,"select")){var A=c.makeArray(r);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),A)>=0});if(!A.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true}, +attr:function(a,b,d,e){if(!a||a.nodeType===3||a.nodeType===8)return B;if(e&&b in c.attrFn)return c(a)[b](d);e=a.nodeType!==1||!c.isXMLDoc(a);var f=d!==B;b=e&&c.props[b]||b;var h=Ta.test(b);if((b in a||a[b]!==B)&&e&&!h){if(f){b==="type"&&Ua.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");if(d===null)a.nodeType===1&&a.removeAttribute(b);else a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&& +b.specified?b.value:Va.test(a.nodeName)||Wa.test(a.nodeName)&&a.href?0:B;return a[b]}if(!c.support.style&&e&&b==="style"){if(f)a.style.cssText=""+d;return a.style.cssText}f&&a.setAttribute(b,""+d);if(!a.attributes[b]&&a.hasAttribute&&!a.hasAttribute(b))return B;a=!c.support.hrefNormalized&&e&&h?a.getAttribute(b,2):a.getAttribute(b);return a===null?B:a}});var X=/\.(.*)$/,ia=/^(?:textarea|input|select)$/i,La=/\./g,Ma=/ /g,Xa=/[^\w\s.|`]/g,Ya=function(a){return a.replace(Xa,"\\$&")},ua={focusin:0,focusout:0}; +c.event={add:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(c.isWindow(a)&&a!==E&&!a.frameElement)a=E;if(d===false)d=U;else if(!d)return;var f,h;if(d.handler){f=d;d=f.handler}if(!d.guid)d.guid=c.guid++;if(h=c.data(a)){var l=a.nodeType?"events":"__events__",k=h[l],o=h.handle;if(typeof k==="function"){o=k.handle;k=k.events}else if(!k){a.nodeType||(h[l]=h=function(){});h.events=k={}}if(!o)h.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem, +arguments):B};o.elem=a;b=b.split(" ");for(var x=0,r;l=b[x++];){h=f?c.extend({},f):{handler:d,data:e};if(l.indexOf(".")>-1){r=l.split(".");l=r.shift();h.namespace=r.slice(0).sort().join(".")}else{r=[];h.namespace=""}h.type=l;if(!h.guid)h.guid=d.guid;var A=k[l],C=c.event.special[l]||{};if(!A){A=k[l]=[];if(!C.setup||C.setup.call(a,e,r,o)===false)if(a.addEventListener)a.addEventListener(l,o,false);else a.attachEvent&&a.attachEvent("on"+l,o)}if(C.add){C.add.call(a,h);if(!h.handler.guid)h.handler.guid= +d.guid}A.push(h);c.event.global[l]=true}a=null}}},global:{},remove:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(d===false)d=U;var f,h,l=0,k,o,x,r,A,C,J=a.nodeType?"events":"__events__",w=c.data(a),I=w&&w[J];if(w&&I){if(typeof I==="function"){w=I;I=I.events}if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(f in I)c.event.remove(a,f+b)}else{for(b=b.split(" ");f=b[l++];){r=f;k=f.indexOf(".")<0;o=[];if(!k){o=f.split(".");f=o.shift();x=RegExp("(^|\\.)"+ +c.map(o.slice(0).sort(),Ya).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(A=I[f])if(d){r=c.event.special[f]||{};for(h=e||0;h=0){a.type=f=f.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[f]&&c.each(c.cache,function(){this.events&&this.events[f]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType=== +8)return B;a.result=B;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(e=d.nodeType?c.data(d,"handle"):(c.data(d,"__events__")||{}).handle)&&e.apply(d,b);e=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+f]&&d["on"+f].apply(d,b)===false){a.result=false;a.preventDefault()}}catch(h){}if(!a.isPropagationStopped()&&e)c.event.trigger(a,b,e,true);else if(!a.isDefaultPrevented()){var l;e=a.target;var k=f.replace(X,""),o=c.nodeName(e,"a")&&k=== +"click",x=c.event.special[k]||{};if((!x._default||x._default.call(d,a)===false)&&!o&&!(e&&e.nodeName&&c.noData[e.nodeName.toLowerCase()])){try{if(e[k]){if(l=e["on"+k])e["on"+k]=null;c.event.triggered=true;e[k]()}}catch(r){}if(l)e["on"+k]=l;c.event.triggered=false}}},handle:function(a){var b,d,e,f;d=[];var h=c.makeArray(arguments);a=h[0]=c.event.fix(a||E.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;if(!b){e=a.type.split(".");a.type=e.shift();d=e.slice(0).sort();e=RegExp("(^|\\.)"+ +d.join("\\.(?:.*\\.)?")+"(\\.|$)")}a.namespace=a.namespace||d.join(".");f=c.data(this,this.nodeType?"events":"__events__");if(typeof f==="function")f=f.events;d=(f||{})[a.type];if(f&&d){d=d.slice(0);f=0;for(var l=d.length;f-1?c.map(a.options,function(e){return e.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},Z=function(a,b){var d=a.target,e,f;if(!(!ia.test(d.nodeName)||d.readOnly)){e=c.data(d,"_change_data");f=xa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",f);if(!(e===B||f===e))if(e!=null||f){a.type="change";a.liveFired= +B;return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:Z,beforedeactivate:Z,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return Z.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return Z.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,"_change_data",xa(a))}},setup:function(){if(this.type=== +"file")return false;for(var a in V)c.event.add(this,a+".specialChange",V[a]);return ia.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return ia.test(this.nodeName)}};V=c.event.special.change.filters;V.focus=V.beforeactivate}t.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.trigger(e,null,e.target)}c.event.special[b]={setup:function(){ua[b]++===0&&t.addEventListener(a,d,true)},teardown:function(){--ua[b]=== +0&&t.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,e,f){if(typeof d==="object"){for(var h in d)this[b](h,e,d[h],f);return this}if(c.isFunction(e)||e===false){f=e;e=B}var l=b==="one"?c.proxy(f,function(o){c(this).unbind(o,l);return f.apply(this,arguments)}):f;if(d==="unload"&&b!=="one")this.one(d,e,f);else{h=0;for(var k=this.length;h0?this.bind(b,d,e):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});E.attachEvent&&!E.addEventListener&&c(E).bind("unload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}}); +(function(){function a(g,i,n,m,p,q){p=0;for(var u=m.length;p0){F=y;break}}y=y[g]}m[p]=F}}}var d=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,h=false,l=true;[0,0].sort(function(){l=false;return 0});var k=function(g,i,n,m){n=n||[];var p=i=i||t;if(i.nodeType!==1&&i.nodeType!==9)return[];if(!g||typeof g!=="string")return n;var q,u,y,F,M,N=true,O=k.isXML(i),D=[],R=g;do{d.exec("");if(q=d.exec(R)){R=q[3];D.push(q[1]);if(q[2]){F=q[3]; +break}}}while(q);if(D.length>1&&x.exec(g))if(D.length===2&&o.relative[D[0]])u=L(D[0]+D[1],i);else for(u=o.relative[D[0]]?[i]:k(D.shift(),i);D.length;){g=D.shift();if(o.relative[g])g+=D.shift();u=L(g,u)}else{if(!m&&D.length>1&&i.nodeType===9&&!O&&o.match.ID.test(D[0])&&!o.match.ID.test(D[D.length-1])){q=k.find(D.shift(),i,O);i=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]}if(i){q=m?{expr:D.pop(),set:C(m)}:k.find(D.pop(),D.length===1&&(D[0]==="~"||D[0]==="+")&&i.parentNode?i.parentNode:i,O);u=q.expr?k.filter(q.expr, +q.set):q.set;if(D.length>0)y=C(u);else N=false;for(;D.length;){q=M=D.pop();if(o.relative[M])q=D.pop();else M="";if(q==null)q=i;o.relative[M](y,q,O)}}else y=[]}y||(y=u);y||k.error(M||g);if(f.call(y)==="[object Array]")if(N)if(i&&i.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&k.contains(i,y[g])))n.push(u[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&n.push(u[g]);else n.push.apply(n,y);else C(y,n);if(F){k(F,p,n,m);k.uniqueSort(n)}return n};k.uniqueSort=function(g){if(w){h= +l;g.sort(w);if(h)for(var i=1;i0};k.find=function(g,i,n){var m;if(!g)return[];for(var p=0,q=o.order.length;p":function(g,i){var n,m=typeof i==="string",p=0,q=g.length;if(m&&!/\W/.test(i))for(i=i.toLowerCase();p=0))n||m.push(u);else if(n)i[q]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var i=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=i[1]+(i[2]||1)-0;g[3]=i[3]-0}g[0]=e++;return g},ATTR:function(g,i,n, +m,p,q){i=g[1].replace(/\\/g,"");if(!q&&o.attrMap[i])g[1]=o.attrMap[i];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,i,n,m,p){if(g[1]==="not")if((d.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,i);else{g=k.filter(g[3],i,n,true^p);n||m.push.apply(m,g);return false}else if(o.match.POS.test(g[0])||o.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled=== +true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,i,n){return!!k(n[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"=== +g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,i){return i===0},last:function(g,i,n,m){return i===m.length-1},even:function(g,i){return i%2===0},odd:function(g,i){return i%2===1},lt:function(g,i,n){return in[3]-0},nth:function(g,i,n){return n[3]- +0===i},eq:function(g,i,n){return n[3]-0===i}},filter:{PSEUDO:function(g,i,n,m){var p=i[1],q=o.filters[p];if(q)return q(g,n,i,m);else if(p==="contains")return(g.textContent||g.innerText||k.getText([g])||"").indexOf(i[3])>=0;else if(p==="not"){i=i[3];n=0;for(m=i.length;n=0}},ID:function(g,i){return g.nodeType===1&&g.getAttribute("id")===i},TAG:function(g,i){return i==="*"&&g.nodeType===1||g.nodeName.toLowerCase()=== +i},CLASS:function(g,i){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(i)>-1},ATTR:function(g,i){var n=i[1];n=o.attrHandle[n]?o.attrHandle[n](g):g[n]!=null?g[n]:g.getAttribute(n);var m=n+"",p=i[2],q=i[4];return n==null?p==="!=":p==="="?m===q:p==="*="?m.indexOf(q)>=0:p==="~="?(" "+m+" ").indexOf(q)>=0:!q?m&&n!==false:p==="!="?m!==q:p==="^="?m.indexOf(q)===0:p==="$="?m.substr(m.length-q.length)===q:p==="|="?m===q||m.substr(0,q.length+1)===q+"-":false},POS:function(g,i,n,m){var p=o.setFilters[i[2]]; +if(p)return p(g,n,i,m)}}},x=o.match.POS,r=function(g,i){return"\\"+(i-0+1)},A;for(A in o.match){o.match[A]=RegExp(o.match[A].source+/(?![^\[]*\])(?![^\(]*\))/.source);o.leftMatch[A]=RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[A].source.replace(/\\(\d+)/g,r))}var C=function(g,i){g=Array.prototype.slice.call(g,0);if(i){i.push.apply(i,g);return i}return g};try{Array.prototype.slice.call(t.documentElement.childNodes,0)}catch(J){C=function(g,i){var n=0,m=i||[];if(f.call(g)==="[object Array]")Array.prototype.push.apply(m, +g);else if(typeof g.length==="number")for(var p=g.length;n";n.insertBefore(g,n.firstChild);if(t.getElementById(i)){o.find.ID=function(m,p,q){if(typeof p.getElementById!=="undefined"&&!q)return(p=p.getElementById(m[1]))?p.id===m[1]||typeof p.getAttributeNode!=="undefined"&&p.getAttributeNode("id").nodeValue===m[1]?[p]:B:[]};o.filter.ID=function(m,p){var q=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&q&&q.nodeValue===p}}n.removeChild(g); +n=g=null})();(function(){var g=t.createElement("div");g.appendChild(t.createComment(""));if(g.getElementsByTagName("*").length>0)o.find.TAG=function(i,n){var m=n.getElementsByTagName(i[1]);if(i[1]==="*"){for(var p=[],q=0;m[q];q++)m[q].nodeType===1&&p.push(m[q]);m=p}return m};g.innerHTML="";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")o.attrHandle.href=function(i){return i.getAttribute("href",2)};g=null})();t.querySelectorAll&& +function(){var g=k,i=t.createElement("div");i.innerHTML="

    ";if(!(i.querySelectorAll&&i.querySelectorAll(".TEST").length===0)){k=function(m,p,q,u){p=p||t;m=m.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!u&&!k.isXML(p))if(p.nodeType===9)try{return C(p.querySelectorAll(m),q)}catch(y){}else if(p.nodeType===1&&p.nodeName.toLowerCase()!=="object"){var F=p.getAttribute("id"),M=F||"__sizzle__";F||p.setAttribute("id",M);try{return C(p.querySelectorAll("#"+M+" "+m),q)}catch(N){}finally{F|| +p.removeAttribute("id")}}return g(m,p,q,u)};for(var n in g)k[n]=g[n];i=null}}();(function(){var g=t.documentElement,i=g.matchesSelector||g.mozMatchesSelector||g.webkitMatchesSelector||g.msMatchesSelector,n=false;try{i.call(t.documentElement,"[test!='']:sizzle")}catch(m){n=true}if(i)k.matchesSelector=function(p,q){q=q.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(p))try{if(n||!o.match.PSEUDO.test(q)&&!/!=/.test(q))return i.call(p,q)}catch(u){}return k(q,null,null,[p]).length>0}})();(function(){var g= +t.createElement("div");g.innerHTML="
    ";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){o.order.splice(1,0,"CLASS");o.find.CLASS=function(i,n,m){if(typeof n.getElementsByClassName!=="undefined"&&!m)return n.getElementsByClassName(i[1])};g=null}}})();k.contains=t.documentElement.contains?function(g,i){return g!==i&&(g.contains?g.contains(i):true)}:t.documentElement.compareDocumentPosition? +function(g,i){return!!(g.compareDocumentPosition(i)&16)}:function(){return false};k.isXML=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false};var L=function(g,i){for(var n,m=[],p="",q=i.nodeType?[i]:i;n=o.match.PSEUDO.exec(g);){p+=n[0];g=g.replace(o.match.PSEUDO,"")}g=o.relative[g]?g+"*":g;n=0;for(var u=q.length;n0)for(var h=d;h0},closest:function(a,b){var d=[],e,f,h=this[0];if(c.isArray(a)){var l,k={},o=1;if(h&&a.length){e=0;for(f=a.length;e-1:c(h).is(e))d.push({selector:l,elem:h,level:o})}h= +h.parentNode;o++}}return d}l=cb.test(a)?c(a,b||this.context):null;e=0;for(f=this.length;e-1:c.find.matchesSelector(h,a)){d.push(h);break}else{h=h.parentNode;if(!h||!h.ownerDocument||h===b)break}d=d.length>1?c.unique(d):d;return this.pushStack(d,"closest",a)},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var d=typeof a==="string"?c(a,b||this.context): +c.makeArray(a),e=c.merge(this.get(),d);return this.pushStack(!d[0]||!d[0].parentNode||d[0].parentNode.nodeType===11||!e[0]||!e[0].parentNode||e[0].parentNode.nodeType===11?e:c.unique(e))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a, +2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a, +b){c.fn[a]=function(d,e){var f=c.map(this,b,d);Za.test(a)||(e=d);if(e&&typeof e==="string")f=c.filter(e,f);f=this.length>1?c.unique(f):f;if((this.length>1||ab.test(e))&&$a.test(a))f=f.reverse();return this.pushStack(f,a,bb.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return b.length===1?c.find.matchesSelector(b[0],a)?[b[0]]:[]:c.find.matches(a,b)},dir:function(a,b,d){var e=[];for(a=a[b];a&&a.nodeType!==9&&(d===B||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&& +e.push(a);a=a[b]}return e},nth:function(a,b,d){b=b||1;for(var e=0;a;a=a[d])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var za=/ jQuery\d+="(?:\d+|null)"/g,$=/^\s+/,Aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Ba=/<([\w:]+)/,db=/\s]+\/)>/g,P={option:[1, +""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]};P.optgroup=P.option;P.tbody=P.tfoot=P.colgroup=P.caption=P.thead;P.th=P.td;if(!c.support.htmlSerialize)P._default=[1,"div
    ","
    "];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==B)return this.empty().append((this[0]&&this[0].ownerDocument||t).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,e;(e=this[d])!=null;d++)if(!a||c.filter(a,[e]).length){if(!b&&e.nodeType===1){c.cleanData(e.getElementsByTagName("*"));c.cleanData([e])}e.parentNode&&e.parentNode.removeChild(e)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,e=this.ownerDocument;if(!d){d=e.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(za,"").replace(fb,'="$1">').replace($,"")],e)[0]}else return this.cloneNode(true)});if(a===true){na(this,b);na(this.find("*"),b.find("*"))}return b},html:function(a){if(a===B)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(za,""):null; +else if(typeof a==="string"&&!Ca.test(a)&&(c.support.leadingWhitespace||!$.test(a))&&!P[(Ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Aa,"<$1>");try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?h.cloneNode(true):h)}k.length&&c.each(k,Oa)}return this}});c.buildFragment=function(a,b,d){var e,f,h;b=b&&b[0]?b[0].ownerDocument||b[0]:t;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===t&&!Ca.test(a[0])&&(c.support.checkClone||!Da.test(a[0]))){f=true;if(h=c.fragments[a[0]])if(h!==1)e=h}if(!e){e=b.createDocumentFragment();c.clean(a,b,e,d)}if(f)c.fragments[a[0]]=h?e:1;return{fragment:e,cacheable:f}};c.fragments={};c.each({appendTo:"append", +prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var e=[];d=c(d);var f=this.length===1&&this[0].parentNode;if(f&&f.nodeType===11&&f.childNodes.length===1&&d.length===1){d[b](this[0]);return this}else{f=0;for(var h=d.length;f0?this.clone(true):this).get();c(d[f])[b](l);e=e.concat(l)}return this.pushStack(e,a,d.selector)}}});c.extend({clean:function(a,b,d,e){b=b||t;if(typeof b.createElement==="undefined")b=b.ownerDocument|| +b[0]&&b[0].ownerDocument||t;for(var f=[],h=0,l;(l=a[h])!=null;h++){if(typeof l==="number")l+="";if(l){if(typeof l==="string"&&!eb.test(l))l=b.createTextNode(l);else if(typeof l==="string"){l=l.replace(Aa,"<$1>");var k=(Ba.exec(l)||["",""])[1].toLowerCase(),o=P[k]||P._default,x=o[0],r=b.createElement("div");for(r.innerHTML=o[1]+l+o[2];x--;)r=r.lastChild;if(!c.support.tbody){x=db.test(l);k=k==="table"&&!x?r.firstChild&&r.firstChild.childNodes:o[1]===""&&!x?r.childNodes:[];for(o=k.length- +1;o>=0;--o)c.nodeName(k[o],"tbody")&&!k[o].childNodes.length&&k[o].parentNode.removeChild(k[o])}!c.support.leadingWhitespace&&$.test(l)&&r.insertBefore(b.createTextNode($.exec(l)[0]),r.firstChild);l=r.childNodes}if(l.nodeType)f.push(l);else f=c.merge(f,l)}}if(d)for(h=0;f[h];h++)if(e&&c.nodeName(f[h],"script")&&(!f[h].type||f[h].type.toLowerCase()==="text/javascript"))e.push(f[h].parentNode?f[h].parentNode.removeChild(f[h]):f[h]);else{f[h].nodeType===1&&f.splice.apply(f,[h+1,0].concat(c.makeArray(f[h].getElementsByTagName("script")))); +d.appendChild(f[h])}return f},cleanData:function(a){for(var b,d,e=c.cache,f=c.event.special,h=c.support.deleteExpando,l=0,k;(k=a[l])!=null;l++)if(!(k.nodeName&&c.noData[k.nodeName.toLowerCase()]))if(d=k[c.expando]){if((b=e[d])&&b.events)for(var o in b.events)f[o]?c.event.remove(k,o):c.removeEvent(k,o,b.handle);if(h)delete k[c.expando];else k.removeAttribute&&k.removeAttribute(c.expando);delete e[d]}}});var Ea=/alpha\([^)]*\)/i,gb=/opacity=([^)]*)/,hb=/-([a-z])/ig,ib=/([A-Z])/g,Fa=/^-?\d+(?:px)?$/i, +jb=/^-?\d/,kb={position:"absolute",visibility:"hidden",display:"block"},Pa=["Left","Right"],Qa=["Top","Bottom"],W,Ga,aa,lb=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){if(arguments.length===2&&b===B)return this;return c.access(this,a,b,true,function(d,e,f){return f!==B?c.style(d,e,f):c.css(d,e)})};c.extend({cssHooks:{opacity:{get:function(a,b){if(b){var d=W(a,"opacity","opacity");return d===""?"1":d}else return a.style.opacity}}},cssNumber:{zIndex:true,fontWeight:true,opacity:true, +zoom:true,lineHeight:true},cssProps:{"float":c.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,d,e){if(!(!a||a.nodeType===3||a.nodeType===8||!a.style)){var f,h=c.camelCase(b),l=a.style,k=c.cssHooks[h];b=c.cssProps[h]||h;if(d!==B){if(!(typeof d==="number"&&isNaN(d)||d==null)){if(typeof d==="number"&&!c.cssNumber[h])d+="px";if(!k||!("set"in k)||(d=k.set(a,d))!==B)try{l[b]=d}catch(o){}}}else{if(k&&"get"in k&&(f=k.get(a,false,e))!==B)return f;return l[b]}}},css:function(a,b,d){var e,f=c.camelCase(b), +h=c.cssHooks[f];b=c.cssProps[f]||f;if(h&&"get"in h&&(e=h.get(a,true,d))!==B)return e;else if(W)return W(a,b,f)},swap:function(a,b,d){var e={},f;for(f in b){e[f]=a.style[f];a.style[f]=b[f]}d.call(a);for(f in b)a.style[f]=e[f]},camelCase:function(a){return a.replace(hb,lb)}});c.curCSS=c.css;c.each(["height","width"],function(a,b){c.cssHooks[b]={get:function(d,e,f){var h;if(e){if(d.offsetWidth!==0)h=oa(d,b,f);else c.swap(d,kb,function(){h=oa(d,b,f)});if(h<=0){h=W(d,b,b);if(h==="0px"&&aa)h=aa(d,b,b); +if(h!=null)return h===""||h==="auto"?"0px":h}if(h<0||h==null){h=d.style[b];return h===""||h==="auto"?"0px":h}return typeof h==="string"?h:h+"px"}},set:function(d,e){if(Fa.test(e)){e=parseFloat(e);if(e>=0)return e+"px"}else return e}}});if(!c.support.opacity)c.cssHooks.opacity={get:function(a,b){return gb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var d=a.style;d.zoom=1;var e=c.isNaN(b)?"":"alpha(opacity="+b*100+")",f= +d.filter||"";d.filter=Ea.test(f)?f.replace(Ea,e):d.filter+" "+e}};if(t.defaultView&&t.defaultView.getComputedStyle)Ga=function(a,b,d){var e;d=d.replace(ib,"-$1").toLowerCase();if(!(b=a.ownerDocument.defaultView))return B;if(b=b.getComputedStyle(a,null)){e=b.getPropertyValue(d);if(e===""&&!c.contains(a.ownerDocument.documentElement,a))e=c.style(a,d)}return e};if(t.documentElement.currentStyle)aa=function(a,b){var d,e,f=a.currentStyle&&a.currentStyle[b],h=a.style;if(!Fa.test(f)&&jb.test(f)){d=h.left; +e=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;h.left=b==="fontSize"?"1em":f||0;f=h.pixelLeft+"px";h.left=d;a.runtimeStyle.left=e}return f===""?"auto":f};W=Ga||aa;if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetHeight;return a.offsetWidth===0&&b===0||!c.support.reliableHiddenOffsets&&(a.style.display||c.css(a,"display"))==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var mb=c.now(),nb=/)<[^<]*)*<\/script>/gi, +ob=/^(?:select|textarea)/i,pb=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,qb=/^(?:GET|HEAD)$/,Ra=/\[\]$/,T=/\=\?(&|$)/,ja=/\?/,rb=/([?&])_=[^&]*/,sb=/^(\w+:)?\/\/([^\/?#]+)/,tb=/%20/g,ub=/#.*$/,Ha=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!=="string"&&Ha)return Ha.apply(this,arguments);else if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}e="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b=== +"object"){b=c.param(b,c.ajaxSettings.traditional);e="POST"}var h=this;c.ajax({url:a,type:e,dataType:"html",data:b,complete:function(l,k){if(k==="success"||k==="notmodified")h.html(f?c("
    ").append(l.responseText.replace(nb,"")).find(f):l.responseText);d&&h.each(d,[l.responseText,k,l])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&& +!this.disabled&&(this.checked||ob.test(this.nodeName)||pb.test(this.type))}).map(function(a,b){var d=c(this).val();return d==null?null:c.isArray(d)?c.map(d,function(e){return{name:b.name,value:e}}):{name:b.name,value:d}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:e})}, +getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:e})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return new E.XMLHttpRequest},accepts:{xml:"application/xml, text/xml",html:"text/html", +script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},ajax:function(a){var b=c.extend(true,{},c.ajaxSettings,a),d,e,f,h=b.type.toUpperCase(),l=qb.test(h);b.url=b.url.replace(ub,"");b.context=a&&a.context!=null?a.context:b;if(b.data&&b.processData&&typeof b.data!=="string")b.data=c.param(b.data,b.traditional);if(b.dataType==="jsonp"){if(h==="GET")T.test(b.url)||(b.url+=(ja.test(b.url)?"&":"?")+(b.jsonp||"callback")+"=?");else if(!b.data|| +!T.test(b.data))b.data=(b.data?b.data+"&":"")+(b.jsonp||"callback")+"=?";b.dataType="json"}if(b.dataType==="json"&&(b.data&&T.test(b.data)||T.test(b.url))){d=b.jsonpCallback||"jsonp"+mb++;if(b.data)b.data=(b.data+"").replace(T,"="+d+"$1");b.url=b.url.replace(T,"="+d+"$1");b.dataType="script";var k=E[d];E[d]=function(m){if(c.isFunction(k))k(m);else{E[d]=B;try{delete E[d]}catch(p){}}f=m;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);r&&r.removeChild(A)}}if(b.dataType==="script"&&b.cache===null)b.cache= +false;if(b.cache===false&&l){var o=c.now(),x=b.url.replace(rb,"$1_="+o);b.url=x+(x===b.url?(ja.test(b.url)?"&":"?")+"_="+o:"")}if(b.data&&l)b.url+=(ja.test(b.url)?"&":"?")+b.data;b.global&&c.active++===0&&c.event.trigger("ajaxStart");o=(o=sb.exec(b.url))&&(o[1]&&o[1].toLowerCase()!==location.protocol||o[2].toLowerCase()!==location.host);if(b.dataType==="script"&&h==="GET"&&o){var r=t.getElementsByTagName("head")[0]||t.documentElement,A=t.createElement("script");if(b.scriptCharset)A.charset=b.scriptCharset; +A.src=b.url;if(!d){var C=false;A.onload=A.onreadystatechange=function(){if(!C&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){C=true;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);A.onload=A.onreadystatechange=null;r&&A.parentNode&&r.removeChild(A)}}}r.insertBefore(A,r.firstChild);return B}var J=false,w=b.xhr();if(w){b.username?w.open(h,b.url,b.async,b.username,b.password):w.open(h,b.url,b.async);try{if(b.data!=null&&!l||a&&a.contentType)w.setRequestHeader("Content-Type", +b.contentType);if(b.ifModified){c.lastModified[b.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[b.url]);c.etag[b.url]&&w.setRequestHeader("If-None-Match",c.etag[b.url])}o||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",b.dataType&&b.accepts[b.dataType]?b.accepts[b.dataType]+", */*; q=0.01":b.accepts._default)}catch(I){}if(b.beforeSend&&b.beforeSend.call(b.context,w,b)===false){b.global&&c.active--===1&&c.event.trigger("ajaxStop");w.abort();return false}b.global&& +c.triggerGlobal(b,"ajaxSend",[w,b]);var L=w.onreadystatechange=function(m){if(!w||w.readyState===0||m==="abort"){J||c.handleComplete(b,w,e,f);J=true;if(w)w.onreadystatechange=c.noop}else if(!J&&w&&(w.readyState===4||m==="timeout")){J=true;w.onreadystatechange=c.noop;e=m==="timeout"?"timeout":!c.httpSuccess(w)?"error":b.ifModified&&c.httpNotModified(w,b.url)?"notmodified":"success";var p;if(e==="success")try{f=c.httpData(w,b.dataType,b)}catch(q){e="parsererror";p=q}if(e==="success"||e==="notmodified")d|| +c.handleSuccess(b,w,e,f);else c.handleError(b,w,e,p);d||c.handleComplete(b,w,e,f);m==="timeout"&&w.abort();if(b.async)w=null}};try{var g=w.abort;w.abort=function(){w&&Function.prototype.call.call(g,w);L("abort")}}catch(i){}b.async&&b.timeout>0&&setTimeout(function(){w&&!J&&L("timeout")},b.timeout);try{w.send(l||b.data==null?null:b.data)}catch(n){c.handleError(b,w,null,n);c.handleComplete(b,w,e,f)}b.async||L();return w}},param:function(a,b){var d=[],e=function(h,l){l=c.isFunction(l)?l():l;d[d.length]= +encodeURIComponent(h)+"="+encodeURIComponent(l)};if(b===B)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){e(this.name,this.value)});else for(var f in a)da(f,a[f],b,e);return d.join("&").replace(tb,"+")}});c.extend({active:0,lastModified:{},etag:{},handleError:function(a,b,d,e){a.error&&a.error.call(a.context,b,d,e);a.global&&c.triggerGlobal(a,"ajaxError",[b,a,e])},handleSuccess:function(a,b,d,e){a.success&&a.success.call(a.context,e,d,b);a.global&&c.triggerGlobal(a,"ajaxSuccess", +[b,a])},handleComplete:function(a,b,d){a.complete&&a.complete.call(a.context,b,d);a.global&&c.triggerGlobal(a,"ajaxComplete",[b,a]);a.global&&c.active--===1&&c.event.trigger("ajaxStop")},triggerGlobal:function(a,b,d){(a.context&&a.context.url==null?c(a.context):c.event).trigger(b,d)},httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"), +e=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(e)c.etag[b]=e;return a.status===304},httpData:function(a,b,d){var e=a.getResponseHeader("content-type")||"",f=b==="xml"||!b&&e.indexOf("xml")>=0;a=f?a.responseXML:a.responseText;f&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&e.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&e.indexOf("javascript")>=0)c.globalEval(a);return a}}); +if(E.ActiveXObject)c.ajaxSettings.xhr=function(){if(E.location.protocol!=="file:")try{return new E.XMLHttpRequest}catch(a){}try{return new E.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}};c.support.ajax=!!c.ajaxSettings.xhr();var ea={},vb=/^(?:toggle|show|hide)$/,wb=/^([+\-]=)?([\d+.\-]+)(.*)$/,ba,pa=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b,d){if(a||a===0)return this.animate(S("show", +3),a,b,d);else{d=0;for(var e=this.length;d=0;e--)if(d[e].elem===this){b&&d[e](true);d.splice(e,1)}});b||this.dequeue();return this}});c.each({slideDown:S("show",1),slideUp:S("hide",1),slideToggle:S("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){c.fn[a]=function(d,e,f){return this.animate(b, +d,e,f)}});c.extend({speed:function(a,b,d){var e=a&&typeof a==="object"?c.extend({},a):{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};e.duration=c.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in c.fx.speeds?c.fx.speeds[e.duration]:c.fx.speeds._default;e.old=e.complete;e.complete=function(){e.queue!==false&&c(this).dequeue();c.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,d,e){return d+e*a},swing:function(a,b,d,e){return(-Math.cos(a* +Math.PI)/2+0.5)*e+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(c.css(this.elem,this.prop));return a&&a>-1E4?a:0},custom:function(a,b,d){function e(l){return f.step(l)} +var f=this,h=c.fx;this.startTime=c.now();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;e.elem=this.elem;if(e()&&c.timers.push(e)&&!ba)ba=setInterval(h.tick,h.interval)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true; +this.custom(this.cur(),0)},step:function(a){var b=c.now(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var e in this.options.curAnim)if(this.options.curAnim[e]!==true)d=false;if(d){if(this.options.overflow!=null&&!c.support.shrinkWrapBlocks){var f=this.elem,h=this.options;c.each(["","X","Y"],function(k,o){f.style["overflow"+o]=h.overflow[k]})}this.options.hide&&c(this.elem).hide();if(this.options.hide|| +this.options.show)for(var l in this.options.curAnim)c.style(this.elem,l,this.options.orig[l]);this.options.complete.call(this.elem)}return false}else{a=b-this.startTime;this.state=a/this.options.duration;b=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||b](this.state,a,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a= +c.timers,b=0;b-1;e={};var x={};if(o)x=f.position();l=o?x.top:parseInt(l,10)||0;k=o?x.left:parseInt(k,10)||0;if(c.isFunction(b))b=b.call(a,d,h);if(b.top!=null)e.top=b.top-h.top+l;if(b.left!=null)e.left=b.left-h.left+k;"using"in b?b.using.call(a, +e):f.css(e)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),e=Ia.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.css(a,"marginTop"))||0;d.left-=parseFloat(c.css(a,"marginLeft"))||0;e.top+=parseFloat(c.css(b[0],"borderTopWidth"))||0;e.left+=parseFloat(c.css(b[0],"borderLeftWidth"))||0;return{top:d.top-e.top,left:d.left-e.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||t.body;a&&!Ia.test(a.nodeName)&& +c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(e){var f=this[0],h;if(!f)return null;if(e!==B)return this.each(function(){if(h=fa(this))h.scrollTo(!a?e:c(h).scrollLeft(),a?e:c(h).scrollTop());else this[d]=e});else return(h=fa(f))?"pageXOffset"in h?h[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&h.document.documentElement[d]||h.document.body[d]:f[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase(); +c.fn["inner"+b]=function(){return this[0]?parseFloat(c.css(this[0],d,"padding")):null};c.fn["outer"+b]=function(e){return this[0]?parseFloat(c.css(this[0],d,e?"margin":"border")):null};c.fn[d]=function(e){var f=this[0];if(!f)return e==null?null:this;if(c.isFunction(e))return this.each(function(l){var k=c(this);k[d](e.call(this,l,k[d]()))});if(c.isWindow(f))return f.document.compatMode==="CSS1Compat"&&f.document.documentElement["client"+b]||f.document.body["client"+b];else if(f.nodeType===9)return Math.max(f.documentElement["client"+ +b],f.body["scroll"+b],f.documentElement["scroll"+b],f.body["offset"+b],f.documentElement["offset"+b]);else if(e===B){f=c.css(f,d);var h=parseFloat(f);return c.isNaN(h)?f:h}else return this.css(d,typeof e==="string"?e:e+"px")}})})(window); diff --git a/src/mod/endpoints/mod_rtmp/Makefile.am b/src/mod/endpoints/mod_rtmp/Makefile.am index c9e84239ea..843c79ca40 100644 --- a/src/mod/endpoints/mod_rtmp/Makefile.am +++ b/src/mod/endpoints/mod_rtmp/Makefile.am @@ -1,7 +1,7 @@ include $(top_srcdir)/build/modmake.rulesam MODNAME=mod_rtmp mod_LTLIBRARIES = mod_rtmp.la -mod_rtmp_la_SOURCES = mod_rtmp.c rtmp_sig.c rtmp.c rtmp_tcp.c +mod_rtmp_la_SOURCES = mod_rtmp.c rtmp_sig.c rtmp.c rtmp_tcp.c rtmp_video.c mod_rtmp_la_SOURCES += libamf/src/amf0.c libamf/src/hash.c libamf/src/io.c libamf/src/ptrarray.c libamf/src/types.c mod_rtmp_la_CFLAGS = $(AM_CFLAGS) -Ilibamf/src -I$(abs_srcdir)/libamf/src mod_rtmp_la_LIBADD = $(switch_builddir)/libfreeswitch.la diff --git a/src/mod/endpoints/mod_rtmp/handshake.h b/src/mod/endpoints/mod_rtmp/handshake.h new file mode 100644 index 0000000000..e6a9f1443d --- /dev/null +++ b/src/mod/endpoints/mod_rtmp/handshake.h @@ -0,0 +1,771 @@ +/* + * Copyright (C) 2008-2009 Andrej Stepanchuk + * Copyright (C) 2009-2010 Howard Chu + * Copyright (C) 2010 2a665470ced7adb7156fcef47f8199a6371c117b8a79e399a2771e0b36384090 + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +/* This file is #included in rtmp.c, it is not meant to be compiled alone */ + +#ifndef _RTMP_VIDEO_H +#define _RTMP_VIDEO_H + +#include +#include + +#if OPENSSL_VERSION_NUMBER < 0x0090800 || !defined(SHA256_DIGEST_LENGTH) +#error Your OpenSSL is too old, need 0.9.8 or newer with SHA256 +#endif +#define HMAC_setup(ctx, key, len) HMAC_CTX_init(&ctx); HMAC_Init_ex(&ctx, key, len, EVP_sha256(), 0) +#define HMAC_crunch(ctx, buf, len) HMAC_Update(&ctx, buf, len) +#define HMAC_finish(ctx, dig, dlen) HMAC_Final(&ctx, dig, &dlen); HMAC_CTX_cleanup(&ctx) + +#define FP10 +#define RTMP_SIG_SIZE 1536 + +static const uint8_t GenuineFMSKey[] = { + 0x47, 0x65, 0x6e, 0x75, 0x69, 0x6e, 0x65, 0x20, 0x41, 0x64, 0x6f, 0x62, + 0x65, 0x20, 0x46, 0x6c, + 0x61, 0x73, 0x68, 0x20, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x20, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, + 0x20, 0x30, 0x30, 0x31, /* Genuine Adobe Flash Media Server 001 */ + + 0xf0, 0xee, 0xc2, 0x4a, 0x80, 0x68, 0xbe, 0xe8, 0x2e, 0x00, 0xd0, 0xd1, + 0x02, 0x9e, 0x7e, 0x57, 0x6e, 0xec, 0x5d, 0x2d, 0x29, 0x80, 0x6f, 0xab, + 0x93, 0xb8, 0xe6, 0x36, + 0xcf, 0xeb, 0x31, 0xae +}; /* 68 */ + +static const uint8_t GenuineFPKey[] = { + 0x47, 0x65, 0x6E, 0x75, 0x69, 0x6E, 0x65, 0x20, 0x41, 0x64, 0x6F, 0x62, + 0x65, 0x20, 0x46, 0x6C, + 0x61, 0x73, 0x68, 0x20, 0x50, 0x6C, 0x61, 0x79, 0x65, 0x72, 0x20, 0x30, + 0x30, 0x31, /* Genuine Adobe Flash Player 001 */ + 0xF0, 0xEE, + 0xC2, 0x4A, 0x80, 0x68, 0xBE, 0xE8, 0x2E, 0x00, 0xD0, 0xD1, 0x02, 0x9E, + 0x7E, 0x57, 0x6E, 0xEC, + 0x5D, 0x2D, 0x29, 0x80, 0x6F, 0xAB, 0x93, 0xB8, 0xE6, 0x36, 0xCF, 0xEB, + 0x31, 0xAE +}; /* 62 */ + +typedef unsigned int (getoff)(uint8_t *buf, unsigned int len); + +typedef enum { + RTMP_LOGCRIT=0, + RTMP_LOGERROR, + RTMP_LOGWARNING, + RTMP_LOGINFO, + RTMP_LOGDEBUG, + RTMP_LOGDEBUG2, + RTMP_LOGALL +} RTMP_LogLevel; + +void RTMP_Log(int level, const char *format, ...) +{ +} + +void RTMP_LogHex(int level, const uint8_t *data, unsigned long len) +{ +} + +static unsigned int GetDigestOffset2(uint8_t *handshake, unsigned int len) +{ + unsigned int offset = 0; + uint8_t *ptr = handshake + 772; + unsigned int res; + + offset += (*ptr); + ptr++; + offset += (*ptr); + ptr++; + offset += (*ptr); + ptr++; + offset += (*ptr); + + res = (offset % 728) + 776; + + if (res + 32 > 1535) { + RTMP_Log(RTMP_LOGERROR, "%s: Couldn't calculate correct digest offset (got %d), exiting", __FUNCTION__, res); + } + return res; +} + +static unsigned int GetDigestOffset1(uint8_t *handshake, unsigned int len) +{ + unsigned int offset = 0; + uint8_t *ptr = handshake + 8; + unsigned int res; + + assert(12 <= len); + + offset += (*ptr); + ptr++; + offset += (*ptr); + ptr++; + offset += (*ptr); + ptr++; + offset += (*ptr); + + res = (offset % 728) + 12; + + if (res + 32 > 771) { + RTMP_Log(RTMP_LOGERROR, + "%s: Couldn't calculate digest offset (got %d), exiting!", + __FUNCTION__, res); + } + + return res; +} + +static getoff *digoff[] = {GetDigestOffset1, GetDigestOffset2}; +// static getoff *dhoff[] = {GetDHOffset1, GetDHOffset2}; + +static void HMACsha256(const uint8_t *message, size_t messageLen, const uint8_t *key, size_t keylen, uint8_t *digest) +{ + unsigned int digestLen; + HMAC_CTX ctx; + + HMAC_setup(ctx, key, keylen); + HMAC_crunch(ctx, message, messageLen); + HMAC_finish(ctx, digest, digestLen); + + assert(digestLen == 32); +} + +static void CalculateDigest(unsigned int digestPos, uint8_t *handshakeMessage, const uint8_t *key, size_t keyLen, uint8_t *digest) +{ + const int messageLen = RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH; + uint8_t message[RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH]; + + memcpy(message, handshakeMessage, digestPos); + memcpy(message + digestPos, + &handshakeMessage[digestPos + SHA256_DIGEST_LENGTH], + messageLen - digestPos); + + HMACsha256(message, messageLen, key, keyLen, digest); +} + +static int VerifyDigest(unsigned int digestPos, uint8_t *handshakeMessage, const uint8_t *key, size_t keyLen) +{ + uint8_t calcDigest[SHA256_DIGEST_LENGTH]; + + CalculateDigest(digestPos, handshakeMessage, key, keyLen, calcDigest); + + return memcmp(&handshakeMessage[digestPos], calcDigest, SHA256_DIGEST_LENGTH) == 0; +} + +/* handshake +* +* Type = [1 bytes] plain: 0x03, encrypted: 0x06, 0x08, 0x09 +* -------------------------------------------------------------------- [1536 bytes] +* Uptime = [4 bytes] big endian unsigned number, uptime +* Version = [4 bytes] each byte represents a version number, e.g. 9.0.124.0 +* ... +* +*/ + +static const uint32_t rtmpe8_keys[16][4] = { + {0xbff034b2, 0x11d9081f, 0xccdfb795, 0x748de732}, + {0x086a5eb6, 0x1743090e, 0x6ef05ab8, 0xfe5a39e2}, + {0x7b10956f, 0x76ce0521, 0x2388a73a, 0x440149a1}, + {0xa943f317, 0xebf11bb2, 0xa691a5ee, 0x17f36339}, + {0x7a30e00a, 0xb529e22c, 0xa087aea5, 0xc0cb79ac}, + {0xbdce0c23, 0x2febdeff, 0x1cfaae16, 0x1123239d}, + {0x55dd3f7b, 0x77e7e62e, 0x9bb8c499, 0xc9481ee4}, + {0x407bb6b4, 0x71e89136, 0xa7aebf55, 0xca33b839}, + {0xfcf6bdc3, 0xb63c3697, 0x7ce4f825, 0x04d959b2}, + {0x28e091fd, 0x41954c4c, 0x7fb7db00, 0xe3a066f8}, + {0x57845b76, 0x4f251b03, 0x46d45bcd, 0xa2c30d29}, + {0x0acceef8, 0xda55b546, 0x03473452, 0x5863713b}, + {0xb82075dc, 0xa75f1fee, 0xd84268e8, 0xa72a44cc}, + {0x07cf6e9e, 0xa16d7b25, 0x9fa7ae6c, 0xd92f5629}, + {0xfeb1eae4, 0x8c8c3ce1, 0x4e0064a7, 0x6a387c2a}, + {0x893a9427, 0xcc3013a2, 0xf106385b, 0xa829f927} +}; + +/* RTMPE type 8 uses XTEA on the regular signature +* http://en.wikipedia.org/wiki/XTEA +*/ +static void rtmpe8_sig(uint8_t *in, uint8_t *out, int keyid) +{ + unsigned int i, num_rounds = 32; + uint32_t v0, v1, sum=0, delta=0x9E3779B9; + uint32_t const *k; + + v0 = in[0] | (in[1] << 8) | (in[2] << 16) | (in[3] << 24); + v1 = in[4] | (in[5] << 8) | (in[6] << 16) | (in[7] << 24); + k = rtmpe8_keys[keyid]; + + for (i=0; i < num_rounds; i++) { + v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]); + sum += delta; + v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]); + } + + out[0] = v0; v0 >>= 8; + out[1] = v0; v0 >>= 8; + out[2] = v0; v0 >>= 8; + out[3] = v0; + + out[4] = v1; v1 >>= 8; + out[5] = v1; v1 >>= 8; + out[6] = v1; v1 >>= 8; + out[7] = v1; +} + +/* RTMPE type 9 uses Blowfish on the regular signature +* http://en.wikipedia.org/wiki/Blowfish_(cipher) +*/ +#define BF_ROUNDS 16 +typedef struct bf_key { + uint32_t s[4][256]; + uint32_t p[BF_ROUNDS+2]; +} bf_key; + +static const uint32_t bf_sinit[][256] = { + /* S-Box 0 */ + { 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96, + 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, + 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0x0d95748f, 0x728eb658, + 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, + 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e, + 0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, + 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 0x55ca396a, 0x2aab10b6, + 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, + 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c, + 0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, + 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d, 0xe98575b1, + 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, + 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a, + 0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, + 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176, + 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, + 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706, + 0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, + 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b, + 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, + 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c, + 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, + 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a, + 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, + 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760, + 0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, + 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 0x695b27b0, 0xbbca58c8, + 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, + 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33, + 0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, + 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0, 0xafc725e0, + 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, + 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777, + 0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, + 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705, + 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, + 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e, + 0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, + 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9, + 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, + 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f, + 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, + 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a, }, + + /* S-Box 1 */ + { 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, + 0x9cee60b8, 0x8fedb266, 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, + 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, + 0x6b8fe4d6, 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, + 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, + 0x3c971814, 0x6b6a70a1, 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, + 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d, + 0xf01c1f04, 0x0200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, + 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, + 0xc8b57634, 0x9af3dda7, 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, + 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908, + 0x6f420d03, 0xf60a04bf, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, + 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, + 0x501adde6, 0x9f84cd87, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, + 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908, + 0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, + 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, + 0x3c11183b, 0x5924a509, 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, + 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa, + 0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, + 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, + 0x1939260f, 0x19c27960, 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, + 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, + 0x65582185, 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, + 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, + 0x0334fe1e, 0xaa0363cf, 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, + 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, + 0xa02369b9, 0x655abb50, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, + 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, + 0x11ed935f, 0x16681281, 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, + 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054, + 0x8fd948e4, 0x6dbc3128, 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, + 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, + 0xdb6c4f15, 0xfacb4fd0, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, + 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646, + 0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, + 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea, + 0x1dadf43e, 0x233f7061, 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, + 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e, + 0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, + 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd, + 0x675fda79, 0xe3674340, 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, + 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7, }, + + /* S-Box 2 */ + { 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, 0x411520f7, 0x7602d4f7, + 0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, + 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, 0x4d95fc1d, 0x96b591af, + 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, + 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, 0x28507825, 0x530429f4, + 0x0a2c86da, 0xe9b66dfb, 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, + 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, 0xaace1e7c, 0xd3375fec, + 0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, + 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74, 0xdd5b4332, + 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, + 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, 0x55a867bc, 0xa1159a58, + 0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, + 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22, + 0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, + 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, 0x257b7834, 0x602a9c60, + 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, + 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99, + 0xde720c8c, 0x2da2f728, 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, + 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, 0x0a476341, 0x992eff74, + 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, + 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3, + 0xb5390f92, 0x690fed0b, 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, + 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, 0x37392eb3, 0xcc115979, + 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, + 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, 0x1a6b1018, 0x11caedfa, + 0x3d25bdd8, 0xe2e1c3c9, 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, + 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, 0x9dbc8057, 0xf0f7c086, + 0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, + 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be, 0xbde8ae24, + 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, + 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, 0x7aeb2661, 0x8b1ddf84, + 0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, + 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09, + 0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, + 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, 0xdcb7da83, 0x573906fe, + 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, + 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0, + 0x006058aa, 0x30dc7d62, 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, + 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, 0x6f05e409, 0x4b7c0188, + 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, + 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8, + 0xa28514d9, 0x6c51133c, 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, + 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0, }, + + /* S-Box 3 */ + { 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742, + 0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, + 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f, 0xbc946e79, + 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, + 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a, + 0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, + 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1, + 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, + 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797, + 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, + 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6, + 0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, + 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba, + 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, + 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xb155fdf5, + 0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, + 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce, + 0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, + 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 0xb39a460a, 0x6445c0dd, + 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, + 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb, + 0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, + 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc, + 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, + 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc, + 0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, + 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a, + 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, + 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a, + 0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, + 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b, + 0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, + 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e, + 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, + 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 0xf523f357, 0xa6327623, + 0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, + 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a, + 0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, + 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 0x53113ec0, 0x1640e3d3, + 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, + 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c, + 0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, + 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6, }, +}; + +static const uint32_t bf_pinit[] = { + /* P-Box */ + 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0, + 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, + 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b, +}; + +#define KEYBYTES 24 + +static const unsigned char rtmpe9_keys[16][KEYBYTES] = { + { 0x79, 0x34, 0x77, 0x4c, 0x67, 0xd1, 0x38, 0x3a, 0xdf, 0xb3, 0x56, 0xbe, + 0x8b, 0x7b, 0xd0, 0x24, 0x38, 0xe0, 0x73, 0x58, 0x41, 0x5d, 0x69, 0x67, }, + { 0x46, 0xf6, 0xb4, 0xcc, 0x01, 0x93, 0xe3, 0xa1, 0x9e, 0x7d, 0x3c, 0x65, + 0x55, 0x86, 0xfd, 0x09, 0x8f, 0xf7, 0xb3, 0xc4, 0x6f, 0x41, 0xca, 0x5c, }, + { 0x1a, 0xe7, 0xe2, 0xf3, 0xf9, 0x14, 0x79, 0x94, 0xc0, 0xd3, 0x97, 0x43, + 0x08, 0x7b, 0xb3, 0x84, 0x43, 0x2f, 0x9d, 0x84, 0x3f, 0x21, 0x01, 0x9b, }, + { 0xd3, 0xe3, 0x54, 0xb0, 0xf7, 0x1d, 0xf6, 0x2b, 0x5a, 0x43, 0x4d, 0x04, + 0x83, 0x64, 0x3e, 0x0d, 0x59, 0x2f, 0x61, 0xcb, 0xb1, 0x6a, 0x59, 0x0d, }, + { 0xc8, 0xc1, 0xe9, 0xb8, 0x16, 0x56, 0x99, 0x21, 0x7b, 0x5b, 0x36, 0xb7, + 0xb5, 0x9b, 0xdf, 0x06, 0x49, 0x2c, 0x97, 0xf5, 0x95, 0x48, 0x85, 0x7e, }, + { 0xeb, 0xe5, 0xe6, 0x2e, 0xa4, 0xba, 0xd4, 0x2c, 0xf2, 0x16, 0xe0, 0x8f, + 0x66, 0x23, 0xa9, 0x43, 0x41, 0xce, 0x38, 0x14, 0x84, 0x95, 0x00, 0x53, }, + { 0x66, 0xdb, 0x90, 0xf0, 0x3b, 0x4f, 0xf5, 0x6f, 0xe4, 0x9c, 0x20, 0x89, + 0x35, 0x5e, 0xd2, 0xb2, 0xc3, 0x9e, 0x9f, 0x7f, 0x63, 0xb2, 0x28, 0x81, }, + { 0xbb, 0x20, 0xac, 0xed, 0x2a, 0x04, 0x6a, 0x19, 0x94, 0x98, 0x9b, 0xc8, + 0xff, 0xcd, 0x93, 0xef, 0xc6, 0x0d, 0x56, 0xa7, 0xeb, 0x13, 0xd9, 0x30, }, + { 0xbc, 0xf2, 0x43, 0x82, 0x09, 0x40, 0x8a, 0x87, 0x25, 0x43, 0x6d, 0xe6, + 0xbb, 0xa4, 0xb9, 0x44, 0x58, 0x3f, 0x21, 0x7c, 0x99, 0xbb, 0x3f, 0x24, }, + { 0xec, 0x1a, 0xaa, 0xcd, 0xce, 0xbd, 0x53, 0x11, 0xd2, 0xfb, 0x83, 0xb6, + 0xc3, 0xba, 0xab, 0x4f, 0x62, 0x79, 0xe8, 0x65, 0xa9, 0x92, 0x28, 0x76, }, + { 0xc6, 0x0c, 0x30, 0x03, 0x91, 0x18, 0x2d, 0x7b, 0x79, 0xda, 0xe1, 0xd5, + 0x64, 0x77, 0x9a, 0x12, 0xc5, 0xb1, 0xd7, 0x91, 0x4f, 0x96, 0x4c, 0xa3, }, + { 0xd7, 0x7c, 0x2a, 0xbf, 0xa6, 0xe7, 0x85, 0x7c, 0x45, 0xad, 0xff, 0x12, + 0x94, 0xd8, 0xde, 0xa4, 0x5c, 0x3d, 0x79, 0xa4, 0x44, 0x02, 0x5d, 0x22, }, + { 0x16, 0x19, 0x0d, 0x81, 0x6a, 0x4c, 0xc7, 0xf8, 0xb8, 0xf9, 0x4e, 0xcd, + 0x2c, 0x9e, 0x90, 0x84, 0xb2, 0x08, 0x25, 0x60, 0xe1, 0x1e, 0xae, 0x18, }, + { 0xe9, 0x7c, 0x58, 0x26, 0x1b, 0x51, 0x9e, 0x49, 0x82, 0x60, 0x61, 0xfc, + 0xa0, 0xa0, 0x1b, 0xcd, 0xf5, 0x05, 0xd6, 0xa6, 0x6d, 0x07, 0x88, 0xa3, }, + { 0x2b, 0x97, 0x11, 0x8b, 0xd9, 0x4e, 0xd9, 0xdf, 0x20, 0xe3, 0x9c, 0x10, + 0xe6, 0xa1, 0x35, 0x21, 0x11, 0xf9, 0x13, 0x0d, 0x0b, 0x24, 0x65, 0xb2, }, + { 0x53, 0x6a, 0x4c, 0x54, 0xac, 0x8b, 0x9b, 0xb8, 0x97, 0x29, 0xfc, 0x60, + 0x2c, 0x5b, 0x3a, 0x85, 0x68, 0xb5, 0xaa, 0x6a, 0x44, 0xcd, 0x3f, 0xa7, }, +}; + +#define BF_ENC(X,S) (((S[0][X>>24] + S[1][X>>16 & 0xff]) ^ S[2][(X>>8) & 0xff]) + S[3][X & 0xff]) + +static void bf_enc(uint32_t *x, bf_key *key) +{ + uint32_t Xl; + uint32_t Xr; + uint32_t temp; + int i; + + Xl = x[0]; + Xr = x[1]; + + for (i = 0; i < BF_ROUNDS; ++i) { + Xl ^= key->p[i]; + Xr ^= BF_ENC(Xl,key->s); + + temp = Xl; + Xl = Xr; + Xr = temp; + } + + Xl ^= key->p[BF_ROUNDS]; + Xr ^= key->p[BF_ROUNDS + 1]; + + x[0] = Xr; + x[1] = Xl; +} + +static void bf_setkey(const unsigned char *kp, int keybytes, bf_key *key) +{ + int i; + int j; + int k; + uint32_t data; + uint32_t d[2]; + + memcpy(key->p, bf_pinit, sizeof(key->p)); + memcpy(key->s, bf_sinit, sizeof(key->s)); + + j = 0; + for (i = 0; i < BF_ROUNDS + 2; ++i) { + data = 0x00000000; + for (k = 0; k < 4; ++k) { + data = (data << 8) | kp[j]; + j = j + 1; + if (j >= keybytes) { + j = 0; + } + } + key->p[i] ^= data; + } + + d[0] = 0x00000000; + d[1] = 0x00000000; + + for (i = 0; i < BF_ROUNDS + 2; i += 2) { + bf_enc(d, key); + + key->p[i] = d[0]; + key->p[i + 1] = d[1]; + } + + for (i = 0; i < 4; ++i) { + for (j = 0; j < 256; j += 2) { + bf_enc(d, key); + + key->s[i][j] = d[0]; + key->s[i][j + 1] = d[1]; + } + } +} + +static void rtmpe9_sig(uint8_t *in, uint8_t *out, int keyid) +{ + uint32_t d[2]; + bf_key key; + + bf_setkey(rtmpe9_keys[keyid], KEYBYTES, &key); + + /* input is little-endian */ + d[0] = in[0] | (in[1] << 8) | (in[2] << 16) | (in[3] << 24); + d[1] = in[4] | (in[5] << 8) | (in[6] << 16) | (in[7] << 24); + bf_enc(d, &key); + out[0] = d[0] & 0xff; + out[1] = (d[0] >> 8) & 0xff; + out[2] = (d[0] >> 16) & 0xff; + out[3] = (d[0] >> 24) & 0xff; + out[4] = d[1] & 0xff; + out[5] = (d[1] >> 8) & 0xff; + out[6] = (d[1] >> 16) & 0xff; + out[7] = (d[1] >> 24) & 0xff; +} + +uint32_t RTMP_GetTime() +{ +#ifdef _DEBUG + return 0; +#elif defined(_WIN32) + return timeGetTime(); +#else +#include + struct timeval tv; + gettimeofday(&tv, 0 ); + return tv.tv_usec; + // I cannot compile the following code on both Mac and Linux + // struct tms t; + // if (!clk_tck) clk_tck = sysconf(_SC_CLK_TCK); + // return times(&t) * 1000 / clk_tck; +#endif +} + +typedef struct handshake_helper { + unsigned char *r_buf; + unsigned char *w_buf; + + size_t r_pos; + size_t r_len; + + size_t w_pos; + size_t w_len; +} handshake_helper_t; + +static int ReadN(void * user_data, void * out_buffer, size_t size) +{ + handshake_helper_t *helper = (handshake_helper_t*)user_data; + size_t len = (helper->r_len - helper->r_pos) < size ? (helper->r_len - helper->r_pos) : size; + + if (len <= 0) return 0; + + memcpy(out_buffer, helper->r_buf + helper->r_pos, len); + helper->r_pos += len; + return len; +} + +static int WriteN(void * user_data, void * buffer, size_t size) +{ + handshake_helper_t *helper = (handshake_helper_t*)user_data; + size_t len = (helper->w_len - helper->w_pos) < size ? (helper->w_len - helper->w_pos) : size; + + if (len <= 0) return 0; + + memcpy(helper->w_buf + helper->w_pos, buffer, len); + helper->w_pos += len; + return len; +} + +static int SHandShake0(handshake_helper_t * r) +{ + + int i = 0; + int offalg = 0; + + int digestPosServer = 0; + + int FP9HandShake = FALSE; + + uint8_t clientsig[RTMP_SIG_SIZE]; + uint8_t serverbuf[RTMP_SIG_SIZE + 4]; + uint8_t *serversig = serverbuf+4; + uint8_t type; + uint32_t uptime; + // getoff *getdh = NULL; + getoff *getdig = NULL; + + + if (ReadN(r, (char *)&type, 1) != 1) { /* 0x03 or 0x06 */ + return FALSE; + } + + if (ReadN(r, (char *)clientsig, RTMP_SIG_SIZE) != RTMP_SIG_SIZE) { + return FALSE; + } + + RTMP_Log(RTMP_LOGDEBUG, "%s: Type Requested : %02X", __FUNCTION__, type); + RTMP_LogHex(RTMP_LOGDEBUG2, clientsig, RTMP_SIG_SIZE); + + if (type != 3) { + RTMP_Log(RTMP_LOGERROR, "%s: Unknown version %02x", + __FUNCTION__, type); + return FALSE; + } + + if (!FP9HandShake && clientsig[4]) FP9HandShake = TRUE; + + serversig[-1] = type; + //fix me ?? linux windows?? + uptime = htonl(RTMP_GetTime()); + memcpy(serversig, &uptime, 4); + + if (FP9HandShake) + { + /* Server version */ + serversig[4] = 3; + serversig[5] = 5; + serversig[6] = 1; + serversig[7] = 1; + + getdig = digoff[offalg]; + // getdh = dhoff[offalg]; + } else { + memset(&serversig[4], 0, 4); + } + + /* generate random data */ +#ifdef _DEBUG + memset(serversig+8, 0, RTMP_SIG_SIZE-8); +#elif defined(__APPLE__) + memset(serversig+8, 0, RTMP_SIG_SIZE-8); +#else + { + int32_t *ip = (int32_t *)(serversig+8); + for (i = 2; i < RTMP_SIG_SIZE/4; i++) { + *ip++ = rand(); + } + } +#endif + + /* set handshake digest */ + if (FP9HandShake) { + digestPosServer = getdig(serversig, RTMP_SIG_SIZE); /* reuse this value in verification */ + RTMP_Log(RTMP_LOGDEBUG, "%s: Server digest offset: %d", __FUNCTION__, digestPosServer); + + CalculateDigest(digestPosServer, serversig, GenuineFMSKey, 36, &serversig[digestPosServer]); + + RTMP_Log(RTMP_LOGDEBUG, "%s: Initial server digest: ", __FUNCTION__); + RTMP_LogHex(RTMP_LOGDEBUG, serversig + digestPosServer, SHA256_DIGEST_LENGTH); + } + + RTMP_Log(RTMP_LOGDEBUG2, "Serversig: "); + RTMP_LogHex(RTMP_LOGDEBUG2, serversig, RTMP_SIG_SIZE); + + if (!WriteN(r, (char *)serversig-1, RTMP_SIG_SIZE + 1)) return FALSE; + + /* decode client response */ + memcpy(&uptime, clientsig, 4); + uptime = ntohl(uptime); + + RTMP_Log(RTMP_LOGDEBUG, "%s: Client Uptime : %d", __FUNCTION__, uptime); + RTMP_Log(RTMP_LOGDEBUG, "%s: Player Version: %d.%d.%d.%d", __FUNCTION__, clientsig[4], + clientsig[5], clientsig[6], clientsig[7]); + + if (FP9HandShake) + { + uint8_t digestResp[SHA256_DIGEST_LENGTH]; + uint8_t *signatureResp = NULL; + + /* we have to use this signature now to find the correct algorithms for getting the digest and DH positions */ + int digestPosClient = getdig(clientsig, RTMP_SIG_SIZE); + + if (!VerifyDigest(digestPosClient, clientsig, GenuineFPKey, 30)) { + RTMP_Log(RTMP_LOGWARNING, "Trying different position for client digest!"); + offalg ^= 1; + getdig = digoff[offalg]; + // getdh = dhoff[offalg]; + + digestPosClient = getdig(clientsig, RTMP_SIG_SIZE); + + if (!VerifyDigest(digestPosClient, clientsig, GenuineFPKey, 30)) { + RTMP_Log(RTMP_LOGERROR, "Couldn't verify the client digest"); /* continuing anyway will probably fail */ + return FALSE; + } + } + + /* calculate response now */ + signatureResp = clientsig+RTMP_SIG_SIZE-SHA256_DIGEST_LENGTH; + + HMACsha256(&clientsig[digestPosClient], SHA256_DIGEST_LENGTH, + GenuineFMSKey, sizeof(GenuineFMSKey), digestResp); + HMACsha256(clientsig, RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH, digestResp, + SHA256_DIGEST_LENGTH, signatureResp); +#ifdef FP10 + if (type == 8 ) { + uint8_t *dptr = digestResp; + uint8_t *sig = signatureResp; + /* encrypt signatureResp */ + for (i=0; i * Anthony Minessale II * William King + * Seven Du * * mod_rtmp.c -- RTMP Endpoint Module * @@ -37,6 +38,7 @@ #endif #include "mod_rtmp.h" +#include "rtmp_video.h" SWITCH_MODULE_LOAD_FUNCTION(mod_rtmp_load); SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_rtmp_shutdown); @@ -68,7 +70,10 @@ switch_io_routines_t rtmp_io_routines = { /*.kill_channel */ rtmp_kill_channel, /*.send_dtmf */ rtmp_send_dtmf, /*.receive_message */ rtmp_receive_message, - /*.receive_event */ rtmp_receive_event + /*.receive_event */ rtmp_receive_event, + /*.state_change*/ NULL, + /*.rtmp_read_vid_frame */ rtmp_read_video_frame, + /*.rtmp_write_vid_frame */ rtmp_write_video_frame }; struct mod_rtmp_globals rtmp_globals; @@ -119,7 +124,7 @@ switch_status_t rtmp_tech_init(rtmp_private_t *tech_pvt, rtmp_session_t *rsessio } if (switch_core_codec_init(&tech_pvt->write_codec, /* name */ "SPEEX", /* modname */ NULL, - /* fmtp */ NULL, /* rate */ 16000, /* ms */ 20, /* channels */ 1, + /* fmtp */ NULL, /* rate */ 16000, /* ms */ 20, /* channels */ 1, /* flags */ SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, /* codec settings */ NULL, switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't initialize write codec\n"); @@ -133,8 +138,40 @@ switch_status_t rtmp_tech_init(rtmp_private_t *tech_pvt, rtmp_session_t *rsessio //static inline uint8_t rtmp_audio_codec(int channels, int bits, int rate, rtmp_audio_format_t format) { tech_pvt->audio_codec = 0xB2; //rtmp_audio_codec(1, 16, 0 /* speex is always 8000 */, RTMP_AUDIO_SPEEX); + if (tech_pvt->has_video) { + /* Initialize video read & write codecs */ + if (switch_core_codec_init(&tech_pvt->video_read_codec, /* name */ "H264", /* modname */ NULL, + /* fmtp */ NULL, /* rate */ 90000, /* ms */ 0, /* channels */ 1, + /* flags */ SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, + /* codec settings */ NULL, switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't initialize video read codec\n"); + + return SWITCH_STATUS_FALSE; + } + + if (switch_core_codec_init(&tech_pvt->video_write_codec, /* name */ "H264", /* modname */ NULL, + /* fmtp */ NULL, /* rate */ 90000, /* ms */ 0, /* channels */ 1, + /* flags */ SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, + /* codec settings */ NULL, switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't initialize write codec\n"); + + return SWITCH_STATUS_FALSE; + } + + switch_core_session_set_video_read_codec(session, &tech_pvt->video_read_codec); + switch_core_session_set_video_write_codec(session, &tech_pvt->video_write_codec); + switch_channel_set_flag(tech_pvt->channel, CF_VIDEO); + + tech_pvt->mparams.external_video_source = SWITCH_TRUE; + switch_media_handle_create(&tech_pvt->media_handle, session, &tech_pvt->mparams); + + on_rtmp_tech_init(session, tech_pvt); + } + switch_core_session_set_private(session, tech_pvt); + // switch_core_session_start_video_thread(session); + return SWITCH_STATUS_SUCCESS; } @@ -232,6 +269,7 @@ switch_status_t rtmp_on_destroy(switch_core_session_t *session) switch_buffer_destroy(&tech_pvt->readbuf); switch_core_timer_destroy(&tech_pvt->timer); + on_rtmp_destroy(tech_pvt); } return SWITCH_STATUS_SUCCESS; @@ -294,6 +332,15 @@ switch_status_t rtmp_on_hangup(switch_core_session_t *session) switch_thread_rwlock_unlock(rsession->session_rwlock); } +#if 0 + // this block could replace the above if block, not sure if it's safe + switch_core_hash_delete_wrlock(rsession->session_hash, switch_core_session_get_uuid(session), rsession->session_rwlock); + + switch_mutex_lock(rsession->count_mutex); + rsession->active_sessions--; + switch_mutex_unlock(rsession->count_mutex); +#endif + #ifndef RTMP_DONT_HOLD if (switch_channel_test_flag(channel, CF_HOLD)) { switch_channel_mark_hold(channel, SWITCH_FALSE); @@ -451,6 +498,7 @@ switch_status_t rtmp_write_frame(switch_core_session_t *session, switch_frame_t //switch_frame_t *pframe; unsigned char buf[AMF_MAX_SIZE]; switch_time_t ts; + switch_status_t status = SWITCH_STATUS_SUCCESS; channel = switch_core_session_get_channel(session); assert(channel != NULL); @@ -460,36 +508,36 @@ switch_status_t rtmp_write_frame(switch_core_session_t *session, switch_frame_t rsession = tech_pvt->rtmp_session; if ( rsession == NULL ) { - goto error_null; + return SWITCH_STATUS_FALSE; } switch_thread_rwlock_wrlock(rsession->rwlock); if (!switch_test_flag(tech_pvt, TFLAG_IO)) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "TFLAG_IO not set\n"); - goto error; + switch_goto_status(SWITCH_STATUS_FALSE, end); } if (switch_test_flag(tech_pvt, TFLAG_DETACHED) || !switch_test_flag(rsession, SFLAG_AUDIO)) { - goto success; + switch_goto_status(SWITCH_STATUS_SUCCESS, end); } if (!rsession || !tech_pvt->audio_codec || !tech_pvt->write_channel) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing mandatory value\n"); - goto error; + switch_goto_status(SWITCH_STATUS_FALSE, end); } if (rsession->state >= RS_DESTROY) { - goto error; + switch_goto_status(SWITCH_STATUS_FALSE, end); } if (frame->datalen+1 > frame->buflen) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Datalen too big\n"); - goto error; + switch_goto_status(SWITCH_STATUS_FALSE, end); } if (frame->flags & SFF_CNG) { - goto success; + switch_goto_status(SWITCH_STATUS_SUCCESS, end); } /* Build message */ @@ -504,20 +552,13 @@ switch_status_t rtmp_write_frame(switch_core_session_t *session, switch_frame_t ts = (switch_micro_time_now() / 1000) - tech_pvt->stream_start_ts; } - rtmp_send_message(rsession, RTMP_DEFAULT_STREAM_AUDIO, ts, RTMP_TYPE_AUDIO, rsession->media_streamid, buf, frame->datalen + 1, 0); + status = rtmp_send_message(rsession, RTMP_DEFAULT_STREAM_AUDIO, ts, RTMP_TYPE_AUDIO, rsession->media_streamid, buf, frame->datalen + 1, 0); - success: +end: switch_thread_rwlock_unlock(rsession->rwlock); - return SWITCH_STATUS_SUCCESS; - - error: - switch_thread_rwlock_unlock(rsession->rwlock); - - error_null: - return SWITCH_STATUS_FALSE; + return status; } - switch_status_t rtmp_receive_message(switch_core_session_t *session, switch_core_session_message_t *msg) { switch_channel_t *channel; @@ -546,7 +587,19 @@ switch_status_t rtmp_receive_message(switch_core_session_t *session, switch_core case SWITCH_MESSAGE_INDICATE_UNHOLD: rtmp_notify_call_state(session); break; + case SWITCH_MESSAGE_INDICATE_BRIDGE: + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Flushing read buffer\n"); + + switch_mutex_lock(tech_pvt->readbuf_mutex); + switch_buffer_zero(tech_pvt->readbuf); + switch_mutex_unlock(tech_pvt->readbuf_mutex); + if (tech_pvt->has_video) { + switch_mutex_lock(tech_pvt->video_readbuf_mutex); + switch_buffer_zero(tech_pvt->video_readbuf); + switch_mutex_unlock(tech_pvt->video_readbuf_mutex); + } + break; case SWITCH_MESSAGE_INDICATE_DISPLAY: { const char *name = msg->string_array_arg[0], *number = msg->string_array_arg[1]; @@ -584,6 +637,41 @@ switch_status_t rtmp_receive_message(switch_core_session_t *session, switch_core switch_safe_free(arg); } break; + case SWITCH_MESSAGE_INDICATE_DEBUG_MEDIA: + { + rtmp_session_t *rsession = tech_pvt->rtmp_session; + const char *direction = msg->string_array_arg[0]; + int video = 0; + + if (direction && *direction == 'v') { + direction++; + video = 1; + } + + if (!zstr(direction) && !zstr(msg->string_array_arg[1])) { + int both = !strcasecmp(direction, "both"); + uint8_t flag = 0; + + if (both || !strcasecmp(direction, "read")) { + flag |= (video ? RTMP_MD_VIDEO_READ : RTMP_MD_AUDIO_READ); + } + + if (both || !strcasecmp(direction, "write")) { + flag |= (video ? RTMP_MD_VIDEO_WRITE : RTMP_MD_AUDIO_WRITE); + } + + if (flag) { + if (switch_true(msg->string_array_arg[1])) { + rsession->media_debug |= flag; + } else { + rsession->media_debug &= ~flag; + } + } else { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Invalid Options\n"); + } + } + } + break; default: break; } @@ -595,9 +683,9 @@ switch_status_t rtmp_receive_message(switch_core_session_t *session, switch_core that allocate memory or you will have 1 channel with memory allocated from another channel's pool! */ switch_call_cause_t rtmp_outgoing_channel(switch_core_session_t *session, switch_event_t *var_event, - switch_caller_profile_t *outbound_profile, - switch_core_session_t **newsession, switch_memory_pool_t **inpool, switch_originate_flag_t flags, - switch_call_cause_t *cancel_cause) + switch_caller_profile_t *outbound_profile, + switch_core_session_t **newsession, switch_memory_pool_t **inpool, switch_originate_flag_t flags, + switch_call_cause_t *cancel_cause) { rtmp_private_t *tech_pvt; switch_caller_profile_t *caller_profile; @@ -645,6 +733,25 @@ switch_call_cause_t rtmp_outgoing_channel(switch_core_session_t *session, switch tech_pvt->caller_profile = caller_profile; switch_core_session_add_stream(*newsession, NULL); + if (session) { + const char *video_possible; + + video_possible = switch_channel_get_variable(switch_core_session_get_channel(session), "video_possible"); + if (video_possible && switch_true(video_possible)) { + tech_pvt->has_video = 1; + } + } + + if (var_event) { + const char *video_possible = NULL; + + video_possible = switch_event_get_header(var_event, "video_possible"); + + if (video_possible && switch_true(video_possible)) { + tech_pvt->has_video = 1; + } + } + if (rtmp_tech_init(tech_pvt, rsession, *newsession) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(*newsession), SWITCH_LOG_ERROR, "tech_init failed\n"); cause = SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; @@ -662,7 +769,7 @@ switch_call_cause_t rtmp_outgoing_channel(switch_core_session_t *session, switch switch_channel_ring_ready(channel); rtmp_send_incoming_call(*newsession, var_event); - + // switch_channel_set_flag(channel, CF_VIDEO); switch_channel_set_state(channel, CS_INIT); switch_set_flag_locked(tech_pvt, TFLAG_IO); @@ -762,12 +869,15 @@ switch_status_t rtmp_session_request(rtmp_profile_t *profile, rtmp_session_t **n switch_core_new_memory_pool(&pool); *newsession = switch_core_alloc(pool, sizeof(rtmp_session_t)); + memset(*newsession, 0, sizeof(rtmp_session_t)); (*newsession)->pool = pool; (*newsession)->profile = profile; (*newsession)->in_chunksize = (*newsession)->out_chunksize = RTMP_DEFAULT_CHUNKSIZE; (*newsession)->recv_ack_window = RTMP_DEFAULT_ACK_WINDOW; + (*newsession)->send_ack_window = RTMP_DEFAULT_ACK_WINDOW; (*newsession)->next_streamid = 1; (*newsession)->io_private = NULL; + (*newsession)->dropped_video_frame = 0; switch_uuid_get(&uuid); switch_uuid_format((*newsession)->uuid, &uuid); @@ -786,10 +896,13 @@ switch_status_t rtmp_session_request(rtmp_profile_t *profile, rtmp_session_t **n #ifdef RTMP_DEBUG_IO { char buf[1024]; +#ifndef _WIN32 +#else snprintf(buf, sizeof(buf), "/tmp/rtmp-%s-in.txt", (*newsession)->uuid); (*newsession)->io_debug_in = fopen(buf, "w"); snprintf(buf, sizeof(buf), "/tmp/rtmp-%s-out.txt", (*newsession)->uuid); (*newsession)->io_debug_out = fopen(buf, "w"); +#endif } #endif @@ -982,6 +1095,15 @@ switch_call_cause_t rtmp_session_create_call(rtmp_session_t *rsession, switch_co tech_pvt->caller_profile = caller_profile; switch_core_session_add_stream(*newsession, NULL); + if (event) { + const char *want_video = switch_event_get_header(event, "want_video"); + + if (want_video && switch_true(want_video)) { + tech_pvt->has_video = 1; + switch_channel_set_variable(channel, "video_possible", "true"); + } + } + if (rtmp_tech_init(tech_pvt, rsession, *newsession) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "tech_init failed\n"); goto fail; @@ -1003,6 +1125,7 @@ switch_call_cause_t rtmp_session_create_call(rtmp_session_t *rsession, switch_co for (hp = event->headers; hp; hp = hp->next) { switch_channel_set_variable_name_printf(channel, hp->value, RTMP_USER_VARIABLE_PREFIX "_%s", hp->name); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "%s\n", hp->name); } } @@ -1081,14 +1204,14 @@ switch_status_t rtmp_profile_destroy(rtmp_profile_t **profile) { /* Kill all sessions */ while ((hi = switch_core_hash_first_iter((*profile)->session_hash, hi))) { void *val; - rtmp_session_t *session; + rtmp_session_t *rsession; const void *key; switch_ssize_t keylen; switch_core_hash_this(hi, &key, &keylen, &val); - session = val; - - rtmp_session_destroy(&session); + rsession = val; + + if (rsession->state != RS_DESTROY) rtmp_session_destroy(&rsession); } if ((*profile)->io->running > 0) { @@ -1536,16 +1659,16 @@ done: static const char *state2name(int state) { - switch(state) { - case RS_HANDSHAKE: - return "HANDSHAKE"; - case RS_HANDSHAKE2: - return "HANDSHAKE2"; - case RS_ESTABLISHED: - return "ESTABLISHED"; - default: - return "DESTROY (PENDING)"; - } + switch(state) { + case RS_HANDSHAKE: + return "HANDSHAKE"; + case RS_HANDSHAKE2: + return "HANDSHAKE2"; + case RS_ESTABLISHED: + return "ESTABLISHED"; + default: + return "DESTROY (PENDING)"; + } } #define RTMP_FUNCTION_SYNTAX "profile [profilename] [start | stop | rescan | restart]\nstatus profile [profilename]\nstatus profile [profilename] [reg | sessions]\nsession [session_id] [kill | login [user@domain] | logout [user@domain]]" @@ -1639,7 +1762,6 @@ SWITCH_STANDARD_API(rtmp_function) item->account ? item->account->user : NULL, item->account ? item->account->domain : NULL, item->flashVer, state2name(item->state)); - } switch_thread_rwlock_unlock(profile->session_rwlock); } else if (!zstr(argv[3]) && !strcmp(argv[3], "reg")) { @@ -1672,9 +1794,9 @@ SWITCH_STANDARD_API(rtmp_function) stream->write_function(stream, "-ERR No such profile [%s]\n", argv[2]); } } else { - switch_hash_index_t *hi; + switch_hash_index_t *hi = NULL; switch_thread_rwlock_rdlock(rtmp_globals.profile_rwlock); - for (hi = switch_core_hash_first(rtmp_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) { + for (hi = switch_core_hash_first_iter(rtmp_globals.profile_hash, hi); hi; hi = switch_core_hash_next(&hi)) { void *val; const void *key; switch_ssize_t keylen; @@ -1742,22 +1864,22 @@ SWITCH_STANDARD_API(rtmp_function) } if (!zstr(dest)) { - if (rtmp_session_create_call(rsession, &newsession, 0, RTMP_DEFAULT_STREAM_AUDIO, dest, user, domain, NULL) != SWITCH_CAUSE_SUCCESS) { - stream->write_function(stream, "-ERR Couldn't create new call\n"); - } else { - rtmp_private_t *new_pvt = switch_core_session_get_private(newsession); - rtmp_send_invoke_free(rsession, 3, 0, 0, - amf0_str("onMakeCall"), - amf0_number_new(0), - amf0_null_new(), - amf0_str(switch_core_session_get_uuid(newsession)), - amf0_str(switch_str_nil(dest)), - amf0_str(switch_str_nil(new_pvt->auth)), - NULL); - - rtmp_attach_private(rsession, switch_core_session_get_private(newsession)); - stream->write_function(stream, "+OK\n"); - } + if (rtmp_session_create_call(rsession, &newsession, 0, RTMP_DEFAULT_STREAM_AUDIO, dest, user, domain, NULL) != SWITCH_CAUSE_SUCCESS) { + stream->write_function(stream, "-ERR Couldn't create new call\n"); + } else { + rtmp_private_t *new_pvt = switch_core_session_get_private(newsession); + rtmp_send_invoke_free(rsession, 3, 0, 0, + amf0_str("onMakeCall"), + amf0_number_new(0), + amf0_null_new(), + amf0_str(switch_core_session_get_uuid(newsession)), + amf0_str(switch_str_nil(dest)), + amf0_str(switch_str_nil(new_pvt->auth)), + NULL); + + rtmp_attach_private(rsession, switch_core_session_get_private(newsession)); + stream->write_function(stream, "+OK\n"); + } } else { stream->write_function(stream, "-ERR Missing destination number\n"); } @@ -1851,6 +1973,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_rtmp_load) rtmp_register_invoke_function("play", rtmp_i_play); rtmp_register_invoke_function("publish", rtmp_i_publish); rtmp_register_invoke_function("makeCall", rtmp_i_makeCall); + rtmp_register_invoke_function("FCSubscribe", rtmp_i_fcSubscribe); rtmp_register_invoke_function("login", rtmp_i_login); rtmp_register_invoke_function("logout", rtmp_i_logout); rtmp_register_invoke_function("sendDTMF", rtmp_i_sendDTMF); @@ -1926,7 +2049,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_rtmp_shutdown) switch_hash_index_t *hi = NULL; switch_mutex_lock(rtmp_globals.mutex); - while ((hi = switch_core_hash_first_iter( rtmp_globals.profile_hash, hi))) { + while ((hi = switch_core_hash_first_iter(rtmp_globals.profile_hash, hi))) { void *val; const void *key; switch_ssize_t keylen; diff --git a/src/mod/endpoints/mod_rtmp/mod_rtmp.h b/src/mod/endpoints/mod_rtmp/mod_rtmp.h index 1f77429747..e53cb95d94 100644 --- a/src/mod/endpoints/mod_rtmp/mod_rtmp.h +++ b/src/mod/endpoints/mod_rtmp/mod_rtmp.h @@ -23,6 +23,7 @@ * Contributor(s): * * Mathieu Rene + * Seven Du * * mod_rtmp.h -- RTMP Endpoint Module * @@ -45,8 +46,8 @@ #define RTMP_USER_VARIABLE_PREFIX "rtmp_u_" #define RTMP_DEFAULT_PORT 1935 -#define RTMP_TCP_READ_BUF 2048 -#define AMF_MAX_SIZE 2048 +#define RTMP_TCP_READ_BUF 2048 * 16 +#define AMF_MAX_SIZE 2048 * 16 #define SUPPORT_SND_NONE 0x0000 #define SUPPORT_SND_ADPCM 0x0002 @@ -77,7 +78,7 @@ #define kAMF0 0 #define kAMF3 3 -#define RTMP_DEFAULT_ACK_WINDOW 0x20000 +#define RTMP_DEFAULT_ACK_WINDOW 0x200000 #define RTMP_TYPE_CHUNKSIZE 0x01 #define RTMP_TYPE_ABORT 0x2 @@ -130,6 +131,12 @@ #define INT32_MAX 0x7fffffffL #endif +/* Media debug flags */ +#define RTMP_MD_AUDIO_READ (1 << 0) +#define RTMP_MD_AUDIO_WRITE (1 << 1) +#define RTMP_MD_VIDEO_READ (1 << 2) +#define RTMP_MD_VIDEO_WRITE (1 << 3) + typedef enum { RTMP_AUDIO_PCM = 0, RTMP_AUDIO_ADPCM = 1, @@ -412,6 +419,29 @@ struct rtmp_account { rtmp_account_t *next; }; +typedef struct rtmp2rtp_helper_s +{ + amf0_data *sps; + amf0_data *pps; + amf0_data *nal_list; + uint32_t lenSize; +} rtmp2rtp_helper_t; + +typedef struct rtp2rtmp_helper_s +{ + amf0_data *sps; + amf0_data *pps; + amf0_data *avc_conf; + switch_bool_t send; + switch_bool_t send_avc; + switch_buffer_t *rtmp_buf; + switch_buffer_t *fua_buf; //fu_a buf + uint32_t last_recv_ts; + uint8_t last_mark; + uint16_t last_seq; + switch_bool_t sps_changed; +} rtp2rtmp_helper_t; + struct rtmp_session { switch_memory_pool_t *pool; rtmp_profile_t *profile; @@ -484,6 +514,9 @@ struct rtmp_session { uint32_t media_streamid; /* < The stream id that was used for the last "play" command, where we should send media */ + switch_size_t dropped_video_frame; + + uint8_t media_debug; }; struct rtmp_private { @@ -509,6 +542,7 @@ struct rtmp_private { uint8_t video_codec; switch_time_t stream_start_ts; + switch_time_t stream_last_ts; switch_timer_t timer; switch_buffer_t *readbuf; switch_mutex_t *readbuf_mutex; @@ -522,6 +556,24 @@ struct rtmp_private { uint16_t maxlen; int over_size; + + //video + int has_video; + switch_codec_t video_read_codec; + switch_codec_t video_write_codec; + rtp2rtmp_helper_t video_write_helper; + rtmp2rtp_helper_t video_read_helper; + switch_frame_t video_read_frame; + uint32_t video_read_ts; + uint16_t seq; + unsigned char video_databuf[SWITCH_RTP_MAX_BUF_LEN]; /* < Buffer for read_frame */ + switch_buffer_t *video_readbuf; + switch_mutex_t *video_readbuf_mutex; + uint16_t video_maxlen; + int video_over_size; + + switch_core_media_params_t mparams; + switch_media_handle_t *media_handle; }; struct rtmp_reg; @@ -540,7 +592,6 @@ typedef enum { MSG_FULLHEADER = 1 } rtmp_message_send_flag_t; - /* Invokable functions from flash */ RTMP_INVOKE_FUNCTION(rtmp_i_connect); RTMP_INVOKE_FUNCTION(rtmp_i_createStream); @@ -548,6 +599,7 @@ RTMP_INVOKE_FUNCTION(rtmp_i_noop); RTMP_INVOKE_FUNCTION(rtmp_i_play); RTMP_INVOKE_FUNCTION(rtmp_i_publish); RTMP_INVOKE_FUNCTION(rtmp_i_makeCall); +RTMP_INVOKE_FUNCTION(rtmp_i_fcSubscribe); RTMP_INVOKE_FUNCTION(rtmp_i_sendDTMF); RTMP_INVOKE_FUNCTION(rtmp_i_login); RTMP_INVOKE_FUNCTION(rtmp_i_logout); diff --git a/src/mod/endpoints/mod_rtmp/rtmp.c b/src/mod/endpoints/mod_rtmp/rtmp.c index 196d51a0de..5bd503b066 100644 --- a/src/mod/endpoints/mod_rtmp/rtmp.c +++ b/src/mod/endpoints/mod_rtmp/rtmp.c @@ -25,12 +25,15 @@ * Mathieu Rene * Joao Mesquita * William King - * + * Seven Du + * Da Xiong * rtmp.c -- RTMP Protocol Handler * */ #include "mod_rtmp.h" +#include "handshake.h" + typedef struct { unsigned char *buf; @@ -97,6 +100,13 @@ void rtmp_handle_control(rtmp_session_t *rsession, int amfnumber) switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_INFO, "Ping reply: %d ms\n", (int)(now - sent)); } break; + case RTMP_CTRL_SET_BUFFER_LENGTH: + { + uint32_t stream_id = state->buf[2] << 24 | state->buf[3] << 16 | state->buf[4] << 8 | state->buf[5]; + uint32_t length = state->buf[6] << 24 | state->buf[7] << 16 | state->buf[8] << 8 | state->buf[9]; + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "stream=%u Client buffer set to %ums\n", stream_id, length); + } + break; default: switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_WARNING, "[amfnumber=%d] Unhandled control packet (type=0x%x)\n", amfnumber, type); @@ -117,7 +127,7 @@ void rtmp_handle_invoke(rtmp_session_t *rsession, int amfnumber) amf0_data *argv[100] = { 0 }; rtmp_invoke_function_t function; -#if 0 +#ifdef RTMP_DEBUG_IO printf(">>>>> BEGIN INVOKE MSG (num=0x%02x, type=0x%02x, stream_id=0x%x)\n", amfnumber, state->type, state->stream_id); while((dump = amf0_data_read(my_buffer_read, &helper))) { amf0_data *dump2; @@ -423,6 +433,9 @@ void rtmp_send_incoming_call(switch_core_session_t *session, switch_event_t *var } if (event) { + if (tech_pvt->has_video) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "want_video", "true"); + } amf_event_to_object(&obj, event); switch_event_destroy(&event); } @@ -559,12 +572,64 @@ switch_status_t rtmp_send_message(rtmp_session_t *rsession, uint8_t amfnumber, u switch_status_t status = SWITCH_STATUS_SUCCESS; rtmp_state_t *state = &rsession->amfstate_out[amfnumber]; - if ((rsession->send_ack + rsession->send_ack_window) < rsession->send && - (type == RTMP_TYPE_VIDEO || type == RTMP_TYPE_AUDIO)) { + // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "%d send_ack=%d send=%d window=%d wait_ack=%d\n", + // type, rsession->send_ack, rsession->send, rsession->send_ack_window, rsession->send + 3073 - rsession->send_ack); + + if (type == RTMP_TYPE_VIDEO) { + uint32_t window = rsession->send_ack_window; + + if (rsession->media_debug & RTMP_MD_VIDEO_WRITE) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "W V ts:%u data:0x%02x len:%" SWITCH_SIZE_T_FMT "\n", timestamp, *message, len); + } + + /* start to drop video frame on window/2 if the frame is a non-IDR video frame + start to drop video frame on window * 3/4 if the frame is a IDR frame + start to drop audio frame on widnow full + */ + + if (*message == 0x17) { + window = window / 4 * 3; + } else { + window /= 2; + } + + if ((rsession->send_ack + window) < (rsession->send + 3073)) { + /* We're sending too fast, drop the frame */ + rsession->dropped_video_frame++; + switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_DEBUG, + "DROP VIDEO FRAME [amfnumber=%d type=0x%x stream_id=0x%x ftype=0x%x] len=%"SWITCH_SIZE_T_FMT + " dropped=%"SWITCH_SIZE_T_FMT"\n", + amfnumber, type, stream_id, *message, len, rsession->dropped_video_frame); + return SWITCH_STATUS_SUCCESS; + } + + if (rsession->dropped_video_frame) { + if (*message != 0x17) { + rsession->dropped_video_frame++; + switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_DEBUG, + "DROP VIDEO FRAME [amfnumber=%d type=0x%x stream_id=0x%x ftype=0x%x] len=%"SWITCH_SIZE_T_FMT + " dropped=%"SWITCH_SIZE_T_FMT" waiting for the next IDR\n", + amfnumber, type, stream_id, *message, len, rsession->dropped_video_frame); + + return SWITCH_STATUS_SUCCESS; + } else { + switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_INFO, + "Got IDR frame after %"SWITCH_SIZE_T_FMT" frame(s) dropped\n", + rsession->dropped_video_frame); + rsession->dropped_video_frame = 0; + } + } + } + + if (type == RTMP_TYPE_AUDIO && (rsession->media_debug & RTMP_MD_AUDIO_WRITE)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "W A ts:%u data:0x%02x len:%" SWITCH_SIZE_T_FMT "\n", timestamp, *message, len); + } + + if (type == RTMP_TYPE_AUDIO && (rsession->send_ack + rsession->send_ack_window) < (rsession->send + 3073)) { /* We're sending too fast, drop the frame */ switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_DEBUG, "DROP %s FRAME [amfnumber=%d type=0x%x stream_id=0x%x] len=%"SWITCH_SIZE_T_FMT" \n", - type == RTMP_TYPE_AUDIO ? "AUDIO" : "VIDEO", amfnumber, type, stream_id, len); + "AUDIO", amfnumber, type, stream_id, len); return SWITCH_STATUS_SUCCESS; } @@ -654,6 +719,7 @@ switch_status_t rtmp_send_message(rtmp_session_t *rsession, uint8_t amfnumber, u while (((signed)len - (signed)pos) > 0) { switch_mutex_unlock(rsession->socket_mutex); /* Let other threads send data on the socket */ + switch_cond_next(); switch_mutex_lock(rsession->socket_mutex); hdrsize = 1; if (rsession->profile->io->write(rsession, (unsigned char*)µhdr, &hdrsize) != SWITCH_STATUS_SUCCESS) { @@ -698,13 +764,26 @@ switch_status_t rtmp_handle_data(rtmp_session_t *rsession) /* Send reply (S0 + S1) */ memset(buf, 0, sizeof(buf)); - *buf = '\x03'; + //*buf = '\x03'; + /* fix handshake for h264 */ + { + handshake_helper_t shake_helper; + shake_helper.r_buf = rsession->hsbuf; + shake_helper.r_len = 2048; + shake_helper.r_pos = 0; + shake_helper.w_buf = buf; + shake_helper.w_len = sizeof(buf); + shake_helper.w_pos = 0; + SHandShake0(&shake_helper); + } + s = 1537; rsession->profile->io->write(rsession, (unsigned char*)buf, &s); /* Send S2 */ s = 1536; - rsession->profile->io->write(rsession, rsession->hsbuf, &s); + //rsession->profile->io->write(rsession, rsession->hsbuf, &s); + rsession->profile->io->write(rsession, (unsigned char*)buf + 1537, &s); switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_DEBUG, "Sent handshake response\n"); @@ -860,7 +939,9 @@ switch_status_t rtmp_handle_data(rtmp_session_t *rsession) if (!s) { /* Restart from beginning */ - s = state->remainlen = state->origlen; + state->remainlen = state->origlen; + s = state->remainlen < rsession->in_chunksize ? state->remainlen : rsession->in_chunksize; + rsession->parse_remain = s; if (!s) { switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_ERROR, "Protocol error, forcing big read\n"); @@ -919,6 +1000,10 @@ switch_status_t rtmp_handle_data(rtmp_session_t *rsession) rtmp_handle_invoke(rsession, rsession->amfnumber); break; case RTMP_TYPE_AUDIO: /* Audio data */ + if (rsession->media_debug & RTMP_MD_AUDIO_READ) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "R A ts:%u data:0x%02x len:%d\n", state->ts, *(state->buf), state->origlen); + } + switch_thread_rwlock_wrlock(rsession->rwlock); if (rsession->tech_pvt) { uint16_t len = state->origlen; @@ -930,13 +1015,13 @@ switch_status_t rtmp_handle_data(rtmp_session_t *rsession) switch_mutex_lock(rsession->tech_pvt->readbuf_mutex); - if (rsession->tech_pvt->maxlen && switch_buffer_inuse(rsession->tech_pvt->readbuf) > (switch_size_t)(rsession->tech_pvt->maxlen * 40)) { + if (rsession->tech_pvt->maxlen && switch_buffer_inuse(rsession->tech_pvt->readbuf) > rsession->tech_pvt->maxlen * 40) { rsession->tech_pvt->over_size++; } else { rsession->tech_pvt->over_size = 0; } if (rsession->tech_pvt->over_size > 10) { - switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_DEBUG, + switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_WARNING, "%s buffer > %u for 10 consecutive packets... Flushing buffer\n", switch_core_session_get_name(rsession->tech_pvt->session), rsession->tech_pvt->maxlen * 40); switch_buffer_zero(rsession->tech_pvt->readbuf); @@ -947,6 +1032,7 @@ switch_status_t rtmp_handle_data(rtmp_session_t *rsession) switch_buffer_write(rsession->tech_pvt->readbuf, &len, 2); switch_buffer_write(rsession->tech_pvt->readbuf, state->buf, len); if (len > rsession->tech_pvt->maxlen) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "changing maxlen from %d to %d\n", rsession->tech_pvt->maxlen, len); rsession->tech_pvt->maxlen = len; } switch_mutex_unlock(rsession->tech_pvt->readbuf_mutex); @@ -954,11 +1040,55 @@ switch_status_t rtmp_handle_data(rtmp_session_t *rsession) switch_thread_rwlock_unlock(rsession->rwlock); break; case RTMP_TYPE_VIDEO: /* Video data */ + if (rsession->media_debug & RTMP_MD_VIDEO_READ) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "R V ts:%u data:0x%02x len:%d \n", state->ts, *(state->buf), state->origlen); + } + + if ((!rsession->tech_pvt) || (!rsession->tech_pvt->has_video)) break; + + switch_thread_rwlock_wrlock(rsession->rwlock); + if (rsession->tech_pvt) { + uint16_t len = state->origlen; + + if (!rsession->tech_pvt->video_readbuf) { + switch_thread_rwlock_unlock(rsession->rwlock); + return SWITCH_STATUS_FALSE; + } + + switch_mutex_lock(rsession->tech_pvt->video_readbuf_mutex); + if (rsession->tech_pvt->video_maxlen && switch_buffer_inuse(rsession->tech_pvt->video_readbuf) > rsession->tech_pvt->video_maxlen * 100) { + rsession->tech_pvt->video_over_size++; + } else { + rsession->tech_pvt->video_over_size = 0; + } + if (rsession->tech_pvt->video_over_size > 10) { + switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_DEBUG, + "%s buffer > %u for 10 consecutive packets... Flushing buffer\n", + switch_core_session_get_name(rsession->tech_pvt->session), rsession->tech_pvt->video_maxlen * 100); + switch_buffer_zero(rsession->tech_pvt->video_readbuf); + #ifdef RTMP_DEBUG_IO + fprintf(rsession->io_debug_in, "[chunk_stream=%d type=0x%x ts=%d stream_id=0x%x] FLUSH BUFFER [exceeded %u]\n", rsession->amfnumber, state->type, (int)state->ts, state->stream_id, rsession->tech_pvt->video_maxlen * 5); + #endif + } + switch_buffer_write(rsession->tech_pvt->video_readbuf, &len, 2); + switch_buffer_write(rsession->tech_pvt->video_readbuf, &state->ts, 4); + switch_buffer_write(rsession->tech_pvt->video_readbuf, state->buf, len); + if (len > rsession->tech_pvt->video_maxlen) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "changing video max len from %d to %d\n", rsession->tech_pvt->video_maxlen, len); + rsession->tech_pvt->video_maxlen = len; + } + switch_mutex_unlock(rsession->tech_pvt->video_readbuf_mutex); + } + switch_thread_rwlock_unlock(rsession->rwlock); + break; case RTMP_TYPE_METADATA: /* Metadata */ break; case RTMP_TYPE_WINDOW_ACK_SIZE: - rsession->send_ack_window = (state->buf[0] << 24) | (state->buf[1] << 16) | (state->buf[2] << 8) | (state->buf[3]); - switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_DEBUG, "Set window size: %lu bytes\n", (long unsigned int)rsession->send_ack_window); + { + uint32_t new_window = (state->buf[0] << 24) | (state->buf[1] << 16) | (state->buf[2] << 8) | (state->buf[3]); + switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_DEBUG, "Set window size: from %u to %u bytes\n", rsession->send_ack_window, new_window); + rsession->send_ack_window = new_window; + } break; case RTMP_TYPE_ACK: { @@ -972,6 +1102,9 @@ switch_status_t rtmp_handle_data(rtmp_session_t *rsession) rsession->send_bw = (ack - rsession->send_ack) / delta; } + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "got ack %d send:%d wait-ack:%d\n", + ack, rsession->send + 3073, rsession->send + 3073 - ack); + rsession->send_ack = ack; rsession->send_ack_ts = switch_micro_time_now(); break; diff --git a/src/mod/endpoints/mod_rtmp/rtmp_sig.c b/src/mod/endpoints/mod_rtmp/rtmp_sig.c index f44b3ec44d..4cba13aabb 100644 --- a/src/mod/endpoints/mod_rtmp/rtmp_sig.c +++ b/src/mod/endpoints/mod_rtmp/rtmp_sig.c @@ -23,6 +23,7 @@ * Contributor(s): * * Mathieu Rene + * Seven Du * * rtmp.c -- RTMP Signalling functions * @@ -284,8 +285,7 @@ RTMP_INVOKE_FUNCTION(rtmp_i_makeCall) if ((number = amf0_get_string(argv[1]))) { switch_event_t *event = NULL; char *auth, *user = NULL, *domain = NULL; - - if ((auth = amf0_get_string(argv[2])) && !zstr(auth)) { + if (argc >= 3 && (auth = amf0_get_string(argv[2])) && !zstr(auth)) { switch_split_user_domain(auth, &user, &domain); if (rtmp_session_check_user(rsession, user, domain) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_WARNING, "Unauthorized call to %s, client is not logged in account [%s@%s]\n", @@ -327,6 +327,33 @@ RTMP_INVOKE_FUNCTION(rtmp_i_makeCall) return SWITCH_STATUS_SUCCESS; } +RTMP_INVOKE_FUNCTION(rtmp_i_fcSubscribe) +{ + switch_status_t status; + int ac; + amf0_data *av[3] = { 0 }; + + switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_DEBUG, "Got FCSubscribe for %s on stream %d\n", switch_str_nil(amf0_get_string(argv[1])), state->stream_id); + + ac = 3; + av[0] = argv[0]; + av[1] = argv[1]; + av[2] = amf0_boolean_new(1); + switch_assert(av[2]); + + status = rtmp_i_receiveaudio(rsession, state, amfnumber, transaction_id, ac, av); + if (status != SWITCH_STATUS_SUCCESS) return status; + + rtmp_i_receivevideo(rsession, state, amfnumber, transaction_id, ac, av); + if (status != SWITCH_STATUS_SUCCESS) return status; + + amf0_data_free(av[2]); + + rtmp_i_makeCall(rsession, state, amfnumber, transaction_id, argc, argv); + + return status; +} + RTMP_INVOKE_FUNCTION(rtmp_i_sendDTMF) { /* Send DTMFs on the active channel */ diff --git a/src/mod/endpoints/mod_rtmp/rtmp_tcp.c b/src/mod/endpoints/mod_rtmp/rtmp_tcp.c index b8470585bb..c4288a4c3b 100644 --- a/src/mod/endpoints/mod_rtmp/rtmp_tcp.c +++ b/src/mod/endpoints/mod_rtmp/rtmp_tcp.c @@ -49,34 +49,10 @@ typedef struct rtmp_io_tcp rtmp_io_tcp_t; struct rtmp_tcp_io_private { switch_pollfd_t *pollfd; switch_socket_t *socket; - switch_buffer_t *sendq; - switch_bool_t poll_send; }; typedef struct rtmp_tcp_io_private rtmp_tcp_io_private_t; -static void rtmp_tcp_alter_pollfd(rtmp_session_t *rsession, switch_bool_t pollout) -{ - rtmp_tcp_io_private_t *io_pvt = rsession->io_private; - rtmp_io_tcp_t *io = (rtmp_io_tcp_t*)rsession->profile->io; - - if (pollout && (io_pvt->pollfd->reqevents & SWITCH_POLLOUT)) { - return; - } else if (!pollout && !(io_pvt->pollfd->reqevents & SWITCH_POLLOUT)) { - return; - } - - switch_pollset_remove(io->pollset, io_pvt->pollfd); - io_pvt->pollfd->reqevents = SWITCH_POLLIN | SWITCH_POLLERR; - if (pollout) { - io_pvt->pollfd->reqevents |= SWITCH_POLLOUT; - } - switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_NOTICE, "Pollout: %s\n", - pollout ? "true" : "false"); - - switch_pollset_add(io->pollset, io_pvt->pollfd); -} - static switch_status_t rtmp_tcp_read(rtmp_session_t *rsession, unsigned char *buf, switch_size_t *len) { //rtmp_io_tcp_t *io = (rtmp_io_tcp_t*)rsession->profile->io; @@ -117,8 +93,10 @@ static switch_status_t rtmp_tcp_write(rtmp_session_t *rsession, const unsigned c { //rtmp_io_tcp_t *io = (rtmp_io_tcp_t*)rsession->profile->io; rtmp_tcp_io_private_t *io_pvt = rsession->io_private; - switch_status_t status; + switch_status_t status = SWITCH_STATUS_SUCCESS; switch_size_t orig_len = *len; + switch_size_t remaining = *len; + int sanity = 100; #ifdef RTMP_DEBUG_IO { @@ -139,29 +117,32 @@ static switch_status_t rtmp_tcp_write(rtmp_session_t *rsession, const unsigned c } #endif - if (io_pvt->sendq && switch_buffer_inuse(io_pvt->sendq) > 0) { - /* We already have queued data, append it to the sendq */ - switch_buffer_write(io_pvt->sendq, buf, *len); - return SWITCH_STATUS_SUCCESS; - } - - status = switch_socket_send_nonblock(io_pvt->socket, (char*)buf, len); - - if (*len > 0 && *len < orig_len) { - + while (remaining > 0) { if (rsession->state >= RS_DESTROY) { return SWITCH_STATUS_FALSE; } - /* We didnt send it all... add it to the sendq*/ - switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_DEBUG, "%"SWITCH_SIZE_T_FMT" bytes added to sendq.\n", (orig_len - *len)); +again: + status = switch_socket_send_nonblock(io_pvt->socket, (char*)buf, len); - switch_buffer_write(io_pvt->sendq, (buf + *len), orig_len - *len); + if ((status == 32 || SWITCH_STATUS_IS_BREAK(status)) && sanity-- > 0) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "sending too fast, retrying %d\n", sanity); + goto again; + } + + if (status != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "send error %d\n", status); + break; + } - /* Make sure we poll-write */ - rtmp_tcp_alter_pollfd(rsession, SWITCH_TRUE); + if (*len != orig_len) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "sent %ld of %ld\n", *len, orig_len); + buf += *len; + remaining -= *len; + *len = remaining; } + *len = orig_len; + return status; } @@ -178,11 +159,6 @@ static switch_status_t rtmp_tcp_close(rtmp_session_t *rsession) switch_socket_close(io_pvt->socket); io_pvt->socket = NULL; } - - if ( io_pvt->sendq ) { - switch_buffer_destroy(&(io_pvt->sendq)); - } - return SWITCH_STATUS_SUCCESS; } @@ -246,7 +222,6 @@ void *SWITCH_THREAD_FUNC rtmp_io_tcp_thread(switch_thread_t *thread, void *obj) pvt->socket = newsocket; switch_socket_create_pollfd(&pvt->pollfd, newsocket, SWITCH_POLLIN | SWITCH_POLLERR, rsession, rsession->pool); switch_pollset_add(io->pollset, pvt->pollfd); - switch_buffer_create_dynamic(&pvt->sendq, 512, 1024, 0); /* Get the remote address/port info */ switch_socket_addr_get(&addr, SWITCH_TRUE, newsocket); @@ -261,18 +236,7 @@ void *SWITCH_THREAD_FUNC rtmp_io_tcp_thread(switch_thread_t *thread, void *obj) rtmp_session_t *rsession = (rtmp_session_t*)fds[i].client_data; rtmp_tcp_io_private_t *io_pvt = (rtmp_tcp_io_private_t*)rsession->io_private; - if (fds[i].rtnevents & SWITCH_POLLOUT && switch_buffer_inuse(io_pvt->sendq) > 0) { - /* Send as much remaining data as possible */ - switch_size_t sendlen; - const void *ptr; - sendlen = switch_buffer_peek_zerocopy(io_pvt->sendq, &ptr); - switch_socket_send_nonblock(io_pvt->socket, ptr, &sendlen); - switch_buffer_toss(io_pvt->sendq, sendlen); - if (switch_buffer_inuse(io_pvt->sendq) == 0) { - /* Remove our fd from OUT polling */ - rtmp_tcp_alter_pollfd(rsession, SWITCH_FALSE); - } - } else if (fds[i].rtnevents & SWITCH_POLLIN && rtmp_handle_data(rsession) != SWITCH_STATUS_SUCCESS) { + if (fds[i].rtnevents & SWITCH_POLLIN && rtmp_handle_data(rsession) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_DEBUG, "Closing socket\n"); switch_mutex_lock(io->mutex); diff --git a/src/mod/endpoints/mod_rtmp/rtmp_video.c b/src/mod/endpoints/mod_rtmp/rtmp_video.c new file mode 100644 index 0000000000..d351640a6a --- /dev/null +++ b/src/mod/endpoints/mod_rtmp/rtmp_video.c @@ -0,0 +1,749 @@ +/* + * mod_rtmp for FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * Copyright (C) 2015, Seven Du. + * + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is rtmp_video for FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * + * The Initial Developer of the Original Code is Barracuda Networks Inc. + * Portions created by the Initial Developer are Copyright (C) + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Seven Du + * Da Xiong + * + * rtmp_video.c -- RTMP video + * + */ + +#include + + +amf0_data * amf0_array_shift(amf0_data * data) { + return (data != NULL) ? amf0_array_delete(data, amf0_array_first(data)) : NULL; +} + + +void rtmp2rtp_helper_init(rtmp2rtp_helper_t *helper) +{ + memset(helper, 0, sizeof(rtmp2rtp_helper_t)); + helper->nal_list = amf0_array_new(); + helper->pps = NULL; + helper->sps = NULL; + +} + +void rtp2rtmp_helper_init(rtp2rtmp_helper_t *helper) +{ + memset(helper, 0, sizeof(rtmp2rtp_helper_t)); + helper->pps = NULL; + helper->sps = NULL; + helper->send = SWITCH_FALSE; + helper->send_avc = SWITCH_FALSE; + switch_buffer_create_dynamic(&helper->rtmp_buf, 10240, 10240, 0); + switch_buffer_create_dynamic(&helper->fua_buf, 10240, 10240, 0); +} + +void rtmp2rtp_helper_destroy(rtmp2rtp_helper_t *helper) +{ + amf0_data_free(helper->nal_list); + amf0_data_free(helper->sps); + amf0_data_free(helper->pps); + helper = NULL; +} + +void rtp2rtmp_helper_destroy(rtp2rtmp_helper_t *helper) +{ + + amf0_data_free(helper->avc_conf); + amf0_data_free(helper->sps); + amf0_data_free(helper->pps); + if (helper->rtmp_buf) switch_buffer_destroy(&helper->rtmp_buf); + if (helper->fua_buf) switch_buffer_destroy(&helper->fua_buf); + helper = NULL; +} + +switch_status_t on_rtmp_tech_init(switch_core_session_t *session, rtmp_private_t *tech_pvt) +{ + + //for video + tech_pvt->video_read_frame.packet = tech_pvt->video_databuf; + tech_pvt->video_read_frame.data = tech_pvt->video_databuf + 12; + tech_pvt->video_read_frame.buflen = SWITCH_RECOMMENDED_BUFFER_SIZE - 12; + + switch_mutex_init(&tech_pvt->video_readbuf_mutex, SWITCH_MUTEX_NESTED, switch_core_session_get_pool(session)); + + switch_buffer_create_dynamic(&tech_pvt->video_readbuf, 1024, 1024, 2048000); + + rtmp2rtp_helper_init(&tech_pvt->video_read_helper); + rtp2rtmp_helper_init(&tech_pvt->video_write_helper); + tech_pvt->video_write_helper.last_mark = 1; + tech_pvt->video_codec = 0xB2; + return SWITCH_STATUS_SUCCESS; +} + +switch_status_t on_rtmp_destroy(rtmp_private_t *tech_pvt) +{ + + if (tech_pvt) { + //for video + + if (switch_core_codec_ready(&tech_pvt->video_read_codec)) { + switch_core_codec_destroy(&tech_pvt->video_read_codec); + } + + if (switch_core_codec_ready(&tech_pvt->video_write_codec)) { + switch_core_codec_destroy(&tech_pvt->video_write_codec); + } + + rtmp2rtp_helper_destroy(&tech_pvt->video_read_helper); + rtp2rtmp_helper_destroy(&tech_pvt->video_write_helper); + switch_buffer_destroy(&tech_pvt->video_readbuf); + + switch_media_handle_destroy(tech_pvt->session); + } + + return SWITCH_STATUS_SUCCESS; +} + + +/*Rtmp packet to rtp frame*/ +switch_status_t rtmp_rtmp2rtpH264(rtmp2rtp_helper_t *read_helper, uint8_t* data, uint32_t len) +{ + switch_status_t status = SWITCH_STATUS_SUCCESS; + + if (data[0] == 0x17 && data[1] == 0) { + switch_byte_t *pdata = data + 2; + int cfgVer = pdata[3]; + if (cfgVer == 1) { + int i = 0; + int numSPS = 0; + int numPPS = 0; + int lenSize = (pdata[7] & 0x03) + 1; + int lenSPS; + int lenPPS; + //sps + numSPS = pdata[8] & 0x1f; + pdata += 9; + for (i = 0; i < numSPS; i++) { + lenSPS = ((pdata[0] & 0xff) << 8) | (pdata[1] & 0xff); + pdata += 2; + if (read_helper->sps == NULL) { + read_helper->sps = amf0_string_new(pdata, lenSPS); + } + pdata += lenSPS; + } + //pps + numPPS = pdata[0]; + pdata += 1; + for (i = 0; i < numPPS; i++) { + lenPPS = ((pdata[0] & 0xff) << 8) | (pdata[1] & 0xff); + pdata +=2; + if (read_helper->pps == NULL) { + read_helper->pps = amf0_string_new(pdata, lenPPS); + } + pdata += lenPPS; + } + + read_helper->lenSize = lenSize; + + // add sps to list + if (read_helper->sps != NULL) { + amf0_data *sps = amf0_string_new( + amf0_string_get_uint8_ts(read_helper->sps), + amf0_string_get_size(read_helper->sps)); + + amf0_array_push(read_helper->nal_list, sps); + + } + // add pps to list + if (read_helper->pps != NULL) { + amf0_data *pps = amf0_string_new( + amf0_string_get_uint8_ts(read_helper->pps), + amf0_string_get_size(read_helper->pps)); + amf0_array_push(read_helper->nal_list, pps); + } + + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR,"Unsuported cfgVer=%d" , cfgVer); + } + } else if ((data[0] == 0x17 || data[0] == 0x27) && data[1] == 1) { + if (read_helper->sps && read_helper->pps) { + switch_byte_t * pdata = data + 5; + uint32_t pdata_len = len - 5; + uint32_t lenSize = read_helper->lenSize; + switch_byte_t *nal_buf = NULL; + uint32_t nal_len = 0; + + while (pdata_len > 0) { + uint32_t nalSize = 0; + switch (lenSize) { + case 1: + nalSize = pdata[lenSize - 1] & 0xff; + break; + case 2: + nalSize = ((pdata[lenSize - 2] & 0xff) << 8) | (pdata[lenSize - 1] & 0xff); + break; + case 4: + nalSize = (pdata[lenSize - 4] & 0xff) << 24 | + (pdata[lenSize - 3] & 0xff) << 16 | + (pdata[lenSize - 2] & 0xff) << 8 | + (pdata[lenSize - 1] & 0xff); + break; + default: + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid length size: %d" , lenSize); + return SWITCH_STATUS_FALSE; + } + + nal_buf = pdata + lenSize; + nal_len = nalSize; + + //next nal + pdata = pdata + lenSize + nalSize; + pdata_len -= (lenSize + nalSize); + } + + if ((nal_len > 0 && nal_len < len) && nal_buf != NULL) { + + switch_byte_t * remaining = nal_buf; + int32_t remaining_len = nal_len; + int nalType = remaining[0] & 0x1f; + int nri = remaining[0] & 0x60; + + if (nalType == 5 || nalType == 1) { + if (remaining_len < MAX_RTP_PAYLOAD_SIZE) { + amf0_array_push(read_helper->nal_list, amf0_string_new(remaining, remaining_len)); + } else { + switch_byte_t start = (uint8_t) 0x80; + remaining += 1; + remaining_len -= 1; + + while (remaining_len > 0) { + int32_t payload_len = (MAX_RTP_PAYLOAD_SIZE - 2) < remaining_len ? (MAX_RTP_PAYLOAD_SIZE - 2) : remaining_len; + + switch_byte_t payload[MAX_RTP_PAYLOAD_SIZE]; + switch_byte_t end; + + memcpy(payload + 2, remaining, payload_len); + remaining_len -= payload_len; + remaining += payload_len; + + end = (switch_byte_t) ((remaining_len > 0) ? 0 : 0x40); + payload[0] = nri | 28; // FU-A + payload[1] = start | end | nalType; + + amf0_array_push(read_helper->nal_list, amf0_string_new(payload, payload_len + 2)); + + start = 0; + } + } + } + + } + } + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing rtmp data\n"); + } + + return status; +} + +switch_bool_t sps_changed(amf0_data *data, uint8_t *new, int datalen) +{ + uint8_t *old; + int i = 0;; + + if (!data) return SWITCH_TRUE; + if (datalen != amf0_string_get_size(data)) return SWITCH_TRUE; + + old = amf0_string_get_uint8_ts(data); + + while(i < datalen) { + if (*(old + i) != *(new + i)) return SWITCH_TRUE; + i++; + } + + return SWITCH_FALSE; +} + +switch_status_t rtmp_rtp2rtmpH264(rtp2rtmp_helper_t *helper, switch_frame_t *frame) +{ + uint8_t* packet = frame->packet; + uint32_t len = frame->packetlen; + switch_rtp_hdr_t *raw_rtp = (switch_rtp_hdr_t *)packet; + switch_byte_t *payload = packet + 12; + int datalen = len - 12; + int nalType = payload[0] & 0x1f; + uint32_t size = 0; + uint16_t rtp_seq = ntohs(raw_rtp->seq); + // uint32_t rtp_ts = ntohl(raw_rtp->ts); + static const uint8_t rtmp_header17[] = {0x17, 1, 0, 0, 0}; + static const uint8_t rtmp_header27[] = {0x27, 1, 0, 0, 0}; + + // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, + // "read: %-4u: %02x %02x ts:%u seq:%u %s\n", + // len, payload[0], payload[1], rtp_ts, rtp_seq, raw_rtp->m ? " mark" : ""); + +#if 0 + if (helper->last_seq && helper->last_seq + 1 != rtp_seq) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "possible video rtp packet loss? seq: %u - %u - 1 = %d ts: %u - %u = %d\n", + ntohs(raw_rtp->seq), helper->last_seq, (int)(rtp_seq - helper->last_seq - 1), + ntohl(raw_rtp->ts), helper->last_recv_ts, (int)(rtp_ts - helper->last_recv_ts)); + +/* + if (nalType != 7) { + if (helper->sps) { + amf0_data_free(helper->sps); + helper->sps = NULL; + } + helper->last_recv_ts = rtp_ts; + helper->last_mark = raw_rtp->m; + helper->last_seq = rtp_seq; + goto wait_sps; + } +*/ + } + +#endif + + if (helper->last_recv_ts != frame->timestamp) { + switch_buffer_zero(helper->rtmp_buf); + switch_buffer_zero(helper->fua_buf); + } + helper->last_recv_ts = frame->timestamp; + helper->last_mark = frame->m;//raw_rtp->m; + helper->last_seq = rtp_seq; + + switch (nalType) { + case 7: //sps + if (sps_changed(helper->sps, payload, datalen)) { + amf0_data_free(helper->sps); + helper->sps = amf0_string_new(payload, datalen); + helper->sps_changed++; + } else { + helper->sps_changed = 0; + } + break; + case 8: //pps + amf0_data_free(helper->pps); + helper->pps = amf0_string_new(payload, datalen); + break; + case 1: //Non IDR + size = htonl(datalen); + if (switch_buffer_inuse(helper->rtmp_buf) == 0) + switch_buffer_write(helper->rtmp_buf, rtmp_header27, sizeof(rtmp_header27)); + switch_buffer_write(helper->rtmp_buf, &size, sizeof(uint32_t)); + switch_buffer_write(helper->rtmp_buf, payload, datalen); + break; + case 5: //IDR + size = htonl(datalen); + if (switch_buffer_inuse(helper->rtmp_buf) == 0) + switch_buffer_write(helper->rtmp_buf, rtmp_header17, sizeof(rtmp_header17)); + switch_buffer_write(helper->rtmp_buf, &size, sizeof(uint32_t)); + switch_buffer_write(helper->rtmp_buf, payload, datalen); + break; + case 28: //FU-A + { + uint8_t *q = payload; + uint8_t h264_start_bit = q[1] & 0x80; + uint8_t h264_end_bit = q[1] & 0x40; + uint8_t h264_type = q[1] & 0x1F; + uint8_t h264_nri = (q[0] & 0x60) >> 5; + uint8_t h264_key = (h264_nri << 5) | h264_type; + + if (h264_start_bit) { + /* write NAL unit code */ + switch_buffer_write(helper->fua_buf, &h264_key, sizeof(h264_key)); + } + + switch_buffer_write(helper->fua_buf, q + 2, datalen - 2); + + if (h264_end_bit) { + const void * nal_data; + + uint32_t used = switch_buffer_inuse(helper->fua_buf); + uint32_t used_big = htonl(used); + switch_buffer_peek_zerocopy(helper->fua_buf, &nal_data); + + nalType = ((uint8_t*)nal_data)[0] & 0x1f; + if (switch_buffer_inuse(helper->rtmp_buf) == 0) { + if (nalType == 5) + switch_buffer_write(helper->rtmp_buf, rtmp_header17, sizeof(rtmp_header17)); + else + switch_buffer_write(helper->rtmp_buf, rtmp_header27, sizeof(rtmp_header27)); + } + + switch_buffer_write(helper->rtmp_buf, &used_big, sizeof(uint32_t)); + switch_buffer_write(helper->rtmp_buf, nal_data, used); + switch_buffer_zero(helper->fua_buf); + } + + } + break; + case 24: + {// for aggregated SPS and PPSs + uint8_t *q = payload + 1; + uint16_t nalu_size = 0; + int nt = 0; + int nidx = 0; + while (nidx < datalen - 1) { + /* get NALU size */ + nalu_size = (q[nidx] << 8) | (q[nidx + 1]); + + nidx += 2; + + if (nalu_size == 0) { + nidx++; + continue; + } + + /* write NALU data */ + nt = q[nidx] & 0x1f; + switch (nt) { + case 1: //Non IDR + size = htonl(nalu_size); + if (switch_buffer_inuse(helper->rtmp_buf) == 0) + switch_buffer_write(helper->rtmp_buf, rtmp_header27, sizeof(rtmp_header27)); + switch_buffer_write(helper->rtmp_buf, &size, sizeof(uint32_t)); + switch_buffer_write(helper->rtmp_buf, q + nidx, nalu_size); + break; + case 5: // IDR + size = htonl(nalu_size); + if (switch_buffer_inuse(helper->rtmp_buf) == 0) + switch_buffer_write(helper->rtmp_buf, rtmp_header17, sizeof(rtmp_header17)); + + switch_buffer_write(helper->rtmp_buf, &size, sizeof(uint32_t)); + switch_buffer_write(helper->rtmp_buf, q + nidx, nalu_size); + break; + case 7: //sps + amf0_data_free(helper->sps); + helper->sps = amf0_string_new( q + nidx, nalu_size); + break; + case 8: //pps + amf0_data_free(helper->pps); + helper->pps = amf0_string_new(q + nidx, nalu_size); + break; + default: + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unsupported NAL %d in STAP-A\n", nt); + break; + } + nidx += nalu_size; + } + } + break; + default: + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Unsupported NAL %d\n", nalType); + break; + } + + // build the avc seq + if (helper->sps_changed && helper->sps != NULL && helper->pps != NULL) { + + int i = 0; + uint16_t size; + uint8_t *sps = amf0_string_get_uint8_ts(helper->sps); + unsigned char buf[AMF_MAX_SIZE * 2]; /* make sure the buffer is big enough */ + + buf[i++] = 0x17; // i = 0 + buf[i++] = 0; // 0 for sps/pps packet + buf[i++] = 0; // timestamp + buf[i++] = 0; // timestamp + buf[i++] = 0; // timestamp + buf[i++] = 1; // AVC Decode Configuration Version + buf[i++] = sps[1]; // H264 profile 0x42 = Baseline + buf[i++] = sps[2]; // Compatiable Level + buf[i++] = sps[3]; // H264 profile 0x1e = profile 30, 0x1f = profile 31 + buf[i++] = 0xff; // 111111 11 0B11 = 3 = lengthSizeMinusOne, LengtSize = 4 + buf[i++] = 0xe1; // i = 10, number of sps = 1 + + // 2 bytes sps size + size = htons(amf0_string_get_size(helper->sps)); + memcpy(buf + i, &size, 2); + i += 2; + // sps data + memcpy(buf + i, sps, amf0_string_get_size(helper->sps)); + buf[i] = 0x67; // set sps header, eyebeam sends 0x27, we set nri = 3, set it to be most important + i += amf0_string_get_size(helper->sps); + + buf[i++] = 0x01; // number of pps + + // 2 bytes pps size + size = htons(amf0_string_get_size(helper->pps)); + memcpy(buf + i, &size, 2); + i += 2; + // pps data + memcpy(buf + i, amf0_string_get_uint8_ts(helper->pps), amf0_string_get_size(helper->pps)); + buf[i] = 0x68; // set pps header + i += amf0_string_get_size(helper->pps); + + amf0_data_free(helper->avc_conf); + helper->avc_conf = amf0_string_new(buf, i); + helper->send_avc = SWITCH_TRUE; + } + + if (frame->m) { + if (helper->avc_conf) { + helper->send = SWITCH_TRUE; + } else { + +// wait_sps: + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "waiting for sps and pps\n"); + switch_buffer_zero(helper->rtmp_buf); + switch_buffer_zero(helper->fua_buf); + helper->send = SWITCH_FALSE; + } + } + + return SWITCH_STATUS_SUCCESS; +} + +switch_status_t rtmp_write_video_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id) +{ + + switch_channel_t *channel = NULL; + rtmp_private_t *tech_pvt = NULL; + rtmp_session_t *rsession = NULL; + switch_time_t ts = 0; + rtp2rtmp_helper_t *helper; + switch_status_t status = SWITCH_STATUS_SUCCESS; + + channel = switch_core_session_get_channel(session); + assert(channel != NULL); + + tech_pvt = switch_core_session_get_private(session); + assert(tech_pvt != NULL); + + helper = &tech_pvt->video_write_helper; + assert(helper != NULL); + + rsession = tech_pvt->rtmp_session; + + if (rsession == NULL) { + return SWITCH_STATUS_FALSE; + } + + //emulate lost packets + // if (frame->seq > 0 && frame->seq % 20 == 0) return SWITCH_STATUS_SUCCESS; + + switch_thread_rwlock_wrlock(rsession->rwlock); + + if (!switch_test_flag(tech_pvt, TFLAG_IO)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "TFLAG_IO not set\n"); + switch_goto_status(SWITCH_STATUS_FALSE, end); + } + + if (switch_test_flag(tech_pvt, TFLAG_DETACHED) || !switch_test_flag(tech_pvt->rtmp_session, SFLAG_VIDEO)) { + switch_goto_status(SWITCH_STATUS_SUCCESS, end); + } + + if (!tech_pvt->rtmp_session || !tech_pvt->video_codec || !tech_pvt->write_channel) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing mandatory value\n"); + switch_goto_status(SWITCH_STATUS_FALSE, end); + } + + if (tech_pvt->rtmp_session->state >= RS_DESTROY) { + switch_goto_status(SWITCH_STATUS_FALSE, end); + } + + if (frame->flags & SFF_CNG) { + switch_goto_status(SWITCH_STATUS_SUCCESS, end); + } + + rtmp_rtp2rtmpH264(helper, frame); + + if (helper->send) { + uint16_t used = switch_buffer_inuse(helper->rtmp_buf); + const void *rtmp_data = NULL; + + switch_buffer_peek_zerocopy(helper->rtmp_buf, &rtmp_data); + + if (!tech_pvt->stream_start_ts) { + tech_pvt->stream_start_ts = switch_micro_time_now() / 1000; + ts = 0; + } else { + ts = (switch_micro_time_now() / 1000) - tech_pvt->stream_start_ts; + } + +#if 0 + { /* use timestamp read from the frame */ + uint32_t timestamp = frame->timestamp & 0xFFFFFFFF; + ts = timestamp / 90; + } +#endif + + if (ts == tech_pvt->stream_last_ts) { + // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "dup ts: %" SWITCH_TIME_T_FMT "\n", ts); + ts += 1; + if (ts == 1) ts = 0; + } + + tech_pvt->stream_last_ts = ts; + + if (!rtmp_data) { + goto skip; + } + + if (((uint8_t *)rtmp_data)[0] == 0x17 && helper->send_avc) { + uint8_t *avc_conf = amf0_string_get_uint8_ts(helper->avc_conf); + + rtmp_send_message(tech_pvt->rtmp_session, RTMP_DEFAULT_STREAM_VIDEO, ts, + RTMP_TYPE_VIDEO, tech_pvt->rtmp_session->media_streamid, avc_conf, amf0_string_get_size(helper->avc_conf), 0); + helper->send_avc = SWITCH_FALSE; + } + + status = rtmp_send_message(tech_pvt->rtmp_session, RTMP_DEFAULT_STREAM_VIDEO, ts, + RTMP_TYPE_VIDEO, tech_pvt->rtmp_session->media_streamid, rtmp_data, used, 0); + + // if dropped_video_frame > N then ask the far end for a new IDR for each N frames + if (rsession->dropped_video_frame > 0 && rsession->dropped_video_frame % 90 == 0) { + switch_core_session_t *other_session; + if (switch_core_session_get_partner(session, &other_session) == SWITCH_STATUS_SUCCESS) { + switch_core_session_request_video_refresh(session); + switch_core_session_rwunlock(other_session); + } + } +skip: + switch_buffer_zero(helper->rtmp_buf); + switch_buffer_zero(helper->fua_buf); + helper->send = SWITCH_FALSE; + } + +end: + switch_thread_rwlock_unlock(rsession->rwlock); + return status; +} + + +switch_status_t rtmp_read_video_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id) +{ + switch_channel_t *channel = NULL; + rtmp_private_t *tech_pvt = NULL; + uint16_t len; + + channel = switch_core_session_get_channel(session); + assert(channel != NULL); + + tech_pvt = switch_core_session_get_private(session); + assert(tech_pvt != NULL); + + if (tech_pvt->rtmp_session->state >= RS_DESTROY) { + return SWITCH_STATUS_FALSE; + } + + if (switch_test_flag(tech_pvt, TFLAG_DETACHED)) { + switch_yield(20000); + goto cng; + } + + tech_pvt->video_read_frame.flags = SFF_RAW_RTP; + tech_pvt->video_read_frame.codec = &tech_pvt->video_read_codec; + + if (amf0_array_size(tech_pvt->video_read_helper.nal_list) > 0) { + goto wr_frame; + } + + if (switch_buffer_inuse(tech_pvt->video_readbuf) < 2) { + switch_yield(20000); + switch_cond_next(); + } + + if (switch_buffer_inuse(tech_pvt->video_readbuf) < 2) { + switch_yield(20000); + goto cng; + } else { + switch_mutex_lock(tech_pvt->video_readbuf_mutex); + switch_buffer_peek(tech_pvt->video_readbuf, &len, 2); + if (switch_buffer_inuse(tech_pvt->video_readbuf) >= len) { + if (len == 0) { + switch_mutex_unlock(tech_pvt->video_readbuf_mutex); + switch_yield(20000); + goto cng; + } else { + const void *data = NULL; + switch_buffer_toss(tech_pvt->video_readbuf, 2); + switch_buffer_read(tech_pvt->video_readbuf, &tech_pvt->video_read_ts, 4); + tech_pvt->video_read_ts *= 90; + switch_buffer_peek_zerocopy(tech_pvt->video_readbuf, &data); + rtmp_rtmp2rtpH264(&tech_pvt->video_read_helper, (uint8_t *)data, len); + switch_buffer_toss(tech_pvt->video_readbuf, len); + + if (amf0_array_size(tech_pvt->video_read_helper.nal_list) == 0) { + switch_mutex_unlock(tech_pvt->video_readbuf_mutex); + switch_yield(20000); + goto cng; + } + } + } + switch_mutex_unlock(tech_pvt->video_readbuf_mutex); + } + +wr_frame: + { + amf0_data *amf_data; + amf_data = amf0_array_shift(tech_pvt->video_read_helper.nal_list); + if (amf_data) { + int data_size = amf0_string_get_size(amf_data); + if (data_size > 1500) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "data size too large: %d\n", data_size); + amf0_data_free(amf_data); + goto cng; + } + + memcpy(tech_pvt->video_read_frame.data, amf0_string_get_uint8_ts(amf_data), data_size); + tech_pvt->video_read_frame.datalen = data_size; + tech_pvt->video_read_frame.packetlen = data_size + 12; + amf0_data_free(amf_data); + } else { + switch_yield(20000); + goto cng; + } + } + + { /* set the marker bit on the last packet*/ + uint8_t *p = tech_pvt->video_read_frame.data; + uint8_t fragment_type = p[0] & 0x1f; + uint8_t end_bit = p[1] & 0x40; + switch_rtp_hdr_t *rtp_hdr = tech_pvt->video_read_frame.packet; + + if (fragment_type == 28) { + tech_pvt->video_read_frame.m = end_bit == 0x40 ? SWITCH_TRUE : SWITCH_FALSE; + } else { + tech_pvt->video_read_frame.m = SWITCH_TRUE; + } + + rtp_hdr->version = 2; + rtp_hdr->p = 0; + rtp_hdr->x = 0; + rtp_hdr->ts = htonl(tech_pvt->video_read_ts); + rtp_hdr->m = tech_pvt->video_read_frame.m; + rtp_hdr->seq = htons(tech_pvt->seq++); + if (rtp_hdr->ssrc == 0) rtp_hdr->ssrc = (uint32_t) (intptr_t) tech_pvt; + // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "read %2x %2x %u %u\n", p[0], p[1], tech_pvt->video_read_ts, rtp_hdr->ssrc); + } + + *frame = &tech_pvt->video_read_frame; + (*frame)->img = NULL; + return SWITCH_STATUS_SUCCESS; + +cng: + tech_pvt->video_read_frame.datalen = 0; + tech_pvt->video_read_frame.flags = SFF_CNG; + tech_pvt->video_read_frame.codec = &tech_pvt->video_read_codec; + + *frame = &tech_pvt->video_read_frame; + + return SWITCH_STATUS_SUCCESS; +} diff --git a/src/mod/endpoints/mod_rtmp/rtmp_video.h b/src/mod/endpoints/mod_rtmp/rtmp_video.h new file mode 100644 index 0000000000..e62ce4cbb8 --- /dev/null +++ b/src/mod/endpoints/mod_rtmp/rtmp_video.h @@ -0,0 +1,49 @@ +/* + * mod_rtmp for FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * Copyright (C) 2015, Seven Du. + * + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is rtmp_video for FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * + * The Initial Developer of the Original Code is Seven Du + * Portions created by the Initial Developer are Copyright (C) + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Seven Du + * Da Xiong + * + * rtmp_video.h -- RTMP video + * + */ + + +#include "amf0.h" +#include "mod_rtmp.h" + +#define MAX_RTP_PAYLOAD_SIZE 1400 + +void rtmp2rtp_helper_init(rtmp2rtp_helper_t *helper); +void rtp2rtmp_helper_init(rtp2rtmp_helper_t *helper); +void rtmp2rtp_helper_destroy(rtmp2rtp_helper_t *helper); +void rtp2rtmp_helper_destroy(rtp2rtmp_helper_t *helper); +switch_status_t on_rtmp_tech_init(switch_core_session_t *session, rtmp_private_t *tech_pvt); +switch_status_t on_rtmp_destroy(rtmp_private_t *tech_pvt); + +/*Rtmp packet to rtp frame*/ +switch_status_t rtmp_rtmp2rtpH264(rtmp2rtp_helper_t *read_helper, uint8_t* data, uint32_t len); +switch_status_t rtmp_rtp2rtmpH264(rtp2rtmp_helper_t *helper, switch_frame_t *frame); +switch_status_t rtmp_write_video_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id); +switch_status_t rtmp_read_video_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id); -- 2.47.2