From baa703928f50e53a66f925fcf72082df188482a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thierry=20G=C3=B6ckel?= Date: Mon, 24 Aug 2020 13:03:03 +0200 Subject: [PATCH] Fix multi-page table merge --- .../segmentation/SectionsBuilderService.java | 64 +++++++++++------- .../PdfSegmentationServiceTest.java | 40 +++++++++++ .../Merge Multi Page Table.pdf | Bin 0 -> 39691 bytes 3 files changed, 79 insertions(+), 25 deletions(-) create mode 100644 redaction-service-v1/redaction-service-server-v1/src/test/resources/files/Minimal Examples/Merge Multi Page Table.pdf diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/segmentation/SectionsBuilderService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/segmentation/SectionsBuilderService.java index 16017f95..0e84afa1 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/segmentation/SectionsBuilderService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/segmentation/SectionsBuilderService.java @@ -42,13 +42,17 @@ public class SectionsBuilderService { Paragraph chunkBlock = buildTextBlock(chunkWords, lastHeadline, previousTable); chunkBlock.setHeadline(lastHeadline); lastHeadline = current.getText(); - if (CollectionUtils.isNotEmpty(chunkBlock.getTables())) { - previousTable = chunkBlock.getTables().get(0); - } chunkBlockList.add(chunkBlock); chunkWords = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(chunkBlock.getTables())) { + previousTable = chunkBlock.getTables().get(chunkBlock.getTables().size() - 1); + } + } else if (current instanceof Table) { + Table table = (Table) current; + // Distribute header information for subsequent tables + mergeTableMetadata(table, previousTable); + previousTable = table; } - chunkWords.add(current); prev = current; } @@ -62,6 +66,34 @@ public class SectionsBuilderService { } + private void mergeTableMetadata(Table currentTable, Table previousTable) { + + // Distribute header information for subsequent tables + if (previousTable != null && hasInvalidHeaderInformation(currentTable) && hasValidHeaderInformation(previousTable)) { + List previousTableNonHeaderRow = getRowWithNonHeaderCells(previousTable); + List tableNonHeaderRow = getRowWithNonHeaderCells(currentTable); + // Allow merging of tables if header row is separated from first logical non-header row + if (previousTableNonHeaderRow.isEmpty() && previousTable.getRowCount() == 1 && previousTable.getRows() + .get(0) + .size() == tableNonHeaderRow.size()) { + previousTableNonHeaderRow = previousTable.getRows().get(0); + } + if (previousTableNonHeaderRow.size() == tableNonHeaderRow.size()) { + for (int i = currentTable.getRows() + .size() - 1; i >= 0; i--) { // Non header rows are most likely at bottom of table + List row = currentTable.getRows().get(i); + if (row.size() == tableNonHeaderRow.size() && row.stream() + .allMatch(cell -> cell.getHeaderCells().isEmpty())) { + for (int j = 0; j < row.size(); j++) { + row.get(j).setHeaderCells(previousTableNonHeaderRow.get(j).getHeaderCells()); + } + } + } + } + } + } + + private Paragraph buildTextBlock(List wordBlockList, String lastHeadline, Table previousTable) { Paragraph paragraph = new Paragraph(); @@ -73,6 +105,7 @@ public class SectionsBuilderService { Iterator itty = wordBlockList.iterator(); boolean alreadyAdded = false; AbstractTextContainer previous = null; + Table sectionTable = previousTable; while (itty.hasNext()) { AbstractTextContainer container = itty.next(); @@ -85,27 +118,8 @@ public class SectionsBuilderService { } else { table.setHeadline("Table in: " + lastHeadline); } - // Distribute header information for subsequent tables - if (previousTable != null && hasInvalidHeaderInformation(table) && hasValidHeaderInformation(previousTable)) { - List previousTableNonHeaderRow = getRowWithNonHeaderCells(previousTable); - List tableNonHeaderRow = getRowWithNonHeaderCells(table); - // Allow merging of tables if header row is separated from first logical non-header row - if (previousTableNonHeaderRow.isEmpty() && previousTable.getRowCount() == 1 - && previousTable.getRows().get(0).size() == tableNonHeaderRow.size()) { - previousTableNonHeaderRow = previousTable.getRows().get(0); - } - if (previousTableNonHeaderRow.size() == tableNonHeaderRow.size()) { - for (int i = table.getRows().size() - 1; i >= 0; i--) { // Non header rows are most likely at bottom of table - List row = table.getRows().get(i); - if (row.size() == tableNonHeaderRow.size() - && row.stream().allMatch(cell -> cell.getHeaderCells().isEmpty())) { - for (int j = 0; j < row.size(); j++) { - row.get(j).setHeaderCells(previousTableNonHeaderRow.get(j).getHeaderCells()); - } - } - } - } - } + mergeTableMetadata(table, sectionTable); + sectionTable = table; if (textBlock != null && !alreadyAdded) { paragraph.getPageBlocks().add(textBlock); diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/segmentation/PdfSegmentationServiceTest.java b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/segmentation/PdfSegmentationServiceTest.java index f85dd8dd..19498e67 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/segmentation/PdfSegmentationServiceTest.java +++ b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/segmentation/PdfSegmentationServiceTest.java @@ -105,4 +105,44 @@ public class PdfSegmentationServiceTest { } } + + @Test + public void testMultiPageMetadataPropagation() throws IOException { + + ClassPathResource pdfFileResource = new ClassPathResource("files/Minimal Examples/Merge Multi Page Table.pdf"); + + try (PDDocument pdDocument = PDDocument.load(pdfFileResource.getInputStream())) { + Document document = pdfSegmentationService.parseDocument(pdDocument); + assertThat(document.getParagraphs() + .stream() + .flatMap(paragraph -> paragraph.getTables().stream()) + .collect(Collectors.toList())).isNotEmpty(); + Table firstTable = document.getParagraphs() + .stream() + .flatMap(paragraph -> paragraph.getTables().stream()) + .collect(Collectors.toList()) + .get(0); + assertThat(firstTable.getColCount()).isEqualTo(9); + assertThat(firstTable.getRowCount()).isEqualTo(5); + Table secondTable = document.getParagraphs() + .stream() + .flatMap(paragraph -> paragraph.getTables().stream()) + .collect(Collectors.toList()) + .get(1); + assertThat(secondTable.getColCount()).isEqualTo(9); + assertThat(secondTable.getRowCount()).isEqualTo(6); + List> firstTableHeaderCells = firstTable.getRows() + .get(firstTable.getRowCount() - 1) + .stream() + .map(Cell::getHeaderCells) + .collect(Collectors.toList()); + assertThat(secondTable.getRows().stream() + .allMatch(row -> row.stream() + .map(Cell::getHeaderCells) + .collect(Collectors.toList()) + .equals(firstTableHeaderCells))) + .isTrue(); + } + } + } diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/Minimal Examples/Merge Multi Page Table.pdf b/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/Minimal Examples/Merge Multi Page Table.pdf new file mode 100644 index 0000000000000000000000000000000000000000..feba96320909675df66f5ec207b91d3a33e2cdc7 GIT binary patch literal 39691 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

wRIL(>$dk@g(T#@03mC8x;I)7&6H$m$JmM^16Wi zYKr8kj-RExN)z?+ipVu7uwUq~eW|etQs5@Fn4m-Q9;C^h3lr&5Vu%LJi3Yw94G0qr z1Q87gJ~6@w2@AME!uvtt_~Nph!s6sW;haO^m_fqN2Zd4zuBj5CBm~@9MA9oM)t(~3 zQ-}^+hzwX4?5fUQ`db`f!2cx9+w1A~vg-Xsb-XF1)m%HbQ_FHk4G#&WLGEKX7t8_) z-G@mGS|}@q`%EQPXhIr)3MG6X>&7B{AnBF`o6fyjkJHd;GJ^kN2G6*=xl?r)fqZdb zStBo28)~M@wwE*;1=vfR86{E5eN%^jdZ1-TOwXDNWka&=U|G<}^ExlIVXDB!5+f2qJ)sX&;@iBYA-M@POK z)*;X;c`Xz`ZFMj6!#(@1r}ZCFJa3Ou5xgC)#uWOz{Q4=@^M&8NsCVz@E40epSl3G& z(9Z!eAk*yEpd-dtdkpYr{y31()2r7HS|@&t4Sl)PJV%75qrWaf1IREYuP?NUZZ1{8 z?4%zEX=IS$+%Gg(hWzAN4tlr~3ykjw0QM!*{;@T2c9;67ZEJp1;r(l|nNQXQe17`7 zqA$fEH-ZSSiAQZOLktN~yE!3IbhpznTe}z4N@6~WH}J2~)TRhYm{iOeD`hM)8ZI?{ zJkdZn85W??1|LREIXASlT;u1Ucv6=7*q;s;d4vtnho6zuzZ9RCFRGUxmYY{-8+1`A zge?NQcCU?Vdjzom@Y4Ho-5F`_*-t`%Y)$Q~5<9ymS1EN*TN+tRRoM%YPsNK3o*QhC z(qWZpz-Wt60RGSL>Xwz3bl?P<7d7j6H2I0-fEpm6MZa4-T}3C7wGaYB-o z!!SLXeA>nl#3^tCDswDdmntjYUFRYnQu+~jcxZY1B>(>IyZza@*sZJV6uER^o1M?P zJ84&2Qx~lp7l(0uqg3~xZj!kRS`m8-lQ+U!8-vk9l>+ScdX4~3fU%f6jy zAME)*E$t22Zu+yS2@1!UVCUr{WB}u&$KX)mEKKu(!e4}*eBO+S(JZp`U>5}`PA>sW zjuSWML=0|3Yoiyb9hiY1hpj@28RA_Eq?`E<(~2v83sAIc3p^;Y=paEpvQ!K%IHijN z>OYrgo8x(QaW?#XKeBp2IDddPT)JLKygG|f5dI?=iV7@i<<&@I%K)bB+hwh`z`nXTSB%kC`hvj>h! z>vju^e2v!bpE~PkIpqkJ=_YNz6J&Y0o>esFxXzcGFX}zxXY0yxR~Aoaw4ZQisLvjh z-)L4IHLA^;%chi4PiOep!RBnNHfM^{ZdNxo-UDVW1+~3+1I{rzW|qs!rdIr~si%Q4 zc1Pmrma=E0X`w+y)>P(n=43JjiY=282;dGgveaYXJrH(AoMb^%GK(>qmR7rq;9sf( z>fFwXk^G0PmrN|rCfKTCnrY7b>oD?~rGRAoEp-YP4%U_nq~*gjK14+=4Qh3`xw|xR ze`@mVjUX)Yb+7VW5_9#O}iAQ~Fr2e~Tyx=RRh z@d7nixU+l69EKCeLSSox;EH$50nMH@rcsxfocmU7>+!jn1tRp$6h8pT_xOXxNc__B<5~NuL{wcY&dFn-+W6zcI#7k*d%rxw zZHDBC^B%D};H*1Rod|t!BgWMD$;E}Y&v+#7!PAbT zc3^qL=KxdMkI;p^8SA#=%;YDcUf6PlazncDjFqYgoDoQ2!Y4GZXl_Qx1DaodWY>g` zYgn8S*sL+`1I1eI=LlN&?hr@E&}r?97z zQxjeBzBC`v%H$rYgz+7I=80O6%y5A(M;(2fFhHCN%NgF4oSDb#gwhXa`FgPzb}841 z*%KJI!~d23ayuevL+G3oa!h{A&?)$eQL!YZE!Q&}zV4!NyW$Yxac;V_XY`1vUPjc+ z`k;Hlo=F%6vlDP7TZUd_jeQcfYA?Di&JUDvA!whcAGq9l{fXFZL?};Q$3Ru@_1(ja0=LDO0A7@QaWfla`oKM*5euj&yy7 z?K<36r`DYPoP%x^eC4qFW%(`cCqta#Pem6}+nMDcnkoVN-vXvo3ozo_BzwPsTcGPy z&T=&oSTrG1`VvY^(ItyO&Q>0|<~3KaPb2z^JJCB9DS03To!E{6qBFhro z@^}a~pk?*DlMj41^fu^n*In2haNdRX9p;_w6Y>j|AGotnQ7}uAvw>LlzR(=#G9FW| zj;tNI_l{T6Q{+?VQ;yF7RCM|kGq?=5Gov#Jb1!Kc?*#V*{VLS@gq*>r`r11Cz6lBk z)HcoypL4Tw;B%sL@bkkBM!Ldw;h%Zb#Sb#os_K>8eH2}i&#e!651_80^gx~`{EqgfvHCz(BumrG#}I2)#-DQTk=r1MKFeAX zK&qX(-oSZfduKK~=H{!1<9|>%C)k zFh<})?3mGCy`IGscpcaPnsMQ|N8*>%3;pPf=!M8DgFw78TNu&`A=U!K8`CY=viBSv z{wr|9R!DqCe`c0>t8OGrTOw&(a;f|zK=|?MW`d@O^4fgnVSD%ctbLlj!0q&ivLoJ^ z2qEaQUj$8ku52U04TeUyj|;uTS*Zn*%jKaB6w47!Q*OCP<4R%g_1)$4ob86zftF7o z3n({!(&<4i^4MtSgzg`g*4CLn=|k|49z6wGQ!B{b z$E6nqnQsO>F0Pn2&%P3FJ*MSB(A?-Akj)Eb`~dV3B$cEvx)Licg!jk&%<{6zr(Nj9 zGE_ED%0|q^KB?8=&e#`!p}O|Z{;_;;zkUYVU?m_fIuaTOM$RiUH=96TfA~CLWdT;6 z0ZsGB(Fr4F80ZN{f}0asF?T3nFCR$zeV-s;ksX32C}w2^w)NUz<6=PSmRu|QxPN`o zwl2dvphYj%7r8);)*H%Ku~?3=Gb@baRusZ=@iYpn%>(@xv0+Z%qy*>(4nj`j{)o`s z(DMGP(AZsw1+Y2?lte~TVCP=EP%v*z7bO#f>}1XxT9j4co1k>vbbf;qPbdTDTCY@6 z10y>p$Z?8o+#5>9)PYvKg_Ij|WFKk%WUhL*sb!LIWi3(DdT7-alvFi!742Fy7p>5Rom0??Ts=JN+w++Cyyt>Bzo~8+e9z*nu6CyDe^lqc zdyzhL)nPIJnoM$0E8D|bDrCoWg{%FF@`oh7Q1f+>aS1qE^h2O%&W3n{p#{H)}1^36^T)E>U%FW4G%R@!xB-) z7+qvt@cdCUWv|4UuX1%-179&`zNbcb(Q>b*_V1bE*IZ`Sm9O6KX$KsRc*i0l=9lE} z39nSal~B}Hw6|9@0EodCIoGI26lt|OMBqghAB~LZH5{hyas9Hk)O37b;Tl8LGtJpQ ze`xhROGP|}GBf2HiVIwv$=@MhQ7ks5WOpqnkr8I0dmhiE6qExI+{wReW!4NHp3Yw0 z;&Z2~QE9ln^;GF6H;rYKcaADw*pqCK-c!6+HIz*dKD${F(O%IkQoQ!yy^uDvo$E&z zU@K$Nz@rkQ2}{6>R3YY6gOL)!2Q|GNd?l6O*2EsHER)}Y4~Lmy6p?4Zt4jbjf!v${>P{S> zW%0u~KXKhZ4{V!XZLy0#+%3bpgbW`yL5mhaPwYogJigKD5}W?6nKEhDjGFT0*v%^| zI?{h{&`1nD27M@;dK)h*jMz$|(=*nyH9m;c;AV0lvD<*aX$?5i&_9`$Nw%QPfmJI+ z-LP^^!v7K+xq_K>G5HGuH^mH-Y1jA%j?>%79~mb&2gmI@85i077h!vmp!LI%B-YDa zic1;3*^6R2&5Y_RwycY(sT~E>4cELVBixT=!x9T!3xh`g>kN~1FxVS7krpZL6!;%WN2IF>mK0O!EZN6 zTxSxiO0(#D9ix4@9iv%~8rbc>dfvZ}`U=eG5irBpY-Vp`md8AFwFP@z? z>?~Ie15goP-u`7Pm%tAY`hJ?#2@*R+@^AUKw!=bRMiJyC^4ZB^$r;hM@t3Bz9) z3i1;SM0He2wR}bj8DLef!U4omRc^o~|3Xmv)W?cx%TKTK+_w~!dz9V8@JxcIw}l5E zdU|K6)9yMpxegzu)Dnu*&Z4Gh%SgKQ2&*+;YjGz7zK%^%}09dyX;#c4`A)vMp$`iE>8F8L5jRw74%O*aF z{nxnIl&!!L+SodY(S#-9&IJj++r{K`B6f5i-}QQ#1SPTP0z;ZC!l}cjv>%RqtcdqD zUzsfkKr?DVXdHdY#5wqEYN9$egyBb57xoDvhk|#F`x&KmJIzOxK9OP8Sdp45!G6fi zNQ46qY;%>K<*4gM#?#*!Y4ZqQT(Fsf6#q%u2^;~G_N?Y$Q?{U>BDUFyg zQY5fh49~o@ZRv4SPgtGq{X?Fe{J)7^lr)ni>hjVq0fJ%v8hFtj9wS|=l$-=!4i3jwnrtH{nS!TanbUNVqHVM(%zH!5$uGeTKPMN|G!Hmq zp#;@Z_8-X4gsRYZ6Qqq!6C*)Z1shwX6AB{8 z$}#wf9`8jN{G6}u?6Zs4IDc8{j*uC{Y`_jEplp=#E?- zIAsTKKiqTn=aoTaEuP7X6N7wxs++k$hU-J@)qdIpIAL-s@0-h;Z%S0Oa?zLuFRF6% zL(M3k1iNPCAWuV6u22VFaKuks>Bko%MB znh@OX-yi1t1Ea7s)D0KZSJsO0)}`JUWG0kVT05P{^5QCZN<&rJs7a@WgXrp~W9Ga} zl9#V6Z#Yd`)A)8DjJq$rLTo3zVC$>mP*P>j;ACoy(%zr~g0@|Hi6|zDgqlD_JF}lZSynS-$!O4GAx(Y$ zr-(iB*fkj23kVU|piiyXK%+#hRKl`J^>Foe#qbGgd+qJs`f>ZcBw{hPt`d&H>?jOf zK9g8kG%~gEe)0}MqsfqEBe5O{0$G@#m5LP=z5f+cC-w6&3G)d_f~SmO`_z}Ih;P%q zaX!w7o7FP@=|!#g08Ap4Sc=h*=$uLB@711X4?_v?$gWt+98>iA(|Xc1&bI6uxL*C2 zB9ucH%_r`aN9lK_Tl27i8Coq!I;Y%lJ^wC+i}^1+t3vp!l6@fhtuGQ zbfzk%JYDUFaA!FiEVpg+t$RkZQJ%l6K7)Ews$7BwPV|SIp^GS z-&uFvx8Coqx7Pl4HL7b>b^X!3yQ)7QK$4<4WYz||4SUKkJ8lhc(STG@k(@0W4m)mW zs$S4SaS84`4zrEGx$%;y9M9bevH+pU++=C*euJj-DI!;`>HgB?+gY%zJHG?4M8F$Z zrOFT{(ljGkg-J(sjazA?>F%=w`djbjt_acp?IuN!1JKCPNv!>?}q5CaLa;Z^$ zB8%}F@>snK;W#W3)3#i9@fOs=7uCT%X9s|pFH$ct)|yT^uwLLPlQ`R1ZocL*N$l7; zpdWxpoiVw49t;j1@mqEA52uMkXQ)n4bZe=b_RYHDG1!K7+ALg0lpNKwqZq(hPC@PO z)Z(?1yQndA2t2a$^6o>subnu0Y=pQa!6>HAt%E3-g2H7^_y)#L;ng6PJ6@OsYVHfi zUM0PPQRL*=Iim&?44Ur~FH`J+<=%6X@*Lhc43ujh!=oJP)&7U&9JA7n3G64oI$*}S z!0GBD!S(F-CLirlbqPQA!s6(An6mu#)Q`u)Mq+#q&)@sN#U7TIvyKIVGiW{o>32{B zd%nQ{nV(~Ga~oLcP!^$2izfQvXHmm^gI?$das#*HMHLi&gK8B_mbiY;H#t1hlyA?-qIM%v((K(g%;7^Op^7Uq%92%gK!lQkpna0{DxQ8&kaG(&snk!y3zpN-lv$R_N|F6U_>)1NQBHLII;eI?7w{2Z*9l7B7ogZ&;q9?WL^P!Fq zNCZ|#39HVM6{mj zkKDaWM_c0RA=E3;DbK>ShWK^CY8r329;G+AYl`O_aQVGYx~CTA+wc4+4`IUK;xi@C z5VHAGI7y@Z&oWTSQKrWEl$nG#{rwjADPaRR)}`|h`B-%Op73#^LO*uGs|htU+{G+@ zmG$Zi!br)8t9y#UGz14a>P~9dQ1e|KbBQk$H(4`Kqf1Fz0tmf%JEVES+WSDMBrsSr z%DCGs$}LpvOq_5zw_N=mvV&o*=~vzfVo8xh>s`XE!%;f4%^!h=jvC2 z>avS<-aKm_E*%nmkJn~!++M89)hDFwG;Oi{@{sP;fO*Yfv z1w^}XdiFEEJ4g%M-E0ft3d?&ij%^V~@`P&J`nR@q_<+r-Yn4OSR{Pqmv(25hzhew6 z3=KAn_O=Lh5GQODB`NXE*>wPRP?~>|8VPkai8;!nT^|{n8P57UL9d7&7YJ-dQIcm zmnP9Qpc8({FM@Glkqzb0Y*ap%suCI#-3|TNU=nzILSdH<4$tARjeXu)4wJ`nI4=X* z8b#}fQB!b(rPNxK>Q*-MAz^5U zk#>F-=ybpZo0#`T{qnch$Z%zzfXgb%8aq;f3{j7uNgP$Hk2< zfBTozwHLc~m-qUTtEYKbkB7Wrh0dT=Da4~KYO$|z4T>qZM=&5+1{7=L%-&At&}8($ zTC`H=`p^NHLhG7O+&hqW!KXm$F3%ty(|0&`kB$vnvUYS=sIzF$`sUepaA_p9%#p%F zQXM1Co7=myC8}IO1d^;efJ8V%lsjIvHboQLnk^nJqLX7*(QHV{vXrMpsaA3v<$*+M zSyD;HLHlOhQ&d$$K?RAPRMSbcUYd)yhl|PpM({bk>K(b`<7AflHs4 z?Xych0mh3}P2ud4otf&fNn1TuVmu66=`KE!5X5ucw_Ox znj`MP#hS($Bs`UH#5=?j6NG$n_*td2$Y4}`RCiPrdK}kgQ}^l9;B}KogHXq!o7l1J z_+#a|?5cN~ccc33SJ6=D2KhI3UhQm3C$*Mxt2lAPf;u!E3E4s zulj5qIJ8TKpIDQoq+;URPSRR7s)*kkVg68w(2OflCDfa1G>(`ov4ze=34m4>w?iUP z-RpFzMTp+vM;{!hF3S5~AnpSlx9AzLah-5oGZ#@UsSMS{eWbmtTN;jmj|6W(hxb(; zn%Skhs2V4AfHi`S?Z^%KXbw~k--TO5t_4>s*ali<4{_J4 zU%`M37B=S)U3BmUHTgMdrOn+j7`)tH1I7)N`B8uM)J$}oB?p3gOIs>l8L+#zDN;)g zm0a<{6eQZAyk>HKs^&Pm#S_qss+F$n^&Y7E#^$Ox4&R`QHjEO)?Z4J-b8u!(5~-sb z!>J0vGsBu0*$qBlPQoS^_1aM(1~a6j)|*h_hUdYd(=t<zyjV3(cq&NGIhXk5D z#wu%xAoRW7|K9yU>`e3X?=>5`nDqF8ckq_iDS0e^0-*PFTIo$}#k)j%`YYx-Zw&IO zVhZkSJ0x3Q#0K^H?F!A;hw-SeL{v`7+&HEMnhX38fkLFpD(cNkzgFi?EV$2WH51a~ zo_Ra%6CTE z0!bE~jx^pOOVAVUf#a$*%68~cc3g^)YH4bl^AMks1qMCSKKRY{&ci2J0<4w6fl_c3 z)X6|DS0FwhNGgv9iMx23pI!Kpyqsa4K4|Tx2Kwh;G5$~bn{O-qTS6eFlZP zmRPn46^Fq4C#SNSfDLL}_;Wa>5(+-Dv@CiHs@()(sL)Uc{Z@fa((zDbj~?2HKw;3v zUS8lpkDx#=RlRg`4tX?iRjM{Gb-JzgAF%>I!@G?icrcc**^~)36ZV_Dm=tnx zibU?^w*h0$KEE!J`^o=#ePCF#RMf4}c`P>71|E+?v_;25nMIYeg? z4%LfWIK9t3u?ms$c~;9|AOu?Fq+T0ylvk6aiT3l?42_ejD4!y)FK?9cRlfd|aJkSL zy70cGNd{S%UHEC-puTwU3cFj>I3cqp6_@f`q)5Wx@ua*=7MNb!rF$p?+&MkonJ$3B zr(LXDU~1O^3r@judM?eZ-r}n`c7v#jGJLDK$Cfrg zFQqDReK=uh8^`POEv#)N-s7&CL?ih4Y>MxCRVnJTB zv;?hJBYE}WLoUL{_DEnA8(g?qf}k{Klk=Mg8T6Be$OC_Q@0QIhF5Wkri22VitXDjc z+FmPBJh#olzPrYefJ3ZW;HVt5bWq!LG;ix%aDq8mDImEo^RMoLNEK~UD@8q$YqhwI z?L`*SkI_1E?|o?~>Z}!Ie5scS;eliZTMWJaB-lGKp3xtB8hYr=(8V~7T4%6#(eHt4 zGiq~cj@AZ9C2Os`2L`uHhfsVzov>%TewgsKWhYq$l9L zQL;Vtep=gA+2nyA49;YUO@EU{eYl}G<9l*gxijh^F-H#v)412I zrp-v}(#x<+$bz%w(R!)%L+AD&l~$;Ij^645xBr@stqwKz)Qn+TTkaKSu1id=U{z26 zYvnQ)U(YwrekUU8dC@a^EIJ*mD7eOl95XNlcIZ2e#e?kcQtU?!_3w0gH(qLOx^^A< zO}$oMDo2Z-s~qw~C|^48bb<>D=>;}TS51^?>p{xeaFtBD4EKGX@GMt@EnSkRW0a+J z-|ZM-Uts^Bf8PkpGAa2$zd)ZD>vq5HfB-XG=#(m$<*p6pyh8}yDAC;0+UxqIU88@f zb=a}ixYV}vSbZq1=iWV|5sKxVtYtjY_D0i==J?HA){Qvs8_6s&OPV8Kh&&;JJbFu* zcDqNh#tZ#^*JMr;3gd+s-WCVvIV`B%cCKt~G2k||mcb~-qF-ll->p4z)TA~fP%fLX z`T84|%D43UVMcZj=t53;YeZ5GSV`K&Z%bt&n;K_Ua9VQmxer&=()g*Pc&T5nw|5%n zkBNV)95fWRA>i%z2oBHu&XWTx+6d!jb^5j7dm;!c3LD-VrF`3@Ki<#eaMcOB!w=E59sO>v0L9HHF5sb~Plj+aPITJOH|uAUe{;2+*7vP* zULYs&2j7UeCquv2)mV_w)uf8hUqRWnJ*uW$r5g2Qb7CuWhVKsB1A5*)?|#dh2!o`Y zJAd0%$sh_b?+TT-DkxrP1`-+`WarmopVaR<3nVm88vbk`A4+mjk3UMQwafvXkdjT{ z2kW-rC8sf>jAs($EiY0eCjWJ-IMIldau1mVo7)ADl0M8P{huC%Z4HhAaHggY#w)gA~`#iKly@8s*AQbAp)W5QaZR#DD zbxfUmN#q?<*V(9ZuD+)S zJDvPuer*zYb)X8&U_?ubN&`lvl!B3HjZ#Vui7pMIKhW+Wc;EYs`*wxIq1+(izNeE4 z;kk%*2~nZY-xpq8nudSB@GdQ6MNIqgL4pJYVMx;#3>(I^OpsTKL^gwnPZc)e=1U0| zEgWm^pm;H6%5QC0wX>&iF( z^AXF?)P=f&gi(o>vbo*XP`!{*$0lajF%b86TGx-*=*$F8CvUl&OS880_qRf%L8X$K z=<65m8kVWWhz9W_Kk94z%1K|n{7L)`UycPJ-;D-RE{xKr_944`^H}pV-3j z?QCMlsU1O@+bfufBG<%TuhXY9ATkCV~QC` zyGqO8y5h=kpy?96b{|W$2e;>(`q?q(W~+{_4XbXi9hk~{CNI&Anl{vrhMV0TsWYqp z^4Ue9q9il-xmOzK%%!>U_1Vb3XV1a&-?_y;Ebj5s)${dB-_o^*4v+5X>biW18d^H{ zzY3blv9tVT|Im61Uwdoov2#UsnDp~{ws%|_lc5_JS+h=TZHO#%>D%e(wNiOJf%)+1 zFc}Q^?%Ti_>*R`J(L&IuEh?}Y7nCj%Eaz?-{}OKuE?tC`B(#qJzQX(s>Z3}_7scZU z%~zPQ6xo;j%Fh4PEoc1kdEr9%2TI>y0l!Q-UUIO{!&Tl48E4(mnTwq(vz+3U@yyoo z*51~M`8%Wo8rNUtV32kw7>c7hCL6)yLneUpS{^Vg0ktQARKS7zSQ2zH3-bNeGhru0 z%1n+BrKDNxfYzmPF%@pf{88f8&Z@H)8CYCsztzZW@cbZOqWg1EPvD)t^S4qVt#gt$ z7Nt@Y_A^MyU-TbxwnB{5y7U`XowBQBUBsq8Vs20sAReYg4PJUfH%zwnmhF9-uDbfC zU}7>&SYU*hkP?Q!n}IJdeDD4}BDbqYTDHC5!h?NB1E^Q5n-34lJ3|hb1NKgr_*wo0 z<1c9a8+Z7`;N_$GPrZ}8@P2Qw0J0Bw^mZgZ-#mrytJLNZ2Qb}J?-@T`> z=rAM>r^KjG%4A8JP|H*ad+Vs8U=jaaLmM;$)E6&3C|&`DW3c{Fp`g)D14;;dZO)6J1Api9vNI`j4U(yQr0Em$!4#%cil7 zo9Fc;hg`q&tDUaX;z|D#J|!2RN+Ky9Jsr9^9HRfV95a2-3uoKmY&(&fpAGD$uF~~} z?`y($CCy6&Re}TuaPO8FD3of~ZEgSxU^g}?xQPdky<|+xzj0rLp7D&mU@G^}mEX4) z{Guasbe%+LN31d=oY(h?Zioll z@P}lX$|O7l4(R6!Rp~{P@n+)<^7=%}@ zY>%qLyzK>L%*;Yi0WNjH&BLPaV)R;r-j*H4FL+inx+(sWkv}wjW8V?8aIg$e&U%fO zi}PUvL(1f{HX>FGwtm&s6DasO{*}C+!9M;i$j#qihl5?~9*K~L23gxZPXA(j_)Yt+ zYX7x|Z&IyixfnY9oIJ;LydFp}>-+bIyI#ba?t`hUrdIwfm9a& zf<;30{pB@XmM0=DNSGj`E5WW*s;(+l>10)Z=^yIBP$_Mos9*v<}_W6uhT}WY*pj+ z2AEynTIKn4dJ(laR!jVTeAF_BE^!ohJ^QXHBrtEEY=#R`O-I502Tjw^G!q82i$( zRNMM`t%RY>Iq+IwvM3vd{AQ)M;nDa*lNOX12bFRaV}x2bhL9w24v1k7PE?1R3e>+N z{BdUI+lHl`-ge%=XT2NLOe@?A%}>O^-+UgKUPPK zR9Buylk^V7Atiqp$x{9nF|2W6#SFAe`_YT<2skduORTV9=XBFC)$zQ{=TLJSjvJKJ z_mRjPeD4+0%!Oz7st6eSu6cwO3st#IUDd_yE+Z$95%T_EHQj=`GOMtt46+p8J%Ev9 zf8=fSOEI^^qE$lE2R2wyM30g-G;$Q>Z+90vs4EFLrB%QW8-###mLV7?T;65J0fL$) z>DWi?mz$R$-x<+21)T-+bra3QFE^U|6YG+@hqiU7paTXR6M~@#ZxgR9A+09w$YuQg)2D@|_;O%2UC^)z=V&oV}3pC9g}D?t+AUDiGQc4Mux zyI!MXk|&nC#xHKg!|huqPI@i_H{?ZcAOyE4NCzto^hCv41s6|9+PSk-8CZ{xG=lS_ z@cCqKo@k64d5eD^yi58gE8XpzSI7qa9s^hNEUnp-PYb?O8#JKYJ0vSCI{UMRV0gJDweQ9xR|2O{`2asK!zTfC%TwLhd| z!)KmarVoPW=6o%zOU>-5YO<=<@cixxvV&H>o$OTvn7d60%m*{>b~$sK^W0@Isw=^= z&J4aS&2m?*X$lb)Yd>4%I+ozeqgWsvu(rgG7+kWZNWz}MYi+Ox_0JC+bU3r$t5DwI z*L9DPKE64Gp7EVge7=7zwmJvUbGjkdH~k%_)Jt-LXCbei<{qy;hxvG4UcUJc^Y!<1 znm^6+fxhen#CJjFovhy@Nqydi{@HHF(wCVegG}eD%sAiWZmUskSV&y(=YQSt&zH2U zS(Ke$!gdj7p*>ofk=_pZ_3SLoefiP(T7|e`2d4X4wTlcOog}T!@mt#WyVuvxJ}+20 zV)Kg8D_HvMYdZW)KAo7czI*xHzE4l}_!l$b|E4PZCnVt$9E6xP_!$-F8Mah9IZ5%u zK&V?OpHYanIX6K-q(kTVQxkiCDhDIK=fL2lZXyYG9A2Lu|earn1;Y`EtBZkmep9W?ZC8@7)Z+OtJ2T3VdZk1;tb0Be5y@59O(731%J@MI1@xKz5zcx@ggGPEpVDXL3j|c{a^K1@Ruf1(_CzBi(AiOHzg!WfeqP zv2&hZWRM~Z-2{>M7_k8634Pe>Qa+oMCGj3?@@J?wvDUXVmb`bAA~jKEV*MI}s*v`! z=|rfiMpOF1rcoA*ZwR*9F)2bDQjJIctlj>Dm7n&28PF>y4=+A$eeBN+9etAWppW5R zvY;?m!E+xAUFdTc8*9ZG_np)M*O$nZ!z@27ii|)hIlekD#!pW(7I`7t(e*_Udzye* zk_?C`-NIkHpO%;HyM>e)Zs+rAmkw(ZlPD0PoXn7rznu?8B*aZF-Qu*D*Z3YE1Q`=V z$DtykBGQC_-^2z3kQpU{B8jjfqCm}jJ*}<6ule`y?>^=IRF=k7)ZGO(rdZ}0>aF!{ zC;cUy_;~C?rp8?yqG0RY7R`Lj8V4!%I>FO}YGPcHrZjn*5vIeud1GrZuj@9XdE^tu zi}+YPCwcd!hC{~Fe07M7TY46_`~1(aTZptz$TPW4!3tWt2;??AB5A;bjN`TcCj2rK zvJY!a9(Z^=CyzT{#v`y#_(eil$J8v;rq`?fo3vIDn%g!s3yw>!dhh7G$>!a3k4eb6 zc-%AXaQU}t`gyZ!x1ZSO@7J7yJBf!}o+(F79_VAw*pB8Yfftig|8w;c6s%=Z$yhSt z^DN_-ECH@XqMUSM(l}_;DS_D^vw@$%RzJ{zfBPX5qDM3pw#;oL{~0%y5a-;n zKeUKhXjkT=m^P$-! zpid&AYl#T6R3g{C3C_b{YJt!oBYqco4t!#zNqOzL&Ei?Pp5pQvCh3bU5V;nPtzT{a zDc>>+5$?QG*RNrhe@%F(-I5ZeBVP`WyRu%*$vI|AJI3C%8;A`&LbJB8v*V;NVQUd5 z2c7w8LHthZk7mIDSER=JDBNIho<+aZ<#h3Vt42aHVVWg6dRV0>K^zswusUd{ znh<3+q1+E)AsTOTeP~TzanpzG3P&!=2tbe+7c>oCli6OV^NrN}J~Q4#BpP^|6^R-6 zKqxq}9T5_|QxzlRo&y@kR)75@8$qV~`l#*b)=jcM_#tgKuU|A% z0^pHskzLWz#x03B+rKVFl4LJ0%R62LVa$@Bppk1*uzoC9Uy;{3v>W57Y!i(FE(T45 zm0=e=#^jmzvoA+n|Hg*oxG$!|oG! zKJ3q%eK(CSBgME^eCJ~mr^i|MERs`=E-I zIBQaHlmhl>P?tYw8)&upr*(xhzrc|5C#Sucn*Z2G3z*Z!sSYV6qNTUP{@Hqf5U{pGW`J&yvI*)@ucube(`D0u}(y+L=8syOYoOlayzd zQ{@b{sSW*60=t^BdqDkXPj=W*_Y46}|~_ zt~^$v7Kl)`pj08maW$>tE#`TGi@m(WgJE^uolgO0viQq9G<_5=6WkfQP0WF!GH9U| zgni()7Hl(+ua>Yo0M!A)?`uB)Y76#s%VNvd=lw}T-E>OTk9>6d5L+xd)y9{aR7=m< ziS^4Zs-ySahehk#-XL)F`g;XNv3`=HuHC6cv=3b*`(9h@R2)yu&MtLv3H#30zBN*9 zlaCo+g)J57TzZR)!gq6Ud39aV@vrvI*h{xf`c?Fq)?MmSExm3gIt5?)#%^9wh~8)< z(1)*lLM0%Y>{OAU7Fxd`2`UrY55fnQn)`yn%1x^&`R1^l|w;g=gBR z8`UDh>x`oV9lIiII_mmlVv5%I93vx(9b-o=mdnD@1d zFwz|0d*&hCivRjYNK4Q=J5I)rJZro>JD|ca?_<#RSh=OB%TD@rJ>{W;4&OohW!(07 zyDjC8>ER{4>uKE)pq(!tu@pY#d+y=CR3Ks($M5ca7rIu!utDIv|8P{hRzPYO7u(MF zGJHNG*&?y^wKjQ8xhI_HyWLFJ)Cc8x)1tx*=~^{}pcR`8gk} zxfilC)_(`Rl24T{r6iJKU~XY9z+h>`kq6=`-romgf-LzQMi3YLtgg{KQ)aEP!$4%aj{Y-D2o{2CeqReX9SIf)> za&N?RSi-J2PWKXZ>2?18p?#BoY3hJ(w&#DG2m3W;Z-2N~4VR1@(UPGIpsA02R?8%(B z@1@MkQw|&Znqz*^m;3FH*P(!40M0}5SPA2by5yWGkLH-7U(i_Yxb9=?4YOknHZZl# z*kdvK3TqmMl>ywDyWpj#47&_q8*lQj`blq!*~!0U4*ZM-CZ7vD-gWH*PT^g;gmzY1 zRYFcW<1C2S?%+H?J^STVE5pKhn+K%5)zW}_UIySa{R$?% zDlLzBpnfcEFVEJUVj&%y@i@;K{zhg6m4 z+L(}CSaO8z6{}Zhdxz5{b~yvt7|mbUb%*UMBysfJSK9oD;zc&_hFaNDRZmqVS=Cil zc|j4gJX(cxL4!?oLRC7sdbPB~j|x$o}SK47ABUuI&L&PDGhbjG9np4}3jHDi1zAM88gKdx)5p zovQdKX^)T5opTSKq=Akrddj%RZ9WB%%YoNi68;cGAu^p{>#uL=!s3L`b;3_`sjC6^ z3h*2|;-#_jJBbQlIm0D+VeL=+-G~?$!y5{S z0>g26{1*eh4#Wh5!JX_qgA70t-YAJYVgkVKG*r)U4Kcj@j-%QwW zT!y0g3EV^(jcX{zd{(=N^ob;29{PRpX1ttl8N+f9$tvOMv>*-?HfuMiK1LKPbW*?TQk zMgJJU*%nVQrYv1FFvjZTVj6&U3D@+BdL`?HN*~F3p_0#Z+|lbuUCzBSrn}9`L0yf0 zAk`l$zo0oCeZvnR@|DXGi9nb$94Xp$!7HAY1XAZHYd(k zAl_U1{6UaETJwgaysyGVserBm-YTQ2luT4zUS_3GYE_C8uh67wOR03P>YG-LQwqT- z!lnWbbV@FsH7K^q&*-IHkYNj^QGs0mtyZa0p=p(BQmX=5CFe13<1FYkg|CzsoIp9N zs4t)&lwXwdj4Si0%BR(kmq$8OWmJ+6fTF7iwaN{t;$ggSym0j2e^9*1_riaayvg^) zWZ36BB$9u9zD8d#)=S5&TGC(D9#s7;+67$~+-{D|1zw}l`gFBcbZPG1psf3+{`Zzs z@pfd|xfoaDRuPT`S)km8QcFmO3+@I)%4zidkVDH?7xckw$hrr6yD)6Ps-5_?6RuZ4 z9t+hkEM_0?3zPSgznUL!z(cbOI}`gmhy5IKc9UGkiUb!*BIJI$-*Rcwe);fyUK3W#

  • (6jmI8c!dxY+~0lwnmBpv>6Pv_jeCc1vEzj3 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 P4OI}kw6uY_A&C87aO&