From a2228a5fb662060464461bdb624d0091fab8e1a3 Mon Sep 17 00:00:00 2001 From: "konstantina.galouni" Date: Tue, 26 Jul 2022 17:00:54 +0300 Subject: [PATCH] #7597, #7893, #7895, #7898: Updated DMP template file (h2020.docx) for export | Added Dataset template file (h2020_dataset.docx) for export | Updated indentation on exported docs. 1. h2020.docx, h2020_dataset.docx: Updated DMP template & Added Dataset template. 2. application.properties, application-devel.properties, application-production.properties, application-staging.properties: Added property for dataset template file path configuration.h2020datasettemplate=documents/h2020_dataset.docx 3. ConfigLoader.java: Added method XWPFDocument getDatasetDocument(); 4. DefaultConfigLoader.java: Added fiedls and methods for loading Dataset template (h2020_dataset.docx). 5. DataManagementPlanManager.java, DatasetManager.java, , HtmlToWorldBuilder.java, WordBuilder.java: Updated header/footer/first page in exports for DMPs and Datasets | Updated indentation in exports. --- .../managers/DataManagementPlanManager.java | 39 +++- .../eudat/logic/managers/DatasetManager.java | 74 +++++-- .../config/configloaders/ConfigLoader.java | 1 + .../configloaders/DefaultConfigLoader.java | 24 ++ .../documents/word/HtmlToWorldBuilder.java | 52 ++++- .../utilities/documents/word/WordBuilder.java | 207 +++++++++++------- .../config/application-devel.properties | 1 + .../config/application-production.properties | 1 + .../config/application-staging.properties | 1 + .../resources/config/application.properties | 1 + .../src/main/resources/documents/h2020.docx | Bin 43734 -> 20460 bytes .../resources/documents/h2020_dataset.docx | Bin 0 -> 20313 bytes 12 files changed, 286 insertions(+), 115 deletions(-) create mode 100644 dmp-backend/web/src/main/resources/documents/h2020_dataset.docx diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java index a88c62ad2..e3ad07e0e 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java @@ -1190,7 +1190,17 @@ public class DataManagementPlanManager { if (!dmpEntity.isPublic() && dmpEntity.getUsers().stream().filter(userInfo -> userInfo.getUser().getId() == principal.getId()).collect(Collectors.toList()).size() == 0) throw new UnauthorisedException(); - wordBuilder.fillFirstPage(dmpEntity, document); + wordBuilder.fillFirstPage(dmpEntity, null, document); + +// int powered_pos = document.getParagraphs().size() - 3; + int powered_pos = wordBuilder.findPosOfPoweredBy(document); + XWPFParagraph powered_par = null; + XWPFParagraph argos_img_par = null; + if(powered_pos != -1) { + powered_par = document.getParagraphArray(powered_pos); + argos_img_par = document.getParagraphArray(powered_pos + 1); + } + // // DMP info on top of the document. // wordBuilder.addParagraphContent("Data Management Plan Information", document, ParagraphStyle.HEADER1, BigInteger.ZERO); @@ -1252,7 +1262,7 @@ public class DataManagementPlanManager { // Custom style for the Dataset title. //wordBuilder.addParagraphContent("Title: " + datasetEntity.getLabel(), document, ParagraphStyle.HEADER1, BigInteger.ZERO); XWPFParagraph datasetLabelParagraph = document.createParagraph(); - datasetLabelParagraph.setStyle("Heading2"); +// datasetLabelParagraph.setStyle("Heading2"); datasetLabelParagraph.setSpacingBetween(1.0); XWPFRun runDatasetTitle1 = datasetLabelParagraph.createRun(); runDatasetTitle1.setText("Title: "); @@ -1261,12 +1271,12 @@ public class DataManagementPlanManager { //runDatasetTitle1.setFontSize(12); XWPFRun runDatasetTitle = datasetLabelParagraph.createRun(); runDatasetTitle.setText(datasetEntity.getLabel()); - //runDatasetTitle.setColor("2E75B6"); + runDatasetTitle.setColor("116a78"); //runDatasetTitle.setBold(true); //runDatasetTitle.setFontSize(12); XWPFParagraph datasetTemplateParagraph = document.createParagraph(); - datasetTemplateParagraph.setStyle("Heading3"); +// datasetTemplateParagraph.setStyle("Heading3"); XWPFRun runDatasetTemplate1 = datasetTemplateParagraph.createRun(); runDatasetTemplate1.setText("Template: "); runDatasetTemplate1.setColor("000000"); @@ -1274,7 +1284,7 @@ public class DataManagementPlanManager { //runDatasetTemplate1.setFontSize(12); XWPFRun runDatasetTemplate = datasetTemplateParagraph.createRun(); runDatasetTemplate.setText(datasetEntity.getProfile().getLabel()); - //runDatasetTemplate.setColor("2E75B6"); + runDatasetTemplate.setColor("116a78"); //runDatasetTemplate.setBold(true); //runDatasetTemplate.setFontSize(12); @@ -1315,11 +1325,11 @@ public class DataManagementPlanManager { // }*/ // // - wordBuilder.addParagraphContent(datasetEntity.getDescription(), document, ParagraphStyle.HTML, BigInteger.ZERO); + wordBuilder.addParagraphContent(datasetEntity.getDescription(), document, ParagraphStyle.HTML, BigInteger.ZERO, 0); // Dataset Description custom style. XWPFParagraph datasetDescriptionParagraph = document.createParagraph(); - datasetDescriptionParagraph.setStyle("Heading3"); + datasetDescriptionParagraph.setStyle("Heading4"); datasetDescriptionParagraph.setSpacingBetween(1.5); XWPFRun datasetDescriptionRun = datasetDescriptionParagraph.createRun(); datasetDescriptionRun.setText("Dataset Description"); @@ -1345,7 +1355,20 @@ public class DataManagementPlanManager { // document.removeBodyElement(0); // } - wordBuilder.fillFooter(dmpEntity, document); + + if(powered_pos != -1) { + document.getLastParagraph().setPageBreak(false); + document.createParagraph(); + document.setParagraph(powered_par, document.getParagraphs().size() - 1); + + document.createParagraph(); + document.setParagraph(argos_img_par, document.getParagraphs().size() - 1); + + document.removeBodyElement(powered_pos + 1); + document.removeBodyElement(powered_pos + 1); + } + + wordBuilder.fillFooter(dmpEntity, document, false); String fileName = "DMP_" + dmpEntity.getGrant().getLabel(); if (versioned) { diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java index 871c59e3c..145439921 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java @@ -396,29 +396,45 @@ public class DatasetManager { return pagedDatasetProfile; } - private XWPFDocument getWordDocument(ConfigLoader configLoader, eu.eudat.data.entities.Dataset datasetEntity, VisibilityRuleService visibilityRuleService) throws IOException { + private XWPFDocument getWordDocument(ConfigLoader configLoader, eu.eudat.data.entities.Dataset datasetEntity, VisibilityRuleService visibilityRuleService, Principal principal) throws IOException { WordBuilder wordBuilder = new WordBuilder(this.environment); DatasetWizardModel dataset = new DatasetWizardModel(); - XWPFDocument document = configLoader.getDocument(); + XWPFDocument document = configLoader.getDatasetDocument(); - wordBuilder.addParagraphContent(datasetEntity.getLabel(), document, ParagraphStyle.HEADER1, BigInteger.ZERO); + eu.eudat.data.entities.DMP dmpEntity = datasetEntity.getDmp(); + + if (!dmpEntity.isPublic() && dmpEntity.getUsers().stream().filter(userInfo -> userInfo.getUser().getId() == principal.getId()).collect(Collectors.toList()).size() == 0) + throw new UnauthorisedException(); + + wordBuilder.fillFirstPage(dmpEntity, datasetEntity, document); + wordBuilder.fillFooter(dmpEntity, document, true); + + int powered_pos = wordBuilder.findPosOfPoweredBy(document); + XWPFParagraph powered_par = null; + XWPFParagraph argos_img_par = null; + if(powered_pos != -1) { + powered_par = document.getParagraphArray(powered_pos); + argos_img_par = document.getParagraphArray(powered_pos + 1); + } + +// wordBuilder.addParagraphContent(datasetEntity.getLabel(), document, ParagraphStyle.HEADER1, BigInteger.ZERO); // Space below Dataset title. - XWPFParagraph parBreakDataset = document.createParagraph(); - - XWPFParagraph datasetTemplateParagraph = document.createParagraph(); - datasetTemplateParagraph.setStyle("Heading2"); - XWPFRun runDatasetTemplate1 = datasetTemplateParagraph.createRun(); - runDatasetTemplate1.setText("Template: "); - runDatasetTemplate1.setBold(true); - runDatasetTemplate1.setFontSize(12); - XWPFRun runDatasetTemplate = datasetTemplateParagraph.createRun(); - runDatasetTemplate.setText(datasetEntity.getProfile().getLabel()); - runDatasetTemplate.setColor("2E75B6"); - runDatasetTemplate.setBold(true); - runDatasetTemplate.setFontSize(12); - - wordBuilder.addParagraphContent(datasetEntity.getDescription(), document, ParagraphStyle.HTML, BigInteger.ZERO); +// XWPFParagraph parBreakDataset = document.createParagraph(); +// +// XWPFParagraph datasetTemplateParagraph = document.createParagraph(); +// datasetTemplateParagraph.setStyle("Heading2"); +// XWPFRun runDatasetTemplate1 = datasetTemplateParagraph.createRun(); +// runDatasetTemplate1.setText("Template: "); +// runDatasetTemplate1.setBold(true); +// runDatasetTemplate1.setFontSize(12); +// XWPFRun runDatasetTemplate = datasetTemplateParagraph.createRun(); +// runDatasetTemplate.setText(datasetEntity.getProfile().getLabel()); +// runDatasetTemplate.setColor("2E75B6"); +// runDatasetTemplate.setBold(true); +// runDatasetTemplate.setFontSize(12); +// +// wordBuilder.addParagraphContent(datasetEntity.getDescription(), document, ParagraphStyle.HTML, BigInteger.ZERO); /*XWPFParagraph externalReferencesParagraph = document.createParagraph(); externalReferencesParagraph.setStyle("Heading2"); @@ -460,7 +476,7 @@ public class DatasetManager { properties = jObject.toMap(); } - wordBuilder.addParagraphContent("Dataset Description", document, ParagraphStyle.HEADER2, BigInteger.ZERO); +// wordBuilder.addParagraphContent("Dataset Description", document, ParagraphStyle.HEADER2, BigInteger.ZERO); PagedDatasetProfile pagedDatasetProfile = getPagedProfile(dataset, datasetEntity); visibilityRuleService.setProperties(properties); visibilityRuleService.buildVisibilityContext(pagedDatasetProfile.getRules()); @@ -469,8 +485,20 @@ public class DatasetManager { // File exportFile = new File(label + ".docx"); // Removes the top empty headings. - for (int i = 0; i < 6; i++) { - document.removeBodyElement(0); +// for (int i = 0; i < 6; i++) { +// document.removeBodyElement(0); +// } + + if(powered_pos != -1) { + document.getLastParagraph().setPageBreak(false); + document.createParagraph(); + document.setParagraph(powered_par, document.getParagraphs().size() - 1); + + document.createParagraph(); + document.setParagraph(argos_img_par, document.getParagraphs().size() - 1); + + document.removeBodyElement(powered_pos + 1); + document.removeBodyElement(powered_pos + 1); } return document; @@ -493,7 +521,7 @@ public class DatasetManager { properties = jObject.toMap(); } - wordBuilder.addParagraphContent("Dataset Description", document, ParagraphStyle.HEADER2, BigInteger.ZERO); + wordBuilder.addParagraphContent("Dataset Description", document, ParagraphStyle.HEADER2, BigInteger.ZERO, 0); visibilityRuleService.setProperties(properties); visibilityRuleService.buildVisibilityContext(dataset.getDatasetProfileDefinition().getRules()); wordBuilder.build(document, dataset.getDatasetProfileDefinition(), visibilityRuleService); @@ -521,7 +549,7 @@ public class DatasetManager { exportEnvelope.setFilename(label + ".docx"); String uuid = UUID.randomUUID().toString(); File exportFile = new File(this.environment.getProperty("temp.temp") + uuid + ".docx"); - XWPFDocument document = getWordDocument(configLoader, datasetEntity, visibilityRuleService); + XWPFDocument document = getWordDocument(configLoader, datasetEntity, visibilityRuleService, principal); FileOutputStream out = new FileOutputStream(exportFile); document.write(out); out.close(); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/configloaders/ConfigLoader.java b/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/configloaders/ConfigLoader.java index 4f8f3fe44..08dc4062c 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/configloaders/ConfigLoader.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/configloaders/ConfigLoader.java @@ -12,6 +12,7 @@ public interface ConfigLoader { ExternalUrls getExternalUrls(); List getRdaProperties(); XWPFDocument getDocument(); + XWPFDocument getDatasetDocument(); ConfigurableProviders getConfigurableProviders(); Map getKeyToSourceMap(); List getDOIFunders(); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/configloaders/DefaultConfigLoader.java b/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/configloaders/DefaultConfigLoader.java index 29dcb2f66..15c04e898 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/configloaders/DefaultConfigLoader.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/configloaders/DefaultConfigLoader.java @@ -38,6 +38,7 @@ public class DefaultConfigLoader implements ConfigLoader { private ExternalUrls externalUrls; private List rdaProperties; private XWPFDocument document; + private XWPFDocument datasetDocument; private ConfigurableProviders configurableProviders; private Map keyToSourceMap; private List doiFunders = new ArrayList<>(); @@ -103,6 +104,24 @@ public class DefaultConfigLoader implements ConfigLoader { } } + private void setDatasetDocument() { + String filePath = environment.getProperty("configuration.h2020datasettemplate"); + logger.info("Loaded also config file: " + filePath); + InputStream is = null; + try { + is = getStreamFromPath(filePath); + this.datasetDocument = new XWPFDocument(is); + } catch (IOException | NullPointerException e) { + logger.error(e.getMessage(), e); + } finally { + try { + if (is != null) is.close(); + } catch (IOException e) { + logger.warn("Warning: Could not close a stream after reading from file: " + filePath, e); + } + } + } + private void setConfigurableProviders() { String filePath = environment.getProperty("configuration.configurable_login_providers"); logger.info("Loaded also config file: " + filePath); @@ -183,6 +202,11 @@ public class DefaultConfigLoader implements ConfigLoader { return document; } + public XWPFDocument getDatasetDocument() { + this.setDatasetDocument(); + return datasetDocument; + } + public ConfigurableProviders getConfigurableProviders() { if (configurableProviders == null) { configurableProviders = new ConfigurableProviders(); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/HtmlToWorldBuilder.java b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/HtmlToWorldBuilder.java index 063ce4deb..8cc6368bb 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/HtmlToWorldBuilder.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/HtmlToWorldBuilder.java @@ -1,6 +1,7 @@ package eu.eudat.logic.utilities.documents.word; import org.apache.poi.xwpf.usermodel.*; +import org.apache.xmlbeans.XmlCursor; import org.jsoup.nodes.Document; import org.jsoup.nodes.Node; import org.jsoup.nodes.TextNode; @@ -22,15 +23,17 @@ public class HtmlToWorldBuilder implements NodeVisitor { private XWPFNumbering numbering; private Queue abstractNumId; private BigInteger numberingLevel; + private XmlCursor cursor; public static HtmlToWorldBuilder convert(XWPFDocument document, Document htmlDocument, float indentation) { XWPFParagraph paragraph = document.createParagraph(); - HtmlToWorldBuilder htmlToWorldBuilder = new HtmlToWorldBuilder(paragraph, indentation); + paragraph.setIndentFromLeft(Math.round(400 * indentation)); + HtmlToWorldBuilder htmlToWorldBuilder = new HtmlToWorldBuilder(paragraph, indentation, null); NodeTraversor.traverse(htmlToWorldBuilder, htmlDocument); return htmlToWorldBuilder; } - public HtmlToWorldBuilder(XWPFParagraph paragraph, float indentation) { + public HtmlToWorldBuilder(XWPFParagraph paragraph, float indentation, XmlCursor cursor) { this.paragraph = paragraph; this.run = this.paragraph.createRun(); this.dumpRun = false; @@ -40,6 +43,7 @@ public class HtmlToWorldBuilder implements NodeVisitor { this.abstractNumId = new ArrayDeque<>(); this.numberingLevel = BigInteger.valueOf(-1); this.setDefaultIndentation(); + this.cursor = cursor; } @Override @@ -96,7 +100,13 @@ public class HtmlToWorldBuilder implements NodeVisitor { break; case "div": case "p": - this.paragraph = this.paragraph.getDocument().createParagraph(); + if(this.cursor != null) { + this.paragraph = this.paragraph.getDocument().insertNewParagraph(this.cursor); + this.cursor = this.paragraph.getCTP().newCursor(); + this.cursor.toNextSibling(); + } else { + this.paragraph = this.paragraph.getDocument().createParagraph(); + } this.run = this.paragraph.createRun(); this.isIdentationUsed = false; this.setDefaultIndentation(); @@ -108,10 +118,15 @@ public class HtmlToWorldBuilder implements NodeVisitor { } break; case "blockquote": - this.paragraph = this.paragraph.getDocument().createParagraph(); + if(this.cursor != null) { + this.paragraph = this.paragraph.getDocument().insertNewParagraph(this.cursor); + this.cursor = this.paragraph.getCTP().newCursor(); + } else { + this.paragraph = this.paragraph.getDocument().createParagraph(); + } this.run = this.paragraph.createRun(); if (stringBooleanEntry.getValue()) { - this.paragraph.setIndentationLeft(720); + this.paragraph.setIndentationLeft(400); } else { this.isIdentationUsed = false; this.setDefaultIndentation(); @@ -121,7 +136,12 @@ public class HtmlToWorldBuilder implements NodeVisitor { if (stringBooleanEntry.getValue()) { createNumbering(STNumberFormat.BULLET); } else { - this.paragraph = this.paragraph.getDocument().createParagraph(); + if(this.cursor != null) { + this.paragraph = this.paragraph.getDocument().insertNewParagraph(this.cursor); + this.cursor = this.paragraph.getCTP().newCursor(); + } else { + this.paragraph = this.paragraph.getDocument().createParagraph(); + } this.run = this.paragraph.createRun(); this.isIdentationUsed = false; this.setDefaultIndentation(); @@ -133,7 +153,12 @@ public class HtmlToWorldBuilder implements NodeVisitor { if (stringBooleanEntry.getValue()) { createNumbering(STNumberFormat.DECIMAL); } else { - this.paragraph = this.paragraph.getDocument().createParagraph(); + if(this.cursor != null) { + this.paragraph = this.paragraph.getDocument().insertNewParagraph(this.cursor); + this.cursor = this.paragraph.getCTP().newCursor(); + } else { + this.paragraph = this.paragraph.getDocument().createParagraph(); + } this.run = this.paragraph.createRun(); this.isIdentationUsed = false; this.setDefaultIndentation(); @@ -143,8 +168,14 @@ public class HtmlToWorldBuilder implements NodeVisitor { break; case "li": if (stringBooleanEntry.getValue()) { - this.paragraph = this.paragraph.getDocument().createParagraph(); - this.paragraph.setIndentationLeft(Math.round(indentation * 720) * (numberingLevel.intValue() + 1)); + if(this.cursor != null) { + this.paragraph = this.paragraph.getDocument().insertNewParagraph(this.cursor); + this.cursor = this.paragraph.getCTP().newCursor(); + } else { + this.paragraph = this.paragraph.getDocument().createParagraph(); + } + // this.paragraph.setIndentationLeft(Math.round(indentation * 720) * (numberingLevel.intValue() + 1)); + this.paragraph.setIndentFromLeft(Math.round(numberingLevel.intValue() * 400 + this.indentation*400)); this.run = this.paragraph.createRun(); this.paragraph.setNumID(((ArrayDeque)abstractNumId).getLast()); } @@ -238,7 +269,8 @@ public class HtmlToWorldBuilder implements NodeVisitor { private void setDefaultIndentation() { if (!isIdentationUsed) { - this.paragraph.setIndentationLeft(Math.round(indentation * 720.0F)); +// this.paragraph.setIndentationLeft(Math.round(indentation * 720.0F)); + this.paragraph.setIndentFromLeft(Math.round(indentation * 400)); this.isIdentationUsed = true; } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/WordBuilder.java b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/WordBuilder.java index a3a47d869..bc92b70e1 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/WordBuilder.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/WordBuilder.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import eu.eudat.data.entities.DMP; +import eu.eudat.data.entities.Dataset; import eu.eudat.data.entities.Organisation; import eu.eudat.data.entities.Researcher; import eu.eudat.logic.services.forms.VisibilityRuleService; @@ -19,10 +20,12 @@ import eu.eudat.models.data.user.composite.PagedDatasetProfile; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.util.Units; import org.apache.poi.xwpf.usermodel.*; +import org.apache.xmlbeans.XmlCursor; import org.json.JSONArray; import org.json.JSONException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; +import org.jsoup.select.NodeTraversor; import org.openxmlformats.schemas.wordprocessingml.x2006.main.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -88,7 +91,8 @@ public class WordBuilder { }); this.options.put(ParagraphStyle.HTML, (mainDocumentPart, item) -> { Document htmlDoc = Jsoup.parse(((String)item).replaceAll("\n", "
")); - HtmlToWorldBuilder htmlToWorldBuilder = HtmlToWorldBuilder.convert(mainDocumentPart, htmlDoc, indent > 0 ? (indent/2.0F) * 0.8F : 0.8F); +// HtmlToWorldBuilder htmlToWorldBuilder = HtmlToWorldBuilder.convert(mainDocumentPart, htmlDoc, indent > 0 ? (indent/2.0F) * 0.8F : 0.8F); + HtmlToWorldBuilder htmlToWorldBuilder = HtmlToWorldBuilder.convert(mainDocumentPart, htmlDoc, this.indent); return htmlToWorldBuilder.getParagraph(); }); this.options.put(ParagraphStyle.TITLE, (mainDocumentPart, item) -> { @@ -228,19 +232,20 @@ public class WordBuilder { } public XWPFDocument build(XWPFDocument document, PagedDatasetProfile pagedDatasetProfile, VisibilityRuleService visibilityRuleService) throws IOException { - createPages(pagedDatasetProfile.getPages(), document, true, visibilityRuleService); - XWPFNumbering numbering = document.createNumbering(); - BigInteger tempNumId = BigInteger.ONE; - boolean found = false; - while (!found) { - Object o = numbering.getAbstractNum(tempNumId); - found = (o == null); - if (!found) tempNumId = tempNumId.add(BigInteger.ONE); - } - cTAbstractNum.setAbstractNumId(tempNumId); - XWPFAbstractNum abstractNum = new XWPFAbstractNum(cTAbstractNum); - BigInteger abstractNumID = numbering.addAbstractNum(abstractNum); - this.numId = numbering.addNum(abstractNumID); +// createPages(pagedDatasetProfile.getPages(), document, true, visibilityRuleService); +// XWPFNumbering numbering = document.createNumbering(); +// BigInteger tempNumId = BigInteger.ONE; +// boolean found = false; +// while (!found) { +// Object o = numbering.getAbstractNum(tempNumId); +// found = (o == null); +// if (!found) tempNumId = tempNumId.add(BigInteger.ONE); +// } +// cTAbstractNum.setAbstractNumId(tempNumId); +// XWPFAbstractNum abstractNum = new XWPFAbstractNum(cTAbstractNum); +// BigInteger abstractNumID = numbering.addAbstractNum(abstractNum); +// this.numId = numbering.addNum(abstractNumID); + createPages(pagedDatasetProfile.getPages(), document, false, visibilityRuleService); return document; } @@ -248,7 +253,7 @@ public class WordBuilder { private void createPages(List datasetProfilePages, XWPFDocument mainDocumentPart, Boolean createListing, VisibilityRuleService visibilityRuleService) { datasetProfilePages.forEach(item -> { try { - createSections(item.getSections(), mainDocumentPart, ParagraphStyle.HEADER4, 0, createListing, visibilityRuleService, item.getOrdinal() + 1, null); + createSections(item.getSections(), mainDocumentPart, ParagraphStyle.HEADER5, 0, createListing, visibilityRuleService, item.getOrdinal() + 1, null); } catch (Exception e) { logger.error(e.getMessage(), e); } @@ -263,13 +268,13 @@ public class WordBuilder { String tempSectionString = sectionString != null ? sectionString + "." + (section.getOrdinal() + 1) : "" + (section.getOrdinal() + 1); if (visibilityRuleService.isElementVisible(section.getId())) { if (!createListing) { - XWPFParagraph paragraph = addParagraphContent(page + "." + tempSectionString + " " + section.getTitle(), mainDocumentPart, style, numId); - CTDecimalNumber number = paragraph.getCTP().getPPr().getNumPr().addNewIlvl(); - number.setVal(BigInteger.valueOf(indent)); + XWPFParagraph paragraph = addParagraphContent(page + "." + tempSectionString + " " + section.getTitle(), mainDocumentPart, style, numId, indent); +// CTDecimalNumber number = paragraph.getCTP().getPPr().getNumPr().addNewIlvl(); +// number.setVal(BigInteger.valueOf(indent)); paragraphPos = mainDocumentPart.getPosOfParagraph(paragraph); } - createSections(section.getSections(), mainDocumentPart, ParagraphStyle.HEADER4, 1, createListing, visibilityRuleService, page, tempSectionString); - hasValue = createCompositeFields(section.getCompositeFields(), mainDocumentPart, 2, createListing, visibilityRuleService, page, tempSectionString); + createSections(section.getSections(), mainDocumentPart, ParagraphStyle.HEADER5, indent+1, createListing, visibilityRuleService, page, tempSectionString); + hasValue = createCompositeFields(section.getCompositeFields(), mainDocumentPart, indent+1, createListing, visibilityRuleService, page, tempSectionString); if (!hasValue && paragraphPos > -1) { mainDocumentPart.removeBodyElement(paragraphPos); @@ -290,19 +295,18 @@ public class WordBuilder { int paragraphPos = -1; int paragraphPosInner = -1; if (compositeField.getTitle() != null && !compositeField.getTitle().isEmpty() && !createListing) { - XWPFParagraph paragraph = addParagraphContent("\t" + page + "." + section + "." + (compositeField.getOrdinal() +1) + " " + compositeField.getTitle(), mainDocumentPart, ParagraphStyle.HEADER6, numId); - CTDecimalNumber number = paragraph.getCTP().getPPr().getNumPr().addNewIlvl(); - number.setVal(BigInteger.valueOf(indent)); + XWPFParagraph paragraph = addParagraphContent(page + "." + section + "." + (compositeField.getOrdinal() +1) + " " + compositeField.getTitle(), mainDocumentPart, ParagraphStyle.HEADER6, numId, indent); +// CTDecimalNumber number = paragraph.getCTP().getPPr().getNumPr().addNewIlvl(); +// number.setVal(BigInteger.valueOf(indent)); paragraphPos = mainDocumentPart.getPosOfParagraph(paragraph); if(compositeField.getMultiplicityItems() != null && !compositeField.getMultiplicityItems().isEmpty()){ -// addParagraphContent(c + ". ", mainDocumentPart, ParagraphStyle.HEADER6, numId); - XWPFParagraph paragraphInner = addParagraphContent(c + ". ", mainDocumentPart, ParagraphStyle.TEXT, numId); + XWPFParagraph paragraphInner = addParagraphContent(c + ". ", mainDocumentPart, ParagraphStyle.TEXT, numId, indent); paragraphPosInner = mainDocumentPart.getPosOfParagraph(paragraphInner); hasMultiplicityItems = true; multiplicityItems++; } } - hasValue = createFields(compositeField.getFields(), mainDocumentPart, 3, createListing, visibilityRuleService, hasMultiplicityItems); + hasValue = createFields(compositeField.getFields(), mainDocumentPart, indent, createListing, visibilityRuleService, hasMultiplicityItems); if(hasValue){ returnedValue = true; } else if(paragraphPosInner > -1){ @@ -317,13 +321,13 @@ public class WordBuilder { if(!createListing){ c++; // addParagraphContent(c + ". ", mainDocumentPart, ParagraphStyle.HEADER6, numId); - XWPFParagraph paragraphInner = addParagraphContent(c + ". ", mainDocumentPart, ParagraphStyle.TEXT, numId); + XWPFParagraph paragraphInner = addParagraphContent(c + ". ", mainDocumentPart, ParagraphStyle.TEXT, numId, indent); paragraphPosInner = mainDocumentPart.getPosOfParagraph(paragraphInner); hasMultiplicityItems = true; multiplicityItems++; } // hasValue = createFields(multiplicityFieldset.getFields(), mainDocumentPart, 3, createListing, visibilityRuleService, hasMultiplicityItems); - boolean hasValueInner = createFields(multiplicityFieldset.getFields(), mainDocumentPart, 3, createListing, visibilityRuleService, hasMultiplicityItems); + boolean hasValueInner = createFields(multiplicityFieldset.getFields(), mainDocumentPart, indent, createListing, visibilityRuleService, hasMultiplicityItems); // if(hasValue){ if(hasValueInner){ hasValue = true; @@ -342,9 +346,9 @@ public class WordBuilder { } } if (hasValue && compositeField.getHasCommentField() && compositeField.getCommentFieldValue() != null && !compositeField.getCommentFieldValue().isEmpty() && !createListing) { - XWPFParagraph paragraph = addParagraphContent("Comment:\n"+compositeField.getCommentFieldValue(), mainDocumentPart, ParagraphStyle.HTML, numId); - CTDecimalNumber number = paragraph.getCTP().getPPr().getNumPr().addNewIlvl(); - number.setVal(BigInteger.valueOf(indent)); + XWPFParagraph paragraph = addParagraphContent("Comment:\n"+compositeField.getCommentFieldValue(), mainDocumentPart, ParagraphStyle.HTML, numId, indent); +// CTDecimalNumber number = paragraph.getCTP().getPPr().getNumPr().addNewIlvl(); +// number.setVal(BigInteger.valueOf(indent)); } if (!hasValue && paragraphPos > -1) { mainDocumentPart.removeBodyElement(paragraphPos); @@ -373,10 +377,10 @@ public class WordBuilder { } if(isImage){ if (field.getValue() != null && !field.getValue().toString().isEmpty()) { - XWPFParagraph paragraph = addParagraphContent(mapper.convertValue(field.getValue(), Map.class), mainDocumentPart, ParagraphStyle.IMAGE, numId); + XWPFParagraph paragraph = addParagraphContent(mapper.convertValue(field.getValue(), Map.class), mainDocumentPart, ParagraphStyle.IMAGE, numId, 0); if (paragraph != null) { - CTDecimalNumber number = paragraph.getCTP().getPPr().getNumPr().addNewIlvl(); - number.setVal(BigInteger.valueOf(indent)); +// CTDecimalNumber number = paragraph.getCTP().getPPr().getNumPr().addNewIlvl(); +// number.setVal(BigInteger.valueOf(indent)); hasValue = true; } if(hasMultiplicityItems){ @@ -407,7 +411,7 @@ public class WordBuilder { String orcId = null; if(isResearcher && val.contains("orcid:")){ orcId = val.substring(val.indexOf(':') + 1, val.indexOf(')')); - val = val.substring(0, val.indexOf(':') + 1); + val = val.substring(0, val.indexOf(':') + 1) + " "; orcidResearcher = true; } format = "• " + val; @@ -423,7 +427,7 @@ public class WordBuilder { hasMultiplicityItems = false; } else{ - XWPFParagraph paragraph = addParagraphContent(format, mainDocumentPart, field.getViewStyle().getRenderStyle().equals("richTextarea") ? ParagraphStyle.HTML : ParagraphStyle.TEXT, numId); + XWPFParagraph paragraph = addParagraphContent(format, mainDocumentPart, field.getViewStyle().getRenderStyle().equals("richTextarea") ? ParagraphStyle.HTML : ParagraphStyle.TEXT, numId, indent); if(orcidResearcher){ XWPFHyperlinkRun run = paragraph.createHyperlinkRun("https://orcid.org/" + orcId); run.setText(orcId); @@ -432,8 +436,8 @@ public class WordBuilder { paragraph.createRun().setText(")"); } if (paragraph != null) { - CTDecimalNumber number = paragraph.getCTP().getPPr().getNumPr().addNewIlvl(); - number.setVal(BigInteger.valueOf(indent)); +// CTDecimalNumber number = paragraph.getCTP().getPPr().getNumPr().addNewIlvl(); +// number.setVal(BigInteger.valueOf(indent)); hasValue = true; } } @@ -451,10 +455,10 @@ public class WordBuilder { hasValue = true; } else{ - XWPFParagraph paragraph = addParagraphContent(format, mainDocumentPart, field.getViewStyle().getRenderStyle().equals("richTextarea") ? ParagraphStyle.HTML : ParagraphStyle.TEXT, numId); + XWPFParagraph paragraph = addParagraphContent(format, mainDocumentPart, field.getViewStyle().getRenderStyle().equals("richTextarea") ? ParagraphStyle.HTML : ParagraphStyle.TEXT, numId, indent); if (paragraph != null) { - CTDecimalNumber number = paragraph.getCTP().getPPr().getNumPr().addNewIlvl(); - number.setVal(BigInteger.valueOf(indent)); +// CTDecimalNumber number = paragraph.getCTP().getPPr().getNumPr().addNewIlvl(); +// number.setVal(BigInteger.valueOf(indent)); hasValue = true; } } @@ -487,14 +491,16 @@ public class WordBuilder { } } - public XWPFParagraph addParagraphContent(Object content, XWPFDocument mainDocumentPart, ParagraphStyle style, BigInteger numId) { + public XWPFParagraph addParagraphContent(Object content, XWPFDocument mainDocumentPart, ParagraphStyle style, BigInteger numId, int indent) { // this.indent = 0; if (content != null) { if (content instanceof String && ((String)content).isEmpty()) { return null; } + this.indent = indent; XWPFParagraph paragraph = this.options.get(style).apply(mainDocumentPart, content); if (paragraph != null) { + paragraph.setIndentFromLeft(400*indent); if (numId != null) { paragraph.setNumID(numId); } @@ -511,18 +517,19 @@ public class WordBuilder { for (int i = 0; i <= indent; i++) { textLevel += "%" + (i + 1) + "."; } + if (question) { cTLvl.addNewNumFmt().setVal(STNumberFormat.DECIMAL); - cTLvl.addNewLvlText().setVal(""); +// cTLvl.addNewLvlText().setVal(""); cTLvl.setIlvl(BigInteger.valueOf(indent)); } else if (!question && hasIndication) { cTLvl.addNewNumFmt().setVal(STNumberFormat.DECIMAL); - cTLvl.addNewLvlText().setVal(""); +// cTLvl.addNewLvlText().setVal(""); cTLvl.setIlvl(BigInteger.valueOf(indent)); } if (!question && !hasIndication) { cTLvl.addNewNumFmt().setVal(STNumberFormat.NONE); - cTLvl.addNewLvlText().setVal(""); +// cTLvl.addNewLvlText().setVal(""); cTLvl.setIlvl(BigInteger.valueOf(indent)); } } @@ -658,60 +665,112 @@ public class WordBuilder { return result; } - public void fillFirstPage(DMP dmpEntity, XWPFDocument document) { + public int findPosOfPoweredBy(XWPFDocument document) { + for (XWPFParagraph p : document.getParagraphs()) { + List runs = p.getRuns(); + if (runs != null) { + for (XWPFRun r : runs) { + String text = r.getText(0); + if (text != null) { + if (text.equals("Powered by")) { + return document.getPosOfParagraph(p) - 1; + } + } + } + } + } + return -1; + } + + public void fillFirstPage(DMP dmpEntity, Dataset datasetEntity, XWPFDocument document) { + int parPos = 0; + int descrParPos = -1; + XWPFParagraph descrPar = null; for(XWPFParagraph p: document.getParagraphs()){ List runs = p.getRuns(); if(runs != null){ for(XWPFRun r : runs){ String text = r.getText(0); if(text != null){ - if(text.contains("{ARGOS.DMP.VERSION}")){ - text = text.replace("{ARGOS.DMP.VERSION}", "VERSION " + dmpEntity.getVersion()); + if(text.contains("{ARGOS.DMP.TITLE}")) { + text = text.replace("{ARGOS.DMP.TITLE}", dmpEntity.getLabel()); r.setText(text, 0); - } - else if(text.contains("{ARGOS.DMP.FUNDER}")){ - text = text.replace("{ARGOS.DMP.FUNDER}", dmpEntity.getGrant().getFunder().getLabel()); + } else if(text.contains("{ARGOS.DMP.VERSION}")) { + text = text.replace("{ARGOS.DMP.VERSION}", "Version " + dmpEntity.getVersion()); r.setText(text, 0); - } - else if(text.contains("{ARGOS.DMP.GRANT}")){ - text = text.replace("{ARGOS.DMP.GRANT}", dmpEntity.getGrant().getLabel()); + } else if(datasetEntity != null && text.contains("{ARGOS.DATASET.TITLE}")) { + text = text.replace("{ARGOS.DATASET.TITLE}", datasetEntity.getLabel()); r.setText(text, 0); + } else if(datasetEntity != null && text.contains("{ARGOS.DATASET.DESCRIPTION}")) { + descrParPos = parPos; + descrPar = p; + text = text.replace("{ARGOS.DATASET.DESCRIPTION}", ""); + r.setText(text, 0); + } else if(text.equals("{ARGOS.DMP.RESEARCHERS}")) { + String researchersNames = ""; + Set researchers = dmpEntity.getResearchers(); + int i = 0; + for(Researcher researcher : researchers){ + i++; + researchersNames += researcher.getLabel() + (i < researchers.size() ? ", " : ""); + } + text = text.replace("{ARGOS.DMP.RESEARCHERS}", researchersNames); + r.setText(text, 0); + r.setFontSize(17); + } else if(text.equals("{ARGOS.DMP.ORGANIZATIONS}")) { + String organisationsNames = ""; + Set organisations = dmpEntity.getOrganisations(); + int i = 0; + for(Organisation organisation : organisations){ + i++; + organisationsNames += organisation.getLabel() + (i < organisations.size() ? ", " : ""); + } + text = text.replace("{ARGOS.DMP.ORGANIZATIONS}", organisationsNames); + r.setText(text, 0); + r.setFontSize(17); } } } } + parPos++; + } + if(descrParPos != -1 && datasetEntity.getDescription() != null) { + XmlCursor cursor = descrPar.getCTP().newCursor(); + cursor.toNextSibling(); + Document htmlDoc = Jsoup.parse(((String)datasetEntity.getDescription()).replaceAll("\n", "
")); + HtmlToWorldBuilder htmlToWorldBuilder = new HtmlToWorldBuilder(descrPar, 0, cursor); + NodeTraversor.traverse(htmlToWorldBuilder, htmlDoc); } - int researchers = dmpEntity.getResearchers().size(); - int organizations = dmpEntity.getOrganisations().size(); - if(researchers > 0 || organizations > 0){ + XWPFTable tbl = document.getTables().get(0); - for(int i = (Integer.max(researchers, organizations) - 1); i > 0; i--) - tbl.createRow(); Iterator it = tbl.getRows().iterator(); it.next(); // skip first row - for(Researcher researcher : dmpEntity.getResearchers()){ - if(it.hasNext()){ - XWPFRun run = it.next().getCell(0).getParagraphs().get(0).createRun(); - run.setText(researcher.getLabel()); - run.setFontSize(17); - } + if(it.hasNext()){ + XWPFParagraph p = it.next().getCell(0).getParagraphs().get(0); + XWPFRun run = p.createRun(); + run.setText(dmpEntity.getGrant().getFunder().getLabel()); + run.setFontSize(17); + p.setAlignment(ParagraphAlignment.CENTER); } it = tbl.getRows().iterator(); it.next(); - for(Organisation organisation : dmpEntity.getOrganisations()){ - if(it.hasNext()){ - XWPFParagraph p = it.next().getCell(1).getParagraphs().get(0); - XWPFRun run = p.createRun(); - run.setText(organisation.getLabel()); - run.setFontSize(17); - p.setAlignment(ParagraphAlignment.RIGHT); + if(it.hasNext()){ + XWPFParagraph p = it.next().getCell(1).getParagraphs().get(0); + XWPFRun run = p.createRun(); + String text = dmpEntity.getGrant().getLabel(); + String reference = dmpEntity.getGrant().getReference(); + if(reference != null) { + String[] parts = reference.split("::"); + text += parts.length > 1 ? "/ No "+parts[parts.length - 1] : ""; } + run.setText(text); + run.setFontSize(17); + p.setAlignment(ParagraphAlignment.CENTER); } - } } - public void fillFooter(DMP dmpEntity, XWPFDocument document) { + public void fillFooter(DMP dmpEntity, XWPFDocument document, boolean isDataset) { document.getFooterList().forEach(xwpfFooter -> { List runs = xwpfFooter.getParagraphs().get(0).getRuns(); if(runs != null){ diff --git a/dmp-backend/web/src/main/resources/config/application-devel.properties b/dmp-backend/web/src/main/resources/config/application-devel.properties index 396776273..a23e14ccd 100644 --- a/dmp-backend/web/src/main/resources/config/application-devel.properties +++ b/dmp-backend/web/src/main/resources/config/application-devel.properties @@ -25,6 +25,7 @@ pdf.converter.url=http://localhost:3000/ configuration.externalUrls=externalUrls/ExternalUrls.xml configuration.rda=RDACommonStandards.txt configuration.h2020template=documents/h2020.docx +configuration.h2020datasettemplate=documents/h2020_dataset.docx configuration.configurable_login_providers=configurableLoginProviders.json configuration.doi_funder=DOI_Funder.json diff --git a/dmp-backend/web/src/main/resources/config/application-production.properties b/dmp-backend/web/src/main/resources/config/application-production.properties index 971e6be43..296798080 100644 --- a/dmp-backend/web/src/main/resources/config/application-production.properties +++ b/dmp-backend/web/src/main/resources/config/application-production.properties @@ -19,6 +19,7 @@ pdf.converter.url=http://docsbox-web/ configuration.externalUrls=externalUrls/ExternalUrls.xml configuration.rda=RDACommonStandards.txt configuration.h2020template=documents/h2020.docx +configuration.h2020datasettemplate=documents/h2020_dataset.docx configuration.configurable_login_providers=ConfigurableLoginProviders.json configuration.doi_funder=DOI_Funder.json diff --git a/dmp-backend/web/src/main/resources/config/application-staging.properties b/dmp-backend/web/src/main/resources/config/application-staging.properties index 8bafc9971..a783dd696 100644 --- a/dmp-backend/web/src/main/resources/config/application-staging.properties +++ b/dmp-backend/web/src/main/resources/config/application-staging.properties @@ -19,6 +19,7 @@ pdf.converter.url=http://docsbox-web/ configuration.externalUrls=externalUrls/ExternalUrls.xml configuration.rda=RDACommonStandards.txt configuration.h2020template=documents/h2020.docx +configuration.h2020datasettemplate=documents/h2020_dataset.docx configuration.configurable_login_providers=ConfigurableLoginProviders.json configuration.doi_funder=DOI_Funder.json diff --git a/dmp-backend/web/src/main/resources/config/application.properties b/dmp-backend/web/src/main/resources/config/application.properties index dafa101e4..67c57b4dd 100644 --- a/dmp-backend/web/src/main/resources/config/application.properties +++ b/dmp-backend/web/src/main/resources/config/application.properties @@ -50,6 +50,7 @@ elasticsearch.certKey= configuration.externalUrls=externalUrls/ExternalUrls.xml configuration.rda=RDACommonStandards.txt configuration.h2020template=documents/h2020.docx +configuration.h2020datasettemplate=documents/h2020_dataset.docx configuration.configurable_login_providers=ConfigurableLoginProviders.json configuration.doi_funder=DOI_Funder.json diff --git a/dmp-backend/web/src/main/resources/documents/h2020.docx b/dmp-backend/web/src/main/resources/documents/h2020.docx index 3b30f8d94847f81ab495f99ccdf97757c08544e2..9d5713b2629b18c679b773cdea3a0bd8222fc900 100644 GIT binary patch literal 20460 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 literal 43734 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 z z+tBfRj8@I9pb(hn!CT+*vTQpe6sh@BVqzCvH+4u?Y5g=N=fkDH;{+!06h_C zd*B5+)p{Q&M2|dGsqm1tQo9g~NJOecd0Ei}^at2Nr6I+1N_(GlfV`AhpC3#Dpm7;z zPLeA`-0A&fzQQw?37S>#2S$eRCbDW6OxSn#%ibd(Ah3z?!|!mq^MPm+ao0mONg)j5 z^Ntm%s}|KZS(Z)bN0{yC*><3D1rJ%Os#0I%os1GP0+GCzQX}jmDGqt!2OhYSY{vRu zo#~IfA1v<~5g{h(ETu3E(X~&=dvH%Vj&IE9ek40VMrFE?YA@QpNf^KQ)|V%5_DCG0 zK9C|W=}u>)>dg{nDo2lmo_?AW7AnTd3ylP@d3CdvQ&)L}3Zt{B3uAkd$I7=e%(jj7 zaWGtwv*Q09j_~i&C*M?;PLRbb8fqRU5fys9Q!bcEUYPFGG^g;8rW0x0UlzJkP?(tD zpg}j*C3cx0k%o6StIBu71oV%f11o8XDXrK{jsW4oRa zQ5}CB=`>%k?xI8E4j585UG%zN02X-J8C&Q<4&YU^VyVh0&2uG^t2G#>r7I4H^wx(S zFdX`WxD#$Gboz0w-Dl5WNL%V#8h$L_@V?ni08G%5rJXvsoNMqNR4`PDGvs9TcNm(g zD(}%ke0`U#Qc(9<{>2pJKy%N7PM`fe=o@Jgcpn`V$fXZI%_WKo6lMV@>Owq>#05X% z=t~i4FGlYd;*Sp4mmg6)o+y;JyL>w=%p(Qw*KToFk2yS>G?ViJZ{qmzIS$J%dTm2~ z-{tt!iZ>+#?43fZIysg(eukjNxw!nfL>86-P&}O?tIE}XMVk(PwgU<**$4hAAVPSQ z(j605Z81r^14hf><+z8xB17*L+KuI;xSx7JNZ~z_(-yd*n3#0;909s63wrjXs9O9j z9snaR<}bdrXVJA7jz1CZmI_ZnO6*H$lB|Xu5Hgm?CMAeN9?@kY;|+%kHk6TPEWq%r z)pO|A+S`ZZJS3Ef70;kOW%k1W2z>oXG9RG07R&{HK)<3JDl;>7yC(j7XMnQw{S_BC z^GJUH>{`V-EUgxY7#s=JMu<^6(!nRy-O3a7Fh416h#aa0qkh$3oUX}C*(W-ND;w_* zVsV7`pL!5aj$;b+(u0v>4Tu^k%etz3lwH>{J@GKV0FBE-nVhzu4&v8rlJd$4@V_@E zYP!AV!8K_0cWxU-^uiGEFJs30^&j%%7cC^d)uRB{pz*X939lqvGyn(jD4b0TfE^dg zk}3`;fkf=bz9fX2YTD&1&AGDk*;a58{JJ0IPSSJiP)+K!G*OQ@&;2J*5f=*f}+@}PNh za$7RVmDx(RnD3}fN_h^I8e>o6ZAhMo#xRgKg_Sn;KLSF^c?=@e!~ia3PS|8Y$mFQ@ z$1a1zu;ubj(-1Ei#a;n~s~=l}ap1Mt7FG`+qdo>sNTcPb1>=a-9l5pym&DuLAc2oL^?tD+;-o&ACDIQ(^e8gY~iRX@EHaD7na8U#6%ks0V7dC4L6>on!8+c z7_M7P)jf{HJuAaiRE5Z+B_t9Nd;BKU!N|t;H>ezI&r@4+-jB8t(HO-_?@q^wHP5gM z@Fth;S`hE_kVtw&*Zr-i;GD9sv(?^{1c{eoAbd96>5f!)u{zH0{?!%2BGb0-!$VgO zEIe@>3;-b19wl67Y3nua;f2b=JllG9d<+5QymWWVd(ai=Y6JiP#qv;C7H^2D z=I_68FPO+NY-@xCm!DE_Ep`P~fwNfT$<~4)hp?(#BO^jO+Dpt(j^hG@_TP$Q#?9C! z?s-S4Q{c_Q4F-p^z^)@xr64pGcqa6eaS5bWO@1D@;*4dHA2LMxKyhtwp#PElVG=xO zz!77ew#&tb0FGxM(IlyvasZ4mSX}%BHM#OpaugKsW-VA-8q1{AbRu0W-d1aPNUy<^(BDSRHLG0U?nj4v|0|&$2Z;j$- z##})6#Jg8gxoIXRhwD4t=@3+Hk=wtavtFe+p6ws#2Zn#SNY!0=C)f}EO|LpdOZDy; z&pHbPJnZo;RFSDM64kW;A{`?}-?yg-Wf_Whm1_N-hFSn*GsZZ@@WtT@5x++nq zeRTFCXSj+ecz>d&WjE3YfgbU-SQ1{k_hvlQhsL*i@XbE&lnLuEgl7T(#1;)p({esM zE%sF`UahLI7(jScjTmxYXIUe3XM*lKk8|Ogl&X`DLwskS+2_fE@t)Id;#i{$1(_2m zJL7NM9gNVsG+nd-Vh$q7R=iE~P6CDj7Ix~V7MGT(fd+z1mw8W#L~_@hV_>i2@;hmE ztZ&iXNYGv9#;vTR@Zm22$!W=K#RR#LFf;*5B}%AEZpc)%M-#0HKa#9?QH0Cl3&6Vv zj)7=iSr0#HEQTbHxxWUryJ*Kt-JK15Ggz);tw5`1LOn5^wt#E#0UW`r}h12U@6BjB({x1qKIBz_D!MzOV>NsTyj9~Z_# zo0y`g0>C=t545j|v6#N3r)*4V4CGG-It`atEp%&8@=jwt<%RLkyKyuqge|)B43F!N_7YOQNEGG zGXwC5G}r_dB>kp5Q3snz?5GaQ&i7k=H{K4fZD0#f8E_?+!oC>ATrMgI<)htdK!5uj zjN|<&(g$>8*i&2k57g!TibuKvlS*D~)kCn8P0<*#Oln>5K%`0f#j)TOGF&V6n$q#W zo92ym7F>)uW!ymWep`>UI2SqccfwefgNspIMB=Cp?>*t>iXA+8(hJ`&`XXO$_#~ML zjhjS@Q|`CTzE*kj3BlWSyxjXvPf*YUMA+1i%+3czjR@v5F`4=B$ z)k@O4DDUbHXrOWQ(DiSkx*#prbm!WAw+x1q7sYH@1Ecm`TDXG?$pww|=YhF9A-)&R zL1BxHd1iO0b;?2$!$cY~n`c5LGuFUv)p(0Fxt7g<2cf{IZ|K^9@}=UIMz+6B5Q&ww ze`G>UK##DegnWXs*aMaX&!gv@gW358crK>4&)IVG8IF{G$_?nmbVuzG-hBd*l6s6A zAbl~Ps0oTSdM>gK)kw5&q*->mSz~(U|IV#)JGuMhy-ugWvOC4{x`^atrLh5QRd5uP@4e|81(B*v}E zrN!Kqo#j?9ZG;@GTcHF#x z$GQ5}E7mWgDYB8vMGCcA>(bo;g1@>Y}f_|L&wkjoL7jJOTYhG5pT#uP;h%d&V_|A9Ujfl0o;;%BF#lNwVT&pNHRSY(MeZ;Qf}O>pmG zTGE4HxrV3iX*ZQS8!kTlVeyHreg+*eyY@uJE^S<@&mj?mYp0;>>x~ia^baRrIu9O? zQKn)*W9SG>0$)T|urwy77Y%e*Ud5STD9Vak41NXUtkuMBtIu5{8t;(6*~cO>pHPP_ zl12N09od3T4ZmWl`G&1?&HXk-1iL|rmx@~|Nu9U%i8sidU7!yyDCuYB zhZB`c*`1*l{5fM7@f*M*mmA3AzTTrzDOq~=yR6?5rwX#aYv)^TQ)>aB?jWa&avN?3 z$0jYTq`DF&7iJ)Dz06&9gw5o%qDd7;)6sz}exL)ldVOJ^JyBMAK(=id`;nMExl^swAX9_Z-{&8>-&o}N|r7GEZ7uF8&bC$ z^AgNtQae@(V)BCm-^)S=65S9+;!5Mf-EmcAn$KB z=ov%P8jQQ+cA+vNMud6@-WG$tE{+@$3JD}+WnYCq!>#dQl&2M&>mrVQ?`-@Chbk@pEBd^Xv_>1Q#wdQn!!(c2sSECU1Ct zI!X28J1+^PATPsbkchgJj|3+RuzfZgs8Kq2(#Y6Q%K&uUuBFU^-|)K0rvG&Oim|@H zR)%y$cL#|vLp>c`Wzxo6$B#$k6pIr8vwA}OH_iWfQ`D*oyB7;#$A98Ya6IL4;cPbe z6V;1ra7bYP3|osIt87Rj3d=5=J@U}v@m1{pt(%l^5C=;)dg8HR6Z@c7gao&?A`(AE zP=ik`*o;;eV=BAzBeoYf2|4(k$=||F?-tYl)##leLpJh7;ZlL}wcm<-tBRGt{CIF* z$|q^N4l408ED zNBV3TKyP1}05N{E&hkNtenn@gxl`rcIvE&k1;E{|!!vuyuVtx8rp$8_<7d72%R3qFb3TIWvGml^C>H{gZd?8oe&t zQm;1Xuh@pI9V}FA5G9V{Ax28mQ)NPRIFXPEUGsT}4Q6$P%HkP&&0`^;eN3ha4_#Mc z|G2n4>Bd2I*ZEumy@(Df3SKvq%@Pk5ZKzk8P*Y)W{ij(iIfX;PD5t3G78?q}SSHNp zaQw{5{ChBQwNfzjYdwUVdBPR^NvM0*6E+gdIAQV+NIqy7p*Z=14L1Z_=a2#}{i^7) ziDR?ZkV2&3cXoW|sYe0xUx|?gLwLN8D8#4DT_*Ed7{V*`Cxxv1qai6VD{=+K{rGV# zzMqPXx$oUx`gk37`z;m!YKJ{JgO-L9exr-2P%gKI|Kdk)qdYeVX)<=tM2f-6Hx^R?``P??V0gdFq$^-}H< z@asxd|18fo<2^$F3r-Z`&TU?Nf5#(3VM3%w*%vk8I0n@^m?!Lf4mp{IwFZZm%#73B zVS>cGXoW#-P1@4tt2VX_RH0%Am+6q7>Jl*T9Gtd7l6!O|1=t6lI1S+INik0ZE z$U$TPj;l1P@8EHDnChNoA*i&@mnf zt{*UYLr-H0*yIxYYJFL0*I|r38o(R1$T=E>A(%gsC!vjzQQ{6kqU|ijWU0MYaw;d8#V7w`)d07)9@ce}^G@%*#*uDOKJfymdojoEr6NC5T zVfk4r>*6t_C>(A8sYOdd-32S;4yJQ5jIp%Gi80x-s;Hq?72e87AeQ6{2C=ab(mCYj zw$#11L76ruW@Q)&u38+WK*Q!2bYjab1F;Qwra+!s)*Ps|n@#kW)dv$y1n(UW6IrkF zXBw(TFja~1Z9)-MCOEeI2d{0`CnEGE9ISJ5rx~(COGDVxI^Ga ztI7FAT~HF{x@)g4F7p8$c#9)V)~Jo8FN)S->P{k)Nr{cYAMMLagBSC*Mc5o@MMYNR zYHL!A^f5Qph2Av=UJevSo-u;~bO7TCDSmCPsExs!?&@)BATxry4g;J8KctSv?=T=x z>n~UVL3f(dcyjMlZSW&;U6frU+I+S{p{6jaB0j9IO=roJW$-$d_jmQ>7O!1vRuqbrDqz-E7jvqIb@Jtee?Ia$ytji`vV1g^E-)i z79zBO%s}1(H1HYg`IRYTu25G`UYAG2o~HaDs|&y^4GcKr>5ZyC>qR;X5H5v^DzU&| zX*F%97WkUa4p#`TCF}j@h)lD(^kDKh+u3+~TX~X?icI(9X);u+mXAtdJ;Ksyv@})O zMa~fc4OgiV@`VhZ?MVv`mjcB)865U$%Y&z+|977(4-EhpiEu#+nXSThI};5ULgZf* zD7%riq$iHLC<_|43f&>#=T)a=&MEzcgRwtyp^H^%pFyA4F+d_c*o5M_gA`?2XqoM` z!bxz!lg0Vgz|Q*%JZ=b{06+}NloNTZq@a`L^|QxRh0*DPGHgB3H~L8&y;h%n1Gp-r z6=HU5zI8Am25a_Lj%b0l2e3s2+jKTap`W#Uov^&cG=jckh0t}05f!s@U3huz2uBZq0c=tX ze1VtdY6AyM-_8ss<6l7jitxsGo-Q$5Nda$5x@G`C8vb_*sdMUAFo5}bqJ|yV-Z21Z zWg3~S$jD2xt^P@l67T?E`cHQVu`osT5WMq5$_?2TO;?4ZdIz0Xq>|o1ah9i=D^@V? zMs9AFR^Db~i9wgO`N7o#!)(9b0nr8x2_U9z`3M6DK2x0wUMvJ9t8FrjjYrjk#-pT% zM&>02Xo7jh4@Rb20pygcD-ZxBgreRSh1w8M#4hknG}pP3#y9@2du`0k;>J`3V%UP9 z0dP6qr~rQqh8bHh@u5CVcdpAW@ayTZAOScKKmmgb@b}KG`!Q_{0SNz;Y7Wjy!tIfW z|6~#x;H~!)gVSaJ`xlo92!O=BC2yNTt=@6NgS_ouBPvM-AMq!d?^3`1(u|dbId$ZRnC2U z57?%tZa4jyed^5NRAE5}jr+F=yCb-uKEf^d{l;*5xi!L%arwW`0+2>83xb_ukRjuL zjYg$Xw3Me%8v&Y;THFBp*k9HqL%{nc@~Xe%_$O4)NYPR@bvdPZ>yKvGc>W`9-#_BA z)7HMS`~m-Wsi>aG_!Uh1;=^kKkeThGf0Qific;HPY&Q)jUpt25gd(+&3 zhf<_@wV{h_it7baGyqB7lwdM|e{9+E%a<5oR#iDZyKnYVdqD+YY)=SB!824jD*1s4 zY5qH8fPeT>38k7`r~DIhQWVgylIC^CGfh@D0H)UQU<51_5N@Lle7-8j6zd#vAV;BA zBh?%)W{=Xv0BCfs?y9Ho{MOSMDb7+=83D$a6j-Uj>U3Q14q<9KB3%S(VHJsJXRT^o zNQ~^bZ+Os{wlgv+GX;~6;0r%}oi4uo*u>u3;DsV78t6_&&GIZDM_oWeK?l|oLI?17 z-Kwrwb7+F60RA#Ux-){i0s;C(OLnHeWl0PtJp=YLK!_~n27bBmkVq(pZQ8+B@G{Q; zL0wP0Nz5Kg@TrOD-vX2HY_uRnf@aK2yu~xA>11%oW$-P*h=!&01yXotAfy5#5<-|N z8Wv!SF4TJY@t89fg?S%7~x0&Nxj zjO~RtVv?2HXO94j43L0y!R;|;otgx=DY-|t5V2l^${g=Qm^%dv;mhV04AVKJZl5b0 zz{7IeK&%X&?IL*L2*@>VG#Gzy8X(TnGBB}dN+hRdL)7-uW#2%VXqcPGJ4NvBDg9py zyZ=|EqrFydq&xyVz?H1Vu`&K*8j4(MlibxNcKrCEe1fAkxw(-QA&dcO#vW zg21=7@Bf_d-f_;jV_e60x37CYtLB<(=5MYix&2NDPR?Wzg$;<;&%q9+0-R__Bu}E% zY#{R$h9jE|JhO9laKMPD;(mmX$bGWCE>o(J0qJq-)+jxeTp2Q5xDQ9svu5rL`H@>y zC(^oH2vq)o|4q&USYRfl6-D7t~uB~ly%jMO@T7yHu0LdA9`cu17P2>|fQ7Ev^*idX;H}v>D z4dwOcu|Mx#WB>GHtiJ~;`8XFh)5EmtZ3VfPCeV}L!LzUux?Jo~67ycML%au5a`|6I zl{^Tk*BLZ7I0XM1*b%3dF@CyMnNd0w(B@DR4=6~-cxg_x9_>ZO2AF2uOwpUG2J@O0 zZHk-ecW84>;Gf3_zlTn?#fl+i{lbOG7NoEq^7tp;xefcGN@}Lx1u&my0L+E(^m#lG zC{6i+t%o)fr^5(6p>ZEZwcxSeTw_n7PO;CH8h=l@KJ2Qo>g4(tf^YC5b3it0ouFT; zIWP<(q|#RuTJqYw5Kv&AvR{y&f9YJFZ9pDu0d$13?3+HpvQ|`^g{FMPQ)(=J5?0mY zEhV(ib`{54a+D4h10>p+M2ZTES-5*$fH?@_?&PP~=X-k#@)f&d)>~8D%S0SeeU)fsG@hSir91Oi!ApzSd@8O45*+}~0v08?3;kFss2DY$-NGC1*C z7$_u8%P>MoU!Y)su>Dj1)Kw9;7CAlZ^%L9MCPtLhqKykjCw46k?3AzF9L+fJX^QG& zkHxjwcB)nnmoERAf{O3ob$O$)3E!~iSW&eFdX)Z?BdJzjG8OKOCKZe^9 zauEnLyajk~qp#jXS5l)v_mbf7Dk_CeCZOc)Q~AVc6OZXB?FzYHKG`_dB9H05Q74g} zHy6j0J@r1OLbi-I7k`WqL++R0zUp-SWw25SPU}^8LCWt)h-SQJ62Qw_z(H_7k)BEN z)I62qbbQ8+nAGhjdsD7dv&22Zj>I9mTjy!GL*g3QSCV-IAsyD&vq<-E0sC@F_Kr&z z=xY7z6au%}_3oA+B&bKV7fzsCL2OqSb7tWJgv5Fjf_zLO1ax?wzy*8Go7Yxf zMp|Pe{9r^qIcp_Zd@Tna`aNm)u`+59(c|&-$B8yCd^o|t7Uz=`w^v=_9KuXJW58{X zT^()-BFEMVW66&bC^$nX+nWPl$Y(}XVk1_MHjnf78Tk@o#V~Zo#5rkmRyd^Xe2~Iq zRhi#Ij;z*eRExj!M>dn0Pk~zae1{t@NPhdEp62goEdEV3;Km45Ub0il#+_|`$`_|I ziazUJ>T@IW#)OT*GWY-}W?E}btP93=+BcFwG;b1{U=MJ7mx;q~ZgNeHtM4^RKTemP zr%|}zk!H=)jq1hVyYuI-rl}dBip^TSfCy<-MHK&1E6sN#lQe6^)8|5+JL&T=ZI{Eq zbXtQwawt5z&eQ{}m_4%*o*xYrOU(p$*$geLZ4y#4EcY8zymG8F+QnV8p%iis>(Rk2m-dg{N& zwBD@bx!3dAHIlqeIoT3~akd%iA9g#*qXVeGiBV5z6m=iX1{}YkpS%X2Y&{p| zzki^kS^45{Pho+~N=qI;zp~sClw}B}3sN?s41I2Gn@G<(E@Sb{Xgv7fJMN5?3kFh?CHxQi`bHF?%(PKg4>x!4i8?LtZ&B@)kCt07M7VF* zAw2}n6T0F+MxfD1I0+mgv{mTfVM0ssyWw~K*?xpUk}YbV zIYcew=A#(&#);lC*c6X#?(sIWKdMeLgumdLZjdv0A%d^VD#X!;$Plp(PINX?{0R!v zvKr19sz>7GXt~Kc!}Vm(Dt^yDU(F-eS>OlYq##edxxVFiIe!lReUVvJBLWaqup`5` z;t-myB^Zd=e`5g*TSHa=t58##XgPIuUeQ<3+=D4`U1>Wn3bwu)VSD& zq+7o_yIEVxdPZzDwsTkETqq3~{`9xRw^s(rWY{O-9W-q^)jLdwdCSc530R|ojS!?l zjLY>D+I$uglh;~>p`b7Z+yxW0iyae~O@dn?h4tLT)8o|TrHM-5U<&(W;{91}K|%}l zSZ=*4&wEKF9$E$HjjHg*JR!zk`EX5ySQli?%AB7xRC^^5Zgx-vejt*g_*A-6^RI`| z9_EW&mBR|(4~p?tcKU1>$wlg7;FS0#plWx?6laz@q|bKvl=n!X+!vnnGyRquD5PXh z*$zA_huu?LACjWohqc?>vOZkf9kntI1e0HPEU#3(ME2>12m^Bf7?Mr-;`ojh5(b4= zPUaY_w6>D>&aKq)zk`c_3%y5lbKS@$J-1AhSrvkQ$ksBNLp`M)7x&wUvxfZz0Y6G5DN!2Lkisd~D_NGl zbwagQ_Zn`WHlqsfAl@)gL61&gLo~nf?uB~B1FNoYz<5w7uD%F$A_Y>cb zN^Pi8vH>Z^xv)xbnmI&N%46HmNgZ)r@FF@upZe4A4XuHT(BaS8D2v+9xg`34xyYg06T(bnEJQQdk~g+T^XUL&#d`$VIf?<^v5mDHEzj0(-> zHOfc(QZB7tr<-xLev#pLV?F1vBz55f?M1mx{RpHXe!{Xptk*ic=O#X68~akDkm$|g z7k+LwvheBuO6OVeM!~R0EVxg~MTC@YKPHnp7&3pP#2Tt^3Jvu5f}ycIO)&j0eiS-z zh*q^CWxmqK(GLU2-0;nP&$cQ$!%k!S4(evs;ZcC45{)@|MVtZe5ViGYt)~D$gwz)L ze{z+jZm){D#@+j(9dA!gfnMMUlEVpBW!44jc{x%lrQRR5As@%=lRxF>4>H`l>&m-4 z^ko*mx+I>D*9r^OUxx~PFcJS=>b8ophKB_HBs|S|@3%D zccTHpGGRO}X!dft*L5^OBC;S zkTP`80~Q7x0DvWlk%GBO_ky`H^2d;9riQx*I%WG3h7`%XGg-STc(dw4_VQ8%0B^i! z(QyrQsrr1Bzmfor9I>8=fyy+BT17q&qW@i<*OOIR??Ux+*uaWOGvt{Y8!$DuZ>}=q z>tfug6*eyuC1Z|w6X}~-f>Oxvbfy0~i>Q0B0%eQ!cetG)e3NtM@oW@xOpC6S0rm}URh2gxjMr>1zW7fF|@ z|Dx9BR>2b*+H;EE0i`JgL2nW3pD|EN^i7&<^AeMMY4%fedLI|o{*>i6036sepjOw9 zv_QI)c!_)=0H38#SlB?=#x_}**8gq8$B93KmKsm2jCXP_>}#bf<3_<4&Ky%oP;ItG zYgDf_qzj_u9Cq3F7J+k5rFSiex==kj7zsIOS8A_It4dv;s@qg~|AwUh(ZR#aqd3*^By zFjMUHzM|h$Os+!vLgpMI4V&R|rR5EI^y2o^(a0a~rvlmc>-QoY-utl#eWl$$3?6C> zV!&=*6&9-G6d`4~!ohwN)3+{LV5x$G+k@v26MvySqabj@PD^`zd7XLtPS`zyxQNEPV@8N270 z{qu9OFl{x26eq_wV)_kz0MEw-Y~01Y()D)ZCYGu1BfsQYC06{(N|!=#gW@f5U5_ZP zYZMJ+k!$1pYfFC|%nAXuFuS>n(nX^1L?IAWERKdQE$ z_PF+WjZOuR%KgGYW@#H+W6^O5Huoc&RDWR|TO6Xk)rVCPhNYv*#QFSVVhZg#8gK-N zV}P3vf{M`#0-c!-klTfp_-Cai0Z0WVrjmVzGfE1>1E0ixxyc=_S&08|NN+~<>|>JP zuyb$1;dTTjE2N8Bw`}>f-sH*_??Jf7HI3 zk7Zj45;~Uz+f|ZITPLQ3pNdf zE-V|6uPs(y0Pm0sD{v-V-3woLT&y*_u2h=;wu_C&sYl`;)_99>iNgGeA|cQ=!bbG{ZKdwC$uL|6)h6hx7n}%kMI;vgM@|axnAFDdz;l}=O1h`cTno9@I zPRdFn^M}wfMX}N`We{p;B>(Nq?!r|E-pzG=nfA((lhw^1F@$&g_r_~uhkn90mnROH zRmV7F8kr@qu?7m?+S@DmM;+q_Mtl969K3+{A$rB(v+-_Hf0A`uG$X!`JCWhR#O-Lx z2P}?x=7X?yS=N=rO}akO9zR0WRR!+-r?eStno4hCKtrPZD{C4*WZyF?Z4TLQY)>Pq zM+MgAPl7&YU8wQdtEmz4?($bQWe563i{f)zJjZu9Z#JCUQvBX_%swscW!KSEs(Zwh zXWhYO9G!iwC~aobSq(=EZ!o9HNyXMZ zidcBIZbPp4lK$&G{(N5^jZy;@-13i4r52&DSHr!lqyL6CK8gLBAZKiYC%_@(;l%rQ zQs&8SJpVN-G#5u*f1!F}aE?V5>4*H-cDzh=2v)qC zixXme)!seo;!wAVf1r^mZTrb{9gq`6s%T-R=RBpw2Z(2S8L^sQ*j*q^GTf~Ggm2cT zSntVm^&CK|M{KiAa3SMtcBdIasn22;?1XJ|fM0D?`sEnT`BY^Fd-VQGgMsXsind3= zU!ZCZ6T5*7G+B7cE-1|jDX3{lbGoPSGs4lxb3i%kOHNF!qO}ZMUJA}@ZEP|jJc2i4 zO7VE6;X$T?DH;r#e-bp?*A-|MXZPMW_<3?<>|6d8X4mjYy{aOed!%sbF!>_2f6bTGG96WW?cE~QGfGmhn4Xbel?+Ni^?ELoGelC#W-lVK z42S0j>fag8pVaxcIy@#QBndp7??gX=1YJYFxN5`Sv}h#SJKn$(lV;#~f6s&y88X(JPS#lq7TnNvW9{nnpJhtYy62XV~vwfqBx-JSf_HdcHuY>#vrAlX2-UqWm;KBhpDw}o*L10Z|^3xl1iO3TzGSP)JP|$Sk0THR6 zh#za}f+N6zHGm*t15TtYHzG*3tQiX7zR{aa7ZU0?N8B1cFIb z*rhr*CP+}qeA|N(+G>yy+Sehe%|XrBSzsCYb z$)l|DBqCC%aOD^*@$KYt#9$%pze{Xn;DStno6dI43iI!2CU=D{J%9Us0ABJ3TcuVO zjz1X%i@IN=Bh7CQ*o}9#KhT36p6JV*LK3EDkJw@IE16WhyQ?{gcs5a_^m%H|vIzXi zL1+u~rTIA+2#ndywHucOstE5q&|y`%>(WZ}xqfyEfoL9XBmR}qY%mkPx>WF3y3_V1 zs2ctdq$qUhC#+DxoNG`x01$&Bkw0iJ*T2cun)I>nkq!*5l!R7Fp)gh^%3nRBl#Y`m zRg@0;nbX4hHtq*4j9l%01@{QZKf!Ikh^suU@nY*F7eZyp?}P#KLCxehhagE?L?abN zL10(kT~MVfQ9DbMoZt=OB&Gr)P-S@$MFQCSXfqmCC@ScY-`w*HVvxi<6Lsw{wWm`u zbvCqm5R9_^p$!kd25y^9BZwnHb=1pwt&jTEA3$(EA4zoSJ~7LTMKsCW2|F{dGye zA2SPa-ZE{6TcWqAztVHF34UkDHo&K&Zsw9GbPOzNpW`*7ZrB4f4#>0lJ9(2pxh%}} zD>E5P{=pkF5KU}VL3KdbTO>z2HTnj7_O)MsP0d85DqFSGIw&QX9pCXY-%s|KFQRrF z(uAzccG?`$Q`{put9@wrr`*oK3~HII8z6jwCilrrys!YlN}mq`eE~xukj(CBYYX&> z)a2Sq>NMsd^}aMH4^VJwzWeLH|N9harFsO3gRTwm)&l@xwzt29ipnus|8vG-3zM=Q zMx<;1FN(g$2FSkk>KJe zzDC)86ZTI(Y`w|7G<^0~WK%|<^yF};=utxc<}5-v%{tGBpgNAtt*J5rch_~ijYWIz z1aLmrmQQ4ggBE<0+pZ9;Oe3u&iJwcEL9`w&L3vz$$4}mL(#CIPiX?bJJs)lB?O6{| zJQO63zOZc%5k4NZ-n;sGnR76ARa#NIRdvYh9r!a_hv5&{iJWRwwW19CsnS|)il;zg z9S%jL?UKBX9tv8J7*N7ULANURvy966o0 z=zgOBg#k?WTJE9iFmjEP{!xO(1$wN=J}_+2k~SX7`6K4|0|8l7rV4{Yx;QxODbL~; zB^B@9<{rygIv&B(+0^R*r!CWoPH;SCsD50moaD&#Y^WNE)mXxr>s6-xsQ`^aXVuCk{}6h8_&x-(P-=>QXw0<*$8JU1NWUOD_|^wExl|+lg{= z-n!i98A)wi=?50}firGA62F}h={cELSs!Z5;J#;|;`Q}a5b1-W9;H6TxZ}(JCiiJ% z*|_-mAeY-=(Nrqgz1Y*-^{&UYtvpHoRh-L$>341ABcp_UD@L8TAM5UEG)@OlS*D4G!F)6yu;<$u9bM2+gXTIX*yg8klPz&UB_OkJ1 zyZhCjdyt9VFCxrwoA6wPPkpA%cvAvpxr){pBAkA!%ocTz<4I-g&xjj+T48|})#`k? zBw9i8rW4iuUw)>|50xasa@=Nr%F4aOk>MF+ zal+dGM=hgwp+1ZVzp2{+#%A)05U8g#QrpY zXSO4l2? zIuewN#X;`{fRCRfYE{OcduVGf;uyfWrIUG7-fEE(4UZE@Fzwo^J;xqWoRbyrK#DUL ziP)%C_{OsmNrXEQU6pY6rFAAMtH_ADk|+vk@<-iK_Xl_3ofu$`8pIv;wbZkz&5uDIM@`l~M$3sHNW7$Q1uMB|F`#hPWj;);YZoaC7om=~_*FASa@*hu3 zLJsT%ixsFP?p!Le=EeE5V@B2#AKEcjcmq1BF@I#`ZtB~E!U9ur!|@TsotGnluOl&* zc%R4!$suSGTky6fUG8$VbU`B@(;or)9Att;%DB#J2}2myIpd;(EY6PHK@=YX`HDY( zUYM=B2;RB#qXLSBfC%dQ5{`cbG89y{MFZ>#q}LvRjUbTuc<4W*hpw#`0XHUNc}^oj z))8T#SJ|}Ks5HVrOqHNe4hfJ=WIe(IHF+Tt&;iUF03brfk0K2j(y4|Ga1=rF@KXRO zBO(9a(*R*q3!so-00&U^0)eR4e2@b7M|1)R2?QcDD9QJ_o>`p!$Em zg;{L=zpappdSDz=Aos zS)e4bK?P{5Fk67hP%MN(PjXq2L0B4$XYg;i{VkGg5D*rtgamP}fbC3HOQ|>QoL|O= z1eyK&5~RLz=%An#6e@U&+^|nz69LsC*ud2rUg$`xy&y3kj-vwufo@?iifxJq7&=4% zN_~jPf7AJ2-vQ7k8-N+L*#XE68z4GXA;502eSzlfm7zEsNW#D6f?TD~-1yf-e(B!M zd1R`JwnLjAAO-(FJl0)z4V{ldk}60%SArD*G9CY;99Zo?a6}jAar`Sl*ZuDnP`1+i z9~=e1T+{$&fVMFGUoAGO9#~YsFzWIH#IXMs^2`9*2QbBJ{?IS-gNcJ^4J0TBtX!fI z%7y^L4heBP0iX~NN2;QQgJ9tS_D0e&l}mp$2@>3J4EdcQCnyjJC{Iz^10-JU-t;vo zB;HyvRs|p_u)&^CLKzRMe%#nx>I-&c1@KzfP>=NyAwf{)AY4=&2KZJa0CEpX3HL1f zZ(6~q$8FN^@7E9eY7wFgOe z+EfEg7j>X85m58m{BNsKFRgX}!@mKU6+^(G3cgUptm8jC6$`Z2NGy}Ld)1xoJO6K& z;M4{Q8iLe!uotPzdn5QoBdTy82UrNGlZSzrS6#B_&;aL?^Evnss;tV3c?Lnk0fdt7 zG=4j~>fs*5j@lXphzjY4KEL_zd4RbzJ%bKm`QNOeEbAR6L~;+3n!>@1Df}XEuT$!MQgNO^8l{I^|Uvch>E; z7ZAuTGPGY?kQ~K)tpD{a3SdKc6i!^bw1!13qzIvL(`lT~q>d$BP8N%ANyIA|sk0GI(7JX4SP zuRjazKIr{FA~HaUxCC${S*8>x^)65x?8H>?5HJQMobn_c}Ss!MDE|bdr+d=SRjx@ zs0#KzlA7#qL6R#<2DoZ*kniEIZ?evP`*K>>pKS`LUU1>-%g$shNGGsk$LK&p$^s&$ z_@xHC;0(-1qYiF6&WjE9ti?m<83apI2q?QH!&mx#gj^5`EjH{I7woiJvp=eFK*54P z^>;u|a=;_&*oTabXXO@@P!OgOgH3cM48UVk^tHj|*Q?{>flcXw4)_724Bw}n7S`nx z`=OBzG&2)W7u(#`DAm|O2}Fbgh}`)>aOYCtb?J3Iz+G|EUtiQ>QO&<3wLpP%5Jcr| zZ$<5acbh&}8c8zt4v+P6ec}0ONX(w+av;hGWhYK8=&Um5zyB%IeO{fwqTSU8LP_ik zB@{dgPMM0txG5oE>tUcP8wKvvhsz2tGMZW)4bx_iotc$1w$zU@WLWuOw7K zf3cWZdba6nzYz|vqp7`uS5)2?J108{t{%GqO!9A9K&uwy3xFaiQ;^@7)R=U&N%vUf z&M7Hne_yhfZ`0$a^6?qOQ~)}&wguN9gQ_a?r4y}(Hg>v|>o%&qOavZve3gu7_V@Kh zfFuC40tu>uc1+sKum5+TB_3&6;SSsda9hYco>(ejQ4x=J___E-Meu``ms%^%hVUer5(UXPoNBHAp;J}x=lU*Q+Er7sl*8_ z0FVJt`7n@_kh0498`V`02yA7N`)D*E9cd&T6(mRp6i)$gPYXsTG6SIbI1ZF`%Rr8e zejk)`bpH5v@xw86neH2gGtUDk=}Aq1>W%r=Wli0^Cbm8$c_1k0hm5mdL!Y7t0kCA9 z%|^|zI%Q~T8(rDqy+>syv!OQ;Tqc0UL%e`Qc?GOL#IsJ> z$?0ojAWuYTz))yXP@!%DP-nxLrInlMUf|i@_fT?4R;Ju*k@}$ozJ{LSPBJpES&~4O zQt#_$P{L4TgD{I9kbF=R2m)(4kY)VJch?B@YgLlFF;u~0K_F^S^BRrdUO$JytF-$) zsAm2jX<#}I<@8!CMd|Ul|9ni)54pvZGNdzSAt_l?n}iC+VL|@x19bTtU%@&#p97cr z+d;jc3p@PQwf1BzxHSbr#1B0+#q$vvsL-R-b!$&M0;1KI?0`R7p|&ySD-hLF6)0_H z2KgRf;H^MSPT3eo)FV@xeE>cO0b0N_;!rl60J-T>=0~$RI5Aq<0 zaV0gWG#PEjrTb04-fg4=-0s~A9V#dSqF2!~`u3>EY%#X*xqXlLFUd54>Z_LB>r zgcVZ1rh`62pgOV>!@eRWt@JE}j%Gmb+hV$T*D4;^LMA{k$Pp9MZ#MU7qc3x(!#-E&0D)pW&6SOrofwryf`yfgw7^v{=5`3Q^EJDH?X=oq0lK~ z8ca0e$dH01yLHIY-eNH3{@ts3+E|KpZKcN;4QD~^Ak z|87A)(o>Eh5g=+Oyrbw{CJP+7wTKp&w-C0iNe?@sr<3!M%~JnPOsueKgbPFWf&it! zc0V_G)tAu$7Wp#y@r#4zBHnL8W?PZ#!4$nkds8O89({_j`-6%5R|&jXL$6hEVB)d1 zJ{OV|`Ic-#J|gh;+D^NikYXsZAv!;s!ovCTHJ(RqxvBbo12J_YK1w|#s8;n4#*ttZ z)>Niz8e%o^Z$jEQPG7J+U1TAZ+9p9_#YzKW{GIJ7%ix5{JjvgdQ`R0oYmp{K< zdrK#Qgx4jz2GSH%eWV`;~|GsJRx3bACXDU4vyL-Zz-*Lg4sF` zUCbdjOmw0@zq>V;_cP0yrN~})Eqsq^LElJnun%PG2wl)B_p*1}9~jK>i5dLZgH#|7 znUP~a(i=W8v+wnwK#X-2B3LI!5REFMdeKW`!B-Yrz9GG1{h%nLImwUE7pSp8Zd5#=hQ5nZI%CP+vARj}ruieG z-{Q>=5w0Yq^=R}aL?$-sd-u%&&NTfOTfFS%;+wcl(o~Hy;h*66yrN2nL^|E=norFw z^Y4$^{Nvk5cRUny(9JHsm6Bco+WNJ_4aRR`3kMU z>9K{ zE}R91S(wcW2L>LAdey2u-|O^8vXu&+;eGS;Y2QBn&5NUFm)GPAXV5%XCoj&t3-|H3 zgG!xfm{z?Z(Pk&^P2xC@Fd=~hYD|i2$EWZ|eM^}WamY-<^Q?5PF^@5R4KnzNW!Io$&8c#V)00GwO8x!zF6Iv>9%XjB`VGe)z3*XjB^>xZ zODc2Ks~OaNnI1itQX_I~;%&&p-t~X}y+YqZV*BQm(ULcxq} z#IEm(GrxJ2W8miT0^79TdB8{Qyt&-u;;%-*FZ5TAD`g+`jT?*)e2v?L&PqQ8R9vee z$n+}A4E2-$+$H8VY4w>nCUG)J{`W(;g8M#OK~%NtycoKsVhh_)sh0;drNquwV@ngpt&sLUYLS$ADv_1J&Y**keeA17l`<7IzvH5~XN|?(xG#z&FUt``|r~D}0 zXx1gP%FW*Ct)6$!NqRliRvH>?u7jVJT()eJhch@*IM{n;H?4O1qT#jPPkWPSeJ_U5 zPmEm%dJQdKZRP3@yakP<7&AqwI1O9SLz5^Z!8o$P#pK^^c^1ibE>Odu-{o=Xq zbW!L&%h%l+@vem)d|_s_hB8MF$EJHOnBVV%tTxXrNFO`75J%jysGo>1{dSmC;_DU? zh}~qzcZAmbqrzhYGD(ce|HL4aB-;?`M^MNLc(WsyFqrp-d<(2#(=kZjZ6tNY+7IB5)vA4qc+*KRq|c%kfA9Jya+<4_8UE9>-H~hE z;<+rV-{$pQ4Vpd;k;+?!NC}Z{Wf@}|n@r`T*QApfx{h8uq1b6Fm;jLDG>=|#y!^75oVuj$d%GB)u(}uWg*XN|dq6YGU;N<~=g)m6>$5H_SE)mv zlWgQyXD#0)=%)PQG;a&`{z%Wbxrpi&)lX+`Kzm7sM@6oO(e4{8NO0v6hVv?g5l7uG z*dS35m7?y;d`<)nc?|V53};$Xqsm)0!^=VyCHs)-7tvOK$RpIYC<$eduDXe2%yEPS zlbdLU)o-3g> zsg0FBKD|Bomc0kN{%nG=GVG3^{KKMStp4!=t-czm3r>Xfr-mHIu)C2M1)Q%p=NfYZ z{_D60^kVOCr;8X#D5DeZ7BOvWCH&V1hTSI8?~u3g4<_JUEFunAMT#8_2YAk9lL}DP z`x3{^%|d3S_WbOlW!ce?(bXx!u-(P}k`^Z+U8xZHU6a^XrLvEUM6ojZ@rq$np+?Y* zSGb^3ztRlRamK?T*pf#>$E{~2(I?iq|cUD>T4!Zc`7Ml~=@s#s`M2TlbTc5q7CHe{)F=#!bd>ItTQgc_h zJ&@eSnH9*!UQGlfY78Yf^AmodoAerGi1fki3R8#Qsk4zS3;5K%{G!A+?(=Iq?Xw@5 zKB}W5@pZmY?|pmcU?Qws;=f-XVrPu_=9GEs6>@UMN$id@56097H`N%VdKo&Xw)S9z zzcOonct{(H{VnxSxZS=#k+(UboEbAkXa5Ruyxp~&ygA`21&wH*bJAi3aco$|?50xi#~`Ed(rzsGE^S_3Y?kE-qnj!>|Ig1! z$64!5a8Bunjq{DXzvEaHeenLw;Xb~a7S8oc{JV#0HE;Brp=plL58awyAQf$A0p-AG zoBd-;Y@k_;PqG!foP_5DO1CcP9s32YU`%cPoc~?gHgkS_oqfC3xun_n+^H zk{BVJSTYq-zL59qx>%iwdpgQr8eKJiLX;PYC*u*EoM!fr4OMm?QvYb4>YP>!huI*L zRQ*6rl9?5>kwc1;z-g&JVUcMtrL>Oj*S(7SoR<3Pr;YWQ&`vF+a7Dh$PQ~IgZCoB- zC4<{V5Nm^s`p?zt(Mh~ZZt-5ZYl=@Wh!JLLf1US_?7U7s8u^H!rD)bn88}P5!T!zH zjOQIJcZ{2%n`G3^!6;)eWU_G$-WL9Up$C~L2<$*0+JGKJ{|7zPT%DZV{{JFMMq=07 zUP|zOwea@P;guPqlrQXDL;3=hbCXgP3DODqM!L8L9?@nmzW0Y^erqyHi(xT(5uBJWx23fhws6aR^wOP~ zFcucs->EK1l4JB%$@8NaRvTWMpBpZ(UDn$1o2eoL!#uW$$2r%!xgQZ!r9OY*Ca1R( z-u_B|%?m>D{}<|sKYH7DgX`^2fb0CfU#{rr;b3m%3Ty@F3p|EXmmIhF0X3HP zK3Xp5gn1CyRx@eT#=xZa8BgIjU~foLGEq3*SluD{fA6&pfbr~I#orW`G_0~< zw}d_fyM}(cmVjEV4K_go)2L)LmY1H05#mJLG6IYTAtBh5-rb$2U+F{Dc`Wk|g1Xfy zqe@?XiKlrO=^5!y3SqYui|5@>{_2uH>an?k%I-#O>OzMy`ucSR$sY- zPA%M1Yx_={;+XjcF%2&RNwYKp&nzboPbkmFfb3THIjc3g<%Q@o{tQ0PrRCGKw@+G& z6 zno0A)(nTKClP>awKH*8#%oS)Fg-m+sAgvx_3Ar)7DW6o^ujF$!53V&+}G&bl$qbNm5 z8#h#ZV6Ji5-;@2UuzWqbRO4wM=i-!G)~)D(r!qVcBFxZ{weBe8hfu4Fz4zl|=69jW zmQPd%3^Hdid{ub4$71IQFT1W!S{3$Wl46cfI6migB%_;+-DmLfF9ej>+@%{?c$QW3 ziM)yH>p41qdAsr0u5U)tB4Jh>@?Lp#{dliSENl0V6`ECST#Lyc$*J4Hr5{#ZL|km= z#H&OjlMNMt^%otqBdj#v7Db+n7J^akKYRLajD~V2qs4eEw5wQW)yb4ql}5@j#nx{g zgmt6;t=(1p@oG+Z{Ma%C1yW=gE}8aRM?;Nx-j42XJkAGKgjKOKlqD=XmwIm3V)g){ zc-$Rhg7-MT-q9}6co>h+H`@s+)#cU4E%PH06B4)U8 z|D9#oV*)pO^LT7}IC$a@aimJ~(w$`H@2UD`{*9lWFH~Zx)7TmOpXf6Xx@ehag!bdp zcO5nf3H0N%Q{UZ#Q1}1k#P3v-D(8ZjVNe6 z%+7!o)T3nTfWLF8$~fW+sUFw+49fqx=pjz*dz0IVP7N zLh*1|)bVsY5J~8B{`pKK5n}sjj+>P*D^um~;+h<3*KYO)(|kzN$Ca)con?FO=)|(8 z`hMkFkCER%r?ez1UOM*mTg%nC09ehAj4)(YsbL2PB4aiB76%yn9zF?vO0nNs7q%3=)$V z*kzVM9E;0jyVZ-0@kV{CHz|B;ju@3P;k`|qRGOBrsCxBxQ@fN32kH33>DCCpWkxcG zZbGLMjijn2X=;U8SOvqJ;F%}azXu7AgB^QYZ;|q{^Esrc-~D)PpNiLX_r-s3`1OVI zQxk!05+WvtE_wgC+=Ar7Px=(}_ICLTZ`v{E6hcCuVSUx|naEilGh^LIjx9#=%wmEI z@n1j2SYJ>m)6XQa%!Kw=g%xb>UdX_L-Y1of}cJsJ7F8dGM1j`?(6taGO zYoKo3olvGy%}8)J_`O~vKvAu0$$gZOkafuatBa&P+GIezSM#vjoeY$k@u`ac5?Q2p z`lTO<;YNwqq7{(EPPmAYEaH1bw{3tQwY~6>NoAEKSlXy9<|fYW{7J{uqDMOY?-w5Y zxX^Q|uoE#9^RKk7cD2W!TSBW2zp0@sXP4$KX!7v}mPQb$&W!&qc`oEv8o@g}XV0iY zLwtL6RY@G=i#D(kXG0oUlj}m-9@g*Di1K`30~vggo99C68QbsjnF*!{D|ZNm%_3Xq zdmG8kE$K$2-@8|5J)&Z;w;SY`w*idj2;Hz2hW!Dn?)+EOig3va5 zI_aeMA&Br#+@x^@IEqEZyxwmow}^jGBAfmkw5H$evZ0z~tbY%MfB zo3_&5+fkBe8K)80E_Ul&lRtMB3$PCNo|PlZ5>Tx6|8X{AN?dnMrOiM(6pf3v{l3u@ z96_A*+~)H}8uWjNbTiaT26M1&f97B_4d-C*m({8=w-NJF|My?*hVMNQVKm11b*aU2 zho{#kBo9q9XK}~PmXAN+JJ0s}r<|dSv{vbR5S}H0?T_an+en!2WaHM!H%h3V2f}_Er80Pa<5KlC-xf zZiI=rqYwR5^?jH89JN9(Y{DLv(|e_l_0}zar8OsqewjGb+ocQ$y?!fknSJnW06WCX zUf5fL0*9c8x3$f;-pmDOyo}N~@ZAmnEn_|Nh}QeuXRUZLRQ#5o3vq4}*8Uue+X{J8 zeOSLtvZ*DM{zZlEiI1zqO_v-MmAK8#qhgW#LTl?GQhXI9MTXagg4AE zN(=_fTC&TzWIsj7Ok)3ioK;mRs``r=IULS!_McB3pVl|d)NYL7Xg}pE|GLaMN;R!SZ`=rV=u}6)W;XL77k0|^-BL$y=*}ZQJ=-2zkCwLl zW+YYAiIS)kicgt_B2>|Ke8^ANfWQANiFxva;+J_Q!4B)s7lLYMPg!>Rh>9#Wv%n zTBJ6d8ZZ&!xfa3bfl31~B#+-!kY#J(Dm#mhV%_f;nujcc)fdtb@~U~zWv$*kkNr7X z$N}4~|3ijz1ue$8H{zgmuZ@HKLW1swb&&hblnor5AOYBq{Z`XDX7 zgD~eRqi*%2zrr1KhhMtC9uZ2)e58xUlCG)!bLN1f|IF}};_HnB3XLI&r2 zn2WyQ`*5n$&ulAFPZO`a*9#X8?;6-c(mjlh8_Wobn#W*63#iO3S#zFt#qpC2!v)Q;E@M$^G@cLtzL)O*D>43$=qu-IK ztSwG_VOFUR(=W1mZc~hOv``!Pm#pOLEYp$MTfP@>Fn7rimA1eqW(J6DrJU}HIQqmA zHmP%-Y|HK+zjlmbN4) z%S8_Uo5iPoZJM8rSM$Qlja0q^WCGHsknM;){OF9$;zZCPS^6?oTj)m;7_zeU*q|64 zHFCnToL1G^5Js_yx1Ik_d)FNfSJS?=Bzg#|muS(6M3;!@-I5I=N`%$hsu4sdgy=-? zVK-5tcfpG&L8A9wq6@2+?mkHMVNkYiznxL-fBwrvkN319l+DCby`LV=3itFOp6M`U_P zd(jW$Cw)=hdh)ha$}O`^-LnxIR_~8%rOJq>L`{w+Cn58cM`BaMj3gD3D`h!W(~C0n zU;$D0n#E(^kYLgEOoh2pg8d{`lw>6E3?S-JOv`Zi^_F;tM-`k{>WPK93+4)5rZ#;b z`(i!ytC^p^VPZP@k}Eu0CRhvXixz~yG=fSnQvE9F3z;xMBcKq@I_DIx&D5=`tRxcT zW+qB%8x^NdCS__H2c5=4LBH2uVt56_^|nVa-AwHnQg-d@CjuNKQpp`9_EhmkaTSVd z(<=z`Arcte2-Ki^y#%fCW|*@we7HfH2s*TAvy+Ks>Gd>Qmf#8;1`evIIaSp z4xr5Ye1ZB3RHc}O7%-v&rk6M!(J3+|hH@@O3M5{}B^c!h z!Dgrezp0f^&2l;6{?`R*v5jv&bwo>k;FKp}s4FeVrFWjpo|8gjvh?u7P{)>PjWLKMjG8AZ84^~R3zc{ ziek1!!r*}2H)m%qqMuaFcoA=*uQMv`J6`@}u-@(sL@8XY9>MH6NYGBzN6lYqj-2O+ z5h^a9+uEA4J#@9AYAl}YpXnJ}H-~e=?Hag8iy6G(mDa1$A$2I*!^YpnMsLAOlcQ?t z*42=UjnUJsGl=Pjw>8Y8ql|Ytz&Zvaqd7TkEi-#l6{$Hc9i?l~gZ(%A^qd~^`@_0n zrHeUGdFR_Xa_JgGB$9ht*`>)56?Bi2ZAdE`s^0O|&S$B`#+Ag+3tKr(&;^Mtc z&#KBaDW-NRKPxGXlsLu5FN*0~Qp`)N{Uw)&CBeI;{Jd*;>o10&&KrfZjZycek1+GR z>bi+UP3fxc@Q1F$BWyMaF5^vhuSKl4W*(!}e~#e5t4DtD^yy6Si6=3|Ojad2UbJv@ zv#gp}BFqg=N?PAVEJu6qdPa66M#lNanXn{AJP?l8)1_pqp~;Nu7G$wp2EEg?TLrnu zIvP|C_%VK6yYf}fDtJh`7Dh_3Pde@`(+oGeKFMBuNE6SBJLI$diuu(N`ks#P9$&ct zUTquA;c9oLb?@*yzApk3E3mzjt}a@6Elm?$_2o~TpWiYdAK%`JX7E>^9*F&`u1s$J zHP7m*Qz{!3wOb!3v?HU8BV16apj3&ZRL=DB_XbMp>oo1hT~L*D?)N_7^Lfw0s|;p) zpDxuveBXRu-i6eruTC6V?o~KsxxQVpRrZK5GH%TqbyTzZXhcKi)OQ`S0hb!x@5hng zTOk_HctpG1WKpGw_(DB|FG1ERjQ+;O&&&_L^v#fmZ|Me+WCm~t3^{zPlV#?RDPtwY zWzhZ1YK~%wLJ8*9GPqR~s05eZZ$rn*)hY3;>kt!{_%FLRUN_TzXmbGEQ!Yb6%*f=EZ%`_5+BeB>`$ay07o9k3F-?p&uA%nxNV`r5ow6_$wTbK)tCRdR-zvez<*U-mqIRBUJJCZFLz zv{VDjxtiTfSF9V|p{bLa_hXt7M%au^3-dI>0ZjJ zkU6khlH11_VFykr_cG$xt+-nZ-Ir)b5kruHg((#WocnH}mbTsDM#dr9G2T^%OKM>; z_77#hUwb`UM6l7{@R$205x2Qk@%}+%*^sy79@~{CDf`*h9{J3m;GTzgWbs&3NU^{e zEOw^1t!qvkJl4_uGAEetN)%aBIX}8KLT&GoxGg@)40TEB)k^kYazG-eL?E97h+^+L z6<4s#s0Y9F-(m^!IG)ETS&dJu|zBsO!r#gl9qTczYLl9Vj+m`gWKviq5@ z+dCT}otVGrlg%Ngvy@E39w7|=kDhvk0sCw zu=B|XXoi3-ywlaZ6ZGkWa}WELqdKjJuM;<~MQq>G9HA6Zwq#b1kk=_TRV!6~+%JN9 zEgiKJ?OOA}(iK6u(G36RYSz_nnn}m}cO+D5D#qjpEo1qqdZ>bBuma!EiSSkyE}l^saL^@Iei(?cTGT1U_$=8C_TX|YAKH%SNj>D3{fU@bvqvtr| z<)A8=OlSvoje|7_W$>oh^UI&GhVcv( zcY+3-w}le$r)OmFv+j1BT|iM z5x<_Ppeb*XLS3%qa<9dRSn*nYAciAA5NZASMR45Lm}lC=g>8&21+cPwjG-~V22PSy z;znJEO`B%*?UWlbNM=0^?oU_2$*%;SaDE~hy<{sGc*cGv}SSyDV*)*gu z`o@@;`6#Sf<9LOAJjWkZP_@B8v1n&;V_4@I1rF-xkTpGF&9(8G-7EjrJSZ1y(Tf4G z)eS&T`p@>Rk+qdQME|J;^vCw@a+Kxid&yOXoW!cEpJ6(i^kkS7O2-vF?2R_fqc-q* z2)v+qW^#DV;<^&WS6{OwUdt2@q2ZH}qcV})TmcR{bxAh1-2pt|nk9nQQi^-F%P-

R^$xdK#_IpIzAzn* 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