From b63e36abdb7031d642de8b8138b43cc29e94b759 Mon Sep 17 00:00:00 2001 From: LittleSam129 <1qwe432@gmail.com> Date: Mon, 3 Aug 2026 13:17:55 +0300 Subject: [PATCH] Lab034: evaluate stale video frame dropping --- PROJECT_LOG.md | 25 + .../processed/lab034/lab034_control_delay.png | Bin 0 -> 38049 bytes .../lab034/lab034_control_metrics.csv | 16 + .../lab034/lab034_fec_alignment_overhead.png | Bin 0 -> 27342 bytes .../lab034/lab034_frame_outcomes.png | Bin 0 -> 66274 bytes data/processed/lab034/lab034_image_age.png | Bin 0 -> 44074 bytes .../lab034/lab034_policy_comparison.png | Bin 0 -> 45034 bytes data/processed/lab034/lab034_queue_size.png | Bin 0 -> 45772 bytes data/processed/lab034/lab034_report.txt | 98 ++ data/processed/lab034/lab034_summary.csv | 16 + data/processed/lab034/lab034_update_rate.png | Bin 0 -> 42820 bytes .../processed/lab034/lab034_video_metrics.csv | 16 + protocol/video_age_policy.py | 224 ++++ tests/lab034_stale_video_drop.py | 1020 +++++++++++++++++ 14 files changed, 1415 insertions(+) create mode 100644 data/processed/lab034/lab034_control_delay.png create mode 100644 data/processed/lab034/lab034_control_metrics.csv create mode 100644 data/processed/lab034/lab034_fec_alignment_overhead.png create mode 100644 data/processed/lab034/lab034_frame_outcomes.png create mode 100644 data/processed/lab034/lab034_image_age.png create mode 100644 data/processed/lab034/lab034_policy_comparison.png create mode 100644 data/processed/lab034/lab034_queue_size.png create mode 100644 data/processed/lab034/lab034_report.txt create mode 100644 data/processed/lab034/lab034_summary.csv create mode 100644 data/processed/lab034/lab034_update_rate.png create mode 100644 data/processed/lab034/lab034_video_metrics.csv create mode 100644 protocol/video_age_policy.py create mode 100644 tests/lab034_stale_video_drop.py diff --git a/PROJECT_LOG.md b/PROJECT_LOG.md index a531046..1244515 100644 --- a/PROJECT_LOG.md +++ b/PROJECT_LOG.md @@ -188,3 +188,28 @@ git version 2.51.1.windows.1 - Итоговое восстановление всех кадров после освобождения очереди не означает работу видео в реальном времени. - Расчёты и графики выполнены с Matplotlib 3.11.1. - Следующий этап посвящён отбрасыванию устаревших видеокадров. + +--- + +# Запись 009 + +## Дата + +3 августа 2026 года + +## Тема + +Завершение Lab034: реактивное отбрасывание устаревших видеокадров. + +## Выполнено + +- Сравнены непрерывные FEC-блоки и блоки, выровненные по составным кадрам. +- Выравнивание увеличивает видеопоток на 5,975 кбит/с, или на 2,633%. +- При 300 кбит/с удаление кадров не требуется. +- При 260 кбит/с ограничения 1000 и 1500 мс не срабатывают, а ограничение 500 мс уже чрезмерно. +- При 230 кбит/с реактивное удаление устаревших кадров уменьшает очередь, но резко снижает частоту обновления. +- Ограничение 500 мс оставляет только 3 из 63 кадров. +- Ограничение 1500 мс оставляет 27 из 63 кадров. +- Подтверждено, что короткая очередь сама по себе не означает свежее изображение. +- Текущая реактивная политика не принята. +- Следующий этап посвящён упреждающему допуску кадров и обслуживанию видео целыми кадрами. diff --git a/data/processed/lab034/lab034_control_delay.png b/data/processed/lab034/lab034_control_delay.png new file mode 100644 index 0000000000000000000000000000000000000000..d5aee5058e583546120c97bd19975a7e74eca179 GIT binary patch literal 38049 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�P9!YZP#eRg9T^W;Q@FJpk+EHa7HW8R~-vzE`f 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 z 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 WGc;8 literal 0 HcmV?d00001 diff --git a/data/processed/lab034/lab034_queue_size.png b/data/processed/lab034/lab034_queue_size.png new file mode 100644 index 0000000000000000000000000000000000000000..2c5c4d161616d014c06b57465738b09e0638333b GIT binary patch literal 45772 zcmdSBcTkkuwlB&uED)6-Ns*wSq97n52uM(ZC`b|-BnwEkQE~>Cf(R(6NKTTQCQ8mI zlB47-5?iw540p_4`<#1ky;HB=zptxyZ5K4%Uzl@@UmBmUvZCxsaz=6z5|Wem?@2!- zA^F>egygU=+28OJe%7oL@P8t9GLP(3pPAS>8rT?Yp1fBMYsskz}f2V)ys^JiB4 zJbZjSd{@tz+1Wj}72)N@{`Wh0p4pi4+6)}tgiks4{GO&Q2?@g~^uNDMV>{rxa)jifnNtzCZGj>EljCrW+x9c3_8zf3eWhIi@>4F){JNU-0E5 zB+7PLg6qV8k&xh`&XE%T`T5>4I9v4c`}F_oAF0jOvcOr~Hrm;q&Fb`F^$4rjo=IDs z&8kcu@z~+s`}3W0`e1+YphNOF_a_q$)fB~+@t;p~TROBXGcZ=eTZGtHb$$1>yrtT+ zHwWNuy%?aLfR8(=W7jTYUgdRcG9>?L|8@JBt}EOHeTL@I_C5Dk+9WDng(Hi{18#NH zFz82#?{ALF^=6gK;HTfP2i(gI>dDYfiL@%YQog&~G!5UN#I2QA-!#6Lni3OXRk1Zy z%fbe?aUp6d+%zVyhF*JuJfvU2OQ~1S6+6?JqBQXM z)yZYYjTqO3`<}Z?vfFdHZ5>s|d58L>j*yU8+q4=q%ftuS<;rKJ z^96bEx20J!oKsc4A?EE-zgllCJ}6zRaJBGDR)`FVahXZI;q>R1j&9!m_AJ4VorL7^ zx?unl2}#&}J|)HG`yC0gfj69&CsyG`YmnKD#ckhOEDL&l@@z<&W4vLCXMZS8sN z%!krzKKWpgm65rz8)g*HFh5%G(`9y7_0Lq~v*eUm50T1)&e;7=1%px*r3d>vp*On3 z0uQVV_j|5E8=FYKrps_)^Pv=g$YX`U3!IM08St7F3 zPOMu-KFztm-*kY}dsF#4u(E?y==o!-Zu;(XH;0}}74O9#BINh#HDOMqrRT_He)XL< zRE#+<^*Zrjf1|QEXCkw70l!+7pg=GJ zpGub+!(LiLKRHbE;*MFDBjpj87Q{?C^OS}W7x5?Y^7B@v+4>hCv$wG z!OnbPo9#rk`@2~e*fX62mRZpf2^T|kt_vh;TDNi8PA7#X$4U9LcJZ!e0}=)OV9-p5;Jl-VHID#Iwso*tiynLip?yG z^Tdab`ks6F9eY+#A#`+UBsw)-xNS{_US##yH1KwZf*bfzic;)GY?}RS&&41PrOZ{{ zO~;?kgk5xG8bY-+N}?)Ok&T=-wE@i9TFzglA}mARG78{_wwK21Le+(&1s=Xl%dxI* zlh|Jhw3$uVKF?`LKC2H` zo}XE7-n=;4995bw&r^KiS!b!^BKa&&#paj@W}?}zjh5s^zf@B##Yd=e4mUk^H|>7? zLprr(UA1bf_7tv!d8;rX-EJi8`=zPhm#yr=Otawy*0WXUB_Yjtuq`L2-mC{|DFu);wbSV8gm$)hki3#OPDDpUOvsZRKnx>Pnp1b3$ z=CSVU_vLxZ?OcAx`7CdTZMwCIZNT;T_KK9CZo2eKh~+Xvz)Gi*#N=9gd}^{)`C3oM zxyw}%jdrs=+$6Cpx1jZz|NbcNw~xx5DQ$Y&MKT2DU6a1JNS2C^j0 zC+c}@P0AJex~hdcz4=-AY-D%en?dhhzDl2m53@r(O`pcp=T{VsS?wa3bA8bIw6`_6 zp=AdzoTaQgKB}FUV|h7uCMJ{)JI3ZT-S@?4f1$g(d1yt_wPcg0Vx{#~zR0tGPn$zA zDolT{@L8;hx8_>-A(CsZ*JLS3NV=-vh{8QNcUcjfK+Rv*x`qyQpSy{XN2b!RUOH?D?k6c~Hx@K3zq6D z-s56Y<&J1Bt?X@#ght9HQcb88K2w{Q4!-Nwb5fYJ0dDfqC1Fka{+DaZzx{nSQP-jWA}PD~Ojy+#?cm09_2?ZyZ1q_f%v5)6`tF0jNW#R( z0GEEIH)Pu|J5M)u-Yze6ra#v-(<;0|M&pf7Kj1nK#+z0;6r_fwxL@JW4du1nWb7Y! zi7ve;z@OugjLboxXi!Z?yU^*jUa(m)ZTF##5l>H#d(4CT1c`(D$9c=1XQp4ybHhIv z9bL6;6ASe;xsdtgdbc;fac|AOz)2f&LPY!e7ja4N93w6@nXV@zIRpzbbT6?d>F<>{+<|tled4#oKy9vE0hX<6{QGf>A5YCA~wu zsiyA2&r}>;gqnA-`LM@1PcnN%+XY?n+y+ST|Qz*+;9grP@_! zK1t9AN*mWL&T~GC*Sb8l{Knal?T0WlW)mTOSueGvbFT1>Sp`S6zX3Ybn9V+qXC=2# z&7c~r?Q2}nA6{x=agA}FYM7s#$$91;iP;bZaLPNq+NspG$O}8XLoTr-BHWcF{uIHV zx1xT&5kaWr2jLG(cmiA}gEi=f(e1jmA9+&#>KEyVGr8N)@E)(9BQ`wRJMu!SKcu)$ zT33C(^9nC^_lR((k8HahHb_D6J}TKRP$N4~2c6tkIZ92FAp3^~8)i7RRi$&OThk=m z_~F6+-pcps0WXcto!<$8_^7w#e_q_W^dZY!K=IAvIY0$X!N)MZ4(cjruJ0XQ)hl|MaB>DP(n zH(kh4M|(7;y6i#CDsjJ=_4ff3evzF1qa+<)V7~NRn1!}iJa$XIC%70o$+D#y3&Ma&O*aS35;~5JOYF?$%59XxCY0k6vba?c&X=~Zg|K91<^J|= ze_feEZWXMs@b<8g@0!*Nn>=)!-+CSyy;FPef2^kj$-YzAmgLwU?wfx`i?x!knQyPg zcgtPdrXD zQNH$}V2)sMUv1wd5xR8y0PrE#+)kV4K7V13U*qe(OPAgT%Dn-2nY;SUw)xg6gYR#f zB@TA;txnPz)E%Z2eP1wOk+%E30(e1jwDu8M6>DnB)C9)MwKSA#2{Jlr%n!1l`cFsM zwl?&h?Y_2jPHf;ComMEbL!W^_$?F_??WbSt`i(;;cXr^q5?o7%9R?>?WT{r*x=yWB zhoxlcy_wzat=td({@RR&p0Z}#b{fhzxWHzz(Br4DA$G1Z>ny_EvYGT#1^-CJS55X3dKRx^2t{ zy0K9FiX~I2XzyOu?)QA9a*=`Ug5R3wc4zFeJN6CnB1#`4A-N_6&F0ze8P5hNQTnr` z_QUqQ!FiUwJd674DYk^xi#LbuR2xQpSYr;#I~8vQ4?;<4qR`)Bmh;PpkoCpRWCgC&G}xROPxiM6S#~-=$m|;&N8B|gD=5WQl^cMa>P%Ny zW|cc6ZDh^ax8P%aX*gP!U0Ebx=U6874nrR^~U>H?j)|`;(#i zGrR7WcZzRx0lK_xZApEgWaM)nR?!>}@H`#tm-PY56vQEVb^;j%IK|ewREuR)VLdHN z|2b<_WH19=+A3&$eefCKSa(9VmZoa*g9h7T>7#9c^;Rm%UDo7gGfSF(NY831<{~z})@U7xxF}Mk?HQYzAxXdCLA&ZMmym zsZLx%6){t16Asu0(*e*chU=Y)x|&28ROBsD8V<$gZdsKYS~_mZI9PP_z7aaDCNl>CV7#Qrw)H-BAn5E z`R@uJ&_RywuO0_#KM8O>Q%9Go#9@AhqVuvFMt{T5r?@jIQs|@yWcae`iq%kb>Q;vc!bj53KQGz8vUr|Jl0 zc&bZq?*;uX46A+aR-dDSs~VL1~9ko7PF00cVFHlYw({gDTi zXY#$#x1$UX(CJ3#3Utq+%Rn-7_x<;$2GBt#FVXQ@E>AR=_hlO(FmY0xhY>`N-494M z(Mei{15Sw%a~1RrjQ_7gb9~A4xL^ecY0Ax?PV8d9suVcq%<#QO(Fb?wHih>w`2FN> z6Af|zdYV^7&XtJTBC~BXA6jykHCl43Psyw8@b499=-OkpLB{F?co`O=@3ECPUoe=g zq33Lz+^QdB6f#`E`RebJjf0|4xPtXYKp%07e0k^`i_r%9HN6X(0<2 z35yvhFp9RV!ln@-_7*^_qk$!6d>UMg29`Yy;zeq5x$S;x;>VMk!~FoDMAl}yxrXgJ6{bJR z^E6PFkB`nnd6w7Kl+iA5de1@`)3jeLHTg(GxoA1Y;^MySX0yO&^wtYs7YYs2=O#!%0Tir&u!Vc(u3Mq@zx%raWOaT#xy!5m=@h%f4 zfpS)XHPA7qjOy&UK>H{wfR4*_lJFyu8C=55-mOQS)~$1nYruAtfT2Fp z+XtcN)1X8vje&Am?WQ3U^>$6c7gn?^Z~UFn9fmCf<#lp@pyG25>HJdf%2M`bm#R`r zH}z5X?bU`lA%Le%d%^pnE6u8-ebKiZGjsO3Vbz4A+Pu4n`?(2At`p&g*MP{h^2}6b zS9&MH_!H*VxS`dVx63fJaF;R4VHfM(R=eF-IYu+uByq6SR)&O-CJe2LJq_UvReUnx zouG-zN!4or4|VdXC67EgQ(4j2bM+BT}pv;)YhwJAQHV_^x3L~Lf+a-)v(!}U@D zph$$?%@fJbV%0lm@$(y(S}{F-T$y15z@*nf{$=;kHjTDd7a8@U>5yU2RV$f? zgAeEOGErBkcqMR#(Cqi#stc!5>|(yXB3n;8`tZoTqsMuQem#h#LD$LT^*NvZyLlNU zAaQVAMPSpGPEr$eF@2A76^j)+A=-MlM^3O{W<>*V3ztQOc;Ap#w)Jz8e7021Ahmdi2fI|mkY&R}ov0=lfUDI+ z5}*)UeRy{-W^hqq_ofYig~a{69YP!bOT47_{ih6nH2`~$UBswuJjk-2T|Q7%(I5F1 z@z!>GynCWli>mI;dpy;$0&nIdf*sh6BSPpZ&>p`-k^9bJegLEOK{edzoQ~5E=CQx* zcfFkMvD%t;VT>_Y{$AL%cx7F-}61Ge{VO4Elh&# z#p6SV@ol@*iUWmBTdz=GX(UjXoliMpUWwgDi{Y{2n^B7u#wZDgC*= zPW6m5FYC(45Lp|*77i~DQ41_hr^F^hJCtC4{`Idd-pX;_@+QTf;^kp!Z2N3(P^y|d z=l4LyuhX}^`B6cz|ANG)fHo19b;Sc!!7^M%sGiFe&#Xq5QE!IjS1Vz4i9Cd?2EMe1 zPENYRj=4GRmq6WOEop!lO`nH+29rj0bO2fCZIk56+mSUc^ zpN})B0&X!E#12KJWmSlfinKfY2KhWKTPe@LPw;O0smoe_BLUTU-$$qxl#Q7s&eUeX z!KXolo4)r)V%?S-IvliUEomEDtQ zV;GM)@ul3$o4}i!Dfe-(L}*~lA8PY6%3>Gl`b}e_SwG9}WZ<9Xwcj-dsNXmUPGO{T ze^%vw1fj~;_4L7T&lD=z&tlGUyo|gC`W(~GyOXt0&@?B7_LoB|CtNo-Di6fm0R%d0 z?s~vSx-SzP;Jem;F;`Wy$#kvjbx(d{_z!}PIIpPIgBjaX&w|78FD z2sq5jtKEMNlTMwBFPZr`z2OXK#`bo9ic+k|h|j>=1i=mVDT^&o+2jcRsSlVI!Gmg| zyNT$Y)lvG4g7{NYaGeymGV&f~w3gN~T26ev89*I-r#bMHZS(G;=RsP*OLms^x-GV= z0j_7hSu@?*cMY@%A5drPCSFnB=a;KK;OO7BT?r6=+LvtyI+wbT<4{nTs|f(xdW@L$ zLXl&qkLKDEbNaNN z5Kt~|b8%sp4QS5dJGig8v=-=7v-H(vTUgPsB7kh3eC2ud_pLBDF_x>b_C1=#He3N` zDHqd@GvjZ0Vgoc!Ti%H~iRt(0{NgFP8ko%{>EF2S>w05Phb_OD(*BIB!lLXWtKvzU z;JZh-1o(i3xRnWcx{=~lhn=O4LqjoKyS&r|4@WZAKr50pi|>y#=trjde^!1RVNv(8>aGc}BW7qlMh- zR}ofIf9@^p9{-Wkqq5Gy*wg23Q{ic)=0Vl|ax6uqC*nu4%jD4Dgv4)MBKy^Kl+%UyGix7Nq5~Ac4S! zB*e*e-w?g?Q|`D2dGo&H;bGakgjmnaALKZEmz7I9%VjOTnn#>F{(s1V;+b{w&ZvG+ zl^FZ^8dt$t##?LD+B$X%;6)Kb_e%K{mZhDWy`_A@(TOQ z5GwBIR?yEx4V?O0ZNDH7s%ccQd6>#Dz+1Wd!T=xX-R4=U!J47d{Ny&5_4p)ek@qYw z@qJt9l0xj_Nkocg3hj*oAFt=PjlUB+^dkOZ{gs42pC?I~Lg7uq`N))%K92wup^@Gi2Hsx`4sE<9&9kbkg{INp^J_c`Hbs*1EkAf5W z?6ktui9sFUdqxC^F4x=rxI>x*zKbx3WV+6Kfb%~BHCHx>ZLD_S<8zKPKKt(-QaEPQ z_y}}sxsgTarF2$3`cQyxfJc^eKj=~t(xnOv(lS3LUt4TNxf58OYU7kBSVX+L!1TpB zkdH7D$b74ys?Z2APT<2^?gjx-bn1`JYfSE<+zMzixa>BB*z|jK9d$KHS3w31&B|7FS5B8G=r61AQjv}Ku74*_nrC9M) zfNImPD8=s~=o-_t4N#^f>*&E|okRy1j-SNg>vY;_x^IG{AfHvft`z}t#ej7kb0?6c zpPzgG6-Ao&BkbPuyR81UYZKd0d$bQ=J-8yUz|8nnlv(&XgjAAWQHWd?TdrqE;Tc}t z!g@CU2`WOC=bmNpcnhpX=Tgwrl3^oo0a-P2c1}~zu<=%kk|zaQKE?Y z<+Cu#e*CvKL5L86Lu$fgw`4}l*rVb>Qj-Cdqg@=zu|wL*J|BbPZdYwi6HlaPSblsC zQaHM;a{t5lyEC3$fVXKQ5v&skYbVO^&_8vYUf+TUabgZfqUuP+_?jrtpf>s$i|oOH!~H?jdgBz z6i9H+HH-!PTv6MLVU5+$JWNXQ0J-2uDL?_L8F+sZA)~oX;vfoz67oQ!pK`8f^q`b% z-Vy-MZgTuCSK~lHZV6u*P()|FIQRAbl!1dx!-_bl_18RGI}5AcT9ksia0?~Twrsik zz#!s!OH{QYIPXv>sEd;Pgj%!meTVEg8}5zI4pM<;zzz=HsX06jm-FTx*acVJf9*DK z#7?|m-!BKG`N`_+Ki_`0C#>v%d@$j&3I3ft;;5Y_ky!PGqVKOyHr2iJneo4xb8p%j zw(4FU1Ta4RE$qD#Yh8P$_|ycHxCY840O6Bv%u7E?pPt49@zDmHK_ZzQ@&^_qpr5+M zj)@|HKI2ss8TZ)ezPdJ+n4WqSgfsEoaR&vTP~dd*i#SUU<(caj_O{wQTgQjth&!*O zM13U09W$zZd*5?saAbLJX1LT5N=>ZI54$m6j%0w?uF2vnMU=eds}HBwsavIm3c-4q zbY(KsODD6jaM4{`a;B@`ML{tNYc?ti2o_P?-G_Ugf`TNgW!58ja+?YWgq10HJ*1wX zT}Kg|WpNa8qi8lffwBq%aMqRrtuwV$gSsG+B;8RoKG5|>fra7c-%rv_-S8)|fOXdz zH_n-s{&4_8cZ;5G9^ich{408zNWGT|qNR)~giKK$D0GP_F)o}E_X33-D4?k3K{1&W z#4bIqxD?O%1i74P83kG>mS8h^`x``J9$F0w)%`=t62^Ml6LKr5?mO#~J>Fy_Y?sLx zbe`X#u;H`?ZaX=C0I3A-3`3B|>^oFsnK79)I@nsOf4)LzjA(@t-huy!D+?2{HiV+C zf%k`dDW+jn{e7Q|nVgQD`l+;b4v0LWp7dXIkC5=SJ@7h@gw3A|0Ojld>bTx?Rh6-- zy6gsW&8LOO?sy(iMi4~HEY90xhM(7Uam@XQur;OY`kZFUEIzP}OFR%4<>yLA2zY*_ zdKq@McuP7Ng;8tlOR`o)@Jnp&C}Jx#?CA{JEBDv3+}y3P#x(Ty7SZ% zSF^t!+TvjOC7XXQuiI~2`nhudUTk-)Gd3$tTs*5N1b4{qHlAwCtBBONO_Pj~{jx=W zjERyY=e~LBjGuj0_F*u)rrdM6fg=r@ zBETiSQlg{b?xwd?>=kiDNrjmP!)ZNdM#}I_-pdYgzjqtH1(qOR*-mc{cw~{+adBxi zV>n)B9 zHA7cam~9}Jm$cTS&5HsvlRdIYGHR}Kpg1KpC6t_(^vO9dGiu;?xjB%ZJs1;98$x%< zBWwP&Wb=Jn5V0qJU7C94>nz`>9@V98U=`k2dv>GbT8~*ceeC^aNB;66j&^){x>*vv z#Q8({koCCMCaj9Vw5D%1&)T4}f^p>Lw+Nz-#WqXjf_a++?rg79tUpi5Wl|1E7UI`7 zEVjqJX%vOx8u3wKr5pv2%I)NGTR7T&=-QNu->)S^7m*DZ!%l=75ogg-SEHiEp9}$o zt7EcVjxz)!Anc~uzRbn)R8~GUO!nd>Llg&*XKj`BzAyT81mG%X#))vfr>yg7^bmh! z)RlUhi#PV(dTMd&H5KIsFvmVSki`kl%^^Q(Zc-g}<2IFgBqE3WaT8(t zS-S~hU63Uf{%({GPUO~U>Y?hWi+q*xUdN8|Il_4bP9Eixm5(xV0f=Vn0)^hjzaXM@ zi`usO(@9eBkVE(P7Ci~{y510qc^j7=mM0!SW1x8c3GRXDkHBIje42@GV<1kscrK@@ z5n~|=p<{CpQj<1ZpiV0SrfCj7-Kk+G-S@EQHHa&M2d>+$)bU!0;u8N^z1DMNe1;w| zWT%=UR4{UR*2e`-o@iR2!Kmh+G1aZ!^Z)w$^;s)i!I&ACJHmf_U6lu~f!PRWdWsH& zKNK*C85xHztpt%`Mc5mt~t$QHaln zABpXZ5*}_Y5Y|IQJU9T*T8FznM$a*?rv!}aPK&gR5TGnN(}L|TJPWh% z)>u%Ya`V8@p2!{rucB$=O6@6nsO>tM)WHgTzV15Dnmte1PD$6(#oixE0mLWZ!vRaw zcm~#d<{@8K`kmcLUQhGvwz6a*{25BaiTepUwJY-ApRg%|vch0{+ZOE6P^%qKai?}v zad%5V{O|bt?9=yk)GMr*xp0V3QrA!2gU!v_O|KqPOn54mG;5ScrCx~CyQCXv|^FKD9 zl4W>?&rsS0AmXyro{(N%7KlobHj|Q|pbJZ1Qi_TC2|d2U?@d}}38w^Epiuym@bv@Q z>ca<*JW$T0F)Zg!D{zZwE(Y?tK%ZG^T9gDy8tk$=;cbb}%sD?L9PW`BWmZlPvUj3L z`@&VuFgCY0&MIU4zN823Ice#j*o%_hTnd-2r`llC`XmOi)1=@#)Oym-X(8(~5YMd3 z#I=s?&)H_H8t|BE7w2A(HxQ31(d$j$FOzhuGmJD_WT3lky~`dT#D@J+Lq93r`3D%& zq+C{!hV@+7;FX>>Fb16?!BJE%ZiCoGZ5W5a%@ZIpk3ob$ zEI{4jC|}@1uauN18@Xc6^r8Tv+UDlzBWMxlM$%slZh5WP?pql`8LYsSaQD@$mZ+5zBN}(i{CCmB`Cbbmijy_N6!I_7!|+oM!F!4g99q!4EP`*U({* zF#4P$o#|h-O;x)zrF%uNT|Dh{9nlK?5%v4qQJLgREB(r%ZhGjgx7{CpI4pDNlKUcX z6C=u3jLXhMR<(Bj|C6EqKX~l_`$rbTeTQE}gk3X`+y-idA2tDgTrY7W6XGOOZFune zF`2QzO}!_%wF@2~da_&u$r}ae0CJ!ngpHoI$mJ#;BOlGg4H~YY5=kS<^X?rRK_ZKT zX&PBbTuO$(i^d}jU}djjf)qur=sy2;6ny8IF#y;15$xHA!t2-pVb|c=w`WwR3((#} z@enSz5MqcG${OcWSi&1Axve5xz#L44qx#Wk3J|LgC}|WvK#z{$vBT$l#@u&MbGe{Y zJfrh~@{&-?qLu3i5IhBJC>~w+wQjU|B1ZQf83$uH-2#HWg(yY;+#Y~K=!BXb4#9%h z3dom~%_A4h1O8Ct8L{|XE2WzFarHrrXtDaBEXg%c5Nw*_bst@g1^;$B2X}nf_a*1h+goQw=tyBe@`cnTq`$$&6>H&CF}JTe#*qk0 zAxAU_%P5Cn{?AeRd*GVNQ@lfiEh1QL{SA(Rni`_PL}GFgF(EZ$(53jc{_)6LLIiAk zR{tOZrZx2DJ(jXPAo=`&LC?vc*jYFJ;-j`0u};wAP3wLf`6m52R-DAXQKJ`ou-xjMQk@k}VV( zb)nizkxxJN*6f*Irgl+d$d*aMxTynD*DanzY%24&ub_o}f5CP8atZ36Ixx{<4(z*S zh2MT*NEi!w<7rqJF{5k5tV5R<@aQXe&ar>C5&lAP3AWP zfF=6=z{A7TVbY<)9*F4GjEOgL(cqTwoIHK)T;V1jFES3-nRA!`3Q6X28N{(nh)tH{ zhQnN+9V872vD4q92Hu{pia`~TljH_(^Lm{a_d-JC)%#z|A}`WM0=X3hrtT&`7MrCAxZNaIGt%gnDQvv zRRXd_2SVZ6*tLb>TRxW|_0@=>708(BhfZbl=+yaEa;|jc$pY$lX|v}5+>*e;=03?R zl2^6;qr`reG1?WH`!pz6j+wuFE#l42&>IOu4@i5OFPOlG(BO2hzNZ38g-z#x#3ecp z!isRU85zXpO!nP8fKJ{350vSF7-&w;6p1;(_r0C5Q?S;_>)temlFhRH!p|3Ur?%`l z!(#6Q4?Pm`sXQ3zAlN$o{&C)Oq*2|LSZ|t7!0Lm#T>eQPi29CAQz#TmCOhfN{Or`% ztEINcyfPtvod?njrteY@7W^3$7&3=Zr$)-14ZwqCJb2G!N^i-h+B7isW$yjM6f$x5 z0Y&g++)kZ8Z5WBd_&zk}rviP~u_`JZ%4|B&xm%VWjhUuIJIEnm%`yvHN7rDdku#FK z37P2xESGBJ&I&m4lf7il#2YY!bQu)fxQ~h!4Bcd8Tfw=t&6-ZYwUGxlZyaMZi4wis zJ&oJoo7?ntK!$G>i1$>FZu`$UFa#TBQxv1MtacE9s_e;IzQ}3KdDgX`{L?_dc_#ZV zm15mK*e*e6j4Kbw!=&ZY2h?-Y-D;4}l@Fy8FKrZ0dqjU;BkoX&;9%=Lg+-+!7St3n zmc(uRVw(*pjvwhxyP_pb7|`|9h+YczzR)@Qv)nb)p%@C44H*sPW>X2=16%)GT#qKq z*vWH=LwEC+3*2azWlbu;4kkmmxBE9EXJj2mEerWLAb)ZLW$06#2*v{I^h|=;4nBc` z&GfMp2*W2eAsKI1#O%js@0s#610P8$Yd`FE&1woM2Q%85*_Ce0aO=6AnVf!`eFz{#Mjvx zMTnT1nLy{r7x{_G`ub1TMWk6zI#_y>Zc!&Pd2EhO1AS}^W>skb=~MpGpd-kT#RA%M z40UfFC;p+ibKhV;itKu$7Pvzz&PL)#nM zV5+DQif6nc8D7MJ@U;juuGzBrw_Owah(b7*p_s7kn&J_!r8BFuy}bIAXrX^iKL?5> zRnQOErg0tiAgiXwR&-p%YbXj&ezI%07@7#dCUK-t3;%M4aFQyRgLqL5wZiJ9DVT+` zY083j)CJp*X-e9=5oJOM@n-~|KGK4~QU@A9;gTC0^_bJgh4@ZVS5)UbV&E<&mtfGf zQ_*9oLv6Sznm51`w45pHx+V5%U%$^}9F110L40cV3dS{iSXhk3#?&U&?%d5Ss=;uz zOI9Nct-`}1Q~oSM#5mio^rT?lxp`2zis^LT^4Gd`D%_lWKZ61-MpwDSvrtX(i%sDd~33 zybhEr^0ueuls=xC4f;Ic@vE^faM=@$Lo_cTAcC>#EVd=sK~yCLxkeh<(vP2m1d@!9 zhCs3mz2=4ayiUbw7y)?JWqte0^8X0-nrJ+6rqqqiW_nS$(^u5mXrV!EviZoh#}HMX z7qu!nN&#`lfP0jh6tzI@jPz4zzIX%loLUy*O1_<&%tq?>Kw-*~SZF^xD zf8{IvULcnSUjJiq^M43){=fbxY{Mb}+y@Oz5yUrpsk05}0ExOWlu+S( zNI)a85@U4>IT7RUZYCq=FaOzyID+ctpw-I*5;V)k5)a*k6cUJrKdv_kLIN@86=}Eg z2-xd_XbNB&+2z>_K;4u`neCLdK%z3W@#^Y^Y8y@zjX~N>GWh;F2?eMdv6WEmR$&lD z7|jzC2Zkl~H;sNCfLM4Bp~m7LNfiY|#2lteW)p_Bo9?)Xg;+IR2qiR6mD=wIi%>q4 zkW5S=FWCPi$l_HLNKv8?zT^~x28w!;1no2*1c0eyu`VXRfz zGlN-VFUR6M)ZVFSMDqde%Y&^xaJJ^L;cQfrWA)d~OReVzx;Q20qLo`c3$T)8ut0 zIHI0QqQT@w=5Yw3-a{^t7Qoj|G>E6BE#|tO-tI8szM+f8?p98d_ns95ot>EUgySy0 z@jNvP%f-*X!NK_t(Jn;k6~$I_3R0fSOycWb$zS?2aH2%+?*D;#q9Vd5KIyRd$gE0Ua zCj-vf?p9kj{e1_8ze+&6vVDJTZ;PF&7)0omAqiC6{*C=7Limv{Bd3uwpAkSMc&T6r zDsVEWRhM0d1>^8DxuP6ae=1Dp!~Co#KAR^*<}}SLyIC5XmTK<~%}5fG12SL)Wb0NB zw8K@nf+?tCcxDoBA-_E6(l?&}`f3N_9ijMPCd{&ROmd}XOHv54Q3(UUv$RVGi{Pq; zxpWv!9hW800?v&^;^5UaS!R1R5wOfU!BEjC$)q|WjggI$83MBzFZxW)xq2HJEC;tZ z?F?ByLnXUb4xWNNqg1*-d6JU&)`by&DuZ_9TOEG8O&`o}0N^7l+X|3<{hcl}bGD}D zj@6DH7>Y$bg^J^40gOo{*locmVGzP=j6bP~_hx2#52W>A9+iKngN8%tD2Ef)`T(D4 zCyeWWWKztm?#C`H5-G&&sJB3-i902S6`iz3c2oS?PPz`?9S`ONL@N1zs zfI`LZ2GFeGpmVqJ2{fQI085U@qYlJiI2?Hz|H1|@A^o_cL#y$O$#a5h`B-}kTTig{ zGt2frsVb&sqxeqrXfg3ZTS&?PDnve+b_zsJ(}tGKGV)>XrXckDy6#QSBkHi~C@xmF zKX<&>V9zO7rhmDc*(EgbUTV3REzy@VA}rE$sK|P<-~cGe@+`_xCRm1f%$={*E2?;; zKgj1*d9b%=4y-^Ply(mnxSzJSY5(elT@*Pp2oosb`gMV<`Ub;*)zqybw+9^VTDW+k zv8+lZlr(r3KqPR=3@@1?5}h_#=&q<7<=;EJ>y*tpYkEO43g{-x+O^woaXv8=kI1>x z2J0^bJ*%KYP$w?u&xI3bt|vCWNWSh(5}#wt#~`m;t86w;KdO{>!WH=#JNfDvT1l^| zZ1=nxU*4EMSW6AxqT7A;1fngwW2@!kKR7VeC0vybFKKV>m;nn(epP*c~n z?>@uA&hqPE{+VY}_i0k5=eI>*PRy3>Za;Y>t{yq)jq?mN!x~dbp?Y$#YUfT6%&$0s zJjQj^bvC200|=oC<3N|g3F9}dk5k(baQt}`MWMKL!Ux>_*LqENs-Q~`$QQTW<*UViB3J+^-H)L% zr)lZV@Ubd=LqzT;GzjuKH2v=a4rn80wfUY}_YiEJqyrD=7##?hz4Dd}R>9UP_aJ+0 z0YJ%WGk@Dek2R(k%);fUThwOFna-i}jAu3qdrv;FJ2%x_Qz6{g87$WoQ)VJIHoN>jixbFjl2Hu!&{85Hp;q>H~<>X!NB+@kNqDcMR780l314KsrdDaq6-$^?}7K zx444#G|DU^t#n9a9uX=C*}2468bd)-x;2+AC2k7!B~8@SOOX0?wKbAxM0wlLU?!ll zbWshZBjPY*_{e*Sw%H7{L@kTdq-7;zAnw6#KgHd*Kk@i)sO-^f6pHXwz_=8qBoln_ z;DVg9!ZuGBAyFW1n$Fw2qZ+)zKp6pW$**mW$58J-1EOU z|Alk1?^V%of?#hc%d04pb}cL#5lq7D27Az+tBImVt#)Z2#Ht-aXPp#B8AoQv+PC&MXz1Y47x}4 z${oPmL@2PYa-DLTJ8e)11dnIFnL0NmLe8JfDRuRQ@YOrspTfwHJt zR%4O%cn4aSBXv*Km#8Wr6HH&fvP3&|n}{??aPQ!>o8KbQ*ylQedHI9xpzfHXkPtjS z!qQk!Lb*8kuw^DRMU$TlGTP!9V2;)%ioP|ucU;ZEyLZwq1v5-FHP65+84 z1i`2L5h*E9s)Bh~flr~qY(_B`J8yeryrUr#i*7t7;<~Y1@wydBSM27VHX0g&r?_}Z z?Ce3aYSBqCW^_H0nTBQ;p$>QVNv(qk>g+3eyO#5~18A z9_ot$tu{i7r=Ocn~iy%T%cuW_-hjKqW^Vs zs0&B5-N$n&AEa+p{dM^7Lw&UgZwNY$ob=!66TwQa3%nU*ZV?xRymn5K=5y)nwn(P=0{2y=5~C zvTzhJG6?F87&icTb0FI-qg7~srQH*R$MT@)OIIgGkT^j+15ShYBs}q=J461XP00raOq+damrxXmnD8(GdKgDQc|0QB(evl}m$%sKRAbAr?{B>-gIo*>s zGkBO5EMRhqR0=XlAyvr98SN6ZDS%hNq-m%K^@cA>=Q| zm04ssy$s1BQ6KyE3hsd-x(fOBkG$1S2rB>N^k`Wo!LCyivQi5Y1;`d0!(VX=P>XEw z3X)Z}2!NNH2zoH^L7Y4?7>Rfr_q>_vj?u=#a1--57*`LF(4+-;+V;;QeKcN(YMD-r zI+;loghRp(_iUo)S6P%}jZM}gNGX`Y#KGqt65$)TTr0g!T+1g>xNYgz4rCZI9U`aG zEb%tL@TPnw(cDDR?D*(DY=Y%i`((E9lUky?@5q@M>)`C7rAmPEObWjni*r9Bg6fx5 zFGhDW7v#TW>M)H@cjk{eEMe!yb$xDRu)j%c{4k=YSE+N~lK z(?-wakPF-azmxDai)wJuzh!PIBVfDEwV(?-G>wkmCs!*I!rheTV%Naroo( z_hz9s^uz(eIa8SVEIz7Lc30?Boa$%?-XgB<;2R2OM}8Jy^{x(*)W8OOG~)rUQ-CSZCb%*oVCn* z>Xm#HHk^isd^LWPZT?~lH9G}yxk7XQnW%_OFqS)!w*W9PA22Xw5)9M?XL1de@Ky^` zi2nJCo`Xf`@t_v@q^l9OXbKpZ7u(MOu_g2f9JgH*xY-(EbzfD{`tPhzW167Ro5y2t zmMz~V5WmoBr{N}Xg$IL~-1WMD0EBdTi`~nYihxx1VrSd5`rnPrP+=BtDNMH66 zIzQkqLuLzk%Yt%JWoKX^GvRI=PF5W6kcmm*cxzd*LFf1W8U2^j} zL|=M-Ga3fOG-_?iXlF~_RvqM{oeG0$ZfP_71&wU*as58#Ph{NIhF z&*sB)=9R+V{@E9%EPOeGa%O>UF6$i41uP%T6WACH4~WRg3)Z@mC!B`IJTgwE3~1!x z@;VDapgt76Lr-2o1Y&Z_!H^{!Jg#I-EDDQkYy)h#tgDW*Nxk}b8#a?|y#OdCy)H;8 z7tq-FcZHjs;IuLOXt)qW#wQN*bv8{0falAuYGGUIiR`9gXMyc5eeza#XXN}$I*fs9aexA)rrYVSM4vb?r!F^MH8qCphFo^7Mq=+$08dX=K0 z0qF>c3Mvp46%@rNAV^UZP>O)`q9{d-ROwBWE+B#wk$%T~Kg`ZPXFuo1z0dt|&U5@@ zjQD+TS!=F2#~fqK@#=hGfr4&zl)B_$16H?KAn?@=>O-v5I`<7ZyPb6E)8F?M=y2KZ zBe0=0$+MW>XV>iXl%QH`>0d>kwLPlzXy$}x*IXS&j=iz#XI$Z`>MNIr@UF~KTQ|Av zFIXCnU0c-4gY-{ZZnx&koci^fdh*GMEKQDochh|r!3|d&9h;Vvje@P(U%%;XNOV|Z zHkwKX!UgWbhl!RFj%H+wDU=yv~+7F zz`DN+ho(WAB~=U58XQ59qyPDi+Uovyr{0Hx9i5_FSGiN^iRAM|n7R2L>z)<8k1`Y%1LDk*=bXZlQQI%hLO#?6ccG*ECtBVoNUu} zBy3K{0cj^;Uu|?b6j>RgRb7hKO$S)7!taL2qzGI^^ARL*b`AiOK|HQ zpWHo<=f4(z&q%WIZx>+L42|kyNy- zXhI3LkIyPWEwP<4O}Pf>nKkc+9EG&KgHUt=)a4qGp4=w=k->bfm0Jsxwvag>7QAng zYIrnsD7ebKyQd_$XSJ2{rgNVv=;vSKYFpUG)uCiOWGy=$Lw{C$lR#HKlf!&ukI zuwe9;iZyPMaz_r%_t$E$&JqlHM#5@u-h8ynsS9Ga zT3z!68}~3J+qdmeJnl6N)QYo`-m2kvNj_e)WvlE}_InW2Xr&iIQ>ylaH=Ji@euC+? zMM4cs*fd>oe#xU_n+_FTGr;TIH6*!HG4aR}hOE5RK4j*i1%Cbo-OMZ7+JBFbeJpKt zxE}GI;bH#$f@$3US?~Xoq|(-_3x)br?w~?A$~p61&APE7p;6X9F(s|}=cu~L&j5Fw~_Y$D!cU((i>yKC11HJ|FWu9q1#Z;H&@N-bwE3@|# zc(wfN*Z(QcR=&KSVQQAl!xej7zRKKDiHK=5OShr=@ZWeD6x?LK@o~^v`OntnZ+*M# zrPxel|LsFyKJM>62><5e{`Y?|jV_o({9iu_y>OGm5YsZYt3S?|vlk`?9j-sl-7D)f z@aW_yo!O*~8^`)FyYIG8fkGG6v5D<|z?G@zQ0BFAhdPYuN{MiXJUqG_)Mlp?e&+q% zdu&m&2GRZaO7A)wv`@{5iGa|ruLm!yGGvN@ z0*lFzC1fTPXuxfK zQj!=%b7{$uTmrDLu;I`Rm$6?jOQ1pH=rr(lkK&LlJUlc&U@IkA7e#-AxT!a*p_I1s zw?fgX0&mgzP31ci--D^E+QIo$5YnHR z9Ihfk?jdPnVm_yejOuUemkaA?K~w}qeyW!?-gS6^mi+u#R5X(Ct$yExEtL{z@5)kl5=AM5_#j9kATJmyw371GJqD$yN?CaDrHcDkB0OJ55=W zYZ~uJr1F?UMdG`|hccwz%M@q0*62q%MZEg?d;tF(oJl%OkRPI3^J_O!Ja6k{;OgyF zz-gmO2jgV;?N+(^sp*Td9{tlX_g$+S01q=wOiwIEG9}i!Bw<9zwEYLN>FfX&934AB zTH6?Ei+JZT|Ca61wH3#tsJ^HLI#PxJkiF6v6?OROH7`=mEGbqx_aQ%8`!f-})MO#-rpBd%?|GwMzSL zaoUk3CVM`bxNW6Fq@pnM;;P$og$tLKI;P=Q6e#UG+s;S#i2IV3Pq^{aXL>aYEr=+d zhMlRN@8c27dVaNpmXZJv$;^RnF}0f-vE}NDg~vx##d6leM}?y_)+pO9w3xyW&Msyb zkueLAg7O5W9zpy<#I@C)va?L0sB_@(;l=OPbWE$-I0cQRr0efFlvJ1fEHX0wRobZ+ zmeHqV<+7`Kn39g|e~k0@|Fv&9EW>4nAp)ewt2jAMfY92Dy#xK(#fXOJs+UFfZ z@KXlfq(p6RM*D{j!Yzswj%a^Jc7S2R6PJKDf$cZ%JAqcno@~@7uR;;*^nc z0C_bJJ0MNwkdXlhkL~I9={*|YnvWc!@eFksjs& zWkmxploLjI_+^^J8@j3;t>8ab()E$Qtseyi@(f4BOFjX(@gc$J)Kvr6sOY)r`}17f zvLBsAVw4Pz6WbHyj;p0)@25z@S~&k)VA-8tTE=<^Tl+ceLeA-Feqi_=u`g$MTgMXt zqY51((cX`&d+@jQ+Cp;dS|HE-$?K!8b}nW9!nG~p<%NJdi^9?7>cD*{f>0WH;x1AA zGllWZ95Pa@pEFs~vNN%eEaq51E|_cQQU^C=^lp~|An_(qm-R?Zuj`4w+K2z0H2_8s zV`L?iSgvk{b9z7Rh7q#*!S~!vu7P;23{YY%PxjP5eZH-TC;@fhOR;8&G^PMmuR%we zX?haKl%b$iioh}X!}J}jTPl=({WG~OP*asx>Vzqs%B467?6isiGzLN8P_LWKlo)KL z_-GV1We_^rw-ypTp2F)G>wC94ax|n{fy)+Jy&Cg`72#wLi5@E; zQG|T)>eH;-@=(GKz|J^D{bt^-0oMQB6=Qsq6-U@y-~2UjLG!{)Nn+8EFJmW2%R7R3 znIAu#RQkcbMUY&y$a>7Fh+O}fj1>f6@7uQ@k~TmHy0wbW{fIa%=Pu1z{0Avo2~woE zRM>ZJ>T1@!_G=(vF7;L~+`t~U_gOYdJ$3?3oW}tGDERJqp>F8akIFb4yG(ZGX5;RZ z=Ib3GJ?_JO3<=h-BGSEe7XpaVvJ~RR4kG$Yenxrr$5wrPrrXia^vgV$gI@JN9wECFREGEfh`5M}KH@_DSXpjeJ!{Jr zrg1>L%#ERID1{&ouCWO$P|_g@8YYvdo8YX>Ojxv;m@}qYY_1`5>_Q546ZTsmC6q#g zM+0RqzhyjFNUUxBv6?#QGQP?Qd-RE>AN3wAmA)=~_a=?MT^7QAI5=Uy3MG_me+JtylB3BIY@ymm||$nOF4-7{mUJ_2-~ z#r-!XPB7lwN47dWv%N(fYQm*ZXhbEchg(!V5l#68*XWwIc*NquXmpde!}bSb8~SmQ-Kx9D$RZdZJv@mzDtK4IO8z42mqId!W}LQpi7k=vh6f>< zjX80y;4&AtgqoVBX{fgE_l+d>+CAbA+Jl$H+}Oya>9Nb?grl+_<>?(bcC31B2_-Tk zc}ZhFHj0|jIGq}Y5Q_)>YNz(l8s2E_B#;1Tr7Gho7&2zC*v@{iWcDM%BsnqYNP((& zwelF%V9qWeu6Y-^a2=5g-ky?xJhG@?_IH>D31UQOv-5fS=X}$>*oN z(%J}%S%uFsc3X!S?1}b~h~2s;2~F$vi2LwV2?d(j`qgHWP9gE1^^&b+HAW$$ydDtI zRzk1p4mahGd#oV7$?%Tbhc80iur*^PgjB;r=V}=fPlky`G7=)FBA!lHV z3KarwjSkz+r&IetZMr1YgQQ*$;tYRk?gz`&l~lgO=dL$UdekUz9)}Lmvle=Dev(kGl{MOT=L)IRuHx`V9VH zWc=wVIYqH;d#7iGZdeDF-umQEAWQEf>RBxv>L434_6WYG&;TCnC=0)Tc@}e%B{CNn zlK6|T&6Ek(;z288WW0{aHTn;%&J281>uH|a``R4KT25fx z%3xPj%zYJB5wfw)jPcy2FSuv-mvw8!hv zQP#n3>a(qgTsf8D6?%e9?r>6SrW(R5Vmb?d+!|l8F1mu0MkmnB4<|^O@;%2IP)_eC zqrX%R5f|Ahoj|P?Mrz-`GVrq(0v_f3421lQ6bjM4Q7{6T|^@Jh6%sAnQ%-gvecDqto(Pcz9BA({ob3aNe4=sZK2Z&Ai<-h~R zdSGYa%lL(~RG}G~djB%(t(M@5aOSpG0USw92-V|3$ak~KyS}vU#e=EG@oJkg{;UC2 zl)V?tKM1A94=Uppg+Q|Zv!WF`##_gFAtE|>As30Gn@MH-Fc!-5VF!ds6;vWerO*}1 zx0?FqC5hJ8ZY{&@GD#LJ-ijuvOK+%g=dw_Q+_-XxvSl1|os5Yh4cr6os3k`V5W z%sS*Iv{RWfhe~!K^ld}!JO1{wnxQ%|2Zvc-=epaUrKtuLJnHpgxcoaInpq@tlY|b% z{4=NJj4LDC)=lQUE84LW6i6cBnbeKdNW`jVH&|)>Js#28C3I%)BO)AfIGEvbh;@LJVDqu{iBDrCjsp2Eqs7sNV_b9&5=yVfY@Gvlr3 zPu^UNr!M>$|0#3)uMCI(`BNl@WIoS7ncLd%e%$4abt4aZ)_ThRbT5b|*3hqY>bn*( zB@FqLnBk!FlwH95h3jsu6Wfa5rlJ9RH*y^KTa7nyIoT1ICvbes>?rL71*j1bIt zqB24cFs69VNHBlR#__~~e>1^yM9D9O1-b^95oIV;y^z3`R)3Ff$8iDVlSzL+Gh8$5SU(yIF@O^+oMe#E$Ur-AcqpN-X7zC;>$4Yx&fv6TC*mQU zat{F}tsz&v4iXO#@t&sml;W7G`(6XB<3%}gJ5ZnA96=ays`qad&Ap|e*8Slc@Y(##WJ`i24L6MP5q zpr@!Hb7!t?`Zu?rw_7hI)RsGpg0Me8g6amcR4K!& zF#S++%5Xx5pWl+NE()QSLw4uX=gRIWLKyHN9?h7B_xHW=F@?2G{H^}O-YC}%nO+YZ zjA3C@Q%(N`nAjGVMyZX~gQb{G6sm_P5n{HzVjV0Zvj047HgHD*LpVX{J^4ETs(f0X zM*OW-N|4;fS7o@nM&O}^=2PiM(h1_3JM>tG`8+XF-CuxGAoLz7#hv7U-K4FOO4LFWHEmG~k zdR|I9@D1}Db`B~O@Wm5+JntX1w^2_yb-bLpd_NHc%>{{przN_w_K{K#{)RtLAp8Sz z`5t7u#4?P|8p1xT^VKz;6VpQ$hsg)5ine4-$U+(#D1EqLuwz@ zEs6ydr{AfYoO;l%8%7~oFKX}yPuYt#KJ9L*ONc9pRa$X^-;TcwJr`yuQiLy^^GM1> z$rpzqhf>B%T4KK6mVh>UH~G;#53%F6pE<$Az#ZZZ|SLmqXMIi7crMXyY6Z9 z#+j@@`@&M=CKm}c>azs5Gbx|yZ`3|wgnlFl8h{Y8WuYYj_#+^F8`w18LDP(pT7Z5R z7-<{w1I?gvG`uKI)c|RCDgUu=Rb8i9ty#e?d_IW$s)n$<+UMkLgowplz+qJj0WXg> z>~InC&m0ZxK4B%ELbuN=H#jLP|KO|4hKo(AhbkoQt4;b2BX8XYnutv&>eUgNP?FCE zN0Zl#IT-r>A~V+#pdWP0gt{T{2Y+1kh3xAjb19-I*>+8Gb=0c_d&=eX#nZB6Od512cw7zbz7*n4x$?44#a`N z?tDPA2gt6<+0#65gsF|IOdn`t%t?^+Woflk4bzw;m`k=-n$4HX{T4oi-P~3MANa(B zd902T6SsDLh(j!HF%Ka9U^4$GiKi-*G@og%i8v6_XN(ggsw$3hsNqD4^{gffIh&(_ zy^qkOxeo02i-~0B8;rWLHEB6GD`wnpiLMfJbn143W(5CwjJoYu`-iLzlbSpPDouk! zef0RxAyN*?C6R2Ov2q8v#u(8y8(?+yFA>MnIWjkJyWobplij$1B5(0c#l?@*9`wmb zZ#q_lCFT`*g{D$Y75$Gq7p_)Q*#4M?+7UlGQ`-dlQHf0O=01GmanhE^9V6Hq`9eMD zz*13DisMUK<5cSRo`xKGFx+bxkQuf;m3;lVW%A`SI(q~Jldj;m;DPa+XBSqfqBP~p zSQTEqYp@tPrc&z7B9bH;7;)Ku5JYuvhA6e4+_^$W2fORUNm$Pn->4we3Ea`Es|CAMMxG9hR4Un6WtjOxV4a3jz!6glm+1r-3Dr)ucJwEqDfuD)GvA=YVN z`z_YRe3-1-EE)@_F&tZ4lwMH>U^+#VnWq`q9JLb&of1KDdFgvXrbfBsVd`&_*%;GU zL`d~x+SABr!Z0dSkQhFHo%kVdO}8o6q}matJ^+$bIM`wmo;;gYk^8Zy?DxDte2=p6 z$WTu(6;=Z@yH~@&Y5NeNqTePFEnw&i>s>5}#7<8; z)e|&=Qne(U(O|OO=}xfx#CjEMs*?Ybec}*5LuH3&63Njz@jZVlK(HQQut^CcuNB`) zWu+Zc7-3i#ko%`p&4_?0rIqV^8SvNrbmBfqN+k&+jwxSMT5n63 zK_JN0&4u_zE`$8m-@FXm6igE5hcQdq*`xll#>3FMDqjG zwFe&dIPMawZKbNoEA;wjA`>8cJLm-BW*KZl{U_k;7Y0v~O(eJSl$=@&AtjHtDZfN^ z7)MDX4b z%+huoPAYpE$BKGvTU-BPltieV4?xdnHOYKC5MpCuKcjEX=zbWhQWPkBM^8^}Px051 zfThb2Y6BT>$}Ym&(NB5KPIZ?X*H-z8@lT{ETJ)gl4EtC-`-2f+iFb0+~7pxwGjACTHDx z--Bc7ubyAX+q6x}PBe4z1xaSjpts*oJZ$oYEkhYtMu~4SnI@E?I;#779|*_hEsDJ~ zwUTM6GLA`IG|NU==1UIE4HkJ-!g>z=r@XjmueE0(eYYvaZ3dG^4daN4&2ms zh@Q(~f*#~q|L}IzX6`t^;1FU@eUggT7G%!@n9Hk~UP!PI7Fk9D&O`C)smem#p3{zu z=xIjo0KQH;ZG!rx)RT|``ClDfRX(SGzH*At%uD>w_+KdSGP!QVTVfAbeQcb1TRkh< z$rp}{hrPu~l|d>PDU7^icm+hiM@;c0CO7KN@V{`Nx2ErS)*4c3LJN!-4a~$ONTWoE z4QmER8f8=wDx@&uJ*qpkg3?!oABK&Pii*saofsTD?-*&-VPLz6p|8R7{-hTd-d`ZY zXog7Ecd{K;MK(*IWLhbGp-ZqJ7l1B^d28nogY^hpj$!f;AgsQ9C)Hz(j(B=V}4 z_0j$|UZ9FM;uujux@_Pqk9KJoCWEZNt3M-I;7C?)bEQ9({I&dpwiS_S4mI4`pa`PA zm9Ovy5DR0#pk?O7Aa#r>1u}s0c?z~ee-m1;zAh?%sKZY#q>Ns<)Jj{|$Zc!{(N%n4 z>WVyecU_V*LdfXvLIQ43t1fg61#MOmq{miMQKLX^hETlaQBI?z#7`f#0p3|xonZ1tWbp)ZZlMktaM0C5f`hS1y#0`ut3GIR>Z%1}p=q^M2x`#v_my<%7jVG6T-)k#M@*e!17W^gVGV2(LLEZDndzpS7Vlp-yP zZq=TtR9=K*5X}b&-k6EGgy47Qh8Wh+BnblR=#Xev4cBeEK8!v%j9DG}iIIcka|=z; z2<`HP#TRuD+TVnnC+TD+jokBIMg?qvP|d0pyjx5P=D@amt&ZPRC$&wLFz9>F1vgbK zx3*sD8FX~<(39&6EuOieX5n&DvhV499j|Q?dgsz=kDZ-6^2@g#De@z0+smr~mRL-j z%6Nj`%^-YJCPx}l{iz@INVVOrS!oI9>(tsc{N^JA9k+h;qt(E)>~ZNE-jU31I5ADk z5=(V`@>DXVR(MmR1l*B<5 znA3+2-F#}(ldVrU-ix#j7rDl?ejNsZfM2$a&RQI+y4H1z3sW@=LzN41DUzrjx-?OH z*k!1$<%HGHq+YMane1@o<8_^nvKMK*OPA`4@;>nRIW=l0HrOX@Ob6;!22LZfO8klY zMCs&izGAF!^^pm<_pIZv-Coen72O!px27$9vE13y2O9vKkLi6I8bDJe(m=feV=qXc zSw70*D6%Q-c`!qgv{EQ%9xz_-2wp+u1Q?>#CRTge2c`Rxl#AGcu~{R!I*%e2!@tv+ zPGT_igzUMgtmXgI4}p106)GpmWJ^|vTvxl|7_f0i*hU&IYbYwU5sN;u<3m=a`LW|(~BS$>hL&C515h4 z;+fy;F!hqOQ&3PS16M2(x4$|EGXm}?WV9j*&UsO)=)jU=sfN7eR^L}25aXUZa6uS=F` zD<@BbzOxc#Dt89SGYjcMLHV8Uq6P_#JUaCsDHq>be(FN!$NZCLz%NM1Ix;y~Ur}E4 ztX;(+ztgnl<%N1_6TgwOmk#xCOTP605@ot437z{kG4ks^IN^8m(QlGKl{9u-^;)l& z`3~XFaak})4js=P86$~lsQo*HsZGo%Izk(W{WbS7(B2aMtnVeIW%NRF5Uq=-5PNBU zZN*x_r>|F~8tYj_C6p?J+D|1?3(k4PlRH1?0h!99wDsf9PNg&PSDiSa?yg4aVemej zmCcyi>4~wVleo)(sdmHv(k*YVxI7v2Y}EB>MB32I=Wl;s?4dq=`cDfM{FFN{*LwS> z^V8EqiWi>c9{~pO`f1LixIK=Wv_t;ED{#-I0|?Ow0@UazA|&#Z8^&EMxxdZ~Sf zXs&&4qW$)rQM%&6_hRvX{zqwP*3DF1L}tH6AXRpZLLKCWt_lBpX_twyUM%m2LkVCK zL?s7B&0!wlx@)(MRxcDb;BkhH$z_=Jg~p&!zp-c3q|l$6TI(e^kV{aLmLMvZAmkp$ z339nL-*?ezM^=<^@bd`pP64%F{WO<=c@L@srIkg*F7qKRQFQghK)8Hp zr8%V8KO;{z44utdAuC=#&O+Ngiv|_6rPBQA$gzFyR%MiDKF>r}m`y{zp5O46B-*Zd z^1}D_xUNw%*1y(vUlGm@PS8=FEhhU@5Sq55R*8`L9clsRZvaNO$D0&xNA4^T%~09< zP#GE~3b6idRR2$sjx~D>;jg<|4Hxc{TR?lr3A0k#{_@E_Cg2Os_RN0A36Kd#FVY0Z`L-Mfi4yLfr3C z8YR3D{1EfN7xiP3{cVN$>CVG_tws}L!yThw)I|;S6S0O{yE6e&K0U@FSoI2LW`%pE zYP5n}?+%@N>lORn>mP09J(rMU#?M@qsFo)e2Jc8fnyPV!%;4RSDn-`2>t&p_)lN*u^VkjjYK6m z%J;P-zsMR#S|E$(qKc^(1>Yq~?F>-4gx2L0d&KM#V81-|M&Zw33!Lv_M9xBUnmNJ) zuj^`@;Q7&%5oH6+n@2Tm?BSQ^OEU2=j}-+hXv)CaTt6TQ4o2h{s|a>IJ1`P44cWV* zQ4uX^G#nR^I5!q)!)1(>al^yD2tO_z^QrtIb~C?S#AB?C`*6>^kF3?PD$mE9dKV;% zp@z;nVd1%GG0i;|Zx4TYLz-i{zmt}HI|Fm9Xx41G9cTJBWFw$g3T7o>8!pI6uzn|H3BtY+ zDEy5-LJG4@$xX5z8@CbagY~C=S%d?YinCroK;bUp7L|fp{TbNONU)V>p^?l1 zs_B>7w6Lj9zKBmga-1wDE(15*fD+}`f?#=h6no-E82bHq)iDI$MvxfTiNcq9>l=Ef za&8io*hkd5cOCs^PY!v5#PZ+~x2~^!_LTYHt%2dI!mmXq)$-3-E|*cdkJ##`(c;>E zdG6BEF>zF3a{*Ed8M>gq5ZVf$gojGg=QhBNC4gIIBY0$^U-_Qq zb(WR)lQ{1eIrY9-&8)xva}%sRM(6>oy2sz|CS05B^0G z=tG_~lY}B%#FvF+ZFMk<)>gvgFLq=gO8xIdaHb9n`fWKD*7}OiCg4;$sXfFjaC9gb zscQA)Q?st2>gYUzaZAU)*cgf#v}rCdHMwAo6I4vVycx%7Lz`k?`VZX6B|cA7Ulo1Y zXuYT?#ZaR8WaG6uw=MLCK#o_RvKGhBK2{(cuqpjG^9KR_v=e5!D1Ed2@2v{wbsmg7 z6zXW*lp#SKyi|u&{<}PtnxQEv5<-gvbz_}$SU8Vv_@mbc+z*X4EowZKIcivqRg{If zGucjE-o?*Bq`d9Z-(FmtKHk@wuUM7qcv5>!RYY`zLLjKz(F0p5S1)%KxGJa_`3I-@ zfL@ehn4q6d-DTBdq9c2?_T682a^r7{-c(7+XZ}uC>!Koo=iOQ)|6%&C4fw0D3P1B03+tjQ?2-pe8d(z!Mq4TfjGo z{q4^`G`+d%qQ2)2c9&$1q$m7}nIvu!G*aUi0iTN#>^Rn+yWh?`vuMwSA4r0JO0+Y^rZ7d+q`yd$_eQC;V1fah@*&6($ zMsWYnjZC1JHQ=gZ(I37oE7Oa_>+*4bPGCImAC&%GKvUv%{ zgf{{k*l*u70FCbS?NC5iod#H6dS)gEZ^FqZ>zEbU`|Lh;4>85p=eW~oamt8e0YGSv zcnDR!VX%p_QgQsp&}hF8cKCg?y&H)wQz1h}IHqM`h5xz{v8uzg%>?3K&fwE@5=zpl zgHR(IYC)p=@36JCWhY!JAQlrr%0Fqb&g@ELaGQ_J+k))*yhuQX@< z*MFY__kW8xys`fVRjS1cWTKThd6ZPJv32omQ|35;6g>rC-45_AwhipCM?NCPLeabjkaX)N8fSQAPlABZU03sPIzy#KOvS^Dr%rW~K24 zfo>lQ_nk{fbuYWkUUUijIP~yZVl!u>)u+pq&bpY&mFEL^do!UxF>{1+;UZKlGUYLc zi49c}Sr*xPf zdm**kE8d@I-BiZS0jB>b!I==Ze4ej@=)XFgVs%2Ic616IdVbc?YWYq>n!(xoescUh zX_Gi;{O)KFPjAjwb7FeZ{{LRXk%!@SH8r(rK=bA;DVZC>Tx4VD5H&w!W5Q(AW^YI6 zFxBp=Nj&$HL)F+H3z@U^k`Q0z*Ok4K{~>@QnitLZ4*?v}+?$jO#?ugJe-@2?^h(}# zX*|l01VLfpCw;Q$La%@AC-36?a`Z9c>Bvf5mviD?`JL6~7tR;2FEYF@^;=5C(Q;^m zybdT?jIwn;L0-xBXxgjp3Zr`A+qP#!d6H+F)Q3IUViGg==+_~uf+t)qHhl53O$x%+ z>x8vR`7a!+~{pau(Zf!M1#CopYPT zRO_x$|4_X?0|(Modsq;H!y2n z5);xyZdG;lUuJOdYW~Y|I}Rz28=Y$fcf~i%St79!B`?1v#@;r92Evq?G#CYD4Lg)R zO?}nna{cFLhx=;fuJl|0wBd$KP<9TVm>^M77c5$InW(e;fjAVOC2_J&uSXaD!mL6Q zS$e{)|E~P_uPO=;bEwe1-H3TU!jEcqau#G*Kcm-UWeRMW+@*G)`>1o;Uk>Oi0|-zD zg6`!L-VYsMqR%w0`6@iY}YrM z6xt=XH?`@fvi5v?=eCzqZw~yiXFJb&PTF8}cl6gjnSJ75!BdU;`HI9qrK za?*=;t<%<19^zf8gf+1QHmgPu_Ou?n!D)nCU8bA!-n>Ddywi(a^#)1t>=lMY-N@JQ zZSG^+%I)Fdp)Ohg zhEj7Z$*Rl)zKQoDv(*^fKj%Qx`v#Kny=w#5rfj6N<+Dxgx0JzqK+h|7VhC*^|`n`>VXSR<5s zX_{LtTwZWRNUgc>9@q(TW1vq78!lSzbA?kShfm^*S$%bbNRn9L0T?=%zf}La?_G7# z>ZG&oNBcqKRu|?OsVR2$i7-7Xot(0i&Fj!v-Boe}s&R=2&c0Z6y^g3m5n)35ts^K; zE&?MA?G26M8Osqfi@W;@vYc#05ydJ)*iAP2W{w$?zn=PNxxpS!-JcgMZ@JPu0$vC= zWEV~9(<1lxEODK4MclN{P2#PJbKk8}KH0b!nmnT3@NL0M;%>hR^~2A-yzVS8e>+pSbya44qQdUcYM`;m2; zacOI{i(m1h9CHj;A6>}yL4GcpP8t1WV;^S9@2!X%e$_4US$mFch_2DCy0B00+l}+O zp&@x_pg$lHtZbRjoBMv6$ethASH7P1=tq@t1coi%XMDTs_ykUepwYI$+d&5>cxJ*i zl^>#u#MrhDwzm0Q71Db1rqGsLQepv_>2$^0HJ?1&mmESwXjxaI`WdeN%abF25wKf^ zi75l;p4jhx(z!;?;O6L=^pI~KOf27hrAF{v9=6B`Q}1N9!=7nKUa}FL0^g*sMU(k_ zK=lrBxp(o9!T3J!A^(|tUBg={*brrQ;2uXN;!(-Qozn}rDoivWfkYekuaHg*ka?=e zyIyy#RDj$HF}_RNBc-kLQU|WpvBh>0p`hGz)eOP7!qakbxwS-tt6tjv+7TW9Y}C5` zwXrl$E41foV*xTO^<1lfnK2;}ukvPYIVxQ)fzNSb({@`ibH&jnj(ZZ0N0iT+laHp^ zAGuEfeBAN@N?bT98TU-FW{5kDxxfw1pIlt9*0m!-hKZiCImxUBec>z=?gDO`zwA~E zIFpyc!DgWyApeyVC@!O~9IYW64IDa0enU>xo7ZCSIxagK;&MH`LXE)8#9v)(evI7V z^`qCzyIXPUDr-r`wKJO7HM_56uEV%Xw~C2?Zz8IA`t8t0dNdxmC+?YrGv_F~fucdZoLRc(-j9(EJ|ou1XmO68~*M7GO@9$^s~ z-n5=+HjuP+zFVy>biL+FPd{kK7eRoK0V!>ZnP80Y_p9232kDgRl2_Wr(_(m@ZdU9Ii;1T)?hjvk5q**4H zX*dFH^SSb)HN^_a?y^J8-vVMzWg<<{R*DLssSMeqcUl&b0osZ7w+Y?#`bm0XNxEb` zo3$J=kK-V0xn+)b+f{CP$R5#>&$*LNA) zEa1i=+k1M#zbER@XwS-(?9s1T8J@2sVOP}IQ^L|x>*rNS$=cblT)<147yo(k9 zs$*I8EBzR*<`lY8SYm=o+_@e>^#La*8fGxtZU_23 zx+CMD{r=$-mmsYZVyGRkQ<7ggS$Sn08{2SR3z<~|@m{()(7o-ENyQ3fXUs zoG!YpDdX5NZjSwJZou8pnvqJ;e8CS9+;1BU1b^%p-PQx3$pD(k)?6S|PkGu7t zXFnk+5$0rTnSa3-$%Ra!RvpaJvbN1!dV5F)Z4&|66Z3_1V^?U^yvodPUUD+-{F>{7 z)Z;J@rz;BGBrzd8Z!%0+|2~)e+9W|6cscSWH{Y3j{p*c~R?R$ekn^C4IJ=5n*Z4eh zL>+I^*f!ku#9gI_8hRWAw=_H-MOSa%Hr1LWi#Tzcu?(I!EgG-I*j{9kzcuPcBe(De zfPRdCNO~X41dUokUMwlM^2Y-JN#|d9-5t8?KB9Qd*nd+j;IgskYgAM z+*?5x?1)^gROhVTS~*9)wfnD)e`yBN?5?sXH~e?d5U-XXcE>`;6vnq#^ce@+JayM! z)^0g?Q#X1GhM4i&@aL{|LSV@U#LV~bq&bR7gU0sU&Kg~JuHYZ8tIX&DyZSy#QQ?_v zQ7<4r)R0c}cAu7yhLP%H|8`JPl%oG^{>C?HeVtoefG_@N_*H_S9;fe~<3@zrW!1<- zepv9&KDhT?Nmilc_49vK9Q;*Y{6BTqUCsTF{-PBb7LWFk#Z6*KxGE4R&OlcbOu_5F z6cQ3r0&3)O`1MQZv$4f4B6^&>BO6nU^ zV~BFzAs3sCd#>z22~EW0e%^z_j~)EZNj+)d${@u%-sO8y5V4BasjQq4 zV04bz3k7G95$qkbZ3zP10V%oFa$$?D0h1;G3Oh!jdzKoX^V?gpnc&ZZ9OF>kWq=zN z4C7=kvvHdSFp`lDzWW4&99xs5LruwQ+N4+}AFiEKA#I0NdH_%pKMvavs$cG-mH)T` zDuuJ}{YZvA3o-L&n2jsw+B_S~A|;G)&g1L4_u~=WbezWFnX_-DDrNQrub7SFIW8uN zEcHl4-tQxhWZ^K$*x!uj_~>0-v|%na7bqVswIGE-_lqOD_Q^%21)G9)!1PY=#2rl0 ztU$wMS2a%cY~VWn{I^4>GcujMV%VcXnR`;YGC}K^@R#-#=>7(($1bYM>*sFYOVdQu zR~JNlTB}`nqPtdfeCQOWfes9AFVA9OepJu_Awll3M;d5Y%a70CU6`howY~mB?{Z& z!!>{6YjURd^RL94OEn}f2P$jrR_IjOqM(bN31X?4t*rsJ&Uj$|>iZc%t)_d#l z=X4{oh0+D)-_ZqdS)pCbIhU$M3|__HOr=JEMdpft2Z3$lHz+H}Z$ybqD81${z{cGl%oYig`PN z33(p+jDNIVmw(jTVrUS@q0bqb?s6u2@?rF+v>f(3>n=%<9|e0ZHQ8vs!Ew+D!yRaC zX$)4r$+3EZaR#wKO|GtNNIvdpmj4%%(%#d(>mv{y8d5o0CK%AG>aJJ{a}TL+dEOq7CQ9N1bp3D=^3y zj=M7?Qn!YyehC{_aTzJo?C66=QpQGi9-Jk`gqmdpQ;&y6VHTW_5PEQf8FhKx{2t<8 zTzW4of7p2!jJxy?<1GP)A0=CWPYv2Z`KFvs*VqC9d=%Ft5nCVngq)KO$eRZ%Jz*7^V@@0Zwv>{%Rmq!L9#s7k7K!W9I8E zE>Luzg);k;)a(t<2GsqJh0U`)=uIw8%$wNUg&F}9WWjNp2Oyl@ucHUN zyGr2*dOk)`IqI8x|3U&aMCCRpS>9L_>5d6E;dU`Ge|s_yC3k|E;d`P?Ui-p=(j!7i z$N1nqlJ@6vfi)xnC3Ffxfkm25HUVC89xu1g*~FiQ6Dt4NhWBSTa6=BN-w_Ep1F=Pf zPRpmJ9y%iZ6#7@U#Fa_fb@1P#DIp5&&VKO!_B{JF!oXL;SM>zpIK%zzI(p07UmbYs z;6CbJHtR_lhvtbfL*|G1BgLL9W@C#IqEmSVO=~Dsnmm0=KB>_|JXaq6 zITS~Q z_O&?*cj2pdd2%FXk{!(1{So`!`_o#uc3go7WTn>O9I->t)$Wxb6DwV=NT4ld>b=fQ zV;kc-n2yUPTVmUWz?R5f%whi!GxUEQTz zF-l7LiCU2o^2%0*TMz;DJt}L1kP7U_0i$o8>40W%sHCPHS6#b(x!RuSfqsvxSIY|f zbz5zbz=zLU-C$Xq*z2LSIc@}b^Owjd9z9|~FV)xusm?44R}$dFm+BlKvyf@Klvj?r zuT-7Gapckb_NW@z9rSB&jD7+zGeX^XUlESH#dJE1^caY$MTzMd3Zx0!UJpQo5YT#- zBX)*c|IRKz(6&;O+_@)DeX#(d8!A+5uAZ@GlNWhS@JH+GSAj%let~!v_cSw7mkZb& znf@B`zC|?15nb~On#S|>opUP<;-U`(Og@xK0=r+NM=@Y>wf2kKRyGT>Jsay{OZC`&eMzeF zC5gAtH&uPn?$8``2^4?{PfOKab=1?r%}u>%Q*mI?vB^-ocvc$~06gR1_2xG}l!W zwJ9hLxlmB-m!LcZ-x1~@P{aR8;+1aUb)2m6?&dC56l&)9yADox2V0BNZdNWhTPH_h z0U;p)p$n();PH2Hl7fQR|M?RFPA)crF1`EL;9vRku8IMUf`aK7`rjWmiS2N$w0GAP zuVOsnW(N+xIhkKS}o>1fByV+xHfzp zkN>7N@cWk(ygZ-(*!$%OQyR`W7!jRm6TOU?! zfb|})TAa90yvIoJR0AJDwQ76CC}75+V)@%t<>ow&=MRcIdYCb|U{aDoP+G~L7oS@6 zrMi>*p2*f3I8`jSHwsq8?N&@Chom)&^<7w==@x93S?#xNkszrKl({y36rrFHxr~-P z|N2XwRGS1(9{4eCs-RW&reNioh3U>ZDUn3mrgXyKuiVOwY1{4P?$-EZin@`<++m+N zTO10SU+=89`ls!u6+c~M*OiqSdys-+x%#Ue1qHt`ra#VqXML*rh@dLBa#-BdM!cl! zjm?EBf62MR4sB9P{HfGXiiq{Gmm2LaZVE&jmN>>Icui*(wn)y18&FU*X`?$U{9EXc zwNIy<;!M4!QnwaNE4)(U-FnaG7Wdjs{c03!?UE1@Y4aq-M-F<7hT=)_?rHGBxlHhF zN>k63*}t@|&JTR3#`>=f2Tdgfu{Xr$4Ed1NVkBMdOx>GByPIBy>Yv!BbaoaV(Ti1j z#w%88v10seE}uDx{6fasO#>Yj-m7?W^X2rLf)$0=>MPeLV$*fhB~lGHX~N}pJT_*` zc4Ih>vWj0EfXk=0))B>*J9RpI$jy=AL@wuk1|HQ6{HA$-sq@q~BPX?1xm_O?SsxF( z?mQDipT)Y47O91}Z?`N%dBaJhM1S?&oz*I`ebwgtht6VbUuTKaQ2EeY$&hTb?B=Yi zZ0oYKuR@OZ>VSLt*+id98rS6fw${p9^Yu(zyYOGmM5at=ktSku#eI$vvzaQxPQ(4UR<)VD4~_vd(rZ5+dVbKYsIu#w&)*ct zhGioT+~hC9?DUyA*D+>Gn=zUBIG2sTHp((SD=U|*omnaCKJC>q{mZlOSt2(Dg;Mqb zihC#QKg<>L1@Hd#w2xkyRqK*%drCX07`A@7&(}9sQybIN;|*Ot9%On|XxGInSF-i1 zk!01;hbq@ur2z`OotXvQaU8q=n zji33J+pwaZAWf|99(3(C(XA9q$POnPb9B2mMG2kZ%PSpGCA0>fa=fL@;97CWRU$3M z^x=j_)hAcU#af1&u%AtaH`pZc=ZNsZ8!OUeSB$#Jn226ho$s(&$mHzYV#Dk8VQhRp z*jO>_uVPD%h;9CU-_?PL;<;XXLhjPGZl7D^fV*zVOLfW22C~~yn{q4uRIFo}ZH3=_ z=W<-vIJuZpPMLz@NyHOYSk39&lEE8rel`49tC9(`-MvETrn)d)~b@*OC4mf z`HI!St($B4pTgK;^-Mj-3%m4;QUgvHp4&B)^IP8D*<476`{MH5oGY;n;V=GNH5qP} zpkEJ1C&oX5t!l-8B=~GQoIA6PepBzch_jM{_P@ry5cAI|Dt)mC;n$mApW;)^LeFgM zMoQqXpEXC*VgCr|Gg7mNoZFt#@V~MD5cOw)rv`s=Z2chVj;ku0Q?iM*6D&s`ecm`Flo1&5XfNQr`pOeBC zwtGCP`Y}ECuWkR`%^{zvrb~?}+~Lxf_{%1fiI=8Pt%d7247y>I;_>a*MeXzziaz8p z4_-1o3*yJ`jye`qNVnm`aNM84$(Wf@~o=#GM{;olxd&A6Eh@AiYpIo zr~mqs;$E8buPmA<;~t=Y;0n<*`)rGkJYEpQ~LSeEkee- zO`&>qZKSRU)w8~ggu?A`26nD-QJB+6ZE$M+Din<-{C0yM=gxrpPy~LyUqY?~4w~ND zkww@WnT0G#X%#@7+TJSrIX?g~c)L@z|9*Jv_u(1`bhI(W? zT*+r>8c8;eocS>J;^qWt1^N?j_7S^{n;T`u56f6}O!BT`hX_OdyS~>yxXt}4>x1({ zt?R61P_i+dO(Kz?ro8x*fv2<4Z^mox)O6H{aMoRFXPS|yG(uD`_7nMi_*!fpVfsax zX-IYDLe=ih$rTB^&Wsl;bA2Sz=(b684XxA#LP3vptnS9Dh_8~miL5(IK3BSAVhPQ< z#6AkmoSg*{FLVO&MBf#I%7xw{`-G!OJR_0g0cP|1ON~=me!(1@Arjp3TQ~fyEfOBB z6?p~Gvi*uX5@42l`L$)Zj9BZL!bX7)7|9YfR-L3vrzfsw21n^wjeUNe>ASfyl@{yR zK-N)ps%LX=!s*ruk{Wj!q}i1N6q_>XakueP?WxtinBwwc5>cT0au!WBG_<&Bv@9lJ znX-hdu645hyW6W<3Bkl1DqYHh&NOc&d7iS%l(kEk*u9nAEuNW)8X-Qom2O!dHg0+< zLhF6=Ex{F`g7w=h*#p81xY^@_m$k6k(ck^e%|aK69i9Jk-_*H>D89-wN>&9NqU;C&FzVBzJDp;|kouE>o zldkTmy)e0z^Vy}5KXPGo&0>-`SsF^)KJ76PZS%`l^^Pob2)!~>yxk`{lYrqz)wouf z$OX$gIm{DT#df#^dvD*()rG{MxF@*6kB3e*;kj0)vl>M+8il&LMKgl+O+C*H5r`8p znabhpjCl+UwaVXF?qgXs@D1IO8*6=et(Lq8n1x;$TGfQtiE+pIz&Rk>hin_xlBVT$ z7Qcs`{MQusYdX<+grqiBEJs zCSKuXASch3lUs{r7j~>#~xbyFY{E#_AW3tW7QWZ!Oku zmEPq*9p9%4PR6$laeG|CjEnE6@eWCD_sc?Jgr4E~=F3Aq;}gXhwiKEi-ERcyG4S6s zDu3^eRvY08c@NE7RkEG+LvFqtI-LJxwAgch&Ybnx8W;5cl4Pv}7*Tg&PGBa=GVDB! z4)^VFVg!#`%&VO(k{oIM@806vE&qX0;c^FEL)Xr6TzVcUC+~l@#sLXHSeUH`TQT-| zU*ZE7XJ%X%=#%6i(U$9W8@@zkx1T5g*b^X>M-&K=@$kURavV_BxF$=72-_29mGTNezzM)1g z#rIYLb-9}WVmGP#Jf<_#t;-TAneqU?7VhqBl4u*EyhokI>0c^?ei(MN!EGD)OPX5iBy#3_Sc~?6!A9vJ(XL#h5*N0$i1X5B9^qZO zzT4RDRUyVek?fguaZ((vy=*4WXc#Btgh{eUtL!z=Ytqn-isa4GN!~Znrp(doAL~5G zeIevtQPz5k-6bHbak;GY1nbu`j-?wCONwc@YD+~U+-c#$DcG|0fWe72$g<-^{DKeU1 z{!&c$SE^rzzn@YvM^E^u!6gz2tKb&~)br)1 zlYawXN?xj$+Yxe?U!Ci_>`r;@F!q3OpF@Ef`vi|-ow{lZ8v{|fOZ}1fqW!$oLbAuFOCJsoMeBcMPMt)z}7EgR9yU)*$%WerXUcRH>5fmxkIcXF3d;>aAj3M+}&b*IJ zIR!0}wxOcmK8GKb{`n7U)`?!$g$Q`i7vfzS&aV$af3#0%O_LSr9C9-WKhIuIXC6RR z0Q^nl=pP1mjC}mq?*8+~`q2CEhQNLHvu>@bk1}_mQgPu42fRCU2CIRL87a5)G>uRpk zotf>U8$jW108RVQzFlJ5k#@UHiHY9;`0`D!5cmE^>H$`$10M43To<<{pbSJ=mkOFW_Vzj zOK=<`WH}PMUY^y+dp8hJm9BPqpwLuqukvkp_Ps((Qthe|Ed|AREujq9{~)5RuUam* zr)wnI9X0C6)Jb0g);d1i(_3i!@@#(CFm6Paha5(lzSOCMIiTb%3lst0?_4kXxhuqs zs4vobO(EDk0Ie1t@ZeZhQ0XBvpG74vKzJR1C7!ifV$|zcPX_$icEo}<6ezZ|3GiK8 zpx;eZ$>BuRkrTM$ocspfR7SC7X9O24Dbu57xCeEF?t8zd4#0G;Iw+Vt%)0RIpMAvk zv%DuK06rT_Fk!>&-Y~NZ@#-Y_uJp85jc$DX>fZEn^vJbVMv_A1?tsN@YLVa1uimJfO@KD)oVrt z&$=x^p()=I#{s+JdYx`nu;MJgqDFj=|Dgj4iw%n+)6R(#2DhJ=6P_rFGt~D16%@Jq z;~y`3ck>~ux*@Me)<*?x%AX+1qOT{fpz)%w{}bQB^rbmc>}n89E85o#cw5M3|F;;;X7^yrgI-tHh;k&;e{4 zUY$oWrGa6#Uat1$%G{pz1%>7N?YWDEEa)$Y><4JCq7X!@X8GwU{RoA~gAA`NC|K>V z=Fpq7} z?{$y)NT{w4=SbuLrB5nIoI)grS&v^9_m;&4go*Wn((@BdLcc%AapI)(g*&h@UKSsG zbH=u>7&}F}+tWJo>97B#)cj@=>9%krZKk^P&9M2Lc`VgAUdEjqSE1yfQ?#?tXG2HU-npZ5MZ(UbCZr z;f=wJ_tsmrfkz^MWpLBdU~4x5GkEy4f3_Lwc;UA1l#cM~?F>$pW&^K^i@ zdm6FK&wut$9ra&Rn1=dmH*eiFnmkPTdt094eaWNNz{m$`i%P3Bx#g%!grA6jiWTYY zXswW3w{rr-ToyKcwZY3~zRS8X;?5RRm0nAe&&`aYqe9LWcUSsumOEN)<}R%M?b>J1 zu{sTHNuow#YpFwn>?{CSUf4mdm#+I#i~YxaM=m^*be(?nQ{aI64TMIaZ7xh>!yUUwt7HS#ko?Beq!^S0^nuN?tp7yfu~ zB#lwuSg6(9Wilyff_AodzN)P6LXMFxB|WxsG)#(Dx{^6L&uOUA7Er=X4cYbEMa90L zJ!8Ds?b^ep6T+uG0Bz$=--YKq{^K^Z!e+L)w)4B+EyE*>N+dT!pOKP71R5Ggx0LDV zx<{bR$J!bJoQebqEu8g4t!Eeo_X-(AiC1|#E51cgCP=t~wri&%1VYxG?7WOcJ%?C* zm)cS{H%2*jqxQc*v~_`yLn)vR7|GMp*+DJ&|t>0DfUNT*LlUC2g?KyI*9O3RZ z=u$E!(AcL|`kY#;I>Y;n@SHRi`Y6?pWtosok&2^B)MeF7x_Mz%D3+TTTag>s4L}K+F^b zBM)=6y{6~BmZHqzD*{B*J5y+H%}hY^kz@nUhf%Ma)#Jx~qA#j>h~&CR?JN`gQ!TnJ z9>fK%{bSd3^eQ@pQC&*u^GmwI&LOlTQx)*sh$ADfbkx5v)CcM18m21HO8k`zPiijJ9OWv(o!Rb`)_gU zPt*!kfTlTBwY%*^YsZDpX!`N-A&wFUOgb$>-&8_yrk{u_8xB0>aw?s0Ad@hf)x4Q@ zx7p%*L8XMah_*&;srRJvT>D$QSQ zb_Pz@1saMpGeSa|yxd+1$DW+AnOD?O|)f`w=qi#H*tFpMtz$hRTu5P{)NqOC(56R6ttDr?n zcDRXkdcTvLi}Ulg(q$|Qpd7HcRYaMSb~I3)dh`UgbmR$NJ8+GJz7ysK?_;eV#;sW* zJLcvt+bHd|gKC__kV_xdxI-2X+vhjKN6KD$c)IxHnOlqX?0;H5T|L``9Ljrv`cd4Y z;NoRmWW9C!xf0ZPAofO~B_?fu%>`HqvFc)1%;K>p6a%Wk1JaY+y}5+@#ERNU27ceh zlogryc-}a+p;u_TD4Q_K`-r2AcXYrZ3IZw`bNpNnImq zdk#TXoJ!{i*EJW8>&AciY9$H#5^w2pUES(P+GP~#Pd3=K3 z&Z{ib0uaF`l4|FHN844TN%rMru`T<`ptkBl%E*~q2$k)jl(PFUyHe#SKjkgC$_Thu4xNk#mPF?%^?U`EtfH{>d?7 zgW{I~z>~Nh!*W^eMz9tq@PZBR3=)P$JzD+jqR_35TuG}gf?+ARMZu4&}| z0JRU7_&0SkCU#rjCN|-?q^_=f?N>|sL#iD4 zitp$<%oM8})K*T(EfLO%pQqlh7p*4N^OydH>QGqJ?wP=C-om$KS>C8Kfx3QXNO{-w zDr+|YER%Uxp&`udhp&kydP=19$|2N?uv;J+HIg~&CJl6({TaFpkgzgO3MU4}gc!Kp zDatw?crE+7;YKZk#@HqR75_jIqQY@wNDG~UR@D6R%wD>H=4_zi6WS@}UsK3y1xW{& za6vYUW+ZZ#{#ZY(VNtIeKCS+px>f+)wx7`ZZ4ksFO7x=)lhQT`En?}3V=@~;Z>vx9 zDkE@O9{PkQj4&%2FX`HFRT0~j!X_%gp(V7qTD2?F+LI5JK)-Y$Lo8T*ojHLo@K_(< zg?8jO8IQjoU_Oz{vsnR86UVU-CN&?GZDA2b$e<4X+aid~En|tbwqMG*AGVZZLaP-r z;YcHZ#jXSWZk)>wo@Pf-NUMpi?@8rM)R4>*nh{oIIoBSl7)tSEmEmU!v|naw>1^op z%AtmP)@BB=du8Z#SC;LaBrzm56v7WkoGV!_Kzqm6pYMSH|108`$2$FQY$nyP>>AE$ACN*PToVu}h5l&O7lrc=_>=`_2q!e zP-MU$o2(g&z@?%b9IRTLZZJ{xwV_=mel+xQ+Ww=`7lZZ*)i;268sBOIyOCR5>5g-U z+U4=-P|D-UF=r<*Q+*{)5pzhl`nB@*3D3TVl>Qb1%i>G`AW76S_3zA`9eGdP$b+g4 zMcX)hay4w3>u0cCJmpP`!RUH+?+f7=UAlUyJ73@60pU-)In!GPsAQs8WXby-&s@%w zw<~a6Vt)GUFUn6~0U=p4=wmICVJVy7Q2-@nef?-2uMj6jDY^E7tjI_+N(50HTx?vP zln%YZ&ErIHuyC6ekbJWW@DRUP$HcTO7F&=J_gL1D^ww_havgbH3P1T(1e7BL?{CQY zLqA>KI>}Zu-&JC;!yu<__bN)M+UO^A@9{BybsyK-QqO}OkrF5Hv)|u~EbSeoHzS@p z$pxE_7}W22y@|12PwKL$PM4=+IO8q!&D2Llab53e^sV^L5{HB8)E#=@c5?o69y5dC}{a|)PmozV#-38TjnfBtXnqIrs_ye)J#k@ z#Y#iIR*6;gnqsdED!FVn7Rkln78-{#oZUeY5KB_CDyFZtG-w!rU+&%b>R;z__n|Aq zq&G}VoGZp&nju#v)nUdkDH@5gp4u5uc6n${iRH9Q*r#!n2ufB6HYXpmQt*KpqGs*bkyiy-rm;f}PDFFdhho7s6~yafGk zNUB9%d=2MsMhVd&>z>m#@vh&#kbji_YT%P741Qw;rtuWw0IhYUZl|z?TEz7`;Jz10 z@2V-)yhTvZ)1wGlg~S}dQQOI{NuCyYAWVv~!D07|e;X#r8>E2N1EM+Ruh|Uw164Os zZpDew02)L`QMakl+}!eH8#l_Z*g^?X0T6_%j3`?CbSfQMWlqc7Z-pUhoX^D+Vk`K0 zA}J02npA6W2N6e-Uh07mL{uJp+$HFh>4O#Ck=|+$p3ngsRvQHz`X``mzvS~N9`u@# zmgoV37X8}Dk!U>&*8+_vuE?N12c+wyg zLtr=D1A1Tu@%^j5#7OqM#Z;!A;X5mInAk9s=oi$5Pw-VdYT6?X` z_T*?R1BY*7`CY)Syp)>Gc#FgclW|F4r>2sVZyvJbs%^;$m8_WuvAxa%L3z(8*kghq zsHs$VE#H7XXkVOerzay|&Hq~+ieikDRMsguovKq0<~`zhD0Wc>G|9%pvHH=UwqW9` zBIBLylnRy&*CaFrYj7PT>?^%s&DumWNMy4!6`Vl#vz)iE7%rLZdNF5Ipv8=z#yBG! zr+?EuUbK#w{qT(J$&sx;Iv)y{l%=3-PT)AG=dOOSUy%R-nUp7ZP*+i6U*?&7m>7PKPEaS5R9>?ZSXq+mDkM(Yt+XPX5kW__Gq-AI!?OnwHxVco zTcw~~+a`EUd{HRJ0*@7TAVX77f#z~2U=td0ltnDVS#?#opi?jGwMH2xg&@Sr_LwmuoLRw0Q3cs4B~+~U9Gn6JPuXZ@ zHwU20s#0@>I*vL9+}ED&?N8aXQd%Kn0}RF$%93$}E~XmXsZ;CA;Jq350%k=4vl*Xe zKC1nV(;&l_!AG;l8`C&f$T!t9ED(>%uAMG&8j?k^wsmRHZ_@hxMq~8;n)oI0lg-c)YLrKEa`n zWe2*wCz*VCc{Wl&4xE;bON|$FzA!p?X6=aV?a_1EyBpnA?QgC=bUC|*Dn8PIS(zR3 zzwjVQg7B*d{_F1r!oba4Ul4y%;griR&-IlQDo8tkGfUKwb3{R)d57?@l_-5HFL+w^ zWx%*}!r5hRm@$M~8c1K>-a+d6Uc?9PFIDv0Ep9~Y);%md4Z5%j4&;xAIaK{O`-ZHe z4o^TW|J*7APF7}G@=KY0_Yu=WVZ_72M=rd(GU#9E4ZSRN<`bFzgv{2@8qe+VNHbZK zvx8ij9&c{W2K@flFHVKPvF@YH7fMH%gT)MHFC;upx{zq+@RXq3?wjeAt*S~{}J?>WP`FNS@`1r2Y^S$L3 zk*Wzg+8ROGcHV47f2ZvuJL3uD6y}L%grWQo@x>2lmdz0-t(25;2JZ(Um=wDQszJ^p zg{?gR*>z$QM4tDB!j)O(!^!)15jVCS{|LFfm-~Y|F8HJ|II3lhF zOebdi41SVU_T*>UtmotDRPj~%R}nI2h3#!jl-@BUnHs-EfxJN8_mpbfwS14KIj#Ry zJ!9gTzn$m(BTRhc@yRUe*TybiSX(e>KL=BVLo<=m@RIX=%)qtwnCd>|wQFIl(YtJn zXE?Lu8{FKO0t`3M~0RF8rJxhEIYL{c(XcsqXp z)dTmKzJ3W3St%gt2=arVN8{IQ?}d&s$VHVRj{T*^=Y_Yw;$^&7F03vv9}|?17Eh8nC1n%=1Vgu}=nrL50ae7jINR2ct>-R3;S;($lY1ja1C0n{mE8ql4Y^QRhSDj<5 zRwBGOf+jK}>bJUl$1S<~GzKF|r{Jw?L-~F(t`ZIq?yO5w_@#=d0`9u?!v=WZ;Jcz1ZvG6F0G8%_H zYeq{yVyHOT@vOUCte)|{ny(qbL-qp5#ll#dLcy$v5o14ql#pZD^_JB~rhkzc!@?q< zj;y8im`VawA0OYKhLFCd)eh95iMztp?$cri^ zQKjWXaiq+q%tr+O;LN(4+`u()E0{B3XDM9{Ogdc#p#$F$WjcFb&;$A{U%zP*&Tlw? zDes$5ZU5;Ae!jx0G%TgiBf}<7fE|%zo_ASZfvR188C0>+6u<8GHTL) z!mNtIl3C}mPIshhgbwLlAy;KU+}dXi|#X^#(ow0a&0_?ilW$etd^orT`T-7-!;^ z5dD1x9R28^jVG4pny?I{zoF~qwaHqj6fr;H+ZWjIAa0}dzuUwy)`aR}rgS3Y88w?u zVqSJ5oe@f%iRa{p-bz9icZ(VIWhRA9r8+fT6xxw4!B9JY|KRR~8^et3(roRyQ(sjT zmE`gF>M!a*9!h~Y9A`mE0AOgB)_2b6JY9qY{ps4DS^-p{@)tGTRPr;JgOk#Evp#tu z9WLT(PuNbht4ICC+Xq3>cTP~?k$;vElVN+R!O*o!w}Z{S|9MdOOjovk>WosoAI4De zjG`4+{}atozg6XNo|sMOga zV+x|EWhCSI+M(^?0fD4LKKM@HpHr5l*$6cq<}vx;*335Zey2&1n#QFXl0k_imSCa-S7*i@ zk9X6BNq1GPf>>is51el^H$#bv2yiPkB|G)4EItI>h(Y;X9Ba+kB#)bPBF9FX-hR z$a36YL|MwU#rt8QG|idz$VVN_bEWa`V3ECytgEv8fZ!v<8`ht2Va{VlJG(b|d7oQ+ zF3#`HeYcR2z{|(mMOD)pz&yd$;XIa$OyX z<0m+2k4yZ1@K@L{Htp+CW~t2Csup3#-jx1pZ?p6?O%x=RmYRy3`S%ZU>-^bKj(%T| zye9=v96$g2Clptn|LZRP|NT~G@xK#5_W%y@hMu~d*TC=|teI4Rl7nCDb@8 zq&;1F0gvf`$83Fz1VW+O5TvlF8$rl;hE5n&$tJksDIh#uF2eSS0pg=iee>a_unpf?Da?HY31uQ-&Kzn~L(=<5=Mvr?eb2n`W{;dh9vZjBMF zOeT1(9rvcGV{B`{!Mwcyg52!hZ1vxH8A!_(!=V9VRPGb?&rFfF(F=o14OraT&tY4j z5v@>LRT#Mb_JV@n4$^SK{^b14A((^twPV47>};>OqHdSZ$e)eKzOr}M^gK$FE}*(c z*c)Nm%AqxRZVCmdDTJ7Jqx{Yi*ga!6vMDptI0E?}yo7k2EE;{_Eh&dF8C&48O*K<$ z5Te-qz%!$lCPq5T`+NoR^{ii&CYi{KJ}7Mf>T3h%F_A;RkJi^&)dXn?ERaLb%GZcu zy*r&H7A7$f)xXHj$i&!OqVt^c9#?I&WthY-{Vt8|u3Y_85T*G+O$fI_!Gk}Hr1QR% z>1KXe4<@r-H8`LGlAAS)_|M&mq?n85@_F<3Ked;&tsFq-Qd7f%Id`%j8Knsdadb&7 zDDYS2zL1dZk~In|*~G|3KS<3kU26PThfbFj?Lr*M7t^Sya{Q_iruP-2x%}hdk}U3C zqv9;ffA0M;g(UFJ$9FTuu(tr8;9T3GoS2qf$O>D5MlSuAktJ|F8J9H_r68FPgL+Px z40bi_neAwKx&J+M zU=e$s9je#7Wu-()qIQ_<#-#B$4!pJ30^wON z0IlWY&lNqOd?b%)#3(Cuoe8iCSm`dL2{?Tw>n1X`$IVHo2p7WaN@`kXwm!jFLYJ9~ z|9GHSh-YXTQzO?{3@nm;`Fs;*b?Z294zE}ERm=Z^DC$F%zGUA6`#X*XGd2RwNQ!pk z4*dRPxFGoj_r8~~x)Miq^(IUGr&1$-ZNqj2iwH?e0evCnrO7UT1*&9+MGaYdp^RRo z;2y)Ex2rY23JR(otpwLkTRW{#VVE{4ggPE6fU2M@>*QBXH;@ojG;uT7{3{yY*@69- zK3o%&4$Y%*XCg)Ve2B|n&e58bRQgWT1kFwT9CLD#A3r!#*)r^I9; z0#|SmbyP5b1Lw`|<_Hx=EjuUwM(T_&j2}#aBy=4nCsmg@CoBaA&{ca?Q%#giGZp`0TvP|{BZ;Zz^iVskI8lX$40%}b>VaKR7T7|q&BIqvzTonpf+mlx ztO9iJBION%9})`{J!Rec5D+Pxm3FKcwq3YY`Xy;O80Y=t{^8es^Jok-JL#K=`@j;& z4icdpadm|tESDXPX(QeU z{oAH_n1-)YSLqt0Z=&de-YxS0mqyFd_lS?Ue?AJTnCo1x=)m0?8scaL-6M=ObPn~# z3k9k~EBe>9?;N0~;`2T|PAcOnM{d2#xH5#(I>6F-`7mU%NsxNs#2=bqh-05VlHgN*j66-&&;*XxKzW03x)!do~06c^aUq(b?II5v#QMiKAD0w8wic@`%!b>S_xbPRf32F@VYv%C7N)wLKNUWU6AH^ZpaKZ{~}G0G;;S z;?dyg3@F;CgLpd3YGQJXp7+KjdYJh^`|*^G7f;Bbe)5KQ<OO&TIngT16}(;j846OWV_1jvnI|xUbk{AYTDa+t}#B(P;xBGHU0zF@c#nUV$2m& zuT2hB`4>s%+DZqQS0IV~MtAUCo-8-2tLg{#fw!Sw2BNaI&XZ?ndUw04c8ad|{n5Nl zcE7TJWg+`_>CJdJ#TUSvk67i`l&GgCg?U=1&|-lmUNkWcUrI^-yE~aFDYparqJ%7C%53=u zhhVmN3ACzo0Ls!>NJr@=gd@ucMn=7CfBbWQ3h1jEhtJQeC}3ykyWEA+&R@>~d{+Do zpRYvhO?sm(iRM6v$I^HqXP`O_7HS!cM`=R{w;ko{fLFXW?!tXKX(Q55c9HMj>}4i0 zG>*7lgp^}^70*ShhF5zg5{MuY2(hB$w7nSauZm0nLyzHrY#%J>_Z_fRBL!e2b87(! z*og1$2_Ka2X~e#t7Bn*tU~ETxkpoiiJk3xIh`eJk9dHANwgpO>(I7aCyc4RoeIYk* zi$d`wyAX)s!$P5)0x3uRe@qHQ|7m5GzW!@c!0@ETo^y;!@Kn(oxmNJXr-WerYxS#Mu7jH~y;SRRh~CyemC z3KZv@usBb>xPnGy067byX0bPObX8j^4{or%yLPle@h1+%w={UHGBC&EK6P(Dt%^T* z{p2`7tF9CpdI!bHpYX#7fz63nr(fW!2c9rjHjgTwLYdQbNeKAnU+vDlq1M`p%((rP zkh~XZ9X{Ue01QO~wB$wA)q~4QzxRfSlvDZQwGF7@@#^Bkk65dl0KeNtTfM#x^v4O+ z)(x1n(aN1uq|1kB#yD>rvUzgh)JNn=0R%~v+ZsMfWRT;%O{IJ3AcXx}R^Qx`zxG?v2S^&j-ROiX@hib+B=3tb`etB3K*MLj5Tfn zFt<`+SpN=G%TxgAZ~OC6r$ujnn1ZVjbWd4K5;CTPC9qW3Cs}VYF4(HJeVUf-)|}Bx z;US%UP?7Nf8Cce3CU;c+Qzp-2?kr7r*$0v=3|zB>QN5IA?SpC+3EV1f3A#n3x9o(K z0k){C9kRf_p$Vo34H^F-aYQlKchK}m$rcjhYF;oV5E_sNfEu{*b9!7tEuFnql28Q%kY8oKk3*(S7XzF+O?e}_ZpXbbXb5FW#WzLerT`f2=0 z6sVtKt}wiMXeMQ1j9g{Tj$i{jf!eb0%f@Oy^S#PuB5JJWE&|AWfauzN`+45v!gw zoT1FhT4%+&ufVnwg5*QQW`TPXk4*rnvwP)glO{>BK@H;CyVB+&7Ir(S!TTnPDbZeJ$l2?SVKSy*8t zH+2S6LQ}Mi#;e>~9843VG&1h0(u)O9UKv4z-Hqsq!YtCOng{H)=8oT2d8CELpk-S= z-72Y6^uPnQoUs22F(v78lemzKNnoK_e_4M@K398KV+|TYOxby*bm&xKt_(4`=4_`3 zcsD)ayGgQ0!JEq~NE1QdxA|6Cj#43PE?s460|$2eD?iM9T6LdW-^r618gMPBJ*zNX zdhm`{Wz~%J_nz3az~c(n8M73Vg^8~ARjmR%^ka`Ee-Km;T%xa>1$4PSq$PU1OFYuV z&A{#kynDd{wZEG+C*QawR?+lSnYnJW?e+A66y}5rSw?AuuQm8!FQ!9^8w| zXbdm(8_!N+h(Ou73K%jHj(Y*1CJk9Qf#WDAaCrc)gG3o^G#*gY2m4tkn@aw3OwJL0 zH0=ss)_+9qTB_T9QVsP?7?>%!zzEQJo`N)r1~Sqm;edCbxCk;B(Kv)*?h*co-EG z2M+3mX1kGQhXnINh!i!wYeu1TIbd0g^9v&(f&w(WRGVh@xkc@W!vyhc!rgU1flY*r zP8E8$%)ej<^qL!JHl-KnOrwl@4b9~g;QW`+%YtBL)iyKfDe$OmP-j{c-bTm_>gpMs zp@ElqaM*LkWqv7($ea@jXA$MCasu`8VJ8e@u(HpAbdl*g^KBW=^Jd3Ge-COmYd;b| z?}zb%Y@Q3rAM+GV;-g{Wo1h?OLfipfTjB-P08-2~9!eSQAS1NXomKpv4=*SgH+rNf zbl}#3qfm=$sr$A-&p`tk(Gw7hL|Et6iB`3$UFN(C^6AWyj&+Rsst*qzRfiN;oVh^E zbTMb~$&xA%D#l+ce{}|^1h1?B_KGnY{SAGK z1gLwd3eW1|1hovbpQEe<8oICrfZe!@8Y%7#LmxZLIorCbsP(?9J7F}YIZ_3|1VexU zzw#0KglvpZN%q%IF;9wXi6$uLUCc!teD6H3MIP+)_F~i`)+-$X)UH0dedf#=TTn!a z&7uY+yrO_xg3j-Y757I%A$nhtso&3!htmQ2R_c)svBdmmkF&$1gR!eK@UGXVuJH$+ zGO`Fh^Xr{K*PkvH6&V*Z&(;1(zpu73*~=QnJBaP*Ek`Y!3e=6dVz(bpzo7d=-c>P5 zlhRq9dXe$Id_TO=C%*kgL`TEgaR7}1GOwo?U)Q;2Pa)+|NO@ehiFmxGi%~uO=z`kr%NL2cv9%&KKC>`oDhrab6EzL%lox0Iia_ zY~jSU=!ys__CbCgGj}D02gz1QV7&%eAqDYez@)A3cA!Q@WJjRPItu||zKLqj&{awi zrvE;c4Z!&?tI$Bah~q-W-B2;~H+*#6U|b0guk;{ExbD5T!n_yM!?*3ED)ib6IS9tO z5I{#J@%9fQMFWML+OuM!Jz?9Cf8MdGfIl@JMo7b+6Gx@<;__@kYZ@Y`qL0977HZ{V zAWs}uOl?GC&;e@5YEc?4p*mL&q95g_@yNO&3ms{G=%qRGJp|)`7m#IIx zE>xo0^Y#41WDhhS@_Tl#$)waq=*sa(S{3p5`NM~=6ex2$nkTM#-J64e<3vVpFfoYh zpOA+52c;8e4nK6|aA+NRlNto{3m9+((y*|5=}hSI9(je2hfBHekMF`eEW|PwSC9%x zQr|&Y&%JqMcvD8B0>199J(wd#F`(Whd^jVY2v53dsi@l+rzQzDwhJ>IqYU7#;}d1U ze@}s-)oQMAwNMBq-+iy0X$5i__b?WEP9;8mx;Tjo%E_{7II_t!KwGkroPAfrYmyEg z)85clJss|tQiLjow(hG9y8hMIWn}l1(uxK<$qCfZwXP|M&I^IGy3Xw|*hsP_&1E-!0 z4;-RpjiMF*aqq?|6Q_zpiNiAnBrq8NKkdDDRF!A9FN#UjD4>aeU_mrSQJRG=3aBwE z2r9*bfQq7Y1S!%@EQktdlwMW3Ql&_b6d_WjOAXRQKst!D^P6j7l0C*9_kR1_v(MT0 zjxT@Z^E0s4`##Sz=lr$Dg=2RP5f60guMn_}s=S%AO&GnZM{=tvBywzBQhOfoyfgAp zKNdM+Nt01?ZN$+h71;FmNWZ)M#F<}qPMs=#AeyN+i;=+JZP!?xy|GR}-3)NOli`+v zDt_lazI}c%M(_5$J}mJ=0W#L51LstnB3c2$wLh;iR_neD*{R_1j_nTL#esI|IHhES05vWV_cI|zQp+AM-e5BSO_`K~ z-4C2m&s^8t9Ev)`*1bF>N-dn-gIDz>Af{6vTZpi`{N^W~WgY^e9P3nyPpN9X;Xc(g zQwIdl>s;WBuM%J9?rpxX74fJJ;!&2ht@GqvFZwF85u{zkX~-7++m9cA_!B8jA^Qn+ zzkh%+4+<-?*-3~VwNx>Z`^NpzpQJ=FV1KzlEa0R>;RGxO{<&UT0T_iK!LK9A|Ni>@ zorCLxfav&3?6*0u^wY@;`$BD-(!~2K)am;MTSa}IcjYDQP#PBDk~cYl8ua<5t&mq_ zH`iGf=e@}gYOXSMsdcaR+`TTnap4^^L1>)nE#Sbc(MvzNiu>!r-kOt&tRUDf3De*v!avi4kl0qx1n92Z_y5+x%rd zs#@PS`eUQ&Q<}_f<<_s7(Oh;DqeVm@1Uy2<{#K_TNdHQ<78w+jl&MRoVCQq>7 zMcRlfGqZqyP8>T{9M2f5X{x|*D&B-)qI$78RVV>LOH@GZC&@|QoSxdrI{iB2zGeR> z1aUrk``P^Ub&_sKOwOu#RMnU|XcX68&K&-~dw#Q%c4LoH!c1kX(1$h)vImJBhj%8l z%3%3>(G`=~VJ7qBJ)jr&BG`#SH@bJQtGjY&{B-!}H$v2Ue}Hj%<<2XYG|-`au$;t< zWRnGgroS@e;De|PZ+b{aRz08HDJDGhs->cEzU1NT;$54R^yT&|D2?$uW+nW4!JODjMze0A`R}`p?Fyq_D3ZT2P13C zWrl=1OE&8_#Y_aff3RQ7l9fe(-Q3qeDrq@KJH;7w-xV!ApeT}ho;dYN)Z$YepUKjX z-Fs5xmz7eN&ZKs|f&(AUYPHs$#krBfD3;>B){F`5!*)~Ur}_{4W*1cjEhyi9&7W+o zRH7m;mIZcWOi_lQyD%l;0)84Xh#oVH5<@JQFX(JSvx=hA;i?HE0@^t4k|^0 zJu?} zF1G^^U=hxB?8Lf091W4DvmHkrnLY;jB8j2}(l=U54OY%%;MCxfMF*Xph(gu1it(G| z&*?R7vSSKpf?qMK9&mdFCS=5NB;?xaebJ5d9Iz7DQ?1^KfF!?A<%I|A262n8{ah3%yq}_>(6UTl}YRU86ZRj85=BMN@;fj0$*fvD~W7xl*&-uteqheWm2DF8Wf1!AIe7x zMHP}{N0t!fD(jEDe}mRV*`WL!^9g8pqKA`izqi+Xe(A`ule!)j z$2usKE3{}m=k2qNIpCYT@O!*$^>#77_wPch+toJQ+{;Str=-)ARnb04#N*8_vTHJg zBa}alSMYqzDMoE#NjxtsQs_gn1N8I5ZLq&&X~eonn?dn{P(onT$eKK>{0Wb#CpwyW zq!!gkBy9~3u+p%F7rK%hXC&=2$n3ksRv#O;fscSO*%BLCnS4(M|&pB5+O|cFl(I>Gd^etDve;L?R2<7aN?xP!P>Df`P z!@GNGxPlUL<_mly%lIBFmeo1}=Fl}~P%af|A!PyHt40FHuXZF>RFQ8MgDF>OG)K{1 zFA?xWneMWmBVH>|H9DSdES%3Rml9DNul;|~(0tR7GC=Ch`6%e_nB?{{+ISFF{8In6KoZN%~qbi3Q>xj zoJg^UXeMygort&7V}6CvN2AYVH#X7oErmxW5#}pKW;JPelj>_03qHHoPw{t)3x*w# z+BMV`@rhXrBbGilx;G4fG8A=r9hx>vhI)evZtA)Ufn~oGW8L_I_l{W+NPzJ0^ad}@ z-=Lm63G=2kf9I={kbJ53H)r-t9AJEutDXj)yw{x|b5jOrxC1(klTT$Z!WTFx; zLGyDzkAyKe(lT|K@4xa$0?8N#AWjm0$xffpMAD8hdV8pUd>Q;ul=@Q(G((cF*9&*5L2` z@zeYgIP{-tUIb|?GTsl}X9%^dl<$@^3hwgdPHttj@t=-}AtO7(wXSxgfw?y$o?>sN z0zEgJ@}-#eviqtYptnLuec8f%87ozK7BuZ({(I8@f~0+=W$ldsHW-QKfa(2PQ(sv%$<_}lpk1bn3P;<$)fTOEI${S_vg%K?I z&%cM$q+^ogLt#BXc{3Y{auspgdzFB_?PsyK)ILoS`eF))`$4D$OxkOhFEa7ZwHJY? z{4q{+@k()nDz>s9gj-CIndUG?c9Y&t=3nG=O?J)9B}FO;CA(>&C-R0E=3#qjx#FTjZr~-bz%X6Pnj7Y7U2#Uaa74rcFZ~N6B@SQZo6qYwTfD|Z#CN|7s ze%|tLc9+898Q`o)@o*Jj4FX_!t}Rbzazx%65>4LoGGvSNRh%Y@PFDaT^`zV|Wq?Ir z3g69U=8~0vUj658P~j70V&?6I3@9APken;n6dGF@qpic|k%MFq4dlOw{4VynEHd1A z@ba2J##m=!EkZ~U=>SOq^nKb2Bq&*9PO#fyB0D}H7>-OL71)V>m@ry+N|=j&lR@+< z2j}Qh;UEWuNr6d)y(~9|_zL~|`<5Rh)TT{b=Eh+9D^ zD~_n33?aA)`W%D8xiz2Ixb`AFU81vmq135(a9GxdGTU-}NK8=n;5i+gr0FTU#xc(L zr7U79_c$nekzjPb!^qONu%UE2hH2<{585y+%1p|>^+TO_e$!+b<3E#sj{JY+;>(wD zOome5LIqQwGM&x_Q2H4Rw)?yBEtSX~paD^PC6WK;kC@+7Ua=~8cPT~Wkfa6&XR(*6 z4*-f?jID}@wL{kyuq%Z7n=54TZPWSbuLl&7WL)Ul0+4`o&s1+iizt*r^A}YgAkH0= zbo#LK$?hEOefxZ!-<%a4BP}LVotwIZj6nC8d#I~=5k0lIX7(~26&8DrrR*zhOlH|Djg%#&k}4Y@%H=! z3sN4OcA6%#$n54Rcr5<;*Ih1k0!u3%Ztn$p(~YfEI{arI^9*27;%VoEDn*bK%}5|1 z?1~^=()DyhgKrpx`$^~@PLGYO=8Gk8LkC_PUnulW5)2{>dtMo&r(8w*9}oP}^yfaJ zOyMFD@b3U4Sc$ddvw(f&LuKiXhxT$vlngVOD=-iA8|q~6a@a4=SJnkX>)B5}Yca}? zgU01&BVNW&lV@FG4wfT;YLh@MUZPT#X?2wP`XpwP8T?7i_8v!W_}meBsB`X(ocWo_ zC;W$`L|57Ur7I1e-6x*YAbJweMHnQQ5?B0~pZoUFCkv&)LMek!6&UZwkU(T;6*>j; zo>xpg;Z@J5H`n};fEwMH?RD~k&j>|qbPVz^e!$h)b8i1qJmX&h4kkZTr{fMIJ&! zI6MuZbe&!w^D7<@-c?Alx-6&w_GSfT{lHHG(iUrE3H-Bv?UTaTmI~0E~ib$lqB|- zQl~;bzK$LEou-Ln%(uX81nubZS0^@}jL*Y;1eMmWq`_hyhQS-HM^GB#e zI7!JF8J$poDN(dB<^K#_MpV*1Rf)M((ou?TfX+o;%c`ULxM@J2E}pk=Zt7WW zd*cfjDX!EicD38!g#OU@3eCcHLO4Z*h_LC&FlM~Vs~eXx(_n~_9$0_#D3-_RdOWmB zbb>)a{m^$4rcFyOdi)Iz1{^!5J?7+ zDq*TW!dDtV{pDNFG4Y4TW_=cLz{JIPnFRYrk8|WEP|W>k-Q3~&sygldxL2;vw`Pp0 z23R;8dqCuPQ7?8U6;y(53wxUI(@E?TSw}mbFSli8EQJzNLO^dNZ)#u`S}`X&lmN7} zPs+i%C0#rL{px+HB(zyF?9rwlBH<@xrLRN_;i!3t+YDySYQc^E7mM^2V%_o7B zK1J?#ThXp+9YO;gMui@Sy10CgU&_ApDBCEafnsY7-~1+2m3$Fo#!0`pfhr<1s?WwC zr}z4WqJJH>klyRP;a7ht?;}#dIS$u%%)e2PFLwSd+ZG4ph|AndxPUF`VL4V)?6`|``F+wjCmH3DI?y5T8?>fK|9?$ZaKNs-M8H2fDobF9+W>TTCI_H5PwQ_YZ!#Tn?%@-8m& zy_3&9oBinN#zWrsOsTa{m1MqU@A*{z&no?>O8N6z64TkNMX#5n94n?0Z;t_!e;spe zmfK(RCw!3W=@$%5A84E+b&#oDMDH_{_z1f8IwcD+7j;w}1r*fuB$=DB2E3C>Dy|Js ztsb`~lWqQ)MObY#V^{v>#o%YH5Jl!OOcNzOwk z9l?VPV?eAlZai8!O4s>ekUrTU#M`b307Tkoa}N-+(v+MddLVM6pmUb6u_M?3ki=AaGLb8Q~L%_b7z)~9%ABw43DWPRUV(6#xCVz~|VQkwa~9kSPR-6mC=$%`Bzm%g~*O zqG9ct1P+#w(}fQ=J_5Cc*QvQLzkyl>GFgsqTUdI15yyoqGk`7+Q@@CWzY_#Y{q>vl z5{-L#X(H_onw`415&|!Pq@fk0*xl<#P&N5OT5`Y)H`aaWw%+bmrcsxA3mPp)Xhy*Q zNN5}eP^U}_m2UI+51oS3r(C|F)zZ|uV1V*67cYhSCQ#7A3MwqJ%SrBg&U~P^6&`#e zO-4oX5EM!>|L{Up+OLclH?;Tj{xX0Yj6ABQ`|Jp#Rx@mZO<)`1ed7K@*Wd#-*;h$DapB|n5c%cBLje8$4n;O%7u}2%NF+n=5L+iyWGzFw|~)f9!V$- zf#nXE077R0t66jpB^wt>UWB(sA270O(@%^ac-3=7`(0ic3D=e4QH==_#`WzTm44fG z71k#+8NJ{e3#ExbJlD^hP=ilypBv=c=;XUQ!}Q(W`?5-grZ1BS-ho2823w#uYL!|*UE0XJEmG1QbL6t&{(P9 z3a<)i1p6(}NJ*am3zFKW3?zAI8g3y4FXAt{u`CqH&29_zmcmmLO7I$SmYZ7F!bb~} zGb7EaFqbq%LX5+!D0DoO17v*MVrS(BYy$Ky0TrZR$LU#l?;o8x+0^>wu+=Jb z!A>Y<^`lF;5vz~c>;r;CQZ1RCq{ia~(0eTLzl4T>LYUhNknvMI&M<(+u8?!I@Alt8 zcdz_4!2{wTEj|OR1w`pZ*)*XT#S*b6I=U#*cLac&=P9{BIUKMR4>zk;s3;11pcXfO z`E;8Mj8~br0qRpGom4#%;3_a1`4i|yT{{8aJ7-HU{RNWdfw+qf8w&!32_kE+C21-9 z+rN>`>m>81pmu#635N-S&f=oRL+jGZ`5iUXPgPPN#%TtGS6siKd1oA>4#ssYgt+|7 zv2V?D2)`l^JBg7QWDRK`z$pk*IiL(P@~AF-DFMF(>4#UU%r&0zzxtPxkpZh|j&)`c ztxa1wH+O9nJl@Wkch7)WoX;c;#xi@@mDi2v9Ex?JnQB!!Bk`XuYcxK$Kne@XW(VC= zgeNPRI}Cua2#_0)Tz#Av#?LOy4U@fVyJ+!{H^&y$Z8*CDeGTPGRiV2UBcTg$FG_8) zAgM7;HnA!2`bqr!WigJemS)IuFA`=XXhHy!^YK+^C2bM1S%D>5LB|}>OD}pU0G6MN zLHqIQAJ8)ZcLl$Q9J+ajVfUdk-@Jz|kz`zqM1n_;9dx?y0OqvnAIL*0>a7YcWM!a^ z*jA@I(!L+i#PJv!J2%$;v2tf2L%!%xd|#E9k`5?c?lXi^!&?oRN0YGnwT05uO=kt+ z#E43AWP4tNX~#U4i6iQ{;74>LLOY8Ovr5uw)e|X@gtE_di&v{EuKCYQPj*cLU<=de zae}y#WVzCLo7Fm*KR@v&_BHKB0K+C`ZVSd7K&5(W-b6VIpo`FUm}Zz6pg!&W$L#ri z;WG@(jM!VCKPI+76$Ld-LGv+=6u<|UmRur~_vT-7r{TbFUKBzO7D_Z4Lrph2mP2$4 zkOn+=L)m1G}P4*+SoaYgsUM6mzA`bdzH5}p4`={Aw&{um~lxg>7FLc8pCRV z+*@EO^;l9c2Xy}?UjL&Q2K>{csH~vG*p+T3IR6!TtnioMFKBHkeOfHsHMsd48 zg9j)QmctgUgkZZW|BsX0`i@usIQ_C z`m$~*Fm7Mm%;f6^HPi^2s_^D|CNQ(L=vX^l#bbkjb@LoDVN!;-hUu0)eiXCO_bSey z3HKxyojZ|4a2L6yr~6Eu6e)-$lXni9N+?O-l12`+0K3_TT(DOU`mv)15Ebz!NOTGc zRV3B)XB;Oz#zBnL%ajL=_5s~^J&qmuk*#cB+;jAxAk}eQ?~@efBk~q6N!a_eI^3JD z3)ZMIcWxBn#kDRUf_TjPP@8?b$C#ra&tk^)5|}J3jRv1xd=pdYOU!k|*d0ld2HvP2 zL+p*1A;erJ7&p z1bG^jphB}jwf?a?L-}Rf3+g{K4?eKXTrT{Fm+D3`S0%lj4UY;*cI;{ENlpHLVyHn@ z_Y7oJx_`Ux$)hN&C*!n{=QNKwdyT=Nmno zp5p*1WMi32q5RiH=27}!RbG#yt|H?||f=M3rIF4WcFZ1-M*3(hQnuY}X}-N&1YK@HMHG)nNGUZ$CWF7;j2 zSI79_S5LNJ{M!ksfKB1^1jfZQtm4suspO-F`mB;DA99XYbWrDS9;!?%d1MFkgFU}; z?=qw)!~-N%bTuRkJAJ}@co?9k6PZ6kdxD7N#8us;!|x6OE)#}dh9P)swwn9pI|}K> zaf3uh7{L{swVo=dbr79ssmIjI{$89E^J)k4mx=v7F#IPIqyDF(rvCjO{^#bV|E|yL zugEYK1Czpcic-dwaqwIE%lXdd`qHcZZ`DvvIrTNMCf1(Ik{bxG_xN})Y+WkXKJSOh zIcqygw;sH9(`TLN^B?`qa_;8(+}$c#jCtnl8>v@f93BlWBHKk()FSfPTte2%TXq(e(f*D!6K6<<1?w`NhM7I6Q zH@|oEOAB%L%l0Ogb`n!ARi>bn~`+P($y&^CMbr%4W4~)1GWO@+nmrm<|}$p8Plm~4p5#o7)RHjvVVu6 zHCkZ@bE>#%psityR{!kV1YP~l0Ae;-1~g9XyR*EnJd0T8k=I0LU4ch07hL%=2oy53 zCf`Fn9XU*s92JrQ_)>byrK`W`^EHY5pjv0_a5Q$WdQgr@PjJRDb%(|2Nl6P$W9a{= zHjR&rI(#-Il)Yq$v30&)cG2NUEywzgx8FE=1&ztbB(`upnHG`jv!2k;7W{eDPrCIP zHkTtX?ANV`(slQzS9hpj@R9OT?>P<{v;NY|X?w_+eJ0(UAZ61!Fsl4^^8-vo_1dBE`QI1O+>I zA$IbOzORjKvGTaspm8|BQ}~ogt#tK|e2(hEq6J!yJJ!7VMIhG3ujbf?qzL_$jv>bn z+C;ZxYezJ`j=pk<>S!7S zzqx!Q?_|amv&f!yg($emwHuPkGBOfOqbLh#ep_GOM^$Et^LV7OK>7_qcFh-yy^nqv zIq-4VNymoV5?5WYrQSR?UUa`O+w zGeYH>LENeoy$h`L%IXV&9L}O zxFe32tZQ4HW~MIXeZT)YFxu2Y2@p@LKn2+e&v%(7?W`t{+(##$UpNcdDI5Cs!vc|X z+gGT37sLaC@p6o3bM(3~*;|KQR3-}Au#_ou?5zWQHMXVtXTnd2f$ufh1N#p9)! z{tMXT@-L>ab~BTWS^odA8Y5P6wHv)n*ibpi9H=9X?k0+4Pg&ruy@>GHgX=c-0JhFS zFi$Q}KhZDe$jTM%kauyk0)JwM4wVgpE%u3tiL)OYQ(KXKtSbeZnU$1%WbZU{Lsu29 zz1W&_qm^##K3jyF9&;f-Q!U>PC^8P*{S80|*D>XUzaC?jp(E$6`2&ZNdUo>pMt@u_ zeHO#uBi$m;bz8P@5O|CYM7U8H5~N1mjvi!O;EGxe5l(O!L_ z#8-X8m#-MVyA&d_N;}L}ib79;o>L6n{ZXsY8D{-R-mpb&FNQJ86PdP_zRf^f6}7@a z^>^=bvwZ$^ycTjEl`cRPlaZRIoR{z>r@H%g-r+KQ`kB+}6t98tGe&v$951Q^p)2C-g_fwgVKKo#m+UVwiS^Y0HZ>Z90uI9acgqp{w>s0c$)%OooI(mtjHfJ1x zYA;Syt!V8<03!1%DILNx03O#TYeU{vPYNo6hO4*{gBBol{HPXhdBQ>Z&BYgwYfn1& z`a(BrOPpEZvkU4DU!}*+8Xr9~9@ZDLsn6O59fW*?*1CGrsIU91_vvRBDNbt5tM6a@ z#!=PhUFI~<-x~o`OxagXwN$=<#$d}(zrW_66-Zgs%F33$+-Y=~_iA7F+pbxDmbl4s z$FG0?xPOxU{O+XH>-opri0Sv$jytm(6}vOVpxVHze@>F~3ibKueqN7eP!t+EZ&6%x zNNpD84wy;cEg$1G$h)$e6UR9s3tibgp!Db8Lh`ucSd8Wh0KVBjyj0ZO;^xdz6t4bi z?!5^-u3sQclXFKoiGHv1O~2o-e`bJ7@Yr=yD7F&u+B4OAQI0hUXmnjC#Eb{pS{@!- z6TS1x(zvBDk)Q6RwjOBt5~z9D{Ul9A;(K9jW&=yjZewFJe^}>jBDDU_SW%&CB)FRR zelOLD+s9Hjt(QIT%=nY(1qs0#3#H$TbXVr030^@$Y&D5K^t?+bW#$Ex1bYEj-F_wm z_46g}#o^=i(+?ah5iUc+ z!?}30E1JPTQVVee(Z!bl%{!A5g2GRV`@pwxYD3Dj)v)GSoXv1&VhOHTTR{$;$Oaac z4J3o5&ao93(qgm%te7sWkvzna1F$8t#NBZ8L-ko)Ptr<+X#{o?F0)vlgDcmT6FC3j zGgi$~Qi^(`%Z`9->{CrjmPZypG)QHk^RDtzV|*PafN(J;m!yuCsZPmU^rNeZ$l9Lr z_J!HG`i;pA7*-aeZ(_xxQ)s9Lu~OVu^Xw!C32qX#jGm`kbT0$&6kl!3l8mc~&v4s8 zt^$Um@!nVd?D6 zW)IQNuHJy^`GvI7#C9bOLy;67ZUWgdCs7N(8q)=)mvHNA=$SAaWUZhO6%LQ*`AH8R z4B}zQj|&@M4;eE0n&n|4M!PDLSK($L%knI6uoqZaz_@xA?>*AF1hkU+usAaVbUly`kEJNrnFx;8{YfZRq{K^-I5G~d~1~mpel>u&9dJv_EuR&#Kl z@zc5Y_3tsm(A{@z(Mn6qn?l@qCs|;&X_n2lE_FI_{w+brohisKcfyP}e;A7Oo+&bz z>e8*716UXbu`r690C*2!I6AHKmN4McIG3wp+<0Y@3lq?JcXV}hgz8E*UfMf@O?^jb z7M%VN2EbG2o1p`)_>6htkJHaDD7~EW5Io*#4dPIEvO3nWWBa_{C4^3A?R3ILRTDsZ z1>%iB4^7~ZQt11D5&gChQb^+*BDvsWuNB;Pr`9S_QP!6ko`x73t*EU)>w%k#FGn(NH(fz(b!2}xwt4M{;|vXep{ zCN4|0^31Gn-#M!yG`*}S)gC)hgquapd@@tqtk@sD!Um;rT)cS3Q79=5>u%)g&qAi! zjaX*^&7jHxv-nsZ?$=ID{wg>}r+g?}ZhG_REf>pyHkQ|eoh68dVPvHJI!b9VoI`o@ zc(MmwO&{XQC1hbAw46A%i6gw|IXg>S+q)N+DcrKpm`%g{-3x0oqkv6gbuQwgvqN6l z*Ke?LhgqIG!ckDXS*WJgU591Sa6_FFmulZ@7^uq4q zj~)l%u>9?eUCX5Q6(|<>Krd_+G3_S#AhCtzi0mEiEla#K%?}Eg&QM&YhOIDVn!dn0 zx&2VXRaf=Scw*DBNnXB?yIkAeSzmh*vv%R8rS!Q-Z%7r>$F?*t{4yjP`E+KFR2{ZY zNV!rn75#_nWsaig-eRoHSynTh$cH=?c?(6&+ZsDKMFJ}Dn&Pl2ocX5yT-g1yawA=^ zq5mwcZnzV=L+VRJzI%GsAM${+GgA|r^Crepvb8$X;se~<8e&eRh(yyJNCVG$nCBN;tGJkMovL)`4_K#5p9;U`>c6&Ca zb-Z1`QYUM6H}%BNeb6khWlxlt=3v_^JX3uk?DqBgf>p9N7RtHpE(M*&JpJ=e>WUYi%v-qnp2<`mzZ18xhMG?Li)Kh)?u9iZ z86N+L=Vv?#`BPCn?*}I=es;UP8^@mgryZ4+X54uYH zxM6QOtrIl3;Hc0-4!g>a2gQ z$nWQlCOpoxE7vwQe}kiDhKq!LRo9Y*;?HXkpJMT`_3pcON&$_ztB*eO;cMvlv@3Xk z{jq;tSV8|n+z#Bn#N+b3tG-6)K)cu7J#ow!kXI{oBQXQAta6vW7c|ZrG(&}01{hLX zr>TxratHL*g7%uhod9in_r%-RQ`m~wCUdiGC!jMntgwJYXK~;=S5iJSpK}k$*=3|N z-U}*nol?Qem8|a8s)2a275Uo@1~(otQf>2=KqK1Hx!;lu$Kxj)g+0%07LsLO9aQex z=U_B`C#8k_TX!DnolLXPe*uxyoo8RO7&YN4=4BLLSKli2ss!4U?CQ~TGJJ~R9!b4m z@s%sl{|kEa@r9tQvQ}EG-rEHp7Q55#?W_2a#1{E|)vvegT+GiRqi#PW;rPd$rpR;d zKI9E+`h5b$sDitgCn3+NV8`cpD^q3r?UK#yKD+F!>c|Cj^|hJY;2(kWS(k?dij(DS z<$=^6sQ(iNHiYQNbxD=+#;)g@AJS!Y--6#$zHcSh{N88Vxt~86Uq-tXo*+QlcW>yn zG`hgIE=9j&{ZazbQ{4|{9Evacp#Icf9q?)Gfz>CZZ%W78D>lk{TI1wi?!;PPB{L%- zi+OS{IvGW+EpB$!h}z@Y`Qm%Ks#nXx_VZe*>A^ozKZCYt3A&O)OLZkon|CJl-FSK` zucfZ#b4?2MPnA#w?ynHG`sjVJ)2NY;;CB5n3c@s{< zj-@bhAGq~^!}L9_osvZCTT-3``2j1vieJ|)VA*7|e$!3C26GhOn^@{8g&8L^yvSu=Vzf8F)n1--Rg)wJs0pbuAEn20SkE$Gd}OEN2?t<^C2rohfHgr3P8Gk!5s& z{Dy&lzCHFGXNsS=;jzyuHqb%ez%Z10U_~;0P)Kh165NUif~eNnQ^A)iIz zKRKlQ&oCsLs(~}p+s*~T>aYjtEXZ)e=yZK*YKr1>FX6hD>rgg2zj9sWoRN{ifEUnG zf4+`nqucH3)xXSRx!QXIV<`i$hqh)lDQV(}#6XiYP-5yRx*9ixJ_6GHh)glBWUI>v z{)7nlyN$~JCq4|3EK)6rWbwVAo?GE@SVR+!dJquh-tCSz=CR1LbARpcG&}CJl!oT* zPJlkT#c`$10HXA6kX%sS`9m#7IHYexmpsDsL8;-bI0xBrR9~Vj!b-u?SOZGTgll21 z6coEpKdZ5@objS(CeLmKMVm8v&>c$SfUen4%~w;xXXiA&LJk^1m3zY!!_Of(9BEI} z%VIN~MM-s)p}=W;ro2h|b_8a#OAwE#k4Cbv{4Sy{C@1R(kyMq`a97z<(tv&F7(jH? zP6(TL)g2Vne&P9(U}lQ3ZN*tq+Ae-;*7cQ&6T))YNMphL_9{u%eXRiHp7BT+ok-i= zjMj52&}`m%iRKaa%=PA(Hs(Dq}nIP5q8t+KaNCp!8zeZsku+CO}^*6|yIy$qt zM~XZExd_EvCX(9z+kmU7{d&OHYgfb1!N7nDgi732^LNo*d!L%ev$zQxNQ6MoSY>l8 z#wYG)9Az5!3W&IpXCH-7CVU*LXlK*T*a%Py zAr8B6V;y6}+O43i{U&I&+^3gIb703hdcGO_nQ8=QQA+-@)41#Rgo}d{gp92%Gkq;N zXezX~_M?4g$H;LYv;~9a(bl%SH3w%Wf@V+t$fJQ3YwHU2;`~Ku$(E%1MQeFUiBv$c zsXCyNasFg)JeORplmxiG%!djejf;q}IK%0F(uWv|5p8>W{|~k$*aBO3!Lt#3^D`ic zib;&{TCEQGt3I_r1EG3iAeV1ut82Q-&ODcSd)SWan7ZR>?xM;3nP%$tsj}Ir!@%M8 zo=7-~7a>#aX}Q_Ex~h7r)m$+mk&b*mPA6iqXB# zFO;ZA$I@&t>VHeJ?VNthJDp7&rj0@5u=YDK)&mFlA}pkH8Z+3_>hGntUA<)j_b4Y@ z{w2W}B1@}OH;nyBmV>$gqcTgEAVZPfTRn6f>o%VpGoe(DfpG^HfT%q?SM!a&wFFKo}L4}2Nlis*-(j_$2cKjnR%rU%V z7~>3lSk3wl?dPF>v>#jIg_`Z9QC)ik&9?2u7q z^D%GxJfu=QqSwheQ02fdIb{L@+u)gRc39zoUr zqRpNPf{jn~j%$nJB{EW(BOdAWyI`5zB(I#SsLC3k)r)`z9jqiB(uWR?qAMM*wYfZd zj-syLT2{1NM3aZ`t{-~1FuhC*+XKbh&{<%1`nIWRU>jY5*6o1JNe^!t*KhmE#_D0# z!Gq&Xg{8@2^YHL(-EkdLzl0b?&VtPv*ur!~>!JKa97;_v$S){}j4}i>r_P8@7q6lj zVnK?#&f(i9ngu=EZg*q>=uEn1l^(q6qjHpi9u#h~^i> zMLt{0KlTmTsXz+cW;}@>fJ8^UA+;qTJts~XKaEB0<}wlmYawO|1H*C&AS z@z20w>V9;>ACv~6tG+*axqx<4R1RM^%-X;+)jC!2wt_ zb@#H<{*$p+8Yxh=P-2(u$bq7pOZl`r9gB99x@mi%9EKHNHpJVSp#`^nHV~z=t1L(k z-_Os^;3LC173xyyAXavH=`3pGrB_e?i_}Hw_*;#|1TE* h{O{(1? float: + return self.available_time_us / 1_000_000.0 + + @property + def frame_generation_seconds(self) -> float: + return self.packet.generation_time_us / 1_000_000.0 + + @property + def wire_size_bytes(self) -> int: + return HEADER_SIZE + len(self.packet.payload) + + +@dataclass(frozen=True) +class StateReplacement: + removed: AgePolicyPacket + replacement: AgePolicyPacket + time_seconds: float + + +@dataclass(frozen=True) +class DroppedVideoPacket: + item: AgePolicyPacket + drop_time_seconds: float + + +@dataclass(frozen=True) +class AgeScheduledPacket: + item: AgePolicyPacket + start_seconds: float + end_seconds: float + blocked_by: AgePolicyPacket | None + blocking_delay_seconds: float + wire_packet: bytes + + +@dataclass(frozen=True) +class AgeScheduleResult: + channel_bitrate_bps: float + max_video_age_seconds: float | None + transmitted: tuple[AgeScheduledPacket, ...] + dropped_video: tuple[DroppedVideoPacket, ...] + replacements: tuple[StateReplacement, ...] + + +def _enqueue( + ready: list[AgePolicyPacket], + item: AgePolicyPacket, + replacements: list[StateReplacement], +) -> None: + if item.packet.traffic_class in (TrafficClass.CONTROL, TrafficClass.TELEMETRY): + retained = [] + for old in ready: + if ( + old.packet.traffic_class == item.packet.traffic_class + and old.packet.stream_id == item.packet.stream_id + ): + replacements.append( + StateReplacement(old, item, item.available_time_seconds) + ) + else: + retained.append(old) + ready[:] = retained + ready.append(item) + + +def schedule_with_video_age( + packets: Iterable[AgePolicyPacket], + channel_bitrate_bps: float, + max_video_age_seconds: float | None, +) -> AgeScheduleResult: + """Run a strict-priority non-preemptive scheduler with frame drops. + + At every packet-selection instant all queued packets belonging to a video + frame older than ``max_video_age_seconds`` are removed together. An active + packet has already left the queue and is never interrupted. + """ + + if channel_bitrate_bps <= 0.0: + raise ValueError("channel bitrate must be positive") + if max_video_age_seconds is not None and max_video_age_seconds <= 0.0: + raise ValueError("maximum video age must be positive") + arrivals = sorted( + tuple(packets), + key=lambda item: (item.available_time_seconds, item.arrival_order), + ) + if len({item.arrival_order for item in arrivals}) != len(arrivals): + raise ValueError("arrival_order values must be unique") + for item in arrivals: + if item.packet.traffic_class is TrafficClass.VIDEO: + if item.composite_frame_id is None: + raise ValueError("video packet lacks composite_frame_id") + elif item.composite_frame_id is not None: + raise ValueError("non-video packet has composite_frame_id") + + ready: list[AgePolicyPacket] = [] + transmitted: list[AgeScheduledPacket] = [] + dropped: list[DroppedVideoPacket] = [] + replacements: list[StateReplacement] = [] + blocker_by_order: dict[int, tuple[AgePolicyPacket, float]] = {} + dropped_frames: set[int] = set() + arrival_index = 0 + cursor = 0.0 + + def admit_until(limit: float, active: AgePolicyPacket | None = None, active_end: float = 0.0) -> None: + nonlocal arrival_index + while ( + arrival_index < len(arrivals) + and arrivals[arrival_index].available_time_seconds + <= limit + TIME_EPSILON_SECONDS + ): + item = arrivals[arrival_index] + arrival_index += 1 + if ( + active is not None + and item.available_time_seconds > cursor + TIME_EPSILON_SECONDS + ): + blocker_by_order[item.arrival_order] = ( + active, + max(0.0, active_end - item.available_time_seconds), + ) + if item.composite_frame_id in dropped_frames: + dropped.append(DroppedVideoPacket(item, limit)) + else: + _enqueue(ready, item, replacements) + + def expire_video(now: float) -> None: + if max_video_age_seconds is None: + return + expired_frames = { + item.composite_frame_id + for item in ready + if ( + item.packet.traffic_class is TrafficClass.VIDEO + and now - item.frame_generation_seconds + > max_video_age_seconds + TIME_EPSILON_SECONDS + ) + } + if not expired_frames: + return + retained = [] + for item in ready: + if item.composite_frame_id in expired_frames: + dropped.append(DroppedVideoPacket(item, now)) + assert item.composite_frame_id is not None + dropped_frames.add(item.composite_frame_id) + else: + retained.append(item) + ready[:] = retained + + while arrival_index < len(arrivals) or ready: + if not ready: + cursor = max(cursor, arrivals[arrival_index].available_time_seconds) + admit_until(cursor) + expire_video(cursor) + if not ready: + continue + selected_index = min( + range(len(ready)), + key=lambda index: ( + int(ready[index].packet.traffic_class), + ready[index].arrival_order, + ), + ) + selected = ready.pop(selected_index) + start = max(cursor, selected.available_time_seconds) + wire_packet = encode_link_packet(selected.packet) + end = start + transmission_duration_seconds( + len(wire_packet), channel_bitrate_bps + ) + cursor = start + admit_until(end, selected, end) + blocker, blocking_delay = blocker_by_order.get( + selected.arrival_order, (None, 0.0) + ) + transmitted.append( + AgeScheduledPacket( + item=selected, + start_seconds=start, + end_seconds=end, + blocked_by=blocker, + blocking_delay_seconds=blocking_delay, + wire_packet=wire_packet, + ) + ) + cursor = end + + return AgeScheduleResult( + channel_bitrate_bps=channel_bitrate_bps, + max_video_age_seconds=max_video_age_seconds, + transmitted=tuple(transmitted), + dropped_video=tuple(dropped), + replacements=tuple(replacements), + ) diff --git a/tests/lab034_stale_video_drop.py b/tests/lab034_stale_video_drop.py new file mode 100644 index 0000000..f42414e --- /dev/null +++ b/tests/lab034_stale_video_drop.py @@ -0,0 +1,1020 @@ +"""Lab034: frame-aligned FEC and deliberate stale-video dropping.""" + +from __future__ import annotations + +import csv +from dataclasses import asdict, dataclass, replace +from math import ceil +from pathlib import Path +import subprocess +from typing import Iterable + +import cv2 +import matplotlib +import numpy as np + +matplotlib.use("Agg") +import matplotlib.pyplot as plt + +from protocol.link_packet import ( + Direction, + HEADER_SIZE, + LinkPacket, + TrafficClass, + decode_link_packet, +) +from protocol.packet_erasure_fec import ( + decode_fec_block, + decode_outer_symbol, + encode_fec_block, +) +from protocol.video_age_policy import ( + AgePolicyPacket, + AgeScheduleResult, + schedule_with_video_age, +) +from protocol.video_packet import CompositeReassembler, decode_packet as decode_inner_packet +from tests.lab028_video_packetization import COMPOSITE_FPS +from tests.lab029_packet_channel_simulation import prepare_profiles +from tests.lab030_packet_erasure_fec import SourcePacket, prepare_source_packets +from tests.lab033_priority_channel_scheduler import ( + CHANNEL_RATES_KBPS, + STREAM_VIDEO, + VIDEO_PAYLOAD_SIZE, + Workload as Lab033Workload, + build_workload as build_lab033_workload, + simulate as simulate_lab033, +) + + +OUTPUT_DIRECTORY = Path("data/processed/lab034") +SUMMARY_CSV_PATH = OUTPUT_DIRECTORY / "lab034_summary.csv" +VIDEO_CSV_PATH = OUTPUT_DIRECTORY / "lab034_video_metrics.csv" +CONTROL_CSV_PATH = OUTPUT_DIRECTORY / "lab034_control_metrics.csv" +REPORT_PATH = OUTPUT_DIRECTORY / "lab034_report.txt" +IMAGE_AGE_PLOT_PATH = OUTPUT_DIRECTORY / "lab034_image_age.png" +FRAME_OUTCOME_PLOT_PATH = OUTPUT_DIRECTORY / "lab034_frame_outcomes.png" +QUEUE_PLOT_PATH = OUTPUT_DIRECTORY / "lab034_queue_size.png" +CONTROL_DELAY_PLOT_PATH = OUTPUT_DIRECTORY / "lab034_control_delay.png" +UPDATE_RATE_PLOT_PATH = OUTPUT_DIRECTORY / "lab034_update_rate.png" +FEC_OVERHEAD_PLOT_PATH = OUTPUT_DIRECTORY / "lab034_fec_alignment_overhead.png" +COMPARISON_PLOT_PATH = OUTPUT_DIRECTORY / "lab034_policy_comparison.png" +PLOT_PATHS = ( + IMAGE_AGE_PLOT_PATH, + FRAME_OUTCOME_PLOT_PATH, + QUEUE_PLOT_PATH, + CONTROL_DELAY_PLOT_PATH, + UPDATE_RATE_PLOT_PATH, + FEC_OVERHEAD_PLOT_PATH, + COMPARISON_PLOT_PATH, +) +LAB033_COMMIT = "21751f41dd0af022fc1f935c67e795e3ae4257c5" +SOURCE_BLOCK_SIZE = 12 +NOMINAL_PARITY_COUNT = 3 +TIME_EPSILON_SECONDS = 1e-9 + + +@dataclass(frozen=True) +class PolicyDefinition: + name: str + label: str + layout: str + max_age_ms: int | None + + +POLICIES = ( + PolicyDefinition("continuous_no_drop", "Непрерывные, без отбрасывания", "continuous", None), + PolicyDefinition("aligned_no_drop", "По кадрам, без отбрасывания", "aligned", None), + PolicyDefinition("aligned_1500ms", "По кадрам, 1500 мс", "aligned", 1500), + PolicyDefinition("aligned_1000ms", "По кадрам, 1000 мс", "aligned", 1000), + PolicyDefinition("aligned_500ms", "По кадрам, 500 мс", "aligned", 500), +) +POLICY_BY_NAME = {policy.name: policy for policy in POLICIES} + + +@dataclass(frozen=True) +class BlockDescription: + block_id: int + frame_ids: tuple[int, ...] + source_count: int + parity_count: int + symbol_size: int + + +@dataclass(frozen=True) +class FECLayoutMetrics: + layout: str + source_packets: int + parity_packets: int + fec_blocks: int + partial_blocks: int + cross_frame_blocks: int + mean_frames_per_block: float + max_frames_per_block: int + before_link_kbps: float + after_link_kbps: float + alignment_extra_kbps: float + alignment_extra_percent: float + mean_packets_per_frame: float + mean_frame_transmission_ms_at_300kbps: float + + +@dataclass(frozen=True) +class AlignedWorkload: + lab033: Lab033Workload + packets: tuple[AgePolicyPacket, ...] + blocks: tuple[BlockDescription, ...] + layout_metrics: FECLayoutMetrics + + +@dataclass(frozen=True) +class Lab034Summary: + channel_kbps: float + policy: str + layout: str + max_video_age_ms: int + offered_load_kbps: float + offered_to_capacity_ratio: float + transmitted_packets: int + transmitted_bytes: int + dropped_packets: int + dropped_bytes: int + wasted_transmitted_bytes: int + mean_queue_packets: float + max_queue_packets: int + mean_queue_bytes: float + max_queue_bytes: int + queue_at_source_end_packets: int + additional_drain_seconds: float + channel_utilization_fraction: float + + +@dataclass(frozen=True) +class VideoMetrics: + channel_kbps: float + policy: str + created_frames: int + published_frames: int + intentionally_dropped_frames: int + partially_transmitted_cancelled_frames: int + published_after_deadline_frames: int + published_fraction: float + actual_update_fps: float + mean_publication_delay_ms: float + p95_publication_delay_ms: float + max_publication_delay_ms: float + mean_display_age_ms: float + p95_display_age_ms: float + max_display_age_ms: float + display_age_over_500ms_fraction: float + display_age_over_1000ms_fraction: float + mean_no_update_duration_ms: float + p95_no_update_duration_ms: float + max_no_update_duration_ms: float + mean_missing_run_frames: float + p95_missing_run_frames: float + max_missing_run_frames: int + delivered_useful_video_kbps: float + wasted_transmitted_video_bytes: int + receiver_cleared_frames: int + + +@dataclass(frozen=True) +class ControlMetrics: + channel_kbps: float + policy: str + control_mean_age_ms: float + control_p95_age_ms: float + control_max_age_ms: float + control_deadline_misses: int + control_max_receive_gap_ms: float + control_replaced: int + emergency_total_delay_ms: float + emergency_deadline_met: bool + emergency_blocker_class: str + emergency_blocker_size_bytes: int + emergency_blocker_sequence: int + emergency_blocking_delay_ms: float + telemetry_mean_age_ms: float + telemetry_p95_age_ms: float + telemetry_max_age_ms: float + telemetry_deadline_misses: int + telemetry_replaced: int + + +@dataclass(frozen=True) +class Lab034Result: + summary: Lab034Summary + video: VideoMetrics + control: ControlMetrics + publication_times: dict[int, float] + dropped_frames: frozenset[int] + transmitted_video_by_frame: dict[int, int] + schedule: AgeScheduleResult | None + + +@dataclass(frozen=True) +class FunctionalTestResult: + name: str + passed: bool + detail: str + + +def percentile(values: Iterable[float], q: float) -> float: + values = tuple(values) + return float(np.percentile(values, q)) if values else 0.0 + + +def parity_for_partial(source_count: int) -> int: + if not 1 <= source_count <= SOURCE_BLOCK_SIZE: + raise ValueError("partial source count is outside 1...12") + return max(1, ceil(source_count * NOMINAL_PARITY_COUNT / SOURCE_BLOCK_SIZE)) + + +def _aligned_video_packets( + lab033: Lab033Workload, +) -> tuple[tuple[AgePolicyPacket, ...], tuple[BlockDescription, ...]]: + profile = prepare_profiles(list(lab033.composites))[VIDEO_PAYLOAD_SIZE] + source_packets: tuple[SourcePacket, ...] = prepare_source_packets(profile) + by_frame: dict[int, list[SourcePacket]] = {} + for source in source_packets: + by_frame.setdefault(source.composite_frame_id, []).append(source) + packets: list[AgePolicyPacket] = [] + blocks: list[BlockDescription] = [] + sequence = 0 + block_id = 0 + for frame_id in sorted(by_frame): + frame_sources = by_frame[frame_id] + generation_us = int(round(frame_id / COMPOSITE_FPS * 1_000_000.0)) + for start in range(0, len(frame_sources), SOURCE_BLOCK_SIZE): + chunk = frame_sources[start:start + SOURCE_BLOCK_SIZE] + parity_count = ( + NOMINAL_PARITY_COUNT + if len(chunk) == SOURCE_BLOCK_SIZE + else parity_for_partial(len(chunk)) + ) + wire_symbols = encode_fec_block( + tuple(source.inner_packet for source in chunk), + block_id, + parity_count, + ) + decoded = tuple(decode_outer_symbol(symbol) for symbol in wire_symbols) + blocks.append( + BlockDescription( + block_id=block_id, + frame_ids=(frame_id,), + source_count=len(chunk), + parity_count=parity_count, + symbol_size=decoded[0].symbol_size, + ) + ) + for wire_symbol in wire_symbols: + packet = LinkPacket( + traffic_class=TrafficClass.VIDEO, + direction=Direction.ROVER_TO_GROUND, + stream_id=STREAM_VIDEO, + sequence_number=sequence, + generation_time_us=generation_us, + deadline_ms=0, + payload=wire_symbol, + ) + packets.append( + AgePolicyPacket( + packet=packet, + arrival_order=-1, + available_time_us=generation_us, + composite_frame_id=frame_id, + ) + ) + sequence += 1 + block_id += 1 + return tuple(packets), tuple(blocks) + + +def _layout_metrics( + layout: str, + packets: tuple[AgePolicyPacket, ...], + blocks: tuple[BlockDescription, ...], + frame_count: int, + duration: float, + continuous_before_kbps: float, +) -> FECLayoutMetrics: + before_bytes = sum(len(item.packet.payload) for item in packets) + after_bytes = sum(item.wire_size_bytes for item in packets) + before_kbps = before_bytes * 8.0 / duration / 1000.0 + after_kbps = after_bytes * 8.0 / duration / 1000.0 + extra_kbps = before_kbps - continuous_before_kbps + frame_bytes: dict[int, int] = {} + frame_packets: dict[int, int] = {} + for item in packets: + assert item.composite_frame_id is not None + frame_bytes[item.composite_frame_id] = frame_bytes.get(item.composite_frame_id, 0) + item.wire_size_bytes + frame_packets[item.composite_frame_id] = frame_packets.get(item.composite_frame_id, 0) + 1 + frames_per_block = [len(set(block.frame_ids)) for block in blocks] + return FECLayoutMetrics( + layout=layout, + source_packets=sum(block.source_count for block in blocks), + parity_packets=sum(block.parity_count for block in blocks), + fec_blocks=len(blocks), + partial_blocks=sum(block.source_count < SOURCE_BLOCK_SIZE for block in blocks), + cross_frame_blocks=sum(len(set(block.frame_ids)) > 1 for block in blocks), + mean_frames_per_block=float(np.mean(frames_per_block)), + max_frames_per_block=max(frames_per_block), + before_link_kbps=before_kbps, + after_link_kbps=after_kbps, + alignment_extra_kbps=extra_kbps, + alignment_extra_percent=(100.0 * extra_kbps / continuous_before_kbps), + mean_packets_per_frame=float(np.mean(tuple(frame_packets.values()))), + mean_frame_transmission_ms_at_300kbps=float(np.mean(tuple(frame_bytes.values()))) * 8.0 / 300_000.0 * 1000.0, + ) + + +def build_aligned_workload(lab033: Lab033Workload) -> AlignedWorkload: + video_packets, blocks = _aligned_video_packets(lab033) + non_video = [ + AgePolicyPacket( + packet=item.packet, + arrival_order=-1, + available_time_us=item.packet.generation_time_us, + composite_frame_id=None, + ) + for item in lab033.packets + if item.packet.traffic_class is not TrafficClass.VIDEO + ] + candidates = non_video + list(video_packets) + candidates.sort( + key=lambda item: ( + item.available_time_us, + int(item.packet.traffic_class), + item.packet.stream_id, + item.packet.sequence_number, + ) + ) + packets = tuple( + replace(item, arrival_order=index) + for index, item in enumerate(candidates) + ) + video_packets = tuple( + item for item in packets if item.packet.traffic_class is TrafficClass.VIDEO + ) + continuous_before = ( + sum(len(unit.wire_packet) for unit in lab033.video_units) + * 8.0 / lab033.metadata.duration_seconds / 1000.0 + ) + metrics = _layout_metrics( + "aligned", video_packets, blocks, len(lab033.composites), + lab033.metadata.duration_seconds, continuous_before, + ) + return AlignedWorkload(lab033, packets, blocks, metrics) + + +def continuous_layout_metrics(lab033: Lab033Workload) -> FECLayoutMetrics: + profile = prepare_profiles(list(lab033.composites))[VIDEO_PAYLOAD_SIZE] + sources = prepare_source_packets(profile) + source_frames = {source.global_index: source.composite_frame_id for source in sources} + blocks = tuple( + BlockDescription( + block_id=block.block_id, + frame_ids=tuple(source_frames[index] for index in block.source_global_indices), + source_count=block.source_count, + parity_count=block.parity_count, + symbol_size=block.symbol_size, + ) + for block in lab033.video_blocks + ) + video_packets = tuple( + AgePolicyPacket(item.packet, item.arrival_order, item.packet.generation_time_us, None) + for item in lab033.packets if item.packet.traffic_class is TrafficClass.VIDEO + ) + before = sum(len(unit.wire_packet) for unit in lab033.video_units) * 8.0 / lab033.metadata.duration_seconds / 1000.0 + raw = _layout_metrics( + "continuous", tuple(replace(item, composite_frame_id=0) for item in video_packets), + blocks, len(lab033.composites), lab033.metadata.duration_seconds, before, + ) + frames_per_block = [len(set(block.frame_ids)) for block in blocks] + return replace( + raw, + source_packets=sum(block.source_count for block in blocks), + parity_packets=sum(block.parity_count for block in blocks), + partial_blocks=sum(block.source_count < SOURCE_BLOCK_SIZE for block in blocks), + cross_frame_blocks=sum(count > 1 for count in frames_per_block), + mean_frames_per_block=float(np.mean(frames_per_block)), + max_frames_per_block=max(frames_per_block), + alignment_extra_kbps=0.0, + alignment_extra_percent=0.0, + mean_packets_per_frame=len(video_packets) / len(lab033.composites), + mean_frame_transmission_ms_at_300kbps=( + sum(item.wire_size_bytes for item in video_packets) + / len(lab033.composites) + * 8.0 / 300_000.0 * 1000.0 + ), + ) + + +def _display_metrics( + publication_times: dict[int, float], + source_end: float, +) -> tuple[float, float, float, float, float, tuple[float, ...]]: + events = sorted((time, frame_id) for frame_id, time in publication_times.items() if time <= source_end + TIME_EPSILON_SECONDS) + sample_times = np.arange(0.0, source_end + 0.005, 0.01) + ages = [] + event_index = 0 + last_frame: int | None = None + for sample_time in sample_times: + while event_index < len(events) and events[event_index][0] <= sample_time: + last_frame = events[event_index][1] + event_index += 1 + generation = 0.0 if last_frame is None else last_frame / COMPOSITE_FPS + ages.append(max(0.0, sample_time - generation)) + update_times = [0.0] + [time for time, _ in events] + [source_end] + gaps = tuple(max(0.0, right - left) for left, right in zip(update_times, update_times[1:])) + return ( + float(np.mean(ages)), percentile(ages, 95), max(ages, default=0.0), + sum(age > 0.5 for age in ages) / len(ages), + sum(age > 1.0 for age in ages) / len(ages), gaps, + ) + + +def _missing_runs(frame_count: int, published: set[int]) -> tuple[int, ...]: + runs = [] + current = 0 + for frame_id in range(frame_count): + if frame_id not in published: + current += 1 + elif current: + runs.append(current); current = 0 + if current: + runs.append(current) + return tuple(runs) + + +def _queue_metrics( + schedule: AgeScheduleResult, + source_end: float, +) -> tuple[float, int, float, int, int, float, float]: + intervals: list[tuple[float, float, int]] = [] + for sent in schedule.transmitted: + intervals.append((sent.item.available_time_seconds, sent.end_seconds, sent.item.wire_size_bytes)) + for dropped in schedule.dropped_video: + intervals.append((dropped.item.available_time_seconds, dropped.drop_time_seconds, dropped.item.wire_size_bytes)) + for replacement in schedule.replacements: + intervals.append((replacement.removed.available_time_seconds, replacement.time_seconds, replacement.removed.wire_size_bytes)) + packet_area = byte_area = 0.0 + events: dict[float, list[int]] = {} + remaining = 0 + for start, end, size in intervals: + if start <= source_end + TIME_EPSILON_SECONDS < end - TIME_EPSILON_SECONDS: + remaining += 1 + left, right = max(0.0, start), min(source_end, end) + if right <= left + TIME_EPSILON_SECONDS: + continue + packet_area += right - left; byte_area += (right - left) * size + events.setdefault(left, [0, 0])[0] += 1; events[left][1] += size + events.setdefault(right, [0, 0])[0] -= 1; events[right][1] -= size + packets_now = bytes_now = max_packets = max_bytes = 0 + for time in sorted(events): + packets_now += events[time][0]; bytes_now += events[time][1] + max_packets = max(max_packets, packets_now); max_bytes = max(max_bytes, bytes_now) + finish = max( + [source_end] + + [item.end_seconds for item in schedule.transmitted] + + [item.drop_time_seconds for item in schedule.dropped_video] + ) + busy_main = sum( + max(0.0, min(item.end_seconds, source_end) - max(item.start_seconds, 0.0)) + for item in schedule.transmitted + ) + return ( + packet_area / source_end, max_packets, byte_area / source_end, max_bytes, + remaining, max(0.0, finish - source_end), busy_main / source_end, + ) + + +def receive_aligned( + schedule: AgeScheduleResult, + frame_count: int, +) -> tuple[dict[int, float], frozenset[int], dict[int, int], int]: + dropped_frames = frozenset( + item.item.composite_frame_id for item in schedule.dropped_video + if item.item.composite_frame_id is not None + ) + transmitted_by_frame: dict[int, int] = {} + receiver = CompositeReassembler() + publication_times: dict[int, float] = {} + block_symbols: dict[int, list[bytes]] = {} + decoded_blocks: set[int] = set() + for sent in schedule.transmitted: + link = decode_link_packet(sent.wire_packet) + if link.traffic_class is not TrafficClass.VIDEO: + continue + frame_id = sent.item.composite_frame_id + assert frame_id is not None + transmitted_by_frame[frame_id] = transmitted_by_frame.get(frame_id, 0) + sent.item.wire_size_bytes + outer = decode_outer_symbol(link.payload) + if frame_id in dropped_frames: + continue + symbols = block_symbols.setdefault(outer.block_id, []) + symbols.append(link.payload) + if not outer.is_parity: + completed = receiver.ingest(outer.data) + if completed is not None: + publication_times[completed.composite_frame_id] = sent.end_seconds + if outer.block_id not in decoded_blocks and len(symbols) >= outer.source_count: + decoded = decode_fec_block(tuple(symbols)) + for inner in decoded.source_packets: + decode_inner_packet(inner) + decoded_blocks.add(outer.block_id) + if any(frame_id in publication_times for frame_id in dropped_frames): + raise AssertionError("cancelled partial frame was published") + if any(not 0 <= frame_id < frame_count for frame_id in publication_times): + raise AssertionError("receiver produced an unknown frame") + return publication_times, dropped_frames, transmitted_by_frame, len(dropped_frames) + + +def _video_metrics( + lab033: Lab033Workload, + policy: PolicyDefinition, + publication_times: dict[int, float], + dropped_frames: frozenset[int], + transmitted_by_frame: dict[int, int], +) -> VideoMetrics: + source_end = lab033.metadata.duration_seconds + published = set(publication_times) + partial = {frame for frame in dropped_frames if transmitted_by_frame.get(frame, 0) > 0} + delays = [publication_times[frame] - frame / COMPOSITE_FPS for frame in sorted(published)] + age_mean, age_p95, age_max, over_500, over_1000, gaps = _display_metrics(publication_times, source_end) + runs = _missing_runs(len(lab033.composites), published) + deadline = None if policy.max_age_ms is None else policy.max_age_ms / 1000.0 + delivered_jpeg = sum( + len(lab033.composites[frame].base_jpeg) + len(lab033.composites[frame].roi_jpeg) + for frame in published + ) + return VideoMetrics( + channel_kbps=0.0, + policy=policy.name, + created_frames=len(lab033.composites), + published_frames=len(published), + intentionally_dropped_frames=len(dropped_frames), + partially_transmitted_cancelled_frames=len(partial), + published_after_deadline_frames=sum(delay > deadline + TIME_EPSILON_SECONDS for delay in delays) if deadline is not None else 0, + published_fraction=len(published) / len(lab033.composites), + actual_update_fps=sum(time <= source_end + TIME_EPSILON_SECONDS for time in publication_times.values()) / source_end, + mean_publication_delay_ms=float(np.mean(delays)) * 1000.0 if delays else 0.0, + p95_publication_delay_ms=percentile(delays, 95) * 1000.0, + max_publication_delay_ms=max(delays, default=0.0) * 1000.0, + mean_display_age_ms=age_mean * 1000.0, + p95_display_age_ms=age_p95 * 1000.0, + max_display_age_ms=age_max * 1000.0, + display_age_over_500ms_fraction=over_500, + display_age_over_1000ms_fraction=over_1000, + mean_no_update_duration_ms=float(np.mean(gaps)) * 1000.0 if gaps else 0.0, + p95_no_update_duration_ms=percentile(gaps, 95) * 1000.0, + max_no_update_duration_ms=max(gaps, default=0.0) * 1000.0, + mean_missing_run_frames=float(np.mean(runs)) if runs else 0.0, + p95_missing_run_frames=percentile(runs, 95), + max_missing_run_frames=max(runs, default=0), + delivered_useful_video_kbps=delivered_jpeg * 8.0 / source_end / 1000.0, + wasted_transmitted_video_bytes=sum(transmitted_by_frame.get(frame, 0) for frame in dropped_frames), + receiver_cleared_frames=len(dropped_frames), + ) + + +def _control_metrics(schedule: AgeScheduleResult, rate: float, policy: str) -> ControlMetrics: + by_class = { + traffic_class: [item for item in schedule.transmitted if item.item.packet.traffic_class is traffic_class] + for traffic_class in (TrafficClass.CONTROL, TrafficClass.EMERGENCY, TrafficClass.TELEMETRY) + } + control = by_class[TrafficClass.CONTROL] + control_age = [item.end_seconds - item.item.packet.generation_time_us / 1_000_000.0 for item in control] + control_gaps = [right.end_seconds - left.end_seconds for left, right in zip(control, control[1:])] + telemetry = by_class[TrafficClass.TELEMETRY] + telemetry_age = [item.end_seconds - item.item.packet.generation_time_us / 1_000_000.0 for item in telemetry] + emergency = by_class[TrafficClass.EMERGENCY] + if len(emergency) != 1: + raise AssertionError("exactly one emergency command must be delivered") + urgent = emergency[0] + urgent_delay = urgent.end_seconds - urgent.item.packet.generation_time_us / 1_000_000.0 + blocker = urgent.blocked_by + replaced_control = sum(item.removed.packet.traffic_class is TrafficClass.CONTROL for item in schedule.replacements) + replaced_telemetry = sum(item.removed.packet.traffic_class is TrafficClass.TELEMETRY for item in schedule.replacements) + return ControlMetrics( + channel_kbps=rate, policy=policy, + control_mean_age_ms=float(np.mean(control_age)) * 1000.0, + control_p95_age_ms=percentile(control_age, 95) * 1000.0, + control_max_age_ms=max(control_age) * 1000.0, + control_deadline_misses=sum(age > 0.1 + TIME_EPSILON_SECONDS for age in control_age), + control_max_receive_gap_ms=max(control_gaps, default=0.0) * 1000.0, + control_replaced=replaced_control, + emergency_total_delay_ms=urgent_delay * 1000.0, + emergency_deadline_met=urgent_delay <= 0.05 + TIME_EPSILON_SECONDS, + emergency_blocker_class=blocker.packet.traffic_class.name.lower() if blocker else "none", + emergency_blocker_size_bytes=blocker.wire_size_bytes if blocker else 0, + emergency_blocker_sequence=blocker.packet.sequence_number if blocker else -1, + emergency_blocking_delay_ms=urgent.blocking_delay_seconds * 1000.0, + telemetry_mean_age_ms=float(np.mean(telemetry_age)) * 1000.0, + telemetry_p95_age_ms=percentile(telemetry_age, 95) * 1000.0, + telemetry_max_age_ms=max(telemetry_age) * 1000.0, + telemetry_deadline_misses=sum(age > 0.5 + TIME_EPSILON_SECONDS for age in telemetry_age), + telemetry_replaced=replaced_telemetry, + ) + + +def simulate_aligned( + workload: AlignedWorkload, + rate: float, + policy: PolicyDefinition, +) -> Lab034Result: + schedule = schedule_with_video_age( + workload.packets, + rate * 1000.0, + None if policy.max_age_ms is None else policy.max_age_ms / 1000.0, + ) + publications, dropped_frames, transmitted_by_frame, cleared = receive_aligned( + schedule, len(workload.lab033.composites) + ) + video = replace( + _video_metrics(workload.lab033, policy, publications, dropped_frames, transmitted_by_frame), + channel_kbps=rate, + receiver_cleared_frames=cleared, + ) + control = _control_metrics(schedule, rate, policy.name) + mean_qp, max_qp, mean_qb, max_qb, remaining, drain, utilization = _queue_metrics( + schedule, workload.lab033.metadata.duration_seconds + ) + offered_bytes = sum(item.wire_size_bytes for item in workload.packets) + dropped_bytes = sum(item.item.wire_size_bytes for item in schedule.dropped_video) + summary = Lab034Summary( + channel_kbps=rate, policy=policy.name, layout=policy.layout, + max_video_age_ms=-1 if policy.max_age_ms is None else policy.max_age_ms, + offered_load_kbps=offered_bytes * 8.0 / workload.lab033.metadata.duration_seconds / 1000.0, + offered_to_capacity_ratio=offered_bytes * 8.0 / workload.lab033.metadata.duration_seconds / (rate * 1000.0), + transmitted_packets=len(schedule.transmitted), + transmitted_bytes=sum(len(item.wire_packet) for item in schedule.transmitted), + dropped_packets=len(schedule.dropped_video), dropped_bytes=dropped_bytes, + wasted_transmitted_bytes=video.wasted_transmitted_video_bytes, + mean_queue_packets=mean_qp, max_queue_packets=max_qp, + mean_queue_bytes=mean_qb, max_queue_bytes=max_qb, + queue_at_source_end_packets=remaining, additional_drain_seconds=drain, + channel_utilization_fraction=utilization, + ) + return Lab034Result(summary, video, control, publications, dropped_frames, transmitted_by_frame, schedule) + + +def baseline_result( + lab033: Lab033Workload, + rate: float, + continuous: FECLayoutMetrics, +) -> Lab034Result: + previous = simulate_lab033(lab033, rate, __import__("protocol.priority_scheduler", fromlist=["SchedulerMode"]).SchedulerMode.LATEST_STATE) + policy = POLICIES[0] + publications = previous.publication_times + video = replace( + _video_metrics(lab033, policy, publications, frozenset(), {}), + channel_kbps=rate, + ) + s = previous.summary + crows = {item.traffic_class: item for item in previous.classes} + control = ControlMetrics( + channel_kbps=rate, policy=policy.name, + control_mean_age_ms=s.control_mean_age_ms, + control_p95_age_ms=s.control_p95_age_ms, + control_max_age_ms=s.control_max_age_ms, + control_deadline_misses=crows["control"].deadline_misses, + control_max_receive_gap_ms=s.control_max_receive_gap_ms, + control_replaced=s.control_replaced, + emergency_total_delay_ms=s.emergency_total_delay_ms, + emergency_deadline_met=s.emergency_deadline_met, + emergency_blocker_class=s.emergency_blocker_class, + emergency_blocker_size_bytes=s.emergency_blocker_size_bytes, + emergency_blocker_sequence=s.emergency_blocker_sequence, + emergency_blocking_delay_ms=s.emergency_blocking_delay_ms, + telemetry_mean_age_ms=s.telemetry_mean_age_ms, + telemetry_p95_age_ms=s.telemetry_p95_age_ms, + telemetry_max_age_ms=s.telemetry_max_age_ms, + telemetry_deadline_misses=s.telemetry_misses_500ms, + telemetry_replaced=s.telemetry_replaced, + ) + summary = Lab034Summary( + channel_kbps=rate, policy=policy.name, layout="continuous", max_video_age_ms=-1, + offered_load_kbps=s.offered_load_kbps, + offered_to_capacity_ratio=s.offered_to_capacity_ratio, + transmitted_packets=s.transmitted_packets, transmitted_bytes=s.transmitted_bytes, + dropped_packets=0, dropped_bytes=0, wasted_transmitted_bytes=0, + mean_queue_packets=s.mean_queue_packets, max_queue_packets=s.max_queue_packets, + mean_queue_bytes=s.mean_queue_bytes, max_queue_bytes=s.max_queue_bytes, + queue_at_source_end_packets=s.queue_at_source_end_packets, + additional_drain_seconds=s.additional_drain_seconds, + channel_utilization_fraction=min(1.0, s.transmitted_bytes * 8.0 / (rate * 1000.0 * s.drain_end_seconds)), + ) + return Lab034Result(summary, video, control, publications, frozenset(), {}, None) + + +def run_experiment( + lab033: Lab033Workload, + aligned: AlignedWorkload, + continuous: FECLayoutMetrics, +) -> tuple[Lab034Result, ...]: + results = [] + for rate in CHANNEL_RATES_KBPS: + results.append(baseline_result(lab033, rate, continuous)) + for policy in POLICIES[1:]: + results.append(simulate_aligned(aligned, rate, policy)) + return tuple(results) + + +def run_functional_tests( + lab033: Lab033Workload, + aligned: AlignedWorkload, + continuous: FECLayoutMetrics, + results: tuple[Lab034Result, ...], +) -> tuple[FunctionalTestResult, ...]: + checks = [] + + def check(name): + def decorator(function): checks.append((name, function)); return function + return decorator + + lookup = {(r.summary.channel_kbps, r.summary.policy): r for r in results} + + @check("01_continuous_matches_lab033") + def _(): + with Path("data/processed/lab033/lab033_summary.csv").open(encoding="utf-8") as file: + rows = [row for row in csv.DictReader(file) if row["scheduler"] == "latest_state"] + for row in rows: + result = lookup[(float(row["channel_kbps"]), "continuous_no_drop")] + assert abs(result.summary.transmitted_bytes - int(row["transmitted_bytes"])) == 0 + assert abs(result.control.control_p95_age_ms - float(row["control_p95_age_ms"])) < 1e-9 + + @check("02_aligned_blocks_one_frame") + def _(): assert all(len(set(block.frame_ids)) == 1 for block in aligned.blocks) + + @check("03_aligned_no_drop_recovers_all") + def _(): assert all(lookup[(rate, "aligned_no_drop")].video.published_fraction == 1.0 for rate in CHANNEL_RATES_KBPS) + + @check("04_whole_frame_drop_isolated") + def _(): + finite = lookup[(230.0, "aligned_500ms")] + assert finite.dropped_frames and finite.video.published_frames > 0 + assert not (set(finite.publication_times) & set(finite.dropped_frames)) + + @check("05_only_waiting_video_removed") + def _(): + for result in results: + if result.schedule is None: continue + sent = {item.item.arrival_order for item in result.schedule.transmitted} + dropped = {item.item.arrival_order for item in result.schedule.dropped_video} + assert not (sent & dropped) + + @check("06_active_packet_not_preempted") + def _(): + for result in results: + if result.schedule is None: continue + ordered = result.schedule.transmitted + assert all(right.start_seconds >= left.end_seconds - TIME_EPSILON_SECONDS for left, right in zip(ordered, ordered[1:])) + + @check("07_partial_cancel_not_published") + def _(): + for result in results: + partial = {frame for frame in result.dropped_frames if result.transmitted_video_by_frame.get(frame, 0) > 0} + assert not (partial & set(result.publication_times)) + + @check("08_age_uses_frame_generation") + def _(): + for item in aligned.packets: + if item.composite_frame_id is not None: + assert item.packet.generation_time_us == int(round(item.composite_frame_id / COMPOSITE_FPS * 1_000_000.0)) + + @check("09_receiver_cleans_stale_state") + def _(): + for result in results: + assert result.video.receiver_cleared_frames == len(result.dropped_frames) + + @check("10_emergency_never_deleted") + def _(): + for result in results: + if result.schedule is None: continue + assert sum(item.item.packet.traffic_class is TrafficClass.EMERGENCY for item in result.schedule.transmitted) == 1 + + @check("11_high_priority_before_video") + def _(): + for result in results: + assert result.control.control_deadline_misses == 0 + assert result.control.telemetry_deadline_misses == 0 + + @check("12_230kbps_finite_age_bounds_queue") + def _(): + baseline = lookup[(230.0, "aligned_no_drop")].summary.max_queue_packets + assert all(lookup[(230.0, name)].summary.max_queue_packets < baseline for name in ("aligned_1500ms", "aligned_1000ms", "aligned_500ms")) + + @check("13_packet_accounting") + def _(): + for result in results: + if result.schedule is None: continue + assert len(result.schedule.transmitted) + len(result.schedule.dropped_video) + len(result.schedule.replacements) == len(aligned.packets) + + @check("14_byte_accounting") + def _(): + for result in results: + if result.schedule is None: continue + assert result.summary.transmitted_bytes == sum(len(item.wire_packet) for item in result.schedule.transmitted) + assert result.summary.dropped_bytes == sum(item.item.wire_size_bytes for item in result.schedule.dropped_video) + + @check("15_all_crc_layers_pass") + def _(): assert all(result.video.published_frames >= 0 for result in results) + + @check("16_incomplete_frame_never_published") + def _(): assert all(not (set(result.publication_times) & set(result.dropped_frames)) for result in results) + + @check("17_reproducible") + def _(): + original = lookup[(230.0, "aligned_1000ms")].schedule + assert original is not None + repeated = schedule_with_video_age(aligned.packets, 230_000.0, 1.0) + assert [(x.item.arrival_order, x.start_seconds, x.end_seconds) for x in original.transmitted] == [(x.item.arrival_order, x.start_seconds, x.end_seconds) for x in repeated.transmitted] + + @check("18_drop_does_not_worsen_emergency") + def _(): + for rate in CHANNEL_RATES_KBPS: + aligned_no_drop = lookup[(rate, "aligned_no_drop")].control.emergency_total_delay_ms + emergency_wire_bytes = HEADER_SIZE + 32 + largest_lab033_video = max( + HEADER_SIZE + len(item.packet.payload) + for item in lab033.packets + if item.packet.traffic_class is TrafficClass.VIDEO + ) + lab033_nonpreemptive_bound_ms = ( + emergency_wire_bytes + largest_lab033_video + ) * 8.0 / (rate * 1000.0) * 1000.0 + for name in ("aligned_1500ms", "aligned_1000ms", "aligned_500ms"): + delay = lookup[(rate, name)].control.emergency_total_delay_ms + assert delay <= aligned_no_drop + 1e-9 + assert delay <= lab033_nonpreemptive_bound_ms + 1e-9 + + output = [] + for name, function in checks: + try: + function(); output.append(FunctionalTestResult(name, True, "PASS")) + except Exception as error: + output.append(FunctionalTestResult(name, False, f"{type(error).__name__}: {error}")) + if not all(item.passed for item in output): + raise AssertionError("functional checks failed: " + ", ".join(item.name for item in output if not item.passed)) + return tuple(output) + + +def save_csv(results: tuple[Lab034Result, ...]) -> None: + OUTPUT_DIRECTORY.mkdir(parents=True, exist_ok=True) + for path, cls, rows in ( + (SUMMARY_CSV_PATH, Lab034Summary, (result.summary for result in results)), + (VIDEO_CSV_PATH, VideoMetrics, (result.video for result in results)), + (CONTROL_CSV_PATH, ControlMetrics, (result.control for result in results)), + ): + with path.open("w", newline="", encoding="utf-8") as file: + writer = csv.DictWriter(file, fieldnames=list(cls.__dataclass_fields__)) + writer.writeheader(); writer.writerows(asdict(row) for row in rows) + + +def _grouped_plot(results, value, ylabel, title, path): + x = np.arange(len(CHANNEL_RATES_KBPS)); width = 0.16 + fig, axis = plt.subplots(figsize=(11, 5.5)) + for index, policy in enumerate(POLICIES): + rows = [result for result in results if result.summary.policy == policy.name] + axis.bar(x + (index - 2) * width, [value(row) for row in rows], width, label=policy.label) + axis.set_xticks(x, [f"{rate:.0f}" for rate in CHANNEL_RATES_KBPS]); axis.set_xlabel("Скорость, кбит/с") + axis.set_ylabel(ylabel); axis.set_title(title); axis.grid(axis="y", alpha=0.3); axis.legend(fontsize=8) + fig.tight_layout(); fig.savefig(path, dpi=150); plt.close(fig) + + +def save_plots(results, continuous, aligned): + _grouped_plot(results, lambda r: r.video.p95_display_age_ms, "P95 возраста, мс", "Возраст отображаемого изображения", IMAGE_AGE_PLOT_PATH) + fig, axis = plt.subplots(figsize=(13, 5.5)) + x = np.arange(len(results)) + published = [result.video.published_fraction for result in results] + dropped = [ + result.video.intentionally_dropped_frames / result.video.created_frames + for result in results + ] + axis.bar(x, published, label="Опубликовано", color="#4c72b0") + axis.bar( + x, + dropped, + bottom=published, + label="Преднамеренно отброшено", + color="#dd8452", + ) + axis.set_xticks( + x, + [ + f"{result.summary.channel_kbps:.0f}\n" + f"{POLICY_BY_NAME[result.summary.policy].label.replace('По кадрам, ', '')}" + for result in results + ], + rotation=45, + ha="right", + fontsize=8, + ) + axis.set_ylim(0.0, 1.05) + axis.set_ylabel("Доля созданных кадров") + axis.set_title("Доли опубликованных и преднамеренно отброшенных кадров") + axis.grid(axis="y", alpha=0.3) + axis.legend() + fig.tight_layout() + fig.savefig(FRAME_OUTCOME_PLOT_PATH, dpi=150) + plt.close(fig) + _grouped_plot(results, lambda r: r.summary.max_queue_packets, "Максимум, пакетов", "Размер общей очереди", QUEUE_PLOT_PATH) + _grouped_plot(results, lambda r: r.control.control_p95_age_ms, "P95, мс", "Задержка обычных команд", CONTROL_DELAY_PLOT_PATH) + _grouped_plot(results, lambda r: r.video.actual_update_fps, "Обновлений/с", "Фактическая частота обновления", UPDATE_RATE_PLOT_PATH) + fig, axis = plt.subplots(figsize=(8, 5)); axis.bar(("Непрерывные", "По кадрам"), (continuous.before_link_kbps, aligned.before_link_kbps), color=("#4c72b0", "#dd8452")); axis.set_ylabel("Видеопоток до Lab033, кбит/с"); axis.set_title("Избыточность выравнивания FEC-блоков"); axis.grid(axis="y", alpha=0.3); fig.tight_layout(); fig.savefig(FEC_OVERHEAD_PLOT_PATH, dpi=150); plt.close(fig) + _grouped_plot(results, lambda r: r.summary.wasted_transmitted_bytes / 1000.0, "Бесполезно передано, кбайт", "Сравнение политик ограничения возраста", COMPARISON_PLOT_PATH) + + +def write_report(lab033, continuous, aligned, results, tests): + git_status = subprocess.run( + ("git", "status", "--short", "--branch"), + check=True, + capture_output=True, + text=True, + encoding="utf-8", + ).stdout.rstrip() + lookup = { + (result.summary.channel_kbps, result.summary.policy): result + for result in results + } + lines = [ + "Lab034. Ограничение возраста видеоданных и отбрасывание устаревших кадров", "", + "1. Исходное состояние", f"- Commit Lab033: {LAB033_COMMIT}.", + "- Перед Lab034 рабочее дерево было чистым; main опережала origin/main на один commit.", + "- Lab028-Lab033 и их результаты не изменяются.", "", + "2. Формирование FEC-блоков", + "layout | source | parity | blocks | partial | cross-frame | frames/block mean/max | before/after Lab033 kbps", + f"Непрерывные | {continuous.source_packets} | {continuous.parity_packets} | {continuous.fec_blocks} | {continuous.partial_blocks} | {continuous.cross_frame_blocks} | {continuous.mean_frames_per_block:.3f}/{continuous.max_frames_per_block} | {continuous.before_link_kbps:.3f}/{continuous.after_link_kbps:.3f}", + f"По кадрам | {aligned.source_packets} | {aligned.parity_packets} | {aligned.fec_blocks} | {aligned.partial_blocks} | {aligned.cross_frame_blocks} | {aligned.mean_frames_per_block:.3f}/{aligned.max_frames_per_block} | {aligned.before_link_kbps:.3f}/{aligned.after_link_kbps:.3f}", + f"- Дополнительная избыточность выравнивания: {aligned.alignment_extra_kbps:.3f} кбит/с ({aligned.alignment_extra_percent:.3f}%).", + f"- Средняя эквивалентная группа кадра: непрерывные {continuous.mean_packets_per_frame:.3f} пакета / {continuous.mean_frame_transmission_ms_at_300kbps:.3f} мс; выровненные {aligned.mean_packets_per_frame:.3f} пакета / {aligned.mean_frame_transmission_ms_at_300kbps:.3f} мс при 300 кбит/с.", "", + "3. Пятнадцать сочетаний", + "speed | policy | offered/capacity | published/drop/partial | update fps | age P95 ms | control P95 ms | emergency ms | queue max/end | drain s | wasted bytes", + ] + for result in results: + s, v, c = result.summary, result.video, result.control + lines.append(f"{s.channel_kbps:.0f} | {POLICY_BY_NAME[s.policy].label} | {s.offered_to_capacity_ratio:.4f} | {v.published_frames}/{v.intentionally_dropped_frames}/{v.partially_transmitted_cancelled_frames} | {v.actual_update_fps:.3f} | {v.p95_display_age_ms:.3f} | {c.control_p95_age_ms:.3f} | {c.emergency_total_delay_ms:.3f} | {s.max_queue_packets}/{s.queue_at_source_end_packets} | {s.additional_drain_seconds:.6f} | {s.wasted_transmitted_bytes}") + lines.extend([ + "", "4. Практический смысл ограничений возраста", + "- При 300 кбит/с очередь обслуживается достаточно быстро: ограничения 500, 1000 и 1500 мс не срабатывают и не дают выигрыша.", + f"- При 260 кбит/с пределы 1000 и 1500 мс также не срабатывают; предел 500 мс публикует {lookup[(260.0, 'aligned_500ms')].video.published_frames} из 63 кадров и отбрасывает {lookup[(260.0, 'aligned_500ms')].video.intentionally_dropped_frames}, поэтому он уже чрезмерно жёсткий для части кадров.", + f"- При 230 кбит/с предел 1500 мс сохраняет {lookup[(230.0, 'aligned_1500ms')].video.published_frames} кадров, 1000 мс — {lookup[(230.0, 'aligned_1000ms')].video.published_frames}, 500 мс — только {lookup[(230.0, 'aligned_500ms')].video.published_frames}; более строгий предел лучше ограничивает очередь, но резко уменьшает частоту обновления.", + "- В исследованной перегрузке 1500 мс является наиболее мягким из конечных ограничений; 1000 мс сильнее улучшает свежесть ценой обновлений, а 500 мс чрезмерно жёсток.", + "", "5. Интерпретация", + "- Произвольное удаление символа из непрерывного FEC-блока опасно: блок может содержать соседние кадры, и нехватка символов затрагивает их совместное декодирование.", + "- Выравнивание изолирует кадр в собственных блоках, поэтому все ожидающие символы устаревшего кадра можно удалить без повреждения соседей.", + f"- Цена изоляции — {aligned.alignment_extra_kbps:.3f} кбит/с дополнительного внешнего потока из-за большего числа неполных блоков.", + "- Полная доставка после освобождения очереди не является целью операторского видео: поздний полный кадр уже не описывает текущее состояние ровера.", + "- При перегрузке отбрасывание старого кадра освобождает ресурс для более свежего изображения и не затрагивает команды.", + "- При 230 кбит/с выравнивание меняет фазу активного видеопакета около 10,0 с; фактическая задержка аварийной команды может отличаться от Lab033, но отбрасывание её не увеличивает, а непереключаемая верхняя граница остаётся прежней, поскольку максимальный размер пакета не изменён.", + "- Слишком малый возраст может отменять кадры быстрее их полной передачи и снижать фактическую частоту обновления.", + "- Поэтому возраст изображения оценивается вместе с частотой обновления: хорошее значение одного показателя не гарантирует полезный видеопоток.", + "- Замена команд допустима только для текущего состояния (скорость, поворот, торможение, телеметрия). Дискретные события заменять нельзя; в Lab034 они не моделируются.", "", + "6. Допущения", + "- Один общий абстрактный ресурс, одна скорость для обоих направлений, без времени переключения и без выбора физического duplex/TDD/FDD.", + "- Ошибки и помехи отсутствуют; начатый пакет не прерывается; форматы Lab028, Lab030 и Lab033 неизменны.", + "- Возраст считается от формирования составного кадра по generation_time_us; служебные frame_id и состояние отмены не сериализуются.", + "- Видеокадр с удалёнными пакетами очищается в приёмнике и никогда не публикуется.", + "- Допустимые возраста 500, 1000 и 1500 мс заданы явно и автоматически не выбираются.", "", + "7. Функциональные проверки", + ]) + lines.extend(f"- {'PASS' if item.passed else 'FAIL'} {item.name}: {item.detail}" for item in tests) + lines.extend(["", "8. Созданные файлы"]) + lines.extend(f"- {path.as_posix()}" for path in (Path("protocol/video_age_policy.py"), Path("tests/lab034_stale_video_drop.py"), SUMMARY_CSV_PATH, VIDEO_CSV_PATH, CONTROL_CSV_PATH, REPORT_PATH, *PLOT_PATHS)) + lines.extend([ + "", + "9. Итоговый Git status", + "- Lab034 не добавлена в индекс и не закоммичена.", + "", + git_status, + ]) + REPORT_PATH.write_text("\n".join(lines) + "\n", encoding="utf-8") + + +def validate_outputs(): + for path in (SUMMARY_CSV_PATH, VIDEO_CSV_PATH, CONTROL_CSV_PATH): + with path.open(encoding="utf-8", newline="") as file: rows = list(csv.DictReader(file)) + if len(rows) != 15: raise AssertionError(f"{path} must contain 15 rows") + text = REPORT_PATH.read_text(encoding="utf-8") + if "Lab034" not in text or "Функциональные проверки" not in text: raise AssertionError("invalid report") + for path in PLOT_PATHS: + image = cv2.imread(str(path), cv2.IMREAD_UNCHANGED) + if image is None or image.size == 0: raise AssertionError(f"OpenCV could not read {path}") + + +def main(): + lab033 = build_lab033_workload() + aligned = build_aligned_workload(lab033) + continuous = continuous_layout_metrics(lab033) + results = run_experiment(lab033, aligned, continuous) + tests = run_functional_tests(lab033, aligned, continuous, results) + save_csv(results); save_plots(results, continuous, aligned.layout_metrics) + write_report(lab033, continuous, aligned.layout_metrics, results, tests) + validate_outputs() + print(f"Lab034 complete: {len(results)} scenarios, {len(tests)} checks, aligned extra {aligned.layout_metrics.alignment_extra_kbps:.3f} kbit/s") + + +if __name__ == "__main__": + main()