From a2f66f5c091c91257ccab58486e5af125b2afbdc Mon Sep 17 00:00:00 2001 From: Philippe Antoine Date: Mon, 17 Feb 2025 11:17:48 +0100 Subject: [PATCH] quic: add tests for fragment reassembly Ticket: 7556 --- tests/quic-ack3/README.md | 11 ++++++++++ tests/quic-ack3/input.pcap | Bin 0 -> 12541 bytes tests/quic-ack3/test.yaml | 13 ++++++++++++ tests/quic-frag-middle-gap/README.md | 11 ++++++++++ tests/quic-frag-middle-gap/input.pcap | Bin 0 -> 12956 bytes tests/quic-frag-middle-gap/test.yaml | 16 +++++++++++++++ tests/quic-frag-unordered/README.md | 11 ++++++++++ tests/quic-frag-unordered/input.pcap | Bin 0 -> 7869 bytes tests/quic-frag-unordered/test.yaml | 12 +++++++++++ tests/quic-frag-wait/README.md | 11 ++++++++++ tests/quic-frag-wait/input.pcap | Bin 0 -> 10605 bytes tests/quic-frag-wait/test.yaml | 14 +++++++++++++ tests/quic-frag/README.md | 11 ++++++++++ tests/quic-frag/input.pcap | Bin 0 -> 27352 bytes tests/quic-frag/test.yaml | 12 +++++++++++ tests/quic-initial-not-first/README.md | 11 ++++++++++ tests/quic-initial-not-first/input.pcap | Bin 0 -> 43630 bytes tests/quic-initial-not-first/test.yaml | 20 ++++++++++++++++++ tests/quic-retry/README.md | 11 ++++++++++ tests/quic-retry/input.pcap | Bin 0 -> 18120 bytes tests/quic-retry/test.yaml | 26 ++++++++++++++++++++++++ 21 files changed, 190 insertions(+) create mode 100644 tests/quic-ack3/README.md create mode 100644 tests/quic-ack3/input.pcap create mode 100644 tests/quic-ack3/test.yaml create mode 100644 tests/quic-frag-middle-gap/README.md create mode 100644 tests/quic-frag-middle-gap/input.pcap create mode 100644 tests/quic-frag-middle-gap/test.yaml create mode 100644 tests/quic-frag-unordered/README.md create mode 100644 tests/quic-frag-unordered/input.pcap create mode 100644 tests/quic-frag-unordered/test.yaml create mode 100644 tests/quic-frag-wait/README.md create mode 100644 tests/quic-frag-wait/input.pcap create mode 100644 tests/quic-frag-wait/test.yaml create mode 100644 tests/quic-frag/README.md create mode 100644 tests/quic-frag/input.pcap create mode 100644 tests/quic-frag/test.yaml create mode 100644 tests/quic-initial-not-first/README.md create mode 100644 tests/quic-initial-not-first/input.pcap create mode 100644 tests/quic-initial-not-first/test.yaml create mode 100644 tests/quic-retry/README.md create mode 100644 tests/quic-retry/input.pcap create mode 100644 tests/quic-retry/test.yaml diff --git a/tests/quic-ack3/README.md b/tests/quic-ack3/README.md new file mode 100644 index 000000000..034bf4fd8 --- /dev/null +++ b/tests/quic-ack3/README.md @@ -0,0 +1,11 @@ +# Description + +Test quic parsing with ACK frame number 3 + +# Ticket + +https://redmine.openinfosecfoundation.org/issues/7556 + +# PCAP + +The pcap comes from https://redmine.openinfosecfoundation.org/issues/7556 diff --git a/tests/quic-ack3/input.pcap b/tests/quic-ack3/input.pcap new file mode 100644 index 0000000000000000000000000000000000000000..8c196ebf1cb17fc678fc00a4249e8e80e4b57bc5 GIT binary patch literal 12541 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 packets, crypto fragments being out of order, and with the last packet covering a crypto fragment in the middle of the TLS handshake message + +# Ticket + +https://redmine.openinfosecfoundation.org/issues/7556 + +# PCAP + +The pcap comes from https://redmine.openinfosecfoundation.org/issues/7556 diff --git a/tests/quic-frag-middle-gap/input.pcap b/tests/quic-frag-middle-gap/input.pcap new file mode 100644 index 0000000000000000000000000000000000000000..fc390302b7fd99a9c210dc2c74b5ba264f7fbd86 GIT binary patch literal 12956 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 LDGytJ68e7t_W41; literal 0 Hc-jL100001 diff --git a/tests/quic-frag-wait/test.yaml b/tests/quic-frag-wait/test.yaml new file mode 100644 index 000000000..c991f88f9 --- /dev/null +++ b/tests/quic-frag-wait/test.yaml @@ -0,0 +1,14 @@ +requires: + min-version: 8 + +checks: + - filter: + count: 1 + match: + event_type: quic + pcap_cnt: 6 + quic.extensions[0].name: "key_share" + - filter: + count: 0 + match: + event_type: anomaly diff --git a/tests/quic-frag/README.md b/tests/quic-frag/README.md new file mode 100644 index 000000000..7bdfc6de0 --- /dev/null +++ b/tests/quic-frag/README.md @@ -0,0 +1,11 @@ +# Description + +Test quic parsing with crypto fragments over multiple packets + +# Ticket + +https://redmine.openinfosecfoundation.org/issues/7556 + +# PCAP + +The pcap comes from https://redmine.openinfosecfoundation.org/issues/7556 diff --git a/tests/quic-frag/input.pcap b/tests/quic-frag/input.pcap new file mode 100644 index 0000000000000000000000000000000000000000..0ccad229f04b8b6547a64db5a3cbe9b9d2293956 GIT binary patch literal 27352 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 UZF(w<(9O-dR_}2^E))CxAKgOD*Z=?k literal 0 Hc-jL100001 diff --git a/tests/quic-frag/test.yaml b/tests/quic-frag/test.yaml new file mode 100644 index 000000000..e57dadb61 --- /dev/null +++ b/tests/quic-frag/test.yaml @@ -0,0 +1,12 @@ +requires: + min-version: 8 + +checks: + - filter: + count: 1 + match: + event_type: quic + pcap_cnt: 2 + quic.extensions[0].name: "status_request" + quic.extensions[4].name: "alpn" + quic.extensions[4].values[0]: "h3" diff --git a/tests/quic-initial-not-first/README.md b/tests/quic-initial-not-first/README.md new file mode 100644 index 000000000..01f9b4bee --- /dev/null +++ b/tests/quic-initial-not-first/README.md @@ -0,0 +1,11 @@ +# Description + +Test quic parsing initial (as per quic definition) packet not being the first one + +# Ticket + +https://redmine.openinfosecfoundation.org/issues/7556 + +# PCAP + +The pcap comes from https://redmine.openinfosecfoundation.org/issues/7556 diff --git a/tests/quic-initial-not-first/input.pcap b/tests/quic-initial-not-first/input.pcap new file mode 100644 index 0000000000000000000000000000000000000000..d001cc10b0f84e461f9a85c1faf9e9e97505783b GIT binary patch literal 43630 zc-pMlQ>9zx(0dv-ZhJ*3M~3Z7(f7_3cY3 z>B~cn1wa5G0RP_s0Ra5heUZ>&29OB@u=%g2e}<=&K4C7ezF41eGy?)a6bNJ*06+kM zAMuZ8e|h6q&iw@ZAunJTNPE=s?7zMSgm8o%zOD#C-v{7f$Y3+;zo(eS=uQj{xO4Xm zDbJ=1Wkx|J@xHCBQLX6zXQy9$=Gj)^y}*XJC$UA7^^_aVg0@rjQ@@DeJ1xe|d?_C+ z>aPQzyP;{W%1Z#UbAPYDaJDk3@EE9ngL`@%1p&ZA09@8jqgmAK~LRDTj=(8v&L1_V5rLov9>=;>WUxw zGPlK*p)v@3MbY}e?Vsw2W+lWu3u`=RyZ}4`COzTbX^dA5Jq<=H8i?#T95vk9H;#Z3EFN!2mMJnkwFq?ZQRfmah;In~sI@A-Dp1^+RO7{}ABBLg>2~GDp zJ4I8j4a^c-{#j~Vw=<;ndC>N<1-a0TC1*S+dz?MdkLg3fUTz{R<$KsMG3L zwQ%S%sh3$R^;kIOh;uw%AN~}``v@PE4LfV6?+Hch`+lXfNqtXE%)|O{ zPxO+o?6hy|N>o8SV`;jBIma3_`F{KsGBa(<`P!fgD8#ECGH~_c*JN=dA7nK&{+>e7 zRlYlSkQhtgZFO+MZ;S$n?Vj0Sd&!|Gs`W$Ssp&{VnQ8`wN>i$&WPd;gL2z7Ss-M&z zgh*Zyk|(1zUwBG>wEK2TRvZ#zFtI2f%x8>>%0qWg6aFStX}-RT@7}uAr!A`41fazZ z!*%a>x+%+(q+Co#;Edswh5PB=Mhe11wC^P7z5~^@hhxd5i~bLrlDL*Cu8uM9-BkPG zW@&gSNKgpv>q6I=wvVw7)!c1Fw|?Wh9ezPPE~fKFe88J;r|<8nP(<_sn^68}fs?PQ zp2K+mY-O#+DtbZinutkKCA1zAmWGoR>9y)g8Z|)ui@QG zEu^F;?5~L7HO`0w(;EMk_tI4V0*m8wh3WOh2o~@vzeLPz)uzDIPYAL%uX>Z}#G4C& zjR|GH37ZKkt=ww4EzwOBawS9SeLjUnGWdE|_7tyH33jwX)3SBi5r3Qz&*8 z%bf^c)NxAZNAcL2z~wdy^N{IDNT~1YhiunLH4C)JtCljQ+rOv%7t#_-;9&!m%U4~a z$(*J+33ede^VfD3KQ(hJHamam!7PCys>(5~p^OflqP}4)h!K52yNSA_kN?2ao-UP3 z*w=;omEbEN8GDM1-izl&#d#2};|1KK$H^Z4H7av)1TP(f<>1`;48cbDMVI=`G{?TM zhDNQ%;%|6>wC+~OR$K^ApQsV!FZ9BSfzGgxy+7Uko(?_I@A9{pkP7lH#-V~4F+BYl zf79=ZS`R;pn!bK7)V=iZ_LCvq(DTZ_U({Ej|Gl;cbu_A^ergQmpH_vWZPRpXvQgR< zlF$j=P0sDqTKrq#L4+~Y%#{0EmbNB}DCUxhNQI`1L|`|B7I;XFq; z!kEa87KT3JlX=&W;c8i7%t=Cw0o(VFbPt5E|FLwmsH6W^rL!q+?z^*L=00eOPqY;% z|Cu4N00n!?7oK3orvglZhR2G7kf7J0VxZ_TA5l9@R%nN}2gHK& ztR(uxKp>f@+8NWfo~f2x;G;irZeE?qp_2RrZ3jwETUu*p*so0*aD^5p|D)rf&e(N0 zyoB6s6@hyE)PJJ?XX&S7Jy-*a6boMc$#NN9G@T^%J|va%?nqe?<9ZjflxpD3Jjz(E z)SvZP+Fc@0s=2>NSURM>ASI!JrKD1bUWpg@F56LQ7|ceLqApsam?@}%I2y^SB9Pvo z@i2-(iB2+}pHiwX6ZiyW5$+l@SB+D%u-JjP!Uu?iy#A8^-fpmLK-c|@fdq2ulG}$8#do&<)fQ?cr+h~2F6-1 zM-pZ%E+0-L70Qu~mkbB3m|?}OIQ~mRw_`sNVPRgl1BX{vw$s6JbeA*q{tdCV2wn4`Srujt=( zDJXVPo1F5nJALsYT7;L*w6P&bNM6dL>9#46L>8b?PwAf0P};*rjX|~mzD6_oAcYL& z#O!aluYmN-8VzN3VZ1bc|B>#A8ty-q&gf+7|EhH6LRMd5HkMYLAQ8^W?Dp_OZ=z|H zDm^V#K(DyBvy@}E=r`3B@$KL*eA+q(aj3Hy9*RXO(2>&eMmckyjr8c!&{@!UZq0pi zxD{R_XuCe5q{|zE^dZDAb4_fl8k0{}!s?v%2$XKKZO!l~G%6IJ?`pzqQCie5G>PM| zpa5AH?HZENH`G#7DVw>*cji%YO1)jSf0-dT4@ko5&zEr2Y%8Y_rNPcy=emsGCKeo{`z7}~WAO*!=tl4Bd%p!`sZ2_NqR)jD-PMt{) zuS#5IXonsE4zVA`bc3C?w5g1ku@7Mj^H-3@|f+to`|Ua)UZe z`h8pmsX$)_^j8q|KR3E+pir@{G=Jb@4QB$3fG%p`VmD78qc5B^SD{sZo>gdLee#su&E-Z87I!hwdX z`JhL|aI!vklAW&=r`hY((N;l{Gg;sp2H24l7nI2C6uP5K@FKq z%L3Z-5hm_XJDd855qn|f^wYK=(!qd-G92|__wyb95lC&*Ay>@X>+-J*L!JwXuAXGV znexLjTy<5OXK>+4#c+e8gF3IL6LfqLXPo}#r72Yi0)I(n1-9k`wNnTc(Gu$A@ZF+E$~Pdf+pxGlSKqwOG8H`9<#E6w1cV#Wjnsi85=;& z7!7D+4!a+Nzm41J?lq2b9_%QKh)+78=C;-zJJyJGWw6z=za}B)(w%F=5;Hv{O;k+< z^4TXRpGlunllv&3AdZ`mjOP+c)$X_y2UUya4aP#e2rnni0!`BmOJJAYsWhfyt_@eA zTxT>p&-Qkgi4bCa)_LKl?a?A$;WH|#WY7rjlfg7vkV*`G>~dHSKde{5f@HPW4UM|~ zpD-j8skV}6qpW|VLkxlg`1qG{|IB|G_g~)qOF96M>wl!|60 z@8GN(GM*F#n0NXq0S^+C-wnk$fQ$a@X7H5Jx+OderB3Q(r*af=Shrw*9jq zw6D&0U&vf+PH6Kwa^|Ksk$ey2L8MgP{C(vFx13?&3Czy$Z2r>nDNe6jUAn}Wm-#Tx zM?Tcx{fr~71r70ocV8ofH@3~n-ITsZvK~J+^;0|{tGNs;^1d}m?H^ta3>ntqt}ic{ z;B8E?lgF4&HZWM&B>J!EWhMSDL?plii!5i6PRz(=0c^gn_DD}i!xqP<;ao#K#n^>O zF2&QI^`H#%mO3iGT4~yFvxKAIU`^^|VPtz#uK0hcl>%VN+yJVES=Po!4uc^%xRF3X z_Ozi#BN=x_1tN4PSujHOka;DaMgh-KiOuefMzTd&1`i$5uF4h^BK8xbi@i>&wKM+$ zsa!}@v~W4;F%rzL3O^fnJ>I(eNLe+N(#If04SR8j`Zu2u8k>?#LVrS=0Fx-&AX69^ zuGmwcYxywqN2tdpua^(%NFu#-1b(uZ{%UmVRKth0K07JK!QMQvtuEuntv*X|cJLzH zBt%S*R7gwBiPNXoh<`ec$zZ6^>yXG1EBZYR!`Q#O#7xtC*Zf_PDBve*X{!&w_qG~a zZ51_+dr1@QQE&=a?US;j5w=46BR>q^l;Tg5ary&H&-Frt*D;~@CE?! zq#nMs$uISid{Gm!D4Pt4q?Rh`lb7r-2bNA2!ajUGcaOjeNzm34spCX;KMy6D7tbEo zG`#Odka~BrK^m;0VCk1ZrxN*>KOdcA%%R3)GuAE3@uaZB8V=|N(^J9NlQ?zO6_uBK z*fH*w`0|ZEPzIWqYd(m}6~$xU^eTx~8bTF=2zppzj)&Wl0|5x8{NmXD`S~)ZQ>76b z2#HyF#>g)~Jk0x+;)PSSlRubK9?-7YeRCwxfeVYFu7}@uo=vKiXRAmIDkeQ&&DdJz z!!_J7fQy|xp^vku{hc971A6@nA!&1AER$6xOv7){!}k99cp}huPm1YT9n<)SRE`{ z@~*;dTlD78-MDIn8#Q%YaXQ$!u@k%lX5j4lYSFacD55s3g{H0~4DGq}8L% zl$SL)zJoY;AU|*Uk|ld~XRDDFdSUdOe+&i9V85$5lC%rLJ3STJaQvl6K9B90C|y*9uWcKg7&mG!Zfq!A}EIuMMkv9l% zcTJgnQH+)}EzULc{1O4EjR`F&ZTuEhv1v~cA6L)U@)yQqDsi|a$Qr&F`di{#I+0#~ zN@30sOOY1E>{U7g4=&i)>MG@Th)z%BU~>$?oqlqx&oG+_QQ^vVab>(%JqgS_N zr5GW_VEKVg2N0OTey%70Q)beAa)Q;n0$D#GTJX-9q%MRGe?W}<=pE~5qd0UR6SO)9 z6haw9ySfpKA*IigOq`Jrc3r~WH+M+FXp|md*m}QYdh8DQ*vHDwHbg`*$wx+5K{?nC zx>o=*xbv-(=HwpSTCh5sxV?fCHiB(4-1APjxSwdnJ4%~DnHg}U%n;xmrr|E5dZ+NC zwh%@D9y$U1QcZ)}??KznXvpv)EkDn(A};JNhg9vNc17YgB_t?!%dFBxzYW{9AqO*L zjVE6tZM^}H!$oIdq^m4wLsU#{Oj&$3s-SLT^$tLg+v(Puh`PFa-JyXm+?BPuzpe`f z0O;$3^u58_BUDPiQE2p^nUAHw35H7^M+9wT?da2i$_6{&{@c6S1UKh)uvd55DTa#7 zGn2xERRmCVQ}P})7OYZMc)(2zAJS=)o=_eGWbY(f-fz{YU7X0Q$VRT2J2vxUOR}C7 zhVzJ(dah2#S1JOJkP`E&)V(&@2syo$jx-e9OZtaEHVOrLa)7QoUdxHE-|Kc_2~KVm z{r8s*&M}@thhimE`A`*WSw)=u7D8}Dqh*-z5}xjX7boFbt>0QT7Dcb?Y4Y80#rIA8 zi0rwxKZSKV=yzip))mJ=&9jLPNcg)bvzL67f--d^5O+xvPCVyB(;qMLZm|B&kpf_M z(%IRb`JOXoRkU=Hi;ExML&!{@OqH%`!NVN|>@Pg5F#LNO;oU!*&nDdUHPZ%Cjith* zH^$|p_NbAbT61Iae?!YhsJ_aGuCWcF6Q9%Zj=ew)cCI!KID3c!bcGtQo3xTieHr%N zupzwr8LxiNyC!_HZHxoX%2GUR3=p7={s=ty-J)9isPeIf5vww@9y%IA2V0<94mwFo zMXMq=b7ei3iC0)H?e?75DGd}rXJoV}ugjm5a zFs7gqGuRF!$m$~#)J9$as04hy?m$yA0?UcATBRHMqFkHf0O z1{+Q;lkgeUbg`Mj(vVB70Mq|RLX`irgn<9AgxdeBgnzBC|6Rg9P9v20+Lx~6O`i0% z%o1MI8BBx&(^9|Fg+fmAMd_+s1ZFh{ihNy$(B2=W4svs2%(ZOS7z8eFOgedx`Yfl0 zEX5>bAy8Y)lP%FIspoz%?;^H+W8Y66-EEDEw`R(dG%#1@>EYOfK9&&>J@h5 z#Gue!tFf!cgrHu%9=I|JLgJ(S7Xk@>sUvHM3|9zq^qRxJ<506GB?&60Oq)3vTR#Zo z(9xzuJyG4oz8%Y8GBLEj9E#2xKO0?-eTvdtr|D074R6s;`#sCJ$?`X-Maaaxk^R+> zz1|~+-qgzYSq-U)Wedup;AkQ%2y~ULc?gcj?D`joJ0Zq&qyc0IfknE|_A#e(c0bbq zO`18k@{ObS5Uo**d|uAAczQ14i`0)gY>`u&G9q-SSAV@(CEoN?fxMme=^V}i+jvdB z*bdOd$dDIX>*hC0RrBQtQqC6kkK|6-=Zr1;s&i|?*=GSYT#X@ffcCkD_t+%OLu@uX zkeWAQvQ0UIO>nsl?CLd`(NVuftP~`W~=D;iKvrT0Qt=WfSm%v&1DN#)$;&x4~ z7UY%7n5k^kS#5m;sm9B17s7>KHoJ@$iDn}Bu|!)P<=u9b3YS_|?$StG4nf>tsp0WH@dXaP)a^P6+hk z4WMskuAF2XdkF10^~$jRP)lq8H<&#tAc$E+@qD^t#DgSRBj1|r@;?h7l)C# z6<~KzW$pSQn}MWvesDf8u^{o?NHqsgb)JHJ;LruF9e%=vhQD+iYY%HcT8^(P+JxV% z?d@IU&#{vPD0Vx{@Um8b9c#ZJ4#L3c3Hm7LyGO;OzwS zdwx4_YrxYuTt>PFrw+}Tb#3p*(N0{zTMT~4;oXDqBf2HbGq&974~=9Uey|&R6LmpVVp?JB@aY=(Pz^Oiuw-3Ysm2(k@|^$yMznLN{wKt#}eV_X!hna zPz1OXDZx2n&jhsVdRol>lgRhhkgn_cNqR2w!Uz69b|ZDWq==>?ADA}XztFeGbgn6j zf{kWALvR#V0y+AH>#>7IG1Od)Sl3-0}i4nM|; zO8(=T`Az$egsA_L(C}Zb{WJeAA%Mz%WkS=Z|G$I)0?dL^+V1sb?kgGThITiA-g;MP zly*TCFH#92o1D~`l}|n$&dOp(3}3w7hQh1z`Kzi?a1^;ZU~?Y^y60m-ymh| z@*jNUI?|W?*@Cy}S*~dW>~q3OD6SqceY+Rt)3B$b7!ZSAth&L_tFL;P`znx$s49xO zy6$Wf6uU*_If%c+kbfHUYeHY)I)o#UN?_L?0#-SQpOtLvC3I-YaW7cMPh8?}+BpcY zU$erxqxbH#ZG7-0|0Hzb_+eMfzMOEKjN1 z3YecPEWPlv;)7l?a1bMK5{a@A_ZF$6T{6HN#V#fQe3{E&fPfCd?p?r0VWHs7>lM># zd{cxsre{7i{5s3%a(k(`Gzo4oRLD&6K=lLFd>;2wy5sD&@m-EDt}Qwm9%t-oXizY z%uBOdW@|cO%33qC&9#bYr5lT{@ttl8{?^svII5>dY!c-M8$Mh*W8PN`VT`9IIWKVt z=P)9zR)IL)Gi!bB%ncakarPiSo=i@*yV`Z#TdcTgJZV`8taEu5?!9wC&+jgbYi(&B z`f2IcD3cZuSI0~KCm6doL`K{jZ$NF^?9;}|!dybj)7_h*^Ln`}UlvuwjJuZiyrgF> zC%dnR;_mPd$9zvF|J)v^0{Z=mzygAP^_>k@njmxVPP`B*cVSpGm@k-)Ry=#^;8TiK z21XIOp^@7&%@VrnjJUIsD^AfbYo)!;f(9R(%*Q_#g(48D0U zPguKAw2jyUNbrqx1>i1s46nC05h;2G6P5PA&16#%U*U4G22c^XK#@KzJ}CrN-QYSn|<#1v=tR($JO;fJe7o(o-4yA z2j1~wHKEC${*_Bm29!BymU*Qp6X;TAz45|Q@(5wN5yZ5;y17grHnui>ROv(L!e;MD zOuu|ZpPVfg3h=?Vzm!0kKG<$_U>D$Id#|ZPra>JjC!%SQd83~JJzbVjr#q+JTzl-SGQI^1&%fts&j~F0*pS?RH4!w9 zqmez|Fwpe$<^kpkQm~XaM1S2~fcf4t0B5C1hqDnuqA`fEMMO@h?QeM!FO@N zEZx)4K1p26Zv|Nm`QdY{8C5iG2cvH?X#V zKepLueR|Xna>A#p1o2X7-+H^>SD*?>#yGf^Jla8nB=5^q?^g8q;2Lv=Y6lgi=MZs_ zgvIv3ieepJux5L*^-~=nzIrAP9iWZ=dLIBP`d;w5cPN?G!cm0%m8D#ca4U-9Y5b6xV)2&~ z#ld(-Mt6cq+bO+;OlyUnP-fi!yP>CtbRS2YPAi&DiomS=rIa%a0Ugzl**|bu!_Y?z zdI+U7kw{hCb{|>E>FZMb8XoyKEfPu%cpyKLwQ5{dy}i{pv!5|4|Cn3Z6mMGNHxu9; zEsi>E&}WlNaxmXNayGv(%vyd@>d~~_;9@)Kj@a-Q4LPXtjByWnn<y ziBYxd=4~kgpCPpm=i#7*G>Dj+vpNs+OwqL86QW}WaQ^{=Pp;a|&rnyVJ zGWxd0Vby)tvllJI8tjDTmc=uTNi1x=9E!>`7rYP=7|DBoqwJmpqp1r=Pa{_O~57vG2= zjPHaNKzN4fWD!lwL^*TW^3@2-X3^E-U!a}uJPKC`~7$MT|PjwFHFg@6AEBCbW zcR_?rHAkOW-Ou=gfp-Kd*CB<ut*NFO> zl{X-Ya2*=dPamr!6RetUpcY?*@i6lIeHNUx6}J~@6y0u{FmZ4GW~`?VY!s!L)I0YX zA;$islfV!L_3)DV%REBPieWO7Sg?74AP0TYzMXIqF_^i$(g-Isa?_aUwXBqxD=$^Wu^x%S zFA2*04Wkz!2s7|gl0X@4FnPO_v=W;?Q(B@n^;dzqxV0PR!`9}QIF?CHwko$o)+Vy( zM3ZkLS7VPN9!Adnp`DipCO8A2Yg0>krRF!C;!_;&1i<&@C0)D+;C^?7LyZF(hcvl+ zs^wdzNF(DVQ2^pb0+fYzW>}eR2>H2e#&aW^@0Jd;E4b&2>9;8^?JD_OXzAgNqghD9 z@X*bmc|OC`hnle`B!tjJ3dt4bXxn!&C+|yp{>;h$CXNh@=dCL7NjJ1RKTRKH7uO&FFRn0hq@%D+tXX$|}3iSbCeF8l=4w|W)pZ!P8T2+9u$DH^Ws{B&U6 zUf&c!xr#Zc%~4JaL6V1BQ=Cmk2CYl|={|>UMSmg+<6p2cm4K|SYG)rIRa~lA>(nAo z7AFb+rH+vbWqlw-=in_SzJ{wDgPhdvw0hq%HJq=TVCnC#KVc}cL-GU*yLMR;A{Awd z>b)m!rS}$OrH~EOWh@} zAv=9LNa1a;>nwR%Fh~7R%zOD>t#pxAa0s;vb8T0TzL!_3HYt!~iEM?!ux2{GFk?9> zhREVDw6YIdR(;skr3`*68@)sT(&~w zL7+{59J~q6f{JT_z0x(;X6W#?6cNC+aGg5e51%tn4S%l&B$!Wc9lWAx9fVS@v_8tr zKa%vHjRI^?|8WXUgP8treY~RVCHiT!R>Do2eOA6jVw`nx{3qQbPq6HCfWLhOw`EP; zOk%`NJg4*5zW32IszSlj%bxG2a9b<38zD%LNw)iMik|TLz)%mcSKh)GZTb?@oG|`m zE)!odfL0agnB+}%!+NMoTOHUL*PYs#!$6h?`$xa@>={x`qm)?_M}A;;>yrScMymlF z@@^j4K1*3UW55&KGodckpIg`UtEO*g?p&*WP~=Ml!%x9&?-P*kjpT>XpzC}qd-HMQ z&8f0$7Icac+0*11ojAj^5FLBJ9MT43Aqv@Hst^Ip}kN6n^O zrOqh9lRQjOJfpnWPzyc$Tyark&SwgRR5ke6%yy7G)nbrJ`})Yc~P#2mfsagCENEDrYt^+6Ku!B*k{t6#>3G z_ag|qw(KBZk|RYz?QQ}pKk0IHi=WsJ^0O@ywM=Iynz}IcXrL(%r~yjitrwc_l$;8J zQiN~C?wM{TZzn$c5Fum1u}~JV)1~zj6TVTYogBtn)Hb zY1&~0JNK^;EV~(kdyPgBP_BZW5ZLRbI3)x$+-(dEid!k?@S@6`)^ve|}VY5YfDeCC@q8cUFtHo!^ zX3ouRc9%|{xri4y4&|_y(NeGu6ILkR`^9lb3;oZm0ODlQ#ra^0=qHVL>sq=n>W*Ao zVYQu3q+WRM=bt&n2&U@fDBS2TZV%g_)laY6nf=qhAUw(j3EE;Vr_La}8f^Phw-F$~ zlyz1)nxN~^(5kN#7f;?e0({>zjwS~#Kg^zNGbJ5kK7u_8D~nu*{A0*?!s~$>b)i-m zidzno^a|2j(Pj)N847~*!`Jwm{Dt%#v^^MkziDy{T$CfswjB3 z_;#Y4=g{&j#<_W#4tuqscLGp{1ds9l5rd~X=5<^ide4I89GqTryF&X<8J$TH+;yt!`FXVf^HkqNbDj zU$TE2E)NlOVBoVviVsEC>RnmPhxPSBydV1k8D4%o=`@4j*w;+vf79z5%O8ofPqTxy zex$5L4E7x%ER&yZ)*T*_qHHPJoh7oZHMRwOgxS~6ZGdU0gxVCH=($RVGux5R*?-eJ z@}mrUjbO5t%N}qwG$tHGIKFU>f6XGH1~W1oBE{OXso31yvvL^ER&i?^P&nwj*)cSx zNo|iYV8DSUS1F-gTP6pV%mwJWk|-WKgyX~84Uk*X-7azcmwS5tRy=&q=&HG3?{sAZ zNseBe=P~5mW7WSlSl4Sakd-@*w5)nc; z50HZ5KUj(6&DV3c=XWTvMBIy6y>MTK+vWq==vZEoPy?W4{8R^S6JTyS+ zuUlYmEOyB>Z_;!@#&YtVz3w`!eRCNI-h2{nn8WmipEhQ~yQ;G=9c2!rDVJ*N?=~d- z@Kzn5aUb!Ly+p&s(i&p~BUtwTPCX?u$}o1v!05XG>0`24&g^$yhrQ%KkGxf+UH&dA zO?0PLV?kIz{wynI8m=qyvz5;}@f(zW5EaayW*IY7HY$MimW34aH`c7^=pL1~&cbr_ zZ@`aHNAl3$Q*iTawG9@l>@sVWk;plm9(yG*9$uz9ot8eBiS|tROZvHO{UIw6lz-i#byaU$cq?r7H>XT5d~+gX#qcXK1Rl>flkgl(V5D zFOW$qTeV(0RulFUS1hUfLM#>$IjK72uXkrLLWlkU9#2LDX#T`t-8boFizFsNyFECaAKxqr{NY%z zAe&$PjIKZ|sz3eS{OdQdID&aR8F5Dxhwp&8|DLfRG$tW|pGK4V20d0e@5)P_8&GH0 zL41NG@oDB$VYPpqgor@#wY5!E7d=JFb80&N_n8lj=Te-H^4t5pBZ++&Ks)6hB6|c4xfuJ@B zj*;04D9qswG%i`Al}MTs@sETO|7QvRw|$%&@bcd!^f{8ml(XuTY1e3lxnKsWhTbN! z+*q2(Y&BhNfS_^iF+rQQ%&5Bd2A$LP0OxtbG8P?&OCLR;)&mF5KF7)1rTQ8j&4GeP zn4R^7gFE;YHum*)be~`8XbEa0p2Nd2LY8n1HAXy~lVBOk7yMTfOT_YJ_%%(|zJlx# zRodtnjTcM<%fwwWCf`poExe1cV8K8T>(_P%SEHyzNuakft2#{dR}ngsmKdq|l3;fd zr0yQf((3vwF#uv=#m%kFtDR`>*Ni_e5eshARatNtqtbKn5fObSOVH3!)Oxe6b6#v> za>EO85f?N^l#v*bN7pp=19PnuhIfMl5j+FT+`&U08M z_g=W8-i5IXR9usL0`i`R5adQ=IHj$`=32)kxN2%;1djIB(6A{;n6v?XiY@0~r06F* z@gE+ukWX}Df3X&~g)b=vj@R5|+D?)f>q?29g21m1f5i(O!EQhvtX`42+tv54B%Rq3 zLDAIJj-mw0`-zUOyknPRA;?ElyPxjI6l;@CAA}KqHWoH0oxojZ5Tc2X`Y7k z+sVgI`>qYZTu^eo%Qn}7!$&12n1uH(dhM0G>PS7yQ5flG#ut}%A*P#=G%@Q#X@f;61zbTF45iF&>C+B{>4 zdXRYLrpbl4A^=VL00*H-lcOnOhC7tD*2YOSQUXzqHX*0P(z&wE#5>@mb!$q0MdZx5 z#A3-b=ssH8y>e6xtWPR&mu_ogzZ3@6=094CFc~7~m!lx&sD(2HBLz?s(@~}4TAg#? z;LhLA1cp?8mn#P%b*a+j=i^xvUi3zGV5W1-yg(!(@T4Z#;H10etS^~sus(9!ytWdB znj_C3L2r$q&nxI)8yuuEbT~x)T_l$?N`4b=O-$X)Z_}<=-{Hs9NclVh@!+W};Z)=e zMlS3fAiNMAl+r)juqw7{w;opN>Eh2;D-r!vXoo`N=Ce1T%)4(UmHtO7NFBNl5_Es+#NLiwKP-(5u$VXT2Zk1Qip^B7V65Osz8xEvtF z$42R&gS#O#?ieF#DEM72h~u}ANf-oKJ6+%e=hW;DHs&=;(T5yV;N8S$B6joywJUUW zW6gTT=R3f`&l!+3b0JFsCGkW>l62kP;ErI%wXg05Zd~a2dA}=ORMVGqs&6gxbWooo zMS>y&A-$w|M$$X#!9NBhMb08Y{3rX7pb+>Y9#Anh-$IIIJ(|ryL(H{xNGC`x!#4q215&@V)+93 zM?#r@N%)`k@!M6AmN1qdX+U96%}+B+$u(eWI!%su16B2=st9>uO!+|lV-q}$5>MNL zMU3_3U%I(eqR9xk3(b_Pe{BT02mOyzD01t6|38j_I`Dww6QXybeCT-H65s&;1=12_ zrxx+(82)0=Z!$wQES+d7#Qyb!G9#LA6X5BC7&N7Aa2!DElR_aVb<|+^oRi2)bqF}Z zzRSU$Ms%S3Kz$V}QzNx7H8B+)B>Y4k_d{aB;$r9?(RKyI)kIivgFEItoEjr%jXOS`?ng~?_x+_KoHjPy*tk-r~VLi7l;f;34tfr`#enJnQd^bJ&0WDft-F8!H~!KJ`>g!sLp;7FV@s`~QxQztfA zj8Nu0x|(kmKDvGvc96Mf0}flT=#|wILwyxobnpsaz@d6;Q)>9>nD+IoXv;UclfXrt&#})~j4k zgHsSro-MbJF+}Y|uEU{}GF1n#V13{fQwNwD<_Ptq@6$wqMiyrWzokVxO~0e=l5!-X z6^`R=pNvMUs?unahgH{L9X+Q((U(VBt=`E)O3*@5OLD1SM4;Nyu3$?mUrxUUPn18m zx?PIZxZ`3?kURls&b8-AZ{LdrFt#tK2+c~&Il|p+-djsa}-W-lJXC-`m*Z3rWy zy|;32jMVPMZb}6N4K?ofW+;EKP=6ftq8;OHmj9?jmh^)z1BMGq+Z%8VKv#TSjPt~{ z*KQu?j|y7;KBO7c4m;p^yC)Hg^TA;SQfC@FcsYF_ZmJV*BVG+JBj{*~B)ClUl{YV) zS_=qri8auXie~yePJ^)pfG8g4^{l}gCCGeMgNZGoY#dN(q;o!kMI)C!3~BRvRR^vk z9QRN;jLIU&-rIhhyH6k2berzS2EwD_=TXQU)-ZkLY4GI8PVJutV{Mkqw9(D4XU>vN zob=mJL`}2)%~Y%2{qB>x%asl(8I(rKNMC(Tfhpn_Nx6V}YTq_NxLgaM<@O_n0cd3J zuP}y0tkyv=^ERhnq-ZmhhNMLi@E&!pdBd(@jACQeV`T}; z_b1oJd{jm_a>5vnt)&7f*Iy)UygYy75nZV` z=Alm#cJuSL#U2JhJZ{&*gjHAnTqUm=bvcV*A;82<%+t3xgqNMn`&VJ13afZm=}O@! zpS18$kfNSjvCBujMd9|#^B0B?jwZJE$%97<<;bo5kvhf)G*qtKjo|Xy^hJ(~oNU~< z#{fb>vC4zEpLyA>UbKqEdFMAgs|xPwcwv56oMu3ff-J(?Ad!~j8omJP0F<@ zi9KPCgq)wd6=?z)yC~RhpneE=jJXWrbE7rQsw+a5ACovB^Leg*zAGb5d%BF}hoxUt zjVEiU*_uwF-aQkSYNXImam5RxW|^F8acn#87;f5vuu^`^dos1a45;XmPPBy@r1nXe z?KmK}V`OhqvHB48sSGsk=8v61;35G^OFE3WRJm5LNG$yN{8FBi$59ta;hCNQR{2Ll zu>XOCC7=H-g~~vY=~P+$91H_P!g{VH(Y{K@8IJ9on)s93ro-g!Ls(Zinz~-r48Rt_ zL_*$YTbib~?ssjJpXa=NR_A}x0>%e?WQ$}bcuGp$m1kf7x<4aJIM+>?+iY549f2*G zr*r=V@nZQ-Y*me*gU4Ol;xqO_LS)2I4U9el<>D(3<&>(-1d5I|KWn)YMcBOnA!JrS z#TU#qQd8V07~2j$N5L z5=Ni~#L>MiqM4j!Am)qt3KS8BA<~}&wx5oK1{#=&^FY90YO#vzW1zq=m%ARynGliW zj?|~lB-tanFFK1R_}5Y>dix65PF&$tUL!o}>)wh*9X&t3$}#^xoZVBCC|!bv(K1fC zPT96?+qP}nwr$(CZQHi(n*MIPCnloj7wnsi74MT7nK@Hj)~BCM4CGdt909PArkWFw z%P4N0KxMSIyPDI?nh`6*onZ&xt(61SO*ypp*b&EX5nHh=1Xseqd=Ds*Cz8nW9?NoX zBUT%AED8M^TB~Y|FGMa+f3YLZT%QR3Df6SozLWjdQD@AEVLe#AUQikDQd?u*K)RFG z%Ks$2E}XBXYx6=sTI}xU{_GeORo@x^I&1kSg5QQFN<80fX$G>C3X1i>EbNdr5F+c5 z`55tnr1#Z@iCsUBC4#$rH-OD`6oA*E=mkF!o5tLHvNgR_nio8~9f&fLFa6z|Ha~?0hA_C9m&?`aWFOLFfGdoT_ zRVCvRx@GehKh+~ODNBeBbfbTPP-2>XpafmyYKJYv$8_ZT$)2-yCDNF|7(;>GEm7Au z8O#_Wx}OrjlO`Vpf7FA{l62gcVs|@no?x`mIA6&k+9`J`3Ub!3o`|ahpN@v7B&kET z?YFwVZ-G5#5C!u|Pq{Hg^fK<5MW)a1cA6Lq8aB1HPygyXstpF?Ng!f*S*QljA>$5L z3h1MaO)QPBoOE)(@7dTVK6aU2Pz&WX_T6!c4HsmGDM z68mjhA~X4S9TVC}beaBe8uXG?Y<;*xXgWTRM@j--=2|tmjsY@%_7IJEJH53l-raQF zEDBd7g;RwA zy(H*?&?eaZeT|Fxm|P&Qe2Ri4=+NhzWvO218AOaQRnDJ8{Z8?!9xB5D7KbotbIOrS z*xTa;9u;g+i{X8nWvl6mq#1d2nwP#cN8sCiC?EPTjEB`}wN>$RGU*!MdXH-$2ki&c z_2|;+K7^-WjeT8Rd9xNt1g0epHto%9yQiSO$0LfyNAJ~a;lbfL=~L$F)06Hg+^yb{QE0<#O+vLsE!Am+_NP~G0!J;ejKi^4sJm*kx<;DXVwI(8p&Uup8YHcA zmZY~jntOKsK$3Ey%V8+ngm&pfE(4rA$Nh7a%Mr6#VVoYeZf4xPQdXX9g0D0d6N<&m#;*iySvlKH)z zGo|_3kTh?z584#uYBPh!s-o%6xPumbFVa+0@ciJ~QhrFF7-Flc*!!ck#RiA{+_tTq%1A=9(kw)_kH zyvR@NAV@jl`OnFP_&BI9gCEPBvc^H&YikDHUrh`Q{`BSP^g2jfTz_Q`T0jcw*o%{x zV%~%z1QopqvdU6GzNBC&g1A}ViMzoxX(h)8r z;36Iw z28SZBrN%Y*87k5`rb;+QPtP1fiha$e!4L`)7}`kVT7C1wQ6)>Q4Kuxza8KLb(Nk4H zXGBgVzIxFu>!Fb#MCMz9%QXw;F~pX{F`NormxdIHu&J=s8$+@Ga2WCKEMtoFb8{_@ ziWbp-A3@l!T+N}M!J9~DRflhNqQ_-weME*}M>%EldWMQohOm>u`xxu(p#GulS`@In`4%%^1^%#RVsR@F_uQShI2 zfC+&g&i>@PQAGgOP|Ra$5|zZ!$Qi*@@;CvA4ioB7Q&LAv)pA}Q4gUKI!{+HnZ{ilL zP7G4KJYe{bgpmJ|@W1VGHEIEeQWOvviP~Mi*;7U2At5HLFL1pf7nyaB7Zrt!XvBnP z&&&i%v!A=gTT7tkwRp6L|HevL8^ zKLj3bkS^6L5n2H@s!t`~pjFZlB^k#}kB@at5D?ifQn{X0C%~?Ye|=ybCG@-$9pOv* z-lW(f^iw||)v|=wjq@;-^e>FI37SY-J`5lJ^z3_OP#24 z^SOc=N*}2zxCTdz)r5)nZf52V#bNH1_iIHe!I4{p0klDc>!#D5z;wC+%%Z);ji2a5 z>WTcj<*uZh+4~cnw~6{*-qTL&wbb7fkOw-BUSqAw{3}c_aw9B$F+Z<`&;4YPgNX{1 zA+hoPA`@>rlJLO3XdiiVLvAiAbGTRUokGUpD4;t><1`S6jgMB6xL)i@T_rz_1cYkT zeWa257!xlcj!ws5>WBdlg)o6=nE4cv^LX-#^pU1q8idhzDXS*BxhEaoFYlm4cTs)V zQkezK_IUh!>+b$SF$6uFbq#%+W}>)R;yh`o^|o$c2^2xf>R(%(g+&Z-bI-?R;z@BZ zT+4A^Rzg{uVE;)YtOi7wtq9zw-I#PmMC^lgwfg?snC`Xo^N4k|FUK#HD9q8VnNB3Y z#8f6{#JI?keG6LCB?0~Mxw9eI)k2ErRW@vX0^a7jSRGviRvW0s9YiPnNq{@^@K@Bo zS`<6YFFsSYhp4dtrPC%?i8Q-y6auDNt4Y)U5V%@nL*Nxpg~4PLP0s#mkXGlTp)(P6 zqd@_!sTs#aTmSE;l*b@Kjbq)D?$qHnSYSj2p;+6J=jWIbn2eytK=)`hsuZOdzE zC^=i77mir8z*(vhEQ>B~+{1S*C7lxoQop7{ivd3?@fq4d+8qb<*)BlFN{b=+TZRag z?V^i%Zhd2fM+pVAzox~X(dxXO>y)kAXy*Q>23iHQCYTbP{)A`-fT<%!g$(#WiKg?h z@S(z{qN|*)O?sL2uYF{PokvlLazq~LP}3S& zcQKOJ5_f69sbrxUJ7J!X*V@T}XO(OlVIwCUd_AbgHY82LQ!B=S@=GWP7jxWVBV$nm zH2{rjan?mT8FHUr4N@rOT4&-7?+#X79X46IXfzphpW?n1$ESvooUxvbDz=i@K->q7 zBpt+nM*m1y{r`{w=Z_=SW^vV{QPwPG6B z5mik#fHVU!G^X;pA%8RMtdvD97IkN5+QXQ!C&E6oMXj#IL%^1xt!N1t_InlJw8X@a z1!FC`BvI~eufmE+rVJI?2B=!R+UH`WWhM9;kYmGKz>15B(xb|)Gl6rHx5JIYGhlO= z0#Re-T8P(rxqbE^=(gCBqV*E}fI5uv6ZhXBe6ZKFttj!w&CQ+u`Ansz93-pwN;~lE zpulmJAw!CdXIo5$(Pc#U&oISmSPW#md$81t3YRy(m`D(23$*vO;obd8NWM z&_ZHq<7>nV z$qfM2NUqA3wzoUPNr|80Rg*K~Zg7vah8vxWi8sfg&IcEj0q7wS(In!6az#U)WAI4xHqIAj_kHGgSgLEQgy@qzior=}#h&qL`oqL1Gt; zg9F=KT*zIfZ8!2BD#HEqWmQ#czu7onaN?Z7AG8aSB-c}KJmR@@HS`Ks&)3oP?xrD+ zLNOP%Ug-O*~!xT)D-xzVbA$5Llm@Y{CLWPsB3zIN9RFdXzKE$n6P*)L-I^}^R1{is3Z>gzD zQy>H;lueWIPbHJ)UXy2{x|pWHtQkBM+Ug7rxaSiy)drwdh!QL$cpj@43Q#Q-wTJ;V z*jPcfRyc$2mxBE1y({8j|1!;t)?R($(cCk0ru{0h!hzYIPL_8|RDj#BdWto`-me3U zJ3R|`=TALO&4E|g@)r+OIHqc8EBaKIP8|wDg57T1r0FYH`*oT+{WcLyA$pVO!eIvq z+5CM7i|KL_@mP>2v2MKgDX5F{_7eqz7r&qnoWYrc&4A@p zeqO-eO@>@k`#}&5W2Rx~y@0*=7DIlNVb`UMDaL+cHnC&ja)CSLw1J9^Cc zP+mY?_Ndfr5yw5@!fhXPIm@47u+ETCyBMtg1LP*b*cJfzngD!46L~i6u14nj3XA64 z3yHwCs&BQ|dCuGlbnvE65q7AsWYs#K59pc2mM>akg;j5*c{c=mo$b|1ob53xTmA@* zQ)n;Qp8)_?6L<*rruHaqL7Nq(O6wIgLiL#9N1C}rI(z_;dN6S}tfzxA~8Rb^o`7|7(x`LHmz8 zlVUzf3JisOoX4u@#{vYyv)AsW{T-gm2^bvNDiRdDnYUH9c@X;ZtCKw8ul)9g5&g#g z>MnoMH+GWPsXE;q2gs8se<){Apxdb)ET^h1umhY~x5B+8$g5c~yA0U`KI)}XLFw8< zc%XI84aqBGW}Qs=Ypq2QcG@SSCOz#rwl)iNGRYv@Z%0yGd!pCrR+B1_)l*#~M@6fu zx@aJ|1v%DWT_bNdejgsfr?+4U>-3#2;}c--T=^H)^0_f|(u(b%=E*EQdh~l9=mz^Q zsTch-`YA0{Q@?0s%!_o4#*j`~lRX?IS@zr17gqN*4f7X{2Mpq>|w zbJ~`Cm4KzOXTbx0EjFadIZZ%%(~oAEsTQU%-rh1*zUPs(G;dg^tFQM=TjsvR4h0_8 z&0NVYsb)Q`->!H7NAgt=t-=J~*MJ4uf`H+{Yi+H(Bd4O0k*~TFnz-TGl9gw+ktN9( zpPBuX_RKJkksPt5)AvW%iGN{ee`zq6#HxYUy&cBHOk9+aL>z41MRLUxF#j^ueWIS*Y)X)e`Xt0baP2Go% zT+nDFv8SdQ%0;VV+cv3W1zu1mtPrUZUF4Sy?lg0#d5lmpiNk0qDqEuIjGyD`bJ%AK z>uh6YSjm}KX~M=3c}|ro6-&N^yD_CaR}B;YlL~N!FN3P%7T@hYRQgPqc>uZ16<}J9 zkcatmsX*@2rHi4gvGu60fy8b_@fNCH_9gFBl(dqPo<8wyCFutAf=H0b%(7n{yAQ`b z1eN+s__28FI{40xEq78W(UGCr!A5|y{DskHWtcNXekweYx8Yx?V4{*={*b1$nbufj zLv9;U+~o#HOQ6V5!W|=_e(fj zj&EnC7BKbFVD-sg#z+g7EW^Xu!3;b45p?46P(RE$y#EUt)LLH zL10pp?IAM7?32dJH>Vb?g|slr2Rk>o6K;45mA%~{U0)+3=7yErh+@(t&SJNjkF}}x z-X^z=`qSEzA`}ld`Zw7I9Pu!b;2#Ma^a1|s9v{pWkgjF{p#r-Xy+XefWt)Pvl#>96 zo&VkEulUY`yP6#IaAoip!3LucGWOPsOH!OV3`)X{2LLs@``3xaM8N;`3RQ`l_>Ufc zr`g$q{tCNhmJ#=tpN^gQia+Ie3Z9Bd1-vROPJz>;I2N$6pi&caNw=g?UsA~wPb;{^ zEMdvDOwR=^ZV%13N~)&ec%#&&D`d~%K;(sCuVB~raU&Bh+yz5iuRVecl5UFv#L3_3 zk$xMz^NiIzs>hSe3UWg(xOKC5K_`J7Y!bQ^pe%=@eE|i2e!EtXu1nq@80W4*nqghgd{F7IehUCVg zFet)kqD3>`*@-W1BjMrbRD5ceI?o|FN7@ltqDjQ6{(vGY(unwNB#@;S93WOyIs%8} z_BAXRb+vv2fAc4!m$$`s`&Z+#@z*r0LDsMs))>H05h@))y2HW=4)wGbsU=L;8UiXy zu)7^r57g$?^ESxsXK}p{vM;fWOoLNC@l+M#&)Ti$!Y|o714_9RWch81b)c?k9@M4r zLlp@%N7YhpORMr)5K#shO4@b?k!o(NBJ2H5v)ISu1_CMxJqmgiLpQ_8o*aF3_X${P zrT2Rg5+j!cKj~_h)=Q73nznLG76D6oZaNeVe4|8*V~e2?<0KZ}nWu#34R%}LkV-+V zA!wDSW*PW1u+<&9GAccr{|P*(m~4Dz5#K#B?LsSqLYesasG3Wzx$wP77oe~5D11X< zcSI40=F{fYcD5O7omhQ}QX7!IXhqy<@D23r?kmbLgk00_D=nchI3iF6MGJ?hA^6}F z1Tc*l`(F3#;l9m#!HK21{-28yZtO%096tn(C8b?=s9eWLdMUGjJ##5=|AovS)|kkz zFr6R3#G3dzW}_MAVNH59#NAgyLGfIr>-$cR)6yeSB6vRs5~0-MA3bIz3zeOoe5p7` zK74VVu+Cu)o({U>cU;y|NS)?7mli|MS+vc1Z-63THFy*7DXaoxwBKEOUEp!7#q>Bg=R^=| z0R|3%q~tQ_wT`m@eVIkL>s(Lid&&JE#xcnosplR|^oSPKlv0oNC4>r~uU~|73)7k3 zL3mOhcJXs%1@f8LwPexc%^j4%=Iq|~77jfXsXU7dGpwBW_2EEr= z+q_hR8yB?R^4i?F$CiCHk9>YN=9~jqo5TSvI(K(b@_`Z1R5ZTud@R8((Rgr2(r+jh zM3w9C;h*{!jI|)f&-)OYprS82k|`W^3y3@PrX@P6gI7A>46=PKe)bLm7bzs9ePxN# z_~2A`xY}X(hl~*AkSD%;a#>04r?Z*a>vl%svIQbw(!GuX=ditM=L9A)Tn)5pC~E9x zvPUY?U8lU+nKgPHB=Nl3-lc%L(tw!MmD zu|{S;EfNE#J>b@1j}ZFaXw`otH2r@_D7E$y4?br zCfHYSw`;DANk^ONP~-@>J3>lQzZC@LIdjc&r8G{SPfD?2FrXf@ZM#`#1;S*ZQwunU zDQqZ`bP;4YYl3P0=*GK{Z+CusC6)hX@;pWu(mkH{M8scDZe;W{tWg1_`!0J46$3pJ zei!hREq08Q+8FX-KM~@lzR1yPhg}HX$Dhx?C9HmZ%b(X~OkfrPkq>W{g!k*?BSG`y zW}hzqdmd$Gd8;k+a>unUCahSC#p$NAd5Sz*_~ z+m)9vuneD;?miQtdx=YGO4Y+aF9J`b!g=@x|9Bd(k00Qzv#st zY`wt?-YBz>VqhLo#cO(m$M-KDgXJ7uPOSHJ`VeT5*eZL7x}8ZM#e{UYDybu?K6SFk z0MD5>d@iv8`#pAJ0D_ZtLeUQy@n2S#Q0Txf2p43!feGiL;b`AUirn9raQw-B_`iTm zy0JBFIu%$6G%xsKw?GQ-0%bkx$hfwAvq_4u24uNlUssWwjj5nGxPU-*LchwE&&)Ux zhQb45z!(s6!rL+1mDS7UWg`HPzp>i`L3E>PW)A@S^L?Hu~E-S&&iRf&!PorHJiCNxX{3{1w!r zlcgL_-z;=!P8gv8dwxp1x@Nlg?U(jwDtRt}{&&Br=L|0y=)%Pp_s-@*38Q;9Y_#*e z(@Z72ff78OAHSJf3|92VD-kt|sKPtfUZHhaf@U&J+3l%-H03@D`Ckx-KN_g|P4?(4I)J;!ohqX2LFJu{U#g zmpU0nks0e(11*aX!b(}1<_v#1uB4+We6*Km?L)~h69Ev8nGO1ruBp*}*c$6@^YLnh_^wS04^- z%i#$1f1n#}eoXm~eE%Mo?K#+mfq-;X?-QH_Y|uMcgg? zQ3QZ(_oV>v$Sc=0{;*VK<_Sz5JKuRSAMWZN?})w9@23Ij;;NzvGJon@=@!8ViNZSc zA@hY8H4|)Bbwo+Z^0|jx`M9AG@}Lf~AS#gxq|60>XzSHUfjD@8J>)?47@Qft*qato zx?ZNNm?%C7t7`9715XjVR752Fx~lyub5=p1caPb5cIHiU^h=`eIAjddl`Flj=rFg=^=pJ~JRSaGMs7Q1G5^Xiy|Y zo;kH$WjXELN2}+eQOKPaD$a&7F)ynmzt3C1_QMvZ*w)^T=A2vj8h-C!z8^DGr@Q(* zjzioL{H>X!os?tY(8L;dGp)Z9R=O`JMVhWuhTGJ#v{BNdIR(KM6Deg_rJx@*7~6=1 zB{Rx44T^DMIO4)N4E=z6;mI;0f+kRRrpR2TxKo}@9n$ovOsiaqRcW{HXud(7B<*Xy4oN{ z*n!e(XRyS>PvN`tU`W1n4FOIQkLNP^(Fcl%gO2-7xon_N0HKk)IMpQjz$*+bIK`au zq>o~{)NP-hbK3N6fqT%5y1K}QajdCgd`9A>vruEA zTA$-Vv+H>n!ON6TvC1S-%(wIzc*-QZA*;a(UY=pDeKg<@SeaL`l?>)vNsDSzkJcoS zg!w0|nx1yKCo|#$CEy&2VB)Gcmp@#f#Y22BKli$%g>z9oQE8R2ua6qe& z@KEc4Ip9^&S4kSrX?bWbDeQ+I49JBplGg{hNQSg_w;in|dby`mkddVc_ZSX5 zrNzX#!jhgtkjoQ4l>~x$`d-IiYSzOYF(m_qgbQ-Nss);*9@MJvBTJ0Yr`{>*fdpSQ z-+~}YU7OOh!uQhroV5lQ&U=AJBw_4rfURI03)g*r=P=I;l{j5G^Rz_00Y2V$eYJHv z={~pB{wz~x#0AfYEOe0;f@tS$cCZ`?{EPne zs?SHaEQiO=eF?`@wRuD172F@2raa5>Pm*q+2)=tZ-P0s!)h|?i-#)Uo|6)@qZ8@#q z0Z3oY1K}+~9r=I?@s<_Tow!>YwA8d_p~>HbvYY z$^nPW*FLb`J7UvD0b+J+^>5&xOu%f{R7fnSZ#WgwdA?Ji3PCvI`ir3RGJh!*+M-=o z&*Bn&+@Vt_^|19uHr*l!GrFZggr}$!G2&ys&i?F&WpnlSMt?7{X%dzp-QYHVrUL{6 z!!A84+NF`vMQdX>KCyFp*vG~K0HS+svLP!WI@0ilNaVQ`J{CAN-nMh{wdCv%dEUsa z>)jv3`PTDH{OJZNmr|JBVgbjVOF=@8Y@R6#Kb~CI8X6dimFh z=2wva^$PWE|IhEMvj>{>h9J)Yqu9&64XCLmoPq+j0gfEytSe6uLV%rMV!4*(bZJ^C zOSY{V=I+PA#v!IE zypnz2$n)1BOtdH{T#RPuW~@P05M`iIASt%fY=TQ1wEVWdVu{sxS}4xbe^>v;X<28}7iL+%uDif~k(Gnc68j!=pYU z3^2Z)*Bc7`Exk`&KP%L?9-%%FQ{%dD;1|Roi0mriU}^)e-!+>Je?!BQ)QRn%u4Mdy z%nVO(u@b_H%a{_>h!#B&!!@oq0t2n+O9kn2{PF`;{280~-<{;m9q+2UJD0Tfrg%{|%L5xz*FK#$p?Im*!rhD{#*H?s*yUoFup_}|FgBwYg z;xv60Na;LDy=3Wv_k;IYfyhO0y_2IF@->ioAJV)*LmFMZ1NGa-!C!KQl8$$oh>60c zVyQTwo_;yh5j-s7n*{~uK3T#3@Z&E=rY{q=@4pr>@Nl7SU;5aQ>dKpa@e0HNy7J7< zsxD8q=Uom0IFj+2Lmg|TqMXg+1jl4c^!4v(lZ>Q4S%*yw+spD`LSAv>z;MO!?$rlvZH1i%h6!98E{UXXEtdg9JO-{{G z6~$syJI9`{=W*SFUrZ8uOc&wB+fE6Y(5j~U>9zNFA*=<9ZKHePm>qI$5M^l+B%#?b z7k@{eox_gj;r2qy+$|cd8Oc!~pu9LGg~ptSR5FuSY_Y&b;$4S)qerAB|LU~3N}TJX zpLsU0O|3Tbgx6XZ8N~5$x15goLV2$ET5?oQ9Wpd4MOL&RKI;e0I?Aw(yN0f%w4xZX z{bLC&_|jPLotxtFuRqRbQSOa+&)aFXX#V#kXQ5oI1y^}amh4(TYV+&@Wb0X*$T#QA z?lC{$tmNu)*eh_j`g=cRPA&#-zQ`ROe(xN*_pr6e4bX(3r@s>1JX#^_a^efKUnS1& zh?}wYvtnaB&$(qmcke>8o@s_6~ z-ji4&2AhWse#nZYLr-*awG~{iGP54IA*OipL&59*kk=5bu+6rO>CZMXqScb97#Qp%5R#=A8tS%Gr#<=tK9}qOwc6juIBdMCemi$erZ{%*Y3TL$gT@n_#5q0Pw5D7;*qQV2&i z4jFsec4Nu<$Wi5$lC@hzjYT9foROy!O;y+hHVes)M4)*y@F4oCneQ7w;clFJb^WVx zRR9D09&l&nq3p+g9e-#trcv4hO^ci+e)z+m-YgEL`YtSsJ*LzkLr4M3hA{-z0nUi7 zsCRUoVDd*J#9h8~nlx~?qWHmJ!%4Abs?`(ZwpYh^%{Hqj8pWCpk|SVbtDfZJp<^Yg z4BnU&u^46CUVz5Xz^I~Ch<{iN>DttQD{b!4kkJR#r23#|jj-+Q-3KjR;dUnw{EAyi zwNEN1K=Y*<-gI$tfuw<|h%><8`p{eF4xHGE#1cgp4iWrdd;jy zf5+3iPzQZnM1<|(GpIo6#Fx>3j zv+o5X=z})#pI_{-XF>+%l4ky}g1}2)cd)bSs!3WOO;MDoU91L_uA8kyAr9Lo3M>ni z%!hNH!rq0|)+{>*Pby-&8X#$d2@(B)SJIdskvpHc>or@PGJ*5pctssFT_l^C=f^1CI8A6Q`IxBh>+*>bHkJ7F6F=5!mh?C_v zMjS8vI+_AG&_g4Y{-xM@ue|^l8dI~s`h@(Gfqz1!j6@k+=n>1@4$Iv=Q~y!w(q2LDt(^Z5AOy5$X{+>(9kGo0 zxtXkcyMmdHZb6UGUd?VF8H=e7?NQrC-OWD83x)+_5?IXYmw>2^OM2_Qh9Fh-ISmjO zNPe5pi&#ss)q#0xWi4+6vA-?^6#~L$w6SKB9Arrn!y<+?nT-A%Jlx|)?VQJ!iRYxu zo$`K-!8U)Ee8t9K5!Dx@zV1;hhE9p$ARx)LA=!t@eRmL+cAnZ0{06NQgC+-JCrq&vkbI-2Rz zL_mMo76CFn`H79kE)wU8n>49b(tX=w09T|2xf4LA0<&83BQq0`yu=nNW4!rW!I?U% zDv=3H>5=*{kPV(7S^(;NVW84;8~YINE`36{UL8(4YjU2k>__5@7xf`PcJ%0VsBPEy zNKxn4nTa=aZNMwU$!8aLN)tYT2}jy_zU+=9ve1LqKUqemwwpgF%t4RR!?XMBi1YVk z7Vm|*&rzV-Qve2e#J06}D(}__un6Yn%)mey?3@)ZmPHVsk2!2tOO_rr*@@|%5EB`2 zrYYI|9MDVJ$*#}FEl3VXfmS#R5(-bpKa~r)+aI^o%XVhW%8tuG-YbEN#`Wn+#~SlU zXP1SNh~*o{;@(Nai++O^>0ttaaS^fBteLewHy|$!GwcVe{ZuseMHxpFQZeh0kVnyj zTDonzC9+D~g!1Di3Z{UZBv6f2(b!naCvgX?Kj;UYDtfy@+w@ zgB>EtA`RJZ^oX)0YDx5^C2MlLBCa7IB(fmzKaYR!P_-efVIl8YyF57Patj&2h zWa%BZ;h-&a+9K&?%da1@9|d>M6hop~l3n-ljCROLG+m~)93>_IE}-j*t75j<1*~!b zypVRR+o8}CTh_yt5o6h0*e!JhlIKW#4K_U5LVWy7DGfZ^-JA4v?hZCD5GHEHhPz&+ z*)cFgZNn>Zo0^eGdTU8r*H^y12zNRM>He7I%j~D?7)H!+;05Dpj+I^zI3WT#u|WSI zxLoug8|N|3aRL%1$KaOr4%BNl)@xT1L%r5yM#|$_o!vMlNDE4Puw6kMu1WPM`zbl= zJWxzvyZx7SF4IS>g)TA?SQgk9f_UnM2Cz0U6wH-N5%ACV@)NChd`xOMAs%gRC%3%< zaBKLiTCy%GOJiz#ZrbkqlFAriXugy*hR$Px$QET>*3{K6mqY5L$B?k|j{^7^lE3o< zKAp>Fp5Yd7No^SAh_MK3X+|j-Tw1~)L%14_c91+iE>fjZzsF1;_{C3Da*hIfN(L0J zXqqM~1y96b??iC{t<#vhJPnkK7W_pvFQ*z!FyWC}{I>{~0OHKsZ#~}EeY&g0}sWIcoif}%da*&WPfkuDs; zD{m!d^lf{*KO|>T@^NxdAmFTJuqPv|i9c44v*}`3%$CC2J4!*`#>o=xccJVv<6rz(>Z%Ve$Qj z`8B|P2oBR1MKXJELX13dyTpTnl!^KpHR8Qsc?$jys zNHMLe!Yh~u+UU}=*2_Ly>rhVyn@U^TlVLarBY%jL54#VXnKO&mt`x04*J~CP!WzyDRs2(PHe zZgRDL;MF_itda@jitcbW^}9MB@(uHoQoN$h%ofE7CoD^ow*-%bm>){5GN)mz zlk8sP?xALvRw3bW4Q5h%z|W#e%#dLMH$BYI$rfltY$IaJ0!X-OL8bLlFZMYvO1yfm z{ek$a@l!u1UiXS#XSFu)Fg@jpb77w!l&AKK=lBKELx|Q#f!gsv=Nd+7up}kbL9HM( z0=06eM32WAM!Vmuoe_KalS)L3KrxMIyE@9ZZq@G#MKrW+iqlXN7z6ef$c34kUniHs zP`1gq6ELnRKRqjyg^7WZ*yh5-8h?&4qTIl1u=(dlaiIYp7lC=_48tjbb*FO5Z&f%} zEcNGm#Slh3nX(l|vgkPcN^u8!OKW3##W9{yVR6K{fA2k>;IFc-{VXUrWS0crdmi!A zvIUl(rp4K|j<}p_&sQkF<|KUOlT@>{JK0q#Sns{3)ZpHBaaiT9(Zi_GMSIi-{F^A zsCvNu0^@KOL#&*OIza=%YFVP4c)UWzi#TIE;sgA7wZwOjxxZFv3-)iT2}L3GNg;!; zL2!&Q7Eg48ijJp*y&jcCj~7v(5`db8aR$9C)m50c9qid=);INym)y|Z&V(hb7iA~W zd%onQK@>R05(8NA2Vjy3Pj~2ne8vIVUU>}#H+ix1YU;Q(x6E;qUHhV|brlh%859V5 zbM@W&ki3v&9=h+|5!%4pe%*G`ZDzgc?A19;qQ|Y?!3(|C`CSdJ{eCRm z>d~JGkX|$7!ao+VnOljD0;cV|W!`P7m;U6V;`l?soH&Ir{?(W0rv$;GbXxPezN)tRC^8aj`uz{WB^&k z!b+G9!f=XJ>4$5|^MLvm;TzI&rBSkOJ98*@Ii(paoR6!{6sSu(nF~!cw?)(oZd~u> zl7IHlL4|}rT0@gH-jGM0(Uh085i*MsN#Su8@t8u_1$+8r*ry!;vb~TY_?&RibJSTX zFp|NjGL%0{pVMXlGm@W*iBOig8z;n0;CWe}09;rbqKeL-TJ>^QZ3+6R2zbG?M}>u^ zOqAF97wJj%p^Z$Q)s;0#Ib@2E0MZH{n`};i_)@6qUa5c8UeOdX zBNaEF9*Sr?_e*M>y-fAK>ERfu4vRN(ZK9Rxhh|ipM`}uJa|sMe#uLiZ`2+(F`aAc0 z8UXz5i6~jYxU>`@!7-ZLQpXW=dOqT;huv>bknA|eH=A$z#BNCGc`qWnOZrBZMiAYE z?|fD6K9#^^U~I;qGk#O(sHI4;+KVTDeRe;w>)<43X#(yP#1$ynC0Y~tkf`Q=XOgs4 zhx!5KmTmY^a7SA~SU?D#w}(CKfo{n;;N+r5#bKd223Ef@njl43+`D+ojoRf0fQlfU z;8vT7n-se2-%~SC(}Z&XiGHLe!OD>YFqK^irD;+N91JAVj*Adl4>@nWd7_T*YoPEj zKbpmiik@o~Rf{beu4Xy@m@Kh=-`Nql#HOaT>mrM<3a6EAZrLkEsJdfZy;N;Jb$*Un ztU;a(y`4s7#Hi%HFD!6xC|WicL;j|I^NdBh=x`g--jxGH-|SxLa$EtG(LZ}5p@L|r zCj~=t=0>zWxHR&kU0DCspB5t2?Tnjw1kFu^eTPqJw?t;(Os=`tjp&*kmkPvc-$X&m zP&h4DSD0qC*kLekq)?KZnF;=xkVM046KQ!Renk#ppu#6gtFBfQafWt{{~$t+i6&9; zxAR(m(e0Qqn-zx+&4b{^qHT@m?d4RHvZN0Ng$`dYV{Ur!W7UW3=i8T4+{Xd^l^(W+ znBRF%HV9NBXg_em)RaOQHcbKk$a*p0Th{CT_@3~H?#xwfeI{V*^kYku5@;goU5lGm z01EPRlzvn^z5FSSl=j6CL3b-okT7&Aa&sp4m|A)WX37v5nX0vo2Fc+~{}55kez~hz zyV0#qfoa3?S4Hxx>uJ>c(+@e7Cp>9vObbDtU3iiS_ZE4CT^ zJhkOk)YMua^tg9T5B_!^Fh7x$AG!1q|7~;){`5nlmEjZIXnun&=3Q^WHV*X7Zjx>e zB<%*x3|}i*l6S{C|IHE=RgF3<>d^1g*UwP*VoI=+6XNuhV(zPJD_UI%Q|s49N#tN5 zOa&8S@}m7M$fxXKh{Rq!aL>g0RO7$_6E^U&{xgA~5riBO4p$7Aav*A=Srh%?$l!10 z%h!Nsz<=+#k_#B9Kpww&R?B7h_FOAqW%oh{-9#*|AHkR9*$~C8SgYYE7YS20yE)6X zZ1S+jYV^37Z95w_ae)}G1-QJc3TM{Bo`6il&4+c}Mr1#7u?sBs+l3*ue1BoO*m*6* zB8zH^XZJ+&9uO)id8b~~T$nNEWOVqb8u5>Wk^i@Z|7(w*d7b~egw}b)DZH#ZwZ1uJ z8!eJ;Fwt+LNx?phf*Bp^fU#VlJCDUYJR_IDpEgm;T)msAT4)d#=7$~M{?f$rX- z2di8HAr`xiiPoBwx0SwWi-heVE)HwSN`QDr7w}%yUe7vJO98Opm@VeM2mPp2MSSj< z?&*L!;dSm7rM;*qLBUn5Q?JW0Zaj*W9)5#a7X%0eG|`P)1)!GErYNE*biM9wqTR{y zq;%kRGfMA2sLeZcw9<-FhlIwOOIHg%AW-=_xdZXATp=11B$ZQrs<0a4*N@x18U+NQ zw2bUfK>|KH4?hXM+84}b8+1Od_M5|Tp1DsIafzUO&63M(ZrojD_}*{GUUrxCbfKc@ z;4V~c4X<*|6-jGj%{I7p~H-5v}wA;6>O}NSK zlCmdb&`wG)0N?U10Bm;H3rpI%4nihW7Zg@LR#x zM9I)|-hPmkvjPEomthR3n3l(tfyLV9nmfa(T+BoZMITOZ8K+ukbZA(x7-jwoXbbH*{-77+!s7|~7;-3Xzh1yt#2IP#zY*=2R zFnzKDbpW)nb&E$Z`fkUf9Hw6F+q2?-Df>`gx`kGdukyU>VbKKvxmt=~89N<3{ zEd>8hXLr>UhoY@(7yX$e54MgFXPX&erZ7& zE<}n{n~ynXY?zNhT0k|VK{N&?6@ymG82lxR;jfHTCtO%~gbG%Co>S&&G_gA|!_uzbAFX~kL#dX0>N|acuFBhV0 zNFJB6L%IVF;a|PY@}*KmFT(A3rI-S_q6LVcma@Lfqv`$J((-Y^UOkeW;NQ}$gdE<_ zZ6_J%X35uZr&k@^RzKW(jC#?6%%mXhb^k1``;8w0W5n)jG=9CL;_No_Lj+VfN6eAq zY3~pvKHWD8@6M-hk%wrHTSRGa_S^bIju+W%?%fapRhrtd`e)IDmw|@i85$oNbw2hB zjqu?uNKjKFW(vZZu=~h5@~s#$KW*$ij94p(eN`%*7>@o8xPcq5XQg zSM6RNMAgBNdgiAv@>s*1dgRncY!93iVzVn#a2f*eM(j@!@c;{N2qlazof>_dG^r9o zab=UTw6)J?#Sw*t!D}7*S|g{Yu332-bF!uj1q%;JJdRn_RNK#r5Aq!rh$|>tCFMbk zscS_C*+nA#u9xrIuKlzJtC;hiX zL9q&f^=+Pbbp>)@!bDs z6+@$rVaKwpaD7>Q-FKo3N%<A>63DE7L|=?R#llO z@?|YVW0EziSJk>Z7E+bsi+(^yW&kz7wAkDSOX=Py`3uy$ex|9uGj&0P#+n+;VTy}1 zgR$#y7Wa69?A|z_*#}N%hx@mLzq+Vu5$&R?LB99=&q`SdErrzn=ChhR0m~iQ^4{wk z`RPg&1-MDqJaSO58!F}*Go#(oZwO+vsg%r{gV?7vaK1X`7gf*Xec1wll-yg~ z_$nX=1@eUWSD&Hk7N~yjsXtI{<_ih%kg{G$@$Wc(kxeje*i>r*(;G#Ip72k54(>VR zV*X#CvM8$x_ymiJ3t&9|5?-y}R5pnxIjt|jd;gfbmvNr{Tv?VVKm6NC{Hp*za}w214wVUW zTSlX#gGn12wPo(M?{Ky1tri)~-|QQQz|nZMMnPh^dK7H&0h+%gYM>hLl2G7TV|Iqx z%fPzV>GVA8Fhr!mBnHQ>ND>Djh+cT5-gT8ux#T|B9p=I0t*?=Bfvbf|^uao{iPyR%u5 zq$&41{Nor>D9h?v(@slq-rr70ZYgQa@Uc%cTX%?!M?d2yYCABii!B;!~O^#dAu zis0CURwyZ+DY`oXn@HzMcew#J$IzZgf2G!5$Qw<*l(!M9l|&M_wA?hm%R^A{u#Udl z{TVLb?8YI^?glO_NE|4e?a0z3@tgCn=30iZVbp9c^1)4ml5YpFl~mCl2WlqsEbx&i z4L2zIIfRyTex?%d5KHW#B&_JS+~rA}tNlQBwkNaL0GF9Pf~v=HiNv;LA)sVshYIZL z;&4!s1}R*5>5()~;K?Fu=@D8v?b4f7V7EHc(Pv2n+E&smHRThRiHfIg&)h5xv;5JIpH><*A?%RDg@P|w%BeogkQJB zx~O<2mub2Iq#`)zoY}O=0Yd>+z+|!4Gqfi6FjBRRfljfRcDC86p42koke3Ppk*T66M8?yv6bdKuj7o$ zrk4+E(sKc+{IH|RsedHg_&-Q!Yx1uizYQJhFW*t%k)zZ4Jq!{t2mr$;>Ne&zcs%T* zyagAP(WCOq?3a0SY4$2-)$KMPvYYTZ`rGR3Hb*l((^Ku?!Yr$8Mj&yClLqcdRu3ek zoE*Z~iSg#0P1fSGbKZGfp$`#T8(s5Dos);6{c7x4_AvDsE%%3A($jfHY&8+`{4ql_ z9_tE|}Ssu3)$pHGF4JqV0;U2!H9yYhceoOn0>N>ig|Bwn%l+u;Ec zkaGdwd5yKaS#nHj*>pn+o2S4AGQtvrQ4;ZUJQF)95;m$h^h^WjMF6mb6J*rcoR8;r zr7Fhyfr6~n{Q_C3XcP$cE|hWtf8j?kzoII_7Rd$Yx8rr~qa{kLQ|))52+Ge}3KSF@ zMfLU|!D(3CZuySfmoP7LKq($s7NzL_!7U1!6&5}!KWeYuiz&~>y(W6PoGg!iy(@`_ z)?VG8&W-{@)08^f^6>)ibU%7F+>KbNXR?{c1(z_FzP%oNIQAtXq5+bT%|Aik-WxX4 znweokrFP^2+^j#e>eKS$bZ?q72QJEa1mokm!-@B{OB=r&1@5Ktc9ksgmNyhIS z``&n|N??aveE2hdwxT zl}E0ehhf|v)vdNlCYq?K>fD|e?r=3JjaTS>$<+&|vM!V%qHNxVT%TOtwBA<-lq}a6 zA$Jr~T-v#S%^fIK&yk?pc%*eIFi5#JUgyfxajWcV+vn^bQggnI(xm5)Np+0hIX{SwcC~#n$dL{ul^m3%QSNaDmdbGZ7h~+^pEbb zk%8S)dmGck*A^v#hiAqyQoRudCa4?KD!e``F8*CzCF`Lq@+H5)gu3Fo1Cz6g%jr$G zdti3=vCeAY*-{hKM|L4KC-11vGN$tFWAnCM9Ba)o2MOM$@P}?_u}uQ28++y}ufzQP@7b zurWgz3^Km!+6E|zX-@Tcx(J&i@F+tNmg3^45LL6goDUPtW`OMo6tUd@k#MK)zu%94 z(*5iIcyDZWjeWl|!quWz>8hJ%lND?>v)86y1>5uI*xOxIzZ*B*_6Q?5%|8s$@T7-L`$R2iOPI^AYz~q&BIDxG&AWtH^imIk44$n# zuh(6QPq;G@hRlD&nOVm_6H2Es3XkGmr=WfStvcQu%zU_@qJSQx53xkt)I?GHl#-PEA zY2^1N+>D!rY_U^N|EO9UQKMo?CDH8A>R`v;oaD^B`<{0xKCRCe{_i{Zu7{(0s;{`r zDs>QNqY0D>vY`2)(^9868V}wg&HcyV%<$SZg9S=+DzWy|0B^iuZ{!RU4We)}n)5`I zo`@LB-JZCc*-pU;8E*6FV59BG^svn-J>9428PU9Aj~JuH_q+uk9=jTIx8J&xbBq zvowrkVhZR3dj(Wszvq^R)aRC#Txe-b!hyXIY36es?5@dnerWaMXgAFmKJx0bn~u=4 z7k$Ub=Sq78ZCk*OpJ&GlzU+{+G6X+N;tz#$v>>9(S?%^9ls_>4fv-_#BrZ`h)y}3l zZq;vH{YfzkM|UVOqO<$Fo9CWd|3Kh|$f9*KM8m+`DYK;j4Ut8dMcLqW4{5iEQQ5CR z5Ep%*C+>2mxlD7SwP$Yz+dy|ug6$XR`s_A@W+R6T-^KPB6TcQRp??~KBmfC=p}9IBKpnr?4+By5ys6!GCxMrv*+yCuF0kCK+CAbhx+erl%IMF zTYVQz5c*W0l)-@hcWGbFmqV2BX5tU+1yg+mqF#r7x`mxq_UuFB)9}B(dy%N47`Qv?+m3`WyvKy`c4rQP64fxNg-!9}25 zz2hRog&{-nEafp}H3OV+L)H8e*DuPvex~N$8*E>99j4mCUt@2xau+OX za525bF|EP*LCz0<^dyuGgV*aCNB-B(mJUdfyDv5$5)De@jiP3~L+x!=fA5r}Zdwk2 z((`FTt^ofc)7#uT8kd${GJwf0jeL{6fVGi#Bk#jZYcx~U{so=vSX!EU20N>wOIZ^z zSQZ zoyaXQ#E5YHhxy`;G(*S&7Q{H;N^}I zJY@hMBXFc*DC;Hsb=NE5c4vwXN<>w2HXkL?fQPW@{xK@9Tm)}Wj)T{4w%ZxNE2jIrX6Y@ zG$11vrR#(#_lNN2dNq;*b=Mn6x-*dVt@)^5=Nj(RX0kzIqftkgg9)%5B)4yQz#rnA zf9}8B%2emy^$x6h30a3LfICNb6f-!mC&r;ZBNN6DR7i8eWi}sn1f}UDD-$W%86%5MC%3Um;H}fQV?Qfd)VCIHjge0LqOLL+t zEsnht))tx2Iz7TUw2m5Ea%WjL&SkOTX$vi0Wk^Keom}zRbsVzdGCqb1(RE{X5k?6x z++{HD*xok?VB@S@fY4!-<$Q<@ss=013|(ow^z`pUY8A<4>}@PBe~8aD*&Gd6Z(AWA z=yev$q;`p0(;DzYl-Hp$d*8gi_J|slY&hHs2r?QB3`e9g9Q1#K!UxsVh(PX=_WzE? zC&epVBkLZNmpH7oh(1qJfFZtyY4@-Rxc}3q-lG2?>C<*K$s2yy2glSOX-C&Xz)XlN z9nX&wC#UYSrF=|S3mas$) zANiv{$@T$~f#hbTjB<2;&s_l2^%odg6Lcrh#iFnLJOa!uhGKGyWkgRTi^ipkdDM&L z1nq}UHCvmmY4!RhtB?@$Rxc|;{DB&N-stDCGlc^DX*4p9 zQd@ueh6{V(PXdIw<>Y3YnDM==z5kI=@Bbj7TkOAjyiV*w<-?_2DV)(=UK`9dW+;pn zL!pag_)dwnD>+Ly8>0qgvlsJI3;Vf{q8)pfxBOlAOSDq_XslmW*Q<)LQSJExL(B+N zdwL=2lLj_g@V1oyLZQ-=?Bibm{uV^%H2E=sCrl0)lI#nRXi7cREX+=vi>TV?Qa}j> z{L97&FLzJLM@{o=Q!bEi8|!4C9B4&_KO%f~iC8osUPoKWD7UyVayUE#mdgil4gV&HY-oQdXcDH!SfYL*daVTgjlF3H#S&oD{xoE@e?x6D$<~JQ`fXZgKo4TSOuHMP{ zt_?SkA<`Coxw>#2tGOpgApbdN$Boeu1CYxlu*+Q6<6Pv75E$PX;2C_gSO&fGn#CCF zf~>?9X~)4T<|6iexuQ1M6va1xe>^luH>cXE%P;+M{hi`5yssJ~hJrKhUPpy-Y7Ct9 z8^4eck!gmF@P>h4%evLo!XK-*DsU?ld}~;;^UBcf@pM0IY4N ze~8C~!5CxCD0}rKr}~yIynx~p&p-o5Q)^2We532tE==(mDpE>Cs7)29xS?Nv#LOp8 z)*X(#4lwvsi&-Z+fozdUo~P70#Q!Ai#Al(ugAbe{Yyu!r=XS;|16jKiy+f{qM{fLH zD~@Gyqci-&QwB*%Pde(#EvPjiK$AF_uF-?`@_;m30idKpvagN&WLaDRn>ol6taSsJ znNO+qk73QkmO^(eS!t{lL91z%%QAi~!F-4nrInUl=?UjjxT(e)&Co@GjtlST3mh(s z&ZH5XfiVR^etkwVD>HJ9PbVY$J2oyn0dmckrXl2f51rYI)y;{KBe}QxY1tO&RZEe$ zhSovgU}0H>+$(}XoQ@86DiiP)ytKj-x~QbRRZQZ@_cz>tvSCCA84fM40bmho^zy!( zpXLm~p2cL2ZZz1VX9wJ=Nb`80-62P(XwkQPWaE0eNGZRzhyk=f+m1 z{lU(*!k~%z3K#m*Qw+9r!{Sowg7$CntO5vycn|AwFyN-N z?O3j}CSY1Z*^NjgfuteiVJ^t|tjfCZU&Y(Yw9oLd2vR`nrh@$9o2j9&Y$Xem-N4^t9mOZ(-p`r9M%Rn=LP0c9{4b{(c-p(yoaA7M^EhfZpj2~2O zUo-bNO|u|49YIr=E=$f;W4%P_e=T=fI@DS0X-D9ZmD%oS+de%?bs(b<8f93qR>DxY*D^z8Lphkx(-miS zh4#9=Oz>b$WqIff3)RIwnsvTNU}~Y%>y|G+M%9qR)+#uxr-~-c`pEps8_KXuImJzA zr!}JXcoKyg&`Cvh=+#UACZejd?5vIQ*~drfxWAz+`=cFL`}4bjMdM@AeuK8%Gy)P1 z{j&1Am-&&`+L7XywNbyVK#6u@R(e{G-*hS=IB$>^_W~FA5;hUmQ4|@$q@G#r`N6fP z1$|}h^Ixy<_iQbwInTPH6FMPw5?cM-Rp-`j`59$$A2nA~a`Fy*^tnL~2~nDFth_xox8q&}P_;>5)bdOdV>A=re;$j2#7gYpru{yybSMOD*c ziwlaOLDe4%r@(|SX7Fc<-E_q5!C@rt7KwgPXE1F1gZSR&on1#wQg0pP_+{r}sa>m- z$t4|swQdg8{%9-vY7;#Gs?Zlj(f^HL+(FXX_Mw18Q3kAZ2jP+xmCeCz;RrYusRYA9 zJMNnG7GJfxc$LP28}L_Za2C5WSnpIYh?_TPunK)hkh_Y|#i_4W5@4hf7x;*LU;ZARv6MJW_4*GQH%()@s=Dky@SrY zcRxwn?`m41A5BEj+rUo6LHO+=AZU3lx?XMU^Q)({*}`zoEQyBi`Zow|FEvh2oKi~A zk8qo7o4{sn#DInT!h7nDyR=M6rWWGt64b!>BkC)NK@H&}dqPViR)9D7Ud5v9)VaDm zf`qO0=;F3nH?45k)Eq9AAyz3#)mMF&4&Gm8HL#08OzVcfBhY|x_!y_Ak;Jj+TNM(= zZ!^v|)}jj*?Rt4e3vFo{%%)0*jH>UHQhquUSOr%?35>awBNDoCOHf*VbS#dq@D8%$+HnY=UK~`Muq>G1 z$cKK5AR||>vjLeo#4$(yfk&hLap9F$xiLRMdVwyjmum#BDiVYJ@`0E#VY}qiGhb;p zVn1jeObOm>I!KcVQ0MmY0V>|}H`USRPtz?!|=k G?Ee936j~7g literal 0 Hc-jL100001 diff --git a/tests/quic-initial-not-first/test.yaml b/tests/quic-initial-not-first/test.yaml new file mode 100644 index 000000000..07c55187b --- /dev/null +++ b/tests/quic-initial-not-first/test.yaml @@ -0,0 +1,20 @@ +requires: + min-version: 8 + +checks: + - filter: + count: 1 + match: + event_type: quic + pcap_cnt: 8 + quic.extensions[0].name: "supported_versions" + - filter: + count: 1 + match: + event_type: quic + pcap_cnt: 1 + quic.extensions[1].name: "server_name" + - filter: + count: 0 + match: + event_type: anomaly diff --git a/tests/quic-retry/README.md b/tests/quic-retry/README.md new file mode 100644 index 000000000..04d5ace31 --- /dev/null +++ b/tests/quic-retry/README.md @@ -0,0 +1,11 @@ +# Description + +Test quic parsing with retry packets + +# Ticket + +https://redmine.openinfosecfoundation.org/issues/7556 + +# PCAP + +The pcap comes from https://redmine.openinfosecfoundation.org/issues/7556 diff --git a/tests/quic-retry/input.pcap b/tests/quic-retry/input.pcap new file mode 100644 index 0000000000000000000000000000000000000000..c3f4d1c236492f159885d81a899572a90c1b3c4a GIT binary patch literal 18120 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

53nBVVlv|Nn;9WB1^oQ zl_a=Ih`1h5-}(@35;!ljOBAJkd1p1O7&5rl(LR>2Gl2NO!7TL}j|9(Ay}qc>nW5sY7#Mo}Q4@$SzA#UD+! zMA$A2zxifKpJfp85WlUdYcXdatV zyVaA;@B*c`D)n7Z)iGoD*K@mZ0`q+LBlt2xVmnQFqeZqz^xc|Zp#tbk5F%>M{b43j z4FrCI+McYRTCo*KQj7sm3np2#$z^CNU{umk&~`8~5*ww&r^ zER_zTWS6tK09F2Veryj}PFNyTn*oad1-#F-JJkysCv3^&W^z`Xy11MS>T!SZF^Yz6 zs}~OrK{t33YX0@vgu9Fb-A*=MA09?+te7R*Q>yzY^m^Z=r6SbVb`q<4NuOJ)XsxdC ztYdOrB=O(2V|+GX6>rvow5TXjAWrFm9ZQ5qg0^$ z;V1Q$)m$Rs3KVF+crpeuN4QsPkH%d_V3~k(hnk!ma*= znC~CFfB4ONf!{4f;7=ng=D$W*h<_Vl5#XUo{pP(6o)ymlAY?_YEjK<8t4^I?vs!{w0wF$Vin1&0JQ!@N!9i zeSwNlZq_SFluvXs@6E8KX3H zGzjQpf9@UMODiaoG!eqorYbRaC0?Up9vqnPy5@MvAA-Hj%Vpa?;Ha!Ke+m3~wlT(( zZdKQ?Ze$Z^Fq$|WCQ|3Jl2K=iAb@L@IfM_DXQWB=c73uHrt~~CR4~J_7FL7a;=jBV zY$_U9epMQNN~9mXRFg8e7JBQqTwS0ju1L5fE|-Ho0(i5n5&oXb^Ub=|exz(nW`#fh zN4OY-3o-#bE)loeDp`EwMYB$k9gj`L2tTraJdI0&31uA5uW?6X7ZdFCECx4wuTsKP zi*vCfzJ&Cu+v_<~0eiFKj2Kf|=xr&c*#6b{N-B44gEkoHwq#ddS;OHPgPA81~f9R zGq&q^Kq^^vpj}jsK`C4(K`FcwR}?ZqMkyAS>&g^~$V5W{M?KS1;;K?=iJj}v%I4Hg zSEJuW5wvHB7Q?$RDoM+OdCGLtr){Gmm9M%Os1@r=cCED24hnC#ZIvn!m#<2Ggnf&} z6&FA~op3pjei09XW(}iO&N+CK+gh6C4kG&PanY z03G>$EMAj|-qz}#$gHq0XD#_!(HNV{4s~>Jghu9!Cb6|0q(w^x8|vk&S$EClM=(=h z**ny?l{h$I4TS0F#G^{TSc1K3}LU< z4jglm?K+b}`QvuL^>c}G#IGEmhMJQQMQ)+qj#K|$@65uYRHPQVg1ACP@Nq{)J56Su zgVHxp4yCh!;v-$+qQFU>eXlD!8K`b?+hGnA+$O%pLNG(z11waY{nQfKUvSG`dZQFK z&O7|O!p98XwR|Iz_(@?MvoBT_yT+y|(~1kDxz0H&0uan^lRGyv5Qx5}!9qH#6Kes( z2h=DdE8Ww6zho}N!tTc7~T&^-X`MT{n$UdKIE2O|+Fk%um zS5=9gVt#f{zNoJ^=%;|m`*v;)EpT4Tq)(Hgpph9$F(1E30@YO`ctuCp^R%bkPR)!o zn%O);^;%0gApXhA`iacSXT(h~zp4|?d)iXma)2UrU+nO(YWB#VgvO8tn~nVf4#$P$(6oD;O8lm58m4- z0{`QeI;3(2e|o8dYyYjw$F_Pv-7to=|I#L9-&$x7c)iH-!-o3+>>oEOJ`$ndZH3`h z!=mQ8^oW)eFXrrhCh@tPRs2Iy_&-pb-;n&R$Zs2M;=$z`m%N%k83L;&BF`v${Go__ z2?kLAt)~8`Qb_()il@Jog019O;7_F>Xos4_E2!gJs0P=zD{6B<>r(#I|Rg8zf6@$Z)QTR{A$m+ioBo3MeDh}CRZ(V*| z!DA)%zy(`X!}`(k^TSFj_McnfKY9Pjs`43kyzrqB^?9ay^dujdH$))}j4{}j#w-60 z>rBC1~35a-)h=_Du?V}<+%G>IllC|{`ofS#G_YC-n?K$IVcI2 z@picSj_ZqKok$$Avq?6A08v&8)|+Jv|0mF hWlSs)$QRoyt~bv1IKLHEdL|pJaTSDsOZgo9e*n2KOi=&; literal 0 Hc-jL100001 diff --git a/tests/quic-retry/test.yaml b/tests/quic-retry/test.yaml new file mode 100644 index 000000000..2cbeed0e6 --- /dev/null +++ b/tests/quic-retry/test.yaml @@ -0,0 +1,26 @@ +requires: + min-version: 8 + +checks: + - filter: + count: 1 + match: + event_type: quic + pcap_cnt: 2 + quic.extensions[0].name: "supported_groups" + - filter: + count: 1 + match: + event_type: quic + pcap_cnt: 6 + quic.extensions[0].name: "supported_groups" + - filter: + count: 1 + match: + event_type: quic + pcap_cnt: 8 + quic.extensions[0].name: "supported_versions" + - filter: + count: 0 + match: + event_type: anomaly -- 2.47.2