From 6d5e57a5a271d197c045ffc31c417a410442d2af Mon Sep 17 00:00:00 2001 From: Xisco Fauli Date: Tue, 1 Jul 2025 21:27:05 +0200 Subject: [PATCH] sc: remove dead test code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit boilerplate was removed in commit 270c204d336e17ee311d29ddff37392a823d34c2 Author: Caolán McNamara Date: Thu Feb 28 13:16:54 2013 +0000 remove the unused dmake solenv .mk files Change-Id: I3e7b57f7458993174cf14a089e6417a68e2ae60a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187256 Reviewed-by: Xisco Fauli Tested-by: Jenkins --- sc/JunitTest_sc_complex.mk | 3 - sc/qa/complex/calcPreview/TestDocument.java | 30 - sc/qa/complex/calcPreview/ViewForwarder.java | 1003 ----------------- sc/qa/complex/calcPreview/makefile.mk | 114 -- .../calcPreview/test_documents/calcshapes.sxc | Bin 13030 -> 0 bytes 5 files changed, 1150 deletions(-) delete mode 100644 sc/qa/complex/calcPreview/TestDocument.java delete mode 100644 sc/qa/complex/calcPreview/ViewForwarder.java delete mode 100644 sc/qa/complex/calcPreview/makefile.mk delete mode 100644 sc/qa/complex/calcPreview/test_documents/calcshapes.sxc diff --git a/sc/JunitTest_sc_complex.mk b/sc/JunitTest_sc_complex.mk index cfd869b91917..43b8f356fc88 100644 --- a/sc/JunitTest_sc_complex.mk +++ b/sc/JunitTest_sc_complex.mk @@ -9,9 +9,6 @@ $(eval $(call gb_JunitTest_JunitTest,sc_complex)) -# sc/qa/complex/calcPreview/ tests do not work automatically (they request "Press -# any key after resizing" etc.) - $(eval $(call gb_JunitTest_add_classes,sc_complex, \ complex.sc.CalcRTL \ )) diff --git a/sc/qa/complex/calcPreview/TestDocument.java b/sc/qa/complex/calcPreview/TestDocument.java deleted file mode 100644 index 1ab9bdd3fe5b..000000000000 --- a/sc/qa/complex/calcPreview/TestDocument.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -package complex.calcPreview; - -import java.io.File; -import org.openoffice.test.OfficeFileUrl; - -final class TestDocument { - public static String getUrl(String name) { - return OfficeFileUrl.getAbsolute(new File("test_documents", name)); - } - - private TestDocument() {} -} diff --git a/sc/qa/complex/calcPreview/ViewForwarder.java b/sc/qa/complex/calcPreview/ViewForwarder.java deleted file mode 100644 index d1490013a9fa..000000000000 --- a/sc/qa/complex/calcPreview/ViewForwarder.java +++ /dev/null @@ -1,1003 +0,0 @@ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -package complex.calcPreview; - -import com.sun.star.awt.XWindow; -import com.sun.star.container.XIndexAccess; -import com.sun.star.frame.XController; -import com.sun.star.frame.XDispatch; -import com.sun.star.frame.XDispatchProvider; -import com.sun.star.frame.XModel; -import com.sun.star.lang.XMultiServiceFactory; -import com.sun.star.sheet.XSpreadsheet; -import com.sun.star.sheet.XSpreadsheets; -import com.sun.star.table.XCell; -import com.sun.star.uno.AnyConverter; -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XInterface; -import com.sun.star.util.URL; -import com.sun.star.util.XURLTransformer; -import com.sun.star.accessibility.AccessibleRole; -import com.sun.star.accessibility.XAccessible; -import com.sun.star.accessibility.XAccessibleText; -import com.sun.star.accessibility.XAccessibleValue; -import com.sun.star.accessibility.XAccessibleComponent; -import com.sun.star.accessibility.XAccessibleContext; - -import util.AccessibilityTools; -import util.SOfficeFactory; -import util.utils; - -import com.sun.star.beans.XPropertySet; -import com.sun.star.container.XNameAccess; -import com.sun.star.lang.XComponent; -import com.sun.star.sheet.XHeaderFooterContent; -import com.sun.star.sheet.XSpreadsheetDocument; -import com.sun.star.style.XStyle; -import com.sun.star.style.XStyleFamiliesSupplier; -import com.sun.star.text.XText; - -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.openoffice.test.OfficeConnection; -import static org.junit.Assert.*; - -/** - * A complex test for the preview of Calc documents. This complex test - * needs interaction from the user: documents have to be resized and moved. - */ -public class ViewForwarder { - - /** The MultiServiceFactory **/ - private XMultiServiceFactory mXMSF = null; - - /** - * Get a MultiServiceFactory from the Office before the test. - */ - @Before public void before() - { - mXMSF = UnoRuntime.queryInterface(XMultiServiceFactory.class, connection.getComponentContext().getServiceManager()); - } - - - /** Create a spreadsheet document, insert some text, header and footer. - * Let the user resize the document and check the contents. - */ - @Test public void checkPositiveViewForwarder() { - SOfficeFactory SOF = SOfficeFactory.getFactory( mXMSF ); - XSpreadsheetDocument xSpreadsheetDoc = null; - - try { - System.out.println("Creating a spreadsheet document"); - xSpreadsheetDoc = SOF.createCalcDoc(null); - } catch (com.sun.star.uno.Exception e) { - fail(e.getMessage()); - return; - } - - XInterface oObj = null; - - // inserting some content to have non-empty page preview - XCell xCell = null; - try { - XSpreadsheets oSheets = xSpreadsheetDoc.getSheets() ; - XIndexAccess oIndexSheets = - UnoRuntime.queryInterface(XIndexAccess.class, oSheets); - Object o = oIndexSheets.getByIndex(0); - XSpreadsheet oSheet = (XSpreadsheet)AnyConverter.toObject( - new com.sun.star.uno.Type(XSpreadsheet.class), o); - xCell = oSheet.getCellByPosition(0, 0) ; - xCell.setFormula("ScAccessiblePageHeader"); - - xCell = oSheet.getCellByPosition(0, 1) ; - xCell.setFormula("Cell 1"); - xCell = oSheet.getCellByPosition(0, 2) ; - xCell.setFormula("Cell 2"); - } catch(com.sun.star.lang.IllegalArgumentException e) { - System.out.println("Exception creating relation :"); - fail(e.getMessage()); - } catch(com.sun.star.lang.WrappedTargetException e) { - System.out.println("Exception creating relation :"); - fail(e.getMessage()); - } catch(com.sun.star.lang.IndexOutOfBoundsException e) { - System.out.println("Exception creating relation :"); - fail(e.getMessage()); - } - - XModel aModel = - UnoRuntime.queryInterface(XModel.class, xSpreadsheetDoc); - - XController xController = aModel.getCurrentController(); - - // get page styles - XStyleFamiliesSupplier StyleFam = - UnoRuntime.queryInterface( - XStyleFamiliesSupplier.class, - xSpreadsheetDoc ); - XNameAccess StyleFamNames = StyleFam.getStyleFamilies(); - XStyle StdStyle = null; - - try{ - Object o = StyleFamNames.getByName("PageStyles"); - XNameAccess PageStyles = (XNameAccess)AnyConverter.toObject( - new com.sun.star.uno.Type(XNameAccess.class), o); - - o = PageStyles.getByName("Default"); - StdStyle = (XStyle)AnyConverter.toObject( - new com.sun.star.uno.Type(XStyle.class), o); - } catch(com.sun.star.lang.IllegalArgumentException e) { - fail(e.getMessage()); - } catch(com.sun.star.lang.WrappedTargetException e){ - fail(e.getMessage()); - return; - } catch(com.sun.star.container.NoSuchElementException e){ - fail(e.getMessage()); - return; - } - - //get the property-set - final XPropertySet PropSet = - UnoRuntime.queryInterface(XPropertySet.class, StdStyle); - - XHeaderFooterContent RPHFC = null; - - // get the header - try { - Object o = PropSet.getPropertyValue("RightPageHeaderContent"); - RPHFC = (XHeaderFooterContent)AnyConverter.toObject( - new com.sun.star.uno.Type(XHeaderFooterContent.class), o); - - } catch(com.sun.star.lang.IllegalArgumentException e) { - fail(e.getMessage()); - } catch(com.sun.star.lang.WrappedTargetException e){ - fail(e.getMessage()); - return; - } catch(com.sun.star.beans.UnknownPropertyException e){ - fail(e.getMessage()); - return; - } - - // insert text into header - XText center = RPHFC.getCenterText(); - center.setString("First line \n\r Second line \n\r third line "); - try { - PropSet.setPropertyValue("RightPageHeaderContent",RPHFC); - } catch (com.sun.star.beans.UnknownPropertyException e) { - } catch (com.sun.star.beans.PropertyVetoException e) { - } catch (com.sun.star.lang.IllegalArgumentException e) { - } catch (com.sun.star.lang.WrappedTargetException e) {} - - // get footer - RPHFC = null; - try { - Object o = PropSet.getPropertyValue("RightPageHeaderContent"); - RPHFC = (XHeaderFooterContent)AnyConverter.toObject( - new com.sun.star.uno.Type(XHeaderFooterContent.class), o); - } catch(com.sun.star.lang.IllegalArgumentException e) { - fail(e.getMessage()); - } catch(com.sun.star.lang.WrappedTargetException e){ - fail(e.getMessage()); - return; - } catch(com.sun.star.beans.UnknownPropertyException e){ - fail(e.getMessage()); - return; - } - - // insert text into footer - center = RPHFC.getCenterText(); - center.setString("Third last line\n\r Second last line\n\r last line"); - try { - PropSet.setPropertyValue("RightPageFooterContent",RPHFC); - } catch (com.sun.star.beans.UnknownPropertyException e) { - } catch (com.sun.star.beans.PropertyVetoException e) { - } catch (com.sun.star.lang.IllegalArgumentException e) { - } catch (com.sun.star.lang.WrappedTargetException e) {} - - // switching to 'Page Preview' mode - try { - XDispatchProvider xDispProv = - UnoRuntime.queryInterface(XDispatchProvider.class, xController); - XURLTransformer xParser = - UnoRuntime.queryInterface(XURLTransformer.class, - mXMSF.createInstance("com.sun.star.util.URLTransformer")); - // Because it's an in/out parameter we must use an - // array of URL objects. - URL[] aParseURL = new URL[1]; - aParseURL[0] = new URL(); - aParseURL[0].Complete = ".uno:PrintPreview"; - xParser.parseStrict(aParseURL); - URL aURL = aParseURL[0]; - XDispatch xDispatcher = xDispProv.queryDispatch(aURL, "", 0); - if(xDispatcher != null) - { - xDispatcher.dispatch( aURL, null ); - } - } catch (com.sun.star.uno.Exception e) { - fail("Couldn't change mode"); - return; - } - - util.utils.waitForEventIdle(mXMSF); - - System.out.println("Press any key after resizing "); - try{ - byte[]b = new byte[16]; - System.in.read(b); - } catch (Exception e) { - e.printStackTrace(); - } - - XWindow xWindow = AccessibilityTools.getCurrentWindow(aModel); - XAccessible xRoot = AccessibilityTools.getAccessibleObject(xWindow); - XAccessible parent = null; - - try { - parent = AccessibilityTools.getAccessibleObjectForRole - (xRoot, AccessibleRole.HEADER, "").getAccessibleChild(0); - oObj = parent.getAccessibleContext().getAccessibleChild(0); - } catch (com.sun.star.lang.IndexOutOfBoundsException iabe) { - fail(iabe.getMessage()); - return; - } - - System.out.println("ImplementationName " + utils.getImplName(oObj)); - - XAccessibleComponent accPC = - UnoRuntime.queryInterface(XAccessibleComponent.class, parent); - - System.out.println("Parent-BoundsX= "+accPC.getBounds().X); - System.out.println("Parent-BoundsY= "+accPC.getBounds().Y); - System.out.println("Parent-BoundsWidth= "+accPC.getBounds().Width); - System.out.println("Parent-BoundsHeight= "+accPC.getBounds().Height); - - XAccessibleComponent accPPC = - UnoRuntime.queryInterface(XAccessibleComponent.class, - parent.getAccessibleContext().getAccessibleParent()); - - System.out.println("P-Parent-BoundsX= "+accPPC.getBounds().X); - System.out.println("P-Parent-BoundsY= "+accPPC.getBounds().Y); - System.out.println("P-Parent-BoundsWidth= "+accPPC.getBounds().Width); - System.out.println("P-Parent-BoundsHeight= "+accPPC.getBounds().Height); - - util.utils.waitForEventIdle(mXMSF); - - System.out.println("Press any key when the second line is on top"); - try{ - byte[]b = new byte[16]; - System.in.read(b); - } catch (Exception e) { - e.printStackTrace(); - } - - try { - System.out.println("ChildCount: "+ - parent.getAccessibleContext().getAccessibleChildCount()); - System.out.println("Getting child 0 again"); - oObj = parent.getAccessibleContext().getAccessibleChild(0); - } catch (com.sun.star.lang.IndexOutOfBoundsException iabe) { - fail(iabe.getMessage()); - return; - } - - XAccessibleText accT = - UnoRuntime.queryInterface(XAccessibleText.class, oObj); - System.out.println("Getting the text: "+accT.getText()); - - XAccessibleComponent accC = - UnoRuntime.queryInterface(XAccessibleComponent.class, oObj); - System.out.println("BoundsX= "+accC.getBounds().X); - System.out.println("BoundsY= "+accC.getBounds().Y); - System.out.println("BoundsWidth= "+accC.getBounds().Width); - System.out.println("BoundsHeight= "+accC.getBounds().Height); - - accPC = - UnoRuntime.queryInterface(XAccessibleComponent.class, parent); - - System.out.println("Parent-BoundsX= "+accPC.getBounds().X); - System.out.println("Parent-BoundsY= "+accPC.getBounds().Y); - System.out.println("Parent-BoundsWidth= "+accPC.getBounds().Width); - System.out.println("Parent-BoundsHeight= "+accPC.getBounds().Height); - - accPPC = - UnoRuntime.queryInterface(XAccessibleComponent.class, - parent.getAccessibleContext().getAccessibleParent()); - - System.out.println("P-Parent-BoundsX= "+accPPC.getBounds().X); - System.out.println("P-Parent-BoundsY= "+accPPC.getBounds().Y); - System.out.println("P-Parent-BoundsWidth= "+accPPC.getBounds().Width); - System.out.println("P-Parent-BoundsHeight= "+accPPC.getBounds().Height); - - - - System.out.println("Press any key when the footer is visible."); - try{ - byte[]b = new byte[16]; - System.in.read(b); - } catch (Exception e) { - e.printStackTrace(); - } - - try { - parent = AccessibilityTools.getAccessibleObjectForRole - (xRoot, AccessibleRole.FOOTER, "").getAccessibleChild(0); - } catch (com.sun.star.lang.IndexOutOfBoundsException iabe) { - fail(iabe.getMessage()); - return; - } - - accPC = - UnoRuntime.queryInterface(XAccessibleComponent.class, parent); - - try { - System.out.println("ChildCount: "+ - parent.getAccessibleContext().getAccessibleChildCount()); - System.out.println("Getting child 0 again"); - oObj = parent.getAccessibleContext().getAccessibleChild(0); - } catch (com.sun.star.lang.IndexOutOfBoundsException iabe) { - fail(iabe.getMessage()); - return; - } - - accT = - UnoRuntime.queryInterface(XAccessibleText.class, oObj); - System.out.println("Getting the text: "+accT.getText()); - - accC = - UnoRuntime.queryInterface(XAccessibleComponent.class, oObj); - System.out.println("BoundsX= "+accC.getBounds().X); - System.out.println("BoundsY= "+accC.getBounds().Y); - System.out.println("BoundsWidth= "+accC.getBounds().Width); - System.out.println("BoundsHeight= "+accC.getBounds().Height); - - accPC = - UnoRuntime.queryInterface(XAccessibleComponent.class, parent); - - System.out.println("Parent-BoundsX= "+accPC.getBounds().X); - System.out.println("Parent-BoundsY= "+accPC.getBounds().Y); - System.out.println("Parent-BoundsWidth= "+accPC.getBounds().Width); - System.out.println("Parent-BoundsHeight= "+accPC.getBounds().Height); - - accPPC = - UnoRuntime.queryInterface(XAccessibleComponent.class, - parent.getAccessibleContext().getAccessibleParent()); - - System.out.println("P-Parent-BoundsX= "+accPPC.getBounds().X); - System.out.println("P-Parent-BoundsY= "+accPPC.getBounds().Y); - System.out.println("P-Parent-BoundsWidth= "+accPPC.getBounds().Width); - System.out.println("P-Parent-BoundsHeight= "+accPPC.getBounds().Height); - - - System.out.println("Press any key when the page content is on top"); - try{ - byte[]b = new byte[16]; - System.in.read(b); - } catch (Exception e) { - e.printStackTrace(); - } - - try { - parent = AccessibilityTools.getAccessibleObjectForRole - (xRoot, AccessibleRole.DOCUMENT, "").getAccessibleChild(0); - } catch (com.sun.star.lang.IndexOutOfBoundsException iabe) { - fail(iabe.getMessage()); - return; - } - System.out.println("PARENT: " + parent.getAccessibleContext().getAccessibleName()); - accPC = - UnoRuntime.queryInterface(XAccessibleComponent.class, parent); - - long cCount = 0; - try { - cCount = - parent.getAccessibleContext().getAccessibleChildCount(); - System.out.println("ChildCount: "+cCount); - System.out.println("Getting child 0 again"); - oObj = parent.getAccessibleContext().getAccessibleChild(0); - } catch (com.sun.star.lang.IndexOutOfBoundsException iabe) { - fail(iabe.getMessage()); - return; - } - - for (long i=0; iUV2_bZp7J88q2p#ENTIe9Cw9rfFAgG~8Q!&yJ&`_i(N|34`hK`63 ziiipdqBKDfLBz&~=iGB{S@-+b_fOWmYi9Pd_sr~>_nn=YJp>CdgcI;PJW9!tGw$Tb z<3C9Mj);R85)eX+iYF00Nu=NaZ_lWJuuz4VP#^io=ur8%kYIUl&tPxDze!-L^1GwL z3jq9%at9I!0p3y35yVIZMclszRpmc($_7S8ctax17=VWh2$BFYiDDqCKwc>jmnMW;nN0!=km3TWLILW$04YhZ zxF%Rc7o#c-($WOOj6nz|Add-{$CQW13CwkpjoAyxLIND}gYbr6c%#9B2^fiEU2RkE4yQthO97{Ax`bnnynPMIty#=39qyaO<68*vE98w$ zN1jgSiY|u46!Q3Hiw5M0CZvhPUKNST)gsnGe5-f@n?U}p+;O$wm};JwHb`7MZ(yyM z9~DPz6OXMCORQ0eZ5NH}M#uL{r*Qx;E5hsLIJ1mlX(sIF9hkFRc=IeF#iks2j?h8} zo)lkLmM?F5JR&uUr^p|kPvpsuhUUj`UGT<|N!TJkvEn$fn+_Z|&1I_mV6}mV>k^o6 zMDw_GN%=D=cU2&)4B2s;U$GUX(`yWtD;xW zixlQbrq#mItGUwKVCnaG^Xs4mwS0N^nDX0sQfeeJ8gS?Di)A!w<=2W|sZlFz6Qxnm zjX9EcnpkUU#H!n*Zr;bY){5P4m2B=(Ny;_KdBl?QNUna8T!J z{)!Q8Ip}dN?`ZCku{%6ZXbP((LQ72wPrD3;89d|TxS>V9k@rfg<4P;5suNS@&u58@ zj~36j0@tQ2w`P3SKiYlRCe3Y&=fO_QG z?4za{n^F)Q#;e(k)lWgN85nuY>qEKaN@O)aRjE%|VHwXBO<~eW8GTB7Y zC=Bm*&C50t5P_lU0l_ewhuK}>I)xj~bzZ~>$I+|zBcHu0!^dU|Xhp0|JxK6t5LAx* zGEr`!7BrpD%F0jGwv+HKC)T#f*|#3XV6|dOu}K8dy#9Fvp*dQs@XiU|Siku);35po z?`-B7@$P2$gP`4&g-O#BLR|@)FK)X%LkqTf4aytszimaoiiykpbmE~ivLH{D$f#Gu z!>xpsQ4<$WoYS`Q$;W_X-5EXjIff{!&feQ5R^6Z5-Zs7^4mnU`J|B7#j6aT&#C$lT zQ6DalF|N-HTT>y1(x@}IO)dmSa3t^T=vapCCrxS@?s zWOkf)X7r1AQQg=zdspp`MPL?Iq*xxsppC76+SV52aRY!+YV2c=e%ok@>&Eu7DEXak zx}^51G;>Mqb%wo6-G`#9H%scfo-ZAJ-m)(mRR6w6^pY~8IS0v;IMQfx$T!1N49aOq zqFC!+#27$@-8Ykvfz9J-e9==$rW`TNz!HH(Wp7KB83ztl)lWl_tU5b1Fss%}VM9w? zGH-H5XBsL6A^g>#;$zqMKyaoiU>`|S?d6ZO#3fid8X%;rNXa<@5c7421WRfz5aB@J z13)O0a446U0}vscH=o8wk~JJroy{ArjuI*Guh7}`cs42^ca4DsCfz8!kQXlzV zQW>=@J3Vtd;fa+x7a?gvGGm{Z(cC9B5l!fL(Bf#vX`!ueeSw?Eur<@>ykf*jB6Twf zm(mURtkfIf@~5Y^&I?*3k^y!oD@OgObZ1n0s};Xu4;aW#h^uUOtJhjIU{S&3gJtK* zD5Hx6D2FA%*obLlx>`yfskjq9Ae>0pLI_cJl2%O}D1GoVbT(tGsd~4i&{?r^BYs(a z0FVF`*V6-mjWVgA_;ZcH0K=UY|FXs%K-3p7J*NHqVjiUmy_RzIG_y4AkH5)T%mLadd(_ z7-g1vS>Q$r|1B4TLw$N_xYQ(+e}?GcHAA=w!&7%YqmTda(-IjCY7CM>X7kwu%en)3 zTWQ949eoztdrz!Ln$FS3d}`QMQv_x_2HR(V#_XRKbFWXCYOi}{yZ8%7OJ$lFvip%| zH3ET1N|J07{rnMvFl*vWud34di>+rw`Ky%jaq0JN#xr`0RE8%<{C&*d(-#GEnesG_ zFPw*|_lcP_^13B&0_z>+fL-8&Sw%>eLSgyzz8VT%y#f!M2f05j8YoKsbjO3U-Xje= zLkE1>mk!zHZ~(B>>cNLEB}XheU2i{+$)3;Ape>-R*8uPgN5xVS6!;YRn0b~0<5s@l zB~I#L+oa$2Q@+dhi9DHZ6jgDR=*OC9)+=z5y;-fkyE?hZ@az)R{@PYlO{z-@_PEES zSUo)oMyE4nwIn^#e_NL!!VI|CDpD7E-W%@8ZQ%|`ztfe(Tk$Qeq$-zH+iG0%>(Hp? zEIFypb{zyMa!25(ju~Qsu}0GL4>4X8Cv>W?-uQ3`?7i|0qf`*jJRQa#lgwQ)f{x$p z7miCpy8kGTvcLx)laEbSHhRwzjSFN#>ycaL8Tm&&Ej~8e<-Jt)5zc+dH&ov?9=sp2 z&}zRb;c4I2#??#}4;XS{ze)gM_2@A*#<$%ZzIRrlzF@cTbRcFEI3nN)HKh)-IkYt! z-*bvMPBcf{?Eqn^@7g~n90#U>k|ePJl)bhd6Gjj8O?p?-@wgu9FaXRq0)Q9Prb?*W zGTRt|x#%lUDId@C4pm+pb!4c<(5Ecd(n|iuB4Z67+w*V&kMeUvmMi{7 zqF(`sQ|diDkLJO_d7DX+2yQj(e5LzZGS9Eoepudol7x(Y5%Sd6%pG#N_NM;j;rd0v z9rb590lt@Gzt#<}Fg!F;$pGDEEDOoM4_mNsJ>;l2U!Mz1kbePIIpMp1N`9u-3QlE9YhRCc53ehsC)@>NSyp>2A$)>;f}3_VLA1VLA#g$u-eWfEGBgP)!N zUef1JX3;1Ei>(kc?05`xDe9ggTZrrsb&%e|<`MS~7nk|_$S|%okc2-u#XiG;`yp*W zBONIqv{5(M)yIG%!@N%0z{iP0xP$K*E|vYxArM=$ zCq^QFGH2JP>@>BKziy@{M+pOCY5#;G`K0iU0wVBzSJ=Y$+2~0S8lXUndQ6O>2Y~^A zGA=-_iVT>-Sw)t>jHiyc5;0w)D1iWe&pVPUfhs+0mnB}B2_~)$GLZI{{jpRR7fJ3$ z9ChcB96Hwi<|zRGJQ=~6gfK7@lQ#pRJl8=c!AP!>S7MSov~6p#;laGm!mRN#{x;t! z_cO8nXqVJC0F>v8$V@nmvqKd-1dwii+*ZB-djjI($r z;rL*rD037(H*JqEyy~aLAg6I|VN)-dMR{?!DC{qgwty=VSoy#tvcH5Q+;CH$H;q=) z-5!4NOkfJ%^(|OkSNXZ0pU>@oAj^DUpg&;9uNY{!8M)~$8W9b3o`)JSU`Ko+ycyvf z1X&~-;4~CqO|TXQfCjt(5hOr30}>73GxbOwV4&J*&?j`{Q%uSf27OhT^=dPE4ueV~ z!9S%NeBr@;fit}V;HU@&#I7GMyktYr?cKSzDES8~wb<81oxlLT4BSYmMsN8{jO9_e9Nga(wU0>+d|Q`qZK zNF^zx;!ueUn5iSMz6p4-2wuypty$ zd{##2pAcbyj%~t76vRuqwAYSOqzFFG$oP2@oP(r%vJt2?iJNzUN$au6go8L3T*Gnd zHlmIr=N%>4v>&RwEW!c2y|R*2TX`J9poPVk-7=!W(vK(*Ey{9)#0Mo@WcCE2lM)hc za2VRUgtr(&JV0DDP#_6(XcZ&{fUahM6lfqu1uS45mIZ)kQ4uLv#1*>gK$}D)NNqaF zY3doe698G=mtvFLgh?`3G61+t2D%r6o+G2)Y@*Tu*0vMQIe4J^vtw%2l=EB{*}F63 zDIjiJ7%mA;CcxVP>_SP%7&_gA1dlwY$R|+#PozU9(Pw06551s5`D+-=BRaU(?wI$VtsO zV-K3~f}f_q<4F)V62vFIC?Tal4l8%Z75)x-m}Fl3_^EqQaWP8Ykz-S(H10$xI5CC< zF{3C(F`fL{4)Vskmx^lXVE{p&D9v?N6VKg8TilM=0ZZFK$H)--aEOHm7ZXtB*#0NQ zCpiT(j@)_x2rJqBz4%!@MGO=GT!vetr3*irm#M`7xBx&=4=z1DEQu06#L^Lqjsyj=+3_ z0d?Jk>k%|x+Jkf$Oh?H~8g%9gI0qI7IWuO>iVOu)T3WvSKv{sPG%#o;P?zhDptX$?I@+o*q-P9x~=8`b@0llAYQZ zr+x*5b;ra1wI=eT9=ehW$9*DQ)V_hS$tdr#TFs!>6bC#*wJ02;*9)LI+bV}HSn1|lheV8<}% z1ss|S7o>i{Pg@y`r+_0KLyJhvMU1dJ9xUVZG#s8X(@lQdijKz~NRSnxNe|Hkt~#Az zq_X-!SVBEuc}GmcA+6rXrhQ=0A_gF{%UyK1O%Vq*^kA;mgFgC%d`Lx3da!Wxp&`#K zApwH@bb$#EL;?VsaXzDg0|jqEuajAQ9Pq2yyYA$CZ-z-hLf}PG=npogHD91~tRIqL zh{J#lNkNJXs40XQQNldFPe6C#zupz)kI44>UHH&TB#TY-e zHF?W8&VInA`j?Y0@FAJIZa2WOh=7W zN#<9v4iez~fq-!$$ee+AjAPA%8DFmw{iauQ%L6LR$Pi=zJw19=j>5cfFmDRTj{uAE z@QVUkFzdxAVSzeWaLN>vNMnx}Sn4PHXJZ7>66+li3@UX{uKAbHlw(ou$H!D41Ck={cK(B2g>2zcV!%Xs> z%&UD(b2TsXZ4B!qfkl{tB9l>Z9ZN;>4^?xT}%x4TQNXPQsKF~Dy-U|0Hs zCuE~e57eb9>A)=(L3RO4-`HBe)899Rx2Wg^!fDYSNve?uYgEm3oJxbr#qC<}$VP7P zJOGJ_cbI4DB0OoGhxYo}&Cyu`LFRgG{V~oWJr|t@t0k!pP8f*QTPm2Hek{%4a%+wE z4#!d2Td>v(EW<&(1R$^D&6TvevL?%vNL))ErCTcQIe9XTe0?440|6|$llHOo9O=iBarjS zRvYbnJNG!~90xmiF-BDANiwpBg6h$eC{-HxZaPr|Ivvs@@diV&G$Bnar$JotA90h( zO3a-Yh%^PrM^0MUE9c(ew(r5}%!AoUZfzuF+PwTPe+mDI_(yGt-%VvcW6`gI`!l~t z%-J>u648?omX3L-H5PI52rTOcke8Cwfmh$*;89ox=+GdRl!G+_-c5pUE2D@xsb;k- zKX#>KPrUdHAnQ7lHwoms6EE&6ktZm~4h(Y{4QWL}gwgH&NWB6S;H9|(3lt=d1ue(Q z9<>F)F$mjD=*R~2q<2IR8MuW^YU&rB7hrtqoOUYo9Sba)Ff*O}I2Xnf4)dQE^TG`dcya0r15N25 zaWY7D6X>OHDDDf#K@m7dco!)Ro5V6hkNS*dWqr?!s%1&TB8IREnzc6j6AGZpIa@UD zm_H7_2(=(N{IbZF-V}>OWkP5tHS__$$~5MtK*1y>D+VNl!2LWL5>A6EPNU{QZ!Kd5 z;<8yk0<6@(W+o8kwnPxA*p-x(^dAu`-}c`qWC@}^i^w%{faFN|7I(#tOHSK(D?%uW zZx3;iXdv-kSrHn@jG%M!;QLBqnZvPu>FD?Gzr8^~MSFzc!r{rAu=pYS@@o5YweNLr z*q=5-#F}xB^cHh;XYg!h@D{1t^((>vAopGsLSxmP8QDXpBDKDF6?2krYXfwMIM!O)#00~o8!*^5;Z9bA(P^REBL02eKPq~CQ zRgg(#N9G|UGCU37RGnidWasoQv1>+{#fk>n23RI& zv3Jt*pyJA7K+2ZJZLO>vN^Pp*m9Ix#`Z6e+KhWqhA0uwi9~rjkCFasJQSHo~g%4A7xZ2=Ac88#&MPCGona@bBlL z_x2pRd6npKt2*V*K2OvUw$yuds}^|R)+D!Kxub|{Lm)}j`(+^Lj3q`v?Lrv(JqGHu zb|M#{w6J|G|2ao3{)+IBN_DTSXD{d&_P`zmVnx~H=UoEC*l|UR^juVUMqq6AUvv`n)ie}|Weuts*V*pxzoxj~{vD79 zDeth*C}L>T@6(F8!vSH7s$ahUV!oZly#b%od0W5X#XiP)!pAq+9MminkXewq0umQm zZFp^(l_zeI^-jGE#^+HwzPQ+7qcM4E*S0oT@rfDxn1h9yBXscOn_Tsxy34HBm7RY^ z|7uu$$a5-8@K@*eTCrPPpEmQa$CV%k?=6XkqaWsX48DK)I*ij1f3ZP2`(cE#c6pMg ztRVNXPo0=H&UtTMp@+3u#~G79XPuWP<=5 z@Wf2i@EtAAs7qs{AzhuxpafZ|DonU|Q*4K`k^*NyM^CIjzV^h}& zSAF*Dyt#0Wbqp)>4@o~;GuQ?52AJ-Uxn(XZCTWuM$9BsSFK@~({~%ABr(XRb_5)Pb zBc64=Bu~6EqD_4Q#P5CVDCu*y&vWTlCKvpmh>!@3j^wog^E~ng$z`egPHdvRPz z2E3saF8ONq%=*V7lkwGK>=m2lZeAGy)b4h3k$#mB)5HRu*3ioXC;M*PHe<-4H`vo9 zI)2^V_ARW8iDBo}ckOYouqC&=82~jfBt~BPET}ak=G+kWN?n2N7QVeBY?dX(EOqRe z!0D!GYB>c$*%NG*wH%xGjg7?LZ-6!ni$65%thX|o_Gm9cxL4igIQA=nX3$^1s=d2%=>5D9x@)jZPq=N_5~NO6Xc)JELLxMbMMm6KE- z7(H*NXMsM0&VLfmE!F3Q6&CL7orhpx7qRPK7xx|Fa&qRCHu1@I?P7h528Tu(@ZXEUs`@>^b>nN=b|R%hRPqk;9Y$#G2NZ+ z;J2))HzAgm!O;B_D&Lp(8DPj&^W(5`yz0LDZRwNUxs+8*L^Qq0E`hyXxAJG3Php*D z`uRSw(aW_uL2eLRoLY?u-&e#7Q}SR~+r~&!>D}_i{D+@ptfeoW`wBCm~))%Q?DLwx<^uRSvG2esE?J!14T+J6-;)i28Pk4zJm}=k1cF zX+@V34`p~n{bEGltvhs_+H|!|dufj-WygI5yhU*^u zaP%Eobt}!sZR1Lm-p6LlNTuo2sj*NUu8!2g3tGIs9(Q=R&SX7*f5Xf2S%YaHl*sCq ztW#|1ak)Y7`3I`oC|O@);h{47_ab4Wo}*ZoM!^w>Cpn3q=U~q7j-+&FGI z!deGPd7HwwcfnrV?3jctd02-eh9iNaF0Im`nqtOb?DeDu1Hv> z-7f)5dN*%#NgeNxWeW^wV!o^RYF``E*6TAKFZL5Xy6)}`wVeqseVg&|>{f!*u>9Qz zrChF)%_@^m`I~0f-#0u=QZ{(;X`15iQUezSJgFk{g>g&ftZp7Ndkp^>I?m%1iwzZml!Zp*_M zB7m;hr^NeSC96`kdcolrb{jq=b!giUeq+e61xvh|VgGp>_eHBg@?*{TBdZ@qq_eck zYD^YFE+HkU+5ykSOv*yrf*SqSKF~F@warp8-GWZ_HojDvYwjFMgr9k5_xO~WEbF(n z=W~IL-`m^fOg~TqcCX;;tn!!Q2u&TXBZr^tUjDg$woZ8F%lP5s%7XC68zEW4BnQR* zs*}HhV`m3BpH!Ve+RrxoEYfN-Osi=oPLrIu*Q&_@)4>;*Z|PW~VJh~`#h#3Wq+15o ziO7K1b4b_4sl}h;ulHhVTVhJft3RKsthW80_I%~*g$H~40D=V^p@tb*{s;#ET%-;> z5&rN~_-}Rs^MRcZ85JK)jQqn)aCsm4QkC=9!oYI!)*_rMa&HhOzlO=$y z*PD$VyGz?)rL|Vaw8yRm+T1m?%agMxc!tdKGN+`b3yqa6^M70a(dyxERaKEZmh8g` z&)9VE$y;ukU;0K=XBu7BE&G}H>DS(lP@w|FMLytIb+Os4WRif)nZXQ$Lbb71ooBO? zaapelQy;d~UZKQuo^U^fZR@IK6~=HFE4+eAk=9L$N0axS17A^vo$cE+kWR-7C#Bf2 z#=$o(E~;nGYSyyOOs2$L*d$qn?qFX44&zSpFNClOUNi4JWW)!En_Vod&<|5B8DHuX z$(@{>T-m*)Hf|w|oLz}{EVUnp35(UvbM8+b^0cB2$UUr$el<9&L7J;Ay+h;wa@{ys zJ0eHm(~$X6x5xS#IVpEVF8IZ%u-CzJk{9%sV2qi}!AFxSdKc_2ab~#to8-G4t|XyC1MQGXemOm@M2nmDq~XIB zfp|Gh5iSqZ9EsVvgxcl|fA?Xb>*SWo$xKk}yZCR;Gkx4eucI{*zKy!JaV@2Cm`}P= zRUPWQ?^a$Lnig{|?mT_S^-b2(onid#{KjakC6jkjdLes`Wgzp7C)aHPl3ZPsO4(JA z19DF^2b4xWGcW6j&9d9shRf;CJaJt1$>8emEQvucxyEzylzx41HR$zpL4r(H&Xt#4 zke9g(?028-(B${@8x<)0P35KPuacFYDw}EDtKmP-Wtz%|->az8+Uj$WuJw@!D%%pL>)=S{} zntU{Afd9=gq@!1^n6hY3nnqu}yNY;qeca6>_2p6Nd^2e>dMs@w;9>K23d9iac=*lq zO6wH|!&o$u=Fgo+CFW}Dm_Ah%Z)1vP|JuBScrS&b39ZWq5@)hk!z!5;D?<$*AK>b-P$O4j!| z_pF=EO||a?Ro1N-%e9T8@*PfdT*&UD4I3wh%|xm9YIdE}t%% z*$-RBFKUSX?C81`qBYwJ4M99{#<3X!?v^l z`+lPf^Tt(4)c_Tw_2QkoO9IF?$Fr#-KKr{3tkSASD0P(a*fN`EdBNA1{NE~OjjNkT zHdgjl(#*)*5^1f62d~FShU>;WvzYw65Mnk-)4p7S7U15z2$hRD;l%xDp|K&4fbjz^ zb++0IfA?~%JzIK2jQd>jDb8<3Rfv#1+n3GCOCjHbuDe-{pLp7sZE7PZj(c=mvp^$Q z@vbsoNJafZ$eMvaZI<+$Fa3L-3v>CyLN6TCj{nnX>>6Y>Zg!xXb>6qB38RF+PVK9V zQ!+C+(T+jx}YwY{DMg-cIjy`P~$r(>*P%a4SlM|88D zvuj+VXrw7Vbi1>4V8w#6ve3F2bH~oW`QWp@-v*lN_iu6ufB31adk`*s$yB*9i%isd z%Q9wB>G1$}zdhXVTAaLAGunGhX00f31Sw=D{g%q{MWNx8c}_`;*VYI8&tyUM((0=l z2D9Hh2k#eDaX(txy%trZJJf9pftAAEo(8;);w`!Eam~`?QJix2V)*T3{U_)2Pr4Db zNNuWx`iQPU^PJ38dxsiQ=KQ4;AmiJZip3; zQ&6xW5kqbMz{rP1_$eqDIT&I8%p3iK1$$75f`YNN2v+1zVe&pvJ|a3t|EuJK)`doD z{z=jn@sElkX(}j$9n|p;*57p~9r)iV{FxWQ{>cy*91t4xH$FBtRz4R0M|%`CG&B_c zp#BB*@%|e}ijD~W1LfnbKny1S?%#p4pS+^NU)bNB{Tuz?TJako@|TYOO{;(R?>9u} z=*08GbidcgKDpnCI){Y zIq!Jy13N_LuL}R8_}{TU(Fck+n1VV42Nf&z1F?T}`7f5gsedv>M-n6Ce2BgQp+q0- zAHY!05Tdq-d8ls~R#8OZADZ}o!j%4RF#P`wru;YT?-wI7>YziBQ32k6wlK=mE0`$f z9TpuLr7eON`LocQ7##dpnc_dn!n^{B-cf&*YWx=bkIAk1yQ}}q{aw=^#s9lWi27|3 z5~F?($sb1HMsY~wO?6K4!;cLfd-uKBHZ}rlcC3vaytv)q(Xg>?ky=}9&?DAe`0E=B zb*=z;+qkT3F2FaBNh5xAK}DI@fF~@?8aLY$6H?MO!LfJ|*i$)rrHa?YcnEKfA z`p(&~ZI<_E84fGKX(3Uo1g%XB8#FtWa@YOP#rJIjhPKG7)4Ob|rV)O5PgHJus^qo5 znu)Qm60r*U;$VC!$uFBU^}kB)xnx#6|7 zE%NaA?NO(9W=;)Gw~kNU=V*~GUf9zLK5@Z#s*Lqj+(!SGvPUhqToRG;9!Z^>@p&5| zAniRdi;GSQHg(lI@kh?3Yh1gJz(M5JZgrS6ejxyDCZyr{O z{l09Ms`BUu4%+;$P2#%DRJ7lI+$c(h{{%^(kBdsyA#YC%O0S77%f4LqRy-bEnp*6R z(_or9KJ!(>!qC6R8hPw;qR+}p`6ZBW`A0?gC35&MEYDlGW?$^dOP)QGExA3NOYSnu zhHcWlV|j>`t6dk23pJ%y_n}1iNO&Kl)yCMy<>62OJE8T)~+>|ncpS2%` zzkZ(Zw!Nh{`)=}Z((FaVS!|2-dFm@ky0qFUcvJn7)Y`h%rtQ&TL|pj1Mx5u&#rq#P z?~ZWVf5X@K2}$k9KGImrL6^reSaPP+-MBtmgVaquLGguWuW*FQugEwM3X8u4&%P7l68x!C$pytk3`ICMmTDCGp#_tl1UlbttN&Bv z`=8=#tS`cYMxL-V@?2#9aWMi?QQDET5g>g+Pmr{$g&xc&cauoEk@CNW5A8RVhF^Fz zITK6Od!Am`Y1-WowVj{cH8FlpRNzb%6D0XCqXq1ombJJD-^!4=UMYFxP|dSJ)237Y z+a1)&gwi2Yv(xmo(N)Vs-E{lWvEg`|h(_OgcT?WFB}>0udDEHAzTwuL2Z|Vkg{m=I_Vr-s316z^&+{oNG}RSED`NdDqC3Mc^!?$0a5lu!WKNAC6uGQT5 zzBd!JYR|z*d?vyBC4^Bxj%X9yx+EOe-(Yq_K(tfn6p;6LZ`Fw!`A8hYr_Qo_)Yw*A z-hYoYZZ-c{NSD(-q9l9(t0+c64X;`v>0< zwje#=<%c?#pgxR(_kGlBV;ENO^YK$pqrRTXV52LFrI2St$kGa?m$#O{^5Z9dIM&&q z3b*Xv_Qg3r^_ps;EI;H?eQld_@A0#9ci74v%d#9tpwAzb}kM#2HkpRx(!<# z@7+`^vnhOdp;#&(uMscU%-85*)umGd66uS#3ca>$l3RZjq!ciaFKTdc1GDHKa0JGFJ{G^vIpI~b9+3i z_jdS!$F!O?%(gE7DJk%g+O$c_n`jVX#=JZ4CRWz+tUw#?sv1lDdjInKmVKe`xyom* zRV#eth}VnC?JA$SGSKXeYPx6rG=Gti$ouNVy=%J#Kjs?68}C1K_CoK!TZzfwQ8>K~ z|E=KRF0DC1AOH|>VDb?xfFMo)=YcZ+`{jr~2!B8Rx+?LXT>p6?;%^3k!9nu>>w3gr zqW{{%_}ATy-)9~F3_S<7?7y6R{3qkTn!LX^KmHlku>ZOh@)zH4`tQS)|1^mI$%mFa zxGZw8(*8D&|Kj?qng2Rzf3K_m3_oT5eU<%B&VL<^-;?^E;l9HEGQ|lNP}px6{NUGe LFpzwTzjOZsb{&8l