From e2776f35753b222b0e2a2dd381f87da993534564 Mon Sep 17 00:00:00 2001 From: Christoph Auer Date: Tue, 7 Jan 2025 11:20:41 +0100 Subject: [PATCH] More fixes for OmniDoc, README updates Signed-off-by: Christoph Auer --- README.md | 87 +++++++++--------- .../benchmarks/omnidocbench/create.py | 2 +- .../evaluation_DPBench_tableformer.png | Bin 16629 -> 19822 bytes 3 files changed, 45 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index a502af1..87978ea 100644 --- a/README.md +++ b/README.md @@ -61,18 +61,19 @@ poetry run evaluate -t create -m layout -b DPBench -i -o . poetry run evaluate -t evaluate -m layout -b DPBench -i ./benchmarks/dpbench-layout -o ./benchmarks/dpbench-layout ``` -| id | label | MaP[0.5:0.95] | -| -- | -------------- | ------------- | -| 0 | page_header | 0.151 | -| 1 | text | 0.678 | -| 2 | section_header | 0.443 | -| 3 | footnote | 0.221 | -| 4 | picture | 0.761 | -| 5 | caption | 0.458 | -| 6 | page_footer | 0.344 | -| 7 | document_index | 0.755 | -| 8 | formula | 0.066 | -| 9 | table | 0.891 | +| label | Class mAP[0.5:0.95] | +|----------------|-----------------------| +| table | 89.08 | +| picture | 76.1 | +| document_index | 75.52 | +| text | 67.8 | +| caption | 45.8 | +| section_header | 44.26 | +| page_footer | 34.42 | +| list_item | 29.04 | +| footnote | 22.08 | +| page_header | 15.11 | +| formula | 6.62 |
@@ -132,17 +133,17 @@ poetry run evaluate -t evaluate -m layout -b OmniDocBench -i ./benchmarks/omnido poetry run evaluate -t visualize -m tableformer -b OmniDocBench -i ./benchmarks/OmniDocBench-dataset/layout -o ./benchmarks/OmniDocBench-dataset/layout ``` -| index | label | Class mAP[0.5:0.95] | -|---------|----------------|-----------------------| -| 00 | picture | 0.293 | -| 01 | section_header | 0.131 | -| 02 | text | 0.24 | -| 03 | footnote | 0.025 | -| 04 | caption | 0.107 | -| 05 | table | 0.693 | -| 06 | page_header | 0.1 | -| 07 | page_footer | 0.161 | -| 08 | formula | 0.038 | +| label | Class mAP[0.5:0.95] | +|----------------|-----------------------| +| table | 69.32 | +| picture | 29.29 | +| text | 23.99 | +| page_footer | 16.14 | +| section_header | 13.09 | +| caption | 10.74 | +| page_header | 10.02 | +| formula | 3.83 | +| footnote | 2.48 |
@@ -221,26 +222,26 @@ The final result (struct only here) can be visualised as, | x0<=TEDS | TEDS<=x1 | prob [%] | acc [%] | 1-acc [%] | total | |------------|------------|------------|-----------|-------------|---------| -| 0 | 0.05 | 0 | 0 | 100 | 0 | -| 0.05 | 0.1 | 0.01 | 0 | 100 | 1 | -| 0.1 | 0.15 | 0.01 | 0.01 | 99.99 | 1 | -| 0.15 | 0.2 | 0.02 | 0.02 | 99.98 | 2 | -| 0.2 | 0.25 | 0 | 0.04 | 99.96 | 0 | -| 0.25 | 0.3 | 0 | 0.04 | 99.96 | 0 | -| 0.3 | 0.35 | 0 | 0.04 | 99.96 | 0 | -| 0.35 | 0.4 | 0 | 0.04 | 99.96 | 0 | -| 0.4 | 0.45 | 0.02 | 0.04 | 99.96 | 2 | -| 0.45 | 0.5 | 0.1 | 0.06 | 99.94 | 10 | -| 0.5 | 0.55 | 0.1 | 0.15 | 99.85 | 10 | -| 0.55 | 0.6 | 0.24 | 0.25 | 99.75 | 25 | -| 0.6 | 0.65 | 0.47 | 0.49 | 99.51 | 49 | -| 0.65 | 0.7 | 1.04 | 0.96 | 99.04 | 108 | -| 0.7 | 0.75 | 2.44 | 2 | 98 | 254 | -| 0.75 | 0.8 | 4.65 | 4.44 | 95.56 | 483 | -| 0.8 | 0.85 | 13.71 | 9.09 | 90.91 | 1425 | -| 0.85 | 0.9 | 21.2 | 22.8 | 77.2 | 2204 | -| 0.9 | 0.95 | 28.48 | 43.99 | 56.01 | 2961 | -| 0.95 | 1 | 27.53 | 72.47 | 27.53 | 2862 | +| 0 | 0.05 | 0 | 0 | 100 | 0 | +| 0.05 | 0.1 | 0 | 0 | 100 | 0 | +| 0.1 | 0.15 | 0 | 0 | 100 | 0 | +| 0.15 | 0.2 | 0.2 | 0 | 100 | 2 | +| 0.2 | 0.25 | 0 | 0.2 | 99.8 | 0 | +| 0.25 | 0.3 | 0 | 0.2 | 99.8 | 0 | +| 0.3 | 0.35 | 0 | 0.2 | 99.8 | 0 | +| 0.35 | 0.4 | 0 | 0.2 | 99.8 | 0 | +| 0.4 | 0.45 | 0 | 0.2 | 99.8 | 0 | +| 0.45 | 0.5 | 0 | 0.2 | 99.8 | 0 | +| 0.5 | 0.55 | 0.3 | 0.2 | 99.8 | 3 | +| 0.55 | 0.6 | 0.5 | 0.5 | 99.5 | 5 | +| 0.6 | 0.65 | 0.7 | 1 | 99 | 7 | +| 0.65 | 0.7 | 0.6 | 1.7 | 98.3 | 6 | +| 0.7 | 0.75 | 1.5 | 2.3 | 97.7 | 15 | +| 0.75 | 0.8 | 3.3 | 3.8 | 96.2 | 33 | +| 0.8 | 0.85 | 15.3 | 7.1 | 92.9 | 153 | +| 0.85 | 0.9 | 19 | 22.4 | 77.6 | 190 | +| 0.9 | 0.95 | 30.7 | 41.4 | 58.6 | 307 | +| 0.95 | 1 | 27.9 | 72.1 | 27.9 | 279 |
### Pub1M diff --git a/docling_eval/benchmarks/omnidocbench/create.py b/docling_eval/benchmarks/omnidocbench/create.py index 2afc918..6d2d1c9 100644 --- a/docling_eval/benchmarks/omnidocbench/create.py +++ b/docling_eval/benchmarks/omnidocbench/create.py @@ -387,7 +387,7 @@ def create_omnidocbench_tableformer_dataset( ): jpg_path = page_tuple[0] - pdf_path = page_tuple[1] + pdf_path = Path(page_tuple[1]) # logging.info(f"file: {pdf_path}") if not os.path.basename(jpg_path) in gt: diff --git a/docs/evaluations/evaluation_DPBench_tableformer.png b/docs/evaluations/evaluation_DPBench_tableformer.png index 2fdffd77c77d98f428e42e0f3dad9632a96489be..1911ba9de0e69c0ef929728e9b6cd30fad009c0b 100644 GIT binary patch literal 19822 zcmdtK2T)d9wGN>lCw(ADhiS%iDZ$S zB`1L%%m4m2yuQ^{uliQs*Y8wW9N=T`wbznL?p#lMuh4K%uO5 zr%+b?*ti});jL-y#uq{Bi&w1`&GfA8ZdmG4q;FW88=F}h8{9l>t7~axU}nnA#>v6P zaq6(XwY9mGAUnIszkY(v%np1t#tN$q{qI)hc~_Y>sf1|*qm0^M4y-XJ%bNCK0;ZIk8fSI zgF<N4-MV(UvbraLm z4R#$a{xNlxv#Y-9rRom8)vKf_dF0!!^Yha~FV}0CrX%|73Xy;RURqL4QsZM(*z znk<#-SMJYl)SPCJGm_ELJvNr|{{5Nz9v(yEC5IYE+j7kuwfKy`zpRP4JT%;t%GaiP zHu1){M78XhD1O)9_N>=3PN^;we8Y`n@R8dFA+lmiN*+{)zSYT!g$iBlvBG0Hc0J)! zdUbA{gM&kyOsL?(RGln0?`Zna_%s#%i@CwBnG?BbH)E_`WzfX+22l_GjFd zrd3TV_9a_P^~>9gwQJtFb7x|9R<$u%Gu>@vS?Wn}NJyf9Rd1|mTMn~&TCAima}=&_ zQ1oD%Oi_|rDq~yqN3+5uzk{jAnVg1xR|-1KB+|S6w(vbEf3BdQz_2d*Nrq`#P@IL^ z%97nST7J3dp+HY+YgqsF^W*);C8$KEo{i>BRw=o(*|wO- zRG0fOMPP5ly{p2-Qu3W<4F_tY)YJ5z=h%%UUwphzz~sVc;fkxv%F?W3|0@rk>+dPY z85s>{N81*9gU#yG3>1}9w3ecKZLlje+}9-@GbVUN92*{i_HTI#?4?vaQ5r_-#o@Gg7iZ@@ zSZ2ic?^pAGPn1vm`t`NNtT0I>N!?&^W@PjB?N#Q#_iNdoRg9LBPtnTfG5>KURK!We zs;^2pK_w~8b;%JM`^8}H!@Ug&H;Nv}nE0}&R*la~J`c57)?+wvA_1Rleyii5W#73D zkFSxcSE(@cEh$~Me4lchLeGQgf|cdPc*PhmW|hQPx8?a0Z3Ag$9a^xM%=O!8W8trc zW9|7tyheVmbDbM5Ubyh3x|;n;x^|ZNS)F3f=aI%^cgm?+BqR(w3i9b4x_8E83~?7% zg$nK6vnTS%`3JG~<3AsHd40=sn5>VLKW5UJC7;>un4t5W?AKV{q?haR{OvZ^#SsTC zDz0@EFVEhSa@0M~!jujr1 z=$&rVmbD5A2naY;ak07Gc~bgVDJ{SGj|WAJ$Bzd--p}4X#bXxzAY>msy{US-p>Mp) z^6&Xe-t%2g#oo1Lrlh0{)WyioJT8y)6b(0M%CSj!e#>=XAVwpRc}38&`|t5zzc}u# z-)5P1{KSdieXQyMT)Jfeh$y$RtDlN4d=ck5!R_9 zh=|JjTlRZ$Qa2XB7><=z1aKC`xwPjwT=G`Su{Q8C60;ffd4B8C6B^$h3&rkFr*Whz z2Bt<_SG?=&R8%fpzI@Qm&TjJ4ZrMmjVs_DXW9?1JED00Ug%9Wd3Jwl#cj%*QNK{kg z)~k>+Hcn(PK&bYPL?nw6sCu&e*f$b;$RaGPAu1}mdGlrk?AKK3iE!~8N4DxM?0JVJ z;^ki5)$zA16R-1nloy%-nU%g7Mtx1#d>81I;aIcJN(M2g-a_7#S-U{Jst`;~u zEWsQWdi=F%>++YyKK=FA+HG`#^%mc|+MUK4;uK@JGhT2xD&>4f8$_12xBhD0RUrZqU%$%nnlvj(NJtE}WTwES z2LklUjvXuaV|@`56QiDCJWwBIY1$~Z@;d@<&vf|knd6c^U%xy*rt4XQK--XRq&mO2 z$il#I;l&AAnFhOa=kDT6qRM<(un{b$PDvGcP^sdFb>@?O)r}*W9mz0(GSkci>~xTb zlWqKRnLm3AQNHYXUpK!pSMWX2W*t zH0+efbiE?6-EoCL@_d z&dBeS+G{v{SxZaH+spFay;Y$JWToZhSCXz}%2;V4WW5;8>e`M#`K6?!DpuvM>TnA@^LL$c;I#B<-m!a_lt!ALqGTmC2h6Pgn^%OR|q zB$V!+o~R6y77}q}inI`7a_z=cq@*gg`Pb~%c7F9>+d;t*-vq7voaPLZgle%B;UbIO zyLa1+|NN{pcCFO=xN@ZUbL);w+0&mu z>4%CTTaskq?oL^^eto=bxTpbrj+8)<_3ydygWsk;@7Io1ic^s3$i+FzA>B-4kumCp zDXQ^GaZ)brT|a-)7HPBO4pkuZD!;z4NuoA@Q-`*EuvsJqMv#gWc0^lSn_SwcG1<%H zfpwROl3rnX?XJCheR~wM*|hRvulTd+8ibH@E-5)tS$!4}f4XpGNwzrP)O4VU!#-Xs zalILe7d3Zrh@cH~!!b_I8ct(JCyJuyLB1++t`6tPC!ECr+YX*SAfbm8C9`zv8*-Tu zLm&V{V766XkU?E^;PTR<(DJ=Dl!idLDMg|^GIFOy=lXB^H?Cr4~~E~4&D zW}9tr_R>sCCD2{vn;S)*h&Kc6`HS29mo6W2xixH?Yf$t0e#97gM4jYiK9y)G>fQVH z=@om?8R=DrnT!@JnwD^hk0WJLBd|`kT2%`)J5KfAKmd`xbt{syckp(k%i_!>Zymuy zE>rRk($kF^tLhU}*_EBj!a{RwhJrlk9lulr@s?YUwl=-Zj7OH}jf)B6LZ0NR4C3YX zu3#_x{qukr6H}>m|JM(5b8`U*!`~`Gg&KvIrs|5@+S;r~ni~w%u|yu+i5Gw@BT&>O zXW;9r^Fb@~{z%742`ZI7%*thXNbq{ap48C@5XE|_f!Mn!nhcF>OX{jz&SGHzsN%-P zMkH;a^s%H-uoOqI(n>zq#p|}XNEDc|g5*Pnlt-v{3z?I)=);ifzsOf>K&`I&KZS}A8M5}X0q*`{~8m49v8U6Ezc zB^9R-Med~Fa>x&lYG5{toOpv-IsTTGMOhKw!E{w^mj-bz3kwVC znVKvMovxuFBP8Qn+vx;v*}^Pwih6hN-K#8cSyX6HO4FA=R+^Qa9f;bYqyG6le{I*M z@5ZOOfg2~02LiE|!Q{-PLilSAycib@4+$|w^fq|3hv_B|kAAdlxT$I3l5L5T?TDRK z*{qG8mx5BVMw9hmJ(KbxP=^^qApD!VZqmPIW~x3;k(`+l5=EkVdKs;N<)=io)Z+SN z%@!Wx?;PbVuo!!8ry1j8rL9h5`Chu|Iwjk6JUIa(ct%G@qYWG4d!O*Na{xrZ!VrkSt{3kWtbB6Kb;qYq4)O^;$d{-59!yB_WZ*Vw=FzEW@D=D;qkzai z`SmjqQkVbpQ9a5ph@FzE-@3lE;%F)pkVvatraVHd8)S z5LbAO^;Ta8P*;>LIiLezkJI*tB|mV{Fj|-z0CXJ99aG59FsNfxj8ixsGxpcQ^iXhD z$zUQVAb{6kG5uC^4_#*lf`DfW0yS57b;EwKEfpeyy%1kU6R=~vaT~L#a?gD zG#k^;?F)1A^!N9#%UOiu9^~W8Jh=Wn@==4Yj@Bs_X6@O5Daq}3dpL%>hF=JmzOgp`6H!%&{y6Hrb#BzSJEu*MLaSv}V_i5`i9aol@yc7>B)F-Od z4Y-_=e|;g|;EF2M?5*B?V*A;(taEmpybq)6nogYSej%#_^pbAYA=+Sso5$nSNa%*k zOPS?Q`)#Kejs;h7xZJ}cxgo>knlHO{`*@y3SFv}p7LVDL(ZJH^>wpl__vKB>zGL8?m z32Pu(t7XOo}wK#m3TP?!SJK<6A zIww#75uogK8W=)kvVuGA0jqXFo+oEu&X#jBDcsadC`n9nM^5K2FAO191YUYdpM*6b zfw>Bt-Xd zUXvA_kIXP`dX2LmK*1toHD4Vrrp=;~_!a4cc7Gzu*C+s|YtI4|SuD>L6mI4h0_=Qk zJJQ^ybZC5h+`D^fooQyvbQw!ZzptuR&3ISIG|WvOxP0OFWOYwx=PS5vR7=NW_JY`O z*9D0uG`tEuWxfrs&Tk+LhC!HOK-lKJ%(t9e6$)-%Iu`HQ2ujyR1v+TQNc7cxtv%CeyUhEmLoSvclP|CPQ4hwU3T zK7&m@+Rq*qzXUw!)#o%bEPvs`UtJ-=Lz+U`LyakosHxK|x-MyEnSU_I0%a1D@FFGU za?XNiWZnj~o{^EzUV$r2cTTbNQIB*KY9Hh?tp`cRYG>D%l7UaB!#~;ce%(bK(W`F; z-@+p$%}@3TnZ%|ZO_~+={`m1@t+A|{3e&6C@Xdi4I*??jA~o~uIV%%{5|k5ci=OCM zTE0WjidIY28+d)%9bGWRSO7c2ww!c8iBWyC#^lhCMMcvf zs|;%+B?i2-vn_RPMw*oo4pupbat(;+Vh zXMrR)Z`)=wEF~_FP<5)oJU>L^HrG4171wlwx=X14UJ-^&LIJ!XU0;AJm@;HwMK39q zp76OeKWQBOR1uX}KXw}oYUP{oL}&jV2Dq090IV0scd)ZDjlnzyKj(5UKcy$3g<&8m zvz-94WuOAD5{R%ib9#u0jHg4g8EF`8!o}TqTKR<53 zrR79)Wa`zwDf!&n}X z7EqZL!5O<}L+tI*KGvYYUGs^OW934+QPf&jC|@UOyx63gi^CEIikY1O6JD9c##IujhhtkRJBxMzhB};%)-LL z4U55nIjOG^C*HM;7-+RV3!Jsb`Vc2o<7bnwr8s~~(e0UU-f(CZIIHzlhgaX6RshXF zA~gI)me>biXo}qlWMNFIy?nXmxYN*LOS@g^7Eq?X+LlrJ$eq` zWEBGt2UNxc6&{CsXu)9(Ay`;hA~3-cvQZz z?O1yfTvKRfIjYekp|D)R>s^#xeUCbzfYjtO>#~f)x>Pqzb*O&Wzy^5Gv%#L||N8L( z%?N+%X>)0HJ2AqRfJBOY`SRt~jyWT$Y6(?4>PFCl#Rp0@`%bK?E~Bd|_hmVO3|b;! z&xDNEGnIGY;V#3bcTv5S!TyG#$xGFu`80!#DJjTe0`!fhiHh4tWP*4kYzFHs*1ksR zq7Q)6jPMb?ePv-`p}oGX&FEX=fRfJA!Zi1AOJ$`r5OQGwifEpDir1;3Ad5 za>90`x9mIh6<`Kx#9hZ!`@nE43R}SaNTBL+i?Y&m1yMJExj|GO$eq1u zqnBWDGvc>DRaUY#wC5hb;@6J~xG7nLCG*a}x1?ZTNvfC~2dJszP;aYI3IB4hdqeIW zR5I0`2@J~2#Z^1ta%IR*PRMrn>qJjElDda+8|~u4*vRXPkK+*!WrmC#hkl3JwZ|bH z@wYu-0DUnaXZt9zbv@ym1ucI5<;SKusQ>uk!y3>}^-)*$$4su_&ZUoz0_f%{j?7V( zElZiYbvqPTg%Cn0qFhr3 z9~YV-)EH*?;wN|^!n+grJ(vzic@nsyv$HcWejWf`#2ssqo^;Mb)Dxh4{Pf8ao2_=8 zAJ>(z-x+SnlofHD`U-}DwrKSG+w+K^ZwPG&Gl@m)6m*=5-N&XuP^1B(6!mE5;MZ68 z&Ye34#LErPA_-PFh*Rf*pxx;392I}hy-6UYSfn>JSmc1oxrE1#U@2sCk)_!H4zY%T zV6y^=$$PU^LSwNGlf3}gVWgd=94mKr0~LKe$rd9mnYVKvppqa&?(^r*Wlr#CBF3{9 z%)MsNWu|;f(bi7AUHy$z9{5ngtx|6R+sjj^5r<;JU29RSD#2RG1yPoNgRiDLP8;%? zwq9MceybelCY#<0YLm7cWwE8H7dm#!Y zdT#@j3TmsK-d?}X6g6VNUByr8Kw5bZ`m>l`0+l*V7*@o!`oV?-5c%B4j~_Q6?K7nA zY2bp`v-j4M%@Y<8X@DINsD~KT2(}^yrlDu3;}eFIDOtOXeJ!Ey!dzz5^5=VlCEt ziUOC|6m2<68eFsOPO`AuZ^$a_Xw`yQy9nHCDR@XRC#Nq0<%ri}5II#GL*vK$TlVhX z9|PX0ANf59Bp=AI>EYCB!D5$RA2tAgCIK17&xI4Gw_& z_r*sb*5gq=#3M`~OGYE94*{l|FEkZTeVb>~%!viIbR3BCx5loJ&I@)=+N!!5-Dl;9 zOHZU+dU5#CE5G~1$i^%$FPgz&7>*woaMe9_QGKWr(SWuv(sx&xw$lhN!t}{0^ucQz zoM;QCzg=_u`S3)VNy}+cK%w||1X$clPoIp_Zmj9U!nmd#exV->TbypX9Ug~hK++bz zM3GVj2uCSKCbT|MV)yh|hc@y@J&^j|9Xo#1-*#+?MJRCUetvlhl}PI^B@Ylw2>-f+ zwNa1D{8$sfl7Pn`th3C1InoV4eW(neM_PqI8U5fV>%NH5Er-z{(p!-Lu1;SWzp+*&6M-vqdgWm^_tYJ4!?n#dtoAc$ft}a zPks@GE9e1K$C>h8_vA#>S4_Cv4x%X9RnjvyZ7w5 z1@kcj9o;pReGNo1N;R+Xi3u)1BtE20%hr*V=Ghpq(+2IkjwM}VzBO~2qgW$fwH3B6 zO~^B}z0jHE1HP5y)d&}Lsr@ZXx~|BX$14|^w1&V*^#WOQ!-;s&f#1Wf)e2QX(Qrp$ zhd~zMC>Qqe7$o@*EFG11EL3_6qqOR9nH4BFh{$;x3ELDzMh{ObLfK8SQp6`|^b0FP z1gvU*AAgo+x`rDJD>-;VNrM2YD1LHKG2d*U!T%d;6qnP%fIU!YoQ8pMFE1}g>({*Q z1uo`7Q7OUOnm*+62r`F&w>l+3uzDIZGqc@0c3dCL8DdMtLSj1M$a>s-r$_9PqZum=O@5D2I4h9s1h44;;`Zt3ac&aww(H6ySLH0AqyBGQ5K{REs-0 zI@YdT8-Sn}46AReH@WVay`VM6)@OwJ8#dH;K^>uEH22}TBnPxkiq0g%DeAy_C4C2*=1mK@~KzmDpF*c-910fd{N zSwqji|K?C=UuO2H49Lsr;c-tR{!7yN>({R}7FztW3?Y@FK_>{MmH(jX4mo}v!+LRo zS&=+6G$mhgIM10A2Cf-ejG)Ze4^KoEhf@j72KwWp@_TpXso^F?^d)S5NAA%u!Uoa^ z+jDfLJbU!`aUJ+l9zcCne+B(St$g)km%SK%>(+rPnueDSr8jDo=N1)ue_!)QE;YRB ze=Ve9@+n;Ft?K>a1w<^I^YimP15qs$%Hc&%PJo0ENq@G`r0`9rwr+Ii>qMT~yk(1( z4K;p$aQh+AMD+c$a<=*(rnLX%)A36LEf*Ajni|_ElrNrHS^W3!-xtW}Qn^6M+r;GI zvb40c2|BGk94ewNQvf~RK zQH^cRj*UI3oS=2ypH1tF?{a>g%bskZyF0GB6MfmqZUkBDfuHNvb?{2jf4CvgZ1;1Z zNN}n0*5^;3c2KtLAX2n_ojYk6oy2uj{qH!tKgK2h8&zpiueP}Z$14N25%h$vHh^Ts zxcbeTueF@VFOp0GwG%UJmIzSLSFW&Gw}wLLetzyC1*}@iHM4wW?%P!;;USbrvl&u( zLMxyELd$ZW*1;mjZ^ zw0vN2KX%?^A_DDB=rQW(z|5Zo>+jWvPL+ckHRZh|d}Pn=-7g|sfcU%h-A>MJ zboYi^Mj|`O6B!g?5a>)l{|8{WZHcThGPaUG5!`+bYWJj&TgV43r zgAU!-2ixfe?dbtU-n@C!%C?hoeJ3X;XO8vw-MeEnj8A`rv=nHx7OK4++ShXxH$6p1 zQT*5eN1p=7xt%pD>y4Jeu&ool@&?Kq=BGb6n$9!#U3GgHL)CXx`y}nDgXH5NN7H~! z*KOF4o5KKUqOiRFn(NRi&5X7U*}MLDzsjVeKoj9u5rL7w5n#YUz-M_dS|Cu4OW;>T z7m-l59+ql@tuk%TQzLCgVOasY6vBLqIHo}-#U?@O@H%_oIu+oN$#^MpGgaIS-|2cv z%uai1;V@5DY#w3112a5qLJa)>QduM(?Y~sw`Ja2nfQ^plGWZT=9v&q$#0)_|&I~to z1>Hm-nvjDtfm3P(!50sF7Cpak&@AtjUAx0&q>~zCy>4(kh`Ru7R~$5$D3mkpmUcF) zvZGMg5mqrM1%_xdsFc4jm@wF!p1?4G5&}AjD8LymXzh-%Us;C}SG;dab^Q{kn3w(i z`lRPxvv0?amq^e?s7?mF{6WPaZpLiD_0Q^*QV!73u}Yw1_EB`grD#*4bm0`6H*Pc+ z1|@5mE`yD0y*H0=6>B!^+&*ert7!W9psdEB)A&>^l(6_admYVID9LV z9+tB1$?-MUkwW+E+VvVaR-pOk&!1@^dw9|1zVC}I=`J|uwAcJUGi_j3g6;>AXcU1R ziNKSD4hSH>K|0u#^O|hv8Ej}UpP5SVX%pINkL`5K5`%RyPYDwT)z1((SI6JuB{tx| zdCl52K=2ceJ3*3o#cp^7^qK0#0oK}?O~y0;$Ivwddnn_wSz*Vk|Ku~S|9=UC|F=A# z_}wZFu!evEN;uGNlv^m;4S?ghinDTfaA}R6(ZSUkx{|eMBkZI;;v%78+8u{jQEGFvSujckyo9!*yk8ar>PzlVJqbEOZVedzSOabk8B}nUtV7gjlHUw9EHp>6+e65o< z4qknjy(gCv@Ug8;6Rn(ZA`yeO(EtpCBi6Tf-@fR}^bQwFo*pWUTSkxj<!Yv zK_5Nf1vN*{*x1+-nIqy*?; zh$o`->8Q5`(UbiA*k!{X@9zjYOhf|lC1HQhtt^eXSzTwt!X{Fj_fu|Hhb2K$p#+?) ztgo*hROE9?O#xlw57N>l)zz{HgAF)&vv{1m`(4J4b?;HSwwfP6J7s#H?gUjlocE;j zM4Ny+k?{coE2Oily<;f4mWCS~wwlnSgrNQYr^%HMqJT!sHE#E%vRR&;#EfzrIrFp5{syBpGK>Aip9|IZo;lqc2`_->k9`v=~*$9;cYKI9PLiA^( z(+GKER*o6Z-q<9K~rVYyF6B0zT{j;m< zA93J=KiraD&|2KC)xraSj&u=VspYT*RLKf(V-Uq%gS)WI&1ue=8_d5vJ3{*QM5E*2 z&ywuzIM?Zs ze!H5UsJ_twj!P&fIO-QR;1p;)2&Z0w1|P!CDf) zTBQMEqRvXk)9a8}GBvjzVaC|vF(mZz7moH9Y56;1FNlDFh{%Jm14fUCH(kJEO3BFB z+H4}bs(wdc18z(aIMy+;idN8CKiVUdOIMOjh1d~4o-7MBKionZZIgJFq#%X?Fz?Ty zMFe5jcc4lyH9P(S*0`D#rVRWJ3A`-G10|46kqLYrqhR5n_Iw5TeRkG4eC{r5N9Y=U zhlyL#0URH8E;BHlJSm=%KSQIs3MbI*4x2~Nhn_4>X#`|iErgmHay#+Fo!(=se;~Fc zpcP~QBPPOKFIs`uU_ca>7H1oY1o}_<+MMTXxBUl*kSTDuLpT)`?0;l}*qTQ0KZKlR zOWuw>`cV#_E-ASTZlo62JPsjE!W$@y0lL)vs@P*W{%-gX6WLslbAM(*rl);58B1cw zL<(y0D~L2?JOmBObTHzy;kfJ>S8sSk7^Er?Y&T+ubW@wsU}r>&j8&@2$;o+XZu$+6 zjK^sax)mb^PGlwp^@~N$!U3#|qs-2ULiAt`_Vy>4nI%Dhc+HT`A^_5tw*yk>3f;JI zBM6QP4ki*hg;)sGU@!_^(%8boVr4k|l0$CbAzvs#5*jmur|L(}6gV9U`YHj8w&RaG z8E;fS%?()54k##o^s~H&b@o1FmymW#s?axWN~dRPVPF0uqm8{ApnVY@^Y^k zgaYmMUE9zVWGsn(0jFNSjYc2hV(-Wn(_CrNL?KkxHuv3(QeUCFwM<-(EAPgY4I7O5 zYd>#EW?T0q1IE%pE@IN60+jg;Psa;Fg$UgRp{oWn9j;TiY1=ks5VoPshV`+pU@Tm1 z7U;;nLd7Q-R`U5X6TtOtR#3eIJ>j71_FtaxzQ!ZqY5OxR3}J#xT*4h^18n zrK+nqphPEOleE%QwH%JC#!N$@8wXV~$$O+HhxnigO+a!xZln>4Bp#(#GQ}qnirNA2$6sC;wAnOjHfLMKkUIPC zzc+3>z;ReMdJF1x$@#$@Zy2B%ya?F=WFbqDXv@SbZ2N((M%F)5)!O$k;RNUT3H0Or zVcRDL1}{=KV%{hDB*>nZa;1E$-T-tG#ShXB>%gFFVLmViDP113koc-GQ7PbFd?2O| zPnHk;;Mi+J1fI<)&buiob}olev7D*;!bhgpq6ABxS}o(3mRbb@8@?WhfP6^M)u4-n z?upV9ikj>4tOpcSeNZFG>30WHzQ@QOis{RDoVJudPJ-ICf=vWt*!>A{e$ULRNWE~T z{V)YV?fiC4fpHjnc|cAyv{qwn3>%$*!7M#UU!H z1xQv;`d1MDsrutoo(+LV*|3c!66rkw;v9GuqKIr(ZVp9NJ%jN;YM|?FkFZp#_SN?+wa!EAt2{-g)eA`56aPnRsN!vyV*a}wh# zlBa_qo#`1=cqW}aPw(ikc+%2t?GcXs1hufe2-(3-9r2HiJ#~4pAj>WFW+Q7^jp%cA z(|iwX%g_|x3y3VwQ!3Vhh;lD?SnE+ruOM)FQA*f_|MKGbV#_X(3!|L`=lnO4R5}9` z{u>|H@*01aLm+2{2zNBQj~=l*C+8G=O+$BpGKVIeJ|vV27&S_>?2*J!WjvCsAd+Lk z75K~--qB>X_r5BLS39Sif!)bPh++{fshn75T%;8jvCoHmLP7yL<638te@}lZ?0=^E zFYG6a3lP2r82-v}*DW_IDL)L?zF%P%5KzPXRwA$}X{1F7RA8Qf2bM3Ky!FdLls@q) z`43>@&sdh6{+!SSul4bFuX0nmH{h?K-8)MHv@7zUwFj9;`S*-y-bt!2HvcizEoqzx z6HTn^kis;Pl-Gl}f4R~b2{P-1Im3fVnz<^vWj+#i{JCvxxou${zN;LnkMT>*JS$6P zJ9cF=S+}I$c0_if4+Zy?l7`V^w5&fg90&667QC|IJ@Vwh3t7>cMr}7%NK`LgzI?@d z_3G8&DMo${!W=9;qQ=(nV-^4^VAB63nm%FC#bIt$e_*j^MyK+T1yD)gqZ1)fvwu8k z=l}V+?=EmC&u0Ip!}BeW{{>l4_t5f$B~5mEa`(4|(Ea5!XWEZY)TNY^eBzZ;UR~MG z-YvPJ)h_y|mG11uzg|Snxg8IdCMnB?DbTNlx34(IyJd*a{o_4~J`U*LQPyv0M})?w zZiFuDy+e0mqr15`al{v0;kl0&`B-e*UegYZsb?#v`Zx_qnkIK-XD6=e7FqrB;y>K4 zsX_PsP0IxRPJa#C}Btf|3#s+9wMWl zHWE1H?6TTbzf!A3>i|5_UN}jVA4G{yia1Q?($#yAU63mbrLHSl_YniUzPWb%)hJHT z9pOf0=Iyg1U$xYqy+^;};cYK*Z*mn(I?;~gLa{F?BU4o)YLz>7SH&vX^|Z{PD&GRD zgbs}{A^&fC+l%rBf`cZb$9$$40OCtBQ<;{ibu805?taocB{&OVN*x(?hiX0+T#?rd z;Y1;%Bt)~q6K-hSo=|f$vX=w7WOqaL$BfD}q1=2^`RJ+&FFc1nK)qKV2qXe_(Zxrp zVQH<7{tDW2b+{HNrSJ%su9Y_-lk3X`%>Ly|cdzB?;(m-XpeJPQHFND5(%3%4AaHO* z`J}jrvJ-T$cQ3zft|mIuajYN-G9`T&FrYcP?!|_yRSx%hLiqmWi=~mk28@H-hp&66 z%f1@ZQc5@mh%lKiUjxD?J!)%lQq#OaE<7VaBWN9qL6HbxeTbDW1qs^3lksp=blLxU zoEVa!BJ|2$jvo1_b=oR^(*!F)SalM0DkcEXFlgJ> zaZtmzq1yTpID&GFQ=rl=ZCkzNVIo@}^iAM5&LVpG;xzz}Ce1H@`3paXet=BRk#Z4J zXZQmF%^aW9!t86`G03BWlaNPAOKL^qrgsOuP?OStU692Ifb;uycik4t{Hk;1hpSn& z^1j>8`SP`e;Z$~0h<{5=6T#vKJBPg&TnzRL*#Ow=KhX{bJp$#f2xiYFQb zJa4vea^7_^A5?+Y2Hb?c&X6Gxr3-UWCun3d2tz91=ar}nOu$5%LibH(XeOe6oO?j& zUk#Bq7nzn6mX(y`LWkirP^7rk99~Zm4A3f+4w2Y*qDRSAzkTCbgRV5+yWW21ZEvxXjFBpk)JH!oTt0_Bkp4qDQqeNR*}q0LB} zhDgDF2{!u}12?&21ep&knv4k%_zr-FWm8eHx7f)4lqivjLK{UZtqBA(=(`xWPRrJB zlE@aJBHBj7BTnWF2rZ45ZGgY*QEpl%W9w%H?wY)$pyb9+RAhf%(EvGP;0fMq>smgB z=niPFwzwYcz_82$G;$58w`Ea=+Ciz1La6CapDy53nAywN%-^MkkTGjC z$cZqJtGFL@KPl1(UC?*2)bDwF1_uB-fR0aQX69pNmH>znBFS4xNO?itoPjrkWaosO z>q1l-Y|G8WB%%n2xz>iBJ%$Kx1YDs6)@*>%jO@LZL(ksIK<<);sJ+b4z}65sIo@AE z5(LCx4Md5E-A6<@tU0`@LI+Oj53i63;qR<>g(~X)Uw?tM5EmEsd+_H-m`JlgI)q=I z=n4^eUIgpzvscrs!qiS3CXa~h?@useCa0&_kFaI8IO!Wa6`2WOh(pRD2$IMq$?!h2!e1_|0!Q*qUKJLKIjy|A zBdbe~(UAXV1dYPmF|c6psUZ*iBM}dxg@lvKs^0lU^0nKaCwfMBNll1Li8Bm$s}_r_y%M2r`XHcIo?e=n0`wPB)#g5-@T{6ah~Mi@%iQNHGHZM z#9icO2c}mo2VOXRR^Qt4k+yd*K`v1rQPjwUc}FHwc?L8AL+gzZ++4Jp={#H`sff%Mv{31q18VH}7kDdwa={ zAQ9n0Oic6~bv&|Af5e12N}^~XIS!N71d?ImAou1@%9#g$^f%pUM9;Xqj0W)^Q7+uZ zD+BUtGF#$}Zh{ySgmwnM@n)Qo4(QJ?9pl4!3C*PjY!?q|Gt#lbNRuj(;&BNgY$pR1 z5U9l8{QQWZ6w+|S%Srlr6IY+fKyA855M6Gs!ZoW`-%4!?X=V^uecjyLJiam6W+dy? zt5;-fC&zl=HBN2YAyEx7bOMTuOxNH=L6;C-y&2$FG6-m818QsBX+IpfPWkd0{i%4Y zNgXUZl>cOQdM~TG62=b{(bqu3!2RG+%IY_1Kx=}lHOh{0LlT`#-mU;^v9z;mMAl9- z?>tA|aX=)inEII}texdF<(UYoV?T^)hLhLW$ULp!D8?H>{=S;yxcvuGMVj-xWt&9_ z9bPf?1T0$&yslfJhw{vY{M9~m5)og8M7Y4RoWtJ9?Dw?CiM zy&)V!J{-#@DA)}5g&5lq#4H2{U!lpSa}oaaehnEQREDGyN-+ZvhU5)T=oU8$ho7Ki z?Oc7Bas`qk&G-xykV+7$KV$d|q7{M*ypRMdCQSr_0>KM?>FCg|ZCKol;fbr{-2kM^ ziOd4Ym;qkdK=y3X+Ldyc+nBLON)M3k>gvA#LJlQhWy2@7I=kGbtsJ;EMdG5&h2(SB G@BR-Mg~yu! literal 16629 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