From dbfe219c528259d9b14a1b6e82b6e11f4ca75cf8 Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 4 Jan 2026 16:04:42 +0100 Subject: [PATCH 001/131] Update pyproject.toml Reflect new project structure --- pyproject.toml | 41 +++++++++++++---------------------------- 1 file changed, 13 insertions(+), 28 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 07cc202..51fc3b3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,51 +1,36 @@ [build-system] -requires = ["setuptools>=61.0", "wheel", "setuptools-git-versioning"] +requires = ["setuptools>=41", "wheel", "setuptools-git-versioning"] build-backend = "setuptools.build_meta" [project] name = "precice-case-generate" -dynamic = [ "version" ] -description = "Generates File and Folder Structure, including all of the necessary files to quickly kickstart a simulation" - +dynamic = ["version"] +description = "Generate files and folder structure for a coupled simulation with preCICE." readme = "README.md" license = "MIT" license-files = ["LICENSE"] authors = [ - { name = "VanLaareN", email = "vanlaren@example.com" }, - { name = "Toddelismyname", email = "116207910+Toddelismyname@users.noreply.github.com" } + { name = "Orlando", email = "orlac2700@gmail.com" }, ] -requires-python = ">= 3.9" +requires-python = ">= 3.10" dependencies = [ - "attrs>=25.3", - "jsonschema>=4.23", - "jsonschema-specifications>=2024.10", - "lxml>=5.3", - "ruamel_yaml", - "referencing>=0.36", - "rpds-py>=0.24", - "termcolor>=3", - "typing_extensions>=4.13", + "precice-config-graph", + "pyyaml", + "jsonschema" ] [project.scripts] precice-case-generate = "precicecasegenerate.cli:main" [project.urls] -Repository = "https://github.com/precice-forschungsprojekt/precice-generator" -Issues = "https://github.com/precice-forschungsprojekt/precice-generator/issues" -Documentation = "https://github.com/precice-forschungsprojekt/precice-generator/blob/main/README.md" +Repository = "https://github.com/precice/case-generate" +Documentation = "https://github.com/precice/case-generate/blob/main/README.md" [tool.setuptools] packages = [ -"precicecasegenerate", -"precicecasegenerate.schemas", -"precicecasegenerate.templates", -"precicecasegenerate.generation_utils", -"precicecasegenerate.controller_utils.myutils", -"precicecasegenerate.controller_utils.precice_struct", -"precicecasegenerate.controller_utils.ui_struct" + "precicecasegenerate", ] [tool.setuptools-git-versioning] @@ -53,6 +38,6 @@ enabled = true [tool.setuptools.package-data] precicecasegenerate = [ -"templates/*", -"schemas/*" + "templates/*", + "schemas/*" ] From 47d1ab7878bf1fbe83a2db34658276df2f887168 Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 4 Jan 2026 16:05:04 +0100 Subject: [PATCH 002/131] Update .gitignore Exclude logs from git --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 6f89417..c88075f 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,6 @@ build/ *.egg-info/ .DS_Store -.idea/* \ No newline at end of file +.idea/* + +*logs/ \ No newline at end of file From 03062deb6c4dfd5c17dc76b7e554ecc5e6ef8658 Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 4 Jan 2026 16:06:23 +0100 Subject: [PATCH 003/131] Removed old files --- .../controller_utils/__init__.py | 10 - .../myutils/UT_PCErrorLogging.py | 20 - .../controller_utils/myutils/__init__.py | 1 - .../precice_struct/PS_CouplingScheme.py | 568 ---------------- .../precice_struct/PS_Mesh.py | 45 -- .../precice_struct/PS_ParticipantSolver.py | 251 ------- .../precice_struct/PS_PreCICEConfig.py | 632 ------------------ .../precice_struct/PS_QuantityCoupled.py | 125 ---- .../precice_struct/__init__.py | 8 - .../controller_utils/ui_struct/UI_Coupling.py | 89 --- .../ui_struct/UI_Participant.py | 46 -- .../ui_struct/UI_SimulationInfo.py | 40 -- .../ui_struct/UI_UserInput.py | 272 -------- .../controller_utils/ui_struct/__init__.py | 2 - .../generation_utils/__init__.py | 8 - .../adapter_config_generator.py | 194 ------ .../generation_utils/config_generator.py | 71 -- .../generation_utils/file_generator.py | 133 ---- .../generation_utils/format_precice_config.py | 467 ------------- .../generation_utils/logger.py | 71 -- .../generation_utils/other_files_generator.py | 80 --- .../generation_utils/readme_generator.py | 124 ---- .../generation_utils/structure_handler.py | 110 --- precicecasegenerate/schemas/README.md | 127 ---- .../templates/adapter-config-template.json | 12 - .../templates/metaConfiguratorSettings.json | 115 ---- .../templates/template_README.md | 104 --- .../templates/template_clean.sh | 199 ------ precicecasegenerate/templates/template_run.sh | 20 - 29 files changed, 3944 deletions(-) delete mode 100644 precicecasegenerate/controller_utils/__init__.py delete mode 100644 precicecasegenerate/controller_utils/myutils/UT_PCErrorLogging.py delete mode 100644 precicecasegenerate/controller_utils/myutils/__init__.py delete mode 100644 precicecasegenerate/controller_utils/precice_struct/PS_CouplingScheme.py delete mode 100644 precicecasegenerate/controller_utils/precice_struct/PS_Mesh.py delete mode 100644 precicecasegenerate/controller_utils/precice_struct/PS_ParticipantSolver.py delete mode 100644 precicecasegenerate/controller_utils/precice_struct/PS_PreCICEConfig.py delete mode 100644 precicecasegenerate/controller_utils/precice_struct/PS_QuantityCoupled.py delete mode 100644 precicecasegenerate/controller_utils/precice_struct/__init__.py delete mode 100644 precicecasegenerate/controller_utils/ui_struct/UI_Coupling.py delete mode 100644 precicecasegenerate/controller_utils/ui_struct/UI_Participant.py delete mode 100644 precicecasegenerate/controller_utils/ui_struct/UI_SimulationInfo.py delete mode 100644 precicecasegenerate/controller_utils/ui_struct/UI_UserInput.py delete mode 100644 precicecasegenerate/controller_utils/ui_struct/__init__.py delete mode 100644 precicecasegenerate/generation_utils/__init__.py delete mode 100644 precicecasegenerate/generation_utils/adapter_config_generator.py delete mode 100644 precicecasegenerate/generation_utils/config_generator.py delete mode 100644 precicecasegenerate/generation_utils/file_generator.py delete mode 100644 precicecasegenerate/generation_utils/format_precice_config.py delete mode 100644 precicecasegenerate/generation_utils/logger.py delete mode 100644 precicecasegenerate/generation_utils/other_files_generator.py delete mode 100644 precicecasegenerate/generation_utils/readme_generator.py delete mode 100644 precicecasegenerate/generation_utils/structure_handler.py delete mode 100644 precicecasegenerate/schemas/README.md delete mode 100644 precicecasegenerate/templates/adapter-config-template.json delete mode 100644 precicecasegenerate/templates/metaConfiguratorSettings.json delete mode 100644 precicecasegenerate/templates/template_README.md delete mode 100644 precicecasegenerate/templates/template_clean.sh delete mode 100644 precicecasegenerate/templates/template_run.sh diff --git a/precicecasegenerate/controller_utils/__init__.py b/precicecasegenerate/controller_utils/__init__.py deleted file mode 100644 index cfe6446..0000000 --- a/precicecasegenerate/controller_utils/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -from .myutils import UT_PCErrorLogging -from .precice_struct import PS_CouplingScheme -from .precice_struct import PS_Mesh -from .precice_struct import PS_ParticipantSolver -from .precice_struct import PS_PreCICEConfig -from .precice_struct import PS_QuantityCoupled -from .ui_struct import UI_Coupling -from .ui_struct import UI_Participant -from .ui_struct import UI_SimulationInfo -from .ui_struct import UI_UserInput diff --git a/precicecasegenerate/controller_utils/myutils/UT_PCErrorLogging.py b/precicecasegenerate/controller_utils/myutils/UT_PCErrorLogging.py deleted file mode 100644 index a3ea6e8..0000000 --- a/precicecasegenerate/controller_utils/myutils/UT_PCErrorLogging.py +++ /dev/null @@ -1,20 +0,0 @@ -import logging - - -class UT_PCErrorLogging(object): - """ - This is the main class to record all the loggings during the run of the program - """ - - def __init__(self): - """empty Ctor""" - pass - - def rep_error(self, msg: str): - # logging.error(msg) - logging.info(msg) - pass - - def rep_info(self, msg: str): - logging.info(msg) - pass diff --git a/precicecasegenerate/controller_utils/myutils/__init__.py b/precicecasegenerate/controller_utils/myutils/__init__.py deleted file mode 100644 index d7554b3..0000000 --- a/precicecasegenerate/controller_utils/myutils/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .UT_PCErrorLogging import UT_PCErrorLogging diff --git a/precicecasegenerate/controller_utils/precice_struct/PS_CouplingScheme.py b/precicecasegenerate/controller_utils/precice_struct/PS_CouplingScheme.py deleted file mode 100644 index e5c62fe..0000000 --- a/precicecasegenerate/controller_utils/precice_struct/PS_CouplingScheme.py +++ /dev/null @@ -1,568 +0,0 @@ -from precicecasegenerate.controller_utils.myutils.UT_PCErrorLogging import ( - UT_PCErrorLogging, -) -from precicecasegenerate.controller_utils.precice_struct.PS_ParticipantSolver import ( - PS_ParticipantSolver, -) -from precicecasegenerate.controller_utils.ui_struct.UI_UserInput import UI_UserInput -import xml.etree.ElementTree as etree - - -class PS_CouplingScheme(object): - """Class to represent the Coupling schemes""" - - def __init__(self): - """Ctor to initialize all the fields""" - self.firstSolver = None - self.secondSolver = None - pass - - def init_from_UI(self, ui_config: UI_UserInput, conf): # : PS_PreCICEConfig - """This method should be overwritten by the subclasses""" - pass - - def write_precice_xml_config(self, tag: etree, config): # config: PS_PreCICEConfig - """parent function to write out XML file""" - pass - - def write_participants_and_coupling_scheme( - self, tag: etree, config, coupling_str: str - ): - """write out the config XMl file""" - if len(config.solvers) <= 2: - # for only - coupling_scheme = etree.SubElement(tag, "coupling-scheme:" + coupling_str) - # print the participants, ASSUMPTION! we assume there is at least two - mylist = ["NONE", "NONE"] - mycomplexity = [-1, -1] - myindex = 0 - for participant_name in config.solvers: - p = config.solvers[participant_name] - mylist[myindex] = participant_name - mycomplexity[myindex] = p.solver_domain.value - myindex = myindex + 1 - pass - # the solver with the higher complexity should be first - if mycomplexity[0] < mycomplexity[1]: - i = etree.SubElement( - coupling_scheme, "participants", first=mylist[0], second=mylist[1] - ) - config.couplingScheme_participants = mylist[0], mylist[1] - else: - i = etree.SubElement( - coupling_scheme, "participants", first=mylist[1], second=mylist[0] - ) - config.couplingScheme_participants = mylist[1], mylist[0] - - else: - # TODO: is "multi" good for all - coupling_scheme = etree.SubElement(tag, "coupling-scheme:multi") - # first find the solver with the most meshes and this should be the one who controls the coupling - nr_max_meshes = -1 - control_participant_name = "NONE" - for participant_name in config.solvers: - participant = config.solvers[participant_name] - # TODO: we should select the solver with the most meshes ? - if len(participant.meshes) > nr_max_meshes: - nr_max_meshes = len(participant.meshes) - control_participant_name = participant.name - pass - # second print all the participants - for participant_name in config.solvers: - participant = config.solvers[participant_name] - if participant.name == control_participant_name: - i = etree.SubElement( - coupling_scheme, - "participant", - name=participant_name, - control="yes", - ) - else: - i = etree.SubElement( - coupling_scheme, "participant", name=participant_name - ) - pass - pass - pass - return coupling_scheme - - def _find_simplest_solver(self, config): - """Find the solver with minimal complexity""" - simple_solver = None - solver_simplicity = -2 - for q_name in config.coupling_quantities: - q = config.coupling_quantities[q_name] - solver = q.source_solver - if solver_simplicity < solver.solver_domain.value: - simple_solver = solver - return simple_solver - - def _find_other_solver_for_coupling(self, quantity, solver): - """Find the other solver involved in the coupling""" - other_solver_for_coupling = None - other_mesh_name = None - for oq in quantity.list_of_solvers: - other_solver = quantity.list_of_solvers[oq] - if other_solver.name != solver.name: - other_solver_for_coupling = other_solver - for allm in other_solver.meshes: - if allm != quantity.source_mesh_name: - other_mesh_name = allm - return other_solver_for_coupling, other_mesh_name - - def write_exchange_and_convergance( - self, config, coupling_scheme, relative_conv_str: str - ): - """Writes to the XML the exchange list""" - for exchange in config.exchanges: - from_s = exchange.get("from") - to_s = exchange.get("to") - data = exchange.get("data") - - # Process mappings - read_mappings = [m.copy() for m in config.mappings_read] - write_mappings = [m.copy() for m in config.mappings_write] - - read_mapping = next( - ( - m - for m in read_mappings - if (m["from"] == from_s + "-Mesh" and m["to"] == to_s + "-Mesh") - ), - None, - ) - write_mapping = next( - ( - m - for m in write_mappings - if (m["from"] == from_s + "-Mesh" and m["to"] == to_s + "-Mesh") - ), - None, - ) - - # Choose mesh based on mapping constraint - if read_mapping and read_mapping["constraint"] == "conservative": - exchange_mesh_name = read_mapping["to"] - elif read_mapping and read_mapping["constraint"] == "consistent": - exchange_mesh_name = read_mapping["from"] - elif write_mapping and write_mapping["constraint"] == "conservative": - exchange_mesh_name = write_mapping["to"] - elif write_mapping and write_mapping["constraint"] == "consistent": - exchange_mesh_name = write_mapping["from"] - else: - exchange_mesh_name = from_s + "-Mesh" - if exchange_mesh_name not in config.exchange_mesh_names: - config.exchange_mesh_names.append(exchange_mesh_name) - e = etree.SubElement( - coupling_scheme, - "exchange", - data=data, - mesh=exchange_mesh_name, - from___=from_s, - to=to_s, - ) - # Use the same mesh for the relative convergence measure - if relative_conv_str != "": - c = etree.SubElement( - coupling_scheme, - "relative-convergence-measure", - limit=relative_conv_str, - mesh=exchange_mesh_name, - data=data, - ) - pass - - -class PS_ExplicitCoupling(PS_CouplingScheme): - """Explicit coupling scheme""" - - def __init__(self): - self.NrTimeStep = -1 - self.Dt = 1e-4 - pass - - def initFromUI(self, ui_config: UI_UserInput, conf): # conf : PS_PreCICEConfig - # call theinitialization from the UI data structures - super(PS_ExplicitCoupling, self).init_from_UI(ui_config, conf) - simulation_conf = ui_config.sim_info - self.NrTimeStep = simulation_conf.NrTimeStep - self.Dt = simulation_conf.Dt - self.display_standard_values = simulation_conf.display_standard_values - self.coupling = simulation_conf.coupling - pass - - def write_precice_xml_config(self, tag: etree, config): # config: PS_PreCICEConfig - """write out the config XMl file""" - coupling_scheme = self.write_participants_and_coupling_scheme( - tag, config, f"{self.coupling}-explicit" - ) - config.coupling_scheme = coupling_scheme - if str(self.display_standard_values).lower() == "true": - if self.NrTimeStep is None: - self.NrTimeStep = 1e-3 - if self.Dt is None: - self.Dt = 1e-3 - i = etree.SubElement( - coupling_scheme, "max-time", value=str(self.NrTimeStep) - ) - attr = {"value": str(self.Dt)} - i = etree.SubElement(coupling_scheme, "time-window-size", attr) - else: - if self.NrTimeStep is not None: - i = etree.SubElement( - coupling_scheme, "max-time", value=str(self.NrTimeStep) - ) - if self.Dt is not None: - attr = {"value": str(self.Dt)} - i = etree.SubElement(coupling_scheme, "time-window-size", attr) - - # write out the exchange but not the convergence (if empty it will not be written) - self.write_exchange_and_convergance(config, coupling_scheme, "") - - -class PS_ImplicitCoupling(PS_CouplingScheme): - """Implicit coupling scheme""" - - def __init__(self): - - # TODO: define here only implicit coupling specific measures - - self.NrTimeStep = -1 - self.Dt = 1e-4 - self.maxIteration = 50 - self.relativeConverganceEps = 1e-4 - self.extrapolation_order = 2 - self.acceleration = PS_ImplicitAcceleration() # this is the acceleration - self.display_standard_values = "false" - pass - - def initFromUI(self, ui_config: UI_UserInput, conf): # conf : PS_PreCICEConfig - # call theinitialization from the UI data structures - super(PS_ImplicitCoupling, self).init_from_UI(ui_config, conf) - - # TODO: should we add all quantities? - # later do delete some quantities from the list? - self.acceleration.post_process_quantities = conf.coupling_quantities - - simulation_conf = ui_config.sim_info - - self.NrTimeStep = simulation_conf.NrTimeStep - self.Dt = simulation_conf.Dt - self.maxIteration = simulation_conf.max_iterations - self.display_standard_values = simulation_conf.display_standard_values - self.coupling = simulation_conf.coupling - - pass - - def write_precice_xml_config(self, tag: etree, config): # config: PS_PreCICEConfig - """write out the config XMl file""" - if self.coupling not in ["serial", "parallel"]: - raise ValueError( - f"coupling must be 'serial' or 'parallel', but got {self.coupling}" - ) - coupling_scheme = self.write_participants_and_coupling_scheme( - tag, config, f"{self.coupling}-implicit" - ) - config.coupling_scheme = coupling_scheme - - if str(self.display_standard_values).lower() == "true": - if self.NrTimeStep is None: - self.NrTimeStep = 1e-3 - if self.Dt is None: - self.Dt = 1e-3 - if self.maxIteration is None: - self.maxIteration = 50 - i = etree.SubElement( - coupling_scheme, "max-time", value=str(self.NrTimeStep) - ) - attr = {"value": str(self.Dt)} - i = etree.SubElement(coupling_scheme, "time-window-size", attr) - i = etree.SubElement( - coupling_scheme, "max-iterations", value=str(self.maxIteration) - ) - # i = etree.SubElement(coupling_scheme, "extrapolation-order", value=str(self.extrapolation_order)) - else: - if self.NrTimeStep is not None: - i = etree.SubElement( - coupling_scheme, "max-time", value=str(self.NrTimeStep) - ) - if self.Dt is not None: - attr = {"value": str(self.Dt)} - i = etree.SubElement(coupling_scheme, "time-window-size", attr) - if self.maxIteration is not None: - i = etree.SubElement( - coupling_scheme, "max-iterations", value=str(self.maxIteration) - ) - # if self.extrapolation_order is not None: - # i = etree.SubElement(coupling_scheme, "extrapolation-order", value=str(self.extrapolation_order)) - - # write out the exchange and the convergence rate - self.write_exchange_and_convergance( - config, coupling_scheme, str(self.relativeConverganceEps) - ) - - # finally we write out the post processing... - self.acceleration.write_precice_xml_config(coupling_scheme, config, self) - - pass - - -class PS_ImplicitAcceleration(object): - """Class to model the post-processing part of the implicit coupling""" - - def __init__(self): - """Ctor for the acceleration""" - self.name = "IQN-ILS" - self.precondition_type = "residual-sum" - self.post_process_quantities = {} # The quantities that are in the acceleration - - def write_precice_xml_config(self, tag: etree.Element, config, parent): - """Write out the config XML file of the acceleration in case of implicit coupling - Only for explicit coupling (one directional) this should not write out anything""" - - self.name = ( - config.acceleration["name"] - if config.acceleration is not None - else "IQN-ILS" - ) - self.display_standard_values = ( - config.acceleration["display_standard_values"] - if config.acceleration is not None - else "false" - ) - - post_processing = etree.SubElement(tag, "acceleration:" + self.name) - - # Identify unique solvers and their meshes - solver_meshes = {} - for q_name, q in config.coupling_quantities.items(): - solver = q.source_solver - if solver.name not in solver_meshes: - solver_meshes[solver.name] = set() - solver_meshes[solver.name].add(q.source_mesh_name) - - # Attempt to find the 'simplest' solver (e.g., solid solver) - # This is a heuristic and might need adjustment based on specific use cases - def solver_complexity(solver_name): - complexity_map = {"solid": 1, "structural": 1, "fluid": 2, "thermal": 3} - return complexity_map.get(solver_name.lower(), 10) - - sorted_solvers = sorted(solver_meshes.keys(), key=solver_complexity) - - # Choose the simplest solver's mesh - simple_solver = sorted_solvers[0] if sorted_solvers else None - - from_s = "___" - to_s = "__" - exchange_mesh_name = "" - read_mappings = [m.copy() for m in config.mappings_read] - write_mappings = [m.copy() for m in config.mappings_write] - - acceleration = config.acceleration - if acceleration is not None and self.display_standard_values: - for a, b in acceleration.items(): - if b is not None: - if self.name == "IQN-ILS": - if a == "initial-relaxation": - if b.get("enforce") is not None: - i = etree.SubElement( - post_processing, - a, - value=str(b.get("value")), - enforce=str(b.get("enforce")), - ) - else: - i = etree.SubElement( - post_processing, a, value=str(b.get("value")) - ) - elif a == "max-used-iterations" or a == "time-windows-reused": - i = etree.SubElement(post_processing, a, value=str(b)) - elif a == "filter": - if b.get("type") is not None: - i = etree.SubElement( - post_processing, - a, - limit=str(b.get("limit")), - type=str(b.get("type")), - ) - else: - i = etree.SubElement( - post_processing, a, limit=str(b.get("limit")) - ) - elif a == "preconditioner": - if b.get("type") is not None: - i = etree.SubElement( - post_processing, a, type=str(b.get("type")) - ) - i.set("freeze-after", str(b.get("freeze-after"))) - else: - i = etree.SubElement( - post_processing, - a, - freeze_after=str(b.get("freeze-after")), - ) - if self.name == "aitken": - if a == "initial-relaxation": - if b.get("enforce") is not None: - i = etree.SubElement( - post_processing, - a, - value=str(b.get("value")), - enforce=str(b.get("enforce")), - ) - else: - i = etree.SubElement( - post_processing, a, value=str(b.get("value")) - ) - elif a == "preconditioner": - if b.get("type") is not None: - i = etree.SubElement( - post_processing, a, type=str(b.get("type")) - ) - i.set("freeze-after", str(b.get("freeze-after"))) - else: - i = etree.SubElement( - post_processing, - a, - freeze_after=str(b.get("freeze-after")), - ) - if self.name == "IQN-IMVJ": - if a == "initial-relaxation": - if b.get("enforce") is not None: - i = etree.SubElement( - post_processing, - a, - value=str(b.get("value")), - enforce=str(b.get("enforce")), - ) - else: - i = etree.SubElement( - post_processing, a, value=str(b.get("value")) - ) - elif a == "max-used-iterations" or a == "time-windows-reused": - i = etree.SubElement(post_processing, a, value=str(b)) - elif a == "filter": - if b.get("type") is not None: - i = etree.SubElement( - post_processing, - a, - limit=str(b.get("limit")), - type=str(b.get("type")), - ) - else: - i = etree.SubElement( - post_processing, a, limit=str(b.get("limit")) - ) - elif a == "preconditioner": - if b.get("type") is not None: - i = etree.SubElement( - post_processing, a, type=str(b.get("type")) - ) - i.set("freeze-after", str(b.get("freeze-after"))) - else: - i = etree.SubElement( - post_processing, - a, - freeze_after=str(b.get("freeze-after")), - ) - elif a == "imvj-restart-mode": - i = etree.SubElement( - post_processing, - a, - { - "truncation-threshold": str( - b.get("truncation-threshold") - ), - "chunk-size": str(b.get("chunk-size")), - "reused-time-windows-at-restart": str( - b.get("reused-time-windows-at-restart") - ), - "type": str(b.get("type")), - }, - ) - - if simple_solver: - for q_name, q in config.coupling_quantities.items(): - # Use the first mesh from the simplest solver - mesh_name = list(solver_meshes[simple_solver])[0] - - # i = etree.SubElement(post_processing, "data", - # name=q.instance_name, - # mesh=mesh_name) - - # Copy over logic from _determine_exchange_mesh to determine right mesh - for exchange in config.exchanges: - # print("Exchange data: " + exchange.get('data')) - # print("Quantity name: " + q.instance_name) - if exchange.get("data").lower() == q.instance_name.lower(): - from_s = exchange.get("from") - to_s = exchange.get("to") - - # Process mappings - read_mapping = next( - ( - m - for m in read_mappings - if ( - m["from"] == from_s + "-Mesh" - and m["to"] == to_s + "-Mesh" - ) - ), - None, - ) - write_mapping = next( - ( - m - for m in write_mappings - if ( - m["from"] == from_s + "-Mesh" - and m["to"] == to_s + "-Mesh" - ) - ), - None, - ) - - # Choose mesh based on mapping constraint - if ( - read_mapping - and read_mapping["constraint"] == "conservative" - ): - exchange_mesh_name = read_mapping["to"] - elif ( - read_mapping and read_mapping["constraint"] == "consistent" - ): - exchange_mesh_name = read_mapping["from"] - elif ( - write_mapping - and write_mapping["constraint"] == "conservative" - ): - exchange_mesh_name = write_mapping["to"] - elif ( - write_mapping - and write_mapping["constraint"] == "consistent" - ): - exchange_mesh_name = write_mapping["from"] - else: - exchange_mesh_name = q.source_mesh_name - - # print(exchange_mesh_name) - if exchange_mesh_name != "": - if config.couplingScheme.coupling == "serial": - if ( - exchange_mesh_name - == config.couplingScheme_participants[1] + "-Mesh" - ): - i = etree.SubElement( - post_processing, - "data", - name=q.instance_name, - mesh=exchange_mesh_name, - ) - # parallel coupling - else: - i = etree.SubElement( - post_processing, - "data", - name=q.instance_name, - mesh=exchange_mesh_name, - ) diff --git a/precicecasegenerate/controller_utils/precice_struct/PS_Mesh.py b/precicecasegenerate/controller_utils/precice_struct/PS_Mesh.py deleted file mode 100644 index 26dc0fb..0000000 --- a/precicecasegenerate/controller_utils/precice_struct/PS_Mesh.py +++ /dev/null @@ -1,45 +0,0 @@ -from precicecasegenerate.controller_utils.precice_struct.PS_QuantityCoupled import * - -# from .PS_ParticipantSolver import PS_ParticipantSolver #-> this would result in circular reference - - -class PS_Mesh(object): - """The mesh object that is assigned to one or more solver""" - - def __init__(self): - self.name = "" # name of the mesh - self.quantities = {} # list of the quantities that are stored here - self.list_of_solvers = ( - {} - ) # dictionary with all the solver (names) that use this mesh - self.source_solver = None # The solver that provides this mesh - pass - - def add_source_solver(self, source_solver): - """Sets the source solver that provides this mesh""" - self.source_solver = source_solver - pass - - def add_solver(self, solver): # solver: PS_ParticipantSolver - """adds a solver to the list of solver""" - self.list_of_solvers[solver.solver_name] = solver - pass - - def add_quantity(self, quantity: QuantityCouple): - """adds a quantity for coupling""" - self.quantities[quantity.instance_name] = quantity - pass - - def get_solver(self, solver_name: str): - """returns the solver""" - if solver_name in self.list_of_solvers: - return self.list_of_solvers[solver_name] - else: - return None - - def get_quantity(self, quantity_name: str): - """returns the quantity""" - if quantity_name in self.quantities: - return self.quantities[quantity_name] - else: - return None diff --git a/precicecasegenerate/controller_utils/precice_struct/PS_ParticipantSolver.py b/precicecasegenerate/controller_utils/precice_struct/PS_ParticipantSolver.py deleted file mode 100644 index a414cf8..0000000 --- a/precicecasegenerate/controller_utils/precice_struct/PS_ParticipantSolver.py +++ /dev/null @@ -1,251 +0,0 @@ -from precicecasegenerate.controller_utils.myutils.UT_PCErrorLogging import ( - UT_PCErrorLogging, -) -from precicecasegenerate.controller_utils.ui_struct.UI_Participant import UI_Participant -from precicecasegenerate.controller_utils.ui_struct.UI_Coupling import UI_Coupling -from precicecasegenerate.controller_utils.precice_struct.PS_QuantityCoupled import ( - QuantityCouple, -) -from precicecasegenerate.controller_utils.precice_struct.PS_Mesh import PS_Mesh -from enum import Enum - - -class SolverDomain(Enum): - """enum type to represent the physical domain of the solver""" - - Fluid = 0 - Solid = 1 - Heat = 2 - NotDefined = -1 - - -class SolverDimension(Enum): - """The dimension of the solver, the interface could be one dimension less - but must not be""" - - p1D = 1 - p2D = 2 - p3D = 3 - - -class SolverNature(Enum): - """ - Enum type to show if we have a transient problem or a stationary one - Mostly they will be transient problems - """ - - STATIONARY = 0 - TRANSIENT = 1 - - -class PS_ParticipantSolver(object): - """Class to represent a participant in the preCICE data structure""" - - dim: SolverDimension - dimensionality: int - - # TODO: one solver might have more than one couplings!!! - - def __init__(self, participant: UI_Participant): # conf:PS_PreCICEConfig - """Ctor""" - self.solver_domain = SolverDomain.NotDefined - - # Use set_dimensionality method to set solver dimension - self.set_dimensionality(participant.dimensionality) - - self.nature = SolverNature.STATIONARY - self.quantities_read = {} # list of quantities that are read by this solver - self.quantities_write = {} # list of quantities that are written by this solver - - self.meshes = {} # we have each mesh for each coupling - self.coupling_participants = ( - {} - ) # for each coupling we also store the name of the participant - - self.solver_name = participant.solver_name - self.name = participant.name - - pass - - def set_dimensionality(self, dim: int): - """sets the dimensionality of the solver""" - if dim == 1: - self.dim = SolverDimension.p1D - self.dimensionality = 1 - if dim == 2: - self.dim = SolverDimension.p2D - self.dimensionality = 2 - elif dim == 3: - self.dim = SolverDimension.p3D - self.dimensionality = 3 - else: - raise Exception(f"dimensionality must be 1, 2 or 3") - - def create_mesh_for_coupling(self, conf, other_solver_name: str): - """generates the mesh for the coupling""" - # IMPORTANT: we call the function with the source participant first and then the rest - coupling_mesh = conf.get_mesh_by_participant_names(self.name, other_solver_name) - # IMPORTANT: store the current mesh name such that later we a - # print("!!! Mesh = ", coupling_mesh.name) - self.meshes[coupling_mesh.name] = conf.get_mesh_by_participant_names( - self.name, other_solver_name - ) - self.coupling_participants[other_solver_name] = 1 - pass - - def add_quantities_for_coupling( - self, - conf, - boundary_code1: str, - boundary_code2: str, - other_solver_name: str, - r_list: list, - w_list: list, - ): - # there should be at least one coupling quantity, therefore no early exit - # add mesh - source_mesh_name = conf.get_mesh_name_by_participants( - self.name, other_solver_name - ) - other_mesh_name = conf.get_mesh_name_by_participants( - other_solver_name, self.name - ) - self.create_mesh_for_coupling(conf, other_solver_name) - - # Determine reading and writing quantities based on exchanges - for exchange in conf.exchanges: - if exchange["from"] == self.name: - # This participant is writing data - if exchange["data"] in w_list: - w = conf.get_coupling_quantity( - exchange["data"], source_mesh_name, boundary_code2, self, True - ) - conf.add_quantity_to_mesh(other_mesh_name, w) - conf.add_quantity_to_mesh(source_mesh_name, w) - self.quantities_write[w.instance_name] = w - elif exchange["to"] == self.name: - # This participant is reading data - if exchange["data"] in r_list: - r = conf.get_coupling_quantity( - exchange["data"], other_mesh_name, boundary_code1, self, False - ) - conf.add_quantity_to_mesh(other_mesh_name, r) - conf.add_quantity_to_mesh(source_mesh_name, r) - self.quantities_read[r.instance_name] = r - pass - - def make_participant_fsi_fluid( - self, conf, boundary_code1: str, boundary_code2: str, other_solver_name: str - ): - """This method should set up the participant as a fluid solver for FSI""" - self.add_quantities_for_coupling( - conf, - boundary_code1, - boundary_code2, - other_solver_name, - ["Displacement"], - ["Force"], - ) - # set the type of the solver/participant - self.solver_domain = SolverDomain.Fluid - self.nature = SolverNature.TRANSIENT - pass - - def make_participant_fsi_structure( - self, conf, boundary_code1: str, boundary_code2: str, other_solver_name: str - ): - """This method should set up the participant as a structure solver for FSI""" - self.add_quantities_for_coupling( - conf, - boundary_code1, - boundary_code2, - other_solver_name, - ["Force"], - ["Displacement"], - ) - # set the type of the participant - self.solver_domain = SolverDomain.Solid - self.nature = SolverNature.TRANSIENT - pass - - def make_participant_f2s_fluid( - self, conf, boundary_code1: str, boundary_code2: str, other_solver_name: str - ): - """This method should set up the participant as a fluid solver for F2S""" - self.add_quantities_for_coupling( - conf, boundary_code1, boundary_code2, other_solver_name, [], ["Force"] - ) - # set the type of the solver/participant - self.solver_domain = SolverDomain.Fluid - self.nature = SolverNature.TRANSIENT - pass - - def make_participant_f2s_structure( - self, conf, boundary_code1: str, boundary_code2: str, other_solver_name: str - ): - """This method should set up the participant as a structure solver for F2S""" - self.add_quantities_for_coupling( - conf, boundary_code1, boundary_code2, other_solver_name, ["Force"], [] - ) - # set the type of the participant - self.solver_domain = SolverDomain.Solid - self.nature = SolverNature.TRANSIENT - pass - - def make_participant_cht_fluid( - self, - conf, - boundary_code1: str, - boundary_code2: str, - other_solver_name: str, - data_forward: str, - data_backward: str, - ): - """makes a change heat fluid solver from the participant""" - # print("CHT FLUID") - heat_str = data_forward if "HeatTransfer" in data_forward else data_backward - temperature_str = ( - data_forward if "Temperature" in data_forward else data_backward - ) - - self.add_quantities_for_coupling( - conf, - boundary_code1, - boundary_code2, - other_solver_name, - [heat_str, temperature_str], - [heat_str, temperature_str], - ) - # set the type of the participant - self.solver_domain = SolverDomain.Fluid - self.nature = SolverNature.TRANSIENT - pass - - def make_participant_cht_structure( - self, - conf, - boundary_code1: str, - boundary_code2: str, - other_solver_name: str, - data_forward: str, - data_backward: str, - ): - """makes a change heat structure solver from the participant""" - # print("CHT STRUCTURE") - heat_str = data_forward if "HeatTransfer" in data_forward else data_backward - temperature_str = ( - data_forward if "Temperature" in data_forward else data_backward - ) - - self.add_quantities_for_coupling( - conf, - boundary_code1, - boundary_code2, - other_solver_name, - [heat_str, temperature_str], - [heat_str, temperature_str], - ) - # set the type of the participant - self.solver_domain = SolverDomain.Solid - self.nature = SolverNature.TRANSIENT - pass diff --git a/precicecasegenerate/controller_utils/precice_struct/PS_PreCICEConfig.py b/precicecasegenerate/controller_utils/precice_struct/PS_PreCICEConfig.py deleted file mode 100644 index 13baaea..0000000 --- a/precicecasegenerate/controller_utils/precice_struct/PS_PreCICEConfig.py +++ /dev/null @@ -1,632 +0,0 @@ -from precicecasegenerate.controller_utils.myutils.UT_PCErrorLogging import ( - UT_PCErrorLogging, -) -from precicecasegenerate.controller_utils.ui_struct.UI_UserInput import UI_UserInput -from precicecasegenerate.controller_utils.ui_struct.UI_Coupling import * -from precicecasegenerate.controller_utils.precice_struct.PS_Mesh import * -from precicecasegenerate.controller_utils.precice_struct.PS_ParticipantSolver import ( - PS_ParticipantSolver, -) -from precicecasegenerate.controller_utils.precice_struct.PS_CouplingScheme import * -import xml.etree.ElementTree as etree -import xml.dom.minidom as my_minidom - - -class PS_PreCICEConfig(object): - """Top main class for the preCICE config""" - - def __init__(self): - """Ctor""" - # the overall coupling scheme - # this contains all the coupling information between the solvers - self.couplingScheme = None - # here we enlist all the solvers including their meshes - self.solvers = {} # empty dictionary with the solvers - self.meshes = {} # dictionary with the meshes of the coupling scenario - self.coupling_quantities = {} # dictionary with the coupling quantities - self.exchanges = [] # list to store full exchange details - self.mappings_read = [] - self.mappings_write = [] - self.couplingScheme_participants = None - self.couplingScheme = None - self.exchange_mesh_names = [] - pass - - def get_coupling_quantity( - self, quantity_name: str, source_mesh_name: str, bc: str, solver, read: bool - ): - """returns the coupling quantity specified by name, - the name is a combination of mesh_name + quantity name""" - # there could be more than one pressure or temperature therefore we - # add always as a prefix the name of the mesh such that it will become unique - # IMPORTANT: we need to specify the source mesh of the quantity not other mesh - - concat_quantity_name = quantity_name - # print(" Q=", quantity_name, " T=", concat_quantity_name) - if concat_quantity_name in self.coupling_quantities: - ret = self.coupling_quantities[concat_quantity_name] - ret.list_of_solvers[solver.name] = solver - # print(" 1 source mesh = ", source_mesh_name, " read= ", read) - # if this is the solver how reads it then we store it in a special way - if read == True: - # see which solver is set as source of this quantity - # print(" Set Solver name ", solver.name, " for i=", concat_quantity_name) - ret.source_solver = solver - ret.source_mesh_name = source_mesh_name - return ret - ret = get_quantity_object(quantity_name, bc, concat_quantity_name) - self.coupling_quantities[concat_quantity_name] = ret - ret.list_of_solvers[solver.name] = solver - # print(" 2 source mesh = ", source_mesh_name, " read= " , read) - # if this is the solver how reads it then we store it in a special way - if read == True: - # see which solver is set as source of this quantity - # print(" Set Solver name ", solver.name, " for i=", concat_quantity_name) - ret.source_solver = solver - ret.source_mesh_name = source_mesh_name - return ret - - def get_mesh_by_name(self, mesh_name: str): - """returns the mesh specified by name""" - # VERY IMPORTANT: the naming convention of the mesh !!! - # Therefore, the mesh name should be constructed only by the methods from this class - if mesh_name in self.meshes: - return self.meshes[mesh_name] - # create a new mesh and add it to the dictionary - new_mesh = PS_Mesh() - new_mesh.name = mesh_name - self.meshes[mesh_name] = new_mesh - return self.meshes[mesh_name] - - def get_mesh_name_by_participants(self, source_participant: str, participant2: str): - """constructs the mash name out of the two participant names.""" - # IMPORTANT: "ParticipantSource_Participant2_Mesh" -> naming convention is that the - # first participant is the source (provider) of the mesh - # list = [ participant1, participant2] - # list.sort() - mesh_name = source_participant + "-Mesh" - return mesh_name - - def get_mesh_by_participant_names(self, source_participant: str, participant2: str): - """returns the mesh specified by the two participant names""" - mesh_name = self.get_mesh_name_by_participants(source_participant, participant2) - mesh = self.get_mesh_by_name(mesh_name) - return mesh - - def add_quantity_to_mesh(self, mesh_name: str, quantity: QuantityCouple): - """Adds the quantity to a given mesh""" - if mesh_name in self.meshes: - mesh = self.meshes[mesh_name] - mesh.add_quantity(quantity) - pass - - def get_solver(self, solver_name: str): - """returns the solver if exists""" - if solver_name in self.solvers: - return self.solvers[solver_name] - # TODO: create solver ... ? - return None - - def create_config(self, user_input: UI_UserInput): - """Creates the main preCICE config from the UI structure.""" - - self.exchanges = user_input.exchanges.copy() - self.acceleration = user_input.acceleration - # participants - for participant_name in user_input.participants: - participant_obj = user_input.participants[participant_name] - list = participant_obj.list_of_couplings - self.solvers[participant_name] = PS_ParticipantSolver(participant_obj) - - # should we do something for the couplings? - # the couplings are added to the participants already - max_coupling_value = 100 - for coupling in user_input.couplings: - # for all couplings, configure the solvers properly - participant1_name = coupling.participant1.name - participant2_name = coupling.participant2.name - participant1_solver = self.solvers[participant1_name] - participant2_solver = self.solvers[participant2_name] - max_coupling_value = min(max_coupling_value, coupling.coupling_type.value) - - temp_d = {} - data_forward = "" - data_backward = "" - - for d in self.exchanges: - if d["from"] == participant1_name and d["to"] == participant2_name: - temp_d = d - data_forward = d["data"] - if d["to"] == participant1_name and d["from"] == participant2_name: - temp_d = d - data_backward = d["data"] - - # ========== FSI ========= - if coupling.coupling_type == UI_CouplingType.fsi: - # VERY IMPORTANT: we rely here on the fact that the participants are sorted alphabetically - participant1_solver.make_participant_fsi_fluid( - self, - coupling.boundaryC1, - coupling.boundaryC2, - participant2_solver.name, - ) - participant2_solver.make_participant_fsi_structure( - self, - coupling.boundaryC1, - coupling.boundaryC2, - participant1_solver.name, - ) - pass - # ========== F2S ========= - if coupling.coupling_type == UI_CouplingType.f2s: - # VERY IMPORTANT: we rely here on the fact that the participants are sorted alphabetically - participant1_solver.make_participant_f2s_fluid( - self, - coupling.boundaryC1, - coupling.boundaryC2, - participant2_solver.name, - ) - participant2_solver.make_participant_f2s_structure( - self, - coupling.boundaryC1, - coupling.boundaryC2, - participant1_solver.name, - ) - pass - # ========== CHT ========= - if coupling.coupling_type == UI_CouplingType.cht: - # VERY IMPORTANT: we rely here on the fact that the participants are sorted alphabetically - participant1_solver.make_participant_cht_fluid( - self, - coupling.boundaryC1, - coupling.boundaryC2, - participant2_solver.name, - data_forward, - data_backward, - ) - participant2_solver.make_participant_cht_structure( - self, - coupling.boundaryC1, - coupling.boundaryC2, - participant1_solver.name, - data_forward, - data_backward, - ) - pass - pass - - # Determine coupling scheme based on new coupling type logic or existing max_coupling_value - if ( - hasattr(user_input, "coupling_type") - and user_input.coupling_type is not None - ): - if user_input.coupling_type == "strong": - self.couplingScheme = PS_ImplicitCoupling() - elif user_input.coupling_type == "weak": - self.couplingScheme = PS_ExplicitCoupling() - else: - # Fallback to existing logic if invalid type - self.couplingScheme = ( - PS_ImplicitCoupling() - if max_coupling_value < 2 - else PS_ExplicitCoupling() - ) - else: - # Use existing logic if no coupling type specified - self.couplingScheme = ( - PS_ImplicitCoupling() - if max_coupling_value < 2 - else PS_ExplicitCoupling() - ) - # throw an error if no coupling type is specified and the coupling scheme is not compatible with the coupling type - # raise ValueError("No coupling type specified and coupling scheme is not compatible with the coupling type " + ("explicit" if self.couplingScheme is PS_ExplicitCoupling() else "implicit")) - - # Initialize coupling scheme with user input - self.couplingScheme.initFromUI(user_input, self) - - pass - - def write_precice_xml_config( - self, filename: str, log: UT_PCErrorLogging, sync_mode: str, mode: str - ): - """This is the main entry point to write preCICE config into an XML file""" - - self.sync_mode = sync_mode # Store sync_mode - self.mode = mode # Store mode - - nsmap = { - "data": "data", - "mapping": "mapping", - "coupling-scheme": "coupling-scheme", - "post-processing": "post-processing", - "m2n": "m2n", - "master": "master", - } - - precice_configuration_tag = etree.Element("precice-configuration", nsmap=nsmap) - - # write out: - # first get the dimensionality of the coupling - dimensionality = 0 - for solver_name in self.solvers: - solver = self.solvers[solver_name] - dimensionality = max(dimensionality, solver.dimensionality) - - # 1 quantities - data_from_exchanges = [] - - for exchange in self.exchanges: - data_key = exchange.get("data") - data_type = exchange.get("data-type") - - # Safely get coupling_quantity - coupling_quantity = self.coupling_quantities.get(data_key) - dim = getattr(coupling_quantity, "dim", 1) - - data_from_exchanges.append((data_key, dim, data_type)) - - # Track created data entries to prevent duplicates - created_data = set() - for data, dim, data_type in data_from_exchanges: - mystr = "scalar" - if data_type is not None: - mystr = data_type - if dim > 1: - if data_type == "scalar": - log.rep_info( - f"Data {data} is a vector, but data-type is set to scalar." - ) - mystr = "vector" - - if data not in created_data: - data_tag = etree.SubElement( - precice_configuration_tag, etree.QName("data:" + mystr), name=data - ) - created_data.add(data) - - # 2 meshes - for mesh_name in self.meshes: - mesh = self.meshes[mesh_name] - mesh_tag = etree.SubElement( - precice_configuration_tag, - "mesh", - name=mesh.name, - dimensions=str(dimensionality), - ) - for quantities_name in mesh.quantities: - quant = mesh.quantities[quantities_name] - quant_tag = etree.SubElement( - mesh_tag, "use-data", name=quant.instance_name - ) - - # Initialize dictionaries to store provide and receive meshes - self.solver_provide_meshes = {} - self.solver_receive_meshes = {} - # 3 participants - m2n_pairs_added = set() - self.solver_tags = {} - for solver_name in self.solvers: - solver = self.solvers[solver_name] - solver_tag = etree.SubElement( - precice_configuration_tag, "participant", name=solver.name - ) - self.solver_tags[solver_name] = solver_tag - - # Initialize lists for this solver's provide and receive meshes - self.solver_provide_meshes[solver_name] = [] - self.solver_receive_meshes[solver_name] = [] - - # there are more than one meshes per participant - for solvers_mesh_name in solver.meshes: - # print("Mesh=", solvers_mesh_name) - solver_mesh_tag = etree.SubElement( - solver_tag, "provide-mesh", name=solvers_mesh_name - ) - # Save provided meshes - self.solver_provide_meshes[solver_name].append(solvers_mesh_name) - - list_of_solvers_with_higher_complexity = {} - type_of_the_mapping = {} # for each solver for the mapping - # we also save the type of mapping (conservative / consistent) - list_of_solvers_with_higher_complexity_read = {} - type_of_the_mapping_read = {} - list_of_solvers_with_higher_complexity_write = {} - type_of_the_mapping_write = {} - # write out the quantities that are either read or written - # ------------------------------------------------- - # | Collect all the solvers and mappings from the coupling - # ------------------------------------------------- - used_meshes = {} - for q_name in solver.quantities_read: - q = solver.quantities_read[q_name] - read_tag = etree.SubElement( - solver_tag, - "read-data", - name=q.instance_name, - mesh=solvers_mesh_name, - ) - for other_solvers_name in q.list_of_solvers: - other_solver = q.list_of_solvers[other_solvers_name] - # consistent only read - if other_solvers_name != solver_name and q.is_consistent: - # print(" other solver:", other_solvers_name, " solver", solver_name) - list_of_solvers_with_higher_complexity[ - other_solvers_name - ] = other_solver - type_of_the_mapping[other_solvers_name] = q.mapping_string - list_of_solvers_with_higher_complexity_read[ - other_solvers_name - ] = other_solver - type_of_the_mapping_read[ - other_solvers_name - ] = q.mapping_string - # within one participant put the "use-mesh" only once there - if ( - solvers_mesh_name != q.source_mesh_name - and q.source_mesh_name not in used_meshes - ): - solver_mesh_tag = etree.SubElement( - solver_tag, - "receive-mesh", - name=q.source_mesh_name, - from___=q.source_solver.name, - ) - # Save received meshes - if solver_name not in self.solver_receive_meshes: - self.solver_receive_meshes[solver_name] = [] - if ( - q.source_mesh_name - not in self.solver_receive_meshes[solver_name] - ): - self.solver_receive_meshes[solver_name].append( - q.source_mesh_name - ) - used_meshes[q.source_mesh_name] = 1 - pass - pass - for q_name in solver.quantities_write: - q = solver.quantities_write[q_name] - write_tag = etree.SubElement( - solver_tag, - "write-data", - name=q.instance_name, - mesh=solvers_mesh_name, - ) - for other_solvers_name in q.list_of_solvers: - other_solver = q.list_of_solvers[other_solvers_name] - # conservative only write - if other_solvers_name != solver_name and not q.is_consistent: - # print(" other solver:", other_solvers_name, " solver", solver_name) - list_of_solvers_with_higher_complexity[ - other_solvers_name - ] = other_solver - type_of_the_mapping[other_solvers_name] = q.mapping_string - list_of_solvers_with_higher_complexity_write[ - other_solvers_name - ] = other_solver - type_of_the_mapping_write[ - other_solvers_name - ] = q.mapping_string - pass - - # do the mesh mapping on the more "complex" side of the computations, to avoid data intensive traffic - # for each mesh we look if the belonging solver has higher complexity - - # READS - for other_solver_name in list_of_solvers_with_higher_complexity_read: - other_solver = list_of_solvers_with_higher_complexity_read[ - other_solver_name - ] - mapping_string = type_of_the_mapping_read[other_solver_name] - other_solver_mesh_name = self.get_mesh_name_by_participants( - other_solver_name, solver_name - ) - mapped_tag = etree.SubElement( - solver_tag, - "mapping:nearest-neighbor", - direction="read", - from___=other_solver_mesh_name, - to=solvers_mesh_name, - constraint=mapping_string, - ) - self.mappings_read.append( - { - "other_solver_name": other_solver_name, - "from": other_solver_mesh_name, - "to": solvers_mesh_name, - "constraint": mapping_string, - } - ) - - # WRITES - for other_solver_name in list_of_solvers_with_higher_complexity_write: - other_solver = list_of_solvers_with_higher_complexity_write[ - other_solver_name - ] - mapping_string = type_of_the_mapping_write[other_solver_name] - other_solver_mesh_name = self.get_mesh_name_by_participants( - other_solver_name, solver_name - ) - - # Always add receive mesh for the participant specifying a mapping if it does not already exist - if ( - other_solver_mesh_name - not in self.solver_receive_meshes[solver_name] - ): - solver_mesh_tag = etree.SubElement( - solver_tag, - "receive-mesh", - name=other_solver_mesh_name, - from___=other_solver_name, - ) - self.solver_receive_meshes[solver_name].append( - other_solver_mesh_name - ) - - # Add write mapping - mapped_tag = etree.SubElement( - solver_tag, - "mapping:nearest-neighbor", - direction="write", - from___=solvers_mesh_name, - to=other_solver_mesh_name, - constraint=mapping_string, - ) - self.mappings_write.append( - { - "other_solver_name": other_solver_name, - "from": solvers_mesh_name, - "to": other_solver_mesh_name, - "constraint": mapping_string, - } - ) - # treat M2N communications with other solver - for other_solver_name in list_of_solvers_with_higher_complexity: - if solver_name == other_solver_name: - continue - # we also add the M2N construct that is mandatory for the configuration - # Check if this pair or its reverse has already been added - m2n_pair = tuple(sorted([solver_name, other_solver_name])) - if m2n_pair not in m2n_pairs_added: - m2n_tag = etree.SubElement( - precice_configuration_tag, - "m2n:sockets", - acceptor=solver_name, - connector=other_solver_name, - exchange___directory="..", - ) - m2n_pairs_added.add(m2n_pair) - pass - - # 4 coupling scheme - # TODO: later this might be more complex !!! - self.couplingScheme.write_precice_xml_config(precice_configuration_tag, self) - - # Validate mesh exchanges for convergence measures - self.validate_convergence_measure_mesh_exchange(self, self.exchange_mesh_names) - # =========== generate XML =========================== - - xml_string = etree.tostring( - precice_configuration_tag, # pretty_print=True, xml_declaration=True, - encoding="UTF-8", - ) - # Remove xmlns:* attributes which are not recognized by preCICE - # print( " STR: ", xml_string) - from_index = xml_string.decode("ascii").find("", from_index) - xml_string = ( - xml_string.decode("ascii")[0:from_index] - + "" - + xml_string.decode("ascii")[to_index + 1 :] - ) - # just a workaround of how to avoid problems with the parser - # TODO: later we should find a more elegant solution - replace_only_list = [ - ("from___", "from"), - ("exchange___directory", "exchange-directory"), - ] - for a, b in replace_only_list: - xml_string = xml_string.replace(a, b) - replace_list = [ - ("data:", "data___"), - ("mapping:nearest", "mapping___nearest"), - ("m2n:", "m2n___"), - ("coupling-scheme:", "coupling-scheme___"), - ("acceleration:", "acceleration___"), - ] - for a, b in replace_list: - xml_string = xml_string.replace(a, b) - - # reformat the XML and add indents - replaced_str = my_minidom.parseString(xml_string) - xml_string = replaced_str.toprettyxml(indent=" ") - - for a, b in replace_list: - xml_string = xml_string.replace(b, a) - - output_xml_file = open(filename, "w") - output_xml_file.write(xml_string) - output_xml_file.close() - - log.rep_info("Output XML file: " + filename) - - pass - - def validate_convergence_measure_mesh_exchange(self, config, exchange_mesh_names): - """ - Validate that meshes used in convergence measures are properly exchanged in multi-coupling schemes. - - Args: - config (PS_PreCICEConfig): The configuration to validate - exchange_mesh_names (list): List of mesh names exchanged during configuration - - Raises: - ValueError: If a mesh used in convergence measure is not exchanged to the control participant - """ - # Only validate for multi-coupling schemes with more than 2 solvers - if len(config.solvers) <= 2: - return - - # Find the control participant (the one with the most meshes) - control_participant = max( - config.solvers, key=lambda p: len(config.solvers[p].meshes) - ) - - # Combine provided and received meshes for the control participant - control_participant_meshes = set(config.solvers[control_participant].meshes) - control_participant_meshes.update( - self.solver_receive_meshes.get(control_participant, []) - ) - - exchanged_data_on_control = [] - for exchange in config.exchanges: - if exchange.get("to").lower() == control_participant.lower(): - exchanged_data_on_control.append(exchange.get("data")) - - # Check if each exchanged mesh is present in the control participant's meshes - for mesh in exchange_mesh_names: - # Find which participant provides this mesh - providing_participants = [ - p_name for p_name, p in config.solvers.items() if mesh in p.meshes - ] - - # If no participant provides the mesh, raise an error - if not providing_participants: - raise ValueError( - f"Mesh '{mesh}' used in configuration is not available to any participant" - ) - - # get data via topology - for exchange in config.exchanges: - if providing_participants[0].lower() == exchange.get("from").lower(): - data = exchange.get("data") - if (data not in exchanged_data_on_control) and ( - exchange.get("from").lower() != control_participant.lower() - ): - exchanged_data_on_control.append(data) - e = etree.SubElement( - self.coupling_scheme, - "exchange", - data=data, - mesh=mesh, - from___=providing_participants[0], - to=control_participant, - ) - config.exchanges.append( - { - "data": data, - "mesh": mesh, - "from": providing_participants[0], - "to": control_participant, - } - ) - - if mesh not in control_participant_meshes: - # Add the mesh to the control participant as receive and add an exchange for it - solver_tag = self.solver_tags[control_participant] - solver_mesh_tag = etree.SubElement( - solver_tag, - "receive-mesh", - name=mesh, - from___=providing_participants[0], - ) diff --git a/precicecasegenerate/controller_utils/precice_struct/PS_QuantityCoupled.py b/precicecasegenerate/controller_utils/precice_struct/PS_QuantityCoupled.py deleted file mode 100644 index 3d9cae2..0000000 --- a/precicecasegenerate/controller_utils/precice_struct/PS_QuantityCoupled.py +++ /dev/null @@ -1,125 +0,0 @@ -from precicecasegenerate.controller_utils.myutils.UT_PCErrorLogging import ( - UT_PCErrorLogging, -) -from enum import Enum - - -class QuantityCouple(object): - """the quantity that is coupled""" - - def __init__(self): - self.name = "None" # the name of the quantity as it is called physically - self.instance_name = "None" # this will be the solver name "-" quantity name, example: "InnerSolver-Pressure" - self.unit = "None" # unit of the quantity - self.BC = -1 # boundary code for the coupling - self.relative_tolerance = 1e-4 # the relative convergence for coupling - self.list_of_solvers = ( - {} - ) # list of solvers that use this quantity (either read or write) - self.source_solver = ( - None # the origin of this quantity the solver how creates it - ) - self.source_mesh_name = "None" # the source mesh name - self.mapping_string = "ERROR" # conservative or consistent - self.dim = 3 # the dimension of the quantity - self.is_consistent = ( - True # True if this quantity is consistent False if it is conservative - ) - pass - - -def get_quantity_object(name: str, bc: str, instance_name: str): - """Function to create coupling quantity""" - ret = None - if name.startswith("Force"): - ret = Force() - if name.startswith("Displacement"): - ret = Displacement() - if name.startswith("Velocity"): - ret = Velocity() - if name.startswith("Pressure"): - ret = Pressure() - if name.startswith("Temperature"): - ret = Temperature() - if name.startswith("HeatTransfer"): - ret = HeatTransfer() - if ret is None: - # TODO: report error - return QuantityCouple() - else: - # set the boundary code at the source solver - ret.BC = bc - # the instance name is like "InnerSolver-Pressure" (a combination of solver name and quantity name) - # print(" Instance Name = ",instance_name) - ret.instance_name = instance_name - return ret - - -class Force(QuantityCouple): - """Forces""" - - def __init__(self): - super().__init__() - self.name = "Force" - self.unit = "N" - self.mapping_string = "conservative" - self.is_consistent = False - pass - - -class Displacement(QuantityCouple): - """Displacements""" - - def __init__(self): - super().__init__() - self.name = "Displacement" - self.unit = "m" - self.mapping_string = "consistent" - pass - - -class Velocity(QuantityCouple): - """Velocities""" - - def __init__(self): - super().__init__() - self.name = "Velocity" - self.unit = "m/s" - self.mapping_string = "consistent" - pass - - -class Pressure(QuantityCouple): - """Pressures""" - - def __init__(self): - super().__init__() - self.name = "Pressure" - self.unit = "N/m^2" - self.mapping_string = "consistent" - self.dim = 1 - pass - - -class Temperature(QuantityCouple): - """temperature""" - - def __init__(self): - super().__init__() - self.name = "Temperature" - self.unit = "C" - self.mapping_string = "consistent" - self.dim = 1 - pass - - -class HeatTransfer(QuantityCouple): - """heat transfer""" - - def __init__(self): - super().__init__() - self.name = "HeatTransfer" - self.unit = "?" - self.mapping_string = "consistent" - self.dim = 1 - pass diff --git a/precicecasegenerate/controller_utils/precice_struct/__init__.py b/precicecasegenerate/controller_utils/precice_struct/__init__.py deleted file mode 100644 index 8f28a53..0000000 --- a/precicecasegenerate/controller_utils/precice_struct/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -from .PS_ParticipantSolver import PS_ParticipantSolver -from .PS_ParticipantSolver import SolverDomain -from .PS_ParticipantSolver import SolverDimension -from .PS_ParticipantSolver import SolverNature -from .PS_QuantityCoupled import QuantityCouple -from .PS_PreCICEConfig import PS_PreCICEConfig -from .PS_CouplingScheme import PS_ImplicitCoupling -from .PS_CouplingScheme import PS_ExplicitCoupling diff --git a/precicecasegenerate/controller_utils/ui_struct/UI_Coupling.py b/precicecasegenerate/controller_utils/ui_struct/UI_Coupling.py deleted file mode 100644 index 243d5b8..0000000 --- a/precicecasegenerate/controller_utils/ui_struct/UI_Coupling.py +++ /dev/null @@ -1,89 +0,0 @@ -from precicecasegenerate.controller_utils.myutils.UT_PCErrorLogging import ( - UT_PCErrorLogging, -) -from enum import Enum - - -class UI_CouplingType(Enum): - """enum type to represent the different coupling types""" - - fsi = 0 - cht = 1 - f2s = 2 - - -class UI_Coupling(object): - """ - This class contains information on the user input level - regarding the coupling of two participants - """ - - def __init__(self): - """The constructor.""" - self.boundaryC1 = -1 - self.boundaryC2 = -1 - self.participant1 = None - self.participant2 = None - self.coupling_type = None - pass - - def init_from_yaml( - self, name_coupling: str, etree, participants: dict, mylog: UT_PCErrorLogging - ): - """Method to initialize fields from a parsed YAML file node""" - - # new coupling info - # name of the coupling is the type "fsi" or "chi" - - if name_coupling == "fsi": - # fsi coupling, meaning we have "fluid" and "structure", implicit coupling - self.coupling_type = UI_CouplingType.fsi - pass - elif name_coupling == "f2s": - # fsi coupling, meaning we have "fluid" and "structure", explicit coupling - self.coupling_type = UI_CouplingType.f2s - pass - elif name_coupling == "cht": - # conjugate heat transfer -> there we also have fluid and structure - self.coupling_type = UI_CouplingType.cht - pass - else: - # Throw an error - mylog.rep_error("Unknown coupling type:" + name_coupling) - - # print("parse participants") - # parse all the participants within a coupling - try: - # TODO: we assume that we will have only fluids and structures? - # TODO: we should all all of this to a single list - participants_loop = {"fluid": etree["fluid"]} - participants_loop.update({"structure": etree["structure"]}) - - # VERY IMPORTANT: we sort here the keys alphabetically!!! - # this is an important assumption also in other parts of the code, that the participant1 - # and participant2 are in alphabetical order. example 1) fluid 2) structure at fsi - for participant_name in sorted(participants_loop): - - participant_el = participants_loop[participant_name] - participant_real_name = participant_el["name"] - participant_interface = participant_el["interface"] - - participant = participants[participant_real_name] - participant.solver_domain = participant_name # this might be fuild or structure or something else - # add only to the first participant the coupling - participant.list_of_couplings.append(self) - # now link this to one of the participants - if self.participant1 is None: - self.participant1 = participant - self.boundaryC1 = participant_interface - else: - self.participant2 = participant - self.boundaryC2 = participant_interface - - except: - mylog.rep_error( - "Error in YAML initialization of the Coupling name=" - + name_coupling - + " data:" - ) - pass diff --git a/precicecasegenerate/controller_utils/ui_struct/UI_Participant.py b/precicecasegenerate/controller_utils/ui_struct/UI_Participant.py deleted file mode 100644 index d351f91..0000000 --- a/precicecasegenerate/controller_utils/ui_struct/UI_Participant.py +++ /dev/null @@ -1,46 +0,0 @@ -from precicecasegenerate.controller_utils.myutils.UT_PCErrorLogging import ( - UT_PCErrorLogging, -) -from precicecasegenerate.controller_utils.ui_struct.UI_Coupling import UI_Coupling - - -class UI_Participant(object): - """ - This class represents one participant as it is declared on the user input level - """ - - def __init__( - self, - name: str = "", - solver_name: str = "", - list_of_couplings=None, - solver_domain: str = "", - data_type: str = "scalar", - dimensionality: int = None, - ): - if list_of_couplings is None: - list_of_couplings = [] - - self.name = name - self.solver_name = solver_name - self.list_of_couplings = list_of_couplings # list of empty couplings - self.solver_domain = solver_domain # this shows if this participant is a fluid or structure or else solver - self.data_type = data_type - self.dimensionality = dimensionality - - pass - - @classmethod - def from_yaml(cls, etree, participant_name: str, mylog: UT_PCErrorLogging): - """Method to initialize fields from a parsed YAML file node""" - self = cls() - - try: - self.name = participant_name - self.solver_name = etree["solver"] - self.data_type = etree["data-type"] - except: - mylog.rep_error("Error in YAML initialization of the Participant.") - pass - - return self diff --git a/precicecasegenerate/controller_utils/ui_struct/UI_SimulationInfo.py b/precicecasegenerate/controller_utils/ui_struct/UI_SimulationInfo.py deleted file mode 100644 index f0e8013..0000000 --- a/precicecasegenerate/controller_utils/ui_struct/UI_SimulationInfo.py +++ /dev/null @@ -1,40 +0,0 @@ -from precicecasegenerate.controller_utils.myutils.UT_PCErrorLogging import ( - UT_PCErrorLogging, -) - - -class UI_SimulationInfo(object): - """ - This class contains information on the user input level regarding the - general simulation information - """ - - def __init__(self): - """The constructor.""" - self.steady = False - self.NrTimeStep = -1 - self.Dt = 1e-3 - self.max_iterations = 50 - self.accuracy = "medium" - self.mode = "on" - self.sync_mode = "fundamental" - self.display_standard_values = "false" - self.coupling = "parallel" - pass - - def init_from_yaml(self, etree, mylog: UT_PCErrorLogging): - """Method to initialize fields from a parsed YAML file node""" - # catch exceptions if these items are not in the list - try: - self.steady = etree.get("steady-state") - self.NrTimeStep = etree.get("timesteps") - self.Dt = etree.get("time-window-size") - self.display_standard_values = etree.get("display_standard_values", "false") - self.max_iterations = etree.get("max-iterations") - self.accuracy = etree.get("accuracy") - self.sync_mode = etree.get("synchronize") - self.mode = etree.get("mode") - self.coupling = etree.get("coupling") - except: - mylog.rep_error("Error in YAML initialization of the Simulator info.") - pass diff --git a/precicecasegenerate/controller_utils/ui_struct/UI_UserInput.py b/precicecasegenerate/controller_utils/ui_struct/UI_UserInput.py deleted file mode 100644 index b4acbc5..0000000 --- a/precicecasegenerate/controller_utils/ui_struct/UI_UserInput.py +++ /dev/null @@ -1,272 +0,0 @@ -from precicecasegenerate.controller_utils.ui_struct.UI_SimulationInfo import ( - UI_SimulationInfo, -) -from precicecasegenerate.controller_utils.ui_struct.UI_Participant import UI_Participant -from precicecasegenerate.controller_utils.ui_struct.UI_Coupling import UI_Coupling -from precicecasegenerate.controller_utils.myutils.UT_PCErrorLogging import ( - UT_PCErrorLogging, -) -from precicecasegenerate.controller_utils.ui_struct.UI_Coupling import UI_CouplingType - - -class UI_UserInput(object): - """ - This class represents the main object that contains either one YAML file - or a user input through a GUI - - The main components are: - - the list of participants - - general simulation information - """ - - def __init__(self): - """The constructor, dummy initialization of the fields""" - self.sim_info = UI_SimulationInfo() - self.participants = {} # empty participants stored as a dictionary - self.couplings = [] # empty coupling list - self.exchanges = [] # empty exchanges list - pass - - def init_from_yaml(self, etree, mylog: UT_PCErrorLogging): - # Check if using new topology structure - if ( - "coupling-scheme" in etree - and "participants" in etree - and "exchanges" in etree - ): - # --- Parse simulation info from 'coupling-scheme' --- - simulation_info = etree["coupling-scheme"] - self.sim_info.NrTimeStep = simulation_info.get("max-time") - self.sim_info.Dt = simulation_info.get("time-window-size") - self.sim_info.max_iterations = simulation_info.get("max-iterations") - self.sim_info.display_standard_values = simulation_info.get( - "display_standard_values", "false" - ) - self.sim_info.coupling = simulation_info.get("coupling", "parallel") - - # Initialize coupling type+ acceleration to None - self.coupling_type = None - self.acceleration = None - - # Extract coupling type from exchanges - if "exchanges" in etree: - exchanges = etree["exchanges"] - exchange_types = [ - exchange.get("type") for exchange in exchanges if "type" in exchange - ] - - # Validate exchange types - if exchange_types: - # If all types are the same, set that as the coupling type - if len(set(exchange_types)) == 1: - if exchange_types[0] == "strong" or exchange_types[0] == "weak": - self.coupling_type = exchange_types[0] - else: - mylog.rep_error( - f"Invalid exchange type: {exchange_types[0]}. Must be 'strong' or 'weak'." - ) - self.coupling_type = None - else: - # Mixed types, default to weak - # mylog.rep_error("Mixed exchange types detected. Defaulting to 'weak'.") - self.coupling_type = "weak" - - # --- Parse Acceleration --- - if "acceleration" in etree: - acceleration = etree["acceleration"] - display_standard_values = acceleration.get( - "display_standard_values", "false" - ) - if display_standard_values.lower() not in ["true", "false"]: - mylog.rep_error( - f"Invalid display_standard_values value: {display_standard_values}. Must be 'true' or 'false'." - ) - if display_standard_values.lower() == "true": - self.acceleration = { - "name": acceleration.get("name", "IQN-ILS"), - "initial-relaxation": { - "value": acceleration.get("initial-relaxation", {}).get( - "value", 0.1 - ), - "enforce": acceleration.get("initial-relaxation", {}).get( - "enforce", "false" - ), - }, - "preconditioner": { - "freeze-after": acceleration.get("preconditioner", {}).get( - "freeze-after", -1 - ), - "type": acceleration.get("preconditioner", {}).get( - "type", None - ), - }, - "filter": { - "limit": acceleration.get("filter", {}).get("limit", 1e-16), - "type": acceleration.get("filter", {}).get("type", None), - }, - "max-used-iterations": acceleration.get( - "max-used-iterations", None - ), - "time-windows-reused": acceleration.get( - "time-windows-reused", None - ), - "imvj-restart-mode": { - "truncation-threshold": acceleration.get( - "imvj-restart-mode", {} - ).get("truncation-threshold", None), - "chunk-size": acceleration.get("imvj-restart-mode", {}).get( - "chunk-size", None - ), - "reused-time-windows-at-restart": acceleration.get( - "imvj-restart-mode", {} - ).get("reused-time-windows-at-restart", None), - "type": acceleration.get("imvj-restart-mode", {}).get( - "type", None - ), - } - if any(acceleration.get("imvj-restart-mode", {}).values()) - else None, - "display_standard_values": acceleration.get( - "display_standard_values", "false" - ), - } - # If display_standard_values is false, set default values to none so they are not displayed - else: - self.acceleration = { - "name": acceleration.get("name", "IQN-ILS"), - "initial-relaxation": acceleration.get( - "initial-relaxation", None - ), - "preconditioner": { - "freeze-after": acceleration.get("preconditioner", {}).get( - "freeze-after", None - ), - "type": acceleration.get("preconditioner", {}).get( - "type", None - ), - } - if any(acceleration.get("preconditioner", {}).values()) - else None, - "initial-relaxation": { - "value": acceleration.get("initial-relaxation", {}).get( - "value", None - ), - "enforce": acceleration.get("initial-relaxation", {}).get( - "enforce", None - ), - } - if any(acceleration.get("initial-relaxation", {}).values()) - else None, - "filter": { - "limit": acceleration.get("filter", {}).get("limit", None), - "type": acceleration.get("filter", {}).get("type", None), - } - if any(acceleration.get("filter", {}).values()) - else None, - "max-used-iterations": acceleration.get( - "max-used-iterations", None - ), - "time-windows-reused": acceleration.get( - "time-windows-reused", None - ), - "imvj-restart-mode": { - "truncation-threshold": acceleration.get( - "imvj-restart-mode", {} - ).get("truncation-threshold", None), - "chunk-size": acceleration.get("imvj-restart-mode", {}).get( - "chunk-size", None - ), - "reused-time-windows-at-restart": acceleration.get( - "imvj-restart-mode", {} - ).get("reused-time-windows-at-restart", None), - "type": acceleration.get("imvj-restart-mode", {}).get( - "type", None - ), - } - if any(acceleration.get("imvj-restart-mode", {}).values()) - else None, - "display_standard_values": acceleration.get( - "display_standard_values", "false" - ), - } - - # --- Parse participants --- - self.participants = {} - participants_data = etree["participants"] - for participant in participants_data: - # Handle new list of dictionaries format - if isinstance(participant, dict): - name = participant.get("name") - solver_info = participant - - if name is None: - mylog.rep_error( - f"Participant missing 'name' key: {participant}" - ) - continue - - solver_name = solver_info.get("solver", name) - dimensionality = solver_info.get("dimensionality", 3) - - new_participant = UI_Participant( - name, solver_name, dimensionality=dimensionality - ) - self.participants[new_participant.name] = new_participant - else: - # Unsupported format - mylog.rep_error( - f"Unsupported participant configuration: {participant}" - ) - continue - - # --- Parse couplings from exchanges --- - exchanges_list = etree["exchanges"] - # Save full exchange details - self.exchanges = exchanges_list.copy() - - # Group exchanges by unique participant pairs - groups = {} - for exchange in exchanges_list: - exchanges = ( - exchange.get("data-type").lower() - if exchange.get("data-type") is not None - else "scalar" - ) - pair = tuple(sorted([exchange["from"], exchange["to"]])) - groups.setdefault(pair, []).append(exchange) - - self.couplings = [] - for pair, ex_list in groups.items(): - coupling = UI_Coupling() - p1_name, p2_name = pair - coupling.participant1 = self.participants[p1_name] - coupling.participant2 = self.participants[p2_name] - - # Determine coupling type based on exchanged data - data_names = {ex["data"] for ex in ex_list} - if any(name.startswith("Force") for name in data_names) and any( - name.startswith("Displacement") for name in data_names - ): - coupling.coupling_type = UI_CouplingType.fsi - elif any(name.startswith("Force") for name in data_names): - coupling.coupling_type = UI_CouplingType.f2s - # elif any("temperature" in name.lower() or "heat" in name.lower() for name in data_names): - elif any( - name.startswith("Temperature") or name.startswith("HeatTransfer") - for name in data_names - ): - coupling.coupling_type = UI_CouplingType.cht - else: - # TODO: Handle Velocity, Pressure - raise NameError( - "Found Velocity, Pressure or an invalid coupling type that is unsupported." - ) - - # Use the first exchange's patches as boundary interfaces (simple heuristic) - first_ex = ex_list[0] - coupling.boundaryC1 = first_ex.get("from-patch", "") - coupling.boundaryC2 = first_ex.get("to-patch", "") - - self.couplings.append(coupling) - coupling.participant1.list_of_couplings.append(coupling) - coupling.participant2.list_of_couplings.append(coupling) diff --git a/precicecasegenerate/controller_utils/ui_struct/__init__.py b/precicecasegenerate/controller_utils/ui_struct/__init__.py deleted file mode 100644 index e6335d9..0000000 --- a/precicecasegenerate/controller_utils/ui_struct/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .UI_Coupling import * -from .UI_UserInput import UI_UserInput diff --git a/precicecasegenerate/generation_utils/__init__.py b/precicecasegenerate/generation_utils/__init__.py deleted file mode 100644 index eedca39..0000000 --- a/precicecasegenerate/generation_utils/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -from .structure_handler import StructureHandler -from .logger import Logger -from .adapter_config_generator import AdapterConfigGenerator -from .format_precice_config import PrettyPrinter -from .other_files_generator import OtherFilesGenerator -from .config_generator import ConfigGenerator -from .readme_generator import ReadmeGenerator -from .file_generator import FileGenerator diff --git a/precicecasegenerate/generation_utils/adapter_config_generator.py b/precicecasegenerate/generation_utils/adapter_config_generator.py deleted file mode 100644 index e99fe94..0000000 --- a/precicecasegenerate/generation_utils/adapter_config_generator.py +++ /dev/null @@ -1,194 +0,0 @@ -from pathlib import Path -from . import Logger -from lxml import etree -import json -from ruamel.yaml import YAML -from importlib.resources import files - - -class AdapterConfigGenerator: - def __init__( - self, - adapter_config_path: Path, - precice_config_path: Path, - topology_path: Path, - target_participant: str, - ) -> None: - """ - Initializes the AdapterConfigGenerator with paths to the adapter config, precice config, and topology file. - - Args: - adapter_config_path (Path): Path to the output adapter-config.json file. - precice_config_path (Path): Path to the input precice-config.xml file. - topology_path (Path): Path to the topology YAML file. - target_participant (str): Name of the target participant. - """ - self.adapter_config_path = adapter_config_path - self.adapter_config_schema = json.loads( - files("precicecasegenerate.templates") - .joinpath("adapter-config-template.json") - .read_text("utf-8") - ) - self.logger = Logger() - self.precice_config_path = precice_config_path - self.topology_path = topology_path - self.target_participant = target_participant - - def _get_generated_precice_config(self): - """ - Parses the precice-config.xml file, removes namespaces, and stores the root element. - """ - try: - with open( - self.precice_config_path, "r", encoding="utf-8" - ) as precice_config_file: - precice_config = precice_config_file.read() - except FileNotFoundError: - self.logger.error( - f"PreCICE config file not found at {self.precice_config_path}" - ) - raise - - # Parse with lxml and clean namespaces - parser = etree.XMLParser(ns_clean=True, recover=True) - try: - doc = etree.fromstring(precice_config.encode("utf-8"), parser=parser) - except etree.XMLSyntaxError as e: - self.logger.error(f"Error parsing XML: {e}") - raise - - # Strip namespace prefixes from tags - for elem in doc.iter(): - if isinstance(elem.tag, str) and "}" in elem.tag: - elem.tag = elem.tag.split("}", 1)[1] - - self.root = doc - self.logger.info("Parsed precice-config.xml successfully.") - - def _load_topology(self): - """ - Loads the topology YAML file and extracts patch information for the target participant. - - Returns: - dict: Patch information for the target participant. - """ - try: - with open(self.topology_path, "r", encoding="utf-8") as topology_file: - topology = YAML().load(topology_file) - - # Find the exchange for the target participant - for exchange in topology.get("exchanges", []): - if exchange.get("to") == self.target_participant: - return { - "from_participant": exchange.get("from"), - "from_patch": exchange.get("from-patch"), - "to_patch": exchange.get("to-patch"), - } - - self.logger.warning( - f"No exchange found for participant {self.target_participant}" - ) - return None - - except FileNotFoundError: - self.logger.error(f"Topology file not found at {self.topology_path}") - return None - except yaml.YAMLError as e: - self.logger.error(f"Error parsing topology YAML: {e}") - return None - - def _fill_out_adapter_schema(self): - """ - Fills out the adapter configuration schema based on the precice-config.xml and topology data. - """ - self._get_generated_precice_config() - - # Load topology information - topology_info = self._load_topology() - - participant_elem = None - for participant in self.root.findall(".//participant"): - if participant.get("name") == self.target_participant: - participant_elem = participant - break - - if participant_elem is None: - self.logger.error( - f"Participant '{self.target_participant}' not found in precice-config.xml." - ) - return - - # Attempt to find read-data and write-data elements - read_data_elem = participant_elem.find("read-data") - write_data_elem = participant_elem.find("write-data") - - # Log warnings if certain elements are missing - if read_data_elem is None: - self.logger.warning( - f"Participant '{self.target_participant}' is missing a 'read-data' element." - ) - if write_data_elem is None: - self.logger.warning( - f"Participant '{self.target_participant}' is missing a 'write-data' element." - ) - - # Update the adapter_config_schema dictionary according to the new template - self.adapter_config_schema["participant_name"] = self.target_participant - - # Access the first interface in the interfaces list - interface_dict = self.adapter_config_schema["interfaces"][0] - - # Initialize write_data_names and read_data_names lists - interface_dict["write_data_names"] = [] - interface_dict["read_data_names"] = [] - - # If read_data_elem exists, set mesh_name and read_data_names - if read_data_elem is not None: - interface_dict["mesh_name"] = read_data_elem.get("mesh") - read_data_name = read_data_elem.get("name") - if read_data_name: - interface_dict["read_data_names"].append(read_data_name) - - # If write_data_elem exists, set write_data_names - if write_data_elem is not None: - write_data_name = write_data_elem.get("name") - if write_data_name: - interface_dict["write_data_names"].append(write_data_name) - - # Add patch information from topology if available - if topology_info: - # Use the to-patch value from topology - interface_dict["patches"] = [topology_info.get("to_patch")] - - # Remove previously added keys - interface_dict.pop("from_participant", None) - interface_dict.pop("from_patch", None) - interface_dict.pop( - "patch_name", None - ) # Remove patch_name if it was added previously - - # Remove keys if their lists are empty - if not interface_dict["write_data_names"]: - interface_dict.pop("write_data_names") - if not interface_dict["read_data_names"]: - interface_dict.pop("read_data_names") - - self.logger.info("Adapter configuration schema filled out successfully.") - - def write_to_file(self) -> None: - """ - Writes the filled adapter configuration schema to the specified JSON file. - """ - self._fill_out_adapter_schema() - - try: - with open( - self.adapter_config_path, "w", encoding="utf-8" - ) as adapter_config_file: - json.dump(self.adapter_config_schema, adapter_config_file, indent=4) - self.logger.success( - f"Adapter configuration written to {self.adapter_config_path}" - ) - except IOError as e: - self.logger.error(f"Failed to write adapter configuration to file: {e}") - raise diff --git a/precicecasegenerate/generation_utils/config_generator.py b/precicecasegenerate/generation_utils/config_generator.py deleted file mode 100644 index 760550d..0000000 --- a/precicecasegenerate/generation_utils/config_generator.py +++ /dev/null @@ -1,71 +0,0 @@ -from ruamel.yaml import YAML - - -class ConfigGenerator: - @staticmethod - def is_utf8_encoded(file_path): - """Check if a file is UTF-8 encoded without BOM""" - try: - with open(file_path, "rb") as f: - # Read the first few bytes to check for BOM - bom = f.read(3) - if bom == b"\xef\xbb\xbf": - return False # File has a BOM, so it's not considered pure UTF-8 - - # Try to decode the rest of the file - f.seek(0) # Go back to the start of the file - f.read().decode("utf-8") - return True - except UnicodeDecodeError: - return False - - def generate_precice_config(self, file_generator): - """Generates the precice-config.xml file based on the topology.yaml file.""" - # Check if the topology YAML file is UTF-8 encoded - topology_file_path = file_generator.input_file - logger = file_generator.logger - - if not self.is_utf8_encoded(topology_file_path): - logger.error(f"Input YAML file {topology_file_path} is not UTF-8 encoded.") - return None - - # Try to open the yaml file and get the configuration - try: - with open(topology_file_path, "r") as config_file: - config = YAML().load(config_file) - logger.info(f"Input YAML file: {topology_file_path}") - except FileNotFoundError: - logger.error(f"Input YAML file {topology_file_path} not found.") - return None - except Exception as e: - logger.error(f"Error reading input YAML file: {str(e)}") - return None - - # Build the ui - logger.info("Building the user input info...") - user_ui = file_generator.user_ui - user_ui.init_from_yaml(config, file_generator.mylog) - - # Generate the precice-config.xml file - logger.info("Generating preCICE config...") - precice_config = file_generator.precice_config - precice_config.create_config(user_ui) - - # Set the target of the file and write out to it - structure = file_generator.structure - target = str(structure.precice_config) - - try: - logger.info(f"Writing preCICE config to {target}...") - precice_config.write_precice_xml_config( - target, - file_generator.mylog, - sync_mode=user_ui.sim_info.sync_mode, - mode=user_ui.sim_info.mode, - ) - except Exception as e: - logger.error(f"Failed to write preCICE XML config: {str(e)}") - return None - - logger.success(f"XML generation completed successfully: {target}") - return target diff --git a/precicecasegenerate/generation_utils/file_generator.py b/precicecasegenerate/generation_utils/file_generator.py deleted file mode 100644 index 7716437..0000000 --- a/precicecasegenerate/generation_utils/file_generator.py +++ /dev/null @@ -1,133 +0,0 @@ -from pathlib import Path - -import json -import jsonschema -from ruamel.yaml import YAML - -from precicecasegenerate.controller_utils.myutils.UT_PCErrorLogging import ( - UT_PCErrorLogging, -) -from precicecasegenerate.controller_utils.precice_struct import PS_PreCICEConfig -from precicecasegenerate.controller_utils.ui_struct.UI_UserInput import UI_UserInput -from .config_generator import ConfigGenerator -from .format_precice_config import PrettyPrinter -from .logger import Logger -from .other_files_generator import OtherFilesGenerator -from .readme_generator import ReadmeGenerator -from .structure_handler import StructureHandler - -from importlib.resources import files - - -class FileGenerator: - def __init__(self, input_file: Path, output_path: Path) -> None: - """Class which takes care of generating the content of the necessary files - :param input_file: Input yaml file that is needed for generation of the precice-config.xml file - :param output_path: Path to the folder where the case will be generated""" - self.input_file = input_file - self.precice_config = PS_PreCICEConfig() - self.mylog = UT_PCErrorLogging() - self.user_ui = UI_UserInput() - self.logger = Logger() - self.structure = StructureHandler(output_path) - self.config_generator = ConfigGenerator() - self.readme_generator = ReadmeGenerator() - self.other_files_generator = OtherFilesGenerator() - - if not self.input_file.exists(): - import errno - import os - - raise FileNotFoundError( - errno.ENOENT, os.strerror(errno.ENOENT), str(self.input_file) - ) - - def generate_level_0(self) -> None: - """Fills out the files of level 0 (everything in the root folder).""" - self.other_files_generator.generate_clean(clean_sh=self.structure.clean) - self.config_generator.generate_precice_config(self) - self.readme_generator.generate_readme(self) - - def _extract_participants(self) -> list[str]: - """Extracts the participants from the topology.yaml file.""" - try: - with open(self.input_file, "r") as config_file: - config = YAML().load(config_file) - self.logger.info(f"Input YAML file: {self.input_file}") - except FileNotFoundError: - self.logger.error(f"Input YAML file {self.input_file} not found.") - return None - except Exception as e: - self.logger.error(f"Error reading input YAML file: {str(e)}") - return None - - # Extract participant names from the new list format - return [participant["name"] for participant in config.get("participants", [])] - - def generate_level_1(self) -> None: - """Generates the files of level 1 (everything in the generated sub-folders).""" - - participants = self._extract_participants() - for participant in participants: - target_participant = self.structure.create_level_1_structure( - participant, self.user_ui - ) - adapter_config = target_participant[1] - run_sh = target_participant[2] - self.other_files_generator.generate_adapter_config( - target_participant=participant, - adapter_config=adapter_config, - precice_config=self.structure.precice_config, - topology_path=self.input_file, - ) - self.other_files_generator.generate_run(run_sh) - - def format_precice_config(self) -> None: - """Formats the generated preCICE configuration file.""" - - precice_config_path = self.structure.precice_config - # Create an instance of PrettyPrinter. - printer = PrettyPrinter(indent=" ", max_width=120) - # Specify the path to the XML file you want to prettify. - try: - printer.prettify_file(precice_config_path) - self.logger.success(f"Successfully prettified preCICE configuration XML") - except Exception as prettify_exception: - self.logger.error( - "An error occurred during XML prettification: " - + str(prettify_exception) - ) - - def handle_output(self, args): - """ - Handle output based on verbose mode and log state - """ - if not args.verbose: - if not self.logger.has_errors(): - self.logger.clear_messages() - # No errors, show success message - self.logger.success( - "Everything worked. You can find the generated files at: " - + str(self.structure.generated_root) - ) - # Always show warnings if any exist - if self.logger.has_warnings(): - for warning in self.logger.get_warnings(): - self.logger.warning(warning) - self.logger.print_all() - - @staticmethod - def validate_topology(args): - """Validate the topology.yaml file against the JSON schema.""" - if args.validate_topology: - schema = json.loads( - files("precicecasegenerate.schemas") - .joinpath("topology-schema.json") - .read_text() - ) - with open(args.input_file) as input_file: - data = YAML().load(input_file) - try: - jsonschema.validate(instance=data, schema=schema) - except jsonschema.exceptions.ValidationError as e: - print(f"Validation of {args.input_file} failed: {e}") diff --git a/precicecasegenerate/generation_utils/format_precice_config.py b/precicecasegenerate/generation_utils/format_precice_config.py deleted file mode 100644 index 8e108c6..0000000 --- a/precicecasegenerate/generation_utils/format_precice_config.py +++ /dev/null @@ -1,467 +0,0 @@ -#!/usr/bin/env python3 -import io -import shutil -import sys - -from lxml import etree - - -def is_empty_tag(element): - """ - Check if an XML element is empty (has no children). - """ - return not element.getchildren() - - -def is_comment(element): - """ - Check if the given element is an XML comment. - """ - return isinstance(element, etree._Comment) - - -def attrib_length(element): - """ - Calculate the total length of the attributes in an element. - For each attribute, count the key, quotes, equals sign, and value. - """ - total = 0 - for k, v in element.items(): - # Format: key="value" - total += len(k) + 2 + len(v) + 1 - # Add spaces between attributes (if more than one attribute exists) - total += len(element.attrib) - 1 - return total - - -def element_len(element): - """ - Estimate the length of an element's start tag (including its attributes). - This is used to decide whether to print attributes inline or vertically. - """ - total = 2 # For the angle brackets "<" and ">" - total += len(element.tag) - if element.attrib: - total += 1 + attrib_length(element) - if is_empty_tag(element): - total += 2 # For the space and slash in an empty tag "" - return total - - -class PrettyPrinter: - """ - Class to handle the prettification of XML content. - This class not only provides methods for printing XML elements - in a prettified format, but also methods to parse and reformat - an XML file directly. - """ - - def __init__( - self, stream=sys.stdout, indent=" ", max_width=100, max_group_level=1 - ): - self.stream = stream # Output stream (can be a file, StringIO, etc.) - self.indent = indent # String used for indentation (2 spaces) - self.max_width = max_width # Maximum width for a single line - self.max_group_level = ( - max_group_level # Maximum depth to group elements on one line - ) - self.global_newline_between_groups = ( - True # Add newline between top-level groups - ) - - # Specific ordering for top-level elements - self.top_level_order = [ - "data:vector", - "mesh", - "participant", - "m2n:sockets", - "coupling-scheme:", - ] - - def print(self, text="", end="\n"): - """ - Write text to the output stream with optional end character. - """ - self.stream.write(text + end) - - def fmt_attr_h(self, element): - """ - Format element attributes for inline (horizontal) display. - """ - return " ".join(['{}="{}"'.format(k, v) for k, v in element.items()]) - - def fmt_attr_v(self, element, level): - """ - Format element attributes for vertical display, with indentation. - """ - prefix = self.indent * (level + 1) - return "\n".join(['{}{}="{}"'.format(prefix, k, v) for k, v in element.items()]) - - def print_xml_declaration(self, root): - """ - Print the XML declaration at the beginning of the file. - """ - self.print( - ''.format( - root.docinfo.xml_version, root.docinfo.encoding - ) - ) - - def print_root(self, root): - """ - Print the entire XML document starting from the root element. - """ - self.print_xml_declaration(root) - self.print() # Add an extra newline after XML declaration - self.print_element(root.getroot(), level=0) - - def print_tag_start(self, element, level): - """ - Print the start tag of an element with precise formatting. - """ - assert isinstance(element, etree._Element) - # Always use self-closing tags for empty elements - if not element.getchildren() and element.attrib: - self.print( - "{}<{} {}/>".format( - self.indent * level, element.tag, self.fmt_attr_h(element) - ) - ) - elif not element.getchildren(): - self.print("{}<{} />".format(self.indent * level, element.tag)) - else: - # For non-empty elements, use traditional open/close tags - if element.attrib: - self.print( - "{}<{} {}>".format( - self.indent * level, element.tag, self.fmt_attr_h(element) - ) - ) - else: - self.print("{}<{}>".format(self.indent * level, element.tag)) - - def print_tag_end(self, element, level): - """ - Print the end tag of an element. - """ - assert isinstance(element, etree._Element) - # Only print end tag for non-empty elements - if element.getchildren(): - self.print("{}".format(self.indent * level, element.tag)) - - def print_tag_empty(self, element, level): - """ - Print an empty element with precise self-closing tag formatting. - """ - assert isinstance(element, etree._Element) - if element.attrib: - self.print( - "{}<{} {}/>".format( - self.indent * level, element.tag, self.fmt_attr_h(element) - ) - ) - else: - self.print("{}<{} />".format(self.indent * level, element.tag)) - - def print_comment(self, element, level): - """ - Print an XML comment. - """ - assert isinstance(element, etree._Comment) - self.print(self.indent * level + str(element)) - - def print_element(self, element, level): - """ - Recursively print an XML element and its children in prettified format. - """ - # If the element is a comment, print it and return. - if isinstance(element, etree._Comment): - self.print_comment(element, level=level) - return - - if is_empty_tag(element): - self.print_tag_empty(element, level=level) - else: - self.print_tag_start(element, level=level) - self.print_children(element, level=level + 1) - self.print_tag_end(element, level=level) - - def print_children(self, element, level): - if level > self.max_group_level: - for child in element.getchildren(): - self.print_element(child, level=level) - return - - # Custom sorting for top-level elements - def custom_sort_key(elem): - tag = str(elem.tag) - # Predefined order for top-level elements with prefix matching - order = { - "data:": 1, # Matches data:vector, data:scalar, etc. - "mesh": 2, - "participant": 3, - "m2n:": 4, - "coupling-scheme:": 5, - } - # Find the first matching key - for prefix, rank in order.items(): - if tag.startswith(prefix): - return rank - return 6 # Unknown elements appear last - - # Sort children based on the predefined order - sorted_children = sorted(element.getchildren(), key=custom_sort_key) - - last = len(sorted_children) - for i, group in enumerate(sorted_children, start=1): - # Special handling for participants to reorder child elements - if "participant" in str(group.tag): - # Define order for participant child elements with more generalized matching - participant_order = { - "provide-mesh": 1, - "receive-mesh": 2, - "write-data": 3, - "read-data": 4, - "mapping:": 5, # Matches mapping:nearest-neighbor, mapping:rbf, etc. - } - - # Sort participant's children based on the defined order - sorted_participant_children = sorted( - group.getchildren(), - key=lambda child: next( - ( - rank - for prefix, rank in participant_order.items() - if str(child.tag).startswith(prefix) - ), - 6, # Unknown elements appear last - ), - ) - - # Separate different types of elements - mesh_elements = [] - data_elements = [] - mapping_elements = [] - - for child in sorted_participant_children: - if str(child.tag) in ["provide-mesh", "receive-mesh"]: - mesh_elements.append(child) - elif str(child.tag) in ["write-data", "read-data"]: - data_elements.append(child) - elif str(child.tag).startswith("mapping:"): - mapping_elements.append(child) - - # Construct participant tag with attributes - participant_tag = "<{}".format(group.tag) - for attr, value in group.items(): - participant_tag += ' {}="{}"'.format(attr, value) - participant_tag += ">" - - # Print participant opening tag - self.print(self.indent * level + participant_tag) - - # Print mesh elements - for child in mesh_elements: - self.print_element(child, level + 1) - - # Add newline between mesh and data - if mesh_elements and data_elements: - self.print() - - # Print data elements - for child in data_elements: - self.print_element(child, level + 1) - - # Add newline before mapping - if data_elements and mapping_elements: - self.print() - - # Print mapping elements with multi-line formatting - for mapping_elem in mapping_elements: - # Check if the mapping element has multiple attributes - if len(mapping_elem.items()) > 2: - self.print( - "{}<{}".format(self.indent * (level + 1), mapping_elem.tag) - ) - for k, v in mapping_elem.items(): - self.print( - '{}{}="{}"'.format(self.indent * (level + 2), k, v) - ) - self.print("{} />".format(self.indent * (level + 1))) - else: - # Single-line formatting for simple mappings - self.print_element(mapping_elem, level + 1) - - # Close participant tag - self.print("{}".format(self.indent * level)) - - # Add newline after participant if not the last element - if i < last: - self.print() - - continue - - # Special handling for coupling-scheme elements - elif "coupling-scheme" in str(group.tag): - # Sort children of coupling-scheme - sorted_scheme_children = sorted( - group.getchildren(), - key=lambda child: 0 - if str(child.tag) == "relative-convergence-measure" - else 1 - if str(child.tag) == "exchange" - else 2, - ) - - # Separate different types of elements - other_elements = [] - exchange_elements = [] - convergence_elements = [] - acceleration_elements = [] - - for child in sorted_scheme_children: - tag = str(child.tag) - if tag == "exchange": - exchange_elements.append(child) - elif tag == "relative-convergence-measure": - convergence_elements.append(child) - elif tag.startswith("acceleration"): - acceleration_elements.append(child) - else: - other_elements.append(child) - - # Print coupling-scheme opening tag - self.print(self.indent * level + "<{}>".format(group.tag)) - - # Print initial elements - initial_elements = [ - elem - for elem in other_elements - if str(elem.tag) - in ["participants", "participant", "max-time", "time-window-size"] - ] - for child in initial_elements: - self.print_element(child, level + 1) - - # Print convergence measures first - if convergence_elements: - if initial_elements: - self.print() - for conv in convergence_elements: - self.print_element(conv, level + 1) - - # Print exchanges - if exchange_elements: - if initial_elements or convergence_elements: - self.print() - for exchange in exchange_elements: - self.print_element(exchange, level + 1) - - # Print max-iterations if present - max_iterations = [ - elem for elem in other_elements if str(elem.tag) == "max-iterations" - ] - if max_iterations: - if exchange_elements or convergence_elements or initial_elements: - self.print() - for child in max_iterations: - self.print_element(child, level + 1) - - # Print acceleration elements - if acceleration_elements: - if ( - exchange_elements - or convergence_elements - or max_iterations - or initial_elements - ): - self.print() - for child in acceleration_elements: - self.print_element(child, level + 1) - - # Close coupling-scheme tag - self.print("{}".format(self.indent * level, group.tag)) - - # Add newline after coupling-scheme if not the last element - if i < last: - self.print() - - continue - - # Print the element normally - self.print_element(group, level=level) - - # Add an extra newline between top-level groups - if i < last: - self.print() - - @staticmethod - def parse_xml(content): - """ - Parse XML content into a lxml ElementTree, with recovery and whitespace cleanup. - - Parameters: - content (bytes): The XML content in bytes. - - Returns: - An lxml ElementTree object. - """ - parser = etree.XMLParser( - recover=True, remove_comments=False, remove_blank_text=True - ) - return etree.fromstring(content, parser).getroottree() - - def prettify_file(self, file_path): - """ - Prettify the XML file at the given path and overwrite the file with the prettified content. - - Parameters: - file_path (str): Path to the XML file. - - Returns: - bool: True if the file was processed (even if no changes were made), False if an error occurred. - """ - try: - # Open and read the file as bytes. - with open(file_path, "rb") as xml_file: - content = xml_file.read() - except Exception as e: - print(f'Unable to open file: "{file_path}"') - print(e) - return False - - try: - # Parse the XML content using the static method. - xml_tree = PrettyPrinter.parse_xml(content) - except Exception as e: - print(f'Error occurred while parsing file: "{file_path}"') - print(e) - return False - - # Create an in-memory text stream to hold the prettified XML. - buffer = io.StringIO() - # Use a temporary PrettyPrinter instance with the buffer as output. - temp_printer = PrettyPrinter( - stream=buffer, - indent=self.indent, - max_width=self.max_width, - max_group_level=self.max_group_level, - ) - temp_printer.print_root(xml_tree) - - # Get the prettified content from the buffer. - new_content = buffer.getvalue() - # Compare with the original content (decoded from bytes). - if new_content != content.decode("utf-8"): - try: - # Overwrite the original file with the prettified content. - with open(file_path, "w") as xml_file: - buffer.seek(0) - shutil.copyfileobj(buffer, xml_file) - except Exception as e: - print(f'Failed to write prettified content to file: "{file_path}"') - print(e) - return False - else: - print(f'No changes required for file: "{file_path}"') - return True diff --git a/precicecasegenerate/generation_utils/logger.py b/precicecasegenerate/generation_utils/logger.py deleted file mode 100644 index 6079dd2..0000000 --- a/precicecasegenerate/generation_utils/logger.py +++ /dev/null @@ -1,71 +0,0 @@ -from pathlib import Path -from termcolor import colored -from datetime import datetime - - -class Logger: - def __init__(self) -> None: - """Custom logger""" - self.root_generated = Path(__file__).parent - self._errors = [] - self._warnings = [] - self._messages = [] - - def _log(self, msg: str, level: str, color: str, symbol: str) -> None: - """ - Internal method to log a message with a specified level, color, and symbol. - :param msg: The log message. - :param level: The log level (e.g., INFO, SUCCESS, ERROR). - :param color: The color for terminal output. - :param symbol: Symbol to display alongside the log. - """ - timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") - formatted_msg = f"{timestamp} {symbol} [{level}] {msg}" - self._messages.append((formatted_msg, color)) - - def print_all(self) -> None: - """Prints all logged messages and clears the log state.""" - for message, color in self._messages: - print(colored(message, color)) - self._messages.clear() - - def clear_messages(self) -> None: - """Clears all logged messages.""" - self._messages.clear() - - def success(self, msg: str) -> None: - """Logs a success message.""" - self._log(msg, "SUCCESS", "green", "✅") - - def info(self, msg: str) -> None: - """Logs an informational message.""" - self._log(msg, "INFO", "blue", "ℹ️") - - def warning(self, msg: str) -> None: - """Logs a warning message.""" - if not msg in self._warnings: - self._warnings.append(msg) - self._log(msg, "WARNING", "yellow", "⚠️") - - def error(self, msg: str) -> None: - """Logs an error message.""" - if not msg in self._errors: - self._errors.append(msg) - self._log(msg, "ERROR", "red", "❌") - - def has_errors(self) -> bool: - """Check if any errors have been logged.""" - return len(self._errors) > 0 - - def has_warnings(self) -> bool: - """Check if any warnings have been logged.""" - return len(self._warnings) > 0 - - def get_warnings(self) -> list: - """Retrieve logged warnings.""" - return self._warnings - - def clear_log_state(self) -> None: - """Clear all logged errors and warnings.""" - self._errors.clear() - self._warnings.clear() diff --git a/precicecasegenerate/generation_utils/other_files_generator.py b/precicecasegenerate/generation_utils/other_files_generator.py deleted file mode 100644 index 46b266d..0000000 --- a/precicecasegenerate/generation_utils/other_files_generator.py +++ /dev/null @@ -1,80 +0,0 @@ -from pathlib import Path -from . import Logger -from . import AdapterConfigGenerator -from importlib.resources import files - - -class OtherFilesGenerator: - def __init__(self) -> None: - """ - Initialize OtherFilesGenerator with optional logger. - - :param logger: Optional Logger instance. If not provided, a new Logger will be created. - """ - self.logger = Logger() - - def _generate_static_files(self, target: Path, name: str) -> None: - """Generate static files from templates - :param target: target file path - :param name: name of the function""" - try: - template = files("precicecasegenerate.templates").joinpath( - f"template_{name}" - ) - self.logger.info(f"Reading in the template file for {name}") - - # Check if the template file exists - if not template.exists(): - raise FileNotFoundError(f"Template file not found: {template}") - - # Read the template content - template_content = template.read_text(encoding="utf-8") - - self.logger.info(f"Writing the template to the target: {str(target)}") - - # Write content to the target file - with open(target, "w", encoding="utf-8") as template: - template.write(template_content) - - self.logger.success( - f"Successfully written {name} content to: {str(target)}" - ) - - except FileNotFoundError as fileNotFoundException: - self.logger.error(f"File not found: {fileNotFoundException}") - except PermissionError as permissionErrorException: - self.logger.error(f"Permission error: {permissionErrorException}") - except Exception as generalException: - self.logger.error(f"An unexpected error occurred: {generalException}") - - def generate_run(self, run_sh: Path) -> None: - """Generates the run.sh file - :param run_sh: Path to the run.sh file""" - self._generate_static_files(target=run_sh, name="run.sh") - - def generate_clean(self, clean_sh: Path) -> None: - """Generates the clean.sh file. - :param clean_sh: Path to the clean.sh file""" - self._generate_static_files(target=clean_sh, name="clean.sh") - - def generate_adapter_config( - self, - adapter_config: Path, - precice_config: Path, - topology_path: Path, - target_participant: str, - ) -> None: - """Generates the adapter-config.json file. - - :param adapter_config: Path to the output adapter-config.json file - :param precice_config: Path to the precice-config.xml file - :param topology_path: Path to the topology YAML file - :param target_participant: Name of the target participant - """ - adapter_config_generator = AdapterConfigGenerator( - adapter_config_path=adapter_config, - precice_config_path=precice_config, - topology_path=topology_path, - target_participant=target_participant, - ) - adapter_config_generator.write_to_file() diff --git a/precicecasegenerate/generation_utils/readme_generator.py b/precicecasegenerate/generation_utils/readme_generator.py deleted file mode 100644 index 9d98094..0000000 --- a/precicecasegenerate/generation_utils/readme_generator.py +++ /dev/null @@ -1,124 +0,0 @@ -from pathlib import Path - -from importlib.resources import files - - -class ReadmeGenerator: - SOLVER_DOCS = { - # CFD Solvers - "openfoam": "https://www.openfoam.com/documentation", - "su2": "https://su2code.github.io/docs/home/", - "foam-extend": "https://sourceforge.net/p/foam-extend/", - # Structural Solvers - "calculix": "https://www.calculix.de/", - "elmer": "https://www.elmersolver.com/documentation/", - "code_aster": "https://www.code-aster.org/V2/doc/default/en/index.php", - # Other Solvers - "fenics": "https://fenicsproject.org/docs/", - "dealii": "https://dealii.org/current/doxygen/deal.II/index.html", - # Fallback - "default": "https://precice.org/adapter-list.html", - } - - def generate_readme(self, file_generator): - """Generates the README.md file with dynamic content based on simulation configuration""" - logger = file_generator.logger - user_ui = file_generator.user_ui - - # Read the template README with explicit UTF-8 encoding - readme_content = ( - files("precicecasegenerate.templates") - .joinpath("template_README.md") - .read_text("utf-8") - ) - - # Extract participants and their solvers - participants_list = [] - solvers_list = [] - solver_links = {} - original_solver_names = {} - - # Ensure participants exist before processing - if not hasattr(user_ui, "participants") or not user_ui.participants: - logger.warning("No participants found. Using default placeholders.") - participants_list = ["DefaultParticipant"] - solvers_list = ["DefaultSolver"] - original_solver_names = {"defaultparticipant": "DefaultSolver"} - else: - for participant_name, participant_info in user_ui.participants.items(): - # Preserve original solver name - original_solver_name = getattr( - participant_info, "solverName", "UnknownSolver" - ) - solver_name = original_solver_name.lower() - - participants_list.append(participant_name) - solvers_list.append(original_solver_name) - original_solver_names[participant_name.lower()] = original_solver_name - - # Get solver documentation link, use default if not found - solver_links[solver_name] = self.SOLVER_DOCS.get( - solver_name, self.SOLVER_DOCS["default"] - ) - - # Determine coupling strategy - coupling_strategy = ( - "Partitioned" if len(participants_list) > 1 else "Single Solver" - ) - - # Replace placeholders - readme_content = readme_content.replace( - "{PARTICIPANTS_LIST}", "\n ".join(f"- {p}" for p in participants_list) - ) - readme_content = readme_content.replace( - "{SOLVERS_LIST}", "\n ".join(f"- {s}" for s in solvers_list) - ) - readme_content = readme_content.replace( - "{COUPLING_STRATEGY}", coupling_strategy - ) - - # Explicitly replace solver-specific placeholders - readme_content = readme_content.replace( - "{SOLVER1_NAME}", solvers_list[0] if solvers_list else "Solver1" - ) - readme_content = readme_content.replace( - "{SOLVER2_NAME}", solvers_list[1] if len(solvers_list) > 1 else "Solver2" - ) - - # Generate adapter configuration paths for all participants - adapter_config_paths = [] - - for participant in participants_list: - # Find the corresponding solver name for this participant - solver_name = original_solver_names.get(participant.lower(), "solver") - adapter_config_paths.append( - f"- **{participant}**: `{participant}-{solver_name}/adapter-config.json`" - ) - - # Replace adapter configuration section - readme_content = readme_content.replace( - "- **Adapter Configuration**: `{PARTICIPANT_NAME}/adapter-config.json`", - "**Adapter Configurations**:\n" + "\n".join(adapter_config_paths), - ) - - # Explicitly replace solver links - readme_content = readme_content.replace( - "[Link1]", - f"[{solvers_list[0] if solvers_list else 'Solver1'}]({solver_links.get(solvers_list[0].lower(), '#') if solvers_list else '#'})", - ) - readme_content = readme_content.replace( - "[Link2]", - f"[{solvers_list[1] if len(solvers_list) > 1 else 'Solver2'}]({solver_links.get(solvers_list[1].lower(), '#') if len(solvers_list) > 1 else '#'})", - ) - - # Write the README - structure = file_generator.structure - - try: - with open(structure.README, "w", encoding="utf-8") as readme_file: - readme_file.write(readme_content) - logger.success(f"README.md generated successfully at {structure.README}") - return structure.README - except Exception as e: - logger.error(f"Failed to write README.md: {str(e)}") - return None diff --git a/precicecasegenerate/generation_utils/structure_handler.py b/precicecasegenerate/generation_utils/structure_handler.py deleted file mode 100644 index b2c8923..0000000 --- a/precicecasegenerate/generation_utils/structure_handler.py +++ /dev/null @@ -1,110 +0,0 @@ -from pathlib import Path -from precicecasegenerate.generation_utils.logger import Logger -import shutil - - -class StructureHandler: - def __init__(self, output_path: Path, clean_generated: bool = True) -> None: - """Creates the files and folders in a structure. - :param clean_generated: If set to True, clean the _generated dir before the files are created. - Can be useful if you added or adjusted files yourself, and you are not sure what you changed.""" - # Objects - self.run = None - self.generated_root = output_path - self.logger = Logger() - - # Create level 0 structure (everything in the root folder) - if clean_generated: - self._cleaner() - self._create_folder_structure() - self._create_level_0_structure() - - def _create_folder_structure(self) -> None: - """Creates the structure needed for generated files""" - try: - self.generated_root.mkdir(parents=True, exist_ok=True) - self.logger.success(f"Created folder: {self.generated_root}") - except Exception as create_folder_structure_exception: - self.logger.error( - f"Failed to create folder structure. Error: {create_folder_structure_exception}" - ) - - def _create_level_0_structure(self) -> None: - """Creates the necessary files of level 0 (everything in the root folder).""" - - # Files that need to be created - files = [ - self.generated_root / "clean.sh", - self.generated_root / "README.md", - self.generated_root / "precice-config.xml", - ] - - self.clean, self.README, self.precice_config = files - - for file in files: - try: - file.touch(exist_ok=True) - self.logger.success(f"Created file: {file}") - except Exception as create_files_exception: - self.logger.error( - f"Failed to create file {file}. Error: {create_files_exception}" - ) - - def create_level_1_structure(self, participant: str, user_ui=None) -> list[Path]: - """Creates the necessary files of level 1 (everything in the generated sub-folders). - :param participant: The participant for which the files should be created. - :param user_ui: Optional UI_UserInput instance to retrieve participant information - :return: participant_folder, adapter_config, run""" - try: - # Validate that user_ui is provided - if user_ui is None: - raise ValueError("user_ui must be provided to create level 1 structure") - - # Get the solver name from the participants - solver_name = user_ui.participants[participant].solver_name.lower() - # folder name starts with lowercase - participant = participant.lower() - - # Create the participant folder with name-solver format - participant_folder = self.generated_root / f"{participant}-{solver_name}" - participant_folder.mkdir(parents=True, exist_ok=True) - self.logger.success(f"Created folder: {participant_folder}") - - # Create the adapter-config.json file - adapter_config = participant_folder / "adapter-config.json" - adapter_config.touch(exist_ok=True) - self.logger.success(f"Created file: {adapter_config}") - - # Create the run.sh file - self.run = participant_folder / "run.sh" - self.run.touch(exist_ok=True) - self.logger.success(f"Created file: {self.run}") - - return [participant_folder, adapter_config, self.run] - except Exception as create_participant_folder_exception: - # Define participant_folder before logging error - participant_folder = self.generated_root / participant - self.logger.error( - f"Failed to create folder/file for participant: {participant_folder}. Error: {create_participant_folder_exception}" - ) - - def _cleaner(self) -> None: - """ - Removes the entire `self.generated_root` directory and its contents. - If `self.generated_root` exists, it deletes everything inside it. - """ - if self.generated_root.exists(): - try: - # Remove the directory and all its contents - shutil.rmtree(self.generated_root) - self.logger.success( - f"Successfully removed directory and all contents: {self.generated_root}" - ) - except Exception as cleaner_exception: - self.logger.error( - f"Failed to remove directory: {self.generated_root}. Error: {cleaner_exception}" - ) - else: - self.logger.info( - f"Directory {self.generated_root} does not exist. Nothing to clean." - ) diff --git a/precicecasegenerate/schemas/README.md b/precicecasegenerate/schemas/README.md deleted file mode 100644 index 1bc617a..0000000 --- a/precicecasegenerate/schemas/README.md +++ /dev/null @@ -1,127 +0,0 @@ -# Multi-Physics Simulation Topology Schema - -## Overview - -This JSON schema provides a comprehensive configuration mechanism for defining multi-physics simulation topologies, specifically designed for complex coupling scenarios in scientific computing and engineering simulations. - -## Schema Structure - -The topology schema consists of four main sections: - -### 1. Coupling Scheme Configuration -- Flexible time window and iteration controls -- Support for parallel and serial coupling modes -- Optional display of standard values -- Configurable maximum time and iterations - -#### Key Parameters -- `max-time`: Maximum simulation time (integer or scientific notation) -- `time-window-size`: Size of time windows (number or scientific notation) -- `max-iterations`: Maximum coupling iterations -- `coupling`: Coupling mode (parallel/serial) - -### 2. Acceleration Mechanisms -Advanced coupling acceleration with multiple configuration options: - -#### Acceleration Methods -- Supported methods: `constant`, `aitken`, `IQN-ILS`, `IQN-IMVJ` -- Initial relaxation factor -- Preconditioner configuration -- Filtering options (QR1/QR2) - -#### Advanced Features -- Iteration and time window reuse -- IMVJ restart mode configuration -- Singular value truncation -- Preconditioner freezing - -### 3. Participants Configuration -Define simulation participants with detailed specifications: - -- Mandatory fields: `name`, `solver` -- Optional fields: - - `dimensionality` (default: 3) -- Minimum of 2 participant required - -### 4. Exchanges Configuration -Each exchange defines a one-way data transfer between participants: - -#### Required Fields -- `from`: Name of the source participant sending data (must match a name in the participants section) -- `to`: Name of the target participant receiving data (must match a name in the participants section) -- `data`: Type of data being exchanged (e.g., Force, Displacement, Velocity) -- `type`: Coupling type defining the exchange interaction - - `strong`: Tight coupling with immediate data synchronization - - `weak`: Loose coupling with less frequent data exchange -- `from-patch`: Source Interface Surface - - The physical boundary or interface region on the source participant's mesh where data is extracted. - - Must correspond to a defined boundary condition in the source solver. - - For fluids: Typically the fluid-structure interface (e.g., "interface") - - For solids: Typically the surface contacting the fluid (e.g., "surface") -- `to-patch`: Target Interface Surface - - The physical boundary or interface region on the target participant's mesh where data will be applied. - - Must correspond to a defined boundary condition in the target solver. -> [!NOTE] -> `from-patch` and `to-patch` are only relevant for generating `adapter-config.json` files. - - -#### Optional Fields -- `data-type`: Specifies the data representation - - `scalar`: Single numeric value (default) - - `vector`: Multi-dimensional numeric data - -#### Data Type Constraints -- Supported data types: Force, Displacement, Velocity, Pressure, Temperature, HeatTransfer -- Naming follows the pattern: `[BaseType][OptionalModifier]` - -#### Example -```yaml -coupling-scheme: - display_standard_values: true -participants: - - name: Fluid - solver: SU2 - - name: Solid - solver: Calculix -exchanges: - - from: Fluid - from-patch: interface # Fluid side boundary where forces are measured - to: Solid - to-patch: surface # Solid surface receiving fluid forces - data: Force - type: strong - - from: Solid - from-patch: surface # Solid surface where displacements occur - to: Fluid - to-patch: interface # Fluid boundary that adapts to displacements - data: Displacement - type: strong -``` - -## Schema Validation Rules - -- Requires `coupling-scheme`, `participants`, and `exchanges` -- Optional `acceleration` configuration -- Supports scientific notation for numeric values -- Strict type and enumeration constraints - -## Compatibility and Best Practices - -- Designed for preCICE coupling framework -- Supports complex multi-physics simulations -- Flexible configuration for various scientific computing scenarios - -## Limitations - -- Predefined acceleration and exchange methods -- Strict schema validation - -## Future Extensions - -- Potential expansion of acceleration methods -- Enhanced data exchange types -- More flexible validation rules - -## Contributing - -Contributions to expand and improve the schema are welcome. Please follow the project's contribution guidelines. diff --git a/precicecasegenerate/templates/adapter-config-template.json b/precicecasegenerate/templates/adapter-config-template.json deleted file mode 100644 index 6afc036..0000000 --- a/precicecasegenerate/templates/adapter-config-template.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "participant_name": null, - "precice_config_file_name": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": null, - "patches": [], - "write_data_names": [], - "read_data_names": [] - } - ] -} diff --git a/precicecasegenerate/templates/metaConfiguratorSettings.json b/precicecasegenerate/templates/metaConfiguratorSettings.json deleted file mode 100644 index 1bfe399..0000000 --- a/precicecasegenerate/templates/metaConfiguratorSettings.json +++ /dev/null @@ -1,115 +0,0 @@ -{ - "dataFormat": "yaml", - "toolbarTitle": "preCICE Topology Configurator", - "hideSchemaEditor": true, - "hideSettings": true, - "uiColors": { - "schemaEditor": "olivedrab", - "dataEditor": "black", - "settings": "darkmagenta" - }, - "codeEditor": { - "fontSize": 18, - "tabSize": 2, - "showFormatSelector": true, - "xml": { - "attributeNamePrefix": "_" - } - }, - "guiEditor": { - "maximumDepth": 20, - "propertySorting": "schemaOrder", - "hideAddPropertyButton": true - }, - "schemaDiagram": { - "editMode": true, - "vertical": true, - "showAttributes": true, - "showEnumValues": true, - "maxAttributesToShow": 30, - "maxEnumValuesToShow": 10, - "moveViewToSelectedElement": false, - "automaticZoomMaxValue": 1, - "automaticZoomMinValue": 0.5, - "mergeAllOfs": true - }, - "metaSchema": { - "allowBooleanSchema": false, - "allowMultipleTypes": false, - "objectTypesComfort": false, - "markMoreFieldsAsAdvanced": true, - "showAdditionalPropertiesButton": false, - "showJsonLdFields": false - }, - "panels": { - "dataEditor": [ - { - "panelType": "textEditor", - "mode": "dataEditor", - "size": 50 - }, - { - "panelType": "guiEditor", - "mode": "dataEditor", - "size": 50 - } - ], - "schemaEditor": [ - { - "panelType": "textEditor", - "mode": "schemaEditor", - "size": 33 - }, - { - "panelType": "schemaDiagram", - "mode": "schemaEditor", - "size": 33 - }, - { - "panelType": "guiEditor", - "mode": "schemaEditor", - "size": 40 - } - ], - "settings": [ - { - "panelType": "textEditor", - "mode": "settings", - "size": 50 - }, - { - "panelType": "guiEditor", - "mode": "settings", - "size": 50 - } - ], - "hidden": [ - "aiPrompts", - "debug" - ] - }, - "rdf": { - "sparqlEndpointUrl": "https://dbpedia.org/sparql" - }, - "frontend": { - "hostname": "http://metaconfigurator.informatik.uni-stuttgart.de" - }, - "backend": { - "hostname": "http://metaconfigurator.informatik.uni-stuttgart.de", - "port": 5000 - }, - "openAi": { - "model": "gpt-4o-mini", - "maxTokens": 5000, - "temperature": 0.3, - "endpoint": "/chat/completions" - }, - "settingsVersion": "1.0.0", - "preferencesSelected": true, - "aiIntegration": { - "model": "gpt-4o-mini", - "maxTokens": 5000, - "temperature": 0, - "endpoint": "https://api.openai.com/v1/chat/completions" - } -} diff --git a/precicecasegenerate/templates/template_README.md b/precicecasegenerate/templates/template_README.md deleted file mode 100644 index e2da34a..0000000 --- a/precicecasegenerate/templates/template_README.md +++ /dev/null @@ -1,104 +0,0 @@ -# 🚀 Multiphysics Simulation Project - -This `README.md` file was auto-generated by the `FileGenerator.py` script, providing a comprehensive guide to your coupled simulation. - ---- - -## 📋 Project Overview - -This project utilizes **preCICE** (Precise Code Interaction Coupling Environment) for a multiphysics simulation involving: - -- **Participants**: - {PARTICIPANTS_LIST} - -- **Solvers**: - {SOLVERS_LIST} - -- **Coupling Strategy**: - {COUPLING_STRATEGY} - ---- - -## 🛠 Prerequisites - -Before running the simulation, ensure you have the following installed: -- preCICE library -- {SOLVER1_NAME} solver -- {SOLVER2_NAME} solver -- Required dependencies for each solver - ---- - -## 🏃‍♂️ Running the Simulation - -### Quick Start - -```bash -# Navigate to the `_generated` folder -cd _generated/ - -# Make the run script executable -chmod +x run.sh - -# Execute the simulation -./run.sh -``` - -### Advanced Execution - -For more control or debugging: -- Check `run.sh` for specific command-line arguments -- Modify solver-specific parameters in `adapter-config.json` - ---- - -## 🔍 Simulation Configuration - -- **preCICE Configuration**: `precice-config.xml` - - Defines coupling interface and communication strategy - - Modify with caution, refer to preCICE documentation - -- **Adapter Configuration**: `{PARTICIPANT_NAME}/adapter-config.json` - - Solver-specific coupling parameters - - Adjust solver input/output mappings here - ---- - -## 🧹 Cleaning Simulation Artifacts - -```bash -# Make the clean script executable -chmod +x clean.sh - -# Remove generated files and reset workspace -./clean.sh -``` - -**Warning**: This will remove all generated files except preserved ones. - ---- - -## 📚 Additional Resources - -- 🔗 [preCICE Tutorials](https://precice.org/tutorials.html) -- 🔗 [preCICE Documentation](https://precice.org/docs.html) -- 🔗 Solver-specific documentation: -[Solvers Links and Names] - ---- - -## 🤝 Troubleshooting - -Common issues and solutions: -- Ensure all solvers are compatible with preCICE version -- Check network/communication settings -- Verify adapter configuration mappings - -For specific problems, consult: -- Solver documentation -- preCICE community forums -- Project-specific documentation - ---- - -*Generated by FileGenerator.py - Simplifying Multiphysics Simulation Workflows* diff --git a/precicecasegenerate/templates/template_clean.sh b/precicecasegenerate/templates/template_clean.sh deleted file mode 100644 index de561cc..0000000 --- a/precicecasegenerate/templates/template_clean.sh +++ /dev/null @@ -1,199 +0,0 @@ -#!/bin/bash - -# ------------------------------------------------------------------- -# Script Name: clean.sh -# Description: Deletes all files and directories in the current directory -# except for the hardcoded preserved files. -# Preserved files: -# - clean.sh -# - README.md -# - precice-config.xml -# - *-*/adapter-config.json -# - *-*/run.sh -# Usage: ./clean.sh [--dry-run] -# ------------------------------------------------------------------- - -# Exit immediately if a command exits with a non-zero status -set -e - -# Define the root directory as the current directory -ROOT_DIR="$(pwd)" - -# Define the preserved files with their relative paths from ROOT_DIR -PRESERVE_FILES=( - "clean.sh" - "README.md" - "precice-config.xml" - "*-*/adapter-config.json" - "*-*/run.sh" -) - -# Define backup directory (optional) -BACKUP_DIR="$ROOT_DIR/backup_$(date '+%Y%m%d_%H%M%S')" - -# Default behavior is to perform actual deletion -DRY_RUN=0 - -# Define log file -LOG_FILE="cleanup.log" - -# Function to display a message -log() { - echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE" -} - -# Function to check if a relative path is in the preserved list -is_preserved() { - local rel_path="$1" - for preserve in "${PRESERVE_FILES[@]}"; do - if [ "$rel_path" == "$preserve" ]; then - return 0 # true - fi - done - return 1 # false -} - -# Function to delete or backup unpreserved files and directories -cleanup() { - log "Starting cleanup in directory: $ROOT_DIR" - - # Enable dotglob to include hidden files and directories - shopt -s dotglob - - # Iterate over all items in the root directory, including hidden ones - for item in "$ROOT_DIR"/* "$ROOT_DIR"/.*; do - # Get the relative path from ROOT_DIR - rel_path="${item#$ROOT_DIR/}" - - # Handle the case when item is ROOT_DIR itself - if [ "$rel_path" == "$ROOT_DIR" ]; then - continue - fi - - # Skip '.' and '..' - if [ "$rel_path" == "." ] || [ "$rel_path" == ".." ]; then - continue - fi - - # Check if the item is in the preserved list - if is_preserved "$rel_path"; then - log "Preserving: $rel_path" - continue - fi - - # Check if the item is a preserved directory (e.g., 'config') - PRESERVED_DIRS=() - for preserve in "${PRESERVE_FILES[@]}"; do - dir=$(dirname "$preserve") - if [ "$dir" != "." ] && [[ ! " ${PRESERVED_DIRS[@]} " =~ " ${dir} " ]]; then - PRESERVED_DIRS+=("$dir") - fi - done - - preserve_dir=false - for dir in "${PRESERVED_DIRS[@]}"; do - if [[ "$rel_path" == "$dir" && -d "$item" ]]; then - preserve_dir=true - break - fi - done - - if [ "$preserve_dir" = true ]; then - log "Preserving directory: $rel_path" - - # Iterate over items inside the preserved directory - for subitem in "$item"/* "$item"/.*; do - # Get the relative path of the subitem - sub_rel_path="${subitem#$ROOT_DIR/}" - - # Skip '.' and '..' inside the directory - sub_basename="$(basename "$subitem")" - if [ "$sub_basename" == "." ] || [ "$sub_basename" == ".." ]; then - continue - fi - - # Check if the subitem is in the preserved list - if is_preserved "$sub_rel_path"; then - log "Preserving: $sub_rel_path" - continue - fi - - # Decide to delete or backup - if [ "$DRY_RUN" -eq 1 ]; then - log "Would delete file: $sub_rel_path" - else - # Create backup directory if not already - mkdir -p "$BACKUP_DIR" - - if [ -f "$subitem" ] || [ -L "$subitem" ]; then - mv "$subitem" "$BACKUP_DIR/" - log "Moved file to backup: $sub_rel_path" - elif [ -d "$subitem" ]; then - mv "$subitem" "$BACKUP_DIR/" - log "Moved directory to backup: $sub_rel_path" - fi - fi - done - continue # Move to the next item in the root directory - fi - - # If not preserved and not a preserved directory, delete or backup the item - if [ -f "$item" ] || [ -L "$item" ]; then - if [ "$DRY_RUN" -eq 1 ]; then - log "Would delete file: $rel_path" - else - # Create backup directory if not already - mkdir -p "$BACKUP_DIR" - - mv "$item" "$BACKUP_DIR/" - log "Moved file to backup: $rel_path" - fi - elif [ -d "$item" ]; then - if [ "$DRY_RUN" -eq 1 ]; then - log "Would delete directory: $rel_path" - else - # Create backup directory if not already - mkdir -p "$BACKUP_DIR" - - mv "$item" "$BACKUP_DIR/" - log "Moved directory to backup: $rel_path" - fi - fi - done - - # Disable dotglob after processing - shopt -u dotglob - - if [ "$DRY_RUN" -eq 1 ]; then - log "Dry run completed. No files were deleted or moved." - else - log "Cleanup completed successfully. Deleted files are backed up in '$BACKUP_DIR'." - fi -} - -# Parse optional flags -while [[ "$#" -gt 0 ]]; do - case $1 in - --dry-run) DRY_RUN=1 ;; - *) echo "Unknown parameter passed: $1"; exit 1 ;; - esac - shift -done - -# Safety: Prompt the user before proceeding -if [ "$DRY_RUN" -eq 1 ]; then - log "Dry run mode enabled. No files will be deleted or moved." -else - read -p "This will delete all files and directories except the preserved ones. Are you sure you want to proceed? [y/N]: " confirm - case "$confirm" in - [yY][eE][sS]|[yY]) - ;; - *) - log "Cleanup aborted by user." - exit 0 - ;; - esac -fi - -# Perform cleanup -cleanup diff --git a/precicecasegenerate/templates/template_run.sh b/precicecasegenerate/templates/template_run.sh deleted file mode 100644 index 8817731..0000000 --- a/precicecasegenerate/templates/template_run.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -# -# run.sh Script -# -# This is a template. You need to implement it yourself. -# -# If you are trying to launch a Python script, you need to add: -# -# python path/to/file.py -# -# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh -# -# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment -# or installing dependencies) have already been completed. -# Therefore, you may only need to add: -# -# python path/to/file.py -# - -set -e # Exit immediately if any command fails From 2ecc560f341b6a83d45a09b1a8d7600d53f55eee Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 4 Jan 2026 16:06:53 +0100 Subject: [PATCH 004/131] Update topology-schema.json Updated the schema to reflect new topology, which is more accessible --- .../schemas/topology-schema.json | 280 +++++------------- 1 file changed, 74 insertions(+), 206 deletions(-) diff --git a/precicecasegenerate/schemas/topology-schema.json b/precicecasegenerate/schemas/topology-schema.json index bbc01d3..bd9b2ae 100644 --- a/precicecasegenerate/schemas/topology-schema.json +++ b/precicecasegenerate/schemas/topology-schema.json @@ -1,228 +1,96 @@ { - "type": "object", - "properties": { - "coupling-scheme": { + "type": "object", + "properties": { + "participants": { + "type": "array", + "description": "List of participants in the simulation", + "items": { "type": "object", "properties": { - "max-time": { - "type": "number", - "default": 1e-3 + "name": { + "type": "string", + "description": "Unique name of the participant" }, - "time-window-size": { - "type": "number", - "default": 1e-3 + "solver": { + "type": "string", + "description": "Solver used by the participant" }, - "max-iterations": { + "dimensionality": { "type": "integer", - "default": 50 - }, - "display_standard_values": { - "type": "boolean", - "default": false - }, - "coupling": { - "type": "string", - "enum": ["parallel", "serial"], - "default": "parallel" + "description": "Dimensionality of the participants meshes.", + "default": 3 } }, - "required": [ ], - "optional": [ "display_standard_values", "max-time", "time-window-size", "max-iterations", "coupling" ] + "required": [ + "name", + "solver" + ] }, - "acceleration": { + "minItems": 1, + "uniqueItems": true + }, + "exchanges": { + "type": "array", + "description": "Defines the data exchanges between participants in the simulation.", + "items": { "type": "object", "properties": { - "name": { + "from": { "type": "string", - "description": "Type of acceleration method", - "enum": ["constant", "aitken", "IQN-ILS", "IQN-IMVJ"], - "default": "IQN-ILS" - }, - "initial-relaxation": { - "type": "object", - "properties": { - "value": { - "type": "number" - }, - "enforce": { - "type": "boolean", - "default": false - } - }, - "additionalProperties": false, - "required": ["value"], - "description": "Initial under-relaxation factor" + "description": "Name of the source participant sending data" }, - "preconditioner": { - "type": "object", - "description": "Preconditioner configuration", - "properties": { - "freeze-after": { - "type": "integer", - "description": "Time window after which preconditioner stops updating (-1 = never)", - "minimum": -1, - "default": -1 - }, - "type": { - "type": "string", - "description": "Type of preconditioner", - "enum": ["constant", "value", "residual", "residual-sum"] - } - }, - "required": [ "freeze-after" ], - "optional": [ "type" ] + "from-patch": { + "type": "string", + "description": "Specific interface patch or surface on the source participant from which data is sent" }, - "filter": { - "type": "object", - "description": "QR1/2 filter configuration", - "properties": { - "limit": { - "type": "number", - "description": "Threshold for filtering singular values", - "exclusiveMinimum": 0, - "default": 1e-16 - }, - "type": { - "type": "string", - "description": "Type of filtering", - "enum": ["QR1", "QR2"] - } - }, - "required": [ "limit" ], - "optional": [ "type" ] + "to": { + "type": "string", + "description": "Name of the target participant receiving data" }, - "max-used-iterations": { - "type": "integer", - "description": "Maximum number of previous iterations used for IQN methods", - "minimum": 0 + "to-patch": { + "type": "string", + "description": "Specific interface patch or surface on the target participant where data is received" }, - "time-windows-reused": { - "type": "integer", - "description": "Number of past time windows reused for IQN methods", - "minimum": 0 + "data": { + "type": "string", + "description": "Type of data being exchanged (e.g., Force, Displacement, Velocity)" }, - "imvj-restart-mode": { - "type": "object", - "description": "Configuration for IMVJ restart mode", - "properties": { - "truncation-threshold": { - "type": "number", - "description": "Threshold for truncating singular values during restart", - "exclusiveMinimum": 0, - "default": 0.0001 - }, - "chunk-size": { - "type": "integer", - "description": "Number of time windows between restarts", - "minimum": 1, - "default": 8 - }, - "reused-time-windows-at-restart": { - "type": "integer", - "description": "Number of time windows reused after restart", - "minimum": 0, - "default": 8 - }, - "type": { - "type": "string", - "description": "Type of restart mode", - "enum": ["no-restart", "RS-0", "RS-LS", "RS-SVD", "RS-SLIDE"], - "default": "RS-SVD" - } - }, - "required": [ "truncation-threshold", "chunk-size", "reused-time-windows-at-restart","type" ], - "optional": [ ] + "data-type": { + "type": "string", + "description": "Specifies whether the data is a scalar or vector quantity", + "enum": [ + "scalar", + "vector" + ], + "default": "scalar" }, - "display_standard_values": { - "type": "boolean", - "default": false + "type": { + "type": "string", + "description": "Defines the coupling type: 'strong' for tight coupling, 'weak' for loose coupling", + "enum": [ + "strong", + "weak" + ] } }, - "required": [ ], - "optional": [ "name", "initial-relaxation", "preconditioner", "filter", "max-used-iterations", "time-windows-reused", "display_standard_values", "imvj-restart-mode" ] - }, - "participants": { - "type": "array", - "description": "List of participants in the coupling simulation", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Unique name of the participant" - }, - "solver": { - "type": "string", - "description": "Solver used by the participant" - }, - "dimensionality": { - "type": "integer", - "description": "Dimensionality of the participant's problem", - "default": 3 - } - }, - "required": ["name", "solver"] - }, - "minItems": 1, - "uniqueItems": true - }, - "exchanges": { - "type": "array", - "description": "Defines the data exchanges between participants in the coupling simulation", - "items": { - "type": "object", - "properties": { - "from": { - "type": "string", - "description": "Name of the source participant sending data" - }, - "from-patch": { - "type": "string", - "description": "Specific interface patch or surface on the source participant from which data is sent" - }, - "to": { - "type": "string", - "description": "Name of the target participant receiving data" - }, - "to-patch": { - "type": "string", - "description": "Specific interface patch or surface on the target participant where data is received" - }, - "data": { - "type": "string", - "description": "Type of data being exchanged (e.g., Force, Displacement, Velocity)", - "pattern": "^(Force|Displacement|Velocity|Pressure|Temperature|HeatTransfer).*$" - }, - "data-type": { - "type": "string", - "description": "Specifies whether the data is a scalar or vector quantity", - "enum": ["scalar", "vector"], - "default": "scalar" - }, - "type": { - "type": "string", - "description": "Defines the coupling type: 'strong' for tight coupling, 'weak' for loose coupling", - "enum": ["strong", "weak"] - } - }, - "required": [ - "from", - "from-patch", - "to", - "to-patch", - "data", - "type" - ], - "optional": [ "data-type" ] - } + "required": [ + "from", + "from-patch", + "to", + "to-patch", + "data", + "type" + ], + "optional": [ + "data-type" + ] } - }, - "required": [ - "coupling-scheme", - "participants", - "exchanges" - ], - "optional": [ "acceleration" ], - "title": "preCICE Topology Configuration", - "description": "JSON schema defining the topology configuration for precice-generator. Specifies participants, exchanges, and their coupling relationships." + } + }, + "required": [ + "participants", + "exchanges" + ], + "title": "preCICE Topology Configuration", + "description": "JSON schema defining the topology configuration for precice-generator. Specifies participants, exchanges, and their coupling relationships." } From befcc12d6d6fbcd47b6227e91203a06b837a8bff Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 4 Jan 2026 16:07:13 +0100 Subject: [PATCH 005/131] Create logging_setup.py A custom logger --- precicecasegenerate/logging_setup.py | 73 ++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 precicecasegenerate/logging_setup.py diff --git a/precicecasegenerate/logging_setup.py b/precicecasegenerate/logging_setup.py new file mode 100644 index 0000000..7e29109 --- /dev/null +++ b/precicecasegenerate/logging_setup.py @@ -0,0 +1,73 @@ +import os +import datetime +import glob +import logging +from logging import LogRecord, Logger + + +class ColorFormatter(logging.Formatter): + COLORS = { + logging.INFO: "\033[32m", # green + logging.DEBUG: "\033[34m", # blue + logging.WARNING: "\033[33m", # yellow + logging.ERROR: "\033[31m", # red + logging.CRITICAL: "\033[1;31m" # bold red + } + RESET = "\033[0m" + + def format(self, record: LogRecord) -> str: + """ + Format a log record, such that the levelname is colored according to the level. + :param record: The log record to format. + :return: + """ + # Store original levelname + levelname = record.levelname + color = self.COLORS.get(record.levelno, "") + record.levelname = f"{color}{levelname}{self.RESET}" + formatted = super().format(record) + record.levelname = levelname # Restore + return formatted + + +def setup_logging() -> Logger: + timestamp: str = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S") + + path: str = "logs/" + os.makedirs(path, exist_ok=True) + + # Delete old log files if there are more than 10 to avoid clutter + log_files = sorted(glob.glob(os.path.join(path, "precice-case-generate-*.log"))) + if len(log_files) >= 10: + for old_file in log_files[:len(log_files) - 9]: + os.remove(old_file) + + log_filename = f"{path}precice-case-generate-{timestamp}.log" + + # Base level is debug (nothing is ignored) + logger = logging.getLogger() + logger.setLevel(logging.DEBUG) + + # Write everything to a log file + file_handler = logging.FileHandler(log_filename) + file_handler.setLevel(logging.DEBUG) + # Only write warnings and errors to the console + console_handler = logging.StreamHandler() + console_handler.setLevel(logging.INFO) + + file_formatter = logging.Formatter( + "[%(asctime)s] [%(levelname)s] [%(name)s]: %(message)s", + datefmt="%Y-%m-%d %H:%M:%S" + ) + file_handler.setFormatter(file_formatter) + # Use a file_formatter with color + console_formatter = ColorFormatter( + "[%(asctime)s] [%(levelname)s]: %(message)s", + datefmt="%H:%M:%S" + ) + console_handler.setFormatter(console_formatter) + + logger.addHandler(file_handler) + logger.addHandler(console_handler) + + return logger From c5d0e966a406ec98564e278bf0224f541d2f1eab Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 4 Jan 2026 16:07:46 +0100 Subject: [PATCH 006/131] Create topology_reader.py A class to read and validate the topology --- .../input_handler/topology_reader.py | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 precicecasegenerate/input_handler/topology_reader.py diff --git a/precicecasegenerate/input_handler/topology_reader.py b/precicecasegenerate/input_handler/topology_reader.py new file mode 100644 index 0000000..169668e --- /dev/null +++ b/precicecasegenerate/input_handler/topology_reader.py @@ -0,0 +1,52 @@ +import sys +import yaml +import json +import jsonschema +import logging +from importlib.resources import files + +logger = logging.getLogger(__name__) + + +class TopologyReader: + """ + Read a given topology.yaml file and save it as a config graph (?) + """ + + def __init__(self, path_to_topology_file: str): + self.topology_file_path = path_to_topology_file + self.topology = self._read_topology() + self._check_topology() + + def _read_topology(self) -> dict: + """ + Read the topology file and convert it to a dict. + This dict is saved as an attribute of the TopologyReader object. + :return: None + """ + logger.debug(f"Reading topology file at {self.topology_file_path}") + with open(self.topology_file_path, "r") as topology_file: + topology = yaml.safe_load(topology_file) + return topology + + def _check_topology(self) -> None: + """ + Check if the topology adheres to the defined schema in schemas/topology-schema.json + """ + schema_path = files("precicecasegenerate.schemas") / "topology-schema.json" + + schema = json.loads(schema_path.read_text(encoding="utf-8")) + try: + jsonschema.validate(self.topology, schema) + logger.debug("Topology file adheres to the schema.") + except jsonschema.ValidationError as e: + logger.critical(f"Topology file {self.topology_file_path} does not adhere to the schema " + f"as specified in {schema_path}: {e.message}. Aborting program.") + sys.exit(1) + + def get_topology(self) -> dict: + """ + Return the topology dict. + :return: A dict representing the topology. + """ + return self.topology From f374f5595eb27ec3d342740da3f8478a295f7288 Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 4 Jan 2026 16:08:15 +0100 Subject: [PATCH 007/131] Create config_creator.py A class to create the precice configuration file based on config-graph nodes --- .../config_creator/config_creator.py | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 precicecasegenerate/config_creator/config_creator.py diff --git a/precicecasegenerate/config_creator/config_creator.py b/precicecasegenerate/config_creator/config_creator.py new file mode 100644 index 0000000..3f1428b --- /dev/null +++ b/precicecasegenerate/config_creator/config_creator.py @@ -0,0 +1,69 @@ +import logging + +logger = logging.getLogger(__name__) + + +class ConfigCreator: + + def __init__(self, config_topology: dict): + self.config_topology = config_topology + + def create_config_str(self) -> str: + """ + Create a string representing a preCICE configuration file. + This is done by iterating over the given topology dict and creating a string for each element. + :return: A string representing a preCICE configuration file. + """ + # "Header" information + config_str: str = (f"\n" + f"\n" + f" \n" + f" debug\"\n" + f" format=\"---[precice] %ColorizedSeverity% %Message%\"\n" + f" enabled=\"true\" />\n" + f" \n\n") # two newlines to separate the header from the content + + for data in self.config_topology["data"]: + config_str += f" " + data.to_xml() + "\n" + + config_str += "\n" # separate mesh from data + + mesh_str: str = "" + for mesh in self.config_topology["meshes"]: + mesh_str += f"{mesh.to_xml()}" + config_str += "".join(" " + line for line in mesh_str.splitlines(keepends=True)) + + config_str += "\n" # separate mesh from participants + + participant_str: str = "" + for participant in self.config_topology["participants"]: + participant_str += f"{participant.to_xml()}" + config_str += "".join(" " + line for line in participant_str.splitlines(keepends=True)) + + config_str += "\n" # separate participants from coupling-schemes + + coupling_scheme_str: str = "" + for coupling_scheme in self.config_topology["coupling-schemes"]: + coupling_scheme_str += f"{coupling_scheme.to_xml()}" + config_str += "".join(" " + line for line in coupling_scheme_str.splitlines(keepends=True)) + + config_str += "\n" # separate coupling-schemes from m2ns + + for m2n in self.config_topology["m2n"]: + config_str += f" {m2n.to_xml()}" + + config_str += f"\n" + return config_str + + def create_config_file(self, config_str: str, directory: str = "./", filename: str = "precice-config.xml") -> None: + """ + Create a configuration file from the given configuration string. + The file is saved in the given directory with the given filename. + :param config_str: A string representing the configuration. + :param directory: The directory to save the file in. + :param filename: The filename of the file. + """ + with open(directory + filename, "w") as f: + f.write(config_str) + logger.info(f"preCICE configuration file written to {directory + filename}") From 117b30319f42ad5c82e38293a3eb0a9a45d8b6e3 Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 4 Jan 2026 16:08:29 +0100 Subject: [PATCH 008/131] Create node_creator.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A class to create nodes based on a topology file --- .../config_creator/node_creator.py | 869 ++++++++++++++++++ 1 file changed, 869 insertions(+) create mode 100644 precicecasegenerate/config_creator/node_creator.py diff --git a/precicecasegenerate/config_creator/node_creator.py b/precicecasegenerate/config_creator/node_creator.py new file mode 100644 index 0000000..c24520c --- /dev/null +++ b/precicecasegenerate/config_creator/node_creator.py @@ -0,0 +1,869 @@ +import random + +import logging +from precice_config_graph import nodes as n +from precice_config_graph import enums as e +import precicecasegenerate.config_creator.helper as helper + +logger = logging.getLogger(__name__) + + +class NodeCreator: + + def __init__(self, topology: dict): + self.topology = topology + self.participants: list[n.ParticipantNode] = [] + self.data: list[n.DataNode] = [] + self.meshes: list[n.MeshNode] = [] + self.coupling_schemes: list[n.CouplingSchemeNode | n.MultiCouplingSchemeNode] = [] + self.m2ns: list[n.M2NNode] = [] + + # Containers for temporary values + # Dimensionality is needed for meshes + self.participant_dimensionality: dict[n.ParticipantNode, int] = {} + # self.data_types: dict[n.DataNode, e.DataType] = {} + self.exchange_types: dict[n.ExchangeNode, str] = {} + + self._create_nodes() + + def get_nodes(self) -> dict: + """ + Return all nodes created from the topology. + The returned dictionary has entries for the five major preCICE configuration elements, namely: + Participants, Data, Meshes, CouplingSchemes and M2Ns. + :return: A dictionary mapping node-names to lists of node-objects. + """ + return {"participants": self.participants, "data": self.data, "meshes": self.meshes, + "coupling-schemes": self.coupling_schemes, "m2n": self.m2ns} + + def _create_nodes(self) -> None: + """ + Create ConfigGraph nodes based on the topology. + """ + # TODO check if topology does not contain duplicate participants; + # TODO check that no data name contains one of the uniquifiers + + # Topology will only have tags "participants" and "exchanges" + + # Initialize participants from participants tag + participant_map: dict[str, n.ParticipantNode] = self._initialize_participants() + logger.debug(f"Created {len(set(participant_map.values()))} participant nodes.") + + # Update patches + # IMPORTANT: This updates the topology dict. + # Anything using a "frozenset" of topology items needs to be done after this method! + participant_patch_label_map: dict[tuple[n.ParticipantNode, n.ParticipantNode], dict[str, set[str]]] = ( + self._patch_preprocessing(participant_map)) + + # TODO If it is possible that the same patch can exchange multiple data, then we need to do something about that :| + # A dict mapping exchanges to patches would probably be needed. + # If it is not possible, then we still need that dict and make distinct patches out of one patch with multiple data. + # If it is possible, then we maybe need to differentiate between the case 2*intensive/extensive, and extensive+intensive. + # In the former case, the same patch should be fine. In the latter case, we would probably need to create a new patch. + + # Initialize data from exchanges tag (defined implicitly) + # This uses the topology dict as keys, so it needs to be done after the patch preprocessing. + data_map: dict[frozenset, n.DataNode] = self._initialize_data(participant_map) + logger.debug(f"Created {len(set(data_map.values()))} data nodes.") + + # Initialize meshes from the exchanges tag (defined implicitly) + mesh_map: dict[tuple[n.ParticipantNode, n.ParticipantNode, str], n.MeshNode] = self._initialize_meshes( + participant_patch_label_map) + logger.debug(f"Created {len(set(mesh_map.values()))} mesh nodes.") + + # TODO update usage of mesh_map + + # Initialize mappings from the exchanges tag (defined implicitly) + mapping_map: dict[tuple[n.MeshNode, n.MeshNode], n.MappingNode] = self._initialize_mappings(participant_map, + mesh_map, data_map) + logger.debug(f"Created {len(set(mapping_map.values()))} mapping nodes.") + + # Initialize exchanges from the exchanges tag + potential_couplings: list[dict] = self._initialize_exchanges(participant_map, mesh_map, data_map, mapping_map) + logger.debug(f"Created {len(potential_couplings)} exchange nodes.") + + # All potentially strong coupling-schemes + strong_couplings: list[dict] = [coupling for coupling in potential_couplings if coupling["type"] == "strong"] + logger.debug(f"Found {len(strong_couplings)} strong exchanges.") + # All potentially weak coupling-schemes + weak_couplings: list[dict] = [coupling for coupling in potential_couplings if coupling["type"] == "weak"] + logger.debug(f"Found {len(weak_couplings)} weak exchanges.") + + # Maps participants to coupling schemes. + coupling_map: dict[frozenset[n.ParticipantNode], n.CouplingSchemeNode | n.MultiCouplingSchemeNode] = {} + # Handle strong couplings + if len(strong_couplings) > 0: + # This might manipulate weak_couplings, so this method needs to be called before _create_weak ... + coupling_map = self._create_strong_coupling_schemes(strong_couplings, weak_couplings) + + # Handle weak couplings + if len(weak_couplings) > 0: + coupling_map = self._create_weak_coupling_schemes(weak_couplings, coupling_map) + + # Create M2Ns + self._create_M2N() + logger.debug(f"Created {len(self.m2ns)} M2N nodes.") + + # TODO Finish up, i.e., add mising tags to nodes + + def _create_M2N(self) -> None: + """ + Create M2N nodes based on the coupling-schemes. Each pair of participants only needs one M2N. + Inside a multi-coupling-scheme, every participant needs an M2N to the control participant; + as well as to any participant they are exchanging data with. + """ + # Map pairs of participants to M2N nodes to avoid duplicates + m2n_map: dict[frozenset[n.ParticipantNode], n.M2NNode] = {} + for coupling_scheme in self.coupling_schemes: + # Treat multi-coupling-schemes separately: More than one M2N is needed here + if isinstance(coupling_scheme, n.MultiCouplingSchemeNode): + # Create an M2N for every exchange (once per pair of participants) + for exchange in coupling_scheme.exchanges: + if frozenset((exchange.from_participant, exchange.to_participant)) not in m2n_map: + m2n: n.M2NNode = n.M2NNode(type=helper.DEFAULT_M2N_TYPE, acceptor=exchange.from_participant, + connector=exchange.to_participant) + m2n_map[frozenset((exchange.from_participant, exchange.to_participant))] = m2n + self.m2ns.append(m2n) + logger.debug(f"Created M2N from {exchange.from_participant.name} to " + f"{exchange.to_participant.name}.") + + control_participant: n.ParticipantNode = coupling_scheme.control_participant + # Create an M2N from the control participant to every other participant + for participant in coupling_scheme.participants: + if participant != control_participant: + if frozenset((control_participant, participant)) not in m2n_map: + m2n: n.M2NNode = n.M2NNode(type=helper.DEFAULT_M2N_TYPE, acceptor=control_participant, + connector=participant) + m2n_map[frozenset((control_participant, participant))] = m2n + self.m2ns.append(m2n) + logger.debug(f"Created M2N from control-participant {control_participant.name} " + f"to {participant.name}.") + + # Only one M2N is needed for a regular coupling-scheme (since there is only one pair of participants involved) + elif isinstance(coupling_scheme, n.CouplingSchemeNode): + first_participant: n.ParticipantNode = coupling_scheme.first_participant + second_participant: n.ParticipantNode = coupling_scheme.second_participant + if frozenset((first_participant, second_participant)) not in m2n_map: + m2n: n.M2NNode = n.M2NNode( + type=helper.DEFAULT_M2N_TYPE, acceptor=first_participant, connector=second_participant) + m2n_map[frozenset((first_participant, second_participant))] = m2n + self.m2ns.append(m2n) + logger.debug(f"Created M2N from {first_participant.name} to " + f"{second_participant.name}.") + + def _create_strong_coupling_schemes(self, strong_couplings: list[dict], weak_couplings: list[dict]) -> ( + dict[frozenset[n.ParticipantNode], n.CouplingSchemeNode]): + """ + Create coupling-schemes for strong interactions. + First, bidirectional strong couplings are determined. If there is more than one bidirectional strong coupling, + a multi-coupling-scheme is created. Otherwise, if there is exactly one bidirectional strong coupling, an implicit + coupling-scheme is created. + Otherwise, no implicit coupling-scheme is created and all "strong" couplings are added to the "weak" couplings + list to be handled by the ``_create_weak_coupling_schemes()`` method. + Next, all potential couplings (both strong and weak) are searched for couplings with participants involved in + bidirectional strong couplings. Such participants are added to the implicit coupling-scheme. + Finally, acceleration and convergence measures are added to every exchange of the implicit coupling-scheme. + A dict mapping tuples of participants to coupling-schemes is returned. + :param strong_couplings: A list of dicts with potential strong coupling schemes (exchanged of type "strong"). + :param weak_couplings: A list of dicts with potential weak coupling schemes (exchanged of type "weak"). + :return: A dict[frozenset[ParticipantNode], CouplingSchemeNode] + """ + coupling_map: dict[frozenset[n.ParticipantNode], n.CouplingSchemeNode | n.MultiCouplingSchemeNode] = {} + + # All pairs of participants involved in bidirectional strong couplings + bidirectional_strong_coupling_participant_pairs: set[frozenset[n.ParticipantNode]] = set() + bidirectional_strong_couplings: list[dict] = [] + + implicit_coupling_scheme: n.MultiCouplingSchemeNode | None = None + + # Iterate over all potential strong couplings + for coupling in strong_couplings: + # Check all other potential strong couplings to determine whether there are bidirectional strong couplings + for other_coupling in strong_couplings: + if coupling != other_coupling: + if coupling["from"] == other_coupling["to"] and coupling["to"] == other_coupling["from"]: + bidirectional_strong_coupling_participant_pairs.add( + frozenset((coupling["from"], coupling["to"]))) + logger.debug(f"Found bidirectional strong coupling between {coupling['from'].name} " + f"and {coupling['to'].name}.") + logger.debug(f"There are {len(bidirectional_strong_coupling_participant_pairs)} participant pairs involved in " + f"bidirectional strong couplings.") + + # Check each potential strong coupling whether its participants are involved in bidirectional strong couplings + # If so, add it to bidirectional_strong_couplings + for coupling in strong_couplings: + if frozenset((coupling["from"], coupling["to"])) in bidirectional_strong_coupling_participant_pairs: + # TODO can we put this in the loop above? + # i.e., add coupling and other_coupling to bidirectional_strong_couplings + bidirectional_strong_couplings.append(coupling) + + unidirectional_strong_couplings: list[dict] = [coupling for coupling in strong_couplings if + coupling not in bidirectional_strong_couplings] + logger.debug(f"There are {len(unidirectional_strong_couplings)} unidirectional strong exchanges and " + f"{len(bidirectional_strong_couplings)} bidirectional strong exchanges.") + + # We need a multi-coupling scheme if there is more than one bidirectional strong coupling + if len(bidirectional_strong_coupling_participant_pairs) > 1: + # Get all participants involved in bidirectional couplings (set to avoid duplicates) + participants: set[n.ParticipantNode] = {participant for pair in + bidirectional_strong_coupling_participant_pairs + for participant in pair} + participants: list[n.ParticipantNode] = list(participants) + + control_participant: n.ParticipantNode = self._determine_control_participant(participants, + bidirectional_strong_couplings) + + implicit_coupling_scheme: n.MultiCouplingSchemeNode = n.MultiCouplingSchemeNode( + control_participant=control_participant, + participants=participants) + logger.debug(f"Created multi-coupling-scheme with control participant {control_participant.name} " + f"and participants: {', '.join(p.name for p in participants)}.") + + # Add all combinations of participants to the coupling-map + for participant in participants: + for other_participant in participants: + if participant != other_participant: + coupling_map[frozenset((participant, other_participant))] = implicit_coupling_scheme + + # Only one bidirectional strong coupling means implicit coupling-scheme + elif len(bidirectional_strong_coupling_participant_pairs) == 1: + # Get both participants + first: n.ParticipantNode = list(list(bidirectional_strong_coupling_participant_pairs)[0])[0] + second: n.ParticipantNode = list(list(bidirectional_strong_coupling_participant_pairs)[0])[1] + implicit_coupling_scheme: n.CouplingSchemeNode = n.CouplingSchemeNode(first_participant=first, + second_participant=second, + type=helper.DEFAULT_IMPLICIT_COUPLING_TYPE) + coupling_map[frozenset((first, second))] = implicit_coupling_scheme + participants: list[n.ParticipantNode] = [first, second] + logger.debug(f"Created implicit coupling-scheme between {first.name} and {second.name}.") + # No bidirectional strong coupling + else: + # No implicit coupling-scheme is required. + # Add all strong ones to the weak couplings list and let the other method handle them + logger.debug("No bidirectional strong couplings found. Adding all strong couplings to weak couplings list.") + weak_couplings += strong_couplings + + # If an implicit coupling-scheme was created, exchanges, acceleration and convergence measures are added to it + if implicit_coupling_scheme is not None: + self.coupling_schemes.append(implicit_coupling_scheme) + + # Add bidirectional strong exchanges to the multi-coupling scheme + for coupling in bidirectional_strong_couplings: + coupling["exchange"].coupling_scheme = implicit_coupling_scheme + implicit_coupling_scheme.exchanges.append(coupling["exchange"]) + + # Check all other unidirectional strong couplings + # Iterate over a copy to be able to remove elements from the list + for coupling in unidirectional_strong_couplings.copy(): + # Both participants are already involved in the multi-coupling scheme + # This means we add their exchange to the multi-coupling scheme + if coupling["from"] in participants and coupling["to"] in participants: + coupling["exchange"].coupling_scheme = implicit_coupling_scheme + implicit_coupling_scheme.exchanges.append(coupling["exchange"]) + # Remove this coupling from the list of unidirectional couplings, as it has already been added to the multi-coupling scheme + unidirectional_strong_couplings.remove(coupling) + logger.debug(f"Found unidirectional strong exchange between {coupling['from'].name} " + f"and {coupling['to'].name} and added it to the implicit coupling-scheme.") + + # Check all weak couplings + for coupling in weak_couplings.copy(): + # Both participants are already involved in the multi-coupling scheme + # This means we add their exchange to the multi-coupling scheme + if coupling["from"] in participants and coupling["to"] in participants: + coupling["exchange"].coupling_scheme = implicit_coupling_scheme + implicit_coupling_scheme.exchanges.append(coupling["exchange"]) + # Remove this coupling from the list of couplings, as it has already been added to the multi-coupling scheme + weak_couplings.remove(coupling) + logger.debug(f"Found weak exchange between {coupling['from'].name} and {coupling['to'].name} " + f"and added it to the implicit coupling-scheme.") + + # Add all remaining strong couplings to the weak couplings list + weak_couplings += unidirectional_strong_couplings + + # Add acceleration and convergence measure for every exchange of the coupling-scheme + acceleration: n.AccelerationNode = n.AccelerationNode(coupling_scheme=implicit_coupling_scheme, + type=helper.DEFAULT_ACCELERATION_TYPE) + implicit_coupling_scheme.acceleration = acceleration + # Every exchanged data needs to be accelerated + for exchange in implicit_coupling_scheme.exchanges: + acceleration_data: n.AccelerationDataNode = n.AccelerationDataNode(acceleration=acceleration, + data=exchange.data, + mesh=exchange.mesh) + acceleration.data.append(acceleration_data) + convergence_measure: n.ConvergenceMeasureNode = n.ConvergenceMeasureNode( + coupling_scheme=implicit_coupling_scheme, + type=helper.DEFAULT_CONVERGENCE_MEASURE_TYPE, + data=exchange.data, + mesh=exchange.mesh) + implicit_coupling_scheme.convergence_measures.append(convergence_measure) + logger.debug(f"Added acceleration and convergence-measure for data {exchange.data.name} " + f"on mesh {exchange.mesh.name}.") + + return coupling_map + + def _create_weak_coupling_schemes(self, weak_couplings: list[dict], + coupling_map: dict[frozenset[n.ParticipantNode], n.CouplingSchemeNode]) -> ( + dict[frozenset[n.ParticipantNode], n.CouplingSchemeNode]): + """ + Create coupling-schemes for weak interactions. + :param weak_couplings: A list of dicts with potential weak coupling schemes. + :param coupling_map: A map of already existing coupling-schemes. + :return: A dict of all coupling-schemes, including the ones created in this method. + """ + # All strong coupling-schemes have already been handled completely + for weak_coupling in weak_couplings: + from_participant: n.ParticipantNode = weak_coupling["from"] + to_participant: n.ParticipantNode = weak_coupling["to"] + # Check if these participants already have a coupling-scheme + if frozenset((from_participant, to_participant)) not in coupling_map: + # If so, create a new one + coupling_scheme: n.CouplingSchemeNode = n.CouplingSchemeNode(type=helper.DEFAULT_EXPLICIT_COUPLING_TYPE, + first_participant=from_participant, + second_participant=to_participant) + coupling_map[frozenset((from_participant, to_participant))] = coupling_scheme + self.coupling_schemes.append(coupling_scheme) + logger.debug(f"Created coupling-scheme between {from_participant.name} and {to_participant.name}.") + + else: + # Otherwise, use the existing one + coupling_scheme = coupling_map[frozenset((from_participant, to_participant))] + logger.debug( + f"Found existing coupling-scheme between {from_participant.name} and {to_participant.name}.") + # Add the exchange to the coupling-scheme + coupling_scheme.exchanges.append(weak_coupling["exchange"]) + weak_coupling["exchange"].coupling_scheme = coupling_scheme + logger.debug(f"Added exchange of data {weak_coupling['exchange'].data.name} on mesh " + f"{weak_coupling['exchange'].mesh.name} to the coupling-scheme.") + + return coupling_map + + def _initialize_exchanges(self, participant_map: dict[str, n.ParticipantNode], + mesh_map: dict[tuple[n.ParticipantNode, n.ParticipantNode, str], n.MeshNode], + data_map: dict[frozenset, n.DataNode], + mapping_map: dict[tuple[n.MeshNode, n.MeshNode], n.MappingNode]) -> list[dict]: + """ + Initialize exchanges based on the exchanges-tag of the topology. + Each exchange corresponds to one exchange node. + This also creates "potential-couplings", as not every exchange needs a separate coupling-scheme. + A potential coupling stores information about the exchange, from- and to-participant, and exchange-type. + :param participant_map: A dict mapping participant names to participant nodes. + :param mesh_map: A dict mapping participant pairs and "extensive/intensive" to mesh nodes. + :param data_map: A dict mapping data names to data nodes. + :return: A dict of potential couplings. + """ + potential_couplings: list[dict] = [] + # An exchange is a dict "from, to, data, type, optional[data-type], from_patch, to_patch" + for exchange in self.topology["exchanges"]: + from_participant: n.ParticipantNode = participant_map[exchange["from"]] + to_participant: n.ParticipantNode = participant_map[exchange["to"]] + data: n.DataNode = data_map[frozenset(exchange.items())] + + if any(data.name.lower().__contains__(extensive_data) for extensive_data in helper.EXTENSIVE_DATA): + data_label: str = "extensive" + elif any(data.name.lower().__contains__(intensive_data) for intensive_data in helper.INTENSIVE_DATA): + data_label: str = "intensive" + else: + data_label: str = helper.DEFAULT_DATA_KIND + + from_mesh: n.MeshNode = mesh_map[(from_participant, to_participant, data_label)] + to_mesh: n.MeshNode = mesh_map[(to_participant, from_participant, data_label)] + + # Check type of mapping to determine which mesh is exchanged + if mapping_map[(from_mesh, to_mesh)].direction == e.Direction.WRITE: + # In a write-mapping, the exchanged mesh is the "to"-mesh + exchange_node: n.ExchangeNode = n.ExchangeNode(coupling_scheme=None, data=data, mesh=to_mesh, + from_participant=from_participant, + to_participant=to_participant) + logger.debug(f"Created exchange from {from_participant.name} to {to_participant.name} " + f"for data {data.name} on mesh {to_mesh.name}.") + else: + # In a read-mapping, the exchanged mesh is the "from"-mesh + exchange_node: n.ExchangeNode = n.ExchangeNode(coupling_scheme=None, data=data, mesh=from_mesh, + from_participant=from_participant, + to_participant=to_participant) + logger.debug(f"Created exchange from {from_participant.name} to {to_participant.name} " + f"for data {data.name} on mesh {from_mesh.name}.") + # Either strong or weak + exchange_type: str = exchange["type"] + potential_couplings.append( + {"exchange": exchange_node, "from": from_participant, "to": to_participant, "type": exchange_type}) + + return potential_couplings + + def _initialize_mappings(self, participant_map: dict[str, n.ParticipantNode], + mesh_map: dict[tuple[n.ParticipantNode, n.ParticipantNode, str], n.MeshNode], + data_map: dict[frozenset, n.DataNode]) -> dict[ + tuple[n.MeshNode, n.MeshNode], n.MappingNode]: + """ + Initialize all mappings. A mapping is needed between two participants if they exchange data over their meshes. + For each pair of sender-mesh, receiver-mesh, a separate mapping is needed. + The data (extensive or intensive) that is exchanged determines the type of mapping (write-conservative or read-consistent-mapping). + :param participant_map: A dict mapping participant names to participant nodes. + :param mesh_map: A dict mapping pairs of participants and "extensive/intensive" to mesh nodes. + :param data_map: A dict mapping data names to data nodes. + :return: A dict mapping (from-mesh, to-mesh) to mapping nodes. + """ + mapping_map: dict[tuple[n.MeshNode, n.MeshNode], n.MappingNode] = {} + # Check for each exchange whether it already has a mapping and if not, create one + for exchange in self.topology["exchanges"]: + from_participant: n.ParticipantNode = participant_map[exchange["from"]] + to_participant: n.ParticipantNode = participant_map[exchange["to"]] + data: n.DataNode = data_map[frozenset(exchange.items())] + + if any(data.name.lower().__contains__(extensive_data) for extensive_data in helper.EXTENSIVE_DATA): + data_label: str = "extensive" + elif any(data.name.lower().__contains__(intensive_data) for intensive_data in helper.INTENSIVE_DATA): + data_label: str = "intensive" + else: + logger.warning(f"Data \"{data.name}\" is neither extensive nor intensive. Choosing default " + f"{helper.DEFAULT_DATA_KIND} with corresponding {helper.DEFAULT_MAPPING_KIND}-mapping.") + data_label: str = helper.DEFAULT_DATA_KIND + + from_mesh: n.MeshNode = mesh_map[(from_participant, to_participant, data_label)] + to_mesh: n.MeshNode = mesh_map[(to_participant, from_participant, data_label)] + + if data not in from_mesh.use_data: + logger.debug(f"Adding use-data {data.name} to mesh {from_mesh.name}.") + from_mesh.use_data.append(data) + if data not in to_mesh.use_data: + logger.debug(f"Adding use-data {data.name} to mesh {to_mesh.name}.") + to_mesh.use_data.append(data) + + # Extensive data needs a conservative mapping, + # so create a write-conservative mapping to allow for parallel participants + if data_label == "extensive": + logger.debug(f"Data {data.name} is extensive. Creating write-conservative mapping.") + # If no mapping between from-mesh and to-mesh exists, create one + if (from_mesh, to_mesh) not in mapping_map: + logger.debug( + f"No mapping between {from_mesh.name} and {to_mesh.name} exists. Creating new mapping.") + self._create_write_mapping(from_participant, to_participant, from_mesh, to_mesh, mapping_map) + + # Intensive data needs a consistent mapping, + # so create a read-consistent mapping to allow for parallel participants + else: + logger.debug(f"Data {data.name} is intensive. Creating read-consistent mapping.") + if (from_mesh, to_mesh) not in mapping_map: + logger.debug( + f"No mapping between {from_mesh.name} and {to_mesh.name} exists. Creating new mapping.") + self._create_read_mapping(from_participant, to_participant, from_mesh, to_mesh, mapping_map) + + # If a mapping already exists, then the participants already receive the corresponding meshes. + # Regardless of whether a mapping already exists, write- and read-data tags need to be added. + write_data: n.WriteDataNode = n.WriteDataNode(participant=from_participant, data=data, mesh=from_mesh) + if not self._contains_write_data(write_data, from_participant.write_data): + logger.debug(f"Adding write-data {data.name} to participant {from_participant.name}.") + from_participant.write_data.append(write_data) + + read_data: n.ReadDataNode = n.ReadDataNode(participant=to_participant, data=data, mesh=to_mesh) + if not self._contains_read_data(read_data, to_participant.read_data): + logger.debug(f"Adding read-data {data.name} to participant {to_participant.name}.") + to_participant.read_data.append(read_data) + + return mapping_map + + def _create_write_mapping(self, from_participant: n.ParticipantNode, to_participant: n.ParticipantNode, + from_mesh: n.MeshNode, to_mesh: n.MeshNode, + mapping_map: dict[tuple[n.MeshNode, n.MeshNode], n.MappingNode]) -> None: + """ + Create a write-mapping between the given meshes. + A write-mapping is located at the from-participant, who writes to their own mesh, + receiving the to-mesh from the to-participant. + :param from_participant: The participant who writes to the from-mesh and specifies the mapping. + :param to_participant: The participant who sends their mesh to the from-participant. + :param from_mesh: The mesh the from-participant writes to. + :param to_mesh: The mesh the from-participant receives from the to-participant and is mapped to. + :param mapping_map: A dict mapping (a-mesh, b-mesh) to mapping nodes. + """ + # A write-mapping is on the from-participant, writing to his own mesh, receiving the to-mesh from the to-participant + mapping: n.MappingNode = n.MappingNode(parent_participant=from_participant, + direction=e.Direction.WRITE, + from_mesh=from_mesh, + to_mesh=to_mesh, + just_in_time=False, + constraint=e.MappingConstraint.CONSERVATIVE, + method=helper.DEFAULT_MAPPING_METHOD) + mapping_map[(from_mesh, to_mesh)] = mapping + from_participant.mappings.append(mapping) + # In a write-mapping, the writer has to receive the to-mesh to be able to map to it + receive_mesh: n.ReceiveMeshNode = n.ReceiveMeshNode(participant=to_participant, + mesh=to_mesh, + from_participant=from_participant, + api_access=False) + from_participant.receive_meshes.append(receive_mesh) + logger.debug(f"Created write-mapping between {from_mesh.name} and {to_mesh.name} " + f"for participant {from_participant.name}.") + + def _create_read_mapping(self, from_participant: n.ParticipantNode, to_participant: n.ParticipantNode, + from_mesh: n.MeshNode, to_mesh: n.MeshNode, + mapping_map: dict[tuple[n.MeshNode, n.MeshNode], n.MappingNode]) -> None: + """ + Creates a read-mapping between the given meshes. + A read-mapping is located at the to-participant, who reads from their own mesh, + receiving the from-mesh from the from-participant. + :param from_participant: The participant who sends their mesh to the to-participant. + :param to_participant: The participant who specifies the mapping and reads from their own mesh. + :param from_mesh: The mesh that is mapped from the from-participant to the to-participant. + :param to_mesh: The mesh the to-participant reads from. + :param mapping_map: A dict mapping (a-mesh, b-mesh) to mapping nodes. + """ + # A read-mapping is on the to-participant, reading from his own mesh, receiving the from-mesh from the from-participant + mapping: n.MappingNode = n.MappingNode(parent_participant=to_participant, + direction=e.Direction.READ, + from_mesh=from_mesh, + to_mesh=to_mesh, + just_in_time=False, + constraint=e.MappingConstraint.CONSISTENT, + method=helper.DEFAULT_MAPPING_METHOD) + mapping_map[(from_mesh, to_mesh)] = mapping + to_participant.mappings.append(mapping) + # In a read-mapping, the reader has to receive the from-mesh to be able to map from it + receive_mesh: n.ReceiveMeshNode = n.ReceiveMeshNode(participant=to_participant, + mesh=from_mesh, + from_participant=from_participant, + api_access=False) + to_participant.receive_meshes.append(receive_mesh) + logger.debug(f"Created read-mapping between {from_mesh.name} and {to_mesh.name} " + f"for participant {to_participant.name}.") + + def _initialize_meshes(self, participant_patch_map: dict[tuple[n.ParticipantNode, n.ParticipantNode], + dict[str, set[str]]]) -> dict[tuple[n.ParticipantNode, n.ParticipantNode, str], n.MeshNode]: + """ + Initialize meshes based on the communication of participants and the involved patches. + First, communication between participants is counted to be able to determine the number of meshes needed and + thus allow for better naming. + Next, for each communication pair, mesh(es) are created based on the involved patches. + :param participant_patch_map: A dict mapping (a-participant, b-participant) to a dict of extensive and intensive patches. + :return: A dict mapping (a-participant, b-participant, extensive/intensive) to mesh nodes. + """ + # Count the frequency of a participant appearing in communications to determine the number of meshes to create + frequency_map: dict[n.ParticipantNode, int] = {p1: 0 for p1, p2 in participant_patch_map} + for (from_participant, to_participant) in participant_patch_map: + # Since the map is symmetric, we only need to increment "from" + frequency_map[from_participant] += 1 + # Create a dict mapping participant communication and data label to meshes + participant_label_mesh_map: dict[tuple[n.ParticipantNode, n.ParticipantNode, str], n.MeshNode] = {} + for (from_participant, to_participant) in participant_patch_map: + # Check how many patches the from-participant uses in communication with the to-participant + # Since the map is symmetric, it suffices to check the patches of "from" + extensives: int = len(participant_patch_map[(from_participant, to_participant)]["extensive"]) + intensives: int = len(participant_patch_map[(from_participant, to_participant)]["intensive"]) + participant_dim: int = self.participant_dimensionality[from_participant] + # Check if the communication uses both intensive and extensive data + if extensives > 0 and intensives > 0: + # Check if the from-participant communicates with more than one participant + if frequency_map[from_participant] > 1: + # In this case, we name meshes "FROM-TO-Extensive/Intensive-Mesh" + mesh_name: str = f"{from_participant.name.capitalize()}-{to_participant.name.capitalize()}" + extensive_mesh: n.MeshNode = n.MeshNode(name=mesh_name + "-Extensive-Mesh", use_data=[], + dimensions=participant_dim) + intensive_mesh: n.MeshNode = n.MeshNode(name=mesh_name + "-Intensive-Mesh", use_data=[], + dimensions=participant_dim) + + else: + # The participant communicates only with one other participant. + # The mesh is named "FROM-Extensive/Intensive-Mesh" + mesh_name: str = f"{from_participant.name.capitalize()}" + extensive_mesh: n.MeshNode = n.MeshNode(name=mesh_name + "-Extensive-Mesh", use_data=[], + dimensions=participant_dim) + intensive_mesh: n.MeshNode = n.MeshNode(name=mesh_name + "-Intensive-Mesh", use_data=[], + dimensions=participant_dim) + # Add meshes to the respective containers + from_participant.provide_meshes.append(extensive_mesh) + from_participant.provide_meshes.append(intensive_mesh) + self.meshes.append(extensive_mesh) + self.meshes.append(intensive_mesh) + participant_label_mesh_map[(from_participant, to_participant, "extensive")] = extensive_mesh + participant_label_mesh_map[(from_participant, to_participant, "intensive")] = intensive_mesh + logger.debug(f"Created extensive and intensive mesh for communication between " + f"{from_participant.name} and {to_participant.name}.") + # The participant pair only communicates one kind of data + else: + # Check if the from-participant communicates with more than one participant + if frequency_map[from_participant] > 1: + # In this case, we name meshes "FROM-TO-Mesh" + mesh_name: str = f"{from_participant.name.capitalize()}-{to_participant.name.capitalize()}" + mesh: n.MeshNode = n.MeshNode(name=mesh_name + "-Mesh", use_data=[], + dimensions=participant_dim) + else: + # The participant communicates only with one other participant. + # The mesh is named "FROM-Mesh" + mesh_name: str = f"{from_participant.name.capitalize()}" + mesh: n.MeshNode = n.MeshNode(name=mesh_name + "-Mesh", use_data=[], dimensions=participant_dim) + # Add the mesh to the respective container + from_participant.provide_meshes.append(mesh) + self.meshes.append(mesh) + # Determine the kind of mesh this is (extensive or intensive) + label: str = "extensive" if extensives > 0 else "intensive" + participant_label_mesh_map[(from_participant, to_participant, label)] = mesh + logger.debug(f"Created mesh for communication between {from_participant.name} " + f"and {to_participant.name}.") + + return participant_label_mesh_map + + def _participant_communication_map(self, participant_map: dict[str, n.ParticipantNode]) -> dict[ + n.ParticipantNode, set[n.ParticipantNode]]: + """ + Create a dict mapping participants to their "neighbors", i.e., other participants that exchange data with them. + :param participant_map: A dict mapping participant names to participant nodes. + :return: A dict mapping participants to their neighbors. + """ + communication_map: dict[n.ParticipantNode, set[n.ParticipantNode]] = {} + for exchange in self.topology["exchanges"]: + from_participant: n.ParticipantNode = participant_map[exchange["from"]] + to_participant: n.ParticipantNode = participant_map[exchange["to"]] + communication_map[from_participant].add(to_participant) + communication_map[to_participant].add(from_participant) + logger.debug(f"Added entries for communication between {from_participant.name} and {to_participant.name}.") + return communication_map + + def _initialize_participants(self) -> dict[str, n.ParticipantNode]: + """ + Initialize participant nodes and their dimensionality from the topology dict. + Return a dictionary mapping participant names to participant nodes. + :return: A dict[str, ParticipantNode] + """ + participant_map: dict[str, n.ParticipantNode] = {} + for participant in self.topology["participants"]: + # The value is a dict that contains "name, solver, optional[dimensionality]" + parzival: n.ParticipantNode = n.ParticipantNode(name=participant["name"].capitalize()) + participant_map[participant["name"]] = parzival + self.participants.append(parzival) + dim: int = participant.get("dimensionality", helper.DEFAULT_PARTICIPANT_DIMENSIONALITY) + if dim < 2 or dim > 3: + logger.warning(f"Dimensionality of participant {parzival.name} is defined as {dim}. " + f"Setting it to {helper.DEFAULT_PARTICIPANT_DIMENSIONALITY}.") + dim = helper.DEFAULT_PARTICIPANT_DIMENSIONALITY + self.participant_dimensionality[parzival] = dim + logger.debug(f"Initialized participant {parzival.name} with dimensionality {dim}.") + return participant_map + + def _patch_preprocessing(self, participant_map: dict[str, n.ParticipantNode]): + """ + Preprocess patch labels in the topology. + This is done by first assigning a label ("extensive" or "intensive") to each patch, + then splitting them up if necessary; i.e., if they have both labels. + Finally, a map (participant_1, participant_2) -> {extensive: {i_j}, intensive: {l_k}} is created, + where an entry means that p1 uses extensive patches i_j and intensive patches l_k for communication with p2. + :param participant_map: A dict mapping participant names to participant nodes. + :return: A dict mapping participant pairs to patches used in communication between them. + """ + participant_patch_label_map: dict[tuple[n.ParticipantNode, str], set[str]] = {} + for exchange in self.topology["exchanges"]: + from_participant: n.ParticipantNode = participant_map[exchange["from"]] + to_participant: n.ParticipantNode = participant_map[exchange["to"]] + from_patch: str = exchange["from-patch"] + to_patch: str = exchange["to-patch"] + data_name: str = exchange["data"] + # Get data label + if any(data_name.lower().__contains__(extensive_data) for extensive_data in helper.EXTENSIVE_DATA): + data_label: str = "extensive" + elif any(data_name.lower().__contains__(intensive_data) for intensive_data in helper.INTENSIVE_DATA): + data_label: str = "intensive" + else: + data_label: str = "intensive" + # Create new entries if necessary + if (from_participant, from_patch) not in participant_patch_label_map: + participant_patch_label_map[(from_participant, from_patch)] = set() + if (to_participant, to_patch) not in participant_patch_label_map: + participant_patch_label_map[(to_participant, to_patch)] = set() + # Add the label to the patch + participant_patch_label_map[(from_participant, from_patch)].add(data_label) + participant_patch_label_map[(to_participant, to_patch)].add(data_label) + + # Map split up patches to new patches + participant_patch_new_patch_map: dict[tuple[n.ParticipantNode, str], dict[str, str]] = {} + # Now, check if a patch has more than one label (i.e., both intensive and extensive) + for exchange in self.topology["exchanges"]: + from_participant: n.ParticipantNode = participant_map[exchange["from"]] + to_participant: n.ParticipantNode = participant_map[exchange["to"]] + from_patch: str = exchange["from-patch"] + to_patch: str = exchange["to-patch"] + data_name: str = exchange["data"] + if any(data_name.lower().__contains__(extensive_data) for extensive_data in helper.EXTENSIVE_DATA): + data_label: str = "extensive" + elif any(data_name.lower().__contains__(intensive_data) for intensive_data in helper.INTENSIVE_DATA): + data_label: str = "intensive" + else: + data_label: str = "intensive" + + # Check if this patch has been split up before + if (from_participant, from_patch) in participant_patch_new_patch_map: + # If so, then we just need to assign the new label to the patch + exchange["from-patch"] = participant_patch_new_patch_map[(from_participant, from_patch)][data_label] + # Else, if this patch has not been split, check if it needs to be split up + elif len(participant_patch_label_map[(from_participant, from_patch)]) > 1: + extensive_patch: str = f"{from_patch}-extensive" + intensive_patch: str = f"{from_patch}-intensive" + participant_patch_new_patch_map[(from_participant, from_patch)] = {"extensive": extensive_patch, + "intensive": intensive_patch} + logger.warning(f"Split patch \"{from_patch}\" of participant {from_participant.name} into " + f"extensive patch \"{extensive_patch}\" and intensive patch \"{intensive_patch}\".") + # Assign new patch name to the topology + exchange["from-patch"] = extensive_patch if data_label == "extensive" else intensive_patch + # If the patch has never been split and is not supposed to be split, nothing needs to be done + + # Check if this patch has been split up before + if (to_participant, to_patch) in participant_patch_new_patch_map: + # If so, then we just need to assign the new label to the patch + exchange["to-patch"] = participant_patch_new_patch_map[(to_participant, to_patch)][data_label] + # Else, if this patch has not been split, check if it needs to be split up + elif len(participant_patch_label_map[(to_participant, to_patch)]) > 1: + extensive_patch: str = f"{to_patch}-extensive" + intensive_patch: str = f"{to_patch}-intensive" + participant_patch_new_patch_map[(to_participant, to_patch)] = {"extensive": extensive_patch, + "intensive": intensive_patch} + logger.warning(f"Split patch \"{to_patch}\" of participant {to_participant.name} into " + f"extensive patch \"{extensive_patch}\" and intensive patch \"{intensive_patch}\".") + # Assign new patch name to the topology + exchange["to-patch"] = extensive_patch if data_label == "extensive" else intensive_patch + # If the patch has never been split and is not supposed to be split, nothing needs to be done + + # Now create a map for which participant pair uses which patch + # This means that for (p_1,p_2) -> {i_1,...,i_n}, p_1 uses i_j in communication with p_2; p_2 might use other patches + participant_patch_map: dict[tuple[n.ParticipantNode, n.ParticipantNode], dict[str, set[str]]] = {} + for exchange in self.topology["exchanges"]: + from_participant: n.ParticipantNode = participant_map[exchange["from"]] + to_participant: n.ParticipantNode = participant_map[exchange["to"]] + from_patch: str = exchange["from-patch"] + to_patch: str = exchange["to-patch"] + data_name: str = exchange["data"] + if any(data_name.lower().__contains__(extensive_data) for extensive_data in helper.EXTENSIVE_DATA): + data_label: str = "extensive" + elif any(data_name.lower().__contains__(intensive_data) for intensive_data in helper.INTENSIVE_DATA): + data_label: str = "intensive" + else: + data_label: str = "intensive" + # Initialize entries if necessary + if (from_participant, to_participant) not in participant_patch_map: + participant_patch_map[(from_participant, to_participant)] = {"extensive": set(), "intensive": set()} + # If this direction does not yet exist, the other direction is also not initialized yet + participant_patch_map[(to_participant, from_participant)] = {"extensive": set(), "intensive": set()} + # From-participant uses from-patch in communication with to-participant + participant_patch_map[(from_participant, to_participant)][data_label].add(from_patch) + # To-participant uses to-patch in communication with from-participant + participant_patch_map[(to_participant, from_participant)][data_label].add(to_patch) + + return participant_patch_map + + def _participant_patch_map(self, participant_map: dict[str, n.ParticipantNode]) -> dict[ + n.ParticipantNode, set[str]]: + """ + Create a dictionary mapping each participant to a list of patches it uses. + This is done by iterating over each exchange and adding the involved patches to the involved participants. + This assumes self.participants and self.topology are already initialized. + :param participant_map: A dict mapping participant names to participant nodes. + :return: A dictionary dict[ParticipantNode, set[str]] + """ + patch_map: dict[n.ParticipantNode, set[str]] = {p: set() for p in self.participants} + for exchange in self.topology["exchanges"]: + from_participant: n.ParticipantNode = participant_map[exchange["from"]] + patch_map[from_participant].add(exchange["from-patch"]) + + to_participant: n.ParticipantNode = participant_map[exchange["to"]] + patch_map[to_participant].add(exchange["to-patch"]) + logger.debug(f"Added entries for participant {from_participant.name} and patch {exchange['from-patch']}; " + f"as well as for participant {to_participant.name} and patch {exchange['to-patch']}.") + return patch_map + + def _determine_control_participant(self, participants: list[n.ParticipantNode], + bidirectional_strong_couplings: list[dict]) -> n.ParticipantNode: + """ + Determine the control participant for a multi-coupling scheme + based on the frequency of each participant in bidirectional strong couplings. + :param participants: The participants in the multi-coupling scheme. + :param bidirectional_strong_couplings: The bidirectional strong couplings of the multi-coupling scheme. + :return: The control participant as a ParticipantNode. + """ + # Count how often participants appears in bidirectional couplings to determine the control participant + frequency_map: dict[n.ParticipantNode, int] = {participant: 0 for participant in participants} + for coupling in bidirectional_strong_couplings: + frequency_map[coupling["from"]] += 1 + frequency_map[coupling["to"]] += 1 + # On a tie, it will choose the first participant in the list + control_participant: n.ParticipantNode = max(frequency_map, key=frequency_map.get) + logger.debug(f"Control participant determined to be {control_participant.name} " + f"with frequency {frequency_map[control_participant]}.") + return control_participant + + def _initialize_data(self, participant_map: dict[str, n.ParticipantNode]) -> dict[frozenset, n.DataNode]: + """ + Initialize data nodes based on the participants and the exchanges of the topology. + If different participants try to exchange the same data, the data-name will be "uniquified". + :param participant_map: A dict mapping participant names to participant nodes. + :return: A dict mapping exchanges to data nodes. + """ + # Map exchanges to data nodes. Use a frozenset since it is hashable and can be used as a key in a dict + exchange_data_map: dict[frozenset, n.DataNode] = {} + # Map participant and their defined data to new data nodes that were created + participant_data_new_data_map: dict[tuple[n.ParticipantNode, str], n.DataNode] = {} + # List of known data + known_data: list[str] = [] + for exchange in self.topology["exchanges"]: + participant: n.ParticipantNode = participant_map[exchange["from"]] + data_name: str = exchange["data"] + + # Check if this data is known + if data_name in known_data: + # Check if the same participant has already defined this data + if (participant, data_name) in participant_data_new_data_map: + # The same participant has already defined this data, so we use the existing data node + data_node: n.DataNode = participant_data_new_data_map[(participant, data_name)] + exchange_data_map[frozenset(exchange.items())] = data_node + # Another participant has defined this data. It needs to be uniquified + else: + uniquifier: str = random.choice(helper.DATA_UNIQUIFIERS) + helper.DATA_UNIQUIFIERS.remove(uniquifier) + new_data_name = uniquifier.capitalize() + "-" + data_name.capitalize() + data_type: e.DataType = exchange.get("data-type") + data_type = e.DataType(data_type) if data_type else helper.DEFAULT_DATA_TYPE + data_node: n.DataNode = n.DataNode(name=new_data_name, data_type=data_type) + self.data.append(data_node) + known_data.append(new_data_name) + exchange_data_map[frozenset(exchange.items())] = data_node + # Important: Map from old data_name, so that future exchanges recognize the data + participant_data_new_data_map[(participant, data_name)] = data_node + logger.warning(f"Uniquified data name from \"{exchange['data']}\" to \"{new_data_name}\" in the " + f"exchange from participant {participant.name} and patch {exchange['to-patch']} to " + f"participant {exchange['to']} and patch {exchange['to-patch']}.") + else: + # This data has never been observed before, so create a new data node + data_type: e.DataType = exchange.get("data-type") + data_type = e.DataType(data_type) if data_type else helper.DEFAULT_DATA_TYPE + data_node: n.DataNode = n.DataNode(name=data_name, data_type=data_type) + self.data.append(data_node) + known_data.append(data_name) + exchange_data_map[frozenset(exchange.items())] = data_node + participant_data_new_data_map[(participant, data_name)] = data_node + logger.debug(f"Created data node {data_node.name} for participant {participant.name} and patch " + f"{exchange['from-patch']}.") + + return exchange_data_map + + def _contains_write_data(self, write_data: n.WriteDataNode, suspect_list: list[n.WriteDataNode]) -> bool: + """ + Check if the given list of write-data nodes already contains the given write-data node. + :param write_data: The write-data node to check for. + :param suspect_list: The list of write-data nodes to check in. + :return: True, if an equivalent write-data node already exists in the list. False otherwise. + """ + for suspect in suspect_list: + if suspect.data == write_data.data and suspect.mesh == write_data.mesh and suspect.participant == write_data.participant: + logger.debug(f"Found write-data node with participant {suspect.participant.name}, " + f"mesh {suspect.mesh.name} and data {suspect.data.name}.") + return True + return False + + def _contains_read_data(self, read_data: n.ReadDataNode, suspect_list: list[n.ReadDataNode]) -> bool: + """ + Check if the given list of read-data nodes already contains the given write-data node. + :param read_data: The read-data node to check for. + :param suspect_list: The list of read-data nodes to check in. + :return: True, if an equivalent read-data node already exists in the list. False otherwise. + """ + for suspect in suspect_list: + if suspect.data == read_data.data and suspect.mesh == read_data.mesh and suspect.participant == read_data.participant: + logger.debug(f"Found read-data node with participant {suspect.participant.name}, " + f"mesh {suspect.mesh.name} and data {suspect.data.name}.") + return True + return False From e531045af89546521d4042070ec7e5e553786059 Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 4 Jan 2026 16:08:51 +0100 Subject: [PATCH 009/131] Create helper.py Helper functions and values for the node creator --- precicecasegenerate/config_creator/helper.py | 32 ++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 precicecasegenerate/config_creator/helper.py diff --git a/precicecasegenerate/config_creator/helper.py b/precicecasegenerate/config_creator/helper.py new file mode 100644 index 0000000..730a7b8 --- /dev/null +++ b/precicecasegenerate/config_creator/helper.py @@ -0,0 +1,32 @@ +from precice_config_graph import enums as e + +# Set defaults here to be able to change them easily +DEFAULT_DATA_TYPE: e.DataType = e.DataType.SCALAR +DEFAULT_PARTICIPANT_DIMENSIONALITY: int = 3 +DEFAULT_MAPPING_METHOD: e.MappingMethod = e.MappingMethod.NEAREST_NEIGHBOR +DEFAULT_ACCELERATION_TYPE: e.AccelerationType = e.AccelerationType.IQN_ILS +DEFAULT_M2N_TYPE: e.M2NType = e.M2NType.SOCKETS +DEFAULT_EXPLICIT_COUPLING_TYPE: e.CouplingSchemeType = e.CouplingSchemeType.PARALLEL_EXPLICIT +DEFAULT_IMPLICIT_COUPLING_TYPE: e.CouplingSchemeType = e.CouplingSchemeType.PARALLEL_IMPLICIT +DEFAULT_CONVERGENCE_MEASURE_TYPE: e.ConvergenceMeasureType = e.ConvergenceMeasureType.RELATIVE +DEFAULT_DATA_KIND: str = "intensive" +DEFAULT_MAPPING_KIND: str = "read" + +EXTENSIVE_DATA: list[str] = ["force"] +INTENSIVE_DATA: list[str] = ["temperature", "pressure", "velocity", "heat-flux", "displacement"] + +# To make duplicate data names unique +DATA_UNIQUIFIERS: list[str] = [ + "magnificent", + "grand", + "wonderful", + "suspicious", + "mischievous", + "clever", + "pretty", + "scary", + "adventurous", + "alien", + "humungous", + "informative", +] From 2800eef20602cfae9ad29c8acf11ad6233b0d568 Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 4 Jan 2026 16:09:26 +0100 Subject: [PATCH 010/131] Update cli.py Updated the main to reflect the project structure and functionality --- precicecasegenerate/cli.py | 110 ++++++++++++++++++------------------- 1 file changed, 53 insertions(+), 57 deletions(-) diff --git a/precicecasegenerate/cli.py b/precicecasegenerate/cli.py index 3db6b54..897bd6f 100644 --- a/precicecasegenerate/cli.py +++ b/precicecasegenerate/cli.py @@ -1,73 +1,69 @@ -from .generation_utils.file_generator import FileGenerator -import argparse +import os import sys -from pathlib import Path +import argparse +import shutil +from precicecasegenerate.logging_setup import setup_logging +from precicecasegenerate.config_creator.node_creator import NodeCreator +from precicecasegenerate.config_creator.config_creator import ConfigCreator +from precicecasegenerate.input_handler.topology_reader import TopologyReader -def makeGenerateParser(add_help: bool = True): - parser = argparse.ArgumentParser( - description="Initialize a preCICE case given a topology file", - add_help=add_help, - ) - parser.add_argument( - "-f", - "--input-file", - type=Path, - default=Path.cwd() / "topology.yaml", - help="Input topology.yaml file. Defaults to './topology.yaml'.", - ) - parser.add_argument( - "-o", - "--output-path", - type=Path, - help="Output path for the generated folder. Defaults to './_generated'.", - default=Path.cwd() / "_generated", - ) - parser.add_argument( - "-v", - "--verbose", - action="store_true", - help="Enable verbose logging output.", - ) - parser.add_argument( - "--validate-topology", - action="store_true", - required=False, - default=True, - help="Whether to validate the input topology.yaml file against the preCICE topology schema.", - ) - return parser +def main(): + logger = setup_logging() + logger.info("Program started.") -def runGenerate(ns): - try: - file_generator = FileGenerator(ns.input_file, ns.output_path) + parser = argparse.ArgumentParser() - # Clear any previous log state - file_generator.logger.clear_log_state() + parser.add_argument( + "file_path", + type=str, + help="Path to the input YAML file." + ) + logger.debug("Parsing arguments.") + args = parser.parse_args() + logger.debug(f"Arguments parsed. Arguments: {vars(args)}. Checking if given file exists.") - # Generate precice-config.xml, README.md, clean.sh - file_generator.generate_level_0() - # Generate configuration for the solvers - file_generator.generate_level_1() + # Check if the file exists + if not os.path.isfile(args.file_path): + logger.critical(f"File {os.path.abspath(args.file_path)} does not exist. Aborting program.") + sys.exit(1) + logger.debug("File exists.") - # Format the generated preCICE configuration - file_generator.format_precice_config() + # Check if the file is a YAML file + _, ext = os.path.splitext(args.file_path) + if ext.lower() in [".yaml", ".yml"]: + logger.debug("File is a YAML file.") + else: + logger.critical(f"File {os.path.abspath(args.file_path)} is not a YAML file. Aborting program.") - file_generator.handle_output(ns) + # Create a new directory for the generated files + path_to_generated: str = "_generated/" + logger.debug(f"Resetting generated files at {os.path.abspath(path_to_generated)}.") + # Ignore errors if the directory does not exist + shutil.rmtree(path_to_generated, ignore_errors=True) + os.makedirs(path_to_generated) - file_generator.validate_topology(ns) + logger.debug("Starting topology reader.") + topology_reader: TopologyReader = TopologyReader(args.file_path) + topology: dict = topology_reader.get_topology() + logger.debug("Topology reader finished.") - return 0 - except Exception as e: - print(e, file=sys.stderr) - return 1 + logger.debug("Starting node creator.") + node_creator: NodeCreator = NodeCreator(topology) + nodes: dict = node_creator.get_nodes() + logger.debug("Node creator finished.") + logger.debug("Starting config creator.") + config_creator: ConfigCreator = ConfigCreator(nodes) + config_str: str = config_creator.create_config_str() + config_creator.create_config_file(config_str, directory=path_to_generated, filename="precice-config.xml") + logger.debug("Config creator finished.") -def main(): - args = makeGenerateParser().parse_args() - return runGenerate(args) + # TODO other generation steps + logger.info("Program finished.") + sys.exit(0) if __name__ == "__main__": - sys.exit(main()) + main() From 1a0351f33ac4154b02eb545de329bec0047473e9 Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 4 Jan 2026 16:25:24 +0100 Subject: [PATCH 011/131] Update helper.py Moved displacement to "extensive-data" --- precicecasegenerate/config_creator/helper.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/precicecasegenerate/config_creator/helper.py b/precicecasegenerate/config_creator/helper.py index 730a7b8..2419b0e 100644 --- a/precicecasegenerate/config_creator/helper.py +++ b/precicecasegenerate/config_creator/helper.py @@ -12,8 +12,8 @@ DEFAULT_DATA_KIND: str = "intensive" DEFAULT_MAPPING_KIND: str = "read" -EXTENSIVE_DATA: list[str] = ["force"] -INTENSIVE_DATA: list[str] = ["temperature", "pressure", "velocity", "heat-flux", "displacement"] +EXTENSIVE_DATA: list[str] = ["force", "displacement"] +INTENSIVE_DATA: list[str] = ["temperature", "pressure", "velocity", "heat-flux", ] # To make duplicate data names unique DATA_UNIQUIFIERS: list[str] = [ From 63b6286da7c92e38e100ac2ff5b4fc6096115972 Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 4 Jan 2026 16:25:55 +0100 Subject: [PATCH 012/131] Created new examples They contain the precice beginner tutorials and a more complex multi coupling --- new_examples/multi-coupling/multi.yaml | 56 +++++++ .../multi-coupling/precice-config.xml | 144 ++++++++++++++++++ new_examples/tutorial1/precice-config.xml | 44 ++++++ new_examples/tutorial1/tutorial1.yaml | 15 ++ new_examples/tutorial2/precice-config.xml | 71 +++++++++ new_examples/tutorial2/tutorial2.yaml | 25 +++ new_examples/tutorial3/precice-config.xml | 63 ++++++++ new_examples/tutorial3/tutorial3.yaml | 22 +++ new_examples/tutorial4/precice-config.xml | 44 ++++++ new_examples/tutorial4/tutorial4.yaml | 15 ++ 10 files changed, 499 insertions(+) create mode 100644 new_examples/multi-coupling/multi.yaml create mode 100644 new_examples/multi-coupling/precice-config.xml create mode 100644 new_examples/tutorial1/precice-config.xml create mode 100644 new_examples/tutorial1/tutorial1.yaml create mode 100644 new_examples/tutorial2/precice-config.xml create mode 100644 new_examples/tutorial2/tutorial2.yaml create mode 100644 new_examples/tutorial3/precice-config.xml create mode 100644 new_examples/tutorial3/tutorial3.yaml create mode 100644 new_examples/tutorial4/precice-config.xml create mode 100644 new_examples/tutorial4/tutorial4.yaml diff --git a/new_examples/multi-coupling/multi.yaml b/new_examples/multi-coupling/multi.yaml new file mode 100644 index 0000000..607764b --- /dev/null +++ b/new_examples/multi-coupling/multi.yaml @@ -0,0 +1,56 @@ +participants: + - name: NASTIN + solver: ASolver + dimensionality: 3 + - name: SOLIDZ1 + solver: SolVer + dimensionality: 3 + - name: SOLIDZ2 + solver: SolVer + dimensionality: 3 + - name: SOLIDZ3 + solver: SolVer + dimensionality: 3 +exchanges: + - from: NASTIN + to: SOLIDZ1 + from-patch: interface + to-patch: interface + data: Forces1 + type: strong + data-type: vector + - from: NASTIN + to: SOLIDZ2 + from-patch: interface + to-patch: interface + data: Forces2 + type: strong + data-type: vector + - from: NASTIN + to: SOLIDZ3 + from-patch: interface + to-patch: interface + data: Forces3 + type: strong + data-type: vector + - from: SOLIDZ1 + to: NASTIN + from-patch: interface + to-patch: interface + data: Displacements1 + type: strong + data-type: vector + - from: SOLIDZ2 + to: NASTIN + from-patch: interface + to-patch: interface + data: Displacements2 + type: strong + data-type: vector + - from: SOLIDZ3 + to: NASTIN + from-patch: interface + to-patch: interface + data: Displacements3 + type: strong + data-type: vector diff --git a/new_examples/multi-coupling/precice-config.xml b/new_examples/multi-coupling/precice-config.xml new file mode 100644 index 0000000..409f3aa --- /dev/null +++ b/new_examples/multi-coupling/precice-config.xml @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/new_examples/tutorial1/precice-config.xml b/new_examples/tutorial1/precice-config.xml new file mode 100644 index 0000000..ed37c33 --- /dev/null +++ b/new_examples/tutorial1/precice-config.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/new_examples/tutorial1/tutorial1.yaml b/new_examples/tutorial1/tutorial1.yaml new file mode 100644 index 0000000..bd4a969 --- /dev/null +++ b/new_examples/tutorial1/tutorial1.yaml @@ -0,0 +1,15 @@ +participants: + - name: Generator + solver: FlexSolver2000 + dimensionality: 2 + - name: Propagator + solver: InvisSolve + dimensionality: 2 +exchanges: + - from: Generator + to: Propagator + from-patch: interface + to-patch: interface + data: Color + type: weak + data-type: scalar \ No newline at end of file diff --git a/new_examples/tutorial2/precice-config.xml b/new_examples/tutorial2/precice-config.xml new file mode 100644 index 0000000..21b4891 --- /dev/null +++ b/new_examples/tutorial2/precice-config.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/new_examples/tutorial2/tutorial2.yaml b/new_examples/tutorial2/tutorial2.yaml new file mode 100644 index 0000000..ae6370b --- /dev/null +++ b/new_examples/tutorial2/tutorial2.yaml @@ -0,0 +1,25 @@ +participants: + - name: Generator-Left + solver: FlexSolver2000 + dimensionality: 2 + - name: Generator-Right + solver: FlexSolver2000 + dimensionality: 2 + - name: Propagator + solver: InvisSolve + dimensionality: 2 +exchanges: + - from: Generator-Left + to: Propagator + from-patch: interface + to-patch: interface + data: Color + type: weak + data-type: scalar + - from: Generator-Right + to: Propagator + from-patch: interface + to-patch: interface + data: Color + type: weak + data-type: scalar \ No newline at end of file diff --git a/new_examples/tutorial3/precice-config.xml b/new_examples/tutorial3/precice-config.xml new file mode 100644 index 0000000..8971c6b --- /dev/null +++ b/new_examples/tutorial3/precice-config.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/new_examples/tutorial3/tutorial3.yaml b/new_examples/tutorial3/tutorial3.yaml new file mode 100644 index 0000000..6fe97ae --- /dev/null +++ b/new_examples/tutorial3/tutorial3.yaml @@ -0,0 +1,22 @@ +participants: + - name: Fluid + solver: OpenFOAM + dimensionality: 2 + - name: Solid + solver: Nutils + dimensionality: 2 +exchanges: + - from: Fluid + to: Solid + from-patch: interface + to-patch: interface + data: Temperature + type: strong + data-type: scalar + - from: Solid + to: Fluid + from-patch: interface + to-patch: interface + data: Heat-Flux + type: strong + data-type: scalar \ No newline at end of file diff --git a/new_examples/tutorial4/precice-config.xml b/new_examples/tutorial4/precice-config.xml new file mode 100644 index 0000000..3202678 --- /dev/null +++ b/new_examples/tutorial4/precice-config.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/new_examples/tutorial4/tutorial4.yaml b/new_examples/tutorial4/tutorial4.yaml new file mode 100644 index 0000000..52d0de4 --- /dev/null +++ b/new_examples/tutorial4/tutorial4.yaml @@ -0,0 +1,15 @@ +participants: + - name: A + solver: ASolver + dimensionality: 3 + - name: B + solver: BSolver + dimensionality: 3 +exchanges: + - from: A + to: B + data: Data + type: weak + data-type: scalar + from-patch: interface + to-patch: interface \ No newline at end of file From 7a74c24fdd946028f9538f1f0f46964e58ef54b9 Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 4 Jan 2026 19:52:11 +0100 Subject: [PATCH 013/131] Update node_creator.py Removed old TODOs --- .../config_creator/node_creator.py | 30 +------------------ 1 file changed, 1 insertion(+), 29 deletions(-) diff --git a/precicecasegenerate/config_creator/node_creator.py b/precicecasegenerate/config_creator/node_creator.py index c24520c..be13cbc 100644 --- a/precicecasegenerate/config_creator/node_creator.py +++ b/precicecasegenerate/config_creator/node_creator.py @@ -55,12 +55,6 @@ def _create_nodes(self) -> None: participant_patch_label_map: dict[tuple[n.ParticipantNode, n.ParticipantNode], dict[str, set[str]]] = ( self._patch_preprocessing(participant_map)) - # TODO If it is possible that the same patch can exchange multiple data, then we need to do something about that :| - # A dict mapping exchanges to patches would probably be needed. - # If it is not possible, then we still need that dict and make distinct patches out of one patch with multiple data. - # If it is possible, then we maybe need to differentiate between the case 2*intensive/extensive, and extensive+intensive. - # In the former case, the same patch should be fine. In the latter case, we would probably need to create a new patch. - # Initialize data from exchanges tag (defined implicitly) # This uses the topology dict as keys, so it needs to be done after the patch preprocessing. data_map: dict[frozenset, n.DataNode] = self._initialize_data(participant_map) @@ -71,8 +65,6 @@ def _create_nodes(self) -> None: participant_patch_label_map) logger.debug(f"Created {len(set(mesh_map.values()))} mesh nodes.") - # TODO update usage of mesh_map - # Initialize mappings from the exchanges tag (defined implicitly) mapping_map: dict[tuple[n.MeshNode, n.MeshNode], n.MappingNode] = self._initialize_mappings(participant_map, mesh_map, data_map) @@ -104,8 +96,6 @@ def _create_nodes(self) -> None: self._create_M2N() logger.debug(f"Created {len(self.m2ns)} M2N nodes.") - # TODO Finish up, i.e., add mising tags to nodes - def _create_M2N(self) -> None: """ Create M2N nodes based on the coupling-schemes. Each pair of participants only needs one M2N. @@ -193,8 +183,6 @@ def _create_strong_coupling_schemes(self, strong_couplings: list[dict], weak_cou # If so, add it to bidirectional_strong_couplings for coupling in strong_couplings: if frozenset((coupling["from"], coupling["to"])) in bidirectional_strong_coupling_participant_pairs: - # TODO can we put this in the loop above? - # i.e., add coupling and other_coupling to bidirectional_strong_couplings bidirectional_strong_couplings.append(coupling) unidirectional_strong_couplings: list[dict] = [coupling for coupling in strong_couplings if @@ -601,22 +589,6 @@ def _initialize_meshes(self, participant_patch_map: dict[tuple[n.ParticipantNode return participant_label_mesh_map - def _participant_communication_map(self, participant_map: dict[str, n.ParticipantNode]) -> dict[ - n.ParticipantNode, set[n.ParticipantNode]]: - """ - Create a dict mapping participants to their "neighbors", i.e., other participants that exchange data with them. - :param participant_map: A dict mapping participant names to participant nodes. - :return: A dict mapping participants to their neighbors. - """ - communication_map: dict[n.ParticipantNode, set[n.ParticipantNode]] = {} - for exchange in self.topology["exchanges"]: - from_participant: n.ParticipantNode = participant_map[exchange["from"]] - to_participant: n.ParticipantNode = participant_map[exchange["to"]] - communication_map[from_participant].add(to_participant) - communication_map[to_participant].add(from_participant) - logger.debug(f"Added entries for communication between {from_participant.name} and {to_participant.name}.") - return communication_map - def _initialize_participants(self) -> dict[str, n.ParticipantNode]: """ Initialize participant nodes and their dimensionality from the topology dict. @@ -626,7 +598,7 @@ def _initialize_participants(self) -> dict[str, n.ParticipantNode]: participant_map: dict[str, n.ParticipantNode] = {} for participant in self.topology["participants"]: # The value is a dict that contains "name, solver, optional[dimensionality]" - parzival: n.ParticipantNode = n.ParticipantNode(name=participant["name"].capitalize()) + parzival: n.ParticipantNode = n.ParticipantNode(name=participant["name"]) participant_map[participant["name"]] = parzival self.participants.append(parzival) dim: int = participant.get("dimensionality", helper.DEFAULT_PARTICIPANT_DIMENSIONALITY) From b609aba4e6d1acde9fc6b9e6f7793c8d9fd7a99e Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 4 Jan 2026 19:52:49 +0100 Subject: [PATCH 014/131] Update .gitignore Rearranged entries and added some explanations --- .gitignore | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index c88075f..86a13f2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,15 @@ **/__pycache__/ venv/ -_generated/ dist/ build/ *.egg-info/ + +# macOS .DS_Store +# IntelliJ .idea/* +# Created directories during runs +*_generated/ *logs/ \ No newline at end of file From 2d827999b5eb8c8191b3bdd45f36194c9943ccd0 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 5 Jan 2026 09:29:36 +0100 Subject: [PATCH 015/131] Update logging_setup.py Make logs folder hidden on unix --- precicecasegenerate/logging_setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/precicecasegenerate/logging_setup.py b/precicecasegenerate/logging_setup.py index 7e29109..2080227 100644 --- a/precicecasegenerate/logging_setup.py +++ b/precicecasegenerate/logging_setup.py @@ -33,7 +33,7 @@ def format(self, record: LogRecord) -> str: def setup_logging() -> Logger: timestamp: str = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S") - path: str = "logs/" + path: str = ".logs/" os.makedirs(path, exist_ok=True) # Delete old log files if there are more than 10 to avoid clutter From 09dd45dfedab60f7d1b2ddb8dc7b8bf394519027 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 5 Jan 2026 09:30:19 +0100 Subject: [PATCH 016/131] Update config_creator.py Make `create_config_str()` "private" --- .../config_creator/config_creator.py | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/precicecasegenerate/config_creator/config_creator.py b/precicecasegenerate/config_creator/config_creator.py index 3f1428b..ecf342f 100644 --- a/precicecasegenerate/config_creator/config_creator.py +++ b/precicecasegenerate/config_creator/config_creator.py @@ -1,14 +1,24 @@ import logging +from precice_config_graph import nodes as n logger = logging.getLogger(__name__) class ConfigCreator: + """ + A class that handles creating preCICE configuration files. + """ - def __init__(self, config_topology: dict): + def __init__(self, config_topology: dict[str, list[n.ParticipantNode] | list[n.DataNode] | list[n.MeshNode] + | list[n.CouplingSchemeNode] | list[n.MultiCouplingSchemeNode] + | list[n.M2NNode]]): + """ + Initialize a ConfigCreator object with a dict that specifies how the preCICE configuration should be created. + :param config_topology: A dict that contains participants, data nodes, meshes, coupling-schemes and M2N nodes. + """ self.config_topology = config_topology - def create_config_str(self) -> str: + def _create_config_str(self) -> str: """ Create a string representing a preCICE configuration file. This is done by iterating over the given topology dict and creating a string for each element. @@ -56,14 +66,13 @@ def create_config_str(self) -> str: config_str += f"\n" return config_str - def create_config_file(self, config_str: str, directory: str = "./", filename: str = "precice-config.xml") -> None: + def create_config_file(self, directory: str = "./", filename: str = "precice-config.xml") -> None: """ - Create a configuration file from the given configuration string. + Create a configuration file. The file is saved in the given directory with the given filename. - :param config_str: A string representing the configuration. :param directory: The directory to save the file in. :param filename: The filename of the file. """ with open(directory + filename, "w") as f: - f.write(config_str) + f.write(self._create_config_str()) logger.info(f"preCICE configuration file written to {directory + filename}") From e7569c40e141ba7d50bc61582e2e44e63158a7c2 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 5 Jan 2026 09:30:35 +0100 Subject: [PATCH 017/131] Update helper.py Create a new class for patches --- precicecasegenerate/config_creator/helper.py | 30 ++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/precicecasegenerate/config_creator/helper.py b/precicecasegenerate/config_creator/helper.py index 2419b0e..072e9b4 100644 --- a/precicecasegenerate/config_creator/helper.py +++ b/precicecasegenerate/config_creator/helper.py @@ -1,5 +1,11 @@ +from enum import Enum +from precice_config_graph import nodes as n from precice_config_graph import enums as e +""" +Helper items and classes for the NodeCreator. +""" + # Set defaults here to be able to change them easily DEFAULT_DATA_TYPE: e.DataType = e.DataType.SCALAR DEFAULT_PARTICIPANT_DIMENSIONALITY: int = 3 @@ -30,3 +36,27 @@ "humungous", "informative", ] + + +class PatchState(Enum): + EXTENSIVE = "extensive" + INTENSIVE = "intensive" + + +class PatchNode: + """ + A class to represent a patch from a topology.yaml file. + """ + + def __init__(self, name: str, participant: n.ParticipantNode, mesh: n.MeshNode, label: PatchState): + """ + Initialize a PatchNode. + :param name: The name of the patch. + :param participant: The participant that owns the patch. + :param mesh: The mesh the patch is on. + :param label: + """ + self.name = name + self.participant = participant + self.mesh = mesh + self.label = label From a337ff627e7d414a354130e5879340823c56b029 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 5 Jan 2026 09:30:54 +0100 Subject: [PATCH 018/131] Update node_creator.py Create patch nodes and naming improvements --- .../config_creator/node_creator.py | 63 +++++++++++++++++-- 1 file changed, 57 insertions(+), 6 deletions(-) diff --git a/precicecasegenerate/config_creator/node_creator.py b/precicecasegenerate/config_creator/node_creator.py index be13cbc..53f1993 100644 --- a/precicecasegenerate/config_creator/node_creator.py +++ b/precicecasegenerate/config_creator/node_creator.py @@ -1,6 +1,6 @@ import random - import logging + from precice_config_graph import nodes as n from precice_config_graph import enums as e import precicecasegenerate.config_creator.helper as helper @@ -17,6 +17,8 @@ def __init__(self, topology: dict): self.meshes: list[n.MeshNode] = [] self.coupling_schemes: list[n.CouplingSchemeNode | n.MultiCouplingSchemeNode] = [] self.m2ns: list[n.M2NNode] = [] + # Patches are important for adapter configs + self.patches: list[helper.PatchNode] = [] # Containers for temporary values # Dimensionality is needed for meshes @@ -26,6 +28,34 @@ def __init__(self, topology: dict): self._create_nodes() + def get_mesh_patch_map(self) -> dict[n.MeshNode, set[str]]: + """ + Create a dict mapping mesh nodes to sets of patches that they use / contain. + :return: A dict mapping mesh nodes to sets of patches. + """ + mesh_patch_map: dict[n.MeshNode, set[str]] = {} + for patch in self.patches: + mesh: n.MeshNode = patch.mesh + # Create a a new entry if necessary + if mesh not in mesh_patch_map: + mesh_patch_map[mesh] = set() + mesh_patch_map[mesh].add(patch.name) + + return mesh_patch_map + + def get_participant_solver_map(self) -> dict[n.ParticipantNode, str]: + """ + Create a dict mapping participant nodes to their solver. + :return: A dict mapping participant nodes to their solver. + """ + participant_solver_map: dict[n.ParticipantNode, str] = {} + for participant_dict in self.topology["participants"]: + # Get the participant node corresponding to the participant mentioned in the topology + participant: n.ParticipantNode = next(p for p in self.participants if p.name == participant_dict["name"]) + # Assign the solver to the participant node + participant_solver_map[participant] = participant_dict["solver"] + return participant_solver_map + def get_nodes(self) -> dict: """ Return all nodes created from the topology. @@ -542,7 +572,9 @@ def _initialize_meshes(self, participant_patch_map: dict[tuple[n.ParticipantNode # Check if the from-participant communicates with more than one participant if frequency_map[from_participant] > 1: # In this case, we name meshes "FROM-TO-Extensive/Intensive-Mesh" - mesh_name: str = f"{from_participant.name.capitalize()}-{to_participant.name.capitalize()}" + # Capitalize only the first letter. This allows all-caps names + mesh_name: str = (f"{from_participant.name[:1].upper() + from_participant.name[1:]}" + f"-{to_participant.name[:1].upper() + to_participant.name[1:]}") extensive_mesh: n.MeshNode = n.MeshNode(name=mesh_name + "-Extensive-Mesh", use_data=[], dimensions=participant_dim) intensive_mesh: n.MeshNode = n.MeshNode(name=mesh_name + "-Intensive-Mesh", use_data=[], @@ -551,7 +583,7 @@ def _initialize_meshes(self, participant_patch_map: dict[tuple[n.ParticipantNode else: # The participant communicates only with one other participant. # The mesh is named "FROM-Extensive/Intensive-Mesh" - mesh_name: str = f"{from_participant.name.capitalize()}" + mesh_name: str = f"{from_participant.name[:1].upper() + from_participant.name[1:]}" extensive_mesh: n.MeshNode = n.MeshNode(name=mesh_name + "-Extensive-Mesh", use_data=[], dimensions=participant_dim) intensive_mesh: n.MeshNode = n.MeshNode(name=mesh_name + "-Intensive-Mesh", use_data=[], @@ -565,18 +597,32 @@ def _initialize_meshes(self, participant_patch_map: dict[tuple[n.ParticipantNode participant_label_mesh_map[(from_participant, to_participant, "intensive")] = intensive_mesh logger.debug(f"Created extensive and intensive mesh for communication between " f"{from_participant.name} and {to_participant.name}.") + # Create new patch nodes for from_participant + # Since only the patches of "from" are contained in + # participant_patch_map[(from_participant, to_participant)], we must not create any patches for "to" + for extensive_patch in participant_patch_map[(from_participant, to_participant)]["extensive"]: + patch_node: helper.PatchNode = helper.PatchNode(name=extensive_patch, participant=from_participant, + mesh=extensive_mesh, + label=helper.PatchState.EXTENSIVE) + self.patches.append(patch_node) + for intensive_patch in participant_patch_map[(from_participant, to_participant)]["intensive"]: + patch_node: helper.PatchNode = helper.PatchNode(name=intensive_patch, participant=from_participant, + mesh=intensive_mesh, + label=helper.PatchState.INTENSIVE) + self.patches.append(patch_node) # The participant pair only communicates one kind of data else: # Check if the from-participant communicates with more than one participant if frequency_map[from_participant] > 1: # In this case, we name meshes "FROM-TO-Mesh" - mesh_name: str = f"{from_participant.name.capitalize()}-{to_participant.name.capitalize()}" + mesh_name: str = (f"{from_participant.name[:1].upper() + from_participant.name[1:]}" + f"-{to_participant.name[:1].upper() + to_participant.name[1:]}") mesh: n.MeshNode = n.MeshNode(name=mesh_name + "-Mesh", use_data=[], dimensions=participant_dim) else: # The participant communicates only with one other participant. # The mesh is named "FROM-Mesh" - mesh_name: str = f"{from_participant.name.capitalize()}" + mesh_name: str = f"{from_participant.name[:1].upper() + from_participant.name[1:]}" mesh: n.MeshNode = n.MeshNode(name=mesh_name + "-Mesh", use_data=[], dimensions=participant_dim) # Add the mesh to the respective container from_participant.provide_meshes.append(mesh) @@ -586,6 +632,11 @@ def _initialize_meshes(self, participant_patch_map: dict[tuple[n.ParticipantNode participant_label_mesh_map[(from_participant, to_participant, label)] = mesh logger.debug(f"Created mesh for communication between {from_participant.name} " f"and {to_participant.name}.") + # Create new patch nodes of only this label + for patch in participant_patch_map[(from_participant, to_participant)][label]: + patch_node: helper.PatchNode = helper.PatchNode(name=patch, participant=from_participant, + mesh=mesh, label=helper.PatchState(label)) + self.patches.append(patch_node) return participant_label_mesh_map @@ -643,7 +694,7 @@ def _patch_preprocessing(self, participant_map: dict[str, n.ParticipantNode]): participant_patch_label_map[(from_participant, from_patch)].add(data_label) participant_patch_label_map[(to_participant, to_patch)].add(data_label) - # Map split up patches to new patches + # Map split-up patches to new patches participant_patch_new_patch_map: dict[tuple[n.ParticipantNode, str], dict[str, str]] = {} # Now, check if a patch has more than one label (i.e., both intensive and extensive) for exchange in self.topology["exchanges"]: From 23c31ea45c4375842baa842a79d9f4f9bfb7782d Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 5 Jan 2026 09:31:11 +0100 Subject: [PATCH 019/131] Create adapter_config_creator.py Create a class for creating adapter configurations --- .../adapter_config_creator.py | 158 ++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 precicecasegenerate/adapter_config_creator/adapter_config_creator.py diff --git a/precicecasegenerate/adapter_config_creator/adapter_config_creator.py b/precicecasegenerate/adapter_config_creator/adapter_config_creator.py new file mode 100644 index 0000000..5b05b41 --- /dev/null +++ b/precicecasegenerate/adapter_config_creator/adapter_config_creator.py @@ -0,0 +1,158 @@ +import logging + +from precice_config_graph import nodes as n + +logger = logging.getLogger(__name__) + + +class AdapterConfigCreator: + """ + A class that handles creating adapter configuration files for participants in the correct directory. + """ + + def __init__(self, participant_solver_map: dict[n.ParticipantNode, str], + mesh_patch_map: dict[n.MeshNode, set[str]]): + """ + Initialize an AdapterConfigCreator object, which creates adapter configuration files for each participant. + :param participant_solver_map: A dict mapping participant nodes to their solver names. + :param mesh_patch_map: A map mapping meshes to sets of patches. + """ + self.participant_solver_map = participant_solver_map + self.patch_map = mesh_patch_map + + def _create_adapter_config_str(self, participant: n.ParticipantNode, + mesh_patch_map: dict[n.MeshNode, set[str]]) -> str: + """ + Create a string representing the adapter configuration file for the given participant and mesh-patch map. + :param participant: The participant for which the adapter configuration file is created. + :param mesh_patch_map: A dict mapping meshes to sets of patches that they use. + :return: A string representing the adapter configuration file for the given participant and mesh-patch map. + """ + indent: str = "\t" + + indent_lvl: int = 0 + adapter_config_str: str = f"{{\n" + indent_lvl += 1 + adapter_config_str += f"{indent_lvl * indent}\"participant_name\": \"{participant.name}\",\n" + adapter_config_str += f"{indent_lvl * indent}\"precice_config_file_name\": \"../precice-config.xml\",\n" + adapter_config_str += f"{indent_lvl * indent}\"interfaces\": [\n" + indent_lvl += 1 + # Create an entry for each mesh + # We can use provide meshes here, as there are no "api-access" meshes, + # i.e., a participant always reads from and writes to their own mesh + for mesh in participant.provide_meshes: + adapter_config_str += f"{indent_lvl * indent}{{\n" + indent_lvl += 1 + adapter_config_str += f"{indent_lvl * indent}\"mesh_name\": \"{mesh.name}\",\n" + # Create an entry for each patch + adapter_config_str += "".join(indent_lvl * indent + line for line in + self._get_patch_string(mesh, mesh_patch_map).splitlines(keepends=True)) + # Create an entry for each read-data + adapter_config_str += "".join(indent_lvl * indent + line for line in + self._get_read_data_string(participant, mesh).splitlines(keepends=True)) + # Create an entry for each write-data + adapter_config_str += "".join(indent_lvl * indent + line for line in + self._get_write_data_string(participant, mesh).splitlines(keepends=True)) + adapter_config_str = adapter_config_str.rstrip(",\n") + adapter_config_str += "\n" + indent_lvl -= 1 + adapter_config_str += f"{indent_lvl * indent}}},\n" + logger.debug(f"Created adapter configuration entry for mesh {mesh.name} in participant " + f"{participant.name}'s adapter-config.") + # Remove the trailing comma + adapter_config_str = adapter_config_str.rstrip(",\n") + # Add the linebreak again + adapter_config_str += f"\n" + indent_lvl -= 1 + adapter_config_str += f"{indent_lvl * indent}]\n" + indent_lvl -= 1 + adapter_config_str += "}" + return adapter_config_str + + def _get_write_data_string(self, participant: n.ParticipantNode, mesh: n.MeshNode) -> str: + """ + Create a string of the form: + "write_data_names": ["data1", "data2", ...], + where the given participant writes the data to the given mesh. + :param participant: The participant that writes the data. + :param mesh: The mesh the data is written to. + :return: A string of the form described above. + """ + # Check if the mesh has any write-data + if not any(mesh == write_data.mesh for write_data in participant.write_data): + logger.debug(f"No write-data found for mesh {mesh.name} and participant {participant.name}.") + return "" + write_data_str: str = f"\"write_data_names\": [\n" + write_data_names: str = ", ".join(f"\"{write_data.data.name}\"" for write_data in participant.write_data + if write_data.mesh == mesh) + "\n" + indent: str = " " * 2 + write_data_str += indent + write_data_names + write_data_str += f"],\n" + return write_data_str + + def _get_read_data_string(self, participant: n.ParticipantNode, mesh: n.MeshNode) -> str: + """ + Create a string of the form: + "read_data_names": ["data1", "data2", ...], + where the given participant reads the data from the given mesh. + :param participant: The participant that reads the data. + :param mesh: The mesh the data is read from. + :return: A string of the form described above. + """ + # Check if the mesh has any read-data + if not any(mesh == read_data.mesh for read_data in participant.read_data): + logger.debug(f"No read-data found for mesh {mesh.name} and participant {participant.name}.") + return "" + read_data_str: str = f"\"read_data_names\": [\n" + read_data_names: str = ", ".join(f"\"{read_data.data.name}\"" for read_data in participant.read_data + if read_data.mesh == mesh) + "\n" + indent: str = " " * 2 + read_data_str += indent + read_data_names + read_data_str += f"],\n" + return read_data_str + + def _get_patch_string(self, mesh: n.MeshNode, mesh_patch_map: dict[n.MeshNode, set[str]]) -> str: + """ + Create a string of the form: + "patches": ["patch1", "patch2", ...], + where the given mesh uses the given patches, i.e., either reads data from or writes data to them. + :param mesh: The mesh using the patches. + :param mesh_patch_map: A dict mapping meshes to sets of patches. + :return: A string of the form described above. + """ + # This should never happen, but better check just i case + if mesh not in mesh_patch_map: + logger.error(f"Mesh {mesh.name} does not use any patches. This is likely an error within the program.") + return "" + patch_str: str = f"\"patches\": [\n" + patch_names: str = ", ".join(f"\"{item}\"" for item in mesh_patch_map[mesh]) + "\n" + indent: str = " " * 2 + patch_str += indent + patch_names + patch_str += f"],\n" + return patch_str + + def _create_adapter_config_file(self, participant: n.ParticipantNode, + patch_map: dict[n.MeshNode, set[str]], + directory: str = "./", filename: str = "adapter-config.json"): + """ + Write an adapter-config.json file for the given participant to the given directory. + :param participant: The participant for which the adapter-config.json file is created. + :param patch_map: A dict mapping meshes to sets of patches. + :param directory: The directory to save the file in. + :param filename: The name of the file. + """ + with open(directory + filename, "w") as f: + f.write(self._create_adapter_config_str(participant, patch_map)) + logger.info(f"Adapter configuration file for participant {participant.name} written to {directory + filename}") + + def create_adapter_configs(self, parent_directory: str = "./"): + """ + Create adapter-config.json files for all participants. + The files are saved from the given parent-directory, in subdirectories of the form "participant-solver/". + """ + for participant in self.participant_solver_map: + logger.debug(f"Creating adapter configuration file for participant {participant.name}.") + # Use lowercase + directory: str = (parent_directory.lower() + participant.name.lower() + "-" + + self.participant_solver_map[participant].lower() + "/") + self._create_adapter_config_file(participant, self.patch_map, directory=directory) From f432feb2f8e7c87a74481fb15877aea02edd18d7 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 5 Jan 2026 09:31:26 +0100 Subject: [PATCH 020/131] Update cli.py update the main method to include adapter config generation --- precicecasegenerate/cli.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/precicecasegenerate/cli.py b/precicecasegenerate/cli.py index 897bd6f..c1cfdf4 100644 --- a/precicecasegenerate/cli.py +++ b/precicecasegenerate/cli.py @@ -3,6 +3,7 @@ import argparse import shutil +from precicecasegenerate.adapter_config_creator.adapter_config_creator import AdapterConfigCreator from precicecasegenerate.logging_setup import setup_logging from precicecasegenerate.config_creator.node_creator import NodeCreator from precicecasegenerate.config_creator.config_creator import ConfigCreator @@ -56,11 +57,27 @@ def main(): logger.debug("Starting config creator.") config_creator: ConfigCreator = ConfigCreator(nodes) - config_str: str = config_creator.create_config_str() - config_creator.create_config_file(config_str, directory=path_to_generated, filename="precice-config.xml") + config_creator.create_config_file(directory=path_to_generated, filename="precice-config.xml") logger.debug("Config creator finished.") - # TODO other generation steps + # TODO create subdirectories for solvers here + participant_solver_map: dict = node_creator.get_participant_solver_map() + for participant in participant_solver_map: + participant_directory: str = (path_to_generated.lower() + participant.name.lower() + "-" + + participant_solver_map[participant].lower() + "/") + # The directory will be overwritten if it already exists and is of the form "_generated/name-solver/" + shutil.rmtree(participant_directory, ignore_errors=True) + os.makedirs(participant_directory, exist_ok=True) + + logger.debug("Starting adapter config creator.") + mesh_patch_map: dict = node_creator.get_mesh_patch_map() + adapter_config_creator: AdapterConfigCreator = AdapterConfigCreator(participant_solver_map, mesh_patch_map) + adapter_config_creator.create_adapter_configs(parent_directory=path_to_generated) + + # TODO create run.sh for solvers here + + # TODO create clean.sh here + logger.info("Program finished.") sys.exit(0) From f0047d76f08f48cb014f0a52714a5a962e6ff609 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 5 Jan 2026 09:33:15 +0100 Subject: [PATCH 021/131] Update node_creator.py Updated description to reflect double usage of the method --- precicecasegenerate/config_creator/node_creator.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/precicecasegenerate/config_creator/node_creator.py b/precicecasegenerate/config_creator/node_creator.py index 53f1993..85e9410 100644 --- a/precicecasegenerate/config_creator/node_creator.py +++ b/precicecasegenerate/config_creator/node_creator.py @@ -91,7 +91,7 @@ def _create_nodes(self) -> None: logger.debug(f"Created {len(set(data_map.values()))} data nodes.") # Initialize meshes from the exchanges tag (defined implicitly) - mesh_map: dict[tuple[n.ParticipantNode, n.ParticipantNode, str], n.MeshNode] = self._initialize_meshes( + mesh_map: dict[tuple[n.ParticipantNode, n.ParticipantNode, str], n.MeshNode] = self._initialize_meshes_and_patches( participant_patch_label_map) logger.debug(f"Created {len(set(mesh_map.values()))} mesh nodes.") @@ -544,13 +544,14 @@ def _create_read_mapping(self, from_participant: n.ParticipantNode, to_participa logger.debug(f"Created read-mapping between {from_mesh.name} and {to_mesh.name} " f"for participant {to_participant.name}.") - def _initialize_meshes(self, participant_patch_map: dict[tuple[n.ParticipantNode, n.ParticipantNode], + def _initialize_meshes_and_patches(self, participant_patch_map: dict[tuple[n.ParticipantNode, n.ParticipantNode], dict[str, set[str]]]) -> dict[tuple[n.ParticipantNode, n.ParticipantNode, str], n.MeshNode]: """ Initialize meshes based on the communication of participants and the involved patches. First, communication between participants is counted to be able to determine the number of meshes needed and thus allow for better naming. Next, for each communication pair, mesh(es) are created based on the involved patches. + During the mesh creation, while iterating over the patches, corresponding patch nodes are created. :param participant_patch_map: A dict mapping (a-participant, b-participant) to a dict of extensive and intensive patches. :return: A dict mapping (a-participant, b-participant, extensive/intensive) to mesh nodes. """ @@ -632,7 +633,7 @@ def _initialize_meshes(self, participant_patch_map: dict[tuple[n.ParticipantNode participant_label_mesh_map[(from_participant, to_participant, label)] = mesh logger.debug(f"Created mesh for communication between {from_participant.name} " f"and {to_participant.name}.") - # Create new patch nodes of only this label + # Create new patch nodes for only this label for patch in participant_patch_map[(from_participant, to_participant)][label]: patch_node: helper.PatchNode = helper.PatchNode(name=patch, participant=from_participant, mesh=mesh, label=helper.PatchState(label)) From f53827215b6d2dfbdec34b1c210a3ec0439cccbe Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 5 Jan 2026 10:14:15 +0100 Subject: [PATCH 022/131] Create adapter-config-schema.json A schema for the adapter-config.json files. --- .../schemas/adapter-config-schema.json | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 precicecasegenerate/schemas/adapter-config-schema.json diff --git a/precicecasegenerate/schemas/adapter-config-schema.json b/precicecasegenerate/schemas/adapter-config-schema.json new file mode 100644 index 0000000..61f634f --- /dev/null +++ b/precicecasegenerate/schemas/adapter-config-schema.json @@ -0,0 +1,69 @@ +{ + "type": "object", + "required": [ + "participant_name", + "precice_config_file_name", + "interfaces" + ], + "properties": { + "participant_name": { + "type": "string", + "description": "Name of the participant" + }, + "precice_config_file_name": { + "type": "string", + "description": "Path to the precice configuration file" + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "required": [ + "mesh_name", + "patches" + ], + "properties": { + "mesh_name": { + "type": "string" + }, + "patches": { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "read_data_names": { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "write_data_names": { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + }, + "anyOf": [ + { + "required": [ + "read_data_names" + ] + }, + { + "required": [ + "write_data_names" + ] + } + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "additionalProperties": false +} \ No newline at end of file From 34d73c9bc9ad616a159ac6d33c49417c86565ffa Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 5 Jan 2026 10:14:52 +0100 Subject: [PATCH 023/131] Update adapter_config_creator.py Validate created adapter configs against the schema --- .../adapter_config_creator.py | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/precicecasegenerate/adapter_config_creator/adapter_config_creator.py b/precicecasegenerate/adapter_config_creator/adapter_config_creator.py index 5b05b41..6261410 100644 --- a/precicecasegenerate/adapter_config_creator/adapter_config_creator.py +++ b/precicecasegenerate/adapter_config_creator/adapter_config_creator.py @@ -1,4 +1,7 @@ +import json +import jsonschema import logging +from importlib.resources import files from precice_config_graph import nodes as n @@ -131,6 +134,23 @@ def _get_patch_string(self, mesh: n.MeshNode, mesh_patch_map: dict[n.MeshNode, s patch_str += f"],\n" return patch_str + def _validate_adapter_config_file(self, directory: str = "./", filename: str = "adapter-config.json"): + schema_path = files("precicecasegenerate.schemas") / "adapter-config-schema.json" + + # Load your schema (from a file or directly as a dict) + schema = json.loads(schema_path.read_text(encoding="utf-8")) + + # Load the JSON file you want to validate + with open(directory + filename) as f: + adapter_config = json.load(f) + + try: + jsonschema.validate(adapter_config, schema) + logger.debug(f"Adapter config file {directory + filename} adheres to the schema.") + except jsonschema.ValidationError as e: + logger.error(f"Adapter config file {directory + filename} does not adhere to the schema " + f"as specified in {schema_path}: {e.message}. This is likely an error within the program.") + def _create_adapter_config_file(self, participant: n.ParticipantNode, patch_map: dict[n.MeshNode, set[str]], directory: str = "./", filename: str = "adapter-config.json"): @@ -147,7 +167,7 @@ def _create_adapter_config_file(self, participant: n.ParticipantNode, def create_adapter_configs(self, parent_directory: str = "./"): """ - Create adapter-config.json files for all participants. + Create adapter-config.json files for all participants and directly validate them afterwards. The files are saved from the given parent-directory, in subdirectories of the form "participant-solver/". """ for participant in self.participant_solver_map: @@ -156,3 +176,4 @@ def create_adapter_configs(self, parent_directory: str = "./"): directory: str = (parent_directory.lower() + participant.name.lower() + "-" + self.participant_solver_map[participant].lower() + "/") self._create_adapter_config_file(participant, self.patch_map, directory=directory) + self._validate_adapter_config_file(directory=directory) From 1bc484932825a931e24c0419b0baf308ad9fc9b0 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 5 Jan 2026 10:15:09 +0100 Subject: [PATCH 024/131] Update topology_reader.py Updated name to "_validate..." to reflect changes in adapter config creator --- precicecasegenerate/input_handler/topology_reader.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/precicecasegenerate/input_handler/topology_reader.py b/precicecasegenerate/input_handler/topology_reader.py index 169668e..e4e1670 100644 --- a/precicecasegenerate/input_handler/topology_reader.py +++ b/precicecasegenerate/input_handler/topology_reader.py @@ -16,7 +16,7 @@ class TopologyReader: def __init__(self, path_to_topology_file: str): self.topology_file_path = path_to_topology_file self.topology = self._read_topology() - self._check_topology() + self._validate_topology() def _read_topology(self) -> dict: """ @@ -29,7 +29,7 @@ def _read_topology(self) -> dict: topology = yaml.safe_load(topology_file) return topology - def _check_topology(self) -> None: + def _validate_topology(self) -> None: """ Check if the topology adheres to the defined schema in schemas/topology-schema.json """ From c380efa47bc56c24488b6eb7322bb9913da3b0fd Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 5 Jan 2026 10:30:09 +0100 Subject: [PATCH 025/131] Moved files to reflect logic --- .../adapter_config_creator.py | 0 .../{config_creator => file_creators}/config_creator.py | 0 precicecasegenerate/{config_creator => }/helper.py | 0 precicecasegenerate/{config_creator => }/node_creator.py | 2 +- 4 files changed, 1 insertion(+), 1 deletion(-) rename precicecasegenerate/{adapter_config_creator => file_creators}/adapter_config_creator.py (100%) rename precicecasegenerate/{config_creator => file_creators}/config_creator.py (100%) rename precicecasegenerate/{config_creator => }/helper.py (100%) rename precicecasegenerate/{config_creator => }/node_creator.py (99%) diff --git a/precicecasegenerate/adapter_config_creator/adapter_config_creator.py b/precicecasegenerate/file_creators/adapter_config_creator.py similarity index 100% rename from precicecasegenerate/adapter_config_creator/adapter_config_creator.py rename to precicecasegenerate/file_creators/adapter_config_creator.py diff --git a/precicecasegenerate/config_creator/config_creator.py b/precicecasegenerate/file_creators/config_creator.py similarity index 100% rename from precicecasegenerate/config_creator/config_creator.py rename to precicecasegenerate/file_creators/config_creator.py diff --git a/precicecasegenerate/config_creator/helper.py b/precicecasegenerate/helper.py similarity index 100% rename from precicecasegenerate/config_creator/helper.py rename to precicecasegenerate/helper.py diff --git a/precicecasegenerate/config_creator/node_creator.py b/precicecasegenerate/node_creator.py similarity index 99% rename from precicecasegenerate/config_creator/node_creator.py rename to precicecasegenerate/node_creator.py index 85e9410..1f776df 100644 --- a/precicecasegenerate/config_creator/node_creator.py +++ b/precicecasegenerate/node_creator.py @@ -3,7 +3,7 @@ from precice_config_graph import nodes as n from precice_config_graph import enums as e -import precicecasegenerate.config_creator.helper as helper +import precicecasegenerate.helper as helper logger = logging.getLogger(__name__) From 63e9650af7bd10952481a72c5937ed6b70d8639e Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 5 Jan 2026 10:30:22 +0100 Subject: [PATCH 026/131] Update cli.py Changed imports --- precicecasegenerate/cli.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/precicecasegenerate/cli.py b/precicecasegenerate/cli.py index c1cfdf4..4af1c97 100644 --- a/precicecasegenerate/cli.py +++ b/precicecasegenerate/cli.py @@ -3,10 +3,10 @@ import argparse import shutil -from precicecasegenerate.adapter_config_creator.adapter_config_creator import AdapterConfigCreator +from precicecasegenerate.file_creators.adapter_config_creator import AdapterConfigCreator from precicecasegenerate.logging_setup import setup_logging -from precicecasegenerate.config_creator.node_creator import NodeCreator -from precicecasegenerate.config_creator.config_creator import ConfigCreator +from precicecasegenerate.node_creator import NodeCreator +from precicecasegenerate.file_creators.config_creator import ConfigCreator from precicecasegenerate.input_handler.topology_reader import TopologyReader From cdd4f926a4533632e07dffdf2a5d30f155bd139d Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 5 Jan 2026 14:14:13 +0100 Subject: [PATCH 027/131] Update helper.py Add a new helper function for solver i.e. participant directories --- precicecasegenerate/helper.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/precicecasegenerate/helper.py b/precicecasegenerate/helper.py index 072e9b4..0e553cc 100644 --- a/precicecasegenerate/helper.py +++ b/precicecasegenerate/helper.py @@ -38,6 +38,18 @@ ] +def get_participant_solver_directory(parent_directory: str, participant_name: str, solver_name: str) -> str: + """ + Return the name of the directory for a participant of the simulation. + The adapter-config.json and run.sh files for this participant will be saved in this directory. + :param parent_directory: The parent directory of the participant's directory. + :param participant_name: The name of the participant. + :param solver_name: The name of the solver. + :return: A string representing the directory name. + """ + return parent_directory.lower() + "/" + participant_name.lower() + "-" + solver_name.lower() + "/" + + class PatchState(Enum): EXTENSIVE = "extensive" INTENSIVE = "intensive" From badcaea95f03433667ac1f99800fe4023d9782c7 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 5 Jan 2026 14:14:49 +0100 Subject: [PATCH 028/131] Update adapter_config_creator.py Use new helper function --- precicecasegenerate/file_creators/adapter_config_creator.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/precicecasegenerate/file_creators/adapter_config_creator.py b/precicecasegenerate/file_creators/adapter_config_creator.py index 6261410..04e324f 100644 --- a/precicecasegenerate/file_creators/adapter_config_creator.py +++ b/precicecasegenerate/file_creators/adapter_config_creator.py @@ -5,6 +5,8 @@ from precice_config_graph import nodes as n +import precicecasegenerate.helper as helper + logger = logging.getLogger(__name__) @@ -173,7 +175,7 @@ def create_adapter_configs(self, parent_directory: str = "./"): for participant in self.participant_solver_map: logger.debug(f"Creating adapter configuration file for participant {participant.name}.") # Use lowercase - directory: str = (parent_directory.lower() + participant.name.lower() + "-" - + self.participant_solver_map[participant].lower() + "/") + directory: str = helper.get_participant_solver_directory(parent_directory, participant.name, + self.participant_solver_map[participant]) self._create_adapter_config_file(participant, self.patch_map, directory=directory) self._validate_adapter_config_file(directory=directory) From 1ec350ffea737d68e922e755aaa8356bfd4e5400 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 5 Jan 2026 14:55:07 +0100 Subject: [PATCH 029/131] Utility file templates They were adopted from the previous version --- precicecasegenerate/templates/clean.sh | 350 +++++++++++++++++++++++++ precicecasegenerate/templates/run.sh | 21 ++ 2 files changed, 371 insertions(+) create mode 100644 precicecasegenerate/templates/clean.sh create mode 100644 precicecasegenerate/templates/run.sh diff --git a/precicecasegenerate/templates/clean.sh b/precicecasegenerate/templates/clean.sh new file mode 100644 index 0000000..2954b31 --- /dev/null +++ b/precicecasegenerate/templates/clean.sh @@ -0,0 +1,350 @@ +#!/usr/bin/env bash + +# ------------------------------------------------------------------- +# Script Name: clean.sh +# Description: Recursively deletes/moves files/dirs except: +# - Global preserved filenames anywhere (run.sh, adapter-config.json...) +# - Specific root files (README.md, precice-config.xml) +# Usage: ./clean.sh [--dry-run] [--force] +# --dry-run : show what would happen, don't remove/move +# --force : permanently delete unpreserved items AND remove existing backups +# ------------------------------------------------------------------- + +# Strict mode: +# -e: exit on error +# -u: exit on undefined variable +# -o pipefail: exit if any command in a pipe fails +set -euo pipefail + +# --- CONFIGURATION --- +ROOT_DIR="$(pwd)" +LOG_FILE="cleanup.log" +BACKUP_DIR="$ROOT_DIR/backup_$(date '+%Y%m%d_%H%M%S')" + +# 1. GLOBAL PRESERVES: filenames to keep anywhere in the tree +GLOBAL_PRESERVE_NAMES=( + "run.sh" + "adapter-config.json" +) + +# 2. ROOT PRESERVES: filenames to keep only if in ROOT_DIR +ROOT_PRESERVE_PATHS=( + "clean.sh" + "README.md" + "precice-config.xml" + "$LOG_FILE" # always keep the log (will be overwritten) +) + +# --- DEFAULTS --- +DRY_RUN=0 # No dry-run by default +FORCE=0 # No permanent removal of files by default +MOVED_COUNT=0 # Counter to track if we actually backed anything up +DELETED_COUNT=0 # Counter to track if we actually deleted anything + +# --- HELPERS --- + +log() { + # We use tee -a (append) here so we don't overwrite previous lines *of this run*. + # The file is cleared once at the start of the MAIN block. + echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE" +} + +# Is filename (basename) a global preserved name? +is_global_preserved() { + local filename="$1" + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [[ "$filename" == "$name" ]]; then + return 0 + fi + done + return 1 +} + +# Is a relative path preserved at root? +is_root_preserved() { + local relpath="$1" + for p in "${ROOT_PRESERVE_PATHS[@]}"; do + if [[ "$relpath" == "$p" ]]; then + return 0 + fi + done + return 1 +} + +# Find out whether directory contains any preserved file *anywhere* under it. +# Implementation Note: Uses `head -n 1` instead of `-quit` for maximum compatibility +# across all Linux distros (including Alpine/BusyBox) and BSD/MacOS. +dir_contains_preserved_content() { + local dir="$1" + local name + local -a find_args=() + + # Build find arguments: ( -name A -o -name B ... ) + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [ ${#find_args[@]} -eq 0 ]; then + find_args+=( -name "$name" ) + else + find_args+=( -o -name "$name" ) + fi + done + + # Check if find returns any match. + # piping to head -n 1 causes find to receive SIGPIPE and stop early if a match is found. + if [ -n "$(find "$dir" \( "${find_args[@]}" \) -print 2>/dev/null | head -n 1)" ]; then + return 0 + fi + return 1 +} + +# Ensure backup destination exists and safely move source there preserving relative path. +# Prevents collisions by making unique names if needed. +# Args: +# $1 = absolute src path +# $2 = rel path relative to ROOT_DIR (used to recreate path inside backup) +safe_move_to_backup() { + local src="$1" + local rel="$2" + + # Destination path = $BACKUP_DIR/$rel + local dest="$BACKUP_DIR/$rel" + local dest_dir + dest_dir="$(dirname "$dest")" + + # Normalize: if dirname is ".", use $BACKUP_DIR as target dir + if [[ "$dest_dir" == "$BACKUP_DIR/." ]] || [[ "$dest_dir" == "." ]]; then + dest_dir="$BACKUP_DIR" + fi + + if [ "$DRY_RUN" -eq 0 ]; then + mkdir -p "$dest_dir" + fi + + # If dest exists, append numeric suffix before extension to avoid overwrite + if [ -e "$dest" ]; then + local base name ext candidate n + base="$(basename "$dest")" + name="${base%.*}" + ext="${base##*.}" + n=1 + + # Check if file has an extension + if [[ "$ext" == "$base" ]]; then + # No extension + candidate="$dest_dir/${name}_$n" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n" + done + else + # Has extension + candidate="$dest_dir/${name}_$n.$ext" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n.$ext" + done + fi + dest="$candidate" + fi + + if [ "$DRY_RUN" -eq 1 ]; then + log "Would be deleted: ${rel}" + else + mv -- "$src" "$dest" + # Increment the counter because we successfully moved a file + MOVED_COUNT=$((MOVED_COUNT + 1)) + log "Deleted: ${rel}" + fi +} + +# Safe remove (used by --force). Respects --dry-run. +safe_remove() { + local src="$1" + local rel="$2" + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove: $rel" + else + rm -rf -- "$src" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed: $rel" + fi +} + +# Remove existing backup_* directories permanently (used when FORCE=1). +remove_existing_backups_permanently() { + shopt -s nullglob + local found=0 + for old in "$ROOT_DIR"/backup_*; do + if [ -d "$old" ]; then + found=1 + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove backup: $(basename "$old")" + else + rm -rf -- "$old" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed backup: $(basename "$old")" + fi + fi + done + shopt -u nullglob + if [ "$found" -eq 0 ]; then + log "No existing backup directories to remove." + fi +} + +# Perform action for a single path (file or directory) that is NOT preserved. +# Moves to backup preserving tree, or removes permanently when FORCE=1. +perform_action() { + local item="$1" + local rel_path="${item#$ROOT_DIR/}" + + if [ "$FORCE" -eq 1 ]; then + safe_remove "$item" "$rel_path" + else + safe_move_to_backup "$item" "$rel_path" + fi +} + +# --- RECURSIVE CLEANUP --- +recursive_cleanup() { + local current_dir="$1" + + # dotglob: includes hidden files (starting with .) + # nullglob: makes the loop not run if no files match (avoids literal string issues) + shopt -s dotglob nullglob + + local item rel_path base + + for item in "$current_dir"/*; do + # Sanity check: ensure file exists (handles rare race conditions or broken links) + [ ! -e "$item" ] && [ ! -L "$item" ] && continue + + rel_path="${item#$ROOT_DIR/}" + base="$(basename "$item")" + + # Skip . and .. (though glob usually excludes them, safety first) + if [[ "$base" == "." || "$base" == ".." ]]; then + continue + fi + + # --- FILE or SYMLINK --- + if [ -f "$item" ] || [ -L "$item" ]; then + # 1. Preserve by global name anywhere? + if is_global_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # 2. Preserve if at root and matches root-preserve list? + if [[ "$current_dir" == "$ROOT_DIR" ]] && is_root_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # Otherwise: perform action + perform_action "$item" + continue + fi + + # --- DIRECTORY --- + if [ -d "$item" ]; then + # Check if dir contains any preserved content anywhere below + if dir_contains_preserved_content "$item"; then + recursive_cleanup "$item" + + # After recursion, if directory is empty, remove it (respecting dry-run) + if [ -z "$(ls -A "$item")" ]; then + if [ "$DRY_RUN" -eq 1 ]; then + log "Would remove empty directory: $rel_path" + else + rmdir -- "$item" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Removed empty directory: $rel_path" + fi + fi + else + # Directory contains no preserved files anywhere deep: remove/move entire directory + perform_action "$item" + fi + continue + fi + done + + # Restore defaults for shopt to avoid side effects if function is reused + shopt -u dotglob nullglob +} + +# --- MAIN --- + +# Parse flags +while [[ $# -gt 0 ]]; do + case $1 in + --dry-run) DRY_RUN=1 ;; + --force) FORCE=1 ;; + *) echo "Unknown parameter: $1"; exit 1 ;; + esac + shift +done + +# Initialize/Clear the log file for this new run +: > "$LOG_FILE" + +# Confirmation prompt (skip when dry-run) +if [ "$DRY_RUN" -eq 1 ]; then + log "Dry run enabled, nothing will be removed." +else + read -p "This will delete all files except preserved ones. Proceed? [y/n]: " confirm + case "$confirm" in + [yY][eE][sS]|[yY]) ;; + *) log "Cleanup aborted."; exit 0 ;; + esac +fi + +if [ "$FORCE" -eq 1 ] && [ "$DRY_RUN" -eq 1 ]; then + log "Ignoring --force." + FORCE=0 +fi + +log "Starting cleanup..." + + +if [ "$FORCE" -eq 1 ]; then + remove_existing_backups_permanently +fi + +recursive_cleanup "$ROOT_DIR" + +if [ "$DELETED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" +else + FILE_STR="files" + DIRECTORY_STR="directories" +fi + +OUTPUT_STR="" + +# Output if FORCE +if [ "$FORCE" -eq 1 ]; then + OUTPUT_STR="Deleted $DELETED_COUNT $FILE_STR or $DIRECTORY_STR. " +fi + +if [ "$DRY_RUN" -eq 1 ]; then + OUTPUT_STR="Dry-run completed successfully." +else + OUTPUT_STR="${OUTPUT_STR}Cleanup completed successfully." +fi + +# Only append the backup message if we actually moved files (MOVED_COUNT > 0) +if [ "$MOVED_COUNT" -gt 0 ]; then + # Correct wording + if [ "$MOVED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" + else + FILE_STR="files" + DIRECTORY_STR="directories" + fi + OUTPUT_STR="$OUTPUT_STR Backed up $MOVED_COUNT deleted $FILE_STR or $DIRECTORY_STR in '$BACKUP_DIR'." +fi + +log "$OUTPUT_STR" \ No newline at end of file diff --git a/precicecasegenerate/templates/run.sh b/precicecasegenerate/templates/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/precicecasegenerate/templates/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file From d8e766320f9804ab0ade86ab3486707d3a0124c1 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 5 Jan 2026 15:08:51 +0100 Subject: [PATCH 030/131] Create utility_file_creator.py Created a new class for creating the utility files. The readme is somewhat inspired by the old version, but contains less words and more information :) --- .../file_creators/utility_file_creator.py | 210 ++++++++++++++++++ 1 file changed, 210 insertions(+) create mode 100644 precicecasegenerate/file_creators/utility_file_creator.py diff --git a/precicecasegenerate/file_creators/utility_file_creator.py b/precicecasegenerate/file_creators/utility_file_creator.py new file mode 100644 index 0000000..f16d8aa --- /dev/null +++ b/precicecasegenerate/file_creators/utility_file_creator.py @@ -0,0 +1,210 @@ +import logging +import shutil +from pathlib import Path +from importlib.resources import files, as_file + +from precice_config_graph import nodes as n + +import precicecasegenerate.helper as helper + +logger = logging.getLogger(__name__) + + +class UtilityFileCreator: + """ + A class to create utility files for the generated project. + """ + + def __init__(self, participant_solver_map: dict[n.ParticipantNode, str]): + """ + Initialize a UtilityFileCreator object, which creates a global clean.sh file, a global README.md file + and a run.sh file for each participant-solver pair. + :param participant_solver_map: A dict mapping participants to their solver names. + """ + self.participant_solver_map = participant_solver_map + + def create_utility_files(self, parent_directory: str = "./") -> None: + """ + Create all utility files for the generated project: + clean.sh, README.md and run.sh for each participant-solver pair. + :param parent_directory: The directory from which to save the files. + :return: None + """ + self._create_clean_file(parent_directory) + # Create a run file for each participant + for participant in self.participant_solver_map: + participant_directory = helper.get_participant_solver_directory(parent_directory, participant.name, + self.participant_solver_map[participant]) + self._create_run_file(participant_directory) + self._create_readme_file(parent_directory) + + def _create_clean_file(self, directory: str = "./") -> None: + """ + Create a clean-file for the simulation in the given directory. + This copies the template file `precicecasegenerate/templates/clean.sh` to the specified directory. + :param directory: The directory to save the file in. + :return: None + """ + src = files("precicecasegenerate.templates") / "clean.sh" + + dst_dir = Path(directory) + dst_dir.mkdir(parents=True, exist_ok=True) + # directory + filename + dst_file = dst_dir / src.name + + # Use as_file to get a real path + with as_file(src) as real_src_path: + shutil.copy2(real_src_path, dst_file) + logging.debug(f"File clean.sh written to {directory + dst_file.name}") + + def _create_run_file(self, directory: str = "./") -> None: + """ + Create a run file for a participant in the given directory. + This copies the template file `precicecasegenerate/templates/run.sh` to the specified directory. + :param directory: The directory to save the file in. + :return: None + """ + src = files("precicecasegenerate.templates") / "run.sh" + + dst_dir = Path(directory) + dst_dir.mkdir(parents=True, exist_ok=True) + # directory + filename + dst_file = dst_dir / src.name + + # Use as_file to get a real path + with as_file(src) as real_src_path: + shutil.copy2(real_src_path, dst_file) + logging.debug(f"File run.sh written to {directory + dst_file.name}") + + def _create_readme_file(self, directory: str = "./", filename: str = "README.md") -> None: + """ + Create a README file in the given directory. + :param directory: The directory to save the file in. + :return: None + """ + with open(directory + filename, "w") as f: + f.write(self._create_readme_str()) + logger.info(f"README file written to {directory + filename}") + + def _create_readme_str(self) -> str: + """ + Create a string representing the README file. + return: A string representing the README file. + """ + # Creates a vertical line between topics + topic_separator: str = "\n---\n\n" + + readme_str: str = ( + "# Multiphysics Simulation Project\n" + "\n" + "> [!NOTE] This `README.md` file was auto-generated by preCICE case-generate.\n" + "\n" + ) + readme_str += topic_separator + + readme_str += ( + "## Project Overview\n" + "\n" + "This project uses **preCICE** for a multiphysics simulation involving:\n" + "\n" + ) + for participant in self.participant_solver_map: + solver: str = self.participant_solver_map[participant] + readme_str += ( + f"- Solver `{solver}` with participant `{participant.name}`\n" + ) + readme_str += "\n" + readme_str += ( + "### Project Structure\n" + "\n" + "Global files that are generated are: `precice-config.xml`, `README.md` and `clean.sh`. " + "Additionally, for each participant, a folder with an `adapter-config.json` and a `run.sh` file are created.\n" + "The folder structure is as follows:\n" + "\n" + "```\n" + "_generated/\n" + " ├── README.md\t\t\t# This file\n" + " ├── clean.sh\t\t\t# Clean up script\n" + ) + for participant in self.participant_solver_map: + readme_str += ( + f" ├──{participant.name.lower()}-{self.participant_solver_map[participant].lower()}/\n" + " │ ├── adapter-config.json\n" + " │ └── run.sh\t\t\t# Not yet implemented\n" + ) + readme_str += ( + " └── precice-config.xml\t\t# Global precice-config.xml file\n" + "```\n" + "\n" + "\n" + ) + # Explanation of precice-config.xml + readme_str += ( + "- `precice-config.xml` is the global preCICE configuration file which defines the parameters " + "and communication of participants\n" + ) + # Explanation of adapter-config.json + readme_str += ( + "- `adapter-config.json` is a configuration file to couple the solvers with preCICE.\n" + ) + # Explanation of run.sh + readme_str += ( + "- `run.sh` is a script that is meant to execute a participant. Note, however, that since " + "different solvers are executed differently, this file is not implemented yet.\n" + ) + # Explanation of clean.sh + readme_str += ( + "- `clean.sh` removes any files in the current root directory that were not created by preCICE case-generate " + "(and moves them to a backup folder).\n" + "Execution:\n" + "\n" + "```bash\n" + "./clean.sh [--force] [--dry-run]\n" + "```\n" + "\n" + "- `--force` Deletes the files and any backup folders\n" + "- `--dry-run` Does not delete any files, but prints files that would be deleted\n") + + readme_str += topic_separator + + readme_str += ( + "## Prerequisites\n" + "\n" + "Before running the simulation, ensure you have the following installed:\n" + "\n" + "- The preCICE coupling library\n" + ) + for participant in self.participant_solver_map: + solver: str = self.participant_solver_map[participant] + readme_str += ( + f"- Solver `{solver}` and its dependencies\n" + ) + + readme_str += topic_separator + + readme_str += ( + "## Running the Simulation\n" + "\n" + "### Quick Start\n" + "\n" + "```bash\n" + "# Navigate to the `_generated` folder\n" + "cd _generated/\n" + "\n" + "# Implement the run script\n" + "\n" + "# Make the run script executable \n" + "chmod +x run.sh\n" + "\n" + "# Execute the simulation\n" + "./run.sh\n" + "```\n" + ) + + readme_str += topic_separator + + readme_str += ( + "For more information, see the [preCICE documentation](https://precice.org/docs.html) and " + "[precice-case-generate](https://github.com/precice/case-generate)." + ) + return readme_str From e3e8ebbd4a7104f03aa9474c6ee7c43f64bba24f Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 5 Jan 2026 15:09:33 +0100 Subject: [PATCH 031/131] Update cli.py Added creation of utility files and use helper method to get directories --- precicecasegenerate/cli.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/precicecasegenerate/cli.py b/precicecasegenerate/cli.py index 4af1c97..b8d21e8 100644 --- a/precicecasegenerate/cli.py +++ b/precicecasegenerate/cli.py @@ -3,11 +3,13 @@ import argparse import shutil -from precicecasegenerate.file_creators.adapter_config_creator import AdapterConfigCreator from precicecasegenerate.logging_setup import setup_logging +from precicecasegenerate import helper +from precicecasegenerate.input_handler.topology_reader import TopologyReader from precicecasegenerate.node_creator import NodeCreator from precicecasegenerate.file_creators.config_creator import ConfigCreator -from precicecasegenerate.input_handler.topology_reader import TopologyReader +from precicecasegenerate.file_creators.adapter_config_creator import AdapterConfigCreator +from precicecasegenerate.file_creators.utility_file_creator import UtilityFileCreator def main(): @@ -60,11 +62,10 @@ def main(): config_creator.create_config_file(directory=path_to_generated, filename="precice-config.xml") logger.debug("Config creator finished.") - # TODO create subdirectories for solvers here participant_solver_map: dict = node_creator.get_participant_solver_map() for participant in participant_solver_map: - participant_directory: str = (path_to_generated.lower() + participant.name.lower() + "-" - + participant_solver_map[participant].lower() + "/") + participant_directory: str = helper.get_participant_solver_directory(path_to_generated, participant.name, + participant_solver_map[participant]) # The directory will be overwritten if it already exists and is of the form "_generated/name-solver/" shutil.rmtree(participant_directory, ignore_errors=True) os.makedirs(participant_directory, exist_ok=True) @@ -74,9 +75,9 @@ def main(): adapter_config_creator: AdapterConfigCreator = AdapterConfigCreator(participant_solver_map, mesh_patch_map) adapter_config_creator.create_adapter_configs(parent_directory=path_to_generated) - # TODO create run.sh for solvers here - - # TODO create clean.sh here + logger.debug("Starting utility file creator.") + utility_file_creator: UtilityFileCreator = UtilityFileCreator(participant_solver_map) + utility_file_creator.create_utility_files(parent_directory=path_to_generated) logger.info("Program finished.") sys.exit(0) From d74f45a07d30a5044ac782b37f0c2be2388f3c69 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 5 Jan 2026 15:18:37 +0100 Subject: [PATCH 032/131] Update helper.py Updated method to add a / only if needed --- precicecasegenerate/helper.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/precicecasegenerate/helper.py b/precicecasegenerate/helper.py index 0e553cc..5aa25d4 100644 --- a/precicecasegenerate/helper.py +++ b/precicecasegenerate/helper.py @@ -47,7 +47,9 @@ def get_participant_solver_directory(parent_directory: str, participant_name: st :param solver_name: The name of the solver. :return: A string representing the directory name. """ - return parent_directory.lower() + "/" + participant_name.lower() + "-" + solver_name.lower() + "/" + # Append a / if needed + parent_directory = parent_directory if parent_directory.endswith("/") else parent_directory + "/" + return parent_directory.lower() + participant_name.lower() + "-" + solver_name.lower() + "/" class PatchState(Enum): From 637814d5c8bc88c867048145109cc90222e268fb Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 5 Jan 2026 15:18:51 +0100 Subject: [PATCH 033/131] Update utility_file_creator.py Use correct logger (not the module logging) --- precicecasegenerate/file_creators/utility_file_creator.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/precicecasegenerate/file_creators/utility_file_creator.py b/precicecasegenerate/file_creators/utility_file_creator.py index f16d8aa..59a1ac4 100644 --- a/precicecasegenerate/file_creators/utility_file_creator.py +++ b/precicecasegenerate/file_creators/utility_file_creator.py @@ -55,7 +55,7 @@ def _create_clean_file(self, directory: str = "./") -> None: # Use as_file to get a real path with as_file(src) as real_src_path: shutil.copy2(real_src_path, dst_file) - logging.debug(f"File clean.sh written to {directory + dst_file.name}") + logger.debug(f"File clean.sh written to {directory + dst_file.name}") def _create_run_file(self, directory: str = "./") -> None: """ @@ -74,7 +74,7 @@ def _create_run_file(self, directory: str = "./") -> None: # Use as_file to get a real path with as_file(src) as real_src_path: shutil.copy2(real_src_path, dst_file) - logging.debug(f"File run.sh written to {directory + dst_file.name}") + logger.debug(f"File run.sh written to {directory + dst_file.name}") def _create_readme_file(self, directory: str = "./", filename: str = "README.md") -> None: """ From 6a073c89f3c9957016554f20cadab06239a83e12 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 5 Jan 2026 15:23:03 +0100 Subject: [PATCH 034/131] Updated the new examples Generated all files and folders --- .../multi-coupling/_generated/README.md | 88 +++++ .../multi-coupling/_generated/clean.sh | 350 ++++++++++++++++++ .../nastin-asolver/adapter-config.json | 42 +++ .../_generated/nastin-asolver/run.sh | 21 ++ .../_generated/precice-config.xml | 144 +++++++ .../solidz1-solver/adapter-config.json | 18 + .../_generated/solidz1-solver/run.sh | 21 ++ .../solidz2-solver/adapter-config.json | 18 + .../_generated/solidz2-solver/run.sh | 21 ++ .../solidz3-solver/adapter-config.json | 18 + .../_generated/solidz3-solver/run.sh | 21 ++ .../multi-coupling/precice-config.xml | 144 ------- new_examples/tutorial1/_generated/README.md | 78 ++++ new_examples/tutorial1/_generated/clean.sh | 350 ++++++++++++++++++ .../generator-asolver/adapter-config.json | 15 + .../_generated/generator-asolver/run.sh | 21 ++ .../tutorial1/_generated/precice-config.xml | 44 +++ .../propagator-bsolver/adapter-config.json | 15 + .../_generated/propagator-bsolver/run.sh | 21 ++ new_examples/tutorial1/precice-config.xml | 44 --- new_examples/tutorial1/tutorial1.yaml | 4 +- new_examples/tutorial2/_generated/README.md | 83 +++++ new_examples/tutorial2/_generated/clean.sh | 350 ++++++++++++++++++ .../adapter-config.json | 15 + .../_generated/generator-left-asolver/run.sh | 21 ++ .../adapter-config.json | 15 + .../_generated/generator-right-asolver/run.sh | 21 ++ .../tutorial2/_generated/precice-config.xml | 71 ++++ .../propagator-bsolver/adapter-config.json | 24 ++ .../_generated/propagator-bsolver/run.sh | 21 ++ new_examples/tutorial2/precice-config.xml | 71 ---- new_examples/tutorial2/tutorial2.yaml | 6 +- new_examples/tutorial3/_generated/README.md | 78 ++++ new_examples/tutorial3/_generated/clean.sh | 350 ++++++++++++++++++ .../fluid-openfoam/adapter-config.json | 18 + .../_generated/fluid-openfoam/run.sh | 21 ++ .../tutorial3/_generated/precice-config.xml | 63 ++++ .../solid-nutils/adapter-config.json | 18 + .../tutorial3/_generated/solid-nutils/run.sh | 21 ++ new_examples/tutorial3/precice-config.xml | 63 ---- new_examples/tutorial4/_generated/README.md | 78 ++++ .../_generated/a-asolver/adapter-config.json | 15 + .../tutorial4/_generated/a-asolver/run.sh | 21 ++ .../_generated/b-bsolver/adapter-config.json | 15 + .../tutorial4/_generated/b-bsolver/run.sh | 21 ++ new_examples/tutorial4/_generated/clean.sh | 350 ++++++++++++++++++ .../tutorial4/_generated/precice-config.xml | 44 +++ new_examples/tutorial4/precice-config.xml | 44 --- 48 files changed, 3045 insertions(+), 371 deletions(-) create mode 100644 new_examples/multi-coupling/_generated/README.md create mode 100644 new_examples/multi-coupling/_generated/clean.sh create mode 100644 new_examples/multi-coupling/_generated/nastin-asolver/adapter-config.json create mode 100644 new_examples/multi-coupling/_generated/nastin-asolver/run.sh create mode 100644 new_examples/multi-coupling/_generated/precice-config.xml create mode 100644 new_examples/multi-coupling/_generated/solidz1-solver/adapter-config.json create mode 100644 new_examples/multi-coupling/_generated/solidz1-solver/run.sh create mode 100644 new_examples/multi-coupling/_generated/solidz2-solver/adapter-config.json create mode 100644 new_examples/multi-coupling/_generated/solidz2-solver/run.sh create mode 100644 new_examples/multi-coupling/_generated/solidz3-solver/adapter-config.json create mode 100644 new_examples/multi-coupling/_generated/solidz3-solver/run.sh delete mode 100644 new_examples/multi-coupling/precice-config.xml create mode 100644 new_examples/tutorial1/_generated/README.md create mode 100644 new_examples/tutorial1/_generated/clean.sh create mode 100644 new_examples/tutorial1/_generated/generator-asolver/adapter-config.json create mode 100644 new_examples/tutorial1/_generated/generator-asolver/run.sh create mode 100644 new_examples/tutorial1/_generated/precice-config.xml create mode 100644 new_examples/tutorial1/_generated/propagator-bsolver/adapter-config.json create mode 100644 new_examples/tutorial1/_generated/propagator-bsolver/run.sh delete mode 100644 new_examples/tutorial1/precice-config.xml create mode 100644 new_examples/tutorial2/_generated/README.md create mode 100644 new_examples/tutorial2/_generated/clean.sh create mode 100644 new_examples/tutorial2/_generated/generator-left-asolver/adapter-config.json create mode 100644 new_examples/tutorial2/_generated/generator-left-asolver/run.sh create mode 100644 new_examples/tutorial2/_generated/generator-right-asolver/adapter-config.json create mode 100644 new_examples/tutorial2/_generated/generator-right-asolver/run.sh create mode 100644 new_examples/tutorial2/_generated/precice-config.xml create mode 100644 new_examples/tutorial2/_generated/propagator-bsolver/adapter-config.json create mode 100644 new_examples/tutorial2/_generated/propagator-bsolver/run.sh delete mode 100644 new_examples/tutorial2/precice-config.xml create mode 100644 new_examples/tutorial3/_generated/README.md create mode 100644 new_examples/tutorial3/_generated/clean.sh create mode 100644 new_examples/tutorial3/_generated/fluid-openfoam/adapter-config.json create mode 100644 new_examples/tutorial3/_generated/fluid-openfoam/run.sh create mode 100644 new_examples/tutorial3/_generated/precice-config.xml create mode 100644 new_examples/tutorial3/_generated/solid-nutils/adapter-config.json create mode 100644 new_examples/tutorial3/_generated/solid-nutils/run.sh delete mode 100644 new_examples/tutorial3/precice-config.xml create mode 100644 new_examples/tutorial4/_generated/README.md create mode 100644 new_examples/tutorial4/_generated/a-asolver/adapter-config.json create mode 100644 new_examples/tutorial4/_generated/a-asolver/run.sh create mode 100644 new_examples/tutorial4/_generated/b-bsolver/adapter-config.json create mode 100644 new_examples/tutorial4/_generated/b-bsolver/run.sh create mode 100644 new_examples/tutorial4/_generated/clean.sh create mode 100644 new_examples/tutorial4/_generated/precice-config.xml delete mode 100644 new_examples/tutorial4/precice-config.xml diff --git a/new_examples/multi-coupling/_generated/README.md b/new_examples/multi-coupling/_generated/README.md new file mode 100644 index 0000000..fca3965 --- /dev/null +++ b/new_examples/multi-coupling/_generated/README.md @@ -0,0 +1,88 @@ +# Multiphysics Simulation Project + +> [!NOTE] This `README.md` file was auto-generated by preCICE case-generate. + + +--- + +## Project Overview + +This project uses **preCICE** for a multiphysics simulation involving: + +- Solver `ASolver` with participant `NASTIN` +- Solver `SolVer` with participant `SOLIDZ1` +- Solver `SolVer` with participant `SOLIDZ2` +- Solver `SolVer` with participant `SOLIDZ3` + +### Project Structure + +Global files that are generated are: `precice-config.xml`, `README.md` and `clean.sh`. Additionally, for each participant, a folder with an `adapter-config.json` and a `run.sh` file are created. +The folder structure is as follows: + +``` +_generated/ + ├── README.md # This file + ├── clean.sh # Clean up script + ├──nastin-asolver/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + ├──solidz1-solver/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + ├──solidz2-solver/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + ├──solidz3-solver/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + └── precice-config.xml # Global precice-config.xml file +``` + + +- `precice-config.xml` is the global preCICE configuration file which defines the parameters and communication of participants +- `adapter-config.json` is a configuration file to couple the solvers with preCICE. +- `run.sh` is a script that is meant to execute a participant. Note, however, that since different solvers are executed differently, this file is not implemented yet. +- `clean.sh` removes any files in the current root directory that were not created by preCICE case-generate (and moves them to a backup folder). +Execution: + +```bash +./clean.sh [--force] [--dry-run] +``` + +- `--force` Deletes the files and any backup folders +- `--dry-run` Does not delete any files, but prints files that would be deleted + +--- + +## Prerequisites + +Before running the simulation, ensure you have the following installed: + +- The preCICE coupling library +- Solver `ASolver` and its dependencies +- Solver `SolVer` and its dependencies +- Solver `SolVer` and its dependencies +- Solver `SolVer` and its dependencies + +--- + +## Running the Simulation + +### Quick Start + +```bash +# Navigate to the `_generated` folder +cd _generated/ + +# Implement the run script + +# Make the run script executable +chmod +x run.sh + +# Execute the simulation +./run.sh +``` + +--- + +For more information, see the [preCICE documentation](https://precice.org/docs.html) and [precice-case-generate](https://github.com/precice/case-generate). \ No newline at end of file diff --git a/new_examples/multi-coupling/_generated/clean.sh b/new_examples/multi-coupling/_generated/clean.sh new file mode 100644 index 0000000..2954b31 --- /dev/null +++ b/new_examples/multi-coupling/_generated/clean.sh @@ -0,0 +1,350 @@ +#!/usr/bin/env bash + +# ------------------------------------------------------------------- +# Script Name: clean.sh +# Description: Recursively deletes/moves files/dirs except: +# - Global preserved filenames anywhere (run.sh, adapter-config.json...) +# - Specific root files (README.md, precice-config.xml) +# Usage: ./clean.sh [--dry-run] [--force] +# --dry-run : show what would happen, don't remove/move +# --force : permanently delete unpreserved items AND remove existing backups +# ------------------------------------------------------------------- + +# Strict mode: +# -e: exit on error +# -u: exit on undefined variable +# -o pipefail: exit if any command in a pipe fails +set -euo pipefail + +# --- CONFIGURATION --- +ROOT_DIR="$(pwd)" +LOG_FILE="cleanup.log" +BACKUP_DIR="$ROOT_DIR/backup_$(date '+%Y%m%d_%H%M%S')" + +# 1. GLOBAL PRESERVES: filenames to keep anywhere in the tree +GLOBAL_PRESERVE_NAMES=( + "run.sh" + "adapter-config.json" +) + +# 2. ROOT PRESERVES: filenames to keep only if in ROOT_DIR +ROOT_PRESERVE_PATHS=( + "clean.sh" + "README.md" + "precice-config.xml" + "$LOG_FILE" # always keep the log (will be overwritten) +) + +# --- DEFAULTS --- +DRY_RUN=0 # No dry-run by default +FORCE=0 # No permanent removal of files by default +MOVED_COUNT=0 # Counter to track if we actually backed anything up +DELETED_COUNT=0 # Counter to track if we actually deleted anything + +# --- HELPERS --- + +log() { + # We use tee -a (append) here so we don't overwrite previous lines *of this run*. + # The file is cleared once at the start of the MAIN block. + echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE" +} + +# Is filename (basename) a global preserved name? +is_global_preserved() { + local filename="$1" + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [[ "$filename" == "$name" ]]; then + return 0 + fi + done + return 1 +} + +# Is a relative path preserved at root? +is_root_preserved() { + local relpath="$1" + for p in "${ROOT_PRESERVE_PATHS[@]}"; do + if [[ "$relpath" == "$p" ]]; then + return 0 + fi + done + return 1 +} + +# Find out whether directory contains any preserved file *anywhere* under it. +# Implementation Note: Uses `head -n 1` instead of `-quit` for maximum compatibility +# across all Linux distros (including Alpine/BusyBox) and BSD/MacOS. +dir_contains_preserved_content() { + local dir="$1" + local name + local -a find_args=() + + # Build find arguments: ( -name A -o -name B ... ) + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [ ${#find_args[@]} -eq 0 ]; then + find_args+=( -name "$name" ) + else + find_args+=( -o -name "$name" ) + fi + done + + # Check if find returns any match. + # piping to head -n 1 causes find to receive SIGPIPE and stop early if a match is found. + if [ -n "$(find "$dir" \( "${find_args[@]}" \) -print 2>/dev/null | head -n 1)" ]; then + return 0 + fi + return 1 +} + +# Ensure backup destination exists and safely move source there preserving relative path. +# Prevents collisions by making unique names if needed. +# Args: +# $1 = absolute src path +# $2 = rel path relative to ROOT_DIR (used to recreate path inside backup) +safe_move_to_backup() { + local src="$1" + local rel="$2" + + # Destination path = $BACKUP_DIR/$rel + local dest="$BACKUP_DIR/$rel" + local dest_dir + dest_dir="$(dirname "$dest")" + + # Normalize: if dirname is ".", use $BACKUP_DIR as target dir + if [[ "$dest_dir" == "$BACKUP_DIR/." ]] || [[ "$dest_dir" == "." ]]; then + dest_dir="$BACKUP_DIR" + fi + + if [ "$DRY_RUN" -eq 0 ]; then + mkdir -p "$dest_dir" + fi + + # If dest exists, append numeric suffix before extension to avoid overwrite + if [ -e "$dest" ]; then + local base name ext candidate n + base="$(basename "$dest")" + name="${base%.*}" + ext="${base##*.}" + n=1 + + # Check if file has an extension + if [[ "$ext" == "$base" ]]; then + # No extension + candidate="$dest_dir/${name}_$n" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n" + done + else + # Has extension + candidate="$dest_dir/${name}_$n.$ext" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n.$ext" + done + fi + dest="$candidate" + fi + + if [ "$DRY_RUN" -eq 1 ]; then + log "Would be deleted: ${rel}" + else + mv -- "$src" "$dest" + # Increment the counter because we successfully moved a file + MOVED_COUNT=$((MOVED_COUNT + 1)) + log "Deleted: ${rel}" + fi +} + +# Safe remove (used by --force). Respects --dry-run. +safe_remove() { + local src="$1" + local rel="$2" + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove: $rel" + else + rm -rf -- "$src" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed: $rel" + fi +} + +# Remove existing backup_* directories permanently (used when FORCE=1). +remove_existing_backups_permanently() { + shopt -s nullglob + local found=0 + for old in "$ROOT_DIR"/backup_*; do + if [ -d "$old" ]; then + found=1 + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove backup: $(basename "$old")" + else + rm -rf -- "$old" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed backup: $(basename "$old")" + fi + fi + done + shopt -u nullglob + if [ "$found" -eq 0 ]; then + log "No existing backup directories to remove." + fi +} + +# Perform action for a single path (file or directory) that is NOT preserved. +# Moves to backup preserving tree, or removes permanently when FORCE=1. +perform_action() { + local item="$1" + local rel_path="${item#$ROOT_DIR/}" + + if [ "$FORCE" -eq 1 ]; then + safe_remove "$item" "$rel_path" + else + safe_move_to_backup "$item" "$rel_path" + fi +} + +# --- RECURSIVE CLEANUP --- +recursive_cleanup() { + local current_dir="$1" + + # dotglob: includes hidden files (starting with .) + # nullglob: makes the loop not run if no files match (avoids literal string issues) + shopt -s dotglob nullglob + + local item rel_path base + + for item in "$current_dir"/*; do + # Sanity check: ensure file exists (handles rare race conditions or broken links) + [ ! -e "$item" ] && [ ! -L "$item" ] && continue + + rel_path="${item#$ROOT_DIR/}" + base="$(basename "$item")" + + # Skip . and .. (though glob usually excludes them, safety first) + if [[ "$base" == "." || "$base" == ".." ]]; then + continue + fi + + # --- FILE or SYMLINK --- + if [ -f "$item" ] || [ -L "$item" ]; then + # 1. Preserve by global name anywhere? + if is_global_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # 2. Preserve if at root and matches root-preserve list? + if [[ "$current_dir" == "$ROOT_DIR" ]] && is_root_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # Otherwise: perform action + perform_action "$item" + continue + fi + + # --- DIRECTORY --- + if [ -d "$item" ]; then + # Check if dir contains any preserved content anywhere below + if dir_contains_preserved_content "$item"; then + recursive_cleanup "$item" + + # After recursion, if directory is empty, remove it (respecting dry-run) + if [ -z "$(ls -A "$item")" ]; then + if [ "$DRY_RUN" -eq 1 ]; then + log "Would remove empty directory: $rel_path" + else + rmdir -- "$item" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Removed empty directory: $rel_path" + fi + fi + else + # Directory contains no preserved files anywhere deep: remove/move entire directory + perform_action "$item" + fi + continue + fi + done + + # Restore defaults for shopt to avoid side effects if function is reused + shopt -u dotglob nullglob +} + +# --- MAIN --- + +# Parse flags +while [[ $# -gt 0 ]]; do + case $1 in + --dry-run) DRY_RUN=1 ;; + --force) FORCE=1 ;; + *) echo "Unknown parameter: $1"; exit 1 ;; + esac + shift +done + +# Initialize/Clear the log file for this new run +: > "$LOG_FILE" + +# Confirmation prompt (skip when dry-run) +if [ "$DRY_RUN" -eq 1 ]; then + log "Dry run enabled, nothing will be removed." +else + read -p "This will delete all files except preserved ones. Proceed? [y/n]: " confirm + case "$confirm" in + [yY][eE][sS]|[yY]) ;; + *) log "Cleanup aborted."; exit 0 ;; + esac +fi + +if [ "$FORCE" -eq 1 ] && [ "$DRY_RUN" -eq 1 ]; then + log "Ignoring --force." + FORCE=0 +fi + +log "Starting cleanup..." + + +if [ "$FORCE" -eq 1 ]; then + remove_existing_backups_permanently +fi + +recursive_cleanup "$ROOT_DIR" + +if [ "$DELETED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" +else + FILE_STR="files" + DIRECTORY_STR="directories" +fi + +OUTPUT_STR="" + +# Output if FORCE +if [ "$FORCE" -eq 1 ]; then + OUTPUT_STR="Deleted $DELETED_COUNT $FILE_STR or $DIRECTORY_STR. " +fi + +if [ "$DRY_RUN" -eq 1 ]; then + OUTPUT_STR="Dry-run completed successfully." +else + OUTPUT_STR="${OUTPUT_STR}Cleanup completed successfully." +fi + +# Only append the backup message if we actually moved files (MOVED_COUNT > 0) +if [ "$MOVED_COUNT" -gt 0 ]; then + # Correct wording + if [ "$MOVED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" + else + FILE_STR="files" + DIRECTORY_STR="directories" + fi + OUTPUT_STR="$OUTPUT_STR Backed up $MOVED_COUNT deleted $FILE_STR or $DIRECTORY_STR in '$BACKUP_DIR'." +fi + +log "$OUTPUT_STR" \ No newline at end of file diff --git a/new_examples/multi-coupling/_generated/nastin-asolver/adapter-config.json b/new_examples/multi-coupling/_generated/nastin-asolver/adapter-config.json new file mode 100644 index 0000000..b3eaceb --- /dev/null +++ b/new_examples/multi-coupling/_generated/nastin-asolver/adapter-config.json @@ -0,0 +1,42 @@ +{ + "participant_name": "NASTIN", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "NASTIN-SOLIDZ1-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Displacements1" + ], + "write_data_names": [ + "Forces1" + ] + }, + { + "mesh_name": "NASTIN-SOLIDZ2-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Displacements2" + ], + "write_data_names": [ + "Forces2" + ] + }, + { + "mesh_name": "NASTIN-SOLIDZ3-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Displacements3" + ], + "write_data_names": [ + "Forces3" + ] + } + ] +} \ No newline at end of file diff --git a/new_examples/multi-coupling/_generated/nastin-asolver/run.sh b/new_examples/multi-coupling/_generated/nastin-asolver/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/new_examples/multi-coupling/_generated/nastin-asolver/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/multi-coupling/_generated/precice-config.xml b/new_examples/multi-coupling/_generated/precice-config.xml new file mode 100644 index 0000000..fd426a3 --- /dev/null +++ b/new_examples/multi-coupling/_generated/precice-config.xml @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/new_examples/multi-coupling/_generated/solidz1-solver/adapter-config.json b/new_examples/multi-coupling/_generated/solidz1-solver/adapter-config.json new file mode 100644 index 0000000..c065898 --- /dev/null +++ b/new_examples/multi-coupling/_generated/solidz1-solver/adapter-config.json @@ -0,0 +1,18 @@ +{ + "participant_name": "SOLIDZ1", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "SOLIDZ1-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Forces1" + ], + "write_data_names": [ + "Displacements1" + ] + } + ] +} \ No newline at end of file diff --git a/new_examples/multi-coupling/_generated/solidz1-solver/run.sh b/new_examples/multi-coupling/_generated/solidz1-solver/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/new_examples/multi-coupling/_generated/solidz1-solver/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/multi-coupling/_generated/solidz2-solver/adapter-config.json b/new_examples/multi-coupling/_generated/solidz2-solver/adapter-config.json new file mode 100644 index 0000000..249ddfa --- /dev/null +++ b/new_examples/multi-coupling/_generated/solidz2-solver/adapter-config.json @@ -0,0 +1,18 @@ +{ + "participant_name": "SOLIDZ2", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "SOLIDZ2-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Forces2" + ], + "write_data_names": [ + "Displacements2" + ] + } + ] +} \ No newline at end of file diff --git a/new_examples/multi-coupling/_generated/solidz2-solver/run.sh b/new_examples/multi-coupling/_generated/solidz2-solver/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/new_examples/multi-coupling/_generated/solidz2-solver/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/multi-coupling/_generated/solidz3-solver/adapter-config.json b/new_examples/multi-coupling/_generated/solidz3-solver/adapter-config.json new file mode 100644 index 0000000..5ccabe4 --- /dev/null +++ b/new_examples/multi-coupling/_generated/solidz3-solver/adapter-config.json @@ -0,0 +1,18 @@ +{ + "participant_name": "SOLIDZ3", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "SOLIDZ3-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Forces3" + ], + "write_data_names": [ + "Displacements3" + ] + } + ] +} \ No newline at end of file diff --git a/new_examples/multi-coupling/_generated/solidz3-solver/run.sh b/new_examples/multi-coupling/_generated/solidz3-solver/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/new_examples/multi-coupling/_generated/solidz3-solver/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/multi-coupling/precice-config.xml b/new_examples/multi-coupling/precice-config.xml deleted file mode 100644 index 409f3aa..0000000 --- a/new_examples/multi-coupling/precice-config.xml +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/new_examples/tutorial1/_generated/README.md b/new_examples/tutorial1/_generated/README.md new file mode 100644 index 0000000..5662797 --- /dev/null +++ b/new_examples/tutorial1/_generated/README.md @@ -0,0 +1,78 @@ +# Multiphysics Simulation Project + +> [!NOTE] This `README.md` file was auto-generated by preCICE case-generate. + + +--- + +## Project Overview + +This project uses **preCICE** for a multiphysics simulation involving: + +- Solver `ASolver` with participant `Generator` +- Solver `BSolver` with participant `Propagator` + +### Project Structure + +Global files that are generated are: `precice-config.xml`, `README.md` and `clean.sh`. Additionally, for each participant, a folder with an `adapter-config.json` and a `run.sh` file are created. +The folder structure is as follows: + +``` +_generated/ + ├── README.md # This file + ├── clean.sh # Clean up script + ├──generator-asolver/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + ├──propagator-bsolver/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + └── precice-config.xml # Global precice-config.xml file +``` + + +- `precice-config.xml` is the global preCICE configuration file which defines the parameters and communication of participants +- `adapter-config.json` is a configuration file to couple the solvers with preCICE. +- `run.sh` is a script that is meant to execute a participant. Note, however, that since different solvers are executed differently, this file is not implemented yet. +- `clean.sh` removes any files in the current root directory that were not created by preCICE case-generate (and moves them to a backup folder). +Execution: + +```bash +./clean.sh [--force] [--dry-run] +``` + +- `--force` Deletes the files and any backup folders +- `--dry-run` Does not delete any files, but prints files that would be deleted + +--- + +## Prerequisites + +Before running the simulation, ensure you have the following installed: + +- The preCICE coupling library +- Solver `ASolver` and its dependencies +- Solver `BSolver` and its dependencies + +--- + +## Running the Simulation + +### Quick Start + +```bash +# Navigate to the `_generated` folder +cd _generated/ + +# Implement the run script + +# Make the run script executable +chmod +x run.sh + +# Execute the simulation +./run.sh +``` + +--- + +For more information, see the [preCICE documentation](https://precice.org/docs.html) and [precice-case-generate](https://github.com/precice/case-generate). \ No newline at end of file diff --git a/new_examples/tutorial1/_generated/clean.sh b/new_examples/tutorial1/_generated/clean.sh new file mode 100644 index 0000000..2954b31 --- /dev/null +++ b/new_examples/tutorial1/_generated/clean.sh @@ -0,0 +1,350 @@ +#!/usr/bin/env bash + +# ------------------------------------------------------------------- +# Script Name: clean.sh +# Description: Recursively deletes/moves files/dirs except: +# - Global preserved filenames anywhere (run.sh, adapter-config.json...) +# - Specific root files (README.md, precice-config.xml) +# Usage: ./clean.sh [--dry-run] [--force] +# --dry-run : show what would happen, don't remove/move +# --force : permanently delete unpreserved items AND remove existing backups +# ------------------------------------------------------------------- + +# Strict mode: +# -e: exit on error +# -u: exit on undefined variable +# -o pipefail: exit if any command in a pipe fails +set -euo pipefail + +# --- CONFIGURATION --- +ROOT_DIR="$(pwd)" +LOG_FILE="cleanup.log" +BACKUP_DIR="$ROOT_DIR/backup_$(date '+%Y%m%d_%H%M%S')" + +# 1. GLOBAL PRESERVES: filenames to keep anywhere in the tree +GLOBAL_PRESERVE_NAMES=( + "run.sh" + "adapter-config.json" +) + +# 2. ROOT PRESERVES: filenames to keep only if in ROOT_DIR +ROOT_PRESERVE_PATHS=( + "clean.sh" + "README.md" + "precice-config.xml" + "$LOG_FILE" # always keep the log (will be overwritten) +) + +# --- DEFAULTS --- +DRY_RUN=0 # No dry-run by default +FORCE=0 # No permanent removal of files by default +MOVED_COUNT=0 # Counter to track if we actually backed anything up +DELETED_COUNT=0 # Counter to track if we actually deleted anything + +# --- HELPERS --- + +log() { + # We use tee -a (append) here so we don't overwrite previous lines *of this run*. + # The file is cleared once at the start of the MAIN block. + echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE" +} + +# Is filename (basename) a global preserved name? +is_global_preserved() { + local filename="$1" + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [[ "$filename" == "$name" ]]; then + return 0 + fi + done + return 1 +} + +# Is a relative path preserved at root? +is_root_preserved() { + local relpath="$1" + for p in "${ROOT_PRESERVE_PATHS[@]}"; do + if [[ "$relpath" == "$p" ]]; then + return 0 + fi + done + return 1 +} + +# Find out whether directory contains any preserved file *anywhere* under it. +# Implementation Note: Uses `head -n 1` instead of `-quit` for maximum compatibility +# across all Linux distros (including Alpine/BusyBox) and BSD/MacOS. +dir_contains_preserved_content() { + local dir="$1" + local name + local -a find_args=() + + # Build find arguments: ( -name A -o -name B ... ) + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [ ${#find_args[@]} -eq 0 ]; then + find_args+=( -name "$name" ) + else + find_args+=( -o -name "$name" ) + fi + done + + # Check if find returns any match. + # piping to head -n 1 causes find to receive SIGPIPE and stop early if a match is found. + if [ -n "$(find "$dir" \( "${find_args[@]}" \) -print 2>/dev/null | head -n 1)" ]; then + return 0 + fi + return 1 +} + +# Ensure backup destination exists and safely move source there preserving relative path. +# Prevents collisions by making unique names if needed. +# Args: +# $1 = absolute src path +# $2 = rel path relative to ROOT_DIR (used to recreate path inside backup) +safe_move_to_backup() { + local src="$1" + local rel="$2" + + # Destination path = $BACKUP_DIR/$rel + local dest="$BACKUP_DIR/$rel" + local dest_dir + dest_dir="$(dirname "$dest")" + + # Normalize: if dirname is ".", use $BACKUP_DIR as target dir + if [[ "$dest_dir" == "$BACKUP_DIR/." ]] || [[ "$dest_dir" == "." ]]; then + dest_dir="$BACKUP_DIR" + fi + + if [ "$DRY_RUN" -eq 0 ]; then + mkdir -p "$dest_dir" + fi + + # If dest exists, append numeric suffix before extension to avoid overwrite + if [ -e "$dest" ]; then + local base name ext candidate n + base="$(basename "$dest")" + name="${base%.*}" + ext="${base##*.}" + n=1 + + # Check if file has an extension + if [[ "$ext" == "$base" ]]; then + # No extension + candidate="$dest_dir/${name}_$n" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n" + done + else + # Has extension + candidate="$dest_dir/${name}_$n.$ext" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n.$ext" + done + fi + dest="$candidate" + fi + + if [ "$DRY_RUN" -eq 1 ]; then + log "Would be deleted: ${rel}" + else + mv -- "$src" "$dest" + # Increment the counter because we successfully moved a file + MOVED_COUNT=$((MOVED_COUNT + 1)) + log "Deleted: ${rel}" + fi +} + +# Safe remove (used by --force). Respects --dry-run. +safe_remove() { + local src="$1" + local rel="$2" + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove: $rel" + else + rm -rf -- "$src" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed: $rel" + fi +} + +# Remove existing backup_* directories permanently (used when FORCE=1). +remove_existing_backups_permanently() { + shopt -s nullglob + local found=0 + for old in "$ROOT_DIR"/backup_*; do + if [ -d "$old" ]; then + found=1 + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove backup: $(basename "$old")" + else + rm -rf -- "$old" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed backup: $(basename "$old")" + fi + fi + done + shopt -u nullglob + if [ "$found" -eq 0 ]; then + log "No existing backup directories to remove." + fi +} + +# Perform action for a single path (file or directory) that is NOT preserved. +# Moves to backup preserving tree, or removes permanently when FORCE=1. +perform_action() { + local item="$1" + local rel_path="${item#$ROOT_DIR/}" + + if [ "$FORCE" -eq 1 ]; then + safe_remove "$item" "$rel_path" + else + safe_move_to_backup "$item" "$rel_path" + fi +} + +# --- RECURSIVE CLEANUP --- +recursive_cleanup() { + local current_dir="$1" + + # dotglob: includes hidden files (starting with .) + # nullglob: makes the loop not run if no files match (avoids literal string issues) + shopt -s dotglob nullglob + + local item rel_path base + + for item in "$current_dir"/*; do + # Sanity check: ensure file exists (handles rare race conditions or broken links) + [ ! -e "$item" ] && [ ! -L "$item" ] && continue + + rel_path="${item#$ROOT_DIR/}" + base="$(basename "$item")" + + # Skip . and .. (though glob usually excludes them, safety first) + if [[ "$base" == "." || "$base" == ".." ]]; then + continue + fi + + # --- FILE or SYMLINK --- + if [ -f "$item" ] || [ -L "$item" ]; then + # 1. Preserve by global name anywhere? + if is_global_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # 2. Preserve if at root and matches root-preserve list? + if [[ "$current_dir" == "$ROOT_DIR" ]] && is_root_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # Otherwise: perform action + perform_action "$item" + continue + fi + + # --- DIRECTORY --- + if [ -d "$item" ]; then + # Check if dir contains any preserved content anywhere below + if dir_contains_preserved_content "$item"; then + recursive_cleanup "$item" + + # After recursion, if directory is empty, remove it (respecting dry-run) + if [ -z "$(ls -A "$item")" ]; then + if [ "$DRY_RUN" -eq 1 ]; then + log "Would remove empty directory: $rel_path" + else + rmdir -- "$item" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Removed empty directory: $rel_path" + fi + fi + else + # Directory contains no preserved files anywhere deep: remove/move entire directory + perform_action "$item" + fi + continue + fi + done + + # Restore defaults for shopt to avoid side effects if function is reused + shopt -u dotglob nullglob +} + +# --- MAIN --- + +# Parse flags +while [[ $# -gt 0 ]]; do + case $1 in + --dry-run) DRY_RUN=1 ;; + --force) FORCE=1 ;; + *) echo "Unknown parameter: $1"; exit 1 ;; + esac + shift +done + +# Initialize/Clear the log file for this new run +: > "$LOG_FILE" + +# Confirmation prompt (skip when dry-run) +if [ "$DRY_RUN" -eq 1 ]; then + log "Dry run enabled, nothing will be removed." +else + read -p "This will delete all files except preserved ones. Proceed? [y/n]: " confirm + case "$confirm" in + [yY][eE][sS]|[yY]) ;; + *) log "Cleanup aborted."; exit 0 ;; + esac +fi + +if [ "$FORCE" -eq 1 ] && [ "$DRY_RUN" -eq 1 ]; then + log "Ignoring --force." + FORCE=0 +fi + +log "Starting cleanup..." + + +if [ "$FORCE" -eq 1 ]; then + remove_existing_backups_permanently +fi + +recursive_cleanup "$ROOT_DIR" + +if [ "$DELETED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" +else + FILE_STR="files" + DIRECTORY_STR="directories" +fi + +OUTPUT_STR="" + +# Output if FORCE +if [ "$FORCE" -eq 1 ]; then + OUTPUT_STR="Deleted $DELETED_COUNT $FILE_STR or $DIRECTORY_STR. " +fi + +if [ "$DRY_RUN" -eq 1 ]; then + OUTPUT_STR="Dry-run completed successfully." +else + OUTPUT_STR="${OUTPUT_STR}Cleanup completed successfully." +fi + +# Only append the backup message if we actually moved files (MOVED_COUNT > 0) +if [ "$MOVED_COUNT" -gt 0 ]; then + # Correct wording + if [ "$MOVED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" + else + FILE_STR="files" + DIRECTORY_STR="directories" + fi + OUTPUT_STR="$OUTPUT_STR Backed up $MOVED_COUNT deleted $FILE_STR or $DIRECTORY_STR in '$BACKUP_DIR'." +fi + +log "$OUTPUT_STR" \ No newline at end of file diff --git a/new_examples/tutorial1/_generated/generator-asolver/adapter-config.json b/new_examples/tutorial1/_generated/generator-asolver/adapter-config.json new file mode 100644 index 0000000..84de0ac --- /dev/null +++ b/new_examples/tutorial1/_generated/generator-asolver/adapter-config.json @@ -0,0 +1,15 @@ +{ + "participant_name": "Generator", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "Generator-Mesh", + "patches": [ + "interface" + ], + "write_data_names": [ + "Color" + ] + } + ] +} \ No newline at end of file diff --git a/new_examples/tutorial1/_generated/generator-asolver/run.sh b/new_examples/tutorial1/_generated/generator-asolver/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/new_examples/tutorial1/_generated/generator-asolver/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/tutorial1/_generated/precice-config.xml b/new_examples/tutorial1/_generated/precice-config.xml new file mode 100644 index 0000000..7243805 --- /dev/null +++ b/new_examples/tutorial1/_generated/precice-config.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/new_examples/tutorial1/_generated/propagator-bsolver/adapter-config.json b/new_examples/tutorial1/_generated/propagator-bsolver/adapter-config.json new file mode 100644 index 0000000..390d7fc --- /dev/null +++ b/new_examples/tutorial1/_generated/propagator-bsolver/adapter-config.json @@ -0,0 +1,15 @@ +{ + "participant_name": "Propagator", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "Propagator-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Color" + ] + } + ] +} \ No newline at end of file diff --git a/new_examples/tutorial1/_generated/propagator-bsolver/run.sh b/new_examples/tutorial1/_generated/propagator-bsolver/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/new_examples/tutorial1/_generated/propagator-bsolver/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/tutorial1/precice-config.xml b/new_examples/tutorial1/precice-config.xml deleted file mode 100644 index ed37c33..0000000 --- a/new_examples/tutorial1/precice-config.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/new_examples/tutorial1/tutorial1.yaml b/new_examples/tutorial1/tutorial1.yaml index bd4a969..62ddb59 100644 --- a/new_examples/tutorial1/tutorial1.yaml +++ b/new_examples/tutorial1/tutorial1.yaml @@ -1,9 +1,9 @@ participants: - name: Generator - solver: FlexSolver2000 + solver: ASolver dimensionality: 2 - name: Propagator - solver: InvisSolve + solver: BSolver dimensionality: 2 exchanges: - from: Generator diff --git a/new_examples/tutorial2/_generated/README.md b/new_examples/tutorial2/_generated/README.md new file mode 100644 index 0000000..891ce73 --- /dev/null +++ b/new_examples/tutorial2/_generated/README.md @@ -0,0 +1,83 @@ +# Multiphysics Simulation Project + +> [!NOTE] This `README.md` file was auto-generated by preCICE case-generate. + + +--- + +## Project Overview + +This project uses **preCICE** for a multiphysics simulation involving: + +- Solver `ASolver` with participant `Generator-Left` +- Solver `ASolver` with participant `Generator-Right` +- Solver `BSolver` with participant `Propagator` + +### Project Structure + +Global files that are generated are: `precice-config.xml`, `README.md` and `clean.sh`. Additionally, for each participant, a folder with an `adapter-config.json` and a `run.sh` file are created. +The folder structure is as follows: + +``` +_generated/ + ├── README.md # This file + ├── clean.sh # Clean up script + ├──generator-left-asolver/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + ├──generator-right-asolver/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + ├──propagator-bsolver/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + └── precice-config.xml # Global precice-config.xml file +``` + + +- `precice-config.xml` is the global preCICE configuration file which defines the parameters and communication of participants +- `adapter-config.json` is a configuration file to couple the solvers with preCICE. +- `run.sh` is a script that is meant to execute a participant. Note, however, that since different solvers are executed differently, this file is not implemented yet. +- `clean.sh` removes any files in the current root directory that were not created by preCICE case-generate (and moves them to a backup folder). +Execution: + +```bash +./clean.sh [--force] [--dry-run] +``` + +- `--force` Deletes the files and any backup folders +- `--dry-run` Does not delete any files, but prints files that would be deleted + +--- + +## Prerequisites + +Before running the simulation, ensure you have the following installed: + +- The preCICE coupling library +- Solver `ASolver` and its dependencies +- Solver `ASolver` and its dependencies +- Solver `BSolver` and its dependencies + +--- + +## Running the Simulation + +### Quick Start + +```bash +# Navigate to the `_generated` folder +cd _generated/ + +# Implement the run script + +# Make the run script executable +chmod +x run.sh + +# Execute the simulation +./run.sh +``` + +--- + +For more information, see the [preCICE documentation](https://precice.org/docs.html) and [precice-case-generate](https://github.com/precice/case-generate). \ No newline at end of file diff --git a/new_examples/tutorial2/_generated/clean.sh b/new_examples/tutorial2/_generated/clean.sh new file mode 100644 index 0000000..2954b31 --- /dev/null +++ b/new_examples/tutorial2/_generated/clean.sh @@ -0,0 +1,350 @@ +#!/usr/bin/env bash + +# ------------------------------------------------------------------- +# Script Name: clean.sh +# Description: Recursively deletes/moves files/dirs except: +# - Global preserved filenames anywhere (run.sh, adapter-config.json...) +# - Specific root files (README.md, precice-config.xml) +# Usage: ./clean.sh [--dry-run] [--force] +# --dry-run : show what would happen, don't remove/move +# --force : permanently delete unpreserved items AND remove existing backups +# ------------------------------------------------------------------- + +# Strict mode: +# -e: exit on error +# -u: exit on undefined variable +# -o pipefail: exit if any command in a pipe fails +set -euo pipefail + +# --- CONFIGURATION --- +ROOT_DIR="$(pwd)" +LOG_FILE="cleanup.log" +BACKUP_DIR="$ROOT_DIR/backup_$(date '+%Y%m%d_%H%M%S')" + +# 1. GLOBAL PRESERVES: filenames to keep anywhere in the tree +GLOBAL_PRESERVE_NAMES=( + "run.sh" + "adapter-config.json" +) + +# 2. ROOT PRESERVES: filenames to keep only if in ROOT_DIR +ROOT_PRESERVE_PATHS=( + "clean.sh" + "README.md" + "precice-config.xml" + "$LOG_FILE" # always keep the log (will be overwritten) +) + +# --- DEFAULTS --- +DRY_RUN=0 # No dry-run by default +FORCE=0 # No permanent removal of files by default +MOVED_COUNT=0 # Counter to track if we actually backed anything up +DELETED_COUNT=0 # Counter to track if we actually deleted anything + +# --- HELPERS --- + +log() { + # We use tee -a (append) here so we don't overwrite previous lines *of this run*. + # The file is cleared once at the start of the MAIN block. + echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE" +} + +# Is filename (basename) a global preserved name? +is_global_preserved() { + local filename="$1" + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [[ "$filename" == "$name" ]]; then + return 0 + fi + done + return 1 +} + +# Is a relative path preserved at root? +is_root_preserved() { + local relpath="$1" + for p in "${ROOT_PRESERVE_PATHS[@]}"; do + if [[ "$relpath" == "$p" ]]; then + return 0 + fi + done + return 1 +} + +# Find out whether directory contains any preserved file *anywhere* under it. +# Implementation Note: Uses `head -n 1` instead of `-quit` for maximum compatibility +# across all Linux distros (including Alpine/BusyBox) and BSD/MacOS. +dir_contains_preserved_content() { + local dir="$1" + local name + local -a find_args=() + + # Build find arguments: ( -name A -o -name B ... ) + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [ ${#find_args[@]} -eq 0 ]; then + find_args+=( -name "$name" ) + else + find_args+=( -o -name "$name" ) + fi + done + + # Check if find returns any match. + # piping to head -n 1 causes find to receive SIGPIPE and stop early if a match is found. + if [ -n "$(find "$dir" \( "${find_args[@]}" \) -print 2>/dev/null | head -n 1)" ]; then + return 0 + fi + return 1 +} + +# Ensure backup destination exists and safely move source there preserving relative path. +# Prevents collisions by making unique names if needed. +# Args: +# $1 = absolute src path +# $2 = rel path relative to ROOT_DIR (used to recreate path inside backup) +safe_move_to_backup() { + local src="$1" + local rel="$2" + + # Destination path = $BACKUP_DIR/$rel + local dest="$BACKUP_DIR/$rel" + local dest_dir + dest_dir="$(dirname "$dest")" + + # Normalize: if dirname is ".", use $BACKUP_DIR as target dir + if [[ "$dest_dir" == "$BACKUP_DIR/." ]] || [[ "$dest_dir" == "." ]]; then + dest_dir="$BACKUP_DIR" + fi + + if [ "$DRY_RUN" -eq 0 ]; then + mkdir -p "$dest_dir" + fi + + # If dest exists, append numeric suffix before extension to avoid overwrite + if [ -e "$dest" ]; then + local base name ext candidate n + base="$(basename "$dest")" + name="${base%.*}" + ext="${base##*.}" + n=1 + + # Check if file has an extension + if [[ "$ext" == "$base" ]]; then + # No extension + candidate="$dest_dir/${name}_$n" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n" + done + else + # Has extension + candidate="$dest_dir/${name}_$n.$ext" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n.$ext" + done + fi + dest="$candidate" + fi + + if [ "$DRY_RUN" -eq 1 ]; then + log "Would be deleted: ${rel}" + else + mv -- "$src" "$dest" + # Increment the counter because we successfully moved a file + MOVED_COUNT=$((MOVED_COUNT + 1)) + log "Deleted: ${rel}" + fi +} + +# Safe remove (used by --force). Respects --dry-run. +safe_remove() { + local src="$1" + local rel="$2" + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove: $rel" + else + rm -rf -- "$src" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed: $rel" + fi +} + +# Remove existing backup_* directories permanently (used when FORCE=1). +remove_existing_backups_permanently() { + shopt -s nullglob + local found=0 + for old in "$ROOT_DIR"/backup_*; do + if [ -d "$old" ]; then + found=1 + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove backup: $(basename "$old")" + else + rm -rf -- "$old" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed backup: $(basename "$old")" + fi + fi + done + shopt -u nullglob + if [ "$found" -eq 0 ]; then + log "No existing backup directories to remove." + fi +} + +# Perform action for a single path (file or directory) that is NOT preserved. +# Moves to backup preserving tree, or removes permanently when FORCE=1. +perform_action() { + local item="$1" + local rel_path="${item#$ROOT_DIR/}" + + if [ "$FORCE" -eq 1 ]; then + safe_remove "$item" "$rel_path" + else + safe_move_to_backup "$item" "$rel_path" + fi +} + +# --- RECURSIVE CLEANUP --- +recursive_cleanup() { + local current_dir="$1" + + # dotglob: includes hidden files (starting with .) + # nullglob: makes the loop not run if no files match (avoids literal string issues) + shopt -s dotglob nullglob + + local item rel_path base + + for item in "$current_dir"/*; do + # Sanity check: ensure file exists (handles rare race conditions or broken links) + [ ! -e "$item" ] && [ ! -L "$item" ] && continue + + rel_path="${item#$ROOT_DIR/}" + base="$(basename "$item")" + + # Skip . and .. (though glob usually excludes them, safety first) + if [[ "$base" == "." || "$base" == ".." ]]; then + continue + fi + + # --- FILE or SYMLINK --- + if [ -f "$item" ] || [ -L "$item" ]; then + # 1. Preserve by global name anywhere? + if is_global_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # 2. Preserve if at root and matches root-preserve list? + if [[ "$current_dir" == "$ROOT_DIR" ]] && is_root_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # Otherwise: perform action + perform_action "$item" + continue + fi + + # --- DIRECTORY --- + if [ -d "$item" ]; then + # Check if dir contains any preserved content anywhere below + if dir_contains_preserved_content "$item"; then + recursive_cleanup "$item" + + # After recursion, if directory is empty, remove it (respecting dry-run) + if [ -z "$(ls -A "$item")" ]; then + if [ "$DRY_RUN" -eq 1 ]; then + log "Would remove empty directory: $rel_path" + else + rmdir -- "$item" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Removed empty directory: $rel_path" + fi + fi + else + # Directory contains no preserved files anywhere deep: remove/move entire directory + perform_action "$item" + fi + continue + fi + done + + # Restore defaults for shopt to avoid side effects if function is reused + shopt -u dotglob nullglob +} + +# --- MAIN --- + +# Parse flags +while [[ $# -gt 0 ]]; do + case $1 in + --dry-run) DRY_RUN=1 ;; + --force) FORCE=1 ;; + *) echo "Unknown parameter: $1"; exit 1 ;; + esac + shift +done + +# Initialize/Clear the log file for this new run +: > "$LOG_FILE" + +# Confirmation prompt (skip when dry-run) +if [ "$DRY_RUN" -eq 1 ]; then + log "Dry run enabled, nothing will be removed." +else + read -p "This will delete all files except preserved ones. Proceed? [y/n]: " confirm + case "$confirm" in + [yY][eE][sS]|[yY]) ;; + *) log "Cleanup aborted."; exit 0 ;; + esac +fi + +if [ "$FORCE" -eq 1 ] && [ "$DRY_RUN" -eq 1 ]; then + log "Ignoring --force." + FORCE=0 +fi + +log "Starting cleanup..." + + +if [ "$FORCE" -eq 1 ]; then + remove_existing_backups_permanently +fi + +recursive_cleanup "$ROOT_DIR" + +if [ "$DELETED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" +else + FILE_STR="files" + DIRECTORY_STR="directories" +fi + +OUTPUT_STR="" + +# Output if FORCE +if [ "$FORCE" -eq 1 ]; then + OUTPUT_STR="Deleted $DELETED_COUNT $FILE_STR or $DIRECTORY_STR. " +fi + +if [ "$DRY_RUN" -eq 1 ]; then + OUTPUT_STR="Dry-run completed successfully." +else + OUTPUT_STR="${OUTPUT_STR}Cleanup completed successfully." +fi + +# Only append the backup message if we actually moved files (MOVED_COUNT > 0) +if [ "$MOVED_COUNT" -gt 0 ]; then + # Correct wording + if [ "$MOVED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" + else + FILE_STR="files" + DIRECTORY_STR="directories" + fi + OUTPUT_STR="$OUTPUT_STR Backed up $MOVED_COUNT deleted $FILE_STR or $DIRECTORY_STR in '$BACKUP_DIR'." +fi + +log "$OUTPUT_STR" \ No newline at end of file diff --git a/new_examples/tutorial2/_generated/generator-left-asolver/adapter-config.json b/new_examples/tutorial2/_generated/generator-left-asolver/adapter-config.json new file mode 100644 index 0000000..097022e --- /dev/null +++ b/new_examples/tutorial2/_generated/generator-left-asolver/adapter-config.json @@ -0,0 +1,15 @@ +{ + "participant_name": "Generator-Left", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "Generator-Left-Mesh", + "patches": [ + "interface" + ], + "write_data_names": [ + "Color" + ] + } + ] +} \ No newline at end of file diff --git a/new_examples/tutorial2/_generated/generator-left-asolver/run.sh b/new_examples/tutorial2/_generated/generator-left-asolver/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/new_examples/tutorial2/_generated/generator-left-asolver/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/tutorial2/_generated/generator-right-asolver/adapter-config.json b/new_examples/tutorial2/_generated/generator-right-asolver/adapter-config.json new file mode 100644 index 0000000..b264df9 --- /dev/null +++ b/new_examples/tutorial2/_generated/generator-right-asolver/adapter-config.json @@ -0,0 +1,15 @@ +{ + "participant_name": "Generator-Right", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "Generator-Right-Mesh", + "patches": [ + "interface" + ], + "write_data_names": [ + "Pretty-Color" + ] + } + ] +} \ No newline at end of file diff --git a/new_examples/tutorial2/_generated/generator-right-asolver/run.sh b/new_examples/tutorial2/_generated/generator-right-asolver/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/new_examples/tutorial2/_generated/generator-right-asolver/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/tutorial2/_generated/precice-config.xml b/new_examples/tutorial2/_generated/precice-config.xml new file mode 100644 index 0000000..8708634 --- /dev/null +++ b/new_examples/tutorial2/_generated/precice-config.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/new_examples/tutorial2/_generated/propagator-bsolver/adapter-config.json b/new_examples/tutorial2/_generated/propagator-bsolver/adapter-config.json new file mode 100644 index 0000000..268b22b --- /dev/null +++ b/new_examples/tutorial2/_generated/propagator-bsolver/adapter-config.json @@ -0,0 +1,24 @@ +{ + "participant_name": "Propagator", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "Propagator-Generator-Left-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Color" + ] + }, + { + "mesh_name": "Propagator-Generator-Right-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Pretty-Color" + ] + } + ] +} \ No newline at end of file diff --git a/new_examples/tutorial2/_generated/propagator-bsolver/run.sh b/new_examples/tutorial2/_generated/propagator-bsolver/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/new_examples/tutorial2/_generated/propagator-bsolver/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/tutorial2/precice-config.xml b/new_examples/tutorial2/precice-config.xml deleted file mode 100644 index 21b4891..0000000 --- a/new_examples/tutorial2/precice-config.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/new_examples/tutorial2/tutorial2.yaml b/new_examples/tutorial2/tutorial2.yaml index ae6370b..76933df 100644 --- a/new_examples/tutorial2/tutorial2.yaml +++ b/new_examples/tutorial2/tutorial2.yaml @@ -1,12 +1,12 @@ participants: - name: Generator-Left - solver: FlexSolver2000 + solver: ASolver dimensionality: 2 - name: Generator-Right - solver: FlexSolver2000 + solver: ASolver dimensionality: 2 - name: Propagator - solver: InvisSolve + solver: BSolver dimensionality: 2 exchanges: - from: Generator-Left diff --git a/new_examples/tutorial3/_generated/README.md b/new_examples/tutorial3/_generated/README.md new file mode 100644 index 0000000..65463c3 --- /dev/null +++ b/new_examples/tutorial3/_generated/README.md @@ -0,0 +1,78 @@ +# Multiphysics Simulation Project + +> [!NOTE] This `README.md` file was auto-generated by preCICE case-generate. + + +--- + +## Project Overview + +This project uses **preCICE** for a multiphysics simulation involving: + +- Solver `OpenFOAM` with participant `Fluid` +- Solver `Nutils` with participant `Solid` + +### Project Structure + +Global files that are generated are: `precice-config.xml`, `README.md` and `clean.sh`. Additionally, for each participant, a folder with an `adapter-config.json` and a `run.sh` file are created. +The folder structure is as follows: + +``` +_generated/ + ├── README.md # This file + ├── clean.sh # Clean up script + ├──fluid-openfoam/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + ├──solid-nutils/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + └── precice-config.xml # Global precice-config.xml file +``` + + +- `precice-config.xml` is the global preCICE configuration file which defines the parameters and communication of participants +- `adapter-config.json` is a configuration file to couple the solvers with preCICE. +- `run.sh` is a script that is meant to execute a participant. Note, however, that since different solvers are executed differently, this file is not implemented yet. +- `clean.sh` removes any files in the current root directory that were not created by preCICE case-generate (and moves them to a backup folder). +Execution: + +```bash +./clean.sh [--force] [--dry-run] +``` + +- `--force` Deletes the files and any backup folders +- `--dry-run` Does not delete any files, but prints files that would be deleted + +--- + +## Prerequisites + +Before running the simulation, ensure you have the following installed: + +- The preCICE coupling library +- Solver `OpenFOAM` and its dependencies +- Solver `Nutils` and its dependencies + +--- + +## Running the Simulation + +### Quick Start + +```bash +# Navigate to the `_generated` folder +cd _generated/ + +# Implement the run script + +# Make the run script executable +chmod +x run.sh + +# Execute the simulation +./run.sh +``` + +--- + +For more information, see the [preCICE documentation](https://precice.org/docs.html) and [precice-case-generate](https://github.com/precice/case-generate). \ No newline at end of file diff --git a/new_examples/tutorial3/_generated/clean.sh b/new_examples/tutorial3/_generated/clean.sh new file mode 100644 index 0000000..2954b31 --- /dev/null +++ b/new_examples/tutorial3/_generated/clean.sh @@ -0,0 +1,350 @@ +#!/usr/bin/env bash + +# ------------------------------------------------------------------- +# Script Name: clean.sh +# Description: Recursively deletes/moves files/dirs except: +# - Global preserved filenames anywhere (run.sh, adapter-config.json...) +# - Specific root files (README.md, precice-config.xml) +# Usage: ./clean.sh [--dry-run] [--force] +# --dry-run : show what would happen, don't remove/move +# --force : permanently delete unpreserved items AND remove existing backups +# ------------------------------------------------------------------- + +# Strict mode: +# -e: exit on error +# -u: exit on undefined variable +# -o pipefail: exit if any command in a pipe fails +set -euo pipefail + +# --- CONFIGURATION --- +ROOT_DIR="$(pwd)" +LOG_FILE="cleanup.log" +BACKUP_DIR="$ROOT_DIR/backup_$(date '+%Y%m%d_%H%M%S')" + +# 1. GLOBAL PRESERVES: filenames to keep anywhere in the tree +GLOBAL_PRESERVE_NAMES=( + "run.sh" + "adapter-config.json" +) + +# 2. ROOT PRESERVES: filenames to keep only if in ROOT_DIR +ROOT_PRESERVE_PATHS=( + "clean.sh" + "README.md" + "precice-config.xml" + "$LOG_FILE" # always keep the log (will be overwritten) +) + +# --- DEFAULTS --- +DRY_RUN=0 # No dry-run by default +FORCE=0 # No permanent removal of files by default +MOVED_COUNT=0 # Counter to track if we actually backed anything up +DELETED_COUNT=0 # Counter to track if we actually deleted anything + +# --- HELPERS --- + +log() { + # We use tee -a (append) here so we don't overwrite previous lines *of this run*. + # The file is cleared once at the start of the MAIN block. + echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE" +} + +# Is filename (basename) a global preserved name? +is_global_preserved() { + local filename="$1" + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [[ "$filename" == "$name" ]]; then + return 0 + fi + done + return 1 +} + +# Is a relative path preserved at root? +is_root_preserved() { + local relpath="$1" + for p in "${ROOT_PRESERVE_PATHS[@]}"; do + if [[ "$relpath" == "$p" ]]; then + return 0 + fi + done + return 1 +} + +# Find out whether directory contains any preserved file *anywhere* under it. +# Implementation Note: Uses `head -n 1` instead of `-quit` for maximum compatibility +# across all Linux distros (including Alpine/BusyBox) and BSD/MacOS. +dir_contains_preserved_content() { + local dir="$1" + local name + local -a find_args=() + + # Build find arguments: ( -name A -o -name B ... ) + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [ ${#find_args[@]} -eq 0 ]; then + find_args+=( -name "$name" ) + else + find_args+=( -o -name "$name" ) + fi + done + + # Check if find returns any match. + # piping to head -n 1 causes find to receive SIGPIPE and stop early if a match is found. + if [ -n "$(find "$dir" \( "${find_args[@]}" \) -print 2>/dev/null | head -n 1)" ]; then + return 0 + fi + return 1 +} + +# Ensure backup destination exists and safely move source there preserving relative path. +# Prevents collisions by making unique names if needed. +# Args: +# $1 = absolute src path +# $2 = rel path relative to ROOT_DIR (used to recreate path inside backup) +safe_move_to_backup() { + local src="$1" + local rel="$2" + + # Destination path = $BACKUP_DIR/$rel + local dest="$BACKUP_DIR/$rel" + local dest_dir + dest_dir="$(dirname "$dest")" + + # Normalize: if dirname is ".", use $BACKUP_DIR as target dir + if [[ "$dest_dir" == "$BACKUP_DIR/." ]] || [[ "$dest_dir" == "." ]]; then + dest_dir="$BACKUP_DIR" + fi + + if [ "$DRY_RUN" -eq 0 ]; then + mkdir -p "$dest_dir" + fi + + # If dest exists, append numeric suffix before extension to avoid overwrite + if [ -e "$dest" ]; then + local base name ext candidate n + base="$(basename "$dest")" + name="${base%.*}" + ext="${base##*.}" + n=1 + + # Check if file has an extension + if [[ "$ext" == "$base" ]]; then + # No extension + candidate="$dest_dir/${name}_$n" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n" + done + else + # Has extension + candidate="$dest_dir/${name}_$n.$ext" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n.$ext" + done + fi + dest="$candidate" + fi + + if [ "$DRY_RUN" -eq 1 ]; then + log "Would be deleted: ${rel}" + else + mv -- "$src" "$dest" + # Increment the counter because we successfully moved a file + MOVED_COUNT=$((MOVED_COUNT + 1)) + log "Deleted: ${rel}" + fi +} + +# Safe remove (used by --force). Respects --dry-run. +safe_remove() { + local src="$1" + local rel="$2" + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove: $rel" + else + rm -rf -- "$src" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed: $rel" + fi +} + +# Remove existing backup_* directories permanently (used when FORCE=1). +remove_existing_backups_permanently() { + shopt -s nullglob + local found=0 + for old in "$ROOT_DIR"/backup_*; do + if [ -d "$old" ]; then + found=1 + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove backup: $(basename "$old")" + else + rm -rf -- "$old" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed backup: $(basename "$old")" + fi + fi + done + shopt -u nullglob + if [ "$found" -eq 0 ]; then + log "No existing backup directories to remove." + fi +} + +# Perform action for a single path (file or directory) that is NOT preserved. +# Moves to backup preserving tree, or removes permanently when FORCE=1. +perform_action() { + local item="$1" + local rel_path="${item#$ROOT_DIR/}" + + if [ "$FORCE" -eq 1 ]; then + safe_remove "$item" "$rel_path" + else + safe_move_to_backup "$item" "$rel_path" + fi +} + +# --- RECURSIVE CLEANUP --- +recursive_cleanup() { + local current_dir="$1" + + # dotglob: includes hidden files (starting with .) + # nullglob: makes the loop not run if no files match (avoids literal string issues) + shopt -s dotglob nullglob + + local item rel_path base + + for item in "$current_dir"/*; do + # Sanity check: ensure file exists (handles rare race conditions or broken links) + [ ! -e "$item" ] && [ ! -L "$item" ] && continue + + rel_path="${item#$ROOT_DIR/}" + base="$(basename "$item")" + + # Skip . and .. (though glob usually excludes them, safety first) + if [[ "$base" == "." || "$base" == ".." ]]; then + continue + fi + + # --- FILE or SYMLINK --- + if [ -f "$item" ] || [ -L "$item" ]; then + # 1. Preserve by global name anywhere? + if is_global_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # 2. Preserve if at root and matches root-preserve list? + if [[ "$current_dir" == "$ROOT_DIR" ]] && is_root_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # Otherwise: perform action + perform_action "$item" + continue + fi + + # --- DIRECTORY --- + if [ -d "$item" ]; then + # Check if dir contains any preserved content anywhere below + if dir_contains_preserved_content "$item"; then + recursive_cleanup "$item" + + # After recursion, if directory is empty, remove it (respecting dry-run) + if [ -z "$(ls -A "$item")" ]; then + if [ "$DRY_RUN" -eq 1 ]; then + log "Would remove empty directory: $rel_path" + else + rmdir -- "$item" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Removed empty directory: $rel_path" + fi + fi + else + # Directory contains no preserved files anywhere deep: remove/move entire directory + perform_action "$item" + fi + continue + fi + done + + # Restore defaults for shopt to avoid side effects if function is reused + shopt -u dotglob nullglob +} + +# --- MAIN --- + +# Parse flags +while [[ $# -gt 0 ]]; do + case $1 in + --dry-run) DRY_RUN=1 ;; + --force) FORCE=1 ;; + *) echo "Unknown parameter: $1"; exit 1 ;; + esac + shift +done + +# Initialize/Clear the log file for this new run +: > "$LOG_FILE" + +# Confirmation prompt (skip when dry-run) +if [ "$DRY_RUN" -eq 1 ]; then + log "Dry run enabled, nothing will be removed." +else + read -p "This will delete all files except preserved ones. Proceed? [y/n]: " confirm + case "$confirm" in + [yY][eE][sS]|[yY]) ;; + *) log "Cleanup aborted."; exit 0 ;; + esac +fi + +if [ "$FORCE" -eq 1 ] && [ "$DRY_RUN" -eq 1 ]; then + log "Ignoring --force." + FORCE=0 +fi + +log "Starting cleanup..." + + +if [ "$FORCE" -eq 1 ]; then + remove_existing_backups_permanently +fi + +recursive_cleanup "$ROOT_DIR" + +if [ "$DELETED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" +else + FILE_STR="files" + DIRECTORY_STR="directories" +fi + +OUTPUT_STR="" + +# Output if FORCE +if [ "$FORCE" -eq 1 ]; then + OUTPUT_STR="Deleted $DELETED_COUNT $FILE_STR or $DIRECTORY_STR. " +fi + +if [ "$DRY_RUN" -eq 1 ]; then + OUTPUT_STR="Dry-run completed successfully." +else + OUTPUT_STR="${OUTPUT_STR}Cleanup completed successfully." +fi + +# Only append the backup message if we actually moved files (MOVED_COUNT > 0) +if [ "$MOVED_COUNT" -gt 0 ]; then + # Correct wording + if [ "$MOVED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" + else + FILE_STR="files" + DIRECTORY_STR="directories" + fi + OUTPUT_STR="$OUTPUT_STR Backed up $MOVED_COUNT deleted $FILE_STR or $DIRECTORY_STR in '$BACKUP_DIR'." +fi + +log "$OUTPUT_STR" \ No newline at end of file diff --git a/new_examples/tutorial3/_generated/fluid-openfoam/adapter-config.json b/new_examples/tutorial3/_generated/fluid-openfoam/adapter-config.json new file mode 100644 index 0000000..434a2cc --- /dev/null +++ b/new_examples/tutorial3/_generated/fluid-openfoam/adapter-config.json @@ -0,0 +1,18 @@ +{ + "participant_name": "Fluid", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "Fluid-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Heat-Flux" + ], + "write_data_names": [ + "Temperature" + ] + } + ] +} \ No newline at end of file diff --git a/new_examples/tutorial3/_generated/fluid-openfoam/run.sh b/new_examples/tutorial3/_generated/fluid-openfoam/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/new_examples/tutorial3/_generated/fluid-openfoam/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/tutorial3/_generated/precice-config.xml b/new_examples/tutorial3/_generated/precice-config.xml new file mode 100644 index 0000000..f386cef --- /dev/null +++ b/new_examples/tutorial3/_generated/precice-config.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/new_examples/tutorial3/_generated/solid-nutils/adapter-config.json b/new_examples/tutorial3/_generated/solid-nutils/adapter-config.json new file mode 100644 index 0000000..2bc5e24 --- /dev/null +++ b/new_examples/tutorial3/_generated/solid-nutils/adapter-config.json @@ -0,0 +1,18 @@ +{ + "participant_name": "Solid", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "Solid-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Temperature" + ], + "write_data_names": [ + "Heat-Flux" + ] + } + ] +} \ No newline at end of file diff --git a/new_examples/tutorial3/_generated/solid-nutils/run.sh b/new_examples/tutorial3/_generated/solid-nutils/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/new_examples/tutorial3/_generated/solid-nutils/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/tutorial3/precice-config.xml b/new_examples/tutorial3/precice-config.xml deleted file mode 100644 index 8971c6b..0000000 --- a/new_examples/tutorial3/precice-config.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/new_examples/tutorial4/_generated/README.md b/new_examples/tutorial4/_generated/README.md new file mode 100644 index 0000000..9200ef5 --- /dev/null +++ b/new_examples/tutorial4/_generated/README.md @@ -0,0 +1,78 @@ +# Multiphysics Simulation Project + +> [!NOTE] This `README.md` file was auto-generated by preCICE case-generate. + + +--- + +## Project Overview + +This project uses **preCICE** for a multiphysics simulation involving: + +- Solver `ASolver` with participant `A` +- Solver `BSolver` with participant `B` + +### Project Structure + +Global files that are generated are: `precice-config.xml`, `README.md` and `clean.sh`. Additionally, for each participant, a folder with an `adapter-config.json` and a `run.sh` file are created. +The folder structure is as follows: + +``` +_generated/ + ├── README.md # This file + ├── clean.sh # Clean up script + ├──a-asolver/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + ├──b-bsolver/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + └── precice-config.xml # Global precice-config.xml file +``` + + +- `precice-config.xml` is the global preCICE configuration file which defines the parameters and communication of participants +- `adapter-config.json` is a configuration file to couple the solvers with preCICE. +- `run.sh` is a script that is meant to execute a participant. Note, however, that since different solvers are executed differently, this file is not implemented yet. +- `clean.sh` removes any files in the current root directory that were not created by preCICE case-generate (and moves them to a backup folder). +Execution: + +```bash +./clean.sh [--force] [--dry-run] +``` + +- `--force` Deletes the files and any backup folders +- `--dry-run` Does not delete any files, but prints files that would be deleted + +--- + +## Prerequisites + +Before running the simulation, ensure you have the following installed: + +- The preCICE coupling library +- Solver `ASolver` and its dependencies +- Solver `BSolver` and its dependencies + +--- + +## Running the Simulation + +### Quick Start + +```bash +# Navigate to the `_generated` folder +cd _generated/ + +# Implement the run script + +# Make the run script executable +chmod +x run.sh + +# Execute the simulation +./run.sh +``` + +--- + +For more information, see the [preCICE documentation](https://precice.org/docs.html) and [precice-case-generate](https://github.com/precice/case-generate). \ No newline at end of file diff --git a/new_examples/tutorial4/_generated/a-asolver/adapter-config.json b/new_examples/tutorial4/_generated/a-asolver/adapter-config.json new file mode 100644 index 0000000..99af464 --- /dev/null +++ b/new_examples/tutorial4/_generated/a-asolver/adapter-config.json @@ -0,0 +1,15 @@ +{ + "participant_name": "A", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "A-Mesh", + "patches": [ + "interface" + ], + "write_data_names": [ + "Data" + ] + } + ] +} \ No newline at end of file diff --git a/new_examples/tutorial4/_generated/a-asolver/run.sh b/new_examples/tutorial4/_generated/a-asolver/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/new_examples/tutorial4/_generated/a-asolver/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/tutorial4/_generated/b-bsolver/adapter-config.json b/new_examples/tutorial4/_generated/b-bsolver/adapter-config.json new file mode 100644 index 0000000..3306043 --- /dev/null +++ b/new_examples/tutorial4/_generated/b-bsolver/adapter-config.json @@ -0,0 +1,15 @@ +{ + "participant_name": "B", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "B-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Data" + ] + } + ] +} \ No newline at end of file diff --git a/new_examples/tutorial4/_generated/b-bsolver/run.sh b/new_examples/tutorial4/_generated/b-bsolver/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/new_examples/tutorial4/_generated/b-bsolver/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/tutorial4/_generated/clean.sh b/new_examples/tutorial4/_generated/clean.sh new file mode 100644 index 0000000..2954b31 --- /dev/null +++ b/new_examples/tutorial4/_generated/clean.sh @@ -0,0 +1,350 @@ +#!/usr/bin/env bash + +# ------------------------------------------------------------------- +# Script Name: clean.sh +# Description: Recursively deletes/moves files/dirs except: +# - Global preserved filenames anywhere (run.sh, adapter-config.json...) +# - Specific root files (README.md, precice-config.xml) +# Usage: ./clean.sh [--dry-run] [--force] +# --dry-run : show what would happen, don't remove/move +# --force : permanently delete unpreserved items AND remove existing backups +# ------------------------------------------------------------------- + +# Strict mode: +# -e: exit on error +# -u: exit on undefined variable +# -o pipefail: exit if any command in a pipe fails +set -euo pipefail + +# --- CONFIGURATION --- +ROOT_DIR="$(pwd)" +LOG_FILE="cleanup.log" +BACKUP_DIR="$ROOT_DIR/backup_$(date '+%Y%m%d_%H%M%S')" + +# 1. GLOBAL PRESERVES: filenames to keep anywhere in the tree +GLOBAL_PRESERVE_NAMES=( + "run.sh" + "adapter-config.json" +) + +# 2. ROOT PRESERVES: filenames to keep only if in ROOT_DIR +ROOT_PRESERVE_PATHS=( + "clean.sh" + "README.md" + "precice-config.xml" + "$LOG_FILE" # always keep the log (will be overwritten) +) + +# --- DEFAULTS --- +DRY_RUN=0 # No dry-run by default +FORCE=0 # No permanent removal of files by default +MOVED_COUNT=0 # Counter to track if we actually backed anything up +DELETED_COUNT=0 # Counter to track if we actually deleted anything + +# --- HELPERS --- + +log() { + # We use tee -a (append) here so we don't overwrite previous lines *of this run*. + # The file is cleared once at the start of the MAIN block. + echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE" +} + +# Is filename (basename) a global preserved name? +is_global_preserved() { + local filename="$1" + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [[ "$filename" == "$name" ]]; then + return 0 + fi + done + return 1 +} + +# Is a relative path preserved at root? +is_root_preserved() { + local relpath="$1" + for p in "${ROOT_PRESERVE_PATHS[@]}"; do + if [[ "$relpath" == "$p" ]]; then + return 0 + fi + done + return 1 +} + +# Find out whether directory contains any preserved file *anywhere* under it. +# Implementation Note: Uses `head -n 1` instead of `-quit` for maximum compatibility +# across all Linux distros (including Alpine/BusyBox) and BSD/MacOS. +dir_contains_preserved_content() { + local dir="$1" + local name + local -a find_args=() + + # Build find arguments: ( -name A -o -name B ... ) + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [ ${#find_args[@]} -eq 0 ]; then + find_args+=( -name "$name" ) + else + find_args+=( -o -name "$name" ) + fi + done + + # Check if find returns any match. + # piping to head -n 1 causes find to receive SIGPIPE and stop early if a match is found. + if [ -n "$(find "$dir" \( "${find_args[@]}" \) -print 2>/dev/null | head -n 1)" ]; then + return 0 + fi + return 1 +} + +# Ensure backup destination exists and safely move source there preserving relative path. +# Prevents collisions by making unique names if needed. +# Args: +# $1 = absolute src path +# $2 = rel path relative to ROOT_DIR (used to recreate path inside backup) +safe_move_to_backup() { + local src="$1" + local rel="$2" + + # Destination path = $BACKUP_DIR/$rel + local dest="$BACKUP_DIR/$rel" + local dest_dir + dest_dir="$(dirname "$dest")" + + # Normalize: if dirname is ".", use $BACKUP_DIR as target dir + if [[ "$dest_dir" == "$BACKUP_DIR/." ]] || [[ "$dest_dir" == "." ]]; then + dest_dir="$BACKUP_DIR" + fi + + if [ "$DRY_RUN" -eq 0 ]; then + mkdir -p "$dest_dir" + fi + + # If dest exists, append numeric suffix before extension to avoid overwrite + if [ -e "$dest" ]; then + local base name ext candidate n + base="$(basename "$dest")" + name="${base%.*}" + ext="${base##*.}" + n=1 + + # Check if file has an extension + if [[ "$ext" == "$base" ]]; then + # No extension + candidate="$dest_dir/${name}_$n" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n" + done + else + # Has extension + candidate="$dest_dir/${name}_$n.$ext" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n.$ext" + done + fi + dest="$candidate" + fi + + if [ "$DRY_RUN" -eq 1 ]; then + log "Would be deleted: ${rel}" + else + mv -- "$src" "$dest" + # Increment the counter because we successfully moved a file + MOVED_COUNT=$((MOVED_COUNT + 1)) + log "Deleted: ${rel}" + fi +} + +# Safe remove (used by --force). Respects --dry-run. +safe_remove() { + local src="$1" + local rel="$2" + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove: $rel" + else + rm -rf -- "$src" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed: $rel" + fi +} + +# Remove existing backup_* directories permanently (used when FORCE=1). +remove_existing_backups_permanently() { + shopt -s nullglob + local found=0 + for old in "$ROOT_DIR"/backup_*; do + if [ -d "$old" ]; then + found=1 + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove backup: $(basename "$old")" + else + rm -rf -- "$old" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed backup: $(basename "$old")" + fi + fi + done + shopt -u nullglob + if [ "$found" -eq 0 ]; then + log "No existing backup directories to remove." + fi +} + +# Perform action for a single path (file or directory) that is NOT preserved. +# Moves to backup preserving tree, or removes permanently when FORCE=1. +perform_action() { + local item="$1" + local rel_path="${item#$ROOT_DIR/}" + + if [ "$FORCE" -eq 1 ]; then + safe_remove "$item" "$rel_path" + else + safe_move_to_backup "$item" "$rel_path" + fi +} + +# --- RECURSIVE CLEANUP --- +recursive_cleanup() { + local current_dir="$1" + + # dotglob: includes hidden files (starting with .) + # nullglob: makes the loop not run if no files match (avoids literal string issues) + shopt -s dotglob nullglob + + local item rel_path base + + for item in "$current_dir"/*; do + # Sanity check: ensure file exists (handles rare race conditions or broken links) + [ ! -e "$item" ] && [ ! -L "$item" ] && continue + + rel_path="${item#$ROOT_DIR/}" + base="$(basename "$item")" + + # Skip . and .. (though glob usually excludes them, safety first) + if [[ "$base" == "." || "$base" == ".." ]]; then + continue + fi + + # --- FILE or SYMLINK --- + if [ -f "$item" ] || [ -L "$item" ]; then + # 1. Preserve by global name anywhere? + if is_global_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # 2. Preserve if at root and matches root-preserve list? + if [[ "$current_dir" == "$ROOT_DIR" ]] && is_root_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # Otherwise: perform action + perform_action "$item" + continue + fi + + # --- DIRECTORY --- + if [ -d "$item" ]; then + # Check if dir contains any preserved content anywhere below + if dir_contains_preserved_content "$item"; then + recursive_cleanup "$item" + + # After recursion, if directory is empty, remove it (respecting dry-run) + if [ -z "$(ls -A "$item")" ]; then + if [ "$DRY_RUN" -eq 1 ]; then + log "Would remove empty directory: $rel_path" + else + rmdir -- "$item" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Removed empty directory: $rel_path" + fi + fi + else + # Directory contains no preserved files anywhere deep: remove/move entire directory + perform_action "$item" + fi + continue + fi + done + + # Restore defaults for shopt to avoid side effects if function is reused + shopt -u dotglob nullglob +} + +# --- MAIN --- + +# Parse flags +while [[ $# -gt 0 ]]; do + case $1 in + --dry-run) DRY_RUN=1 ;; + --force) FORCE=1 ;; + *) echo "Unknown parameter: $1"; exit 1 ;; + esac + shift +done + +# Initialize/Clear the log file for this new run +: > "$LOG_FILE" + +# Confirmation prompt (skip when dry-run) +if [ "$DRY_RUN" -eq 1 ]; then + log "Dry run enabled, nothing will be removed." +else + read -p "This will delete all files except preserved ones. Proceed? [y/n]: " confirm + case "$confirm" in + [yY][eE][sS]|[yY]) ;; + *) log "Cleanup aborted."; exit 0 ;; + esac +fi + +if [ "$FORCE" -eq 1 ] && [ "$DRY_RUN" -eq 1 ]; then + log "Ignoring --force." + FORCE=0 +fi + +log "Starting cleanup..." + + +if [ "$FORCE" -eq 1 ]; then + remove_existing_backups_permanently +fi + +recursive_cleanup "$ROOT_DIR" + +if [ "$DELETED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" +else + FILE_STR="files" + DIRECTORY_STR="directories" +fi + +OUTPUT_STR="" + +# Output if FORCE +if [ "$FORCE" -eq 1 ]; then + OUTPUT_STR="Deleted $DELETED_COUNT $FILE_STR or $DIRECTORY_STR. " +fi + +if [ "$DRY_RUN" -eq 1 ]; then + OUTPUT_STR="Dry-run completed successfully." +else + OUTPUT_STR="${OUTPUT_STR}Cleanup completed successfully." +fi + +# Only append the backup message if we actually moved files (MOVED_COUNT > 0) +if [ "$MOVED_COUNT" -gt 0 ]; then + # Correct wording + if [ "$MOVED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" + else + FILE_STR="files" + DIRECTORY_STR="directories" + fi + OUTPUT_STR="$OUTPUT_STR Backed up $MOVED_COUNT deleted $FILE_STR or $DIRECTORY_STR in '$BACKUP_DIR'." +fi + +log "$OUTPUT_STR" \ No newline at end of file diff --git a/new_examples/tutorial4/_generated/precice-config.xml b/new_examples/tutorial4/_generated/precice-config.xml new file mode 100644 index 0000000..2161f49 --- /dev/null +++ b/new_examples/tutorial4/_generated/precice-config.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/new_examples/tutorial4/precice-config.xml b/new_examples/tutorial4/precice-config.xml deleted file mode 100644 index 3202678..0000000 --- a/new_examples/tutorial4/precice-config.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file From bd7c1ae2a0c3497fda6da5b586de33a177969538 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 5 Jan 2026 15:32:59 +0100 Subject: [PATCH 035/131] Added option for verbose output It will basically output the log on the console --- precicecasegenerate/cli.py | 17 +++++++++++------ precicecasegenerate/logging_setup.py | 9 +++++++-- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/precicecasegenerate/cli.py b/precicecasegenerate/cli.py index b8d21e8..9285db4 100644 --- a/precicecasegenerate/cli.py +++ b/precicecasegenerate/cli.py @@ -13,9 +13,6 @@ def main(): - logger = setup_logging() - logger.info("Program started.") - parser = argparse.ArgumentParser() parser.add_argument( @@ -23,20 +20,26 @@ def main(): type=str, help="Path to the input YAML file." ) - logger.debug("Parsing arguments.") + parser.add_argument( + "-v", "--verbose", action="store_true", help="Enable verbose output." + ) args = parser.parse_args() + + logger = setup_logging(verbose=args.verbose) + logger.info("Program started.") + logger.debug(f"Arguments parsed. Arguments: {vars(args)}. Checking if given file exists.") # Check if the file exists if not os.path.isfile(args.file_path): logger.critical(f"File {os.path.abspath(args.file_path)} does not exist. Aborting program.") sys.exit(1) - logger.debug("File exists.") + logger.debug(f"File {args.file_path} exists.") # Check if the file is a YAML file _, ext = os.path.splitext(args.file_path) if ext.lower() in [".yaml", ".yml"]: - logger.debug("File is a YAML file.") + logger.debug(f"File {args.file_path} is a YAML file.") else: logger.critical(f"File {os.path.abspath(args.file_path)} is not a YAML file. Aborting program.") @@ -62,6 +65,7 @@ def main(): config_creator.create_config_file(directory=path_to_generated, filename="precice-config.xml") logger.debug("Config creator finished.") + logger.debug("Creating participant directories.") participant_solver_map: dict = node_creator.get_participant_solver_map() for participant in participant_solver_map: participant_directory: str = helper.get_participant_solver_directory(path_to_generated, participant.name, @@ -69,6 +73,7 @@ def main(): # The directory will be overwritten if it already exists and is of the form "_generated/name-solver/" shutil.rmtree(participant_directory, ignore_errors=True) os.makedirs(participant_directory, exist_ok=True) + logger.debug(f"Created participant directory at {participant_directory}") logger.debug("Starting adapter config creator.") mesh_patch_map: dict = node_creator.get_mesh_patch_map() diff --git a/precicecasegenerate/logging_setup.py b/precicecasegenerate/logging_setup.py index 2080227..4450c65 100644 --- a/precicecasegenerate/logging_setup.py +++ b/precicecasegenerate/logging_setup.py @@ -30,7 +30,7 @@ def format(self, record: LogRecord) -> str: return formatted -def setup_logging() -> Logger: +def setup_logging(verbose: bool = False) -> Logger: timestamp: str = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S") path: str = ".logs/" @@ -53,7 +53,10 @@ def setup_logging() -> Logger: file_handler.setLevel(logging.DEBUG) # Only write warnings and errors to the console console_handler = logging.StreamHandler() - console_handler.setLevel(logging.INFO) + if not verbose: + console_handler.setLevel(logging.INFO) + else: + console_handler.setLevel(logging.DEBUG) file_formatter = logging.Formatter( "[%(asctime)s] [%(levelname)s] [%(name)s]: %(message)s", @@ -70,4 +73,6 @@ def setup_logging() -> Logger: logger.addHandler(file_handler) logger.addHandler(console_handler) + logger.debug("Logs can be found in .logs/") + return logger From 5c98df458b2d4a664bfe8466e6ed38866630e526 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 5 Jan 2026 15:57:05 +0100 Subject: [PATCH 036/131] Update helper.py Added a variable with a link to the repository --- precicecasegenerate/helper.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/precicecasegenerate/helper.py b/precicecasegenerate/helper.py index 5aa25d4..ba3dfd7 100644 --- a/precicecasegenerate/helper.py +++ b/precicecasegenerate/helper.py @@ -5,6 +5,8 @@ """ Helper items and classes for the NodeCreator. """ +# Link to the precice/case-generate repository +case_generate_repository_url: str = "https://github.com/precice/case-generate" # Set defaults here to be able to change them easily DEFAULT_DATA_TYPE: e.DataType = e.DataType.SCALAR From e0b5d20a880faca355d627f5db685b3876d50e42 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 5 Jan 2026 16:07:45 +0100 Subject: [PATCH 037/131] Automatic validation with precice-config-check It is executed automatically after creating the config. Added it to the pyproject.toml --- .../file_creators/config_creator.py | 34 +++++++++++++++++++ pyproject.toml | 3 +- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/precicecasegenerate/file_creators/config_creator.py b/precicecasegenerate/file_creators/config_creator.py index ecf342f..02463e8 100644 --- a/precicecasegenerate/file_creators/config_creator.py +++ b/precicecasegenerate/file_creators/config_creator.py @@ -1,6 +1,9 @@ import logging +import subprocess from precice_config_graph import nodes as n +import precicecasegenerate.helper as helper + logger = logging.getLogger(__name__) @@ -66,6 +69,36 @@ def _create_config_str(self) -> str: config_str += f"\n" return config_str + def _validate_config_file(self, filepath: str = "./precice-config.xml") -> None: + """ + Validate the preCICE configuration file at the given filepath using precice-config-check. + The subprocess precice-config-check only checks for logical errors and will crash if there are syntactic errors. + This means, however, that to pass this check, the configuration file must be syntactically and logically correct :) + :param filepath: The path to the preCICE configuration file. + """ + result = subprocess.run( + ["precice-config-check", filepath], + capture_output=True, # capture stdout/stderr + text=True # return strings instead of bytes + ) + # Output = 0 means everything went fine + if result.returncode == 0: + logger.debug("preCICE configuration file has been validated with precice-config-check.") + # Output = 1 means the file was not parsed correctly + elif result.returncode == 1: + logger.error( + f"The generated preCICE configuration file failed to validate with precice-config-check due to syntactic errors:\n" + f"{"".join("> " + line for line in result.stderr.splitlines(keepends=True))}\n" + f"This is likely an error within this program. Please visit {helper.case_generate_repository_url} for more help.") + # Output = 2 means the file was parsed correctly but contains logical errors + elif result.returncode == 2: + logger.error( + f"The generated preCICE configuration file failed to validate with precice-config-check due to logical errors:\n" + f"{"".join("> " + line for line in result.stdout.splitlines(keepends=True))}\n" + f"This is likely an error within this program. " + f"You can either try to fix the configuration file yourself or visit " + f"{helper.case_generate_repository_url} for more help.") + def create_config_file(self, directory: str = "./", filename: str = "precice-config.xml") -> None: """ Create a configuration file. @@ -76,3 +109,4 @@ def create_config_file(self, directory: str = "./", filename: str = "precice-con with open(directory + filename, "w") as f: f.write(self._create_config_str()) logger.info(f"preCICE configuration file written to {directory + filename}") + self._validate_config_file(filepath=directory + filename) diff --git a/pyproject.toml b/pyproject.toml index 51fc3b3..5c73ebe 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,7 +18,8 @@ requires-python = ">= 3.10" dependencies = [ "precice-config-graph", "pyyaml", - "jsonschema" + "jsonschema", + "precice-config-check @ git+https://github.com/precice/config-check.git" ] [project.scripts] From a8b2263860701f053acce9e41b85342d88124fdd Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 11 Jan 2026 08:32:05 +0100 Subject: [PATCH 038/131] Update node_creator.py Updated data node creation. Data is now only unique per mesh, meaning different participants can use the same data node. --- precicecasegenerate/node_creator.py | 63 ++++++++++------------------- 1 file changed, 22 insertions(+), 41 deletions(-) diff --git a/precicecasegenerate/node_creator.py b/precicecasegenerate/node_creator.py index 1f776df..7055f13 100644 --- a/precicecasegenerate/node_creator.py +++ b/precicecasegenerate/node_creator.py @@ -87,11 +87,12 @@ def _create_nodes(self) -> None: # Initialize data from exchanges tag (defined implicitly) # This uses the topology dict as keys, so it needs to be done after the patch preprocessing. - data_map: dict[frozenset, n.DataNode] = self._initialize_data(participant_map) + data_map: dict[frozenset, n.DataNode] = self._initialize_data() logger.debug(f"Created {len(set(data_map.values()))} data nodes.") # Initialize meshes from the exchanges tag (defined implicitly) - mesh_map: dict[tuple[n.ParticipantNode, n.ParticipantNode, str], n.MeshNode] = self._initialize_meshes_and_patches( + mesh_map: dict[ + tuple[n.ParticipantNode, n.ParticipantNode, str], n.MeshNode] = self._initialize_meshes_and_patches( participant_patch_label_map) logger.debug(f"Created {len(set(mesh_map.values()))} mesh nodes.") @@ -810,57 +811,37 @@ def _determine_control_participant(self, participants: list[n.ParticipantNode], f"with frequency {frequency_map[control_participant]}.") return control_participant - def _initialize_data(self, participant_map: dict[str, n.ParticipantNode]) -> dict[frozenset, n.DataNode]: + def _initialize_data(self) -> dict[frozenset, n.DataNode]: """ - Initialize data nodes based on the participants and the exchanges of the topology. - If different participants try to exchange the same data, the data-name will be "uniquified". + Initialize data nodes based on the participants and exchanges in the topology. + If a participant tries to exchange both a scalar and a vector variant of data of the same name, + the vector variant is preferred. :param participant_map: A dict mapping participant names to participant nodes. :return: A dict mapping exchanges to data nodes. """ # Map exchanges to data nodes. Use a frozenset since it is hashable and can be used as a key in a dict exchange_data_map: dict[frozenset, n.DataNode] = {} - # Map participant and their defined data to new data nodes that were created - participant_data_new_data_map: dict[tuple[n.ParticipantNode, str], n.DataNode] = {} - # List of known data - known_data: list[str] = [] + data_name_map: dict[str, n.DataNode] = {} + for exchange in self.topology["exchanges"]: - participant: n.ParticipantNode = participant_map[exchange["from"]] data_name: str = exchange["data"] - + data_type: e.DataType = exchange.get("data-type") + data_type = e.DataType(data_type) if data_type else helper.DEFAULT_DATA_TYPE # Check if this data is known - if data_name in known_data: - # Check if the same participant has already defined this data - if (participant, data_name) in participant_data_new_data_map: - # The same participant has already defined this data, so we use the existing data node - data_node: n.DataNode = participant_data_new_data_map[(participant, data_name)] - exchange_data_map[frozenset(exchange.items())] = data_node - # Another participant has defined this data. It needs to be uniquified - else: - uniquifier: str = random.choice(helper.DATA_UNIQUIFIERS) - helper.DATA_UNIQUIFIERS.remove(uniquifier) - new_data_name = uniquifier.capitalize() + "-" + data_name.capitalize() - data_type: e.DataType = exchange.get("data-type") - data_type = e.DataType(data_type) if data_type else helper.DEFAULT_DATA_TYPE - data_node: n.DataNode = n.DataNode(name=new_data_name, data_type=data_type) - self.data.append(data_node) - known_data.append(new_data_name) - exchange_data_map[frozenset(exchange.items())] = data_node - # Important: Map from old data_name, so that future exchanges recognize the data - participant_data_new_data_map[(participant, data_name)] = data_node - logger.warning(f"Uniquified data name from \"{exchange['data']}\" to \"{new_data_name}\" in the " - f"exchange from participant {participant.name} and patch {exchange['to-patch']} to " - f"participant {exchange['to']} and patch {exchange['to-patch']}.") + if data_name in data_name_map: + data_node: n.DataNode = data_name_map[data_name] + if data_type != data_node.data_type: + # Since the data types do not agree, we know that one uses vector data and the other scalar data + # The default is vector, so we choose the vector variant + logger.warning(f"Data {data_name} is used by multiple exchanges with different data types. " + f"Using data-type=\"{e.DataType.VECTOR.value}\" for all exchanges.") + data_node.data_type = e.DataType.VECTOR + # This data is unknown, so we create a new data node else: - # This data has never been observed before, so create a new data node - data_type: e.DataType = exchange.get("data-type") - data_type = e.DataType(data_type) if data_type else helper.DEFAULT_DATA_TYPE data_node: n.DataNode = n.DataNode(name=data_name, data_type=data_type) + data_name_map[data_name] = data_node self.data.append(data_node) - known_data.append(data_name) - exchange_data_map[frozenset(exchange.items())] = data_node - participant_data_new_data_map[(participant, data_name)] = data_node - logger.debug(f"Created data node {data_node.name} for participant {participant.name} and patch " - f"{exchange['from-patch']}.") + exchange_data_map[frozenset(exchange.items())] = data_node return exchange_data_map From cf76ccc7b66dc496efdb1da951a90cf9d123bb2f Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 11 Jan 2026 08:32:25 +0100 Subject: [PATCH 039/131] updated example configs --- .../multi-coupling/_generated/precice-config.xml | 4 ++-- .../generator-right-asolver/adapter-config.json | 2 +- new_examples/tutorial2/_generated/precice-config.xml | 11 +++++------ .../_generated/propagator-bsolver/adapter-config.json | 2 +- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/new_examples/multi-coupling/_generated/precice-config.xml b/new_examples/multi-coupling/_generated/precice-config.xml index fd426a3..44c39e6 100644 --- a/new_examples/multi-coupling/_generated/precice-config.xml +++ b/new_examples/multi-coupling/_generated/precice-config.xml @@ -111,10 +111,10 @@ - - + + diff --git a/new_examples/tutorial2/_generated/generator-right-asolver/adapter-config.json b/new_examples/tutorial2/_generated/generator-right-asolver/adapter-config.json index b264df9..0354ca9 100644 --- a/new_examples/tutorial2/_generated/generator-right-asolver/adapter-config.json +++ b/new_examples/tutorial2/_generated/generator-right-asolver/adapter-config.json @@ -8,7 +8,7 @@ "interface" ], "write_data_names": [ - "Pretty-Color" + "Color" ] } ] diff --git a/new_examples/tutorial2/_generated/precice-config.xml b/new_examples/tutorial2/_generated/precice-config.xml index 8708634..cfce745 100644 --- a/new_examples/tutorial2/_generated/precice-config.xml +++ b/new_examples/tutorial2/_generated/precice-config.xml @@ -8,7 +8,6 @@ - @@ -17,10 +16,10 @@ - + - + @@ -29,7 +28,7 @@ - + @@ -37,7 +36,7 @@ - + - + diff --git a/new_examples/tutorial2/_generated/propagator-bsolver/adapter-config.json b/new_examples/tutorial2/_generated/propagator-bsolver/adapter-config.json index 268b22b..32f9b21 100644 --- a/new_examples/tutorial2/_generated/propagator-bsolver/adapter-config.json +++ b/new_examples/tutorial2/_generated/propagator-bsolver/adapter-config.json @@ -17,7 +17,7 @@ "interface" ], "read_data_names": [ - "Pretty-Color" + "Color" ] } ] From bf5a216d4e3c9acb23f7f1fd13fe5df5d2c2e8fc Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 11 Jan 2026 09:30:25 +0100 Subject: [PATCH 040/131] Update helper.py Added new helper methods for capitalizing names and getting a random uniquifier from the list --- precicecasegenerate/helper.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/precicecasegenerate/helper.py b/precicecasegenerate/helper.py index ba3dfd7..162ecc4 100644 --- a/precicecasegenerate/helper.py +++ b/precicecasegenerate/helper.py @@ -1,3 +1,4 @@ +import random from enum import Enum from precice_config_graph import nodes as n from precice_config_graph import enums as e @@ -40,6 +41,24 @@ ] +def capitalize_name(name: str) -> str: + """ + Capitalize the first letter of each word in a string. + :param name: The string to capitalize. + :return: A capitalized string. + """ + return "-".join(part[:1].upper() + part[1:] for part in name.split("-")) + + +def get_uniquifier() -> str: + """ + Return a random string from the DATA_UNIQUIFIERS list and remove it from the list. + :return: A string to be used as a unique identifier for data names. + """ + unique_number = random.randint(0, len(DATA_UNIQUIFIERS) - 1) + return DATA_UNIQUIFIERS.pop(unique_number) + + def get_participant_solver_directory(parent_directory: str, participant_name: str, solver_name: str) -> str: """ Return the name of the directory for a participant of the simulation. From 9bdef4dffe7d217f70f812989a2d929adaee17af Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 11 Jan 2026 09:31:06 +0100 Subject: [PATCH 041/131] Update node_creator.py Updated data node initialization in order to avoid participants reading from and reading to the same mesh --- precicecasegenerate/node_creator.py | 41 ++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/precicecasegenerate/node_creator.py b/precicecasegenerate/node_creator.py index 7055f13..c7e6cf3 100644 --- a/precicecasegenerate/node_creator.py +++ b/precicecasegenerate/node_creator.py @@ -87,7 +87,7 @@ def _create_nodes(self) -> None: # Initialize data from exchanges tag (defined implicitly) # This uses the topology dict as keys, so it needs to be done after the patch preprocessing. - data_map: dict[frozenset, n.DataNode] = self._initialize_data() + data_map: dict[frozenset, n.DataNode] = self._initialize_data(participant_map) logger.debug(f"Created {len(set(data_map.values()))} data nodes.") # Initialize meshes from the exchanges tag (defined implicitly) @@ -811,7 +811,7 @@ def _determine_control_participant(self, participants: list[n.ParticipantNode], f"with frequency {frequency_map[control_participant]}.") return control_participant - def _initialize_data(self) -> dict[frozenset, n.DataNode]: + def _initialize_data(self, participant_map: dict[str, n.ParticipantNode]) -> dict[frozenset, n.DataNode]: """ Initialize data nodes based on the participants and exchanges in the topology. If a participant tries to exchange both a scalar and a vector variant of data of the same name, @@ -821,26 +821,59 @@ def _initialize_data(self) -> dict[frozenset, n.DataNode]: """ # Map exchanges to data nodes. Use a frozenset since it is hashable and can be used as a key in a dict exchange_data_map: dict[frozenset, n.DataNode] = {} + # Map data names to their respective data nodes data_name_map: dict[str, n.DataNode] = {} + # Map pairs of participants to data they exchange + participant_data_map: dict[tuple[n.ParticipantNode, n.ParticipantNode], list[n.DataNode]] = { + (p1, p2): [] for p1 in participant_map.values() for p2 in participant_map.values() + } + # Map pairs of participants and data names to data nodes + participant_data_name_map: dict[tuple[n.ParticipantNode, n.ParticipantNode, str], n.DataNode] = {} for exchange in self.topology["exchanges"]: data_name: str = exchange["data"] data_type: e.DataType = exchange.get("data-type") data_type = e.DataType(data_type) if data_type else helper.DEFAULT_DATA_TYPE + from_participant: n.ParticipantNode = participant_map[exchange["from"]] + to_participant: n.ParticipantNode = participant_map[exchange["to"]] + # Check if this data is known if data_name in data_name_map: data_node: n.DataNode = data_name_map[data_name] - if data_type != data_node.data_type: + # Check if data is already exchanged between these participants in the other direction + if ((to_participant, from_participant) in participant_data_map + and data_node in participant_data_map[(to_participant, from_participant)]): + # If so, the data name needs to be uniquified (and a new data node needs to be created), + # to avoid both participants writing and reading this data + uniquifier: str = helper.get_uniquifier() + new_data_name: str = f"{uniquifier.capitalize()}-{helper.capitalize_name(data_name)}" + logger.warning(f"Data name \"{data_name}\" is exchanged by participants {from_participant.name} " + f"and {to_participant.name} in both directions. Using \"{new_data_name}\" " + f"for one direction.") + data_node = n.DataNode(name=new_data_name, data_type=data_type) + data_name_map[new_data_name] = data_node + self.data.append(data_node) + logger.debug(f"Data {data_name} is already exchanged between participants {to_participant.name} " + f"and {from_participant.name}. Created new data node {data_node.name} for the direction " + f"{from_participant} to {to_participant} with uniquified data name.") + # Otherwise, check if the already-exchanged-data has a different type than the current data + elif data_type != data_node.data_type: # Since the data types do not agree, we know that one uses vector data and the other scalar data # The default is vector, so we choose the vector variant logger.warning(f"Data {data_name} is used by multiple exchanges with different data types. " f"Using data-type=\"{e.DataType.VECTOR.value}\" for all exchanges.") data_node.data_type = e.DataType.VECTOR + # This data is unknown, so we create a new data node else: - data_node: n.DataNode = n.DataNode(name=data_name, data_type=data_type) + data_node: n.DataNode = n.DataNode(name=helper.capitalize_name(data_name), data_type=data_type) data_name_map[data_name] = data_node + logger.debug(f"Created new data node {data_node.name} for data {data_name} " + f"between participants {from_participant.name} and {to_participant.name}") self.data.append(data_node) + + participant_data_map[(from_participant, to_participant)].append(data_node) + participant_data_name_map[(from_participant, to_participant, data_name)] = data_node exchange_data_map[frozenset(exchange.items())] = data_node return exchange_data_map From d5227ac40b521eea8884dd19ea0cff4e61bdb0b8 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 19 Jan 2026 17:09:13 +0100 Subject: [PATCH 042/131] Update helper.py Added new map for default data types and changed the default default data type to vector --- precicecasegenerate/helper.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/precicecasegenerate/helper.py b/precicecasegenerate/helper.py index 162ecc4..2a9046c 100644 --- a/precicecasegenerate/helper.py +++ b/precicecasegenerate/helper.py @@ -10,7 +10,7 @@ case_generate_repository_url: str = "https://github.com/precice/case-generate" # Set defaults here to be able to change them easily -DEFAULT_DATA_TYPE: e.DataType = e.DataType.SCALAR +DEFAULT_DATA_TYPE: e.DataType = e.DataType.VECTOR DEFAULT_PARTICIPANT_DIMENSIONALITY: int = 3 DEFAULT_MAPPING_METHOD: e.MappingMethod = e.MappingMethod.NEAREST_NEIGHBOR DEFAULT_ACCELERATION_TYPE: e.AccelerationType = e.AccelerationType.IQN_ILS @@ -31,7 +31,6 @@ "wonderful", "suspicious", "mischievous", - "clever", "pretty", "scary", "adventurous", @@ -40,6 +39,16 @@ "informative", ] +# A default data type if none is given +DEFAULT_DATA_TYPES: dict[str, e.DataType] = { + "force": e.DataType.VECTOR, + "displacement": e.DataType.VECTOR, + "temperature": e.DataType.SCALAR, + "pressure": e.DataType.SCALAR, + "velocity": e.DataType.VECTOR, + "heat-flux": e.DataType.VECTOR, +} + def capitalize_name(name: str) -> str: """ From 6e186cc8721edc629bfadc642fc12ab6e432630a Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 19 Jan 2026 17:09:57 +0100 Subject: [PATCH 043/131] Update config_creator.py Print m2ns before coupling schemes now to comply with precice-config-validate --- precicecasegenerate/file_creators/config_creator.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/precicecasegenerate/file_creators/config_creator.py b/precicecasegenerate/file_creators/config_creator.py index 02463e8..47d4abf 100644 --- a/precicecasegenerate/file_creators/config_creator.py +++ b/precicecasegenerate/file_creators/config_creator.py @@ -54,18 +54,18 @@ def _create_config_str(self) -> str: participant_str += f"{participant.to_xml()}" config_str += "".join(" " + line for line in participant_str.splitlines(keepends=True)) - config_str += "\n" # separate participants from coupling-schemes + config_str += "\n" # separate participants from m2ns + + for m2n in self.config_topology["m2n"]: + config_str += f" {m2n.to_xml()}" + + config_str += "\n" # separate m2ns from coupling-schemes coupling_scheme_str: str = "" for coupling_scheme in self.config_topology["coupling-schemes"]: coupling_scheme_str += f"{coupling_scheme.to_xml()}" config_str += "".join(" " + line for line in coupling_scheme_str.splitlines(keepends=True)) - config_str += "\n" # separate coupling-schemes from m2ns - - for m2n in self.config_topology["m2n"]: - config_str += f" {m2n.to_xml()}" - config_str += f"\n" return config_str From 499ae1c8cb71a16f5f37e41442005f966591fe2e Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 19 Jan 2026 17:15:15 +0100 Subject: [PATCH 044/131] Update node_creator.py Updated data initialization. This is now very complex to be able to process cases in which multiple exchanges have the same data=name tag. --- precicecasegenerate/node_creator.py | 280 ++++++++++++++++++++++++---- 1 file changed, 240 insertions(+), 40 deletions(-) diff --git a/precicecasegenerate/node_creator.py b/precicecasegenerate/node_creator.py index c7e6cf3..69b0432 100644 --- a/precicecasegenerate/node_creator.py +++ b/precicecasegenerate/node_creator.py @@ -814,67 +814,267 @@ def _determine_control_participant(self, participants: list[n.ParticipantNode], def _initialize_data(self, participant_map: dict[str, n.ParticipantNode]) -> dict[frozenset, n.DataNode]: """ Initialize data nodes based on the participants and exchanges in the topology. - If a participant tries to exchange both a scalar and a vector variant of data of the same name, - the vector variant is preferred. + This takes into account the type of the data node, i.e., either scalar or vector. + In case a pair of participants A and B exchanges a data "C" in both directions (A->B and B->A), + two nodes are created, one with a "uniquified" name. + In case participants A and B exchange data "C" with different types (e.g., A->B with scalar data + and B->A with vector data), two data nodes "C-Scalar" and "C-Vector" are created. + These cases can also be mixed and are thus even more challenging to handle; + in particular, with more than four exchanges, + there may not be enough information to uniquely identify the data node. + Such cases should, however, not occur frequently. :param participant_map: A dict mapping participant names to participant nodes. :return: A dict mapping exchanges to data nodes. """ # Map exchanges to data nodes. Use a frozenset since it is hashable and can be used as a key in a dict exchange_data_map: dict[frozenset, n.DataNode] = {} - # Map data names to their respective data nodes - data_name_map: dict[str, n.DataNode] = {} - # Map pairs of participants to data they exchange - participant_data_map: dict[tuple[n.ParticipantNode, n.ParticipantNode], list[n.DataNode]] = { - (p1, p2): [] for p1 in participant_map.values() for p2 in participant_map.values() - } - # Map pairs of participants and data names to data nodes - participant_data_name_map: dict[tuple[n.ParticipantNode, n.ParticipantNode, str], n.DataNode] = {} + # Map data names to their respective data nodes, differentiating between "vector" and "scalar" data + data_name_map: dict[str, dict[e.DataType, list[n.DataNode]]] = {} + # Map pairs of participants and data names to data nodes, differentiating between "vector" and "scalar" data + participant_data_name_map: dict[ + tuple[n.ParticipantNode, n.ParticipantNode, str], dict[e.DataType, n.DataNode]] = {} + # Keep track of data nodes exchanged by participants + participant_data_map: dict[tuple[n.ParticipantNode, str], list[n.DataNode]] = {} for exchange in self.topology["exchanges"]: data_name: str = exchange["data"] data_type: e.DataType = exchange.get("data-type") - data_type = e.DataType(data_type) if data_type else helper.DEFAULT_DATA_TYPE + if data_type is None: + # Check if the data has a default type + data_type = helper.DEFAULT_DATA_TYPES[data_name] \ + if data_name in helper.DEFAULT_DATA_TYPES else helper.DEFAULT_DATA_TYPE + logger.warning(f"No data type provided for data \"{data_name}\". " + f"Choosing default type \"{data_type.value}\".") + else: + data_type = e.DataType(data_type) + from_participant: n.ParticipantNode = participant_map[exchange["from"]] to_participant: n.ParticipantNode = participant_map[exchange["to"]] + logger.debug(f"Handling data {data_name} with type {data_type.value} between participants " + f"{from_participant.name} and {to_participant.name}") + + # Roughly, there are three possibilities: + # 1. The data is not known (great), create a new data node. + # 2. The data is known and exchanged from A->B and from B->A. This is not allowed; create a new unique data node. + # 3. The data is known and exchanged from A->B. Now there are two more possibilities: + # 3.1 Known data has type t; current data has type t (great); we do nothing + # 3.2 Known data has type t; current data has type s; we need to create a new unique data node. + # Variations of these cases can occur; the more participants are involved, + # the less unique these cases become, and the resulting precice-config.xml might depend on the + # ordering of exchanges. + # However, these are all very special cases that only occur in the very rare case that many exchanges have + # the same data name. # Check if this data is known if data_name in data_name_map: - data_node: n.DataNode = data_name_map[data_name] - # Check if data is already exchanged between these participants in the other direction - if ((to_participant, from_participant) in participant_data_map - and data_node in participant_data_map[(to_participant, from_participant)]): - # If so, the data name needs to be uniquified (and a new data node needs to be created), - # to avoid both participants writing and reading this data - uniquifier: str = helper.get_uniquifier() - new_data_name: str = f"{uniquifier.capitalize()}-{helper.capitalize_name(data_name)}" - logger.warning(f"Data name \"{data_name}\" is exchanged by participants {from_participant.name} " - f"and {to_participant.name} in both directions. Using \"{new_data_name}\" " - f"for one direction.") - data_node = n.DataNode(name=new_data_name, data_type=data_type) - data_name_map[new_data_name] = data_node - self.data.append(data_node) - logger.debug(f"Data {data_name} is already exchanged between participants {to_participant.name} " - f"and {from_participant.name}. Created new data node {data_node.name} for the direction " - f"{from_participant} to {to_participant} with uniquified data name.") - # Otherwise, check if the already-exchanged-data has a different type than the current data - elif data_type != data_node.data_type: - # Since the data types do not agree, we know that one uses vector data and the other scalar data - # The default is vector, so we choose the vector variant - logger.warning(f"Data {data_name} is used by multiple exchanges with different data types. " - f"Using data-type=\"{e.DataType.VECTOR.value}\" for all exchanges.") - data_node.data_type = e.DataType.VECTOR + vector_data_node: list[n.DataNode] = data_name_map[data_name].get(e.DataType.VECTOR) + scalar_data_node: list[n.DataNode] = data_name_map[data_name].get(e.DataType.SCALAR) + log_msg: str = f"Data {data_name} with type {data_type.value} is already known with type" + log_msg += f" vector" if vector_data_node is not None else "" + log_msg += " and" if vector_data_node is not None and scalar_data_node is not None else "" + log_msg += f" scalar" if scalar_data_node is not None else "" + logger.debug(log_msg) + + if vector_data_node and scalar_data_node: + # Check if the to_participant already exchanged this data with vector and scalar type. + # This means that "data-scalar" and "data-vector" already exist. + # In this case, we want to create a new unique data node; so unique-data. + # This case is again entered, if the from_participant exchanged this data with vector and scalar type. + # Then it will generate "unique-data-vector" and "unique-data-scalar". + if ((to_participant, data_name) in participant_data_map + and any(vdn in participant_data_map[(to_participant, data_name)] + for vdn in vector_data_node) + and any(sdn in participant_data_map[(to_participant, data_name)] + for sdn in scalar_data_node)): + # Check the case that the from_participant already exchanged this data with either vector and scalar type (not both). + if (from_participant, data_name) in participant_data_map: + # This should be == 1, since we only enter this method if B->A exchanges both vector and scalar, + # and A->B already exchanges one type. Since it is not allowed/possible to exchange + # the same data with the type multiple times, we should not be able to reach this point more than once. + assert len(participant_data_map[(from_participant, data_name)]) == 1, "Duplicate entry." + # Then, we want to get this data to have "unique-data-vector" and "unique-data-scalar", + # instead of "unique1-data" and "unique2-data". + old_data_node: n.DataNode = participant_data_map[(from_participant, data_name)][0] + old_data_name: str = old_data_node.name + new_data_name: str = helper.capitalize_name(old_data_name + "-" + data_type.value) + old_data_node.name = helper.capitalize_name( + old_data_node.name + "-" + old_data_node.data_type.value) + new_data_node: n.DataNode = n.DataNode(name=new_data_name, data_type=data_type) + + exchange_data_map[frozenset(exchange.items())] = new_data_node + self.data.append(new_data_node) + data_name_map[data_name][data_type].append(new_data_node) + if (from_participant, data_name) in participant_data_map: + participant_data_map[(from_participant, data_name)].append(new_data_node) + else: + participant_data_map[(from_participant, data_name)] = [new_data_node] + if (from_participant, to_participant, data_name) not in participant_data_name_map: + participant_data_name_map[(from_participant, to_participant, data_name)] = { + data_type: new_data_node} + else: + participant_data_name_map[(from_participant, to_participant, data_name)][ + data_type] = new_data_node + logger.warning(f"Split up data \"{old_data_name}\" into \"{old_data_node.name}\" and " + f"\"{new_data_node.name}\", since it occurs with different data types.") + # The to_participant does not exchange this data with vector or scalar type yet. + # This means we uniquify the data name (instead of "splitting"). + else: + uniquifier: str = helper.get_uniquifier() + new_data_name: str = f"{uniquifier.capitalize()}-{helper.capitalize_name(data_name)}" + logger.warning( + f"Data name \"{data_name}\" is exchanged by participants {from_participant.name} " + f"and {to_participant.name} in both directions. Using \"{new_data_name}\" " + f"for one direction.") + new_data_node = n.DataNode(name=new_data_name, data_type=data_type) + if (from_participant, to_participant, data_name) not in participant_data_name_map: + participant_data_name_map[(from_participant, to_participant, data_name)] = { + data_type: new_data_node} + else: + participant_data_name_map[(from_participant, to_participant, data_name)][ + data_type] = new_data_node + if data_type in data_name_map[data_name]: + data_name_map[data_name][data_type].append(new_data_node) + else: + data_name_map[data_name][data_type] = [new_data_node] + self.data.append(new_data_node) + if (from_participant, data_name) in participant_data_map: + participant_data_map[(from_participant, data_name)].append(new_data_node) + else: + participant_data_map[(from_participant, data_name)] = [new_data_node] + exchange_data_map[frozenset(exchange.items())] = new_data_node + + # Check if this data is already exchanged in the other direction (but not with both types) + elif (to_participant, from_participant, data_name) in participant_data_name_map: + # If so, the data name needs to be uniquified (and a new data node has to be created), + # to avoid both participants writing and reading this data + logger.debug(f"{from_participant.name}->{to_participant.name}: {data_name}({data_type.value})") + # Here, we also want to check that A->B does not yet exchange this data; + # in that case we should not uniquify but split + if (from_participant, to_participant, data_name) in participant_data_name_map: + print(participant_data_name_map[(from_participant, to_participant, data_name)]) + # We know that the other type must be known, since it cannot be known with the current type + if data_type == e.DataType.VECTOR: + old_data_node: n.DataNode = \ + participant_data_name_map[(from_participant, to_participant, data_name)][ + e.DataType.SCALAR] + else: + old_data_node: n.DataNode = \ + participant_data_name_map[(from_participant, to_participant, data_name)][ + e.DataType.VECTOR] + new_data_name: str = helper.capitalize_name(old_data_node.name + "-" + data_type.value) + old_data_name: str = helper.capitalize_name( + old_data_node.name + "-" + old_data_node.data_type.value) + old_data_node.name = old_data_name + new_data_node: n.DataNode = n.DataNode(name=new_data_name, data_type=data_type) + logger.warning(f"Split up data \"{old_data_name}\" into \"{old_data_node.name}\" and " + f"\"{new_data_node.name}\", since it occurs with different data types.") + else: + uniquifier: str = helper.get_uniquifier() + new_data_name: str = f"{uniquifier.capitalize()}-{helper.capitalize_name(data_name)}" + logger.warning( + f"Data name \"{data_name}\" is exchanged by participants {from_participant.name} " + f"and {to_participant.name} in both directions. Using \"{new_data_name}\" " + f"for one direction.") + new_data_node = n.DataNode(name=new_data_name, data_type=data_type) + + if (from_participant, to_participant, data_name) not in participant_data_name_map: + participant_data_name_map[(from_participant, to_participant, data_name)] = { + data_type: new_data_node} + else: + participant_data_name_map[(from_participant, to_participant, data_name)][ + data_type] = new_data_node + if data_type in data_name_map[data_name]: + data_name_map[data_name][data_type].append(new_data_node) + else: + data_name_map[data_name][data_type] = [new_data_node] + self.data.append(new_data_node) + if (from_participant, data_name) in participant_data_map: + participant_data_map[(from_participant, data_name)].append(new_data_node) + else: + participant_data_map[(from_participant, data_name)] = [new_data_node] + exchange_data_map[frozenset(exchange.items())] = new_data_node + else: + # Otherwise, we use a data node already exchanged by the from-participant + for key, value in participant_data_name_map.items(): + # key[0] is the from-participant, key[1] is the to-participant, key[2] is the data name + if key[0] == from_participant and key[2] == data_name and data_type in value: + data_node = value[data_type] + # This should not happen + assert data_node is not None, "Data node not found." + logger.debug(f"Chose data {data_node.name} with type {data_type.value}.") + exchange_data_map[frozenset(exchange.items())] = data_node + + # Either a vector or a scalar variant of the data is already known (not both) + else: + # This data node is used solely to check the type of the data node, + # and, since they all have the same "name", also to determine a new name + data_node: n.DataNode = vector_data_node[0] if vector_data_node else scalar_data_node[0] + + # Check if this data is known with another data type + # For this, it does not matter which data node out of the list we choose + if data_node.data_type != data_type: + data_node.name = helper.capitalize_name(data_node.name + "-" + data_node.data_type.value) + new_data_node_name: str = helper.capitalize_name(data_name + "-" + data_type.value) + new_data_node: n.DataNode = n.DataNode(name=new_data_node_name, data_type=data_type) + + if (from_participant, to_participant, data_name) not in participant_data_name_map: + participant_data_name_map[(from_participant, to_participant, data_name)] = { + data_type: new_data_node} + else: + participant_data_name_map[(from_participant, to_participant, data_name)][ + data_type] = new_data_node + if (from_participant, data_name) in participant_data_map: + participant_data_map[(from_participant, data_name)].append(new_data_node) + else: + participant_data_map[(from_participant, data_name)] = [new_data_node] + if data_type in data_name_map[data_name]: + data_name_map[data_name][data_type].append(new_data_node) + else: + data_name_map[data_name][data_type] = [new_data_node] + self.data.append(new_data_node) + logger.warning(f"Split up data \"{data_name}\" into {data_node.name} and {new_data_node.name}, " + f"since it occurs with different data types.") + exchange_data_map[frozenset(exchange.items())] = new_data_node + + # Check if this data is exchanged in the other direction, which is not allowed + elif (to_participant, from_participant, data_name) in participant_data_name_map: + uniquifier: str = helper.get_uniquifier() + new_data_name: str = f"{uniquifier.capitalize()}-{helper.capitalize_name(data_name)}" + logger.warning( + f"Data name \"{data_name}\" is exchanged by participants {from_participant.name} " + f"and {to_participant.name} in both directions. Using \"{new_data_name}\" " + f"for one direction.") + new_data_node = n.DataNode(name=new_data_name, data_type=data_type) + if (from_participant, to_participant, data_name) not in participant_data_name_map: + participant_data_name_map[(from_participant, to_participant, data_name)] = { + data_type: new_data_node} + else: + participant_data_name_map[(from_participant, to_participant, data_name)][ + data_type] = new_data_node + if (from_participant, data_name) in participant_data_map: + participant_data_map[(from_participant, data_name)].append(new_data_node) + else: + participant_data_map[(from_participant, data_name)] = [new_data_node] + self.data.append(new_data_node) + if data_type in data_name_map[data_name]: + data_name_map[data_name][data_type].append(new_data_node) + else: + data_name_map[data_name][data_type] = [new_data_node] + exchange_data_map[frozenset(exchange.items())] = new_data_node + # Otherwise, do nothing + else: + exchange_data_map[frozenset(exchange.items())] = data_node # This data is unknown, so we create a new data node else: data_node: n.DataNode = n.DataNode(name=helper.capitalize_name(data_name), data_type=data_type) - data_name_map[data_name] = data_node + data_name_map[data_name] = {data_type: [data_node]} logger.debug(f"Created new data node {data_node.name} for data {data_name} " f"between participants {from_participant.name} and {to_participant.name}") self.data.append(data_node) - - participant_data_map[(from_participant, to_participant)].append(data_node) - participant_data_name_map[(from_participant, to_participant, data_name)] = data_node - exchange_data_map[frozenset(exchange.items())] = data_node + participant_data_map[(from_participant, data_name)] = [data_node] + participant_data_name_map[(from_participant, to_participant, data_name)] = {data_type: data_node} + exchange_data_map[frozenset(exchange.items())] = data_node return exchange_data_map From 854ac81b70b5762aeb9a909d7679341447e5055b Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 19 Jan 2026 17:15:40 +0100 Subject: [PATCH 045/131] Update topology-schema.json Require at least one exchange in the topology; they must be unique as well. --- precicecasegenerate/schemas/topology-schema.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/precicecasegenerate/schemas/topology-schema.json b/precicecasegenerate/schemas/topology-schema.json index bd9b2ae..78760a6 100644 --- a/precicecasegenerate/schemas/topology-schema.json +++ b/precicecasegenerate/schemas/topology-schema.json @@ -84,7 +84,9 @@ "optional": [ "data-type" ] - } + }, + "minItems": 1, + "uniqueItems": true } }, "required": [ From 025ac96a1f68413fa6f3274ec69c0f4163ef0aa7 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 19 Jan 2026 17:16:31 +0100 Subject: [PATCH 046/131] Updated examples They now have correct m2n tags at the correct position --- .../multi-coupling/_generated/precice-config.xml | 14 +++++++------- .../tutorial1/_generated/precice-config.xml | 6 +++--- .../tutorial2/_generated/precice-config.xml | 8 ++++---- .../tutorial3/_generated/precice-config.xml | 8 ++++---- .../tutorial4/_generated/precice-config.xml | 6 +++--- 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/new_examples/multi-coupling/_generated/precice-config.xml b/new_examples/multi-coupling/_generated/precice-config.xml index 44c39e6..0576651 100644 --- a/new_examples/multi-coupling/_generated/precice-config.xml +++ b/new_examples/multi-coupling/_generated/precice-config.xml @@ -1,6 +1,6 @@ - + + + + + - - + + @@ -137,8 +141,4 @@ - - - - \ No newline at end of file diff --git a/new_examples/tutorial1/_generated/precice-config.xml b/new_examples/tutorial1/_generated/precice-config.xml index 7243805..3ba986e 100644 --- a/new_examples/tutorial1/_generated/precice-config.xml +++ b/new_examples/tutorial1/_generated/precice-config.xml @@ -1,6 +1,6 @@ - + + + @@ -39,6 +41,4 @@ - - \ No newline at end of file diff --git a/new_examples/tutorial2/_generated/precice-config.xml b/new_examples/tutorial2/_generated/precice-config.xml index cfce745..bebff6c 100644 --- a/new_examples/tutorial2/_generated/precice-config.xml +++ b/new_examples/tutorial2/_generated/precice-config.xml @@ -1,6 +1,6 @@ - + + + + @@ -64,7 +67,4 @@ - - - \ No newline at end of file diff --git a/new_examples/tutorial3/_generated/precice-config.xml b/new_examples/tutorial3/_generated/precice-config.xml index f386cef..bc26bcb 100644 --- a/new_examples/tutorial3/_generated/precice-config.xml +++ b/new_examples/tutorial3/_generated/precice-config.xml @@ -1,6 +1,6 @@ - + + + - + @@ -58,6 +60,4 @@ - - \ No newline at end of file diff --git a/new_examples/tutorial4/_generated/precice-config.xml b/new_examples/tutorial4/_generated/precice-config.xml index 2161f49..66eefac 100644 --- a/new_examples/tutorial4/_generated/precice-config.xml +++ b/new_examples/tutorial4/_generated/precice-config.xml @@ -1,6 +1,6 @@ - + + + @@ -39,6 +41,4 @@ - - \ No newline at end of file From 5f787d4c6720963ae347a113e2c90a7ec9e10c92 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 19 Jan 2026 17:17:35 +0100 Subject: [PATCH 047/131] Test cases for data types --- .../both_types_both_directions/topology.yaml | 53 +++++++++++++++++++ .../topology.yaml | 22 ++++++++ .../topology.yaml | 22 ++++++++ .../same_type_both_directions/topology.yaml | 22 ++++++++ .../same_type_one_direction/topology.yaml | 15 ++++++ 5 files changed, 134 insertions(+) create mode 100644 tests/new_tests/data-type/both_types_both_directions/topology.yaml create mode 100644 tests/new_tests/data-type/different_type_both_directions/topology.yaml create mode 100644 tests/new_tests/data-type/different_type_one_direction/topology.yaml create mode 100644 tests/new_tests/data-type/same_type_both_directions/topology.yaml create mode 100644 tests/new_tests/data-type/same_type_one_direction/topology.yaml diff --git a/tests/new_tests/data-type/both_types_both_directions/topology.yaml b/tests/new_tests/data-type/both_types_both_directions/topology.yaml new file mode 100644 index 0000000..bd32bad --- /dev/null +++ b/tests/new_tests/data-type/both_types_both_directions/topology.yaml @@ -0,0 +1,53 @@ +participants: + - name: A + solver: ASolver + dimensionality: 2 + - name: B + solver: BSolver + dimensionality: 2 + - name: C + solver: CSolver + dimensionality: 2 +exchanges: + - from: A + to: B + data: Color + type: weak + data-type: scalar + from-patch: interface + to-patch: interface + - from: B + to: A + data: Color + type: weak + data-type: scalar + from-patch: interface + to-patch: interface + - from: A + to: B + data: Color + type: weak + data-type: vector + from-patch: interface + to-patch: interface + - from: B + to: A + data: Color + type: weak + data-type: vector + from-patch: interface + to-patch: interface + - from: B + to: C + data: Color + type: weak + data-type: scalar + from-patch: interface + to-patch: interface + - from: B + to: C + data: Color + type: weak + data-type: vector + from-patch: interface + to-patch: interface diff --git a/tests/new_tests/data-type/different_type_both_directions/topology.yaml b/tests/new_tests/data-type/different_type_both_directions/topology.yaml new file mode 100644 index 0000000..9ecd8be --- /dev/null +++ b/tests/new_tests/data-type/different_type_both_directions/topology.yaml @@ -0,0 +1,22 @@ +participants: + - name: A + solver: ASolver + dimensionality: 2 + - name: B + solver: BSolver + dimensionality: 2 +exchanges: + - from: A + to: B + data: Color + type: weak + data-type: scalar + from-patch: interface + to-patch: interface + - from: B + to: A + data: Color + type: weak + data-type: vector + from-patch: interface + to-patch: interface diff --git a/tests/new_tests/data-type/different_type_one_direction/topology.yaml b/tests/new_tests/data-type/different_type_one_direction/topology.yaml new file mode 100644 index 0000000..734ecef --- /dev/null +++ b/tests/new_tests/data-type/different_type_one_direction/topology.yaml @@ -0,0 +1,22 @@ +participants: + - name: A + solver: ASolver + dimensionality: 2 + - name: B + solver: BSolver + dimensionality: 2 +exchanges: + - from: A + to: B + data: Color + type: weak + data-type: vector + from-patch: interface + to-patch: interface + - from: A + to: B + data: Color + type: weak + data-type: scalar + from-patch: interface + to-patch: interface \ No newline at end of file diff --git a/tests/new_tests/data-type/same_type_both_directions/topology.yaml b/tests/new_tests/data-type/same_type_both_directions/topology.yaml new file mode 100644 index 0000000..9c2ed59 --- /dev/null +++ b/tests/new_tests/data-type/same_type_both_directions/topology.yaml @@ -0,0 +1,22 @@ +participants: + - name: A + solver: ASolver + dimensionality: 2 + - name: B + solver: BSolver + dimensionality: 2 +exchanges: + - from: A + to: B + data: Color + type: weak + data-type: scalar + from-patch: interface + to-patch: interface + - from: B + to: A + data: Color + type: weak + data-type: scalar + from-patch: interface + to-patch: interface diff --git a/tests/new_tests/data-type/same_type_one_direction/topology.yaml b/tests/new_tests/data-type/same_type_one_direction/topology.yaml new file mode 100644 index 0000000..c1131cb --- /dev/null +++ b/tests/new_tests/data-type/same_type_one_direction/topology.yaml @@ -0,0 +1,15 @@ +participants: + - name: A + solver: ASolver + dimensionality: 2 + - name: B + solver: BSolver + dimensionality: 2 +exchanges: + - from: A + to: B + data: Color + type: weak + data-type: scalar + from-patch: interface + to-patch: interface From a2f5c4c015e93518cbb68ba6163de6731d02e13f Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 25 Jan 2026 09:06:35 +0100 Subject: [PATCH 048/131] Update cli.py Added optional output directory argument and used pathlib for all paths now --- precicecasegenerate/cli.py | 57 ++++++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 21 deletions(-) diff --git a/precicecasegenerate/cli.py b/precicecasegenerate/cli.py index 9285db4..68f5616 100644 --- a/precicecasegenerate/cli.py +++ b/precicecasegenerate/cli.py @@ -2,6 +2,7 @@ import sys import argparse import shutil +from pathlib import Path from precicecasegenerate.logging_setup import setup_logging from precicecasegenerate import helper @@ -23,6 +24,12 @@ def main(): parser.add_argument( "-v", "--verbose", action="store_true", help="Enable verbose output." ) + parser.add_argument( + "-o", "--output_path", + type=str, + default="./", + help="A custom output path for the generated files." + ) args = parser.parse_args() logger = setup_logging(verbose=args.verbose) @@ -30,28 +37,33 @@ def main(): logger.debug(f"Arguments parsed. Arguments: {vars(args)}. Checking if given file exists.") + PRECICE_CONFIG_FILE_NAME: str = "precice-config.xml" + + input_file: Path = Path(args.file_path) + output_root: Path = Path(args.output_path) + # Check if the file exists - if not os.path.isfile(args.file_path): - logger.critical(f"File {os.path.abspath(args.file_path)} does not exist. Aborting program.") + if not input_file.is_file(): + logger.critical(f"File {input_file.resolve()} does not exist. Aborting program.") sys.exit(1) - logger.debug(f"File {args.file_path} exists.") + logger.debug(f"File {input_file.resolve()} exists.") # Check if the file is a YAML file - _, ext = os.path.splitext(args.file_path) - if ext.lower() in [".yaml", ".yml"]: - logger.debug(f"File {args.file_path} is a YAML file.") + if input_file.suffix.lower() in [".yaml", ".yml"]: + logger.debug(f"File {input_file.resolve()} is a YAML file.") else: - logger.critical(f"File {os.path.abspath(args.file_path)} is not a YAML file. Aborting program.") + logger.critical(f"File {input_file.resolve()} is not a YAML file. Aborting program.") # Create a new directory for the generated files - path_to_generated: str = "_generated/" - logger.debug(f"Resetting generated files at {os.path.abspath(path_to_generated)}.") - # Ignore errors if the directory does not exist - shutil.rmtree(path_to_generated, ignore_errors=True) - os.makedirs(path_to_generated) + generated_dir: Path = output_root / "_generated" + logger.debug(f"Resetting generated files at {generated_dir.resolve()}.") + # Remove the directory if it already exists + if generated_dir.exists(): + shutil.rmtree(generated_dir, ignore_errors=True) + generated_dir.mkdir(parents=True, exist_ok=True) logger.debug("Starting topology reader.") - topology_reader: TopologyReader = TopologyReader(args.file_path) + topology_reader: TopologyReader = TopologyReader(str(input_file.resolve())) topology: dict = topology_reader.get_topology() logger.debug("Topology reader finished.") @@ -62,27 +74,30 @@ def main(): logger.debug("Starting config creator.") config_creator: ConfigCreator = ConfigCreator(nodes) - config_creator.create_config_file(directory=path_to_generated, filename="precice-config.xml") + config_creator.create_config_file(directory=generated_dir, filename=PRECICE_CONFIG_FILE_NAME) logger.debug("Config creator finished.") logger.debug("Creating participant directories.") participant_solver_map: dict = node_creator.get_participant_solver_map() for participant in participant_solver_map: - participant_directory: str = helper.get_participant_solver_directory(path_to_generated, participant.name, - participant_solver_map[participant]) + participant_directory: Path = helper.get_participant_solver_directory(generated_dir, participant.name, + participant_solver_map[participant]) # The directory will be overwritten if it already exists and is of the form "_generated/name-solver/" - shutil.rmtree(participant_directory, ignore_errors=True) - os.makedirs(participant_directory, exist_ok=True) + if participant_directory.exists(): + shutil.rmtree(participant_directory, ignore_errors=True) + participant_directory.mkdir(parents=True, exist_ok=True) logger.debug(f"Created participant directory at {participant_directory}") logger.debug("Starting adapter config creator.") mesh_patch_map: dict = node_creator.get_mesh_patch_map() - adapter_config_creator: AdapterConfigCreator = AdapterConfigCreator(participant_solver_map, mesh_patch_map) - adapter_config_creator.create_adapter_configs(parent_directory=path_to_generated) + adapter_config_creator: AdapterConfigCreator = AdapterConfigCreator(participant_solver_map, + mesh_patch_map, + precice_config_filename=PRECICE_CONFIG_FILE_NAME) + adapter_config_creator.create_adapter_configs(parent_directory=generated_dir) logger.debug("Starting utility file creator.") utility_file_creator: UtilityFileCreator = UtilityFileCreator(participant_solver_map) - utility_file_creator.create_utility_files(parent_directory=path_to_generated) + utility_file_creator.create_utility_files(parent_directory=generated_dir) logger.info("Program finished.") sys.exit(0) From b4b2eacc1ed6ffdcc2fd2bb98fd70ccd68b214fe Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 25 Jan 2026 09:08:15 +0100 Subject: [PATCH 049/131] Use json.dump() to create file This is less prone to errors than creating a big string. Also swapped paths to use pathlib instead of strings --- .../file_creators/adapter_config_creator.py | 198 +++++++----------- 1 file changed, 77 insertions(+), 121 deletions(-) diff --git a/precicecasegenerate/file_creators/adapter_config_creator.py b/precicecasegenerate/file_creators/adapter_config_creator.py index 04e324f..02ed978 100644 --- a/precicecasegenerate/file_creators/adapter_config_creator.py +++ b/precicecasegenerate/file_creators/adapter_config_creator.py @@ -1,6 +1,7 @@ import json import jsonschema import logging +from pathlib import Path from importlib.resources import files from precice_config_graph import nodes as n @@ -16,146 +17,96 @@ class AdapterConfigCreator: """ def __init__(self, participant_solver_map: dict[n.ParticipantNode, str], - mesh_patch_map: dict[n.MeshNode, set[str]]): + mesh_patch_map: dict[n.MeshNode, set[str]], precice_config_filename: str = "precice-config.xml"): """ Initialize an AdapterConfigCreator object, which creates adapter configuration files for each participant. :param participant_solver_map: A dict mapping participant nodes to their solver names. :param mesh_patch_map: A map mapping meshes to sets of patches. + :param precice_config_filename: The name of the precice-config.xml file. """ self.participant_solver_map = participant_solver_map self.patch_map = mesh_patch_map + self.precice_config_filename = precice_config_filename - def _create_adapter_config_str(self, participant: n.ParticipantNode, - mesh_patch_map: dict[n.MeshNode, set[str]]) -> str: + def _create_adapter_config_dict(self, participant: n.ParticipantNode, + mesh_patch_map: dict[n.MeshNode, set[str]]) -> dict[str, str | list[str]]: """ - Create a string representing the adapter configuration file for the given participant and mesh-patch map. - :param participant: The participant for which the adapter configuration file is created. - :param mesh_patch_map: A dict mapping meshes to sets of patches that they use. - :return: A string representing the adapter configuration file for the given participant and mesh-patch map. + Create a dictionary representing the adapter configuration file for the given participant. + :param participant: The participant for which the adapter configuration is created. + :param mesh_patch_map: A map mapping meshes to sets of patches that they use. + :return: A dict representing the adapter configuration file for the given participant. """ - indent: str = "\t" - - indent_lvl: int = 0 - adapter_config_str: str = f"{{\n" - indent_lvl += 1 - adapter_config_str += f"{indent_lvl * indent}\"participant_name\": \"{participant.name}\",\n" - adapter_config_str += f"{indent_lvl * indent}\"precice_config_file_name\": \"../precice-config.xml\",\n" - adapter_config_str += f"{indent_lvl * indent}\"interfaces\": [\n" - indent_lvl += 1 + interfaces: list[dict[str, str | list[str]]] = [] + # Create an entry for each mesh - # We can use provide meshes here, as there are no "api-access" meshes, - # i.e., a participant always reads from and writes to their own mesh for mesh in participant.provide_meshes: - adapter_config_str += f"{indent_lvl * indent}{{\n" - indent_lvl += 1 - adapter_config_str += f"{indent_lvl * indent}\"mesh_name\": \"{mesh.name}\",\n" - # Create an entry for each patch - adapter_config_str += "".join(indent_lvl * indent + line for line in - self._get_patch_string(mesh, mesh_patch_map).splitlines(keepends=True)) - # Create an entry for each read-data - adapter_config_str += "".join(indent_lvl * indent + line for line in - self._get_read_data_string(participant, mesh).splitlines(keepends=True)) - # Create an entry for each write-data - adapter_config_str += "".join(indent_lvl * indent + line for line in - self._get_write_data_string(participant, mesh).splitlines(keepends=True)) - adapter_config_str = adapter_config_str.rstrip(",\n") - adapter_config_str += "\n" - indent_lvl -= 1 - adapter_config_str += f"{indent_lvl * indent}}},\n" - logger.debug(f"Created adapter configuration entry for mesh {mesh.name} in participant " - f"{participant.name}'s adapter-config.") - # Remove the trailing comma - adapter_config_str = adapter_config_str.rstrip(",\n") - # Add the linebreak again - adapter_config_str += f"\n" - indent_lvl -= 1 - adapter_config_str += f"{indent_lvl * indent}]\n" - indent_lvl -= 1 - adapter_config_str += "}" - return adapter_config_str - - def _get_write_data_string(self, participant: n.ParticipantNode, mesh: n.MeshNode) -> str: - """ - Create a string of the form: - "write_data_names": ["data1", "data2", ...], - where the given participant writes the data to the given mesh. - :param participant: The participant that writes the data. - :param mesh: The mesh the data is written to. - :return: A string of the form described above. - """ - # Check if the mesh has any write-data - if not any(mesh == write_data.mesh for write_data in participant.write_data): - logger.debug(f"No write-data found for mesh {mesh.name} and participant {participant.name}.") - return "" - write_data_str: str = f"\"write_data_names\": [\n" - write_data_names: str = ", ".join(f"\"{write_data.data.name}\"" for write_data in participant.write_data - if write_data.mesh == mesh) + "\n" - indent: str = " " * 2 - write_data_str += indent + write_data_names - write_data_str += f"],\n" - return write_data_str - - def _get_read_data_string(self, participant: n.ParticipantNode, mesh: n.MeshNode) -> str: + # Get the patches used by the current mesh + patches: list[str] = sorted(list(mesh_patch_map.get(mesh, []))) + + # Get the read-data of the participant and the current mesh + read_data: list[str] = [ + rd.data.name for rd in participant.read_data + if rd.mesh == mesh + ] + + # Get the write-data of the participant and the current mesh + write_data: list[str] = [ + wd.data.name for wd in participant.write_data + if wd.mesh == mesh + ] + + # The mesh entry is a dictionary containing the mesh name and the patches used by it + mesh_entry: dict[str, str | list[str]] = { + "mesh_name": mesh.name, + "patches": patches + } + + # Only add read-/write-data keys if the mesh reads/writes data + if read_data: + mesh_entry["read_data_names"] = sorted(read_data) + if write_data: + mesh_entry["write_data_names"] = sorted(write_data) + + # Add the mesh entry to the list of interfaces + interfaces.append(mesh_entry) + logger.debug(f"Created adapter configuration entry for mesh {mesh.name} " + f"in participant {participant.name}'s adapter-config.") + + # The adapter-config file is a dictionary containing the participant name, + # the path to the precice-config.xml file and the list of interfaces + return { + "participant_name": participant.name, + "precice_config_file_name": f"../{self.precice_config_filename}", + "interfaces": interfaces + } + + def _validate_adapter_config_file(self, directory: Path = "./", filename: str = "adapter-config.json"): """ - Create a string of the form: - "read_data_names": ["data1", "data2", ...], - where the given participant reads the data from the given mesh. - :param participant: The participant that reads the data. - :param mesh: The mesh the data is read from. - :return: A string of the form described above. + Validate the adapter-config.json file in the given directory against the schema. + :param directory: The directory containing the adapter-config.json file. + :param filename: The name of the adapter-config file. + :return: None """ - # Check if the mesh has any read-data - if not any(mesh == read_data.mesh for read_data in participant.read_data): - logger.debug(f"No read-data found for mesh {mesh.name} and participant {participant.name}.") - return "" - read_data_str: str = f"\"read_data_names\": [\n" - read_data_names: str = ", ".join(f"\"{read_data.data.name}\"" for read_data in participant.read_data - if read_data.mesh == mesh) + "\n" - indent: str = " " * 2 - read_data_str += indent + read_data_names - read_data_str += f"],\n" - return read_data_str - - def _get_patch_string(self, mesh: n.MeshNode, mesh_patch_map: dict[n.MeshNode, set[str]]) -> str: - """ - Create a string of the form: - "patches": ["patch1", "patch2", ...], - where the given mesh uses the given patches, i.e., either reads data from or writes data to them. - :param mesh: The mesh using the patches. - :param mesh_patch_map: A dict mapping meshes to sets of patches. - :return: A string of the form described above. - """ - # This should never happen, but better check just i case - if mesh not in mesh_patch_map: - logger.error(f"Mesh {mesh.name} does not use any patches. This is likely an error within the program.") - return "" - patch_str: str = f"\"patches\": [\n" - patch_names: str = ", ".join(f"\"{item}\"" for item in mesh_patch_map[mesh]) + "\n" - indent: str = " " * 2 - patch_str += indent + patch_names - patch_str += f"],\n" - return patch_str - - def _validate_adapter_config_file(self, directory: str = "./", filename: str = "adapter-config.json"): + # Convert to Path object just in case + directory = Path(directory) schema_path = files("precicecasegenerate.schemas") / "adapter-config-schema.json" + file_path: Path = directory / filename - # Load your schema (from a file or directly as a dict) schema = json.loads(schema_path.read_text(encoding="utf-8")) - # Load the JSON file you want to validate - with open(directory + filename) as f: + with open(file_path, "r") as f: adapter_config = json.load(f) try: jsonschema.validate(adapter_config, schema) - logger.debug(f"Adapter config file {directory + filename} adheres to the schema.") + logger.debug(f"Adapter config file {file_path} adheres to the schema.") except jsonschema.ValidationError as e: - logger.error(f"Adapter config file {directory + filename} does not adhere to the schema " + logger.error(f"Adapter config file {file_path} does not adhere to the schema " f"as specified in {schema_path}: {e.message}. This is likely an error within the program.") def _create_adapter_config_file(self, participant: n.ParticipantNode, patch_map: dict[n.MeshNode, set[str]], - directory: str = "./", filename: str = "adapter-config.json"): + directory: Path = "./", filename: str = "adapter-config.json"): """ Write an adapter-config.json file for the given participant to the given directory. :param participant: The participant for which the adapter-config.json file is created. @@ -163,19 +114,24 @@ def _create_adapter_config_file(self, participant: n.ParticipantNode, :param directory: The directory to save the file in. :param filename: The name of the file. """ - with open(directory + filename, "w") as f: - f.write(self._create_adapter_config_str(participant, patch_map)) - logger.info(f"Adapter configuration file for participant {participant.name} written to {directory + filename}") - - def create_adapter_configs(self, parent_directory: str = "./"): + # Convert to Path object just in case + directory = Path(directory) + file_path: Path = directory / filename + adapter_config: dict[str, str | list[str]] = self._create_adapter_config_dict(participant, patch_map) + with open(file_path, "w") as f: + json.dump(adapter_config, f, indent=4) + logger.info(f"Adapter configuration file for participant {participant.name} written to {file_path}") + + def create_adapter_configs(self, parent_directory: Path = "./"): """ Create adapter-config.json files for all participants and directly validate them afterwards. The files are saved from the given parent-directory, in subdirectories of the form "participant-solver/". """ + # Convert to Path object just in case + parent_directory = Path(parent_directory) for participant in self.participant_solver_map: logger.debug(f"Creating adapter configuration file for participant {participant.name}.") - # Use lowercase - directory: str = helper.get_participant_solver_directory(parent_directory, participant.name, - self.participant_solver_map[participant]) + directory: Path = helper.get_participant_solver_directory(parent_directory, participant.name, + self.participant_solver_map[participant]) self._create_adapter_config_file(participant, self.patch_map, directory=directory) self._validate_adapter_config_file(directory=directory) From 5dcd9963beeeda1724b33aff18062dfb537b5e3d Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 25 Jan 2026 09:09:33 +0100 Subject: [PATCH 050/131] Update config_creator.py Switched to pathlib and removed validating the configuration file with `precice-config-check`. The validation / check will now only happen for test cases --- precicecasegenerate/file_creators/config_creator.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/precicecasegenerate/file_creators/config_creator.py b/precicecasegenerate/file_creators/config_creator.py index 47d4abf..94c4349 100644 --- a/precicecasegenerate/file_creators/config_creator.py +++ b/precicecasegenerate/file_creators/config_creator.py @@ -1,5 +1,6 @@ import logging import subprocess +from pathlib import Path from precice_config_graph import nodes as n import precicecasegenerate.helper as helper @@ -69,7 +70,7 @@ def _create_config_str(self) -> str: config_str += f"\n" return config_str - def _validate_config_file(self, filepath: str = "./precice-config.xml") -> None: + def validate_config_file(self, filepath: Path = "./precice-config.xml") -> None: """ Validate the preCICE configuration file at the given filepath using precice-config-check. The subprocess precice-config-check only checks for logical errors and will crash if there are syntactic errors. @@ -99,14 +100,16 @@ def _validate_config_file(self, filepath: str = "./precice-config.xml") -> None: f"You can either try to fix the configuration file yourself or visit " f"{helper.case_generate_repository_url} for more help.") - def create_config_file(self, directory: str = "./", filename: str = "precice-config.xml") -> None: + def create_config_file(self, directory: Path = "./", filename: str = "precice-config.xml") -> None: """ Create a configuration file. The file is saved in the given directory with the given filename. :param directory: The directory to save the file in. :param filename: The filename of the file. """ - with open(directory + filename, "w") as f: + # Convert to Path object just in case + directory = Path(directory) + file_path: Path = directory / filename + with open(file_path, "w") as f: f.write(self._create_config_str()) - logger.info(f"preCICE configuration file written to {directory + filename}") - self._validate_config_file(filepath=directory + filename) + logger.info(f"preCICE configuration file written to {file_path}") From 0a0378bdada00e2df2af6646deac40f29ca86bc1 Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 25 Jan 2026 09:09:53 +0100 Subject: [PATCH 051/131] Update utility_file_creator.py Switched to pathlib --- .../file_creators/utility_file_creator.py | 50 ++++++++++++------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/precicecasegenerate/file_creators/utility_file_creator.py b/precicecasegenerate/file_creators/utility_file_creator.py index 59a1ac4..93daa5f 100644 --- a/precicecasegenerate/file_creators/utility_file_creator.py +++ b/precicecasegenerate/file_creators/utility_file_creator.py @@ -23,13 +23,15 @@ def __init__(self, participant_solver_map: dict[n.ParticipantNode, str]): """ self.participant_solver_map = participant_solver_map - def create_utility_files(self, parent_directory: str = "./") -> None: + def create_utility_files(self, parent_directory: Path = "./") -> None: """ Create all utility files for the generated project: clean.sh, README.md and run.sh for each participant-solver pair. :param parent_directory: The directory from which to save the files. :return: None """ + # Convert to Path object just in case + parent_directory = Path(parent_directory) self._create_clean_file(parent_directory) # Create a run file for each participant for participant in self.participant_solver_map: @@ -38,53 +40,63 @@ def create_utility_files(self, parent_directory: str = "./") -> None: self._create_run_file(participant_directory) self._create_readme_file(parent_directory) - def _create_clean_file(self, directory: str = "./") -> None: + def _create_clean_file(self, directory: Path = "./") -> None: """ Create a clean-file for the simulation in the given directory. This copies the template file `precicecasegenerate/templates/clean.sh` to the specified directory. :param directory: The directory to save the file in. :return: None """ + # Convert to Path object just in case + directory = Path(directory) + # Get the file to copy src = files("precicecasegenerate.templates") / "clean.sh" + # Create directory if it does not exist + directory.mkdir(parents=True, exist_ok=True) - dst_dir = Path(directory) - dst_dir.mkdir(parents=True, exist_ok=True) - # directory + filename - dst_file = dst_dir / src.name + file_path: Path = directory / src.name - # Use as_file to get a real path + # Use as_file to get a real path even if the file is zipped with as_file(src) as real_src_path: - shutil.copy2(real_src_path, dst_file) - logger.debug(f"File clean.sh written to {directory + dst_file.name}") + shutil.copy2(real_src_path, file_path) + logger.debug(f"File clean.sh written to {file_path.resolve()}") - def _create_run_file(self, directory: str = "./") -> None: + def _create_run_file(self, directory: Path = "./") -> None: """ Create a run file for a participant in the given directory. This copies the template file `precicecasegenerate/templates/run.sh` to the specified directory. :param directory: The directory to save the file in. :return: None """ + # Convert to Path object just in case + directory = Path(directory) + # Get the file to copy src = files("precicecasegenerate.templates") / "run.sh" + # Create directory if it does not exist + directory.mkdir(parents=True, exist_ok=True) - dst_dir = Path(directory) - dst_dir.mkdir(parents=True, exist_ok=True) - # directory + filename - dst_file = dst_dir / src.name + file_path: Path = directory / src.name # Use as_file to get a real path with as_file(src) as real_src_path: - shutil.copy2(real_src_path, dst_file) - logger.debug(f"File run.sh written to {directory + dst_file.name}") + shutil.copy2(real_src_path, file_path) + logger.debug(f"File run.sh written to {file_path.resolve()}") - def _create_readme_file(self, directory: str = "./", filename: str = "README.md") -> None: + def _create_readme_file(self, directory: Path = "./", filename: str = "README.md") -> None: """ Create a README file in the given directory. :param directory: The directory to save the file in. :return: None """ - with open(directory + filename, "w") as f: + # Convert to Path object just in case + directory = Path(directory) + # Create directory if it does not exist + directory.mkdir(parents=True, exist_ok=True) + + file_path: Path = directory / filename + with open(file_path, "w") as f: f.write(self._create_readme_str()) - logger.info(f"README file written to {directory + filename}") + logger.info(f"README file written to {file_path.resolve()}") def _create_readme_str(self) -> str: """ From e5e81352d8c0285ceeb694ca2a09fff066fcaae2 Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 25 Jan 2026 09:10:06 +0100 Subject: [PATCH 052/131] Update helper.py Switched to pathlib --- precicecasegenerate/helper.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/precicecasegenerate/helper.py b/precicecasegenerate/helper.py index 2a9046c..c58bf9f 100644 --- a/precicecasegenerate/helper.py +++ b/precicecasegenerate/helper.py @@ -1,5 +1,6 @@ import random from enum import Enum +from pathlib import Path from precice_config_graph import nodes as n from precice_config_graph import enums as e @@ -68,18 +69,17 @@ def get_uniquifier() -> str: return DATA_UNIQUIFIERS.pop(unique_number) -def get_participant_solver_directory(parent_directory: str, participant_name: str, solver_name: str) -> str: +def get_participant_solver_directory(parent_directory: Path, participant_name: str, solver_name: str) -> Path: """ Return the name of the directory for a participant of the simulation. The adapter-config.json and run.sh files for this participant will be saved in this directory. :param parent_directory: The parent directory of the participant's directory. :param participant_name: The name of the participant. :param solver_name: The name of the solver. - :return: A string representing the directory name. + :return: A Path representing the directory name. """ - # Append a / if needed - parent_directory = parent_directory if parent_directory.endswith("/") else parent_directory + "/" - return parent_directory.lower() + participant_name.lower() + "-" + solver_name.lower() + "/" + participant_directory: Path = parent_directory / (participant_name.lower() + "-" + solver_name.lower()) + return participant_directory class PatchState(Enum): From c7ed65b64b2c194e4578dd4dba607e42ad92a93b Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 25 Jan 2026 09:10:43 +0100 Subject: [PATCH 053/131] Update topology_reader.py Added a check for the topology so that `node_creator` will not fail due to syntactic errors --- .../input_handler/topology_reader.py | 58 ++++++++++++++++++- 1 file changed, 55 insertions(+), 3 deletions(-) diff --git a/precicecasegenerate/input_handler/topology_reader.py b/precicecasegenerate/input_handler/topology_reader.py index e4e1670..f938ffd 100644 --- a/precicecasegenerate/input_handler/topology_reader.py +++ b/precicecasegenerate/input_handler/topology_reader.py @@ -4,25 +4,26 @@ import jsonschema import logging from importlib.resources import files +from precicecasegenerate import helper logger = logging.getLogger(__name__) class TopologyReader: """ - Read a given topology.yaml file and save it as a config graph (?) + Read a given topology.yaml file and save it as a dict. """ def __init__(self, path_to_topology_file: str): self.topology_file_path = path_to_topology_file self.topology = self._read_topology() self._validate_topology() + self._check_topology() def _read_topology(self) -> dict: """ Read the topology file and convert it to a dict. - This dict is saved as an attribute of the TopologyReader object. - :return: None + :return: The topology dict. """ logger.debug(f"Reading topology file at {self.topology_file_path}") with open(self.topology_file_path, "r") as topology_file: @@ -44,6 +45,57 @@ def _validate_topology(self) -> None: f"as specified in {schema_path}: {e.message}. Aborting program.") sys.exit(1) + def _check_topology(self) -> None: + """ + Check if the topology is valid. + This check includes: + - Checking if participant names are unique. + - Checking if exchanges only contain known "to" and "from" participants. + - Checking if exchanges are unique, when ignoring "to-patch", "from-patch" and "type" tags. + If any of these checks fail, an error message is printed and the program is aborted. + Additionally, it is checked if any of the data names contains one of the uniquifiers defined in + helper.DATA_UNIQUIFIERS. If so, this uniquifier is removed from the list of uniquifiers. + """ + participant_names: set[str] = set() + # Check if participant names are unique + for participant in self.topology["participants"]: + if participant["name"] in participant_names: + logger.critical( + f"Duplicate participant name {participant['name']} in topology file {self.topology_file_path}.") + sys.exit(1) + participant_names.add(participant["name"]) + logger.debug("Topology does not contain duplicate participant names.") + + exchanges: list[dict] = [] + # Check if exchanges only contain known "to" and "from" participants + # Check if exchanges are unique, when ignoring "to-patch", "from-patch" and "type" tags + for exchange in self.topology["exchanges"]: + to_participant: str = exchange["to"] + from_participant: str = exchange["from"] + if to_participant not in participant_names: + logger.critical(f"Unknown participant {to_participant} in topology file " + f"{self.topology_file_path}.") + sys.exit(1) + if from_participant not in participant_names: + logger.critical(f"Unknown participant {from_participant} in topology file " + f"{self.topology_file_path}.") + sys.exit(1) + data: str = exchange["data"] + data_type: str = exchange.get("type", None) + # Remove uniquifiers from the list if they are present in a data name + for uniquifier in helper.DATA_UNIQUIFIERS.copy(): + if uniquifier in data: + helper.DATA_UNIQUIFIERS.remove(uniquifier) + logger.debug(f"Removed uniquifier {uniquifier} from the list of uniquifiers.") + unique_exchange: dict[str, str] = {"to": to_participant, "from": from_participant, "data": data, + "data-type": data_type} + if unique_exchange in exchanges: + logger.critical(f"Duplicate exchange {unique_exchange} in topology file {self.topology_file_path}.") + sys.exit(1) + exchanges.append(unique_exchange) + + logger.debug("Topology does not contain any errors.") + def get_topology(self) -> dict: """ Return the topology dict. From a8e7d402208681bc63572a79626513a6a4220af0 Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 25 Jan 2026 09:11:01 +0100 Subject: [PATCH 054/131] Update node_creator.py Added a few comments --- precicecasegenerate/node_creator.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/precicecasegenerate/node_creator.py b/precicecasegenerate/node_creator.py index 69b0432..35447e6 100644 --- a/precicecasegenerate/node_creator.py +++ b/precicecasegenerate/node_creator.py @@ -70,9 +70,6 @@ def _create_nodes(self) -> None: """ Create ConfigGraph nodes based on the topology. """ - # TODO check if topology does not contain duplicate participants; - # TODO check that no data name contains one of the uniquifiers - # Topology will only have tags "participants" and "exchanges" # Initialize participants from participants tag @@ -82,6 +79,7 @@ def _create_nodes(self) -> None: # Update patches # IMPORTANT: This updates the topology dict. # Anything using a "frozenset" of topology items needs to be done after this method! + # (such as "initialize_data") participant_patch_label_map: dict[tuple[n.ParticipantNode, n.ParticipantNode], dict[str, set[str]]] = ( self._patch_preprocessing(participant_map)) @@ -181,7 +179,7 @@ def _create_strong_coupling_schemes(self, strong_couplings: list[dict], weak_cou coupling-scheme is created. Otherwise, no implicit coupling-scheme is created and all "strong" couplings are added to the "weak" couplings list to be handled by the ``_create_weak_coupling_schemes()`` method. - Next, all potential couplings (both strong and weak) are searched for couplings with participants involved in + Next, all potential couplings (both strong and weak) are inspected for couplings with participants involved in bidirectional strong couplings. Such participants are added to the implicit coupling-scheme. Finally, acceleration and convergence measures are added to every exchange of the implicit coupling-scheme. A dict mapping tuples of participants to coupling-schemes is returned. @@ -859,9 +857,9 @@ def _initialize_data(self, participant_map: dict[str, n.ParticipantNode]) -> dic # 3. The data is known and exchanged from A->B. Now there are two more possibilities: # 3.1 Known data has type t; current data has type t (great); we do nothing # 3.2 Known data has type t; current data has type s; we need to create a new unique data node. - # Variations of these cases can occur; the more participants are involved, - # the less unique these cases become, and the resulting precice-config.xml might depend on the - # ordering of exchanges. + # Variations of these cases can occur + # The more participants are involved, the less unique these cases become, + # and the resulting precice-config.xml might depend on the ordering of exchanges. # However, these are all very special cases that only occur in the very rare case that many exchanges have # the same data name. @@ -976,7 +974,7 @@ def _initialize_data(self, participant_map: dict[str, n.ParticipantNode]) -> dic f"and {to_participant.name} in both directions. Using \"{new_data_name}\" " f"for one direction.") new_data_node = n.DataNode(name=new_data_name, data_type=data_type) - + # Add information to the maps if (from_participant, to_participant, data_name) not in participant_data_name_map: participant_data_name_map[(from_participant, to_participant, data_name)] = { data_type: new_data_node} @@ -995,6 +993,7 @@ def _initialize_data(self, participant_map: dict[str, n.ParticipantNode]) -> dic exchange_data_map[frozenset(exchange.items())] = new_data_node else: # Otherwise, we use a data node already exchanged by the from-participant + data_node: n.DataNode = None for key, value in participant_data_name_map.items(): # key[0] is the from-participant, key[1] is the to-participant, key[2] is the data name if key[0] == from_participant and key[2] == data_name and data_type in value: @@ -1016,7 +1015,7 @@ def _initialize_data(self, participant_map: dict[str, n.ParticipantNode]) -> dic data_node.name = helper.capitalize_name(data_node.name + "-" + data_node.data_type.value) new_data_node_name: str = helper.capitalize_name(data_name + "-" + data_type.value) new_data_node: n.DataNode = n.DataNode(name=new_data_node_name, data_type=data_type) - + # Add information to the maps if (from_participant, to_participant, data_name) not in participant_data_name_map: participant_data_name_map[(from_participant, to_participant, data_name)] = { data_type: new_data_node} @@ -1045,6 +1044,7 @@ def _initialize_data(self, participant_map: dict[str, n.ParticipantNode]) -> dic f"and {to_participant.name} in both directions. Using \"{new_data_name}\" " f"for one direction.") new_data_node = n.DataNode(name=new_data_name, data_type=data_type) + # Add information to the maps if (from_participant, to_participant, data_name) not in participant_data_name_map: participant_data_name_map[(from_participant, to_participant, data_name)] = { data_type: new_data_node} From e168d14b808ed825ca3866adfa9da7fb0a600819 Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 25 Jan 2026 09:11:16 +0100 Subject: [PATCH 055/131] Update topology-schema.json Corrected "description" --- precicecasegenerate/schemas/topology-schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/precicecasegenerate/schemas/topology-schema.json b/precicecasegenerate/schemas/topology-schema.json index 78760a6..14c4524 100644 --- a/precicecasegenerate/schemas/topology-schema.json +++ b/precicecasegenerate/schemas/topology-schema.json @@ -94,5 +94,5 @@ "exchanges" ], "title": "preCICE Topology Configuration", - "description": "JSON schema defining the topology configuration for precice-generator. Specifies participants, exchanges, and their coupling relationships." + "description": "JSON schema defining the topology configuration for precice-case-generate. Specifies participants, exchanges, and their coupling relationships." } From 961cc9e8b25cd11422e0512364172c0e5d5e1145 Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 25 Jan 2026 12:20:30 +0100 Subject: [PATCH 056/131] Moved main logic to separate method This allows to reuse the method for testing instead of using "subprocess". Also moved the checks/setup to `cl_helper.py` to improve readability. --- precicecasegenerate/cli.py | 66 ++++++++++++------------------- precicecasegenerate/cli_helper.py | 61 ++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+), 41 deletions(-) create mode 100644 precicecasegenerate/cli_helper.py diff --git a/precicecasegenerate/cli.py b/precicecasegenerate/cli.py index 68f5616..2d41ed5 100644 --- a/precicecasegenerate/cli.py +++ b/precicecasegenerate/cli.py @@ -1,61 +1,48 @@ -import os import sys -import argparse import shutil +import logging +from logging import Logger from pathlib import Path -from precicecasegenerate.logging_setup import setup_logging from precicecasegenerate import helper +from precicecasegenerate import cli_helper +from precicecasegenerate.logging_setup import setup_logging from precicecasegenerate.input_handler.topology_reader import TopologyReader from precicecasegenerate.node_creator import NodeCreator from precicecasegenerate.file_creators.config_creator import ConfigCreator from precicecasegenerate.file_creators.adapter_config_creator import AdapterConfigCreator from precicecasegenerate.file_creators.utility_file_creator import UtilityFileCreator +logger = logging.getLogger(__name__) + def main(): - parser = argparse.ArgumentParser() - - parser.add_argument( - "file_path", - type=str, - help="Path to the input YAML file." - ) - parser.add_argument( - "-v", "--verbose", action="store_true", help="Enable verbose output." - ) - parser.add_argument( - "-o", "--output_path", - type=str, - default="./", - help="A custom output path for the generated files." - ) - args = parser.parse_args() - - logger = setup_logging(verbose=args.verbose) - logger.info("Program started.") + args = cli_helper.get_args() - logger.debug(f"Arguments parsed. Arguments: {vars(args)}. Checking if given file exists.") + setup_logging(verbose=args.verbose) + logger.info("Program started.") - PRECICE_CONFIG_FILE_NAME: str = "precice-config.xml" + cli_helper.validate_args(args) input_file: Path = Path(args.file_path) output_root: Path = Path(args.output_path) - # Check if the file exists - if not input_file.is_file(): - logger.critical(f"File {input_file.resolve()} does not exist. Aborting program.") - sys.exit(1) - logger.debug(f"File {input_file.resolve()} exists.") + generate_case(input_file, output_root) + + logger.info("Program finished.") + sys.exit(0) - # Check if the file is a YAML file - if input_file.suffix.lower() in [".yaml", ".yml"]: - logger.debug(f"File {input_file.resolve()} is a YAML file.") - else: - logger.critical(f"File {input_file.resolve()} is not a YAML file. Aborting program.") +def generate_case(input_file: Path, output_root: Path): + """ + Generate all files for a preCICE case + This method creates the required directories and calls the respective methods to create the nodes from the topology, + the preCICE configuration file, the adapter configuration files, and the utility files. + :param input_file: The path to the input file containing the topology. + :param output_root: The root directory for the generated files. + """ # Create a new directory for the generated files - generated_dir: Path = output_root / "_generated" + generated_dir: Path = output_root / cli_helper.GENERATED_DIR_NAME logger.debug(f"Resetting generated files at {generated_dir.resolve()}.") # Remove the directory if it already exists if generated_dir.exists(): @@ -74,7 +61,7 @@ def main(): logger.debug("Starting config creator.") config_creator: ConfigCreator = ConfigCreator(nodes) - config_creator.create_config_file(directory=generated_dir, filename=PRECICE_CONFIG_FILE_NAME) + config_creator.create_config_file(directory=generated_dir, filename=cli_helper.PRECICE_CONFIG_FILE_NAME) logger.debug("Config creator finished.") logger.debug("Creating participant directories.") @@ -92,16 +79,13 @@ def main(): mesh_patch_map: dict = node_creator.get_mesh_patch_map() adapter_config_creator: AdapterConfigCreator = AdapterConfigCreator(participant_solver_map, mesh_patch_map, - precice_config_filename=PRECICE_CONFIG_FILE_NAME) + precice_config_filename=cli_helper.PRECICE_CONFIG_FILE_NAME) adapter_config_creator.create_adapter_configs(parent_directory=generated_dir) logger.debug("Starting utility file creator.") utility_file_creator: UtilityFileCreator = UtilityFileCreator(participant_solver_map) utility_file_creator.create_utility_files(parent_directory=generated_dir) - logger.info("Program finished.") - sys.exit(0) - if __name__ == "__main__": main() diff --git a/precicecasegenerate/cli_helper.py b/precicecasegenerate/cli_helper.py new file mode 100644 index 0000000..5273dc2 --- /dev/null +++ b/precicecasegenerate/cli_helper.py @@ -0,0 +1,61 @@ +""" +This file contains helper methods and variables for the cli.py file and its main method. +""" + +import argparse +import logging +import sys +from pathlib import Path + +logger = logging.getLogger(__name__) + +PRECICE_CONFIG_FILE_NAME: str = "precice-config.xml" +GENERATED_DIR_NAME: str = "_generated" +LOG_DIR_NAME: str = ".logs" + + +def get_args() -> argparse.Namespace: + """ + Get the arguments passed to the CLI. + :return: An argparse namespace. + """ + parser = argparse.ArgumentParser() + + parser.add_argument( + "file_path", + type=str, + help="Path to the input YAML file." + ) + parser.add_argument( + "-v", "--verbose", action="store_true", help="Enable verbose output." + ) + parser.add_argument( + "-o", "--output_path", + type=str, + default="./", + help="A custom output path for the generated files." + ) + return parser.parse_args() + + +def validate_args(args: argparse.Namespace): + """ + Validate the arguments passed to the CLI. + This checks if the input file exists and is a YAML file. + :param args: The parsed arguments. + """ + logger.debug(f"Arguments parsed. Arguments: {vars(args)}. Checking if given file exists.") + + input_file: Path = Path(args.file_path) + + # Check if the file exists + if not input_file.is_file(): + logger.critical(f"File {input_file.resolve()} does not exist. Aborting program.") + sys.exit(1) + logger.debug(f"File {input_file.resolve()} exists.") + + # Check if the file is a YAML file + if input_file.suffix.lower() in [".yaml", ".yml"]: + logger.debug(f"File {input_file.resolve()} is a YAML file.") + else: + logger.critical(f"File {input_file.resolve()} is not a YAML file. Aborting program.") From b0777cedfbdb0792c0bff4ae4a4f62ab5264be68 Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 25 Jan 2026 12:22:07 +0100 Subject: [PATCH 057/131] Tests for data-type in topology Added tests for correct topology creation when varying the "data-type" tag and the exchanges / participants involved. --- .../precice-config.xml | 100 +++++++++++++++++ tests/new_tests/data-type/data_type_test.py | 103 ++++++++++++++++++ .../precice-config.xml | 57 ++++++++++ .../precice-config.xml | 50 +++++++++ .../precice-config.xml | 57 ++++++++++ .../precice-config.xml | 44 ++++++++ 6 files changed, 411 insertions(+) create mode 100644 tests/new_tests/data-type/both_types_both_directions/precice-config.xml create mode 100644 tests/new_tests/data-type/data_type_test.py create mode 100644 tests/new_tests/data-type/different_type_both_directions/precice-config.xml create mode 100644 tests/new_tests/data-type/different_type_one_direction/precice-config.xml create mode 100644 tests/new_tests/data-type/same_type_both_directions/precice-config.xml create mode 100644 tests/new_tests/data-type/same_type_one_direction/precice-config.xml diff --git a/tests/new_tests/data-type/both_types_both_directions/precice-config.xml b/tests/new_tests/data-type/both_types_both_directions/precice-config.xml new file mode 100644 index 0000000..2603294 --- /dev/null +++ b/tests/new_tests/data-type/both_types_both_directions/precice-config.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/new_tests/data-type/data_type_test.py b/tests/new_tests/data-type/data_type_test.py new file mode 100644 index 0000000..c464f85 --- /dev/null +++ b/tests/new_tests/data-type/data_type_test.py @@ -0,0 +1,103 @@ +""" +Test that the data-type tag of exchanges works as intended. +This is done by checking whether the generated config file is equivalent to an expected config file. +Additionally, the config is validated using precice-config-check. +""" + +from pathlib import Path +from precice_config_graph.graph import check_config_equivalence +from preciceconfigcheck.cli import runCheck + +from precicecasegenerate.cli import generate_case + +# This directory is the same for all tests in this file. +test_directory: Path = Path(__file__).parent + + +def test_same_type_one_direction(): + """ + This is the simplest case. + There is only one exchange and thus only one data-type. + Nothing should go wrong here. + """ + case_directory: Path = test_directory / "same_type_one_direction" + input_file: Path = case_directory / "topology.yaml" + + generate_case(input_file, case_directory) + + expected: Path = case_directory / "precice-config.xml" + actual: Path = case_directory / "_generated/precice-config.xml" + assert check_config_equivalence(expected, actual), "Configs are not equivalent." + assert runCheck(actual, True) == 0, "The config failed to validate." + + +def test_different_type_one_direction(): + """ + This case is more complex. + There are two exchanges with different data-types. + Thus, two different data nodes should be created, with names ending in "-Vector" and "-Scalar" respectively. + """ + case_directory: Path = test_directory / "different_type_one_direction" + input_file: Path = case_directory / "topology.yaml" + + generate_case(input_file, case_directory) + + expected: Path = case_directory / "precice-config.xml" + actual: Path = case_directory / "_generated/precice-config.xml" + assert check_config_equivalence(expected, actual), "Configs are not equivalent up to naming." + assert runCheck(actual, True) == 0, "The config failed to validate." + + +def test_same_type_both_directions(): + """ + This case is more complex. + There are two exchanges, one per direction, with the same data-type. + This should result in two data-nodes, one with a "uniquified" name. + """ + case_directory: Path = test_directory / "same_type_both_directions" + input_file: Path = case_directory / "topology.yaml" + + generate_case(input_file, case_directory) + + expected: Path = case_directory / "precice-config.xml" + actual: Path = case_directory / "_generated/precice-config.xml" + assert not check_config_equivalence(expected, actual), "Configs are equivalent with different names." + assert check_config_equivalence(expected, actual, ignore_names=True), "Configs not are equivalent up to naming." + assert runCheck(actual, True) == 0, "The config failed to validate." + + +def test_different_type_both_directions(): + """ + This case is more complex. + There are two exchanges, one per direction, with different data-types. + This should result in two data-nodes, with names ending in "-Vector" and "-Scalar" respectively. + """ + case_directory: Path = test_directory / "different_type_both_directions" + input_file: Path = case_directory / "topology.yaml" + + generate_case(input_file, case_directory) + + expected: Path = case_directory / "precice-config.xml" + actual: Path = case_directory / "_generated/precice-config.xml" + assert check_config_equivalence(expected, actual), "Configs are not equivalent up to naming." + assert runCheck(actual, True) == 0, "The config failed to validate." + + +def test_both_types_both_directions(): + """ + This case is the most complex. + There are six exchanges and now three participants, A, B and C. + A and B share four exchanges, which should result in four data nodes; + and B and C share two exchanges, which should reuse the same data nodes. + This should result in four data-nodes, two with "uniquified" names. + """ + case_directory: Path = test_directory / "both_types_both_directions" + input_file: Path = case_directory / "topology.yaml" + + generate_case(input_file, case_directory) + + expected: Path = case_directory / "precice-config.xml" + actual: Path = case_directory / "_generated/precice-config.xml" + assert not check_config_equivalence(expected, actual), "Configs are equivalent with different names." + assert check_config_equivalence(expected, actual, ignore_names=True), "Configs are not equivalent up to naming." + assert runCheck(actual, True) == 0, "The config failed to validate." diff --git a/tests/new_tests/data-type/different_type_both_directions/precice-config.xml b/tests/new_tests/data-type/different_type_both_directions/precice-config.xml new file mode 100644 index 0000000..338b7ae --- /dev/null +++ b/tests/new_tests/data-type/different_type_both_directions/precice-config.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/new_tests/data-type/different_type_one_direction/precice-config.xml b/tests/new_tests/data-type/different_type_one_direction/precice-config.xml new file mode 100644 index 0000000..2a712ba --- /dev/null +++ b/tests/new_tests/data-type/different_type_one_direction/precice-config.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/new_tests/data-type/same_type_both_directions/precice-config.xml b/tests/new_tests/data-type/same_type_both_directions/precice-config.xml new file mode 100644 index 0000000..cb65a82 --- /dev/null +++ b/tests/new_tests/data-type/same_type_both_directions/precice-config.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/new_tests/data-type/same_type_one_direction/precice-config.xml b/tests/new_tests/data-type/same_type_one_direction/precice-config.xml new file mode 100644 index 0000000..117d4bb --- /dev/null +++ b/tests/new_tests/data-type/same_type_one_direction/precice-config.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 97e108cb046d73664513785a3ec8666b917f38f5 Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 25 Jan 2026 12:22:47 +0100 Subject: [PATCH 058/131] Update logging_setup.py Added comments and updated paths to pathlib --- precicecasegenerate/logging_setup.py | 44 +++++++++++++++++++--------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/precicecasegenerate/logging_setup.py b/precicecasegenerate/logging_setup.py index 4450c65..46e964a 100644 --- a/precicecasegenerate/logging_setup.py +++ b/precicecasegenerate/logging_setup.py @@ -3,6 +3,8 @@ import glob import logging from logging import LogRecord, Logger +from pathlib import Path +from precicecasegenerate import cli_helper class ColorFormatter(logging.Formatter): @@ -19,37 +21,51 @@ def format(self, record: LogRecord) -> str: """ Format a log record, such that the levelname is colored according to the level. :param record: The log record to format. - :return: + :return: The formatted log record. """ # Store original levelname levelname = record.levelname color = self.COLORS.get(record.levelno, "") record.levelname = f"{color}{levelname}{self.RESET}" formatted = super().format(record) - record.levelname = levelname # Restore + # Restore original levelname + record.levelname = levelname return formatted def setup_logging(verbose: bool = False) -> Logger: - timestamp: str = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S") + """ + Create a logger object and set up logging to a file and the console. + By default, only warnings and errors are logged to the console, whereas everything is logged to the file. + :param verbose: Enables debug logging to the console. + :return: A logger object. + """ + log_directory: Path = Path(cli_helper.LOG_DIR_NAME) + log_directory.mkdir(parents=True, exist_ok=True) - path: str = ".logs/" - os.makedirs(path, exist_ok=True) + # Base level is debug (nothing is ignored) + logger = logging.getLogger() + logger.setLevel(logging.DEBUG) # Delete old log files if there are more than 10 to avoid clutter - log_files = sorted(glob.glob(os.path.join(path, "precice-case-generate-*.log"))) + log_files = sorted(log_directory.glob("precice-case-generate-*.log")) if len(log_files) >= 10: - for old_file in log_files[:len(log_files) - 9]: - os.remove(old_file) + for old_file in log_files[:-9]: + try: + # This deletes the file + old_file.unlink() + except OSError as e: + logger.warning(f"Error deleting old log file {old_file}: {e}") - log_filename = f"{path}precice-case-generate-{timestamp}.log" + timestamp: str = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S") + log_file_path: Path = log_directory / f"precice-case-generate-{timestamp}.log" - # Base level is debug (nothing is ignored) - logger = logging.getLogger() - logger.setLevel(logging.DEBUG) + # Prevent duplicate handlers incase this method is called multiple times + if logger.hasHandlers(): + logger.handlers.clear() # Write everything to a log file - file_handler = logging.FileHandler(log_filename) + file_handler = logging.FileHandler(log_file_path) file_handler.setLevel(logging.DEBUG) # Only write warnings and errors to the console console_handler = logging.StreamHandler() @@ -73,6 +89,6 @@ def setup_logging(verbose: bool = False) -> Logger: logger.addHandler(file_handler) logger.addHandler(console_handler) - logger.debug("Logs can be found in .logs/") + logger.debug(f"Logs can be found in {log_directory.resolve()}") return logger From 4a065aa84e27940e354c720a9916ecfedbe8c402 Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 25 Jan 2026 15:57:23 +0100 Subject: [PATCH 059/131] Formatting --- precicecasegenerate/cli.py | 3 +-- precicecasegenerate/helper.py | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/precicecasegenerate/cli.py b/precicecasegenerate/cli.py index 2d41ed5..d8e8ea6 100644 --- a/precicecasegenerate/cli.py +++ b/precicecasegenerate/cli.py @@ -1,7 +1,6 @@ import sys import shutil import logging -from logging import Logger from pathlib import Path from precicecasegenerate import helper @@ -50,7 +49,7 @@ def generate_case(input_file: Path, output_root: Path): generated_dir.mkdir(parents=True, exist_ok=True) logger.debug("Starting topology reader.") - topology_reader: TopologyReader = TopologyReader(str(input_file.resolve())) + topology_reader: TopologyReader = TopologyReader(input_file.resolve()) topology: dict = topology_reader.get_topology() logger.debug("Topology reader finished.") diff --git a/precicecasegenerate/helper.py b/precicecasegenerate/helper.py index c58bf9f..13bdf77 100644 --- a/precicecasegenerate/helper.py +++ b/precicecasegenerate/helper.py @@ -23,7 +23,7 @@ DEFAULT_MAPPING_KIND: str = "read" EXTENSIVE_DATA: list[str] = ["force", "displacement"] -INTENSIVE_DATA: list[str] = ["temperature", "pressure", "velocity", "heat-flux", ] +INTENSIVE_DATA: list[str] = ["temperature", "pressure", "velocity", "heat-flux"] # To make duplicate data names unique DATA_UNIQUIFIERS: list[str] = [ From 82550f4ecbc766fd37483fd71b5af7f80cf06766 Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 25 Jan 2026 16:39:01 +0100 Subject: [PATCH 060/131] Test for node generation This tests the five "major" nodes participants, meshes, data, m2n and coupling schemes. The tests are not complete, but they cover a lot of cases. --- .../node-generation/complex_topology.yaml | 56 +++ .../node-generation/simple_topology.yaml | 14 + .../node-generation/test_node_generation.py | 405 ++++++++++++++++++ 3 files changed, 475 insertions(+) create mode 100644 tests/new_tests/node-generation/complex_topology.yaml create mode 100644 tests/new_tests/node-generation/simple_topology.yaml create mode 100644 tests/new_tests/node-generation/test_node_generation.py diff --git a/tests/new_tests/node-generation/complex_topology.yaml b/tests/new_tests/node-generation/complex_topology.yaml new file mode 100644 index 0000000..607764b --- /dev/null +++ b/tests/new_tests/node-generation/complex_topology.yaml @@ -0,0 +1,56 @@ +participants: + - name: NASTIN + solver: ASolver + dimensionality: 3 + - name: SOLIDZ1 + solver: SolVer + dimensionality: 3 + - name: SOLIDZ2 + solver: SolVer + dimensionality: 3 + - name: SOLIDZ3 + solver: SolVer + dimensionality: 3 +exchanges: + - from: NASTIN + to: SOLIDZ1 + from-patch: interface + to-patch: interface + data: Forces1 + type: strong + data-type: vector + - from: NASTIN + to: SOLIDZ2 + from-patch: interface + to-patch: interface + data: Forces2 + type: strong + data-type: vector + - from: NASTIN + to: SOLIDZ3 + from-patch: interface + to-patch: interface + data: Forces3 + type: strong + data-type: vector + - from: SOLIDZ1 + to: NASTIN + from-patch: interface + to-patch: interface + data: Displacements1 + type: strong + data-type: vector + - from: SOLIDZ2 + to: NASTIN + from-patch: interface + to-patch: interface + data: Displacements2 + type: strong + data-type: vector + - from: SOLIDZ3 + to: NASTIN + from-patch: interface + to-patch: interface + data: Displacements3 + type: strong + data-type: vector diff --git a/tests/new_tests/node-generation/simple_topology.yaml b/tests/new_tests/node-generation/simple_topology.yaml new file mode 100644 index 0000000..90c1784 --- /dev/null +++ b/tests/new_tests/node-generation/simple_topology.yaml @@ -0,0 +1,14 @@ +participants: + - name: A + solver: ASolver + - name: B + solver: BSolver + dimensionality: 2 +exchanges: + - from: A + to: B + from-patch: interface + to-patch: interface + data: Color + type: weak + data-type: scalar \ No newline at end of file diff --git a/tests/new_tests/node-generation/test_node_generation.py b/tests/new_tests/node-generation/test_node_generation.py new file mode 100644 index 0000000..ce0759b --- /dev/null +++ b/tests/new_tests/node-generation/test_node_generation.py @@ -0,0 +1,405 @@ +from pathlib import Path +from precice_config_graph import nodes as n, enums as e +from precice_config_graph.nodes import MeshNode + +from precicecasegenerate.input_handler.topology_reader import TopologyReader +from precicecasegenerate.node_creator import NodeCreator +import precicecasegenerate.helper as helper + +test_directory: Path = Path(__file__).parent + + +def simple_setup(patches: bool = False) -> tuple[dict, dict, dict[MeshNode, set[str]]] | tuple[dict, dict]: + """ + Create all nodes for the (simple) test topology file. + :return: A dict representing the topology and a dict containing all nodes created from the topology. + """ + topology_file: Path = test_directory / "simple_topology.yaml" + + topology_reader: TopologyReader = TopologyReader(topology_file) + topology: dict = topology_reader.get_topology() + node_creator: NodeCreator = NodeCreator(topology) + nodes: dict = node_creator.get_nodes() + if patches: + return topology, nodes, node_creator.get_mesh_patch_map() + return topology, nodes + + +def complex_setup() -> tuple[dict, dict]: + """ + Create all nodes for the (more complex) test topology file. + :return: A dict representing the topology and a dict containing all nodes created from the topology. + """ + topology_file: Path = test_directory / "complex_topology.yaml" + + topology_reader: TopologyReader = TopologyReader(topology_file) + topology: dict = topology_reader.get_topology() + node_creator: NodeCreator = NodeCreator(topology) + nodes: dict = node_creator.get_nodes() + return topology, nodes + + +def test_participant_nodes(): + """ + Check that all attributes of the participant nodes are correct. + """ + topology, nodes = simple_setup() + number_of_participants: int = len(topology["participants"]) + participants: list[n.ParticipantNode] = nodes["participants"] + assert len(participants) == number_of_participants, (f"Found {len(participants)} participants, " + f"expected {number_of_participants}.") + + first_name: str = None + try: + first_name = topology["participants"][0]["name"] + first_participant: n.ParticipantNode = next(p for p in participants if p.name == first_name) + except StopIteration: + assert False, f"Participant {first_name} not found." + second_name: str = None + try: + second_name = topology["participants"][1]["name"] + second_participant: n.ParticipantNode = next(p for p in participants if p.name == second_name) + except StopIteration: + assert False, f"Participant {second_name} not found." + + assert len(nodes["data"]) == 1, f"Found {len(nodes['data'])} data nodes, expected 1." + data: n.DataNode = nodes["data"][0] + + if first_participant.read_data and second_participant.read_data: + assert False, "Both participants have read-data nodes." + elif not first_participant.read_data and not second_participant.read_data: + assert False, "Neither participant has read-data nodes." + + read_participant: n.ParticipantNode = first_participant if first_participant.read_data else second_participant + try: + next(rd for rd in read_participant.read_data if rd.data == data) + except StopIteration: + assert False, f"Data {data.name} not found in reader-participant {read_participant.name}." + + if first_participant.write_data and second_participant.write_data: + assert False, "Both participants have write-data nodes." + elif not first_participant.write_data and not second_participant.write_data: + assert False, "Neither participant has write-data nodes." + + write_participant: n.ParticipantNode = first_participant if first_participant.write_data else second_participant + try: + next(wd for wd in write_participant.write_data if wd.data == data) + except StopIteration: + assert False, f"Data {data.name} not found in writer-participant {write_participant.name}." + + assert write_participant != read_participant, f"The same participant {write_participant.name} reads and writes data." + + from_name: str = topology["exchanges"][0]["from"] + to_name: str = topology["exchanges"][0]["to"] + from_participant: n.ParticipantNode = first_participant if from_name == first_name else second_participant + to_participant: n.ParticipantNode = first_participant if to_name == first_name else second_participant + assert from_participant != to_participant, f"Exchange is between the same participant {from_name}." + + assert len(first_participant.provide_meshes) == 1, f"Participant {first_name} provides more than one mesh." + assert len(second_participant.provide_meshes) == 1, f"Participant {second_name} provides more than one mesh." + + # Bools for checking mappings + extensive_case: bool = data.name in helper.EXTENSIVE_DATA + intensive_case: bool = data.name in helper.INTENSIVE_DATA + if not extensive_case and not intensive_case: + if helper.DEFAULT_DATA_KIND == "extensive": + extensive_case = True + else: + intensive_case = True + + if extensive_case: + # For extensive data, a write-mapping is needed. A write-mapping is specified by the from-participant. + assert write_participant == from_participant, f"From-participant {from_name} does not write data {data.name}." + assert from_participant.mappings, f"Write mapping is not specified by the from-participant {from_name}." + assert not to_participant.mappings, f"To-participant {to_name} specifies mapping." + assert len(from_participant.mappings) == 1, f"From-participant {from_name} specifies more than one mapping." + # Then the from-participant also receives a mesh from the to-participant + assert from_participant.receive_meshes, f"From-participant {from_name} does not receive a mesh." + assert not to_participant.receive_meshes, f"To-participant {to_name} receives a mesh." + + mapping: n.MappingNode = from_participant.mappings[0] + # Write-mappings are always conservative + assert mapping.constraint == e.MappingConstraint.CONSERVATIVE, (f"Write mapping is not conservative " + f"but has type {mapping.constraint.value}") + assert mapping.direction == e.Direction.WRITE, f"Write-mapping is not a write-mapping." + + elif intensive_case: + # For intensive data, a read-mapping is needed. A read-mapping is specified by the to-participant. + assert read_participant == to_participant, f"To-participant {to_name} does not read data {data.name}." + assert to_participant.mappings, f"Read mapping is not specified by the to-participant {to_name}." + assert not from_participant.mappings, f"From-participant {from_name} specifies mapping." + assert len(to_participant.mappings) == 1, f"To-participant {to_name} specifies more than one mapping." + # Then the to-participant also receives a mesh from the from-participant + assert to_participant.receive_meshes, f"To-participant {to_name} does not receive a mesh." + assert not from_participant.receive_meshes, f"From-participant {from_name} receives a mesh." + + mapping: n.MappingNode = to_participant.mappings[0] + # Read-mappings are always consistent + assert mapping.constraint == e.MappingConstraint.CONSISTENT, (f"Read-mapping is not consistent " + f"but has type {mapping.constraint.value}") + assert mapping.direction == e.Direction.READ, f"Read-mapping is not a read-mapping." + + assert mapping.method == helper.DEFAULT_MAPPING_METHOD, (f"Mapping method is {mapping.method.value}, " + f"expected {helper.DEFAULT_MAPPING_METHOD.value}.") + # The from_mesh should be by the from-participant + assert mapping.from_mesh == from_participant.provide_meshes[0], ( + f"Mapping uses wrong from-mesh {mapping.from_mesh.name} ," + f"expected {from_participant.provide_meshes[0].name}." + ) + # The to_mesh should be by the to-participant + assert mapping.to_mesh == to_participant.provide_meshes[0], (f"Mapping uses wrong to-mesh {mapping.to_mesh.name}, " + f"expected {to_participant.provide_meshes[0].name}.") + + # These attributes are never set by this project and should therefore be empty / None + assert not mapping.just_in_time, "Mapping is just-in-time." + # A mapping-node has more attributes, but these are not used if the method is NEAREST_NEIGHBOR, as is expected here + + # These attributes are never set by this project and should therefore be empty / None + for participant in nodes["participants"]: + assert not participant.watchpoints, f"Participant {participant.name} specifies watchpoints." + assert not participant.watch_integrals, f"Participant {participant.name} specifies watch-integrals." + assert not participant.exports, f"Participant {participant.name} specifies exports." + assert not participant.actions, f"Participant {participant.name} specifies actions." + + +def test_explicit_coupling_scheme_nodes(): + """ + Check that all attributes of the (explicit) coupling-scheme nodes are correct. + """ + topology, nodes = simple_setup() + coupling_scheme_nodes: list[n.CouplingSchemeNode] = nodes["coupling-schemes"] + assert len(coupling_scheme_nodes) == 1, ( + f"Found {len(coupling_scheme_nodes)} coupling schemes, expected 1.") + + coupling_scheme: n.CouplingSchemeNode = coupling_scheme_nodes[0] + + # Since there is only one exchange, the type is always explicit + assert coupling_scheme.type == helper.DEFAULT_EXPLICIT_COUPLING_TYPE + + first_participant: n.ParticipantNode = coupling_scheme.first_participant + second_participant: n.ParticipantNode = coupling_scheme.second_participant + assert first_participant != second_participant, f"Coupling-scheme is between the same participants {first_participant.name}." + + assert len(coupling_scheme.exchanges) == len(topology["exchanges"]), ( + f"Found {len(coupling_scheme.exchanges)} exchanges, expected {len(topology['exchanges'])}." + ) + + from_name: str = topology["exchanges"][0]["from"] + to_name: str = topology["exchanges"][0]["to"] + from_participant: n.ParticipantNode = first_participant if from_name == first_participant.name else second_participant + to_participant: n.ParticipantNode = first_participant if to_name == first_participant.name else second_participant + + assert from_participant == coupling_scheme.exchanges[0].from_participant, ( + f"From-participant {from_name} of coupling-scheme does not match the exchange's from-participant " + f"{coupling_scheme.exchanges[0].from_participant.name}." + ) + + assert to_participant == coupling_scheme.exchanges[0].to_participant, ( + f"To-participant {to_name} of coupling-scheme does not match the exchange's to-participant " + f"{coupling_scheme.exchanges[0].to_participant.name}." + ) + # These attributes should not be set for an explicit coupling-scheme + assert not coupling_scheme.acceleration, f"Coupling-scheme specifies accelerations." + assert not coupling_scheme.convergence_measures, f"Coupling-scheme specifies convergence measures." + + +def test_multi_coupling_scheme_nodes(): + """ + Check that attributes of the multi-coupling-scheme nodes are set correctly. + """ + topology, nodes = complex_setup() + multi_coupling_scheme_nodes: list[n.MultiCouplingSchemeNode] = nodes["coupling-schemes"] + assert len(multi_coupling_scheme_nodes) == 1, (f"Found {len(multi_coupling_scheme_nodes)} multi-coupling schemes, " + f"expected 1.") + + multi_coupling_scheme: n.MultiCouplingSchemeNode = multi_coupling_scheme_nodes[0] + assert isinstance(multi_coupling_scheme, + n.MultiCouplingSchemeNode), f"Coupling-scheme is not a multi-coupling scheme." + + multi_coupling_scheme_participants: list[n.ParticipantNode] = multi_coupling_scheme.participants + + assert len(multi_coupling_scheme_participants) == len(topology["participants"]), ( + f"The topology specifies {len(topology['participants'])} participants, the coupling-scheme has {len(multi_coupling_scheme_participants)} participants." + ) + + exchange_nodes: list[n.ExchangeNode] = multi_coupling_scheme.exchanges + topology_exchanges: list[dict] = topology["exchanges"] + + assert len(exchange_nodes) == len(topology_exchanges), ( + f"The topology specifies {len(topology_exchanges)} exchanges, the coupling-scheme has {len(exchange_nodes)} exchanges." + ) + # Check that the control participant is involved in the most exchanges + # and check that each exchange node has a corresponding exchange in the topology + exchange_histogramm: dict[n.ParticipantNode, int] = {p: 0 for p in multi_coupling_scheme_participants} + for exchange in topology_exchanges: + from_name: str = exchange["from"] + to_name: str = exchange["to"] + data_name: str = exchange["data"] + try: + exchange_node: n.ExchangeNode = next(e for e in exchange_nodes if e.from_participant.name == from_name and + e.to_participant.name == to_name and e.data.name == data_name) + from_participant: n.ParticipantNode = exchange_node.from_participant + to_participant: n.ParticipantNode = exchange_node.to_participant + except StopIteration: + assert False, f"Exchange {from_name}->{to_name} with data {data_name} not found in multi-coupling-scheme." + exchange_histogramm[from_participant] += 1 + exchange_histogramm[to_participant] += 1 + + most_popular_participant: n.ParticipantNode = max(exchange_histogramm, key=exchange_histogramm.get) + assert multi_coupling_scheme.control_participant == most_popular_participant, ( + f"The most popular participant in the coupling-scheme is {multi_coupling_scheme.control_participant.name}, " + f"expected {most_popular_participant.name}." + ) + + assert multi_coupling_scheme.acceleration, "Multi-coupling scheme does not specify an acceleration." + + acceleration: n.AccelerationNode = multi_coupling_scheme.acceleration + assert acceleration.type == helper.DEFAULT_ACCELERATION_TYPE, (f"Acceleration type is {acceleration.type.value}, " + f"expected {helper.DEFAULT_ACCELERATION_TYPE.value}.") + + assert len(acceleration.data) == len(topology_exchanges), ( + f"The topology specifies {len(topology_exchanges)} exchanges, " + f"but len{acceleration.data} are accelerated." + ) + + # Check that each accelerated data corresponds to an exchange + for accelerated_data in acceleration.data: + try: + next(e for e in topology_exchanges if e["data"] == accelerated_data.data.name) + except StopIteration: + assert False, f"Accelerated data {accelerated_data.data.name} not found in topology." + # Since there are the same number of acceleration-data-nodes as exchanges in the topology, + # this means that each exchange is accelerated exactly once + + assert multi_coupling_scheme.convergence_measures, "Multi-coupling scheme does not specify convergence measures." + assert len(multi_coupling_scheme.convergence_measures) == len(topology_exchanges), ( + f"The topology specifies {len(topology_exchanges)} exchanges, " + f"but {len(multi_coupling_scheme.convergence_measures)} convergence measures are specified." + ) + + # Check that each convergence measure corresponds to an exchange + for convergence_measure in multi_coupling_scheme.convergence_measures: + try: + next(e for e in topology_exchanges if e["data"] == convergence_measure.data.name) + except StopIteration: + assert False, f"Convergence-measure for data {convergence_measure.data.name} not found in topology." + # Again, this means that there is a bijection between exchanges and convergence measures + + # These attributes are not set during node creation + assert not acceleration.preconditioner, "Acceleration specifies a preconditioner." + assert not acceleration.filter, "Acceleration specifies a filter." + + +def test_m2n_nodes(): + """ + Test that the M2N nodes are created correctly. + """ + topology, nodes = complex_setup() + m2n_nodes: list[n.M2NNode] = nodes["m2n"] + + # Check that each exchange in the topology has an M2N node connecting the exchanges' participants + for exchange in topology["exchanges"]: + from_name: str = exchange["from"] + to_name: str = exchange["to"] + try: + next(m2n for m2n in m2n_nodes if ((m2n.acceptor.name == from_name and m2n.connector.name == to_name) + or (m2n.acceptor.name == to_name and m2n.connector.name == from_name))) + except StopIteration: + assert False, f"No M2N node found connecting {from_name} and {to_name}." + + # Check each M2N node connect participants that exchange something + for m2n in m2n_nodes: + acceptor_name: str = m2n.acceptor.name + connector_name: str = m2n.connector.name + assert acceptor_name != connector_name, f"M2N node between same participant {acceptor_name}." + try: + next(e for e in topology["exchanges"] if ((e["from"] == acceptor_name and e["to"] == connector_name) + or (e["from"] == connector_name and e["to"] == acceptor_name))) + except StopIteration: + assert False, f"No exchange found between {acceptor_name} and {connector_name}." + assert m2n.directory, f"M2N node between {acceptor_name} and {connector_name} does not specify a directory." + assert m2n.type == helper.DEFAULT_M2N_TYPE, (f"M2N type is {m2n.type.value}, " + f"expected {helper.DEFAULT_M2N_TYPE.value}.") + + +def test_data_nodes(): + """ + Test that data nodes are created correctly. + """ + topology, nodes = simple_setup() + data_nodes: list[n.DataNode] = nodes["data"] + # Check that each exchange in the topology has a data node + for exchange in topology["exchanges"]: + data_name: str = exchange["data"] + data_type: str = exchange.get("data-type", helper.DEFAULT_DATA_TYPE) + try: + # Note: This is only an approximate scheme, as data names can be uniquified + # and might thus not match original names completely + data_node = next(dn for dn in data_nodes if data_name.lower() in dn.name.lower()) + except StopIteration: + assert False, f"No data node found for data {data_name}." + assert data_node.data_type.value == data_type, (f"Data node {data_name} has type {data_node.data_type.value}, " + f"expected {data_type}.") + + for data_node in data_nodes: + try: + # Note: This is only an approximate scheme, as data names can be uniquified + # and might thus not match original names completely + exchange = next(e for e in topology["exchanges"] if e["data"].lower() in data_node.name.lower()) + except StopIteration: + assert False, f"Data node {data_node.name} does not have an exchange." + assert data_node.data_type.value == exchange.get("data-type", helper.DEFAULT_DATA_TYPE), ( + f"Data node {data_node.name} has type {data_node.data_type.value}, " + f"expected {exchange.get('data-type', helper.DEFAULT_DATA_TYPE)}." + ) + + +def test_mesh_nodes(): + """ + Check that mesh nodes are created correctly. + """ + topology, nodes, mesh_patch_map = simple_setup(patches=True) + mesh_nodes: list[n.MeshNode] = nodes["meshes"] + + # Check that each mesh is provided by exactly one participant + for mesh in mesh_nodes: + try: + provider: n.ParticipantNode = next(p for p in nodes["participants"] if mesh in p.provide_meshes) + impostor: n.ParticipantNode = next(p for p in nodes["participants"][::-1] if mesh in p.provide_meshes) + except StopIteration: + assert False, f"Mesh {mesh.name} is not provided by any participant." + assert provider == impostor, f"Mesh {mesh.name} is provided by both {provider.name} and {impostor.name}." + + assert mesh.use_data, f"Mesh {mesh.name} does not use any data." + + # Check the dimensions of the mesh + dimensionality: int = next(p.get("dimensionality", helper.DEFAULT_PARTICIPANT_DIMENSIONALITY) + for p in topology["participants"] if p["name"] == provider.name) + assert mesh.dimensions == dimensionality, (f"Mesh {mesh.name} has dimensions {mesh.dimensions}, " + f"expected {dimensionality}.") + + # Check that each mesh is in the mesh-patch map + for mesh in mesh_nodes: + assert mesh in mesh_patch_map, f"Mesh {mesh.name} is not in the mesh-patch map." + # Check that the patch in the mesh-patch-map is in the topology + patch_names: set[str] = mesh_patch_map[mesh] + for patch_name in patch_names: + try: + # Note: This is only an approximate scheme, since patch names are not unique + next(e for e in topology["exchanges"] if e["from-patch"] == patch_name or e["to-patch"] == patch_name) + except StopIteration: + assert False, f"Patch {patch_name} is not in any exchange in the topology." + + # Check that each patch in the topology is in the mesh-patch map + for exchange in topology["exchanges"]: + from_patch_name: str = exchange["from-patch"] + try: + next(m for m in mesh_nodes if from_patch_name in mesh_patch_map[m]) + except StopIteration: + assert False, f"Patch {from_patch_name} is not in any mesh in the mesh-patch map." + + to_patch_name: str = exchange["to-patch"] + try: + next(m for m in mesh_nodes if to_patch_name in mesh_patch_map[m]) + except StopIteration: + assert False, f"Patch {to_patch_name} is not in any mesh in the mesh-patch map." From 9cffa589d425a00383f448c65355c7cec46eed52 Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 25 Jan 2026 17:05:46 +0100 Subject: [PATCH 061/131] Test for coupling schemes --- .../coupling_scheme_test.py | 64 +++++++++++++++++ .../precice-config_three-participants.xml | 70 +++++++++++++++++++ .../precice-config_two-participants.xml | 57 +++++++++++++++ .../explicit_coupling/three-participants.yaml | 25 +++++++ .../explicit_coupling/two-participants.yaml | 22 ++++++ .../implicit_coupling/precice-config.xml | 63 +++++++++++++++++ .../implicit_coupling/topology.yaml | 22 ++++++ .../multi_coupling/precice-config.xml | 70 +++++++++++++++++++ .../multi_coupling/topology.yaml | 25 +++++++ 9 files changed, 418 insertions(+) create mode 100644 tests/new_tests/coupling-scheme-type/coupling_scheme_test.py create mode 100644 tests/new_tests/coupling-scheme-type/explicit_coupling/precice-config_three-participants.xml create mode 100644 tests/new_tests/coupling-scheme-type/explicit_coupling/precice-config_two-participants.xml create mode 100644 tests/new_tests/coupling-scheme-type/explicit_coupling/three-participants.yaml create mode 100644 tests/new_tests/coupling-scheme-type/explicit_coupling/two-participants.yaml create mode 100644 tests/new_tests/coupling-scheme-type/implicit_coupling/precice-config.xml create mode 100644 tests/new_tests/coupling-scheme-type/implicit_coupling/topology.yaml create mode 100644 tests/new_tests/coupling-scheme-type/multi_coupling/precice-config.xml create mode 100644 tests/new_tests/coupling-scheme-type/multi_coupling/topology.yaml diff --git a/tests/new_tests/coupling-scheme-type/coupling_scheme_test.py b/tests/new_tests/coupling-scheme-type/coupling_scheme_test.py new file mode 100644 index 0000000..7e901b5 --- /dev/null +++ b/tests/new_tests/coupling-scheme-type/coupling_scheme_test.py @@ -0,0 +1,64 @@ +""" +Test that coupling-schemes are created correctly according to the topology. +""" + +from pathlib import Path +from precice_config_graph.graph import check_config_equivalence +from preciceconfigcheck.cli import runCheck + +from precicecasegenerate.cli import generate_case + +# This directory is the same for all tests in this file. +test_directory: Path = Path(__file__).parent + + +def test_explicit_coupling_scheme(): + """ + Test that an explicit coupling-scheme is created. + """ + case_directory: Path = test_directory / "explicit_coupling" + input_file_two_participants: Path = case_directory / "two-participants.yaml" + + generate_case(input_file_two_participants, case_directory) + + expected: Path = case_directory / "precice-config_two-participants.xml" + actual: Path = case_directory / "_generated/precice-config.xml" + assert check_config_equivalence(expected, actual, ignore_names=True), "Configs are not equivalent up to naming." + assert runCheck(actual, True) == 0, "The config failed to validate." + + input_file_three_participants: Path = case_directory / "three-participants.yaml" + # The previous files are overwritten + generate_case(input_file_three_participants, case_directory) + + expected: Path = case_directory / "precice-config_three-participants.xml" + actual: Path = case_directory / "_generated/precice-config.xml" + assert check_config_equivalence(expected, actual, ignore_names=True), "Configs are not equivalent up to naming." + assert runCheck(actual, True) == 0, "The config failed to validate." + +def test_implicit_coupling_scheme(): + """ + Test that an implicit coupling-scheme is created. + """ + case_directory: Path = test_directory / "implicit_coupling" + input_file: Path = case_directory / "topology.yaml" + + generate_case(input_file, case_directory) + + expected: Path = case_directory / "precice-config.xml" + actual: Path = case_directory / "_generated/precice-config.xml" + assert check_config_equivalence(expected, actual, ignore_names=True), "Configs are not equivalent up to naming." + assert runCheck(actual, True) == 0, "The config failed to validate." + +def test_multi_coupling_scheme(): + """ + Test that a multi-coupling scheme is created. + """ + case_directory: Path = test_directory / "multi_coupling" + input_file: Path = case_directory / "topology.yaml" + + generate_case(input_file, case_directory) + + expected: Path = case_directory / "precice-config.xml" + actual: Path = case_directory / "_generated/precice-config.xml" + assert check_config_equivalence(expected, actual, ignore_names=True), "Configs are not equivalent up to naming." + assert runCheck(actual, True) == 0, "The config failed to validate." \ No newline at end of file diff --git a/tests/new_tests/coupling-scheme-type/explicit_coupling/precice-config_three-participants.xml b/tests/new_tests/coupling-scheme-type/explicit_coupling/precice-config_three-participants.xml new file mode 100644 index 0000000..a9ec843 --- /dev/null +++ b/tests/new_tests/coupling-scheme-type/explicit_coupling/precice-config_three-participants.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/new_tests/coupling-scheme-type/explicit_coupling/precice-config_two-participants.xml b/tests/new_tests/coupling-scheme-type/explicit_coupling/precice-config_two-participants.xml new file mode 100644 index 0000000..7479be3 --- /dev/null +++ b/tests/new_tests/coupling-scheme-type/explicit_coupling/precice-config_two-participants.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/new_tests/coupling-scheme-type/explicit_coupling/three-participants.yaml b/tests/new_tests/coupling-scheme-type/explicit_coupling/three-participants.yaml new file mode 100644 index 0000000..351c40e --- /dev/null +++ b/tests/new_tests/coupling-scheme-type/explicit_coupling/three-participants.yaml @@ -0,0 +1,25 @@ +participants: + - name: A + solver: ASolver + dimensionality: 2 + - name: B + solver: BSolver + dimensionality: 2 + - name: C + solver: CSolver + dimensionality: 2 +exchanges: + - from: A + to: B + data: Color + type: weak + data-type: scalar + from-patch: interface + to-patch: interface + - from: A + to: C + data: Color + type: strong + data-type: scalar + from-patch: interface + to-patch: interface diff --git a/tests/new_tests/coupling-scheme-type/explicit_coupling/two-participants.yaml b/tests/new_tests/coupling-scheme-type/explicit_coupling/two-participants.yaml new file mode 100644 index 0000000..b046ed7 --- /dev/null +++ b/tests/new_tests/coupling-scheme-type/explicit_coupling/two-participants.yaml @@ -0,0 +1,22 @@ +participants: + - name: A + solver: ASolver + dimensionality: 2 + - name: B + solver: BSolver + dimensionality: 2 +exchanges: + - from: A + to: B + data: Color + type: weak + data-type: scalar + from-patch: interface + to-patch: interface + - from: B + to: A + data: Color + type: strong + data-type: scalar + from-patch: interface + to-patch: interface diff --git a/tests/new_tests/coupling-scheme-type/implicit_coupling/precice-config.xml b/tests/new_tests/coupling-scheme-type/implicit_coupling/precice-config.xml new file mode 100644 index 0000000..d290c4a --- /dev/null +++ b/tests/new_tests/coupling-scheme-type/implicit_coupling/precice-config.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/new_tests/coupling-scheme-type/implicit_coupling/topology.yaml b/tests/new_tests/coupling-scheme-type/implicit_coupling/topology.yaml new file mode 100644 index 0000000..e1a5ffd --- /dev/null +++ b/tests/new_tests/coupling-scheme-type/implicit_coupling/topology.yaml @@ -0,0 +1,22 @@ +participants: + - name: A + solver: ASolver + dimensionality: 2 + - name: B + solver: BSolver + dimensionality: 2 +exchanges: + - from: A + to: B + data: Color + type: strong + data-type: scalar + from-patch: interface + to-patch: interface + - from: B + to: A + data: Color + type: strong + data-type: scalar + from-patch: interface + to-patch: interface diff --git a/tests/new_tests/coupling-scheme-type/multi_coupling/precice-config.xml b/tests/new_tests/coupling-scheme-type/multi_coupling/precice-config.xml new file mode 100644 index 0000000..a9ec843 --- /dev/null +++ b/tests/new_tests/coupling-scheme-type/multi_coupling/precice-config.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/new_tests/coupling-scheme-type/multi_coupling/topology.yaml b/tests/new_tests/coupling-scheme-type/multi_coupling/topology.yaml new file mode 100644 index 0000000..351c40e --- /dev/null +++ b/tests/new_tests/coupling-scheme-type/multi_coupling/topology.yaml @@ -0,0 +1,25 @@ +participants: + - name: A + solver: ASolver + dimensionality: 2 + - name: B + solver: BSolver + dimensionality: 2 + - name: C + solver: CSolver + dimensionality: 2 +exchanges: + - from: A + to: B + data: Color + type: weak + data-type: scalar + from-patch: interface + to-patch: interface + - from: A + to: C + data: Color + type: strong + data-type: scalar + from-patch: interface + to-patch: interface From 3592d1abc2b777a31d5b51ca12f876bb4578e0ef Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 25 Jan 2026 17:06:56 +0100 Subject: [PATCH 062/131] Moved tests --- .../{new_tests => }/coupling-scheme-type/coupling_scheme_test.py | 0 .../explicit_coupling/precice-config_three-participants.xml | 0 .../explicit_coupling/precice-config_two-participants.xml | 0 .../explicit_coupling/three-participants.yaml | 0 .../coupling-scheme-type/explicit_coupling/two-participants.yaml | 0 .../coupling-scheme-type/implicit_coupling/precice-config.xml | 0 .../coupling-scheme-type/implicit_coupling/topology.yaml | 0 .../coupling-scheme-type/multi_coupling/precice-config.xml | 0 .../coupling-scheme-type/multi_coupling/topology.yaml | 0 .../data-type/both_types_both_directions/precice-config.xml | 0 .../data-type/both_types_both_directions/topology.yaml | 0 tests/{new_tests => }/data-type/data_type_test.py | 0 .../data-type/different_type_both_directions/precice-config.xml | 0 .../data-type/different_type_both_directions/topology.yaml | 0 .../data-type/different_type_one_direction/precice-config.xml | 0 .../data-type/different_type_one_direction/topology.yaml | 0 .../data-type/same_type_both_directions/precice-config.xml | 0 .../data-type/same_type_both_directions/topology.yaml | 0 .../data-type/same_type_one_direction/precice-config.xml | 0 .../data-type/same_type_one_direction/topology.yaml | 0 tests/{new_tests => }/node-generation/complex_topology.yaml | 0 tests/{new_tests => }/node-generation/simple_topology.yaml | 0 tests/{new_tests => }/node-generation/test_node_generation.py | 0 23 files changed, 0 insertions(+), 0 deletions(-) rename tests/{new_tests => }/coupling-scheme-type/coupling_scheme_test.py (100%) rename tests/{new_tests => }/coupling-scheme-type/explicit_coupling/precice-config_three-participants.xml (100%) rename tests/{new_tests => }/coupling-scheme-type/explicit_coupling/precice-config_two-participants.xml (100%) rename tests/{new_tests => }/coupling-scheme-type/explicit_coupling/three-participants.yaml (100%) rename tests/{new_tests => }/coupling-scheme-type/explicit_coupling/two-participants.yaml (100%) rename tests/{new_tests => }/coupling-scheme-type/implicit_coupling/precice-config.xml (100%) rename tests/{new_tests => }/coupling-scheme-type/implicit_coupling/topology.yaml (100%) rename tests/{new_tests => }/coupling-scheme-type/multi_coupling/precice-config.xml (100%) rename tests/{new_tests => }/coupling-scheme-type/multi_coupling/topology.yaml (100%) rename tests/{new_tests => }/data-type/both_types_both_directions/precice-config.xml (100%) rename tests/{new_tests => }/data-type/both_types_both_directions/topology.yaml (100%) rename tests/{new_tests => }/data-type/data_type_test.py (100%) rename tests/{new_tests => }/data-type/different_type_both_directions/precice-config.xml (100%) rename tests/{new_tests => }/data-type/different_type_both_directions/topology.yaml (100%) rename tests/{new_tests => }/data-type/different_type_one_direction/precice-config.xml (100%) rename tests/{new_tests => }/data-type/different_type_one_direction/topology.yaml (100%) rename tests/{new_tests => }/data-type/same_type_both_directions/precice-config.xml (100%) rename tests/{new_tests => }/data-type/same_type_both_directions/topology.yaml (100%) rename tests/{new_tests => }/data-type/same_type_one_direction/precice-config.xml (100%) rename tests/{new_tests => }/data-type/same_type_one_direction/topology.yaml (100%) rename tests/{new_tests => }/node-generation/complex_topology.yaml (100%) rename tests/{new_tests => }/node-generation/simple_topology.yaml (100%) rename tests/{new_tests => }/node-generation/test_node_generation.py (100%) diff --git a/tests/new_tests/coupling-scheme-type/coupling_scheme_test.py b/tests/coupling-scheme-type/coupling_scheme_test.py similarity index 100% rename from tests/new_tests/coupling-scheme-type/coupling_scheme_test.py rename to tests/coupling-scheme-type/coupling_scheme_test.py diff --git a/tests/new_tests/coupling-scheme-type/explicit_coupling/precice-config_three-participants.xml b/tests/coupling-scheme-type/explicit_coupling/precice-config_three-participants.xml similarity index 100% rename from tests/new_tests/coupling-scheme-type/explicit_coupling/precice-config_three-participants.xml rename to tests/coupling-scheme-type/explicit_coupling/precice-config_three-participants.xml diff --git a/tests/new_tests/coupling-scheme-type/explicit_coupling/precice-config_two-participants.xml b/tests/coupling-scheme-type/explicit_coupling/precice-config_two-participants.xml similarity index 100% rename from tests/new_tests/coupling-scheme-type/explicit_coupling/precice-config_two-participants.xml rename to tests/coupling-scheme-type/explicit_coupling/precice-config_two-participants.xml diff --git a/tests/new_tests/coupling-scheme-type/explicit_coupling/three-participants.yaml b/tests/coupling-scheme-type/explicit_coupling/three-participants.yaml similarity index 100% rename from tests/new_tests/coupling-scheme-type/explicit_coupling/three-participants.yaml rename to tests/coupling-scheme-type/explicit_coupling/three-participants.yaml diff --git a/tests/new_tests/coupling-scheme-type/explicit_coupling/two-participants.yaml b/tests/coupling-scheme-type/explicit_coupling/two-participants.yaml similarity index 100% rename from tests/new_tests/coupling-scheme-type/explicit_coupling/two-participants.yaml rename to tests/coupling-scheme-type/explicit_coupling/two-participants.yaml diff --git a/tests/new_tests/coupling-scheme-type/implicit_coupling/precice-config.xml b/tests/coupling-scheme-type/implicit_coupling/precice-config.xml similarity index 100% rename from tests/new_tests/coupling-scheme-type/implicit_coupling/precice-config.xml rename to tests/coupling-scheme-type/implicit_coupling/precice-config.xml diff --git a/tests/new_tests/coupling-scheme-type/implicit_coupling/topology.yaml b/tests/coupling-scheme-type/implicit_coupling/topology.yaml similarity index 100% rename from tests/new_tests/coupling-scheme-type/implicit_coupling/topology.yaml rename to tests/coupling-scheme-type/implicit_coupling/topology.yaml diff --git a/tests/new_tests/coupling-scheme-type/multi_coupling/precice-config.xml b/tests/coupling-scheme-type/multi_coupling/precice-config.xml similarity index 100% rename from tests/new_tests/coupling-scheme-type/multi_coupling/precice-config.xml rename to tests/coupling-scheme-type/multi_coupling/precice-config.xml diff --git a/tests/new_tests/coupling-scheme-type/multi_coupling/topology.yaml b/tests/coupling-scheme-type/multi_coupling/topology.yaml similarity index 100% rename from tests/new_tests/coupling-scheme-type/multi_coupling/topology.yaml rename to tests/coupling-scheme-type/multi_coupling/topology.yaml diff --git a/tests/new_tests/data-type/both_types_both_directions/precice-config.xml b/tests/data-type/both_types_both_directions/precice-config.xml similarity index 100% rename from tests/new_tests/data-type/both_types_both_directions/precice-config.xml rename to tests/data-type/both_types_both_directions/precice-config.xml diff --git a/tests/new_tests/data-type/both_types_both_directions/topology.yaml b/tests/data-type/both_types_both_directions/topology.yaml similarity index 100% rename from tests/new_tests/data-type/both_types_both_directions/topology.yaml rename to tests/data-type/both_types_both_directions/topology.yaml diff --git a/tests/new_tests/data-type/data_type_test.py b/tests/data-type/data_type_test.py similarity index 100% rename from tests/new_tests/data-type/data_type_test.py rename to tests/data-type/data_type_test.py diff --git a/tests/new_tests/data-type/different_type_both_directions/precice-config.xml b/tests/data-type/different_type_both_directions/precice-config.xml similarity index 100% rename from tests/new_tests/data-type/different_type_both_directions/precice-config.xml rename to tests/data-type/different_type_both_directions/precice-config.xml diff --git a/tests/new_tests/data-type/different_type_both_directions/topology.yaml b/tests/data-type/different_type_both_directions/topology.yaml similarity index 100% rename from tests/new_tests/data-type/different_type_both_directions/topology.yaml rename to tests/data-type/different_type_both_directions/topology.yaml diff --git a/tests/new_tests/data-type/different_type_one_direction/precice-config.xml b/tests/data-type/different_type_one_direction/precice-config.xml similarity index 100% rename from tests/new_tests/data-type/different_type_one_direction/precice-config.xml rename to tests/data-type/different_type_one_direction/precice-config.xml diff --git a/tests/new_tests/data-type/different_type_one_direction/topology.yaml b/tests/data-type/different_type_one_direction/topology.yaml similarity index 100% rename from tests/new_tests/data-type/different_type_one_direction/topology.yaml rename to tests/data-type/different_type_one_direction/topology.yaml diff --git a/tests/new_tests/data-type/same_type_both_directions/precice-config.xml b/tests/data-type/same_type_both_directions/precice-config.xml similarity index 100% rename from tests/new_tests/data-type/same_type_both_directions/precice-config.xml rename to tests/data-type/same_type_both_directions/precice-config.xml diff --git a/tests/new_tests/data-type/same_type_both_directions/topology.yaml b/tests/data-type/same_type_both_directions/topology.yaml similarity index 100% rename from tests/new_tests/data-type/same_type_both_directions/topology.yaml rename to tests/data-type/same_type_both_directions/topology.yaml diff --git a/tests/new_tests/data-type/same_type_one_direction/precice-config.xml b/tests/data-type/same_type_one_direction/precice-config.xml similarity index 100% rename from tests/new_tests/data-type/same_type_one_direction/precice-config.xml rename to tests/data-type/same_type_one_direction/precice-config.xml diff --git a/tests/new_tests/data-type/same_type_one_direction/topology.yaml b/tests/data-type/same_type_one_direction/topology.yaml similarity index 100% rename from tests/new_tests/data-type/same_type_one_direction/topology.yaml rename to tests/data-type/same_type_one_direction/topology.yaml diff --git a/tests/new_tests/node-generation/complex_topology.yaml b/tests/node-generation/complex_topology.yaml similarity index 100% rename from tests/new_tests/node-generation/complex_topology.yaml rename to tests/node-generation/complex_topology.yaml diff --git a/tests/new_tests/node-generation/simple_topology.yaml b/tests/node-generation/simple_topology.yaml similarity index 100% rename from tests/new_tests/node-generation/simple_topology.yaml rename to tests/node-generation/simple_topology.yaml diff --git a/tests/new_tests/node-generation/test_node_generation.py b/tests/node-generation/test_node_generation.py similarity index 100% rename from tests/new_tests/node-generation/test_node_generation.py rename to tests/node-generation/test_node_generation.py From 8d4ab7d0063fdb9ef666c9a72b427c5ed3df3df8 Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 25 Jan 2026 18:00:03 +0100 Subject: [PATCH 063/131] Switched to integer return type Instead of directly exiting. This is better for testing and I am sure also for other things :) --- precicecasegenerate/cli.py | 24 ++++++++++++++++++------ precicecasegenerate/cli_helper.py | 8 +++++--- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/precicecasegenerate/cli.py b/precicecasegenerate/cli.py index d8e8ea6..6024509 100644 --- a/precicecasegenerate/cli.py +++ b/precicecasegenerate/cli.py @@ -15,30 +15,35 @@ logger = logging.getLogger(__name__) -def main(): +def main() -> int: args = cli_helper.get_args() setup_logging(verbose=args.verbose) logger.info("Program started.") - cli_helper.validate_args(args) + return_value: int = cli_helper.validate_args(args) + if return_value != 0: + return return_value input_file: Path = Path(args.file_path) output_root: Path = Path(args.output_path) - generate_case(input_file, output_root) + return_value: int = generate_case(input_file, output_root) + if return_value != 0: + return return_value logger.info("Program finished.") - sys.exit(0) + return 0 -def generate_case(input_file: Path, output_root: Path): +def generate_case(input_file: Path, output_root: Path) -> int: """ Generate all files for a preCICE case This method creates the required directories and calls the respective methods to create the nodes from the topology, the preCICE configuration file, the adapter configuration files, and the utility files. :param input_file: The path to the input file containing the topology. :param output_root: The root directory for the generated files. + :return: 0 if successful, 1 otherwise. """ # Create a new directory for the generated files generated_dir: Path = output_root / cli_helper.GENERATED_DIR_NAME @@ -50,6 +55,12 @@ def generate_case(input_file: Path, output_root: Path): logger.debug("Starting topology reader.") topology_reader: TopologyReader = TopologyReader(input_file.resolve()) + return_value: int = topology_reader.validate_topology() + if return_value != 0: + return return_value + return_value: int = topology_reader.check_topology() + if return_value != 0: + return return_value topology: dict = topology_reader.get_topology() logger.debug("Topology reader finished.") @@ -84,7 +95,8 @@ def generate_case(input_file: Path, output_root: Path): logger.debug("Starting utility file creator.") utility_file_creator: UtilityFileCreator = UtilityFileCreator(participant_solver_map) utility_file_creator.create_utility_files(parent_directory=generated_dir) + return 0 if __name__ == "__main__": - main() + sys.exit(main()) diff --git a/precicecasegenerate/cli_helper.py b/precicecasegenerate/cli_helper.py index 5273dc2..169157f 100644 --- a/precicecasegenerate/cli_helper.py +++ b/precicecasegenerate/cli_helper.py @@ -4,7 +4,6 @@ import argparse import logging -import sys from pathlib import Path logger = logging.getLogger(__name__) @@ -38,11 +37,12 @@ def get_args() -> argparse.Namespace: return parser.parse_args() -def validate_args(args: argparse.Namespace): +def validate_args(args: argparse.Namespace) -> int: """ Validate the arguments passed to the CLI. This checks if the input file exists and is a YAML file. :param args: The parsed arguments. + :return: 0 if the arguments are valid, 1 otherwise. """ logger.debug(f"Arguments parsed. Arguments: {vars(args)}. Checking if given file exists.") @@ -51,7 +51,7 @@ def validate_args(args: argparse.Namespace): # Check if the file exists if not input_file.is_file(): logger.critical(f"File {input_file.resolve()} does not exist. Aborting program.") - sys.exit(1) + return 1 logger.debug(f"File {input_file.resolve()} exists.") # Check if the file is a YAML file @@ -59,3 +59,5 @@ def validate_args(args: argparse.Namespace): logger.debug(f"File {input_file.resolve()} is a YAML file.") else: logger.critical(f"File {input_file.resolve()} is not a YAML file. Aborting program.") + return 1 + return 0 From 2422165bf424691a8ae80b3267bfe3d940c58740 Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 25 Jan 2026 18:00:51 +0100 Subject: [PATCH 064/131] Test preprocessing Added tests to check if preprocessing works correctly. --- .../duplicate_exchanges/topology.yaml | 22 +++++++++++ .../duplicate_participants/topology.yaml | 15 +++++++ tests/preprocessing/test_preprocessing.py | 39 +++++++++++++++++++ .../unknown_participants/topology.yaml | 15 +++++++ 4 files changed, 91 insertions(+) create mode 100644 tests/preprocessing/duplicate_exchanges/topology.yaml create mode 100644 tests/preprocessing/duplicate_participants/topology.yaml create mode 100644 tests/preprocessing/test_preprocessing.py create mode 100644 tests/preprocessing/unknown_participants/topology.yaml diff --git a/tests/preprocessing/duplicate_exchanges/topology.yaml b/tests/preprocessing/duplicate_exchanges/topology.yaml new file mode 100644 index 0000000..906b1d0 --- /dev/null +++ b/tests/preprocessing/duplicate_exchanges/topology.yaml @@ -0,0 +1,22 @@ +participants: + - name: A + solver: ASolver + dimensionality: 2 + - name: B + solver: BSolver + dimensionality: 2 +exchanges: + - from: A + to: B + data: Color + type: weak + data-type: scalar + from-patch: interface + to-patch: interface + - from: A + to: B + data: Color + type: weak + data-type: scalar + from-patch: interface + to-patch: interface diff --git a/tests/preprocessing/duplicate_participants/topology.yaml b/tests/preprocessing/duplicate_participants/topology.yaml new file mode 100644 index 0000000..7614841 --- /dev/null +++ b/tests/preprocessing/duplicate_participants/topology.yaml @@ -0,0 +1,15 @@ +participants: + - name: A + solver: ASolver + dimensionality: 2 + - name: A + solver: BSolver + dimensionality: 2 +exchanges: + - from: A + to: B + data: Color + type: weak + data-type: scalar + from-patch: interface + to-patch: interface diff --git a/tests/preprocessing/test_preprocessing.py b/tests/preprocessing/test_preprocessing.py new file mode 100644 index 0000000..5ec673f --- /dev/null +++ b/tests/preprocessing/test_preprocessing.py @@ -0,0 +1,39 @@ +""" +This file tests that the preprocessing works as expected. +""" +from pathlib import Path + +from precicecasegenerate.cli import generate_case + +# This directory is the same for all tests in this file. +test_directory: Path = Path(__file__).parent + + +def test_duplicate_participant_names(): + """ + Test that an error is raised when two participants have the same name. + """ + case_directory: Path = test_directory / "duplicate_participants" + input_file: Path = case_directory / "topology.yaml" + + assert 0 != generate_case(input_file, case_directory), "The case generation didn't fail." + + +def test_unknown_participant_names(): + """ + Test that an error is raised when a participant is mentioned in an exchange but not defined in the topology. + """ + case_directory: Path = test_directory / "unknown_participants" + input_file: Path = case_directory / "topology.yaml" + + assert 0 != generate_case(input_file, case_directory), "The case generation didn't fail." + + +def test_duplicate_exchanges(): + """ + Test that an error is raised when two exchanges have the exact same items. + """ + case_directory: Path = test_directory / "duplicate_exchanges" + input_file: Path = case_directory / "topology.yaml" + + assert 0 != generate_case(input_file, case_directory), "The case generation didn't fail." diff --git a/tests/preprocessing/unknown_participants/topology.yaml b/tests/preprocessing/unknown_participants/topology.yaml new file mode 100644 index 0000000..06681bf --- /dev/null +++ b/tests/preprocessing/unknown_participants/topology.yaml @@ -0,0 +1,15 @@ +participants: + - name: A + solver: ASolver + dimensionality: 2 + - name: B + solver: BSolver + dimensionality: 2 +exchanges: + - from: A + to: C + data: Color + type: weak + data-type: scalar + from-patch: interface + to-patch: interface From e9f9c56855d4f682681e92f0125c03d131bc2aa9 Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 25 Jan 2026 18:01:48 +0100 Subject: [PATCH 065/131] Miscellaneous test cases Added tests for miscellaneous topologies. They are all supposed to be correct --- tests/miscellaneous/misc1/topology.yaml | 25 +++++++++++++++++++++ tests/miscellaneous/misc2/topology.yaml | 29 +++++++++++++++++++++++++ tests/miscellaneous/misc3/topology.yaml | 25 +++++++++++++++++++++ tests/miscellaneous/test_validity.py | 28 ++++++++++++++++++++++++ 4 files changed, 107 insertions(+) create mode 100644 tests/miscellaneous/misc1/topology.yaml create mode 100644 tests/miscellaneous/misc2/topology.yaml create mode 100644 tests/miscellaneous/misc3/topology.yaml create mode 100644 tests/miscellaneous/test_validity.py diff --git a/tests/miscellaneous/misc1/topology.yaml b/tests/miscellaneous/misc1/topology.yaml new file mode 100644 index 0000000..0b2df99 --- /dev/null +++ b/tests/miscellaneous/misc1/topology.yaml @@ -0,0 +1,25 @@ +participants: + - name: Fluid + solver: OpenFOAM + dimensionality: 3 + + - name: Solid + solver: CalculiX + dimensionality: 3 + +exchanges: + - from: Fluid + from-patch: interface + to: Solid + to-patch: interface + data: Forces + data-type: vector + type: strong + + - from: Solid + from-patch: interface + to: Fluid + to-patch: interface + data: Displacement + data-type: vector + type: strong \ No newline at end of file diff --git a/tests/miscellaneous/misc2/topology.yaml b/tests/miscellaneous/misc2/topology.yaml new file mode 100644 index 0000000..2d456cd --- /dev/null +++ b/tests/miscellaneous/misc2/topology.yaml @@ -0,0 +1,29 @@ +participants: + - name: Heater + solver: Python + dimensionality: 2 + + - name: Wall + solver: C++ + dimensionality: 2 + + - name: Fluid + solver: Java + dimensionality: 3 + +exchanges: + - from: Heater + from-patch: top-surface + to: Wall + to-patch: bottom-surface + data: Heat-Flux + data-type: scalar + type: strong + + - from: Wall + from-patch: inner-surface + to: Fluid + to-patch: wall + data: Temperature + data-type: scalar + type: strong \ No newline at end of file diff --git a/tests/miscellaneous/misc3/topology.yaml b/tests/miscellaneous/misc3/topology.yaml new file mode 100644 index 0000000..9961329 --- /dev/null +++ b/tests/miscellaneous/misc3/topology.yaml @@ -0,0 +1,25 @@ +participants: + - name: A + solver: Solver + dimensionality: 3 + + - name: B + solver: Solver + dimensionality: 3 + +exchanges: + - from: A + from-patch: interface + to: B + to-patch: interface + data: Mighty-Force + data-type: vector + type: weak + + - from: B + from-patch: interface + to: A + to-patch: interface + data: Force + data-type: vector + type: weak \ No newline at end of file diff --git a/tests/miscellaneous/test_validity.py b/tests/miscellaneous/test_validity.py new file mode 100644 index 0000000..1712d46 --- /dev/null +++ b/tests/miscellaneous/test_validity.py @@ -0,0 +1,28 @@ +""" +This file contains tests for the validity of the generated preCICE config files. +""" + +from pathlib import Path +from preciceconfigcheck.cli import runCheck + +from precicecasegenerate.cli import generate_case + +# This directory is the same for all tests in this file. +test_directory: Path = Path(__file__).parent + + +def test_validity(): + """ + Check that all topologies generate valid preCICE config files. + """ + for case_directory in test_directory.iterdir(): + # Ignore files and folders like __pycache__/ + if not case_directory.is_dir() or case_directory.name.startswith("__"): + continue + + input_file: Path = case_directory / "topology.yaml" + + assert 0 == generate_case(input_file, case_directory), "Case generation failed." + + config_file: Path = case_directory / "_generated/precice-config.xml" + assert runCheck(config_file, True) == 0, "The config failed to validate." From 66567d5d9c2501a05ee498c17cde36afa342137d Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 25 Jan 2026 18:03:34 +0100 Subject: [PATCH 066/131] Update topology_reader.py Use integer return type instead of sysexit --- .../input_handler/topology_reader.py | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/precicecasegenerate/input_handler/topology_reader.py b/precicecasegenerate/input_handler/topology_reader.py index f938ffd..e335c0c 100644 --- a/precicecasegenerate/input_handler/topology_reader.py +++ b/precicecasegenerate/input_handler/topology_reader.py @@ -1,8 +1,8 @@ -import sys import yaml import json import jsonschema import logging +from pathlib import Path from importlib.resources import files from precicecasegenerate import helper @@ -14,25 +14,25 @@ class TopologyReader: Read a given topology.yaml file and save it as a dict. """ - def __init__(self, path_to_topology_file: str): - self.topology_file_path = path_to_topology_file + def __init__(self, path_to_topology_file: Path): + # Convert to Path object just in case + self.topology_file_path = Path(path_to_topology_file) self.topology = self._read_topology() - self._validate_topology() - self._check_topology() def _read_topology(self) -> dict: """ Read the topology file and convert it to a dict. :return: The topology dict. """ - logger.debug(f"Reading topology file at {self.topology_file_path}") + logger.debug(f"Reading topology file at {self.topology_file_path.resolve()}") with open(self.topology_file_path, "r") as topology_file: topology = yaml.safe_load(topology_file) return topology - def _validate_topology(self) -> None: + def validate_topology(self) -> int: """ Check if the topology adheres to the defined schema in schemas/topology-schema.json + :return: 0 if topology is valid, 1 otherwise """ schema_path = files("precicecasegenerate.schemas") / "topology-schema.json" @@ -41,20 +41,23 @@ def _validate_topology(self) -> None: jsonschema.validate(self.topology, schema) logger.debug("Topology file adheres to the schema.") except jsonschema.ValidationError as e: - logger.critical(f"Topology file {self.topology_file_path} does not adhere to the schema " + logger.critical(f"Topology file {self.topology_file_path.resolve()} does not adhere to the schema " f"as specified in {schema_path}: {e.message}. Aborting program.") - sys.exit(1) + return 1 + return 0 - def _check_topology(self) -> None: + def check_topology(self) -> int: """ Check if the topology is valid. This check includes: + - Checking if participant names are unique. - Checking if exchanges only contain known "to" and "from" participants. - Checking if exchanges are unique, when ignoring "to-patch", "from-patch" and "type" tags. If any of these checks fail, an error message is printed and the program is aborted. Additionally, it is checked if any of the data names contains one of the uniquifiers defined in helper.DATA_UNIQUIFIERS. If so, this uniquifier is removed from the list of uniquifiers. + :return: 0 if topology is valid, 1 otherwise """ participant_names: set[str] = set() # Check if participant names are unique @@ -62,7 +65,7 @@ def _check_topology(self) -> None: if participant["name"] in participant_names: logger.critical( f"Duplicate participant name {participant['name']} in topology file {self.topology_file_path}.") - sys.exit(1) + return 1 participant_names.add(participant["name"]) logger.debug("Topology does not contain duplicate participant names.") @@ -75,11 +78,11 @@ def _check_topology(self) -> None: if to_participant not in participant_names: logger.critical(f"Unknown participant {to_participant} in topology file " f"{self.topology_file_path}.") - sys.exit(1) + return 1 if from_participant not in participant_names: logger.critical(f"Unknown participant {from_participant} in topology file " f"{self.topology_file_path}.") - sys.exit(1) + return 1 data: str = exchange["data"] data_type: str = exchange.get("type", None) # Remove uniquifiers from the list if they are present in a data name @@ -87,14 +90,16 @@ def _check_topology(self) -> None: if uniquifier in data: helper.DATA_UNIQUIFIERS.remove(uniquifier) logger.debug(f"Removed uniquifier {uniquifier} from the list of uniquifiers.") + unique_exchange: dict[str, str] = {"to": to_participant, "from": from_participant, "data": data, "data-type": data_type} if unique_exchange in exchanges: logger.critical(f"Duplicate exchange {unique_exchange} in topology file {self.topology_file_path}.") - sys.exit(1) + return 1 exchanges.append(unique_exchange) logger.debug("Topology does not contain any errors.") + return 0 def get_topology(self) -> dict: """ From 313be12617fc88992db1962753236d1eb44bdf94 Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 25 Jan 2026 18:03:51 +0100 Subject: [PATCH 067/131] Removed unused imports --- precicecasegenerate/logging_setup.py | 2 -- precicecasegenerate/node_creator.py | 1 - 2 files changed, 3 deletions(-) diff --git a/precicecasegenerate/logging_setup.py b/precicecasegenerate/logging_setup.py index 46e964a..09f8c01 100644 --- a/precicecasegenerate/logging_setup.py +++ b/precicecasegenerate/logging_setup.py @@ -1,6 +1,4 @@ -import os import datetime -import glob import logging from logging import LogRecord, Logger from pathlib import Path diff --git a/precicecasegenerate/node_creator.py b/precicecasegenerate/node_creator.py index 35447e6..505c783 100644 --- a/precicecasegenerate/node_creator.py +++ b/precicecasegenerate/node_creator.py @@ -1,4 +1,3 @@ -import random import logging from precice_config_graph import nodes as n From 6bddb1fc3bddc1bcedfbdc7d8982c7f9d1ac3cab Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 25 Jan 2026 18:04:23 +0100 Subject: [PATCH 068/131] Update pyproject.toml Moved precice-config-check to be an optional dependency --- pyproject.toml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 5c73ebe..d162fcb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,6 +19,10 @@ dependencies = [ "precice-config-graph", "pyyaml", "jsonschema", +] +[project.optional-dependencies] +dev = [ + "pytest", "precice-config-check @ git+https://github.com/precice/config-check.git" ] From 729d638c45f80575a2f48dc2fdead8a36dec26ae Mon Sep 17 00:00:00 2001 From: Orlando Date: Sun, 25 Jan 2026 18:05:27 +0100 Subject: [PATCH 069/131] Update topology_reader.py Removed the test for duplicate exchanges. They are handled quite well during generation, so I do not think it is needed --- precicecasegenerate/input_handler/topology_reader.py | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/precicecasegenerate/input_handler/topology_reader.py b/precicecasegenerate/input_handler/topology_reader.py index e335c0c..7de3375 100644 --- a/precicecasegenerate/input_handler/topology_reader.py +++ b/precicecasegenerate/input_handler/topology_reader.py @@ -69,9 +69,7 @@ def check_topology(self) -> int: participant_names.add(participant["name"]) logger.debug("Topology does not contain duplicate participant names.") - exchanges: list[dict] = [] # Check if exchanges only contain known "to" and "from" participants - # Check if exchanges are unique, when ignoring "to-patch", "from-patch" and "type" tags for exchange in self.topology["exchanges"]: to_participant: str = exchange["to"] from_participant: str = exchange["from"] @@ -84,20 +82,12 @@ def check_topology(self) -> int: f"{self.topology_file_path}.") return 1 data: str = exchange["data"] - data_type: str = exchange.get("type", None) # Remove uniquifiers from the list if they are present in a data name for uniquifier in helper.DATA_UNIQUIFIERS.copy(): if uniquifier in data: helper.DATA_UNIQUIFIERS.remove(uniquifier) logger.debug(f"Removed uniquifier {uniquifier} from the list of uniquifiers.") - unique_exchange: dict[str, str] = {"to": to_participant, "from": from_participant, "data": data, - "data-type": data_type} - if unique_exchange in exchanges: - logger.critical(f"Duplicate exchange {unique_exchange} in topology file {self.topology_file_path}.") - return 1 - exchanges.append(unique_exchange) - logger.debug("Topology does not contain any errors.") return 0 From 6d02dc94886ab6c12fb96ca2c8ca3ab4534ef905 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 26 Jan 2026 10:38:11 +0100 Subject: [PATCH 070/131] Changed folder names Apparently a "-" is invalid for pytest / python folders. --- .../coupling_scheme_test.py | 0 .../explicit_coupling/precice-config_three-participants.xml | 0 .../explicit_coupling/precice-config_two-participants.xml | 0 .../explicit_coupling/three-participants.yaml | 0 .../explicit_coupling/two-participants.yaml | 0 .../implicit_coupling/precice-config.xml | 0 .../implicit_coupling/topology.yaml | 0 .../multi_coupling/precice-config.xml | 0 .../multi_coupling/topology.yaml | 0 .../both_types_both_directions/precice-config.xml | 0 .../both_types_both_directions/topology.yaml | 0 tests/{data-type => data_type}/data_type_test.py | 0 .../different_type_both_directions/precice-config.xml | 0 .../different_type_both_directions/topology.yaml | 0 .../different_type_one_direction/precice-config.xml | 0 .../different_type_one_direction/topology.yaml | 0 .../same_type_both_directions/precice-config.xml | 0 .../same_type_both_directions/topology.yaml | 0 .../same_type_one_direction/precice-config.xml | 0 .../same_type_one_direction/topology.yaml | 0 tests/{node-generation => node_generation}/complex_topology.yaml | 0 tests/{node-generation => node_generation}/simple_topology.yaml | 0 .../{node-generation => node_generation}/test_node_generation.py | 0 23 files changed, 0 insertions(+), 0 deletions(-) rename tests/{coupling-scheme-type => coupling_scheme_type}/coupling_scheme_test.py (100%) rename tests/{coupling-scheme-type => coupling_scheme_type}/explicit_coupling/precice-config_three-participants.xml (100%) rename tests/{coupling-scheme-type => coupling_scheme_type}/explicit_coupling/precice-config_two-participants.xml (100%) rename tests/{coupling-scheme-type => coupling_scheme_type}/explicit_coupling/three-participants.yaml (100%) rename tests/{coupling-scheme-type => coupling_scheme_type}/explicit_coupling/two-participants.yaml (100%) rename tests/{coupling-scheme-type => coupling_scheme_type}/implicit_coupling/precice-config.xml (100%) rename tests/{coupling-scheme-type => coupling_scheme_type}/implicit_coupling/topology.yaml (100%) rename tests/{coupling-scheme-type => coupling_scheme_type}/multi_coupling/precice-config.xml (100%) rename tests/{coupling-scheme-type => coupling_scheme_type}/multi_coupling/topology.yaml (100%) rename tests/{data-type => data_type}/both_types_both_directions/precice-config.xml (100%) rename tests/{data-type => data_type}/both_types_both_directions/topology.yaml (100%) rename tests/{data-type => data_type}/data_type_test.py (100%) rename tests/{data-type => data_type}/different_type_both_directions/precice-config.xml (100%) rename tests/{data-type => data_type}/different_type_both_directions/topology.yaml (100%) rename tests/{data-type => data_type}/different_type_one_direction/precice-config.xml (100%) rename tests/{data-type => data_type}/different_type_one_direction/topology.yaml (100%) rename tests/{data-type => data_type}/same_type_both_directions/precice-config.xml (100%) rename tests/{data-type => data_type}/same_type_both_directions/topology.yaml (100%) rename tests/{data-type => data_type}/same_type_one_direction/precice-config.xml (100%) rename tests/{data-type => data_type}/same_type_one_direction/topology.yaml (100%) rename tests/{node-generation => node_generation}/complex_topology.yaml (100%) rename tests/{node-generation => node_generation}/simple_topology.yaml (100%) rename tests/{node-generation => node_generation}/test_node_generation.py (100%) diff --git a/tests/coupling-scheme-type/coupling_scheme_test.py b/tests/coupling_scheme_type/coupling_scheme_test.py similarity index 100% rename from tests/coupling-scheme-type/coupling_scheme_test.py rename to tests/coupling_scheme_type/coupling_scheme_test.py diff --git a/tests/coupling-scheme-type/explicit_coupling/precice-config_three-participants.xml b/tests/coupling_scheme_type/explicit_coupling/precice-config_three-participants.xml similarity index 100% rename from tests/coupling-scheme-type/explicit_coupling/precice-config_three-participants.xml rename to tests/coupling_scheme_type/explicit_coupling/precice-config_three-participants.xml diff --git a/tests/coupling-scheme-type/explicit_coupling/precice-config_two-participants.xml b/tests/coupling_scheme_type/explicit_coupling/precice-config_two-participants.xml similarity index 100% rename from tests/coupling-scheme-type/explicit_coupling/precice-config_two-participants.xml rename to tests/coupling_scheme_type/explicit_coupling/precice-config_two-participants.xml diff --git a/tests/coupling-scheme-type/explicit_coupling/three-participants.yaml b/tests/coupling_scheme_type/explicit_coupling/three-participants.yaml similarity index 100% rename from tests/coupling-scheme-type/explicit_coupling/three-participants.yaml rename to tests/coupling_scheme_type/explicit_coupling/three-participants.yaml diff --git a/tests/coupling-scheme-type/explicit_coupling/two-participants.yaml b/tests/coupling_scheme_type/explicit_coupling/two-participants.yaml similarity index 100% rename from tests/coupling-scheme-type/explicit_coupling/two-participants.yaml rename to tests/coupling_scheme_type/explicit_coupling/two-participants.yaml diff --git a/tests/coupling-scheme-type/implicit_coupling/precice-config.xml b/tests/coupling_scheme_type/implicit_coupling/precice-config.xml similarity index 100% rename from tests/coupling-scheme-type/implicit_coupling/precice-config.xml rename to tests/coupling_scheme_type/implicit_coupling/precice-config.xml diff --git a/tests/coupling-scheme-type/implicit_coupling/topology.yaml b/tests/coupling_scheme_type/implicit_coupling/topology.yaml similarity index 100% rename from tests/coupling-scheme-type/implicit_coupling/topology.yaml rename to tests/coupling_scheme_type/implicit_coupling/topology.yaml diff --git a/tests/coupling-scheme-type/multi_coupling/precice-config.xml b/tests/coupling_scheme_type/multi_coupling/precice-config.xml similarity index 100% rename from tests/coupling-scheme-type/multi_coupling/precice-config.xml rename to tests/coupling_scheme_type/multi_coupling/precice-config.xml diff --git a/tests/coupling-scheme-type/multi_coupling/topology.yaml b/tests/coupling_scheme_type/multi_coupling/topology.yaml similarity index 100% rename from tests/coupling-scheme-type/multi_coupling/topology.yaml rename to tests/coupling_scheme_type/multi_coupling/topology.yaml diff --git a/tests/data-type/both_types_both_directions/precice-config.xml b/tests/data_type/both_types_both_directions/precice-config.xml similarity index 100% rename from tests/data-type/both_types_both_directions/precice-config.xml rename to tests/data_type/both_types_both_directions/precice-config.xml diff --git a/tests/data-type/both_types_both_directions/topology.yaml b/tests/data_type/both_types_both_directions/topology.yaml similarity index 100% rename from tests/data-type/both_types_both_directions/topology.yaml rename to tests/data_type/both_types_both_directions/topology.yaml diff --git a/tests/data-type/data_type_test.py b/tests/data_type/data_type_test.py similarity index 100% rename from tests/data-type/data_type_test.py rename to tests/data_type/data_type_test.py diff --git a/tests/data-type/different_type_both_directions/precice-config.xml b/tests/data_type/different_type_both_directions/precice-config.xml similarity index 100% rename from tests/data-type/different_type_both_directions/precice-config.xml rename to tests/data_type/different_type_both_directions/precice-config.xml diff --git a/tests/data-type/different_type_both_directions/topology.yaml b/tests/data_type/different_type_both_directions/topology.yaml similarity index 100% rename from tests/data-type/different_type_both_directions/topology.yaml rename to tests/data_type/different_type_both_directions/topology.yaml diff --git a/tests/data-type/different_type_one_direction/precice-config.xml b/tests/data_type/different_type_one_direction/precice-config.xml similarity index 100% rename from tests/data-type/different_type_one_direction/precice-config.xml rename to tests/data_type/different_type_one_direction/precice-config.xml diff --git a/tests/data-type/different_type_one_direction/topology.yaml b/tests/data_type/different_type_one_direction/topology.yaml similarity index 100% rename from tests/data-type/different_type_one_direction/topology.yaml rename to tests/data_type/different_type_one_direction/topology.yaml diff --git a/tests/data-type/same_type_both_directions/precice-config.xml b/tests/data_type/same_type_both_directions/precice-config.xml similarity index 100% rename from tests/data-type/same_type_both_directions/precice-config.xml rename to tests/data_type/same_type_both_directions/precice-config.xml diff --git a/tests/data-type/same_type_both_directions/topology.yaml b/tests/data_type/same_type_both_directions/topology.yaml similarity index 100% rename from tests/data-type/same_type_both_directions/topology.yaml rename to tests/data_type/same_type_both_directions/topology.yaml diff --git a/tests/data-type/same_type_one_direction/precice-config.xml b/tests/data_type/same_type_one_direction/precice-config.xml similarity index 100% rename from tests/data-type/same_type_one_direction/precice-config.xml rename to tests/data_type/same_type_one_direction/precice-config.xml diff --git a/tests/data-type/same_type_one_direction/topology.yaml b/tests/data_type/same_type_one_direction/topology.yaml similarity index 100% rename from tests/data-type/same_type_one_direction/topology.yaml rename to tests/data_type/same_type_one_direction/topology.yaml diff --git a/tests/node-generation/complex_topology.yaml b/tests/node_generation/complex_topology.yaml similarity index 100% rename from tests/node-generation/complex_topology.yaml rename to tests/node_generation/complex_topology.yaml diff --git a/tests/node-generation/simple_topology.yaml b/tests/node_generation/simple_topology.yaml similarity index 100% rename from tests/node-generation/simple_topology.yaml rename to tests/node_generation/simple_topology.yaml diff --git a/tests/node-generation/test_node_generation.py b/tests/node_generation/test_node_generation.py similarity index 100% rename from tests/node-generation/test_node_generation.py rename to tests/node_generation/test_node_generation.py From 49f6f13af75649bb549cfd7d1fdc882f162670aa Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 26 Jan 2026 10:38:29 +0100 Subject: [PATCH 071/131] Updated CI It works again --- pyproject.toml | 9 ++++----- tox.ini | 5 ++--- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index d162fcb..81d16db 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,7 +23,7 @@ dependencies = [ [project.optional-dependencies] dev = [ "pytest", - "precice-config-check @ git+https://github.com/precice/config-check.git" + "precice-config-check" ] [project.scripts] @@ -33,10 +33,9 @@ precice-case-generate = "precicecasegenerate.cli:main" Repository = "https://github.com/precice/case-generate" Documentation = "https://github.com/precice/case-generate/blob/main/README.md" -[tool.setuptools] -packages = [ - "precicecasegenerate", -] +[tool.setuptools.packages.find] +where = ["."] +include = ["precicecasegenerate*"] [tool.setuptools-git-versioning] enabled = true diff --git a/tox.ini b/tox.ini index 47c56d1..5586051 100644 --- a/tox.ini +++ b/tox.ini @@ -9,9 +9,8 @@ env_list = description = run the tests with pytest package = wheel wheel_build_env = .pkg -deps = - precice-config-check - pytest>=6 +extras = + dev commands = pytest {tty:--color=yes} {posargs} From 4b1849d73bb295d85f6551039a860b376b3ae91c Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 26 Jan 2026 11:08:54 +0100 Subject: [PATCH 072/131] Removed old examples --- examples/0/README.md | 8 - examples/0/config_graph.png | Bin 126060 -> 0 bytes examples/0/fluid-su2/adapter-config.json | 13 - examples/0/fluid-su2/run.sh | 20 - examples/0/precice-config.xml | 47 --- examples/0/solid-calculix/adapter-config.json | 15 - examples/0/solid-calculix/run.sh | 20 - examples/0/topology.yaml | 14 - examples/0/vis.png | Bin 48393 -> 0 bytes examples/1/README.md | 8 - examples/1/config_graph.png | Bin 266951 -> 0 bytes .../1/fluid-su2/precice-adapter-config.json | 18 - examples/1/image.png | Bin 62730 -> 0 bytes examples/1/precice-config.xml | 59 --- .../precice-adapter-config.json | 18 - examples/2/README.md | 6 - examples/2/config_graph.png | Bin 277057 -> 0 bytes .../2/fluid-su2/precice-adapter-config.json | 18 - examples/2/image.png | Bin 62730 -> 0 bytes examples/2/precice-config.xml | 59 --- .../precice-adapter-config.json | 18 - examples/3/README.md | 12 - examples/3/config_graph.png | Bin 261491 -> 0 bytes examples/3/fluid-openfoam/adapter-config.json | 18 - examples/3/image.png | Bin 77771 -> 0 bytes examples/3/precice-config.xml | 64 ---- examples/3/solid-fenics/adapter-config.json | 18 - examples/3/topology.yaml | 32 -- examples/4/README.md | 7 - examples/4/config_graph.png | Bin 262023 -> 0 bytes .../adapter-config.json | 18 - examples/4/image.png | Bin 82782 -> 0 bytes examples/4/neumann-fenics/adapter-config.json | 18 - examples/4/precice-config.xml | 59 --- examples/4/topology.yaml | 28 -- examples/5/README.md | 6 - examples/5/config_graph.png | Bin 406320 -> 0 bytes .../fluid-bottom-openfoam/adapter-config.json | 18 - .../5/fluid-top-openfoam/adapter-config.json | 18 - examples/5/image.png | Bin 172299 -> 0 bytes examples/5/precice-config.xml | 116 ------ examples/5/solid-calculix/adapter-config.json | 18 - examples/expert/4/README.md | 8 - examples/expert/4/config_graph.png | Bin 262023 -> 0 bytes .../adapter-config.json | 18 - examples/expert/4/image.png | Bin 82782 -> 0 bytes .../4/neumann-fenics/adapter-config.json | 18 - examples/expert/4/precice-config.xml | 64 ---- examples/expert/4/topology.yaml | 35 -- examples/expert/5/README.md | 6 - examples/expert/5/config_graph.png | Bin 406320 -> 0 bytes .../fluid-bottom-openfoam/adapter-config.json | 18 - .../5/fluid-top-openfoam/adapter-config.json | 18 - examples/expert/5/image.png | Bin 172299 -> 0 bytes examples/expert/5/precice-config.xml | 121 ------ .../5/solid-calculix/adapter-config.json | 18 - .../multi-coupling/_generated/README.md | 88 ----- .../multi-coupling/_generated/clean.sh | 350 ------------------ .../nastin-asolver/adapter-config.json | 42 --- .../_generated/nastin-asolver/run.sh | 21 -- .../_generated/precice-config.xml | 144 ------- .../solidz1-solver/adapter-config.json | 18 - .../_generated/solidz1-solver/run.sh | 21 -- .../solidz2-solver/adapter-config.json | 18 - .../_generated/solidz2-solver/run.sh | 21 -- .../solidz3-solver/adapter-config.json | 18 - .../_generated/solidz3-solver/run.sh | 21 -- new_examples/multi-coupling/multi.yaml | 56 --- new_examples/tutorial1/_generated/README.md | 78 ---- new_examples/tutorial1/_generated/clean.sh | 350 ------------------ .../generator-asolver/adapter-config.json | 15 - .../_generated/generator-asolver/run.sh | 21 -- .../tutorial1/_generated/precice-config.xml | 44 --- .../propagator-bsolver/adapter-config.json | 15 - .../_generated/propagator-bsolver/run.sh | 21 -- new_examples/tutorial1/tutorial1.yaml | 15 - new_examples/tutorial2/_generated/README.md | 83 ----- new_examples/tutorial2/_generated/clean.sh | 350 ------------------ .../adapter-config.json | 15 - .../_generated/generator-left-asolver/run.sh | 21 -- .../adapter-config.json | 15 - .../_generated/generator-right-asolver/run.sh | 21 -- .../tutorial2/_generated/precice-config.xml | 70 ---- .../propagator-bsolver/adapter-config.json | 24 -- .../_generated/propagator-bsolver/run.sh | 21 -- new_examples/tutorial2/tutorial2.yaml | 25 -- new_examples/tutorial3/_generated/README.md | 78 ---- new_examples/tutorial3/_generated/clean.sh | 350 ------------------ .../fluid-openfoam/adapter-config.json | 18 - .../_generated/fluid-openfoam/run.sh | 21 -- .../tutorial3/_generated/precice-config.xml | 63 ---- .../solid-nutils/adapter-config.json | 18 - .../tutorial3/_generated/solid-nutils/run.sh | 21 -- new_examples/tutorial3/tutorial3.yaml | 22 -- new_examples/tutorial4/_generated/README.md | 78 ---- .../_generated/a-asolver/adapter-config.json | 15 - .../tutorial4/_generated/a-asolver/run.sh | 21 -- .../_generated/b-bsolver/adapter-config.json | 15 - .../tutorial4/_generated/b-bsolver/run.sh | 21 -- new_examples/tutorial4/_generated/clean.sh | 350 ------------------ .../tutorial4/_generated/precice-config.xml | 44 --- new_examples/tutorial4/tutorial4.yaml | 15 - 102 files changed, 4287 deletions(-) delete mode 100644 examples/0/README.md delete mode 100644 examples/0/config_graph.png delete mode 100644 examples/0/fluid-su2/adapter-config.json delete mode 100644 examples/0/fluid-su2/run.sh delete mode 100644 examples/0/precice-config.xml delete mode 100644 examples/0/solid-calculix/adapter-config.json delete mode 100644 examples/0/solid-calculix/run.sh delete mode 100644 examples/0/topology.yaml delete mode 100644 examples/0/vis.png delete mode 100644 examples/1/README.md delete mode 100644 examples/1/config_graph.png delete mode 100644 examples/1/fluid-su2/precice-adapter-config.json delete mode 100644 examples/1/image.png delete mode 100644 examples/1/precice-config.xml delete mode 100644 examples/1/solid-calculix/precice-adapter-config.json delete mode 100644 examples/2/README.md delete mode 100644 examples/2/config_graph.png delete mode 100644 examples/2/fluid-su2/precice-adapter-config.json delete mode 100644 examples/2/image.png delete mode 100644 examples/2/precice-config.xml delete mode 100644 examples/2/solid-calculix/precice-adapter-config.json delete mode 100644 examples/3/README.md delete mode 100644 examples/3/config_graph.png delete mode 100644 examples/3/fluid-openfoam/adapter-config.json delete mode 100644 examples/3/image.png delete mode 100644 examples/3/precice-config.xml delete mode 100644 examples/3/solid-fenics/adapter-config.json delete mode 100644 examples/3/topology.yaml delete mode 100644 examples/4/README.md delete mode 100644 examples/4/config_graph.png delete mode 100644 examples/4/dirichlet-dirichletfenics/adapter-config.json delete mode 100644 examples/4/image.png delete mode 100644 examples/4/neumann-fenics/adapter-config.json delete mode 100644 examples/4/precice-config.xml delete mode 100644 examples/4/topology.yaml delete mode 100644 examples/5/README.md delete mode 100644 examples/5/config_graph.png delete mode 100644 examples/5/fluid-bottom-openfoam/adapter-config.json delete mode 100644 examples/5/fluid-top-openfoam/adapter-config.json delete mode 100644 examples/5/image.png delete mode 100644 examples/5/precice-config.xml delete mode 100644 examples/5/solid-calculix/adapter-config.json delete mode 100644 examples/expert/4/README.md delete mode 100644 examples/expert/4/config_graph.png delete mode 100644 examples/expert/4/dirichlet-dirichletfenics/adapter-config.json delete mode 100644 examples/expert/4/image.png delete mode 100644 examples/expert/4/neumann-fenics/adapter-config.json delete mode 100644 examples/expert/4/precice-config.xml delete mode 100644 examples/expert/4/topology.yaml delete mode 100644 examples/expert/5/README.md delete mode 100644 examples/expert/5/config_graph.png delete mode 100644 examples/expert/5/fluid-bottom-openfoam/adapter-config.json delete mode 100644 examples/expert/5/fluid-top-openfoam/adapter-config.json delete mode 100644 examples/expert/5/image.png delete mode 100644 examples/expert/5/precice-config.xml delete mode 100644 examples/expert/5/solid-calculix/adapter-config.json delete mode 100644 new_examples/multi-coupling/_generated/README.md delete mode 100644 new_examples/multi-coupling/_generated/clean.sh delete mode 100644 new_examples/multi-coupling/_generated/nastin-asolver/adapter-config.json delete mode 100644 new_examples/multi-coupling/_generated/nastin-asolver/run.sh delete mode 100644 new_examples/multi-coupling/_generated/precice-config.xml delete mode 100644 new_examples/multi-coupling/_generated/solidz1-solver/adapter-config.json delete mode 100644 new_examples/multi-coupling/_generated/solidz1-solver/run.sh delete mode 100644 new_examples/multi-coupling/_generated/solidz2-solver/adapter-config.json delete mode 100644 new_examples/multi-coupling/_generated/solidz2-solver/run.sh delete mode 100644 new_examples/multi-coupling/_generated/solidz3-solver/adapter-config.json delete mode 100644 new_examples/multi-coupling/_generated/solidz3-solver/run.sh delete mode 100644 new_examples/multi-coupling/multi.yaml delete mode 100644 new_examples/tutorial1/_generated/README.md delete mode 100644 new_examples/tutorial1/_generated/clean.sh delete mode 100644 new_examples/tutorial1/_generated/generator-asolver/adapter-config.json delete mode 100644 new_examples/tutorial1/_generated/generator-asolver/run.sh delete mode 100644 new_examples/tutorial1/_generated/precice-config.xml delete mode 100644 new_examples/tutorial1/_generated/propagator-bsolver/adapter-config.json delete mode 100644 new_examples/tutorial1/_generated/propagator-bsolver/run.sh delete mode 100644 new_examples/tutorial1/tutorial1.yaml delete mode 100644 new_examples/tutorial2/_generated/README.md delete mode 100644 new_examples/tutorial2/_generated/clean.sh delete mode 100644 new_examples/tutorial2/_generated/generator-left-asolver/adapter-config.json delete mode 100644 new_examples/tutorial2/_generated/generator-left-asolver/run.sh delete mode 100644 new_examples/tutorial2/_generated/generator-right-asolver/adapter-config.json delete mode 100644 new_examples/tutorial2/_generated/generator-right-asolver/run.sh delete mode 100644 new_examples/tutorial2/_generated/precice-config.xml delete mode 100644 new_examples/tutorial2/_generated/propagator-bsolver/adapter-config.json delete mode 100644 new_examples/tutorial2/_generated/propagator-bsolver/run.sh delete mode 100644 new_examples/tutorial2/tutorial2.yaml delete mode 100644 new_examples/tutorial3/_generated/README.md delete mode 100644 new_examples/tutorial3/_generated/clean.sh delete mode 100644 new_examples/tutorial3/_generated/fluid-openfoam/adapter-config.json delete mode 100644 new_examples/tutorial3/_generated/fluid-openfoam/run.sh delete mode 100644 new_examples/tutorial3/_generated/precice-config.xml delete mode 100644 new_examples/tutorial3/_generated/solid-nutils/adapter-config.json delete mode 100644 new_examples/tutorial3/_generated/solid-nutils/run.sh delete mode 100644 new_examples/tutorial3/tutorial3.yaml delete mode 100644 new_examples/tutorial4/_generated/README.md delete mode 100644 new_examples/tutorial4/_generated/a-asolver/adapter-config.json delete mode 100644 new_examples/tutorial4/_generated/a-asolver/run.sh delete mode 100644 new_examples/tutorial4/_generated/b-bsolver/adapter-config.json delete mode 100644 new_examples/tutorial4/_generated/b-bsolver/run.sh delete mode 100644 new_examples/tutorial4/_generated/clean.sh delete mode 100644 new_examples/tutorial4/_generated/precice-config.xml delete mode 100644 new_examples/tutorial4/tutorial4.yaml diff --git a/examples/0/README.md b/examples/0/README.md deleted file mode 100644 index eb7f297..0000000 --- a/examples/0/README.md +++ /dev/null @@ -1,8 +0,0 @@ -This examples represents the most basic configuration. It was directly inspired by preCICE's workshop example for beginners to start learning preCICE. - -Since it contains only a uni-directional data exchange and only data point, its not a fully functional configuration. - -Inspired by: https://github.com/precice-forschungsprojekt/precice-generator/pull/55 and probably https://precice.org/configuration-coupling-mesh-exchange.html#example-configuration - -![](config_graph.png) -![](vis.png) diff --git a/examples/0/config_graph.png b/examples/0/config_graph.png deleted file mode 100644 index ad27af06edb9984f8c4195362baafc1e116e4fc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126060 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/0/solid-calculix/adapter-config.json b/examples/0/solid-calculix/adapter-config.json deleted file mode 100644 index cbe3039..0000000 --- a/examples/0/solid-calculix/adapter-config.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "participant_name": "Solid", - "precice_config_file_name": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "Solid-Mesh", - "patches": [ - "surface" - ], - "read_data_names": [ - "Force" - ] - } - ] -} diff --git a/examples/0/solid-calculix/run.sh b/examples/0/solid-calculix/run.sh deleted file mode 100644 index 8817731..0000000 --- a/examples/0/solid-calculix/run.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -# -# run.sh Script -# -# This is a template. You need to implement it yourself. -# -# If you are trying to launch a Python script, you need to add: -# -# python path/to/file.py -# -# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh -# -# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment -# or installing dependencies) have already been completed. -# Therefore, you may only need to add: -# -# python path/to/file.py -# - -set -e # Exit immediately if any command fails diff --git a/examples/0/topology.yaml b/examples/0/topology.yaml deleted file mode 100644 index a467de7..0000000 --- a/examples/0/topology.yaml +++ /dev/null @@ -1,14 +0,0 @@ -coupling-scheme: - display_standard_values: false -participants: - - name: Fluid - solver: SU2 - - name: Solid - solver: Calculix -exchanges: - - from: Fluid - from-patch: interface - to: Solid - to-patch: surface - data: Force - type: strong diff --git a/examples/0/vis.png b/examples/0/vis.png deleted file mode 100644 index 12aa087aa6b6d0d0ba482aee983160a6b02ee4d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48393 zcmcG$WmHvP+c&yJ1O%j|LqI^JyBk4iknZm8PU#ZqMo>ZN?k?$)?(Xh>=l;iiKhJo_ z`E<_NqB3Odz2;i$s$Wb)24}<>CE9TcXL8*U#W{&ktpX{HP zLe3jB%zqEUf9IDJ^3Utf8^n%(-|$UL{uSlF?_djqVfy!Df68Npg#Pn}_mSEEuTD{# zaRAxg-j0_K{sZ~>^C$1wu*kSp(7&s(%_RyMNMQ>fOy`MBOVh+V|LtZzU1l_{<^RtS z2y)N;a9e)IkmE7x3K}6(Y*G)r#`=4mG39|1|Nmd4YX0dGkMrIu7M9q80$L0VjGCQa z`R}ErjdmvrVPT%kR9R`HuPY@tH1Lj&j^eVJV^z;PYd9s6|8rmMwezd+^kwk=FEvFcXU6-DC@{@SooPD*JEV7&``C2EDZ?Bvm|LGHKc6Rn#C(Y>Yk3U!ceFABy zzl?&W)_P*`IIIbEyss(D%*>WAv>V+=3N<*2>UQ3qoSgj1sW3+;A{tof45#s$D>dk5 zHXD82Z=8-t^Y1#|$5T;^<;t3@{f^t0|hDo!#2n+UMlt(0S|4D4v5X_dUxENEa1a$F;SogZV*^f)Aa_y z#!#kgd(aD})B$7y_C3R<^M7;21b&tENf%hYOrDLha>5f_<^1s@S6-?LSv9p}yKyBI zyu+s3qL{=)lZLC6a4|>63MP*W%XUU&gPXH$F?;*6C%DPU$z7jGMItn;YdcF+X}cmh z7EEc?D}L8pZ=^>4^^fX>Vv9{)?FN~HO@V=dV(RKC=$M$8*0Z$^xg$kdJUJi$g7k33 z#KeN+tF5)3GHwi}TglM0SbsG^!kUmkvbxW6U1zr7Ur>Ghu|^DTS(q63>&RTm-#l1kR~4m>CV zmpMD}+A8SL^oe~_RaU8B1x(&|u1^{Hua*LAGd&I)Cm|7LV?P3CA5IdRaed|Gpx!?i4rIwZjOnPmfjxMUKX7NGV@~^l(3uujXr|XU)B0%XtZfBe*)G%@7 zB_<~&ZB=dd_Hu28Cw6V&#QRTaU89v({%#SXR!HR%WNc}T{>jbxZuh}_eeH4(0pw~cC%R@c!vk`4P=CmX98gwPM!v(f zCaTjXl52>9&x+s+l1{IBHZ&^ghj=t`f2IHl0^JnDzvY4c*Qj8DQD1_f>3+UJAV)B* zRvlL6kc;SNXVbJ71niLJKsm}->bdS^TSBIcd29HV&C|eH8Iwg!yNY32W@e1$MIF7& zN{dMtaX2HVoj=bPWhEsIMzY@_<1v2%?;rm5A=ZAki0A;UXR#Tj`Epc}L0(f+3PgDA zN*Im#A0@$ef5*exox*oN)d08`HB0_T2(U1BH@n5%dltBGeu5B$K(1z$dS@$$f`Y=J z)YtL7VcJ3voM$0cwY9Yn-jmdX+B#;XI!3)DsWdar^>~}b$8T`TA*6$Z<65_bbC;bnmeX;Fcr*G z@wnZPKtVwPUDef0@a3+UQRfad+nib@pjiO$~0=oNBO) z)!qHi5_;k%==&7Zeka<@Asm!3 zlwwk9>d>zu!QgY7KWAhNwgn=&U9TrzgF+&4xX=i?5kfPHcXQ^Dz++mb&jYmMff$>r zFvAQD4TV6jyfYjJR44~f6uxdY`8+<@X6iEjuCZISt)GW{`|)G6%&6~(=|5RdkpN2c z-SHTn?%mb#x7=KZ)@L|rNBkfqC~&l0Nuj+8td~}`#FxbT%8$!o<8y3m`)afRv37Yr z2w*H6oYTqXhj>s+P8S~^5+eyXn5|}5L3=>Lrd_Jt%rF3pj!Q`R^5sjL%c56z`4E2} zm@=qoX}^Im2hAqvLo8*f)2=ciBBJSJ5fP0_5%0PeSijkP9h<}E;QF*l<~nGH-#so5 z1Wh9=R#x<#_oiCos6YN58p^Gxhy&?#430To31|3{m>Ar>O3Kfl(GyE`+KwvlIW<)h zbVIX|>}T`!E++Rk=M9e!w^FI>k!%(dM|Y<~V_8B^F)%TwYwXDJ@bILPnFCRXxIbBx z&h8`QGWyO`TAYF`hF%YS?HUHR(~jfZr2WO-bi+{_(%xcoW}!y)=r1K2&;i3Ica1=U z?$6*OXkHwm%JdYLl0shXj_%ekO&h-CWnsbeeex78ZB6#y3Gn^*lhg=9TJc=Ha4!UYM(@#ZSwL^N~HMr25)|LphVkUY<@(y>Pw*G$)@At zy3X_ZrzVSvE)gPjpk(5~fx@7@%>FMl4{ z3|kM^+dsn-0S>_(iOJs^*=EGX>#4SX)9CQS19OBgkK>|B1p3hva9~gqLl8PXlJKf~ zcvL~F#wT=SMO6dSg0Sjv=&eZ$mr}-|49AS^4C=vt?%OF(Q!zjs*<;yh7~ZlX(Sae4 zDk*B!KRBaGwyPhS7topPOF@P%m9XQ9Pi7DI1})Zr@y$GIW*Z3==KO-&;JaAEJc}ouD@J>Z zkQ>!&*ku|0;xU^&nKo&k>8lks&qhFVgS0XgSRTYe5hKY8lC)o{%WS}$%*dl3P57`x z0`ro1VW-Wo(6t_VEx&7jAH@gpJEGh$dUir!=imjTF5-1z8*!U3?gBNA_Z~6?r}_Pj zYH@`g55<`DLf?bSgSW6`v9zNr>11!m$EmXkmFO~@(6ESch$F&;^yw5h z+O&a{60NBDTGz)--+qV^sIVXmuFQYIe^|w3q4gGimhZZm?*jV{+n*@S$cdFQoG6wJ zqnsSOoDL?I4F-G@ONUWThw)K#UM|Zhyv5Q<-?_uD2V=*8AJ<+jJ*j}cf8zJB>xHS5 zG15jrrrclPhS8K z4bRy)wi_cPyvs0rf{OpI_+|^~jE8>h<9hiY++Uq=tn>}F>U<6;)+Jw<%cRy82*~mf zfJ`J&PVG9j$k+2-bf8RO^5{mIX|l-*i$;AoJb9+$%^paj^TTvpkl z(KE{^(kg74*rQ~BX~6sHUhe4cEL528AA}`5$FTiVzZYWlutMbOpt3S>Pl5HN&;x$) zq}dO>V=tsVV~SWjJ>2fKmS4HI32n^zuVuWDKbD9cZ+pOylEm%wwz&C$8$dZSZtl7| zNpAYfL5ek>OID*)fp)_xeONE?L)^0!nyC9X~T?h{vDPC^q(1ZEg*2@db~50{w72U>1Nih?;SjC)yS zbVzSz%OD5?Gl+pI&%Yk^DiL@H&n^b4!#8uUGS!i8K9MSa`8cp93}nG0vDqAn7fBy2bz9;baLBNU0$@qd9{+J=GE;}X*mG645Q6%;TUJuZK^oo=jO zxYW-Z8XK3npPMUu{J1?`PDP)H1d09WnR0f2xfq+C{=#?K(in87Bq>TnB&1{}1318R zd{-+sp7Xxl2T-uoum=MUl~@WiH~^LD*;6CW&dydRyt1XL-fK#`FPo1d)!n6M72^&S zt;bnuy`TOOeSDyUx#JRd-hpg`E;d}8PZ#!g3b?zWh zO`Byp?jua9uJ9IJ`W9{E&fU^(AX*?VM9ytO2_mv)UI}`#yA>lH=MwR7Plc5YSM+c#j42Cl_{SL&@4w>EO-#G?DTrIc) zz+BulKVCjECQBI_8QJX?R*%-$8Ccivv;UAvZhMELB?`ERAid#A3l)gIfk9|wB%k$s zZo6f8+xQm#O8s3VoQQY!NJ-(J?Ne-doVg&jA0w?Y2?3kG2w?jzlzQ#{Zp3SA$+XUC zFN(93XJGM>wPkYjX7lDx1ypkgzC7LwOl6D&5!pDsw%O+7_3(M^h(Aot>>saO{d+pE zOX~6%tZ-A{Q4gdV$P3%k0giHzaz_^e_uI0pRx@#aPvK!0J+Ew`#7<%LLN9dukdfIa zsz1n-!F@7UpCDg%Y#_mI_~mi_qiRm99ox3F z=$Lm+%2|hDRr+v^*znMS+N45#cmC9hM*6Y|sREz5)GOoi>5#u+FLcrdu#3@oPZc5| zDcRHCzXoP_y6PbS%-aDd0Q?CDE?}&n7y@7o6r01zVv>57LqL~suV3`__UfN)jojTX zKK_u;5nH|hOiHP4D-3QPSCrr$6yuAkC6obqV0Wn57UfbecZhnpYB~HJF*D@-cpeiVNhKK?I{>A$HCxR9 zxG+OQ!_P@czX7cPp1e41*kYNHB!t~^ss(_HCm~^BZzng87?GDAZV#z=cnHG3-x=AJ zmz6=FyiJ}~{e{`2*1BWzA||tLi|-D-5O^4CX^f`BuNK@k(|71a)*2j5?H<%sc%wiM z{XXsRrpG&T-r>QwQz`X#+=FOU6Q0TaAfdNYWwws?)AE;|@Afk0!)F?`seX;O?6{GU znY@ow7b(zb_BJ#zIb8}sEz|Erq;EV^m?+Yce1(>BUE#PrYJZO!s7y^wy&QN7F#Z^M z*TBF4-Q`uhigxSarNfvs$MU&*`@VBMkuMZShA@SNg~`-e|HBQhmUgm}UwjFEk6)7% zqv}4F>$cf_YbnKGiD5x#J7I`)tDDguS4g1tH26#PUXQsqHd%ar zS3epJICr|s!ZOH#mFvw+6Hw2-egDqnb>j%iKves(ZqFBr^$RX6N2mRn__#Q%eq$B@ zRY?K*LLGYO?dj12^4beFBMTvT$g2;JT|YDk6oIAVBb8-T}9Lb>gU z8h}#eCPNzl_n}0iBfyrZ7j_ri0{)XTr#Lw+z&!PpxNst+7@&rQ$B>^!3RAiKEvMf_}G3^0)*Tfi=*F;B*Jm zxByZg1H3Z;k0QY+6y)RqXJ^pcF$ls+t<3PbP4hiFnmQ`7@UjNrX5IEmyP@2w835Sr z!Kk?aGtYTl&Ntkh^f~TMM52?6EuFiAh;nJ$l_BDOY2O+4(zQ`r9q^fY^Y+e?GBT8W ze2sN|XyBo8QjH-%?zm)G->mkUa8$)8ES#qSf*Z?;A&cz&8NMfQfyxEq< z>Cpt+SX`4$kygPC6acu-nVGV=GU+wDMfIGvOAsi7uBL`bCG#2=nb~$p@ZqXkpv>da zy0^DCiQNjH^5d504j>`?{QY4Td>*}^zf)MvgpG|UDPuzc^$ZBpXDxuIaRsDO?Os_Q z#C6FJ{`cS@^ywLoe*1v+@+A`h?+J7oVgQcYG+k4cmX<=G-30*a(Og-Q47UwDP&Kj* zCg}d|*7ojFoCJ=fTXfk+iIZ>ljBveq>l4aO=UI2=8A&Xpau9FB()PiXV849X+2nN# zh%wM-0Gp{`?dMrO-4A6qpuADFHIda!MeDX>0s$bafW`qH_jbxg}|3#iW&HrA<0rumH zw}gZQ88!8G#m-MqG6PjoDyA)$v-U-IvHwn2E+xM&^Kn);un{fK9WV4;5vSta*qm+} zq(x762R;4B;tRT9_5Z$6Y<_yU%j=q=GK!7asPEZfa8((lC>dL@7R+_CJ>`sH?{Qlp z^#XfC7d51Np?gZ>6yd|)C2@8pi+v<+-~J;PaYX~=<}c81^qXtrWP>tgoJp?|HpJ0) z%(%@u&=hBi4sF{Pq5gT|Q+-X{O2LY;7GuAuQ8Ujn-hdCMFtGmJ0txSpl6hR{C$(J6 zS+HLItCsz-?Q=j**d(lltNMK{@ecv;+wGTRBK@4t<2_XPdjI_zuqkfa-xFm#(g5aW zfieO6rYbH#)#6H|)ow_l)2JdWmjwj88DJPmJdd6fH=H1X6A_{E9<@9tAqV_QMFlH# zg0TWx(;w(`vRpZ-y}Dn$Xbeavs#7dc(QheimQ$a>Oa*GS=(o|D`2z{O&9vto5Ms|G zAuzJ_Ra#Az_{GJ=9j$_lO#rl&ij&#qC!FT#j=6D<5NFjAwf+vSLe+js{dD#MY)p9+ z8kGEGgw#NU)MvrtQgQ8J0~kB2B`Ib)0zc|9!Bs_$fV&Jttw~LX7l4XGdGtQLy$4iw zfY1G|&YW%g3uxZ&&DF*N#mRr6(IfK@Q-Lzg^XJdOFsL+Tvf35tc|NWJrMN3HqMr{MAf1iH~oPX^sN$N~N997YxnIr`NW% zn#UsGzRfHaS_XX#a?RL!%U@$k7hO{hc%#^>%NCW9mv6BJNLk>T~9J$p9iI411~nqe@BcM`w} z$8!!tO4Fx*k?mY#Q4cC-YI%SceoaM{XaS-Y53tW~CKG@J_t35rweRmfa(6Zyula>A zcwE75Y8};g+%kK3zqk#0lP>M;?YAZh2>{cb<9&bApUQEVbf1%xvprR6P+J9r5C_0j z2a{A=&!;2;jWooI#Oq8xJ0}OKnI0b>BNK5~%`ftQ-C`(r-(6AblHs_z%g+2uKAS{Ivt>#rnEBiFqN)%z)3^O~zFWO2aV*brU%GppfEo4B>YwI z?UlJrj6-^oS1VGIy>}@h_D7f+}Ts{D*XnX9lfp*0I z@Nn6DdOoSM>Rf*fBnnwqWIz<}O_y(vpwBq@zpc9PO$?0h==n>aoi8cFG zvo)ZLCNUc!%FD~sYStWm>Yi@$;^A>QSOaM5FRiKYuWBLQFY(w2>dOgW=FOySe=5Y= z_pSk%Q3J0%tpaG&rZ@va!g!pgT?r^v#nf>o%ac*mVTeB&qV?G zjT1b*4g4Z;3FG6YbVHRT(g0b2qwLvOr88P^?cLAB*=idB{TH0zX4(bW-O<31(Ela= zICOCO31+obX1h_@k(d++$ET(DCy`T*ZUGPHIK=1zbe3#f;!CNcCyxsyAv19(9L1H z)Pi}aSmCEVixsYlzuEDza=X$QWcQ`y~=v;2C zx}Sl@3GQz6bTLqbe1ZO9s{z(^?8*z(Qi%E7867sH66m!gfCL0m7Svy&QXSCmx996Q zK>HvEBi*b`Gg0wmUvE4O6LJ9H_vL}cSuo*XjHdt%uAsx_N8;diyN(lt9I;65?aP_m z(@VbrW1e-dcQT!3napOmLDrkAbS^AzkAz{RKDVLgi|Ox<$`hv^|2!Vu`SzK5pGPJI zJ;X|8>U6}}aC}@j-(7(xBclRx$vb4ARDx4q?9W~|KiFojE7W`CwK{5d8i!qO;88c)kQlxJO#Y`>ha|dNL|q*}CMHHIiP3L7U*)s|Qx?K#F+t0Jy@m+^^8VIL zB@NJ%;S1F($@uuvfjWT>#wZZvQ{^VIFB@UNWMTiK(rhd!o<@aPzXPE`+oq-w06Z|T z)obcRcejHHsS6Yus2W z@#@g$u`ef@UqVa_j$^@<90F_x9bH`~phX_}JYM<~XjDfr8FVq43=&exr2PgWIt)}c zW*&0zm`;0zinHupX`; z2*?i~KC~J#k5rg_4AcV;YV#{#C`xRXg=ea5h5$(c#Z+Fm7Zfx!`I^oDgUkS_*L}3y zzCE6gQ@!AB5g5MwpWbjGPU01}wPo5BNg(d&$qR7IcMwS?YuBNQqJBwfcIVkd5p{LX z)C}rQryrevs0qJrU(|Saf{Em6J6OE7$H4XQ>hD?9UJSb4mo&=Y_A z%jHS{%42f!2jCd!+jjx%f*cUl2y7bUm#6;Q8O}o>1z_p%XO^Ne5kN;_4j#hy_~wDc zuiBUzmy0v%(96v1vk=OVb=vhe|MM$l+2;n;v3Bi6PN4v$JtZ|-thu~ES5IEP#%I0_{Dt~^ z<~?Q10FYhV(X|E+yOj?6XiN+YS3ns-%{ z1@bB6e^$qBiC6`Sg6=~yg~~l_mTjUh?+-tBMDrlJ?$6Ri+`AI3@@owZ;IJ({6iJ(D zaMacH{d3Wqo!#A_Dc1suxppf%JWr>YA6ngjn(hf;<QCc}4X3XQ0c|oVH^UtfIxfbfq(BvW;GY78C7tJ>CII{- z49sgEL5Ko_SrV%mMvi#&51|0K@r#uA1G>Orn0G)X8b#II-<>L8xf~+J8}M#zd)uy*&W46_(RqfHf)h^JhURseZFa z>dj`5wa_4kVRSjr1Pn~wN4zerWn`wtn8cmY5Kul+?CGT)09(f(Bk=_OWL#-<& z$D_-$ffe%FatCtg*!>*+!u%JMN?hB5`R;LyV?(ty7?2g6RSes%;*WlWaki!>+kl|5 zYC$u%*m!RdHrb5i+hf^n7*1O~uU3qSPWK>pd>rnw!dC)>GQ`-#gF4(7k=)*M+J&i8e!L-BBbM1St!!NgdF%?eo>Y>->AMa4$Z_pE zFtqoD&=27LVS1kWZZZ-OHZdPn%B;C-Gw-SIrZD7j%FD5_O?ZvP=^~a&8E!DAcZ@Y7 z-F2Nie5Zq^z3oZn-myNCkfl5hQIDgbd9@OWRyHMPB1B;8U z_4zPii9$<^>22x!rwu>;69qS(g`pRj`kbKX7=Ny2CTJv1BiT3hgW=AqcoVfu?c5w2 zsnYPS$EnhDTn-dD0_yEniR^1l^wJ-q_!=E%L1kT=GlBJTy)0;Hba&w^l zBD8U_z?MWMHscS;(aVWEL!h-Ws>xV~!j<#kmp9(f!x@%wGXZ6ks8Yu4aY~Yy?AJLR ztc3G2!$N4YE05ob)>U}*GQ*5mmf@zI7~`;6G8i)06<$$p#?wo$ZjZ8N48TjcozK$U zd0Z=JJi3!_6Ya2MOR{jYh2F^_mSk` z;u@Rm8cIae8Ma@|YIqBKDD0)g8xbnzTA4dc9enz@orw*`s+CQn5ehk%deyLoebJ2tW zz1}xE!ruXO&_Ul5tWYC$ql*N&9B@ zh9Y<&Hp8kvic>SP&Y?(46acY5sxtY>UlS==&PLac#;M_(@5v)AYHN0vlxTcrX}GgY1gTJ>f`ak>+?Wdboewm!xOeIX}QZ*JVnr*&hvx0H6-8 zZYLMi7*bFSd$0ky{Kr&mINIZuENrq#x+f@^(-I9?*+mJ^^&I3&Uyn9bem@?V`5!zT z*BWHv+HoRl+8qO=<-_q$N2PesJtXe8ZbyOt&9GYKEtmT z_g81A`&1tUarD!x%zxHSt!|Qp+q-V`5t@t7Tu(~x*PNb+B}tp;ytTn)+)Yf6xOSy0 z%vfj*p_j(oldT47C1K6}az_D0Rrp`-@THJVn4@e#opU2xpDE((w zKks?9986X52!IZhqKL$2Yuk6uTsF7(f&F)ZWslw$YG!xpVK|LPYDYPK=5INp)8=bN zb3|fvo4keu>t;2LtoS zE3R&ZDZP^;yNjcP--&)Z*-K88Ik+QT?lv}|!?=}dk8yl76FT6dGF1U$4 zG+D7dSK)J+2-1UGe5(3$-%hwQ&zT9-Jm&^4yxPnKp)5lcr$lF|cz%(+pSc+;I*&Iv zKou~VD$xU!5Y#s}45;ym0=0Hv%@qR^7tL+S%bEZ309n9kzU-VoE+H%o19$=@1#uv% z0#fSRj~~pyRu7DPPzC{vktP6}XafIaHxW57j{|BW2s{nFw9eeFbX1t2R;u00li6N9 z@snpSu#FE_57e5E4xbSH`c{NGxwkyzpi<6O95Ksa@jJFrBNo@`F5fVN4h(jnkx({@ zV8mh@vpkHQH`F<@ta?-$|EB0k`|g$j7>)M+3tTdd1yRGkR0x85_|e`C_RvE7)yV|r znWCp25kzMJZf+JwFI1upe;OjG=mpFkQX46D+3&IpaTe|^Kx^;NX-F6BvA%mZE36al zf;P5Hyuuw>WcyenV-Pjd#Im@wni(G!8bY|jQxer+)BW)a8-YrWg(;&e*G0!Kw@fuP zlyR*u_x$kK(Z;g`Rw1=p{NVjPx`oSK&og5RI{Y!Txf0spyF10 zX^IV(+X78~NpYFpnGn3WxQebf)O%%m)a5d3szenQTx{;$wWC%=5iPz^sMoXc^vou+ zgUZDTfT|8Wo`q!PKBLv2-c~gnh0lF%dBX(;RePEfto8Mqs~jydvUTSj+{ z*H9I8@yX^jb6lFBc%Hryl5N#n?a+0eAp5m1XYTZ15qNux#IZWx3>Vw!H;o?NW7%#Q z-D>C*WQ`3^xtn~OPW)y*z~vDi;RZY!#ye|ZoD#Aj71DVgRfmH)QlS%gi&LCB=+~J8 zI=U)(tZ=KY;#12Pb-Ixeo^W=G9ZSIB#BB^m*h%2_`2DB4RfG^M+EE|M=$(d+LNH_gK|N zBGdZpz*T^l=?kXV=Qdd@vWzc~#e6CfejKBp+2}MYSg2)c^c!RrP@Qh3YmSw%FABI) z;BbT#mK-z>>U7Tv9B}4iPjaM6AvdxnA2+HK*`fOf+0kq7FJ{zpa~S_=VAH(sRdBD6 zTAO|}ldQinS)@WxIG6Bxf;jID{hH$kU%j3}b4`$U!~#u%rqTjBEm<9_x&1gT`=|i+t3uSN^nA1^HQhucg1L%GTq}-&#Wi3#)ZOU(mch<*4=bJUhW)fEUmtRy5i5 z)0Jtv^F%~tGz}%VW2m>mfOHo)ix77}x;03?#3eZF1<@#+=$>nK9P_;JxfTqZHQ=6; zZX16ru=N<(;ov+v*JCL`77(%-X}v$BSl$VHOrY&a8F*kIK^9 zPvi0{vwKw!@N{6WO31fwuiY;Xq)#`#s<8tn@he}&ys4kAmfAwn7^Yq2(<`5MHMIf-V>#_$YyyxNl1Opu6z)qw9bYJ%iWG~^Q^mJ)J zO3Csb!vbSH6ygF4wC(MFbs|zWaBa8&d(Bk63jQA10?ME&jo!Oo7{14L7P^za!b3Fhywx zVxXr-3NAz!@Qth%6A^$U;PZ6f+89W6gW5v)+*v&?_DBIg3PfCH;DuOOS^3@5Lkc|B z_49*7E^|VFU+g8iRW*3Jd?@nYjYE0GJ=4GB)57m%FE%E%-WANLwG8nfsg*YRD%B%W zpFU$u7S4Ted)jJmlV#&|EB?ixI4=(WBHlH*MEB{VdR=l{#~Ubd27saXek#bK?ZD|f zhhwoX`sodx20Sa|gBeSXI-!X^p7A2Pp*kmmlRqMMyw~(^5?^Py1?1+hs;EXqE%CnT|K`&tsf-#AZK4IDW=8$_4-Q4cCM- z4l{;4xd0s)ee}X@oD^<59czN~sziiscIK~fg-C>Sn1YJ2$d_92=Z}(Zd3Lm9JQJIV zMy#EK9{9^U*?Be|~_&m{CS`GyK&xRPTVt1>`3mL*p5SL01GRH+Kq1>?7c>1eQT*urCT)CP3}rHh%$_J_E4*qd%D? zI24m=6!7#5o~P1K(L00BqXzg#z-d}mkB>&gNlL9|*)v>Mo> zZ9tyj4ZPqRAZMpL@6Rv+1`Cjnn3PgWfR5etgC|~snwa!U84bFSo32)n_;0pyj_jh@ zoHaEGfuxcRXvzp8o&+d~4s`!?2S40T#zv0jSmL>2&G*Z=tjP8kiDmZPt)DH$`30;Q zUR6(p>*2aSg?l^{=p(Hn#@gfmzMA0rw4uTfQ`RfyT}6AZBuCY%Y&t&Cd1M^}+FImc z_3;$d?lF8o#O`<)d_8-+9v}H+FDIRg_QD&@U5mb|qoZ-UD0PeIgwO(9H;Qtf>CU|9 ziIa=yS-gyiIHt*p*Ihq3b~gR@pIJA}ricU7SG5*jx-CeZ3KqsyT%qY|z?Awvq9XWd z3Q)S$yE#Lh)I*)7L+-UcW1=__ezgiV7W?o%raO8ThnF*8P}Vy+T3GgtChuA0Z%p$c zx{EU4Zmp#tzQA&$zM7}y^1VVJ00MejHRUmS#ZQ6(qZg|o6}#rPWVyYTNR6c&Jmy5X zn=yOOt)g8W>=e3{vnYabpETSmuMXVf=`0)HJtF`-SeH%>o=;Da{c>c_PTPt^3)ndj zPJ>=f^Ta~)G@v{!n+cf7pG2(=7vv@lQ@1K_wwC1In0TkXjCdSca0`BC=j3x&pC0ul zU&86Ffsvz8qP7$NP&w*ef1}G_{{j#>lRw7EC4>r4H$CzyOLjF&1gicvf1Z095FkWYws0IEe^nzvn4L1Oc&l&b zjYX9qcJMv^GtTSwtV!e~WKH;tqU5eJ3fV!@%igzfM%}{AyYQxbrkGb^6Opub<6DXNDnl)dHy`@V z1`X(j+mOh}!1{Wgx%qh@ZKFVaXVe^EJMPrX%u1{*{}TvwtK(tgC2?DO`!U#k!?+$N zK@m&JA|OBl+C4ZG@Pa~>-ed=0p+o|oatvU-E&%@_;o$+z%>ti+Gy72-vWzRMqIbuMTP$Lyhx3J}~JVEeDgV01rdF zQvmj}#C9Q$k6w-}<0|D7y)kjiGIh8vqlmT~S`kl0_+jq9&Yufm+EeJ+oM9G(hlqSt zj4~48ZnrU2*+OJZ>cg<*WGBk^@$rqj!{~Q92=R6C$cnc_yAeHAuLqhRf;-^a`Edm+ZJqZN3G_Se@w_WCvFlN@vihIO_dia4&*2ShStM2_oZ1ewR1S zM)&bejFw^$;Rig0PKx(~G(rm2OkeE7?fCiOqaDIyG-#h@_W3miqQlK3>E8Gh9920D z;GEM!Uy-sr1}H(5&B6WThr%gtm=bE}oSs@ok&1{fza~FDt80L7vZGRp;Pi4havZ>w zq)Xs#TmFT$Oon-sH9ecd99Ks6CagS*cF@1!4bh2zH%JK)N*RAv7W@-`!_N&^nqSdH z_iseHdtU}M8vErg7Cn&(`cD6zB`3z?`eWP=tw8VU=Zud_amq+KY6o6x_q7k-mu^PT zQn*;lI@m<2+j&d{_PJk2N0D9jntwZRk$X1g(^u^uUh;eHId&|W5@NGt)BD*)@$ZC= z7x1z}4f5+nIDx9t297UraL8F%u{5f!m1g;YMnK5#i3?-j zOWWJe1;4Z2f)H8W*a-Ul`+X!L69m6pa%VT+`i`OA>*8RZfWvxDw@JYL?EL`SXm2kf z&}2J-e*KHr#>2y-qoV_Awm?8Y5Oj6rq}Of;0cLjS*7lI-XmLZs*WQo!EX?*8=Rn)>69SJc$cFAo>t z<>b{ae=+YV0cWKlbNp-{5EvnlrluxFwsFEc#gCS3F?lO=RdX}NlvbcCTppdAv~7(* zPZ815BAAqH#{R@>tTy=z>f*;swD==rgZ+Lx!ywGM6mxHa%UAgb4 zrkttKQ@dwcD?jd1azDiuG@5o@S(MsBbR8;;yJAE;R&(i^M1Hz_x~L+4e(V3#6EnW$ zZHH$VhW-6vWia1onjg8#Z`mEBbaN?8Zf?5l@eiz7$rO!&#n zasBSM!Bn5V-ct=9vOl@@v3j>~{^HG@35k>@yCU+Bq2*utTF$Ay{yaP}B#qDCp`x^` z?LV4JGsG%5ZLel`?Aomuwav= zf|izaH5=XI*^6Ymq^Wx1m^sVJO9-eGn*w|t_LKHkHTV$rc z$U&d-U)=VIYIkyZ3f`m-L7EOPD-`neilKuw2wyF77-;sH>KE{WCi;3)Y z8l8gk%!yjUQ}xTWK+MR%o5Ix{fK?Ed|MKEp56c_GOhM(($ZkT+Yb*AXJ>7B%{7*p` zloSF6O!gD!27#@Ud4^!XckfqjOgU4_2rq`atm-fNW29{FA)ggcVxK&Y6Kgg1Tq2E#!Htk;Hjxq4atJ{v7+e zJ7902J^&B^b{qY8k)<7AnzB1t`v6iMn=A$a7)A<9NFX`LU`F#-e5*urS|(hWHmY!L zNecQ(fZ|&tn5#)DLKJvlbU8Xb6#>W&{2v1?HQ35sz|aP4L&y~txd%ghdTp>^0%~t* zfq?$>EU~W>Slmjj=edtue+dD#-xth^HTCr>ZqRDw+r8SlxJY7cZQXzPIXyj+Ts%tm zV6L{3b9bk5e|Ko zw_4H!VSR}V(raF;|+U_B2WnjnllG{fY>pO;zjQ4sYn*G(gFz5j== zw~VT??b=2c2!ezlC8dZ8(vs3hN-8ZO9ZHC#NP~oclqe-iNq2WhgS51Ccb7=+c|Gs* z?r)Fp$9Cu#xA(vW>sn{bdDM(#V2DggRO`VQzWMl4?@nZPS#)6cSUYKqIX#td_quWg+DV@%=)?;pQC=vH&FQz$IeUDIQpQgAlsaon?r}43SDxt z_FIrc6u#=cy)j-+0ERXTS=WxrciXoex2HnDcsIM$J#xt#EtiUogVPB7$Zzm|S5#H~ z04*-u^UYw`(#Un*W*W6uBz8{2aZ zm7jmzdx7rL%SmyqBi;6vFj{6AaalVI9Nf=CTu@h&HswEP0`<6+riH@5O{qPZ}YL()S`Mj_N}YB>xO2+ z3zpd92P({+13Xex<<{}9QVyhtSIzr2*-3J-+^-qFXgi6{t)qnC%+5im`VKw|Rp@*+MYqe5~J7fHY$=8)7hHKy6k%@DZ1 zvnnNT^Vy(aCy=unprFsGsja<1PL54LKmZzDLb&zYKy7I|Q;&u+nDc_#mWzNE#}A$J zD;|Uiv2$=VOjOzz+Alu?T{MP>hzJ8Sa}&s5Z%|Td&rXDdsK0r)_$D0r(Oxg+{a75y z$SRAJqdPl4pIuzUymjjqpP*ne6w1~$ohF3}4H*76cleGif^&ywb{4av z|IA4~)ndcJ^!DWS$2#(jRRMfwMCTZtlT`+*Gd+ZR+^x5_b2W?y+6ZwF3~>ES=e)|a~)4AQZdl&HuOr}?((u;6_RPT`usR| zNh0cO8hTwbYbqpL8SrpZ>=+`NBf^;@7$TUIm^2b4)4Wm?-gEj9%@Of0$Yp(E+%rA! z6MB+4DyM-`b*JsZmntY{7k_ajlC#L|1)NDNcyBfRjD?jhy86hWPX>VeiScVStNZuw z&w#oY@+Ht}b22>w+rntT?RX)orKRN_IQIHiZ?At)5bpQ5I1Uhh2DBJ$Ox03t*X&<+ zb92keMUp3^Aan-ORN734u(JMA(b3b-LGl=+qU9ct_w@8Qog6TJiC_W;x=L>_TnF>e z&fC0wD`jJ26Bl79dU*28-a9URXm;mqlJP3~E%|7i(};ed_8?BRkL14wmY>V=_mXmd z{q$<`xv7+!taI`?pUcdS^nderx2Q$F-soLztJxP&s!6bAL)(TvRC8j|}OxqdQQS3k?fUq19HQc#&9j4;LQ zy;P5+b!L=N#xd2RO^lGB?YnCUQtI9$$^>7B_4R&HfmH*qva<_i2h~EOpulx+@&m+TB?B1_J4yoD$6aueir-P197JljRFy!e$_;=; z2N%2~_^Y8#?`E8Z^Wo;1h-vmO|V4CvGRJ=_nNJIlxh7Kpory zcZBWsl(6rI58h3)ckbQ00?j4{>I{-d5O*mc75*TVBtqF7?-#oI9?ch89wSh$<{M$F&n>V8cv{Fk=utirU9ggGb z!Zz+Ql2w_NIWa9GO|0<6!?_~5n19c)a%hIGSm9HS%w_W5S+Fg1QhMcdo_?iFC!np0 zivTol*B%A017i3RQnL+9ndSKp?XePSsv9+LKvNu^9@H%pP{pZM2< z9p`Q)H790fgtVOatbI^Mx?h%`oAMvrMQu1lH6O?LBxe*8ww_ z_+w!nYEgGksrgmJ!qvMX7`?{Al&;x!Ed!j_pKE9(de$ zW5?kBT$83o>KW&6)pK{q zPnuA^dYPHk@#(2gKmk-OOB4>E*f1N)dWow@MMVWUN%%oztSaMranoiieMvU9w#xDg zDc6#e0)Pu>933Txl>zNZ<7|^ZPgF=ykOUwaCY@J@n7fSu8(bqo*2)GOCV0c-VoG;n`-A-`BI?qQQtP zitNADQ5P|8|m zGm8$Yr*|O1PAk>3u*e$w2UW^@s9%1Ry1~^sS!wSNo>>c4OGn2?EzQjty7?#Ks^fC0 zpYIc0BPAhGf)9*|mZ~Chd1jBUw94fj9ewl9=qUFOwWmJC#axF- z0_M@ef{AvOgL%kUM{n-~R0$-BQFazW3dY>7(-6}*B+XHRvctAg2jblZG+%;}96WtB z+MUTEYX@;zfWUC)(L~?2BJCT@R9%1i$f_oA-@#aae#z?xcNj@(rM8IkQ&zp?M74GX z+izYUZ~O5a7fv>=6qqtD$)&f1TP}4j!JNSp1?qGmCFcv!aTMq-K@i z^~blHAQKxYZ*ca+Kaf|kv1*Y#c%A)6>Mq+0?@~{p`q@zjyn;s!i=$i^;^i7SAqt0nqat;@OMLH|vj+ZhEP8VE5%00LmhBSX z08eMruV2>y%rq>MO;rJZ6D<=H4z#Hd&Kfax0U4_pSFhf^a|bm$J6i!g5?G;dAe*ee zUj?qaIZ)pC!KV!#vdpO8<$%}I($ZFVUWy33+X@a7Imvj!rpBV4{9s0G8{bC%4O??t z+dX!6!u64SX%MABwh3>E)i@b=4{sP-U00j@O9L1jykuOVfd~KXSEj~!S&sQSmEJo$ zHV!L&XyC85U+QXrA{yZ_pkk*MaKJ`?kAmVK-z9YM?^Szy`%+)tmX?;|>B|d$h))C3 z!U)bec1}+8=uY)c&hA+oo68G#Utiz)*4C?l%ykv=Q(sp-LW((HW2kT4;&9$GDc#TL ztj*;&u(S*UAgHme4GRiu)10H++}t4@n)g|~heKVsD)S z%zq@2!7ss_Zoj%@ES@-W=-%C8LPRn#>36o0Ur$Pz)ZJ%IMQ3RwpDYwpXSl7^ez{Jy zpr;k${nOJs&|cKf;DkC)G_tm+%|r+P3_EB_7?Wy1z(vALH8Lrb%qXM<{G~E*y@%N4 zz^y`zIswj=k%{ReoJ-=0@j^*}m&bCNc39?Lv&PfI#Vx#@*R18?EhHqwz115ovpS&q zS7yQW<7?hHYi{PW5x@2dmbLvuDWa43AD6hb@?SAiDLZ-64*RpMpn(?cK>^ef|9Zy%Bg?=1_p)zXv(Bf4D9Tm;E`WL=>l8^(5o4kvP$57 zlarNAf-neWAg3uh#{lwhfew2GxNV2!o?C0+yL-FZ@3*%{d1STn?ImsNj~^T?&FELI z{F<2fjv9LL6RdB20M%ooz-bf3sG&ancXu}l%p1xO#0Q@Zp?_0Se%;B(045rH_0skA zb$RgB-U*ZxZ)j*RF)#pMZ}dZbdPPM=bWw;v_`&t6hkJ#8>ZfNyYZ#3p3W@nshy%CS zT7N1o_yLuHhW~eRLWC+RETn~&>8^|6A~E1?Q&Uq5o10HjD*!US8rwZOqKBJW8*+E? zk-)-oYj`E#+7!N4O^nClhTRsvtE#GsE((QYIxO~(#Vi4hyLSsUb6$q0Zt}w6nT|XU zQBf2G1qXY3d&@A847ZC12ekkG9WHtIhN+23#-@I?BP$%bVL%tA{ua+EbN`;<;-1bF zJ0`yIG$wso5|<+?t(4G}xRq3SXhbvfQ)W(#$C{|@^f#rggmqcQY|pUVk;tMN>4Sqo z|A>mGGUonQm1Sd>mi?f*8;DnQDjE8s@c_4wESr#-nK>DWN$~T-gtPku5i$TQj_)x6 z&*~F&=YPh=K8J>0|1&;5@R5{RhJ}pxxNsUn@0DLnio!GfI8VvkVPDnLw>L^odsBE@ zTe9ku86rs>xcpc~q&_ud4IHdyx~eHY#o=&wcc&C`V#mKN6r-hCdnU>bJ3p4+ zK25t8uE=nx`s}y0i(lgJi;7Af%rsn4VT$AiM`A3vtW~$+)@Yu!SpnQ!QWE*UIJmAH zjQ;-q8k%an7&+n_-6@4S^qrA>P)WZk!@ngE0S@>cxBRSa_^1ZJ?e_H?&TMXjdeoAu zsqwQH)zGF7rah%{Io_cy_5@RE*CpV&_fRQn&)q%q!|WC0<+BrCBdH!h2!$)8RXt2g zNg+fbAG&IqPUdbA=c|bdTMM?&ur^H0%w#|?Dk-U^tt|(l-UldfIf+TWtuE&w`TF32 z^6>URHrp`~#9%DU%p~HtqCQnuyJBiIuYF(7#^Jcz{qr|atmcpeYGDN%uB;WO5Kw1y zQ81nx9m(D&va_+dlc|=aPWwDsL=O-q(x*v;t^-Tv&uNcd_K)He@>=QKQ1=K4`qHbi zc2NhH;%(%syQo#4JcrPq^H>bX6TFpM-y2s{UPoT)-R z>_i+Ce2`dxmEWMC2t+Q4OkSvtK?nB()XMGc?V?cCo*ZpbAF?oOaLi{B%YOy=9 zq=Y10G2w#(ebedo&-^778>rL3nsY^|k{?baXr#m~$-S3EozvF9;LSA-3cc=w{k4O0 z2vltv9wzhZ2=NIREMl~zgu{ZF5Zl1aEC8xKV*r0_-o0y!<*|(2pysLkAoPC|i%b#j z|3?2y5e^=Gi;d;f!jrmt0}^O`Ah!lA6zFVhY^8POJiHs5n-Ep)1As5b8^N0o^_qcq zXSZ8ux0r6@*Qof?E_?@wu4>pZ4zV7KmCvAb3EvlR;Val%e(|x2f6S$cVpAUI*v%xVr7R zIq!l3c4}c45+pV4_3PK4qM}+iM!1)<2DbiAdlEc+_z=?9DFK4P#>4YPGRBKwQ<56J z0n?@-gmxd=g~pBn5`%mvBre{h|Cyp<8=x~hWy+y|L@Ll{mvlkce#7#9I3#_hyS}jZ z?OjH4oOccmnjycp0Q~ikp@j*i+zRLYm!&=G#Q7Ib0E+NapqHq2Tw`3)uX`4G_$_*N z*9jpB!K>>FcYrbCPX&}B1~ZF(tvc+=(7Is$p2pqTd`Zms{P$F(j`1(eU+c9wpQukA z*wRIt{09KJ<(`-+<(%8Mej?%^cwM^x88L%={E+J@egeUFuqwZAv!V#{j(TEWlPB>3 z4=pUc2wjaqjj<_Tw>s^4nj1PeAghNRJEmjf;B;-QgBz|DeFmYcj-bgO7PpIvk^%bw z@&kf(!x-R;3a8y4+Fo0GcXqe7w#Wq>7~p;kgD@OJ`0Q-#?VI3zd{a6ZQ-;rBeH|&J zj3D7CM#Nn}@~(1ii6HD`>XOSFf(1z_yuEnim&$3zGPs z#S8rs(nMti3wfR&-gG%wLAxD><>~1OJ2EXf5D;Yl6<%+H-SfIvt?^4<{#!o5HG zbUZwy7Z(==Wn};knWvgUo!VV74Mk4<`1p%%CaJsOGk`u>usuWVKyXB3e?JjubTYr> zJQY)Se+)WcNELx>blk+`mm;`pU8bxVL7JiEL_He!j?5zrphA+Pz4* zUBI9W;pc?>i-$I={d5phJqPn0hTcew>-6*teZ|4 z?Cf4p{($fj{PvG#;IIOu_rD0RhVe~m2tNSiQ7zU^kb~m}ocEFz78a>i{DOiK3?z-6 zowyJW(+uWbX4ao>|LmNcoeklxf#=AsprBxJ|1|smfYF&MfvS2QLs{y`5e2Cp*=5^6 zAt*7BkaHMG`nka6BL=Z{aVA#S2(2N?x)lAtoJMZZ_WJ57noT_+^rQ~A}>P%0~-LKX4btwbV!Y+-bEr>8pHGo;6%8} z#pUF1K+Vu>!~rkXR$+v0V3bosZ7G$cBnsC(D;xCqLmi+T#YEaYBp2^Ln^rEB2+EbET-1A~R!ZgbN{P|-Da&*48Ya~$Kqh%N&Zx2h-7qa6@r`Obx7u4}Y ztB3wfKtKR--Herc-iS?_z}Ykn3amQXT|0_fLKjpV35I2Gus%WnXFK!-SCJSB1fhqI ziVvb0OUHjdiZ0$iSm#hIp3ee|Rc@W^eVNUv*^(B$mY$;CGRv3miw_tUo@x8sevzrx z50W2j)Z2~GaHt&sMGXcR$Q(|S!CKdM5F?Td#pD3;S#a#Dsgsb9e9F#dz9r(OY55fv z)d0N5>^Ro!JnD)_Iq%2^LuEWqt~LkVeAo}m`5MZWk6OFVjsHu?raB1@CgfTLcXf5a zDHis!D@F`J&6g_DG$L*>aIlD>+MAkuwx()32T6lk4iFjMpI*4%5b=GNN1$Y5N-dTs zNarlH-Z9Oe*Zw{@Y;ltN^)Pey-^dZ=`r2An>MGj$7&2Y#h#Xo= zu&ewINa{7z)9-xBmX$Cb0s(u_?s$4$x_sffbH@v%WNW*)TJ=!3N)izzU-wUrvda68 z1kQi^_N}!FShYboku5q0$+hUiZV5hl^ym?W7to^$;M9jMo)%7KVzfk%UiCwXmA!GQ zr>EDvXooa!9%sAKV-WEUO@(%$kyNU2UXdd%4vvh5Ml{q&t3c+ZdU>Is`ltV*&dk9P z-qqdxtGU_N=7&Yv9|9AX3(X)G-*A^$WHww4my zLf23bsNn^rn|`7{FJu*&6w2dbKV9gi{H7oW(F|3{|G3 zr)QtvhT?7Dgv#{g%lNqDSV>Rh%WR-=9VsKUrq9ABO^(zV8#LL>A;L5_nInb@}Tdw-}unwHQK+tI=%gv zu2!-s1K%#2@l#Vzz(R&DAwOpIa8u9a6{RxhAGv~!^6Yps246{jcU)M^^q`up=5Q~q5-z$j)Hud>%}X%ieDk{ z$sRq+qmQj^dO87>!8#Whkdu>R28R}DM|5OlxXk@5ha0<0AxVVUjFE@ufEtx@sOAx7 zSXKYuxa{)`jpxswC);Yi&?*61Rt^9IWX%xJh@`;9`y29FS72DqK-EkZGTf!gd7qw? zl+>J6HQIGN84fWTDq{m~F&#*;@!4 z-aB;8gBUJQx=KJt8xa#DV`O{STP%`cMUxMlGd#p@^LPd7fU{*+5US_W<5PM zXjG$IL;Y~s6!d-tkm`!c__Ui^2T`2(V;=HS8X7l4LqkimEX~cY$;->(PPjp^2RS1H~jv|kz!BP<&=Fzq`(?WLb(YGJ0vvp0~CW*4y)*iMy*MJ)x)uj?3R#_FnseS6mTWZLsL!)IFfBnkE|*xD>E^Ra<9Xt zhD?Zh@KA(6HJZH%VH(K12Ve!EZF+2$qpzgo1>a%frzZ`p!dA$+Nm*jETkIh9_4iK( zZNZFPCFHe*YP(k_5Ls*^oSG`{bg!ON*B^u@&uR7ST{~IQg&xpUyhAv6DqK)CF9>5W0w1Vv z#j1ru6$yNxrP~Hj?CR|S$4qZ4%gx1`=f#*b?j$RHw2CGwToo6pid{3-{&}>s@yZXR zR@&>aVfeYf3p;f20Lg@7GMhy|VOiUw_lg$)K|}K2c#_K8&)%l}=^j9diYBSOPyDG; zu>6Fx3(q%ZtX!D>u+TT?spa6SyBaTEyx5qmz6llBXw_S0;+l!EF-mY(s4z1}%7OU7 z52{d2ZEYjCkS*M`RgXj+<2|^RS6}kxWt=?}i`{+D!TILS@&x*dCjN({INpP*P%Mqa z$=q_rO4tWb^84*BE-!1$^Ssj?_Q~(m&hN>lh72Mc^CT@zJwNpT9^r1?+4}wiLbQ*| z9PDhu9v?EAU&Y+Q30`^gf#TV%9gl5C!o9V}2PryiZBSO(9IPmpqKY4Kxg3~*AZi{m zwqBm314TRK{#O@5a*bhqIPJ`!L4v9uBIQL;yGxRwmKac&K*{b4*UuclL&rhK(={EjTZ;7WoCKV zAM%kAx|z>*4&!BSyzZ>nDS{^dhvbDD1ROPO;EQ3VmZ$$B209??fY6_SLE*w$D5iD@LG$TAP{HY0~%b}n~nc@t&5hdJf zxcQ34&|Q+c>Klc@%ggIK7h$95LbWQW!ki%YuZY(hg@8|U4-cSzX_lU|zP z?czvFOGDYqd5uxeFE0I$bCs4jhBuRqr}>(xj4B)2t7Y->CU)|Jy$^cJf9q$jeba2e zS)!Ku*4__4tG99Qs#2bf6Tf_CHqvjyHP#HnY`R|C+uAlj{9quY-JmH6w?q0LDHMYh z_RH5*pRtfNO-|lIL^Ghg*ad48<>U4O?uR6D-k-5KF=;v3uxKtQeI8l%)}PK;eXsdT zVn?SwDMJUlS-$P;c?cWr*qaa$dSbP$0j;6jo zLg=92vgZN0&Jg|a+T8j&E?{S5*yWH12i05~s6a}FUlbUiA-yA^OKE zpt_xfH-WUU|Mezhg*4cKDFSd>P=xxzL?MnpX;2ok>DP5d2)Z0FAcMkqn192`1L_)u z+*&Y(I=Q$YL+Qai2^(3li+b8yD3&dr{b~g9KqV) z*+f%s(WHepYKtkz_Ta8`{~3B!u~}OtG1j!peynyd*)=RLg(ON`^Es8*wGr6kPjB|k zXYXSNI0dv-wnXwOT|-3h0N2dU%=}kbXbgGXP6sRD+Lg$f{I6T34`$~e3MK?Zfenzy zLoOnySiJ90>`!usLF^-Egb;sF&VXw8Su$o(ubb~&^8m_RU!I2yHi&m-CL@H>xsHyH zBZ?V=quQ*J+c5PH^mqk!i*kfF0RLz1Za<;VJEWW<_~7T4D$Ah3hpGp-0Ol8|n*X!& zYXYpV`!%x$Uj#FA2aO3pLTS(cE@Dxjc8-pon3-j?M(l-jYb@V3RO!=y%KD_(uQ&H( zvu5KTmAUL!>Yr0`E&1gtzo#^@IzKq%9okkqta`&qhRWKofWlLK__vAh(OQ{C@pAxo z4WTq7Ey@(&;~T8-ba8SrfYu6}dNc^ohDh}RB0=zrea9_zka-dU3<*+HTg-m=fEawx|7y}1I8y&Dr%B_C9NUhz7hEPrKf9TpQqj);=c z(9l4{)&}#cY&S+Zf~on5poGK5$8P~3WoQjrRRZV|TH#p~fKMmH3RcE^*ML^KCPALu ztXgjHgH)zdx?ecT4wrX6ZqZ;&Ckh8&6z3$RW=Ghi9>T`HK}CfNXAKCA&Xf?x5AxCK zp1=DQyJJE1Ke${r;pK`c@$SmX3Qpc7RG7i0Cj5{|0%LxfVB%8 ku~sGnzhxLiHl z$`?;2M@BR(-GY!46jl`Cq=eE7bbp$(TSJ{txzJ1f1H~v-p=K~7x6)r%;YZ|jfXWnl zoV(;&4UysAyXEUtIR7!#@Obl$z_Te=ZBzd1STlBfchEn)M+EnOxTv{MsT)8 zlHP<<%kNlXF=!Vkw%pC4{R3P|yZA>Jy_^AKwd&iOb!;Zm7c?0;iEG|EB8d?`%$y&@ zdd>T`IWT`XTGR4cI5**HU1L=@pQO$_B5ndu95`_l&(k^R;F%_NKw(QEMS&|Xf4?@7 z+XiIdP#HfTpBW3NXjm{XFbtptFDNLe z2i2#ciAhT7<{oc9Bp7DRTqtX5V#Ah%@sn4fq=rNG3Y1rvP!%JET3K1ykbrc!jM^-1 zbrJ{3?(A=ASFaajQB^yNFKM4mcJ^24*UyWl-5D+CYV5kW#hz;ITEb<*+Ngau?s&C; z?Wy7R18w-IyvY2>(Fk`d7*rX)`VtRN=k`r1MB0e6MUSk-AOl-iVo-?yje?%o8-QOM z8}>ZCTAbU8hp*i>$9Q;B)hfj^;glZ|xh<&3i+48&t#4bPPC4w)=XU;bLhS@2ejyuC zR5U^DGh+jTWqjRl;WIYsVhgfb)rIQQ+z(RU%BMZa?}J`m+Z1&^?Qt5y(P?aG9vE<} zbDZFejheCLTd^_>NYYi{C{VSm7>y|zovD4AX=7l{zr#oEm0VOq{<|Ab^`xu~7L!qs3{5&wG%@g>#_g;{ZE{z- zP!s(bE;N>w0fEJnC*A>sL`2>|Y>BauNx<(UCAACyll_qy8Bml07lDyzM_UJFPyjX% ztC4k5582p|iKb(Z0LO%b$pDtFg|%BJ4M_(LHLAY383Qhsmc#WC4wH65Y9S}W_wU~$ z3_nium1(|j9?gG_BkfXPaF;GDn*=+y!blTgLE=|z0zGyUz_ImM1nnR zoAgb<>A@|G;Ee{RCe0~^W1XQ+CSzTZmjo*Tow&N6D0bM&!nSquJJ>~e6v0BrwQtT3 zM7o!c&lQM@_X3j~BAf`LdE5$paSSJ%>^}bfSo=iJ2N2AbrTf}-e=INDxFa6}femTR zOZ}@|Z3$lQHxFKB;$2abTLL$mkXvXNsgo$7dQ;+~G2+tr=eM~<@cs(c09tZuil&c~>X zJ6+3Uv;?VdE>{~o_p~hOCmlR3gosB7>rn%go)+MA=I1%}2>Ke)366QV+tD&|Lg8Ip zMPJd2oODNU5OeU}4;WY!w!w%RHR8v==um^EB zd?IL%tfzw06?xj2U`-%$sdy3hk5Kx8ub&cy6njwfAruEnji3%xmW|N1;-iq@4rI;{ zkOOEacmX_XYipgK9=8xz8R$nLL6yMR*cc@W+zgBb4ucZyI*`&n&mn1RKhGYPFR*eQD1&hj`&3z^oBsWLzc$)uTtV>52n@`Yb-j z!^Q=WWyFyJ{zi*JL#X!*V1+}6mHYO~moH#-q#PX`9bDwr%zFPmz&|r|bN95(`kw0~ zgWKQt!aA?Dlap#9k|PESce7@cCTrbP*}3!0MKMVQ0IUko@H!E^S~i<$F{#qX?? zRL0zI!YP<25+b4>NA5sJ{pUaa6d3x9{iTzSQljfFs(BBBA+>5nz#sx4@@cT1NWD98 zJD>2?zd%aQ0}767(w7I zUJ3R<$V0!4c1KW95Mo=&Z`=UB9uc*m-2wR$gmV2rpwz&?Yq>BY6cFC*=MRO1V3Z`p zV48zI2Ez+P3eO;*IvF_0FR-Xsbt*o=T}yRPLogvn2NFMvaT6Rm+o*)Zdxfj`E*nwL zVk=UH-+r5;gg*XbNC+J$T_h#J^rEJtqmx_pf1yl;6|_>hqW@JV{>oNklD!+QBqoLi zVnrno7bkb9QPFP%rJ4V1R?k>6O@}NGjwM~Kqi_e{l z2ap2sB`JwkHnm^7Tq^+bU=6=kh2ssJ6O} zV4R5E+qbD8kFd;jy*P8G1nzIwsYW}_M}hucdJpy3YpE;S>zKmq$ zDbOd|o>v^0WhXuvsW|(Z>sD6_s!U<$JxR-d;K~IigDf&)@WS~AwPSpqpqyVY$Q&|O zlr>d@`g6i>4qg0FALq$ipHS5m5*9X}YYtpkS&;!u;u$A&tJ9FM0KL^c5){?+^Qx z)Y$)Yjw>7*KR3kv-pYO0u(~mb-LGNt-)>i2T%3vZ74*2!(;0&2%wqiT;DC^dDhTj8 zETDqk$H(7>!nDx+)DiGAbgxzyAX_UOR-ua}N>pO#gCRBd>F5lB_KLj9X=?7m@Q@;x7$~ge+74XQ7DFz1rU;Q$D#xBgwhORQ3vJ?(4A6NrOMv}#NNqwo?|7rp7 z|3?rlw|*T0vf-o!TjY~&U(djwMAtm&nAqQ1KH>WU$}e%K4aFpnmlHg9pqoN4javc^O3ZDGcE~{6*Ao>t2yP2` z<>suVl zXF~`D@~hvDvA2&dTn4GMP{_1ISS*C(gkaM&%#ysU;w8t$?;({=c~yyYWzV>of) zSLZi;pn=V!79!g}9p@ZZ+GUe`#Z}Vp;0OQNrQB*_NwSnzt8RHCbahk<|#g;Z*k1&EBbwgI**N2ihq#*-D4m$!kKKT(Yd zF`#@Gb|nMWuoZ@Bqi%=!1CaDx@ZEKgIpwLfLV(aL95Kh2M_WQU9h~kn$A5(dt2aJ+ z8+p&=Wy)r1QJD7}cSdxmNOQf&bx2d;vL9>Br0-;m%Xz6I*PUCUBiBjyuA9dm?S>Q@ zsi}SsfMa}ipHUK+*VoP~+1Nt2ou`&3mNDPkCoETPgTyxg4n_zCS9^DNV-6$g&+9sq z*QESz$Lyflc?B|-n)9Rat$%R+Bc3?GFqT_x>YISk0WR%S0k%p)aUEW{eqI#^2S$CH>eUf&YbS6KUJ#JSgPvh-qftl)8rHcgbmS&y(t zpSi(BFB*+(vWCgYmVz*7tg5JVWCa>B?T&dQnf%9uN}Gbu+)?U2ZtKkvBY| zVQ@&SOHqABXmwEwBA;Ep#%qC>WI!hkDK~0@N;N_-FvUAKsef;%})la_gBhEv+ z-Ui%adq>9)5N2=9gPx}bving$BY%S;2aefJp!s1|{1Q;H7zTim!!(Wepwsvg5z#C` zAdC!y1WK&YfE^hRfC2&n0g}Kekl;$E?cl%-nVa;WIf~Bt)t{rq1zsTJ<^KHieC&R5 zfTTvjt|?Xc>H}6F9nLb4Bt(9zmI@+624us0@+kfb0FLIDm)k%pgF=)z;07@Q>?+zl z#E)>!g~aXjbYbfl>y?I(FUQ$S@2X2;)uyfZ>+7+p0#+m!0^h#pdP=_?yS8>jrl(w+ zb#8l~mfphuov;yo{-T=RHL_D{=KRLIjf|wD-oA;28zySV9$VeGzU|5 zn7NK13DpSEUP8(pYzP2rwMnNSNcL|GboFS+E%vt%L`o=_ynNv=^>Mt!ya|+O@U*L3 zsg~hm)PnO03Ssro+`Fl}Q39?dF|1porr8%Y%AjNwg5iFxlu9lH>7%86Hi(Qz&Py?Qe?=q2v1x@^&lHEIH!^={zd)2dFlL-tLBC3l88Rnq-kzMCQ$I2O_bfKG zwEp#@7m-H&s}4dijZ$c@{odJOzNaYw%tFUAKGcsrz5^TfoU!a&)9wQK>&`%=-Zk(dMEX_5;Z4fU0usfgGjoxZOef@Ndr$pkmtwp(*|zbUB+mU(D1ID9=JwhW7B=50Tp<-k%sLBe?3VB=OdlfsAdPv51M2_EgOc-IE65J~-AF(8m+@rA9l zY*Qhi4l^TCyLREwMMjfaF4#_cRKI481pO`0Ki$yyL5XMz)Xfm(3n-jXpeocLcI3bD z9>;xbX!0kfAK{O?AD_r8g}q~t`xm8JJl8&bdLyez`^|S)W87{|SV`_8=?l#k&w4)I za~;6=K8#KvsayWX?lWJt5g`R`Rq~1gd=-_U`?5w1Uh#5z_~9h`*kY}i;|;gE)iuhR z3BsR#!2C%;AS9TalTUTaKZff55{mvYu!?>CI$QZcO`00nbY!#gAAT4#G&WcJhIBc} z?uFl8Jf3K79ehoIq4)Q- zVrSCw0qey6uSeP+PHlHmHv-Y5`3wO+DNk$3og zIEL#{_{J&2m9()xuHw%F&Xb_s+X1fla<-89>#_>q^rN6p0f3_-r>#;YvgI9}t(s#G zT-7Pvj->y__chrUUJeW0P;@Me{5E|V2v4D9cVo`ZIC;%^celRmwQC;L)K%7U#c_q7 zmz#I~>4an5{acfgbNBX{+s$&1ifh%Xrt@6og$C{26C@j|Z(h5^e|>OsJAKlXiqEkw zfF?fp72I9sH*Hr>m|?q1!n7MZkZm#B=NyEzg1)Fa3?z5E5aszfHnsygoryN+$mL)< zCGcK?$h;a9Oj?ZmmY6$>Q@9Du1%pJECxU|h7;>LLQGsa(VQ#umn)BpWc>T;iA-@3`oLZY(p zW6w9QXAg<^&)Dm7KZMt=n)d%(5mnwJB9Pp2&dLp_Ntj+7>>?wfIggzYym*>STfG~| zn2@h@>p70czhKp3ZB?5YPYlO6ndF~m9a{6bLq)}FA2Ml=PAPFBZ&iPGUi%yyybYY& zEO1Io$RLfvwu;-6q{NLqzlAkx9{cPv6Z}4zJQNydjkSHpbFV(-Ay=8IiLi$oXFSd4 zVyD?}J|!OSgqsAV_x`%Zs!r#hWo4{)SKejb&Q+W}PYC_ZJ^Jk-*0h3AbpTEqnfAt+ zr3B7)o;+=HTYbst_|7P+vRO)6Afb2wGt%D{Lv#xZ87@fY(mXFOpb+bsytW7PPnRLI zFbSThm*pw!y#*)?79f3b5%>(4BZ!m%BvOXJ8zcCs7t9m#fe;WFMb-Eq!4170@KI#s zA>X?#YABttkO`J(_TfGaDQwy`wm54E@vYcU&r{`v*Ri5YbJe;n2d*_fv?))&7E-FRi%m{7<{#SF zJyKlQ_~_5^sG?;koOA9ufw0e5vcM)(7eU{x@{_f3cYiwL9SYQX{n*bkF(0a87Ey<^Uw1E+5-6>pl?*t9(j-kK`W5iZr^ zNZPotB&ZvW>^Y9~kEuQ-Nq!Tww5Z2%OtJ2$awJDGPVH8~82Rfl{k&!0?)F8lbBVl~ z->oO|LFEfrj}zcv=6{688!7q5Hfy$>=_S>^)py6 zIzQ%uzY5F;lW_se>c0!Y!i0pNsHmve@KJ+X*5>Tk7QnhA|63eTkUlZMej|H)>AuO7 z_S0Nw)n0IZ+=x(Y^5Xq)y4csk6PIr6bwQfW)wsOS2;A-Z2TLC4)wO;iiJAWKV%Zw z=#j~S{D2kM1roZy>aAthOMAcNjI6ahUT{K)iq=QIdI?*h1L|OqIf-Tu?SW^Y2z&-0 z&(dSvW*c6#io2Top{@GS($1)$^9Gp)$2pmGzG+WydI#&jK?WSCqV77M#nsroW4Zj} z^1Y&bWcODY@o3zL^rCxu7U%M^YV$L_&Tp2VotWyb`L|9r%L!n(;9lu;B zQh!;R)teN(WdeoMeF}PC!p3BvdJx;+S6|hqjOQ<8l}W}*%q4(X@1$$8U@H6erYdlB zRFgysP;c$ehT_<}f_lpDe%tgtYTSwo;&>&@}qj<6XCC!O)GYe%J|! z(X}4l2nC0cuWJvquJ+(ag7fpC^VFi#($`l`2fw9dWn>ZoZ>xb!-;|UTcGHfC&e-(- z>CAGw3jJ@p1OQuro;N%OzSUV|A;ExZB*q4CMPjf~B>-sd4O^=aq!0l4JX}9fr@QV2 z{{)%F2BR~cz|V|GKL7y8(Jswuw1+!=X-mcd?2u7f=8lMhUUeyq6Qa3u%b)iW{qDDl zd#jrmogH%#Zu`zoai9GO%Y^)hr?rVh$3Hvc+C%Nuso%lL^V>%4-62j}>sPiyBSwng zMqJ@reDH*AtSv$N!xy0oHu}FI**2IHWyJgkF=by*Uv4EzG@-87IbhKcyk^GS7goq- zfbyj2lq!_tbotAD)5#c~?Kc=NtG{%&6+5r{n>&lL|5jV8S9+)i&VzpqCZHfw6RX0& zA0G`@7+6K0n{Q|^b8&qE`mPxEE^tE=hkWpj7p8tVL(~|=tiG4G4r86rktZSkDcB{U zzhSi2sy6jcmAd@VwY@&B3b)4zU8Wl!C2|B^Lg9|-a!(iHs9l&uhc2$ zMCqu&qns)C`MC~89F`0D2YOm>W74C~!~?s<0>a+E_<XG^0D?q2yA@P5Ir%$7SS_7j>(Ekv#Cjx{$7YK|eF%!pAW3 zL_;tApHSsvMOx3^pT9A=X>+z~aDo=E@LBnhY@8BQ3SI=Zl8d&-(F~v1=N@W2_?d4z z1Y&X&_<*j}!?5XAIP|+U^xa#8|4v8%`~zCR{DU(UPX|49z{jub^vgfIK}4jIY7ca} z@|#X1#n*W)GreO_idkJbH~-_BZX}r`>!!HcT3DXGlm|^)l7zq4o@{==aPjy@d*pF^lLz_p2r?SP#&d%*Z=@p;4P?IVWc8ZMdrgf6o7J=!at>WdWD#J7-`-F9HBFiGLz#1fd9*b&)DU>bYH#}OhQp%6@Ey~ygTkQadx37G)DJP z_F5tL&co^!+DC)_m=bSZx@xQHogCenOt*SzFphm;YaN7B%|1+OUP*U0?{6Y99{*&y z-Q~5@(xWPAjqmM(8YYX~JhBSYcHc*p^vUobx~Xm_$MMF6o8S*zs8=ReonH%vH}#b0 zlu`E@PQ^R)kZ4XALoYh`m+Quy@tuiYnTq^y1DY$)P_CU)Ts!EWx9-P$L;#gT=ZGpWKrS0UzZ!#%WBK&O1*5_qWHj- zJJtfy!}EW(emC=8zc0`}-qb6HZCl&kuC7&?|0b%UBA(^XYIEPlo4Oc&eEZf%Ea~qI zy2s>gJ2+qeYg4wm`TQNTcFB~XS*^tH6K+vU9LLF{>k{*%ABF`nLO2LR8m12o4YZ&G%neD#Z;xTY!FG~O1UKsnDr9OTvJWqy zHNB-NX6^s!>MX#bTBEiNA|N244k0ND(xrfeppp_2k`5&$-5{X?B8?cJfJh@Xv{Fjf zAR#FZ-Q6wCw?;kx|6Sj?4xV!f%*@{V-S1xOS@(LDdu?BmO))h+b+5E3@nuN4c1xc` z#PQ^R3!TTTE^(%h7U+E_3>^uAlxt$pn&#^un~V3b%hdATo0?r6u6x|Q_^8U5!^)oT z!+T_*a;j>jK4X{_4#d5^caaN4>br}!&LvfW3kCP{TSX2BZ-u2~?|sIro?S0pBqhL; zOMMHtT+REJV$dxIDqNk}wL&w6UgTTDdC%(C`1*PRKGg##Fn+jIy^*a8n-%!GdweiW zix0A{U(GktdYAY40FtC(w^~IY?678LxdKtdq@-z}qhjZw0&Wkg+-#KtL<#04Wl-#S z2RJ0QMW<$4NEFBsXxagh{55pLj4dz!04=ov&;lF`aXFa8oyxO|kM6-q&YPpW(2^%0 zq5Jt(WFeO~SNg5vJetFM<|pMN=PADjTG&qpO>v{S58g+umWkc38Yvewu5!!By8XB? z+#SPUzJNBB!S@pIag--02~SGlQ~e`M8Z>Sny%dxDR!s`pQF3llLQJOK7Lv472H#mp zv;WqsFgvpQ9p&0|Y12`TC7pG9mtl!HjneIgUOD`FG7gs2=7$;a$E zqipP*1aec}9o*V|LYARe)#%+UfKMg9Bk%2EZ;xM;a=VIVe`*azs01nw-@t*ZK{@OGf+Mnda}Vr|hhV+~eL@3Ym_osizy%*#bn_mOKDs~?2DL@Iv4G3-i#Xxz4Cfr4-SMDE>)_ z>YFdyt8oSb-+L=R51O4dUY6K8%b6s`A+|5nPuDcTF8bQ1JR=KZ&P^-bD0DUKb?&8u z4C+GaPve8m?9WT90)J&c+920b2ma#A*Cp~~Smh53b?3lZ0sxQ+uog218Qd|=_Zg#gGLbq zeVUp!+zILGi1UN8ou%d?O!kV?iMJT1tHrxxI=SGc3ggwWt4ofc#WoU( zH`%Uwwj2im4Jz}B>D^N*h9U7!!xlYi0}i+!vo#76T9EMQE^~T5qJ!td)39N;#NIn^ zd!P3@E$81{6I$rBK`eOAciB)Lz7$gy)2ZvgWXk6EQZP(~-^q4jCA%jE-zDOoA3oW+ zv9NYyK5I7ZN{#DsP8=na88-E^>+1MnI%KmGs*)yyHGe7es?th8ho?v`exBLu+%vt} z!3zb(9ZIrp1M0c>nPk^ho)DqnuZ`=inzPa@bR!XhXfJl8MCb@%czf&nnCtuH=l#$) z7=e5>os`zGSw&jfqb{0L`oHP$cyqpOy8PHCRFH6b#vkaOQd=XG*B*AOQf5EyF|`<< ziqs;5;iDYMOi@rKO(lz;FNIGkB1TBro|BT_MJ{?=n9#0fIGu8cBh*Q1rlaCNw1Xy;C)c75hx%0(|17MqCA zj)sq}m0h($1o+P+Q&P1OLJCm*%;inJ1@Pl!vbE%|KOiUubY7RRq zdJlRf=$NFsj{j`T&eYG&ZzMb|d7HGGkYnk?1QwC?XkQaa@ie0vwBld2_U`pr@+ zmKjI(tJ(^BEGWh4$Xb}E0O_Kb~a?9QCD#YX+Slu7~Q(aJJt^ajZOCxnKgr?|2 zL=lq{a^oh#sqrkcT^Au*(<70GEhLU7l3nqbIRCr2x24q7PLufL&se1sRfuQk;N$L zEMxH1Ic)%9XG%3fa>ksM(P|?|t8)jSoCkkHMxV)e)1yEUlb^E787i%%CB(<4x;$E4 zec&l<)hz?AY8GjQ*(emF_+w>Ka&jGDLVE#t%V{zCjZZ?AN$ry@0d*~F$m3dH!t`%7 z++qliS5~t??@_|n3~Rh^-wxt=Hnzi_l;Fj}?Cfln9E_lhCC*gI_|mejRoZP68xy0O zyUEzWs~yxnm}_mgD;Iw9Th48=aI;s;$8OO3vi!2>voEN_WxDN-li|Fp7L;CMEX@8C znCCsCWSSj$^h@*n4XjW|`#q`zmf#z%A{f@MXeoWYxRT34?z7?x>sGZ3A*v}q504U2 zP_CFS$cw2IQIaUNe;Es1ToR(?;mDYxGURL`^rIbE48f&wN$Yv{(@To`@@1)FUG4>F zH~$Izyq3rcI5DDnt=&!lFe_KwG@AFMY;I|}@4h^cMnz3+v`*ifi^8lrg9l1BFvmPD z!@P~w#fCdVS?&J1#>UC}FubSiq|&^VN=qH#20{f2bsRn zdEQHD35qe9dMwP^zZE{G&om2BO$?avwcqb>c>3VpQK@P;ON4c74{}$}WVHt^6xElV z=N}^Km4JNHHN`vjf0Z{ED&bdSxk^Km`ml?VT^gq8nx3j2t;pj zn?^QKA#|K__Cl;#4%QR^&jDHa2y3CqO(pl5@!rYtk<~yE2e6m~V?gABJ4K;c^LZ?} zSp()!9U%Wrtc-m4D{Iq$A08mnLyrgTRssp33+5`of6!ruwQq=8O!1W9SiZa0zawa9 z^voas$@MaE;ZG`$F|H_1*z?u|=3=~zY#5i%YvqahVvFbubtf!*hXG}MAink$Sw&{l z1I+MT1%xE~s__lr!M9YZLq9(Imh86{HLJrbBIbpw4p(G?*agY7Ea^|(lS0J$ zv&V_#Uo%dA!MTM*Q9;P6a9A2YVka~-XqcRL{BtNF<=TV>AzORz4}Sx5YaZqun4+}_ zUzlI@20B|_mHO2r2w5k0N-$D24KPKS>dh9TF`1LS<%=ulk$+Z8*zo9s@xlb;$Z=!O zTm8f$BoEYAwp?kXep=C55E;I@PP1&mKcH&r99L`BS~DjS-ad}BOiCG3losWl$Bt75Hj6f3$Q~4MMci*E3nL0WIp^otORXm6VlmVk|d#i%9||G!JCUJkKhs+Wu8D$;45P=`bEQ`gpobo7ORa^^`saMgxUJh9h)5RV@mtt7 z##Iryps9$-+V2!c<52uON<2Mus6#IAX$L8Ht-34ilW`9EfQx<3uO~*m5n|Qf72DM; zMLejHtB$|Vl@A*>>%vawdCZW==Fkz8IYXZmae0lFA+$D;0MDnaq2q>AZX~UV)Xz5{ zur&WNhD({!{`I2Zja2_^8v0rO{%Zv+^8!rShwhJ45Ak4rR#K?^AshmFGVP&(^6BMEiOD939tPS1VbmA7-${Z2KY-7&Zg@! z8BEK&iN)(s7Q+oq8a_f@tzG|p@CY|^`hrPlifq?G=Orhe{o7Xhk0m1gV$x2&D7}v9r z^D!IZK~e*;wmA3TG+=krxeE?qTEWEHYr=kpdOMOvk##r9<5>(Q4!bIghx+f|$-sBG z;z5VlLY^rruvrf|5z}=^+Sny@{Y9}rZm}`un%C0*^n05YN68GXXHB1C2PKHa4bG3K zzlvYgi2F=0n|eo<=OaQxkR5qtd-a4&+EJ+kpVPY0oV9_|%PH~QI~iNsCDtbFaY&tU z%H1FLjbtLze440E_^QQ49p_V=I?>vxc&bC?F+1OfM)*uu<^&7Yzo&Jqjw;j}IbJ=K$iGfG$ zeaa*4KI(Db&P!X;Nv-ak%_#QWTx?n!EK$IhO}%nh<-i{}y436_%kwqIzmJgVX$^d- zX%wDuGSDq^OwN$T-UtmsHQwW<$~rWggr<>vPNSRgV|xoE+1j$QvYuk6nH${N;tD?u zk+N~rX0DqijUCD2p>uuZG718TC}fpIV3niv22! zAs)lI&!!L@_U^d)?;Qs_f2$^2V^;R};bW?(>$glp%iizfRn>ECv|p=7geN5JV!k6K zPIXdvtx|i)k1l?Q36Q@_D)8rwV*k(|)MS&DufA%rXw&B$v1Z>L6nsYyG8WVpVzex% z8B`?Pc*7dDN4I$hxE4++1VbF~_l+lFKZ)faSb1374{jCACe~!^;rX9fF++*Q=jrE^ zv^x{8Ei3D-CDqht?@B5Ey@K$o7(@nZw4agW6}Y)Xctm%LY2{!7ru6LS?&q1eW_{sG z>Rg;;1ni;r2MdG6P*yQ@>)e#HOs;AuUOYmwci&w9Y@YB(OW`aN_6CKbGl|-o&GiW1 zR~@O_S*!D%4aJT60JlOgcsSk<>>iXZtB_aDyM-B=TFBIYcqgJv&u-gTnS@v z1Geq&(E!jGb{+or+Igx`ZOc>3-iaxxt(|*9pA0b}yT#t1UX1o6huCPQaW(j}o3~2J z93QK4+}r}a?R4U!-{Y7^pNdi;&HQtI)Lk?QWjRLQR4?MSeb5v5wW@r(smtTW;_H;R z#A*|$7*^)1C}lTY*o))fWTdhz%WpjwfRhpEkUef$DRq+};osE_Ui9sWkRPuV1%>a% zj$fq5jrkWoLFyi|!_#o6+tTMvCR(5r`u3zX1Hq8+dZB3Yf;h#A@D%~!xrO=8f0s&1 z|3%J&gXYm2@pbi^>O};HNYeWJVU0PMKqw~YboACgrc6x523J;|>di?jn{LO7EYnZ= z>L}@T8;Mil9N&A!|GVg!|CSn1OsrNmU6^vBlgFy#gI*%EmH8Q|7chJZ!66$^&8&r5 zaUJ;ghqrA6Q`J8KOtA&B2!{NM4Pq=xZ(nM(vj?(IK+vqZ#~KN@ zg}2-+b%?_d#nVZ~J4`ehc;`s|E!50SO*U4mTX19<@96cOqjkwg;m8~gPJi>YRF!A5 z=LQUr@(BPKFd)5!lC^>NQLChsakmsPd3$Yw&naNu;3aD_8ZU7)@csL=H*nQ8r-9>)CeOg`aUXc^8N(rp*<*y+5sW z>VLjbEwwX4g+D$hvOHIP zyw3%VA5ile1I3_f)T9s`5D0{A`@sD4Gz6V9=^yQ#M}4494S+@CVt%y>csoI~!vc0k zfKt3y@ane}t^$i&C_rLMyG~;9y-&^|cnrfYtXaq1E)YsgnPNpS9>!g7-A~;nYAW3W zSc~2dn2~MCy#H1)(zI1ValEzz?ibM=KaH5n_E)A>RM$c-`lej>6uZeh^r_pEln#pG z;B2NG!~YzRjP=s$qaV+VV8#j*%G056dN|GJV+?{7wk9_;q+g>oBnenYSYsW8sJp;z zSwUO>qc0a7SzED_mm!gWg6m}zsv8Kjs{I8n93b}YL6@ipjP}wkG{J|0z9~E@ZyxVX zR;;7xRz!eX2GE2Y(%A{%mZzZW6w586^Fq*LuZ^l}OT2Gyy{&HS(> zk`~gMedz}iTwH)RnT3U^d;x>m1a1fivZES^w10rNIAM+Z=rehkBa3yi09ytzfLX!9 z`8rGx!qLvrtxY^Rw1ASf6eJyT zR?UsN)fXfM@URyQXbYak|BiNoJWHi5!#ibcj6U?0Hz^8lHQfiDKdn|l`}>sa;{2I_ zGDH@$b|gSD&>y+A&>IGGD?2k(nV=Sha~selaK%ps3Im40GWbHvFU*33ZY2Tv*No;+ zd<7i7TfzvKR6qp}L zEQ64d=-mRrX=__giJczcMOsJHY4?fK1BdyAmgMf{&&OOZRex9HUtyr}eME%pnHoI= zkn48GZ(LD`f7>{DVZyCB&gU+3Buk!Ib1x>&z-|0gk2D%>H4%H6sE~FCATI%E!(6HS zZ3wi$2VjbllasOazC8O^%*@k1mQP_aH;(y22rkTHz%778+g6xP%%GpoSotN_17O2W z`^sr}>*PQ~?UQK?wyVD1_Gi9PbsLSWI`6?(Z93U7jtODqbEW5gPTI9u*>ETxhyE$< z>=2;WKCXv+WlD^B-W{v+@A+yS!}FV6R=(=f+V@ko{qmiJf{mqnm!9g~WWnEP6jHJd z?k#}#z%nV2tNs91dJg=#V8H{cjswl^E6%gvVpc{ni=9F@z0%RrQaA31lh@GKs2FLJ zrYCrE7a-R$WT7@S2d#wRy%pxEm5VYG-Vysp(WYnY)CXZ z0rhVK(7yp8_tbKNBKlBIR4AKu@8DJ~*Mj|J#sQhs@gSm#?bV307chbf!M#bqRY@Lg zX@H@I2YiYL)!q`oGGh4&Fvm*mwf+EuxwNx;pQ(V?Hr6-m|Eu2a8zh$i^ML86AE2`I zP>{C2!qeqLQ(H^RsU$cytru;!ZiZzVYW_!Dqo4$Qdc?hN>Rj3__4w^hrN<#VE#!l=Yr zHj8+K%!~?PX|R6NGjG=YNns`L4XjIGqA0*X3ZOex$vqZG(uc`<$#wp^hpW8{8#K&28}PEaB*Y75WUj&qZp|9vI5WtDlLOA zSa;&UD1#x>rN`pJA4$U+rJ$P*OZ|ZdBUVPmfvMEcXcLA)#ohG$OhvM&6Q9yGPT3pw z#_)vM*^CxTX+xjD#&2(#eQE~Ly=t2Fd?smy0rE_;MJ84D{~mak^mfiUyB|ivsd3!! zDa2OK_iJeCPAXzD-?9(J+wfc*lH13OU`nj<~IK*Mu9fLcxKJs4=hgsHng74jg9Y5)a+1`6!s z5fDImkZdGe&hbSrG&s*#0B@2Z;>P+b=g9J`w}(&_9n^n3WPi&oQZCH1|9d#sNo#Uj z{8o$G;AxbvMgvofT;;EDSO`-6avXE{Ns8rG0@?lG*hf+Rx}^8Dz~THn^vg9jH^Tsh zD6R-{$CV+`?(Xj3urL=4S-CC%+b~ZEi1+iARfpv1@Y7^WlFBgR`fB8S=;S>Gh1zjP ziVGL&!ElO*j0`qhiB|&=P3f#SRneNi{@FSVQtdUa5fQ|iClCVAnt-q=;z#H<+r7iy_syt(KD(+ z9RHS;&v&c#^r@e!F{*iKQw`*hlBWm|O!Q9KW5YlA5XgKA_+c3XW+DM*9L)?;B{Y>{ z_b+3~V%*jb@tI^?fDiHuEj-WaTK16Lky-4i0oLU2$2|=N9+!EWm`Iz#xM31sfgC&l z&)}6AUy@F!3yP7;bIQcCz^igj>`#BD+{{YUC;HqYt{yMEwH<5xGPvpIB}P-3n}JCp zYM<|2?fKkFrWGL!60@s|tyTTr4!Rmv+V->88znp`xZF zQEj;p)F+EA&po9x39YCvCg$Ey;n=*~@E&4y3LPo8fx>ukUr`sXs5U!jw*WSVER^8c z!?WmuSAe+d?+!7Bj}NT;`gfi)MWKk*`t?Y+W2tIw--HCx2zFYA{Wro8hPhRqV{)Ps ztCoY$5xn@ErNKXw_f?8A_XqKUxZ&{WCB_^J_epk15_TZB{Fy7RpbN-oqy|#RLnDpM z{%(y!zHw3dITpXa8D2MAZghUkR}#mf#$fq!+k5c&c_%LPetg&5GYN*z6qqZJJ*r18 z1xxH?CY=ASybOuD`NB}__x2~^xC5h9nU|hC9)N5&TG(7 zIbRZY1+XLBBumn{Q}%TfKTk

Osv{AkgjIjk)LjXh0*o3^^$Uzx{qE&9+|&k%_nuq6#LXK-;~;X^ zOFw-`Im(@@mSbxc{PRJahSioIX+9ysfg~{Vv8EOTeC3Wlh2rbef)!iXv?1h&Y6jnJ|BIf1qf}8hK|G;tmGL& zYQI2sZB3*nE3e?7)abP5*B1kQxJvx8FiV4Af7rc#*vyLxaG6M-hbJj71@J+XiG z7wbq^&Hv&LkYq^z&yT0zQF)5}KV1S|$U0>C1b3}Ssp8#wsyq(-qadpylPC4i?|%TA Cod+-g diff --git a/examples/1/README.md b/examples/1/README.md deleted file mode 100644 index a2ecf42..0000000 --- a/examples/1/README.md +++ /dev/null @@ -1,8 +0,0 @@ -This is a standard and very basic example of a preCICE configuration with 2 participants and simple bi-directional data exchange. - -The coupling scheme uses standard display values for properties like max-time, etc. - -Inspired by: https://github.com/precice-forschungsprojekt/precice-generator/pull/55 and probably https://precice.org/configuration-coupling-mesh-exchange.html#example-configuration - -![](config_graph.png) -![](image.png) diff --git a/examples/1/config_graph.png b/examples/1/config_graph.png deleted file mode 100644 index cc9de58b9f1e8dd4912957a8902a52ff83f3a1d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266951 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

IvQlu(f^@G?XS=O# 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%0Dwvc6Hoc57^7L<=5XDfeu(d?@b`r?^YWA9 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 NbGzlX+^q*L{$G=9au)yq diff --git a/examples/1/fluid-su2/precice-adapter-config.json b/examples/1/fluid-su2/precice-adapter-config.json deleted file mode 100644 index 8b7ef35..0000000 --- a/examples/1/fluid-su2/precice-adapter-config.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "participant_name": "Fluid", - "precice_config_file_name": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "Fluid-Mesh", - "patches": [ - "interface" - ], - "read_data_names": [ - "Displacement" - ], - "write_data_names": [ - "Force" - ] - } - ] -} diff --git a/examples/1/image.png b/examples/1/image.png deleted file mode 100644 index e9e8b9cc7ea3d510894049d529bef408ec8b141c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62730 zcmc$`WmsHYlP-+YSbz}RgF|qK-~>tV;4Y0r&_Hl^ch>|9?hxEHxVsaa06`l#yYtRD zGxN;6*Z1@LlkSVXdr4KTyQ=Q0l`tg*X$({%R2Uc-3|SdT6&M%3R|L&ovIu=_zB@>%A<^Q@m=pU&Agy8?(!&qE|Nbn$Pq&VA z0z9Yp^NmBNp{U0BAL`$Lngwz&DG^+-s4=i=naCJD?*BF#8v>&soD_%ZHC^Yu9q1c$ zBuigYEsXy@uiyJn;6al8MEOXtXd#GTD3-y|CFid#?M8GaGJM==?0B>tUiL>s`)2kt zy&6()J+JUXThjL42Mc);|Odx4K>K6lQ#ik0uqQ zWi~&YDXGv?D^*Xju4tyU^d9*SLyR?m&SbD{RL+iYK?GRvh5MH>hrcqSez$SbxbE@| z_M!M2HT=9rrG6G}{N}P<$LHM@*L5%D*<`-wujG$|GQls47f}AH;DQ`Ff=^^wP_XD4 zblq#{LEOF2J^4jq$pnE#Ta18JRzPgx&|mSmU;WZ-F5y~}3076AdHZ+D9dba-JL{>M z5$Jxc?*J@lB_*;>{VPHS%GgkF)6JTPX{Rr&!!9@h9LmHOf$F*V+BMlSCp|8bXD)zk5?RDwXN3S6$Z=WrEpF`eka(erCo5ndf-% z%oV0_n!n#4%UZqDv1{XYA)|{=H9T%y_jcS2!tWn*Vskmxu}khi#!&6doUTledwL)F56jE(>u zy_Zdk3d0W~3XBdRK(-G0J9^sdTx$3S!}qhg{tq=`99Z99zTUi=R>b6ahsUC8K`nuz zdK~!o#USWu31U~6doMx33dLvE;4UH~C`5|(gQ#B<24fJ@j-;^0FbR&*!4m>QIUmh2 z$IC1O7BOnH;ilWI2<{Iy9i}6Ai?)rck>F5DW8{Cy@C9_2 zW13nYF#H^$GIS(|v;G&%7l>2nP{S*bQG!l8o}Zeoug=y*Oyi9n@BjGM4h6grkm0de zz|t5iR{pBXzn4Jy0`FnquU+^

8`YyFKfmK=J($hQs4{~{E{M}(Sp99YH|RXr~f zOrrUvCR`}Qh;qAN?qb7f;csTXtBvgXTun-w4n&hyWO7^2@nIkhv&VOd8Tdr#r2GAQK9Ak8%!i$SGk;MA50f1 zhS_fQhQ-}P67yC_J^_H#x4Yit@HLWDP@T;Vz=wzH6Nj5J-DZ_S#T+u%XqPwIb@UaP z`T4I2Ie-&yel%Bps=eOsWpcx;RYT3v@o4fdZyVbI6?2D)2{R|c#S173eUd2?`>Wso z3>QT80jQVI#|Yu>#~QSQBE;G6>bbuN@n8J%ZWL6kLU8IGluDw|LoFI$D*sQ1FboUK zF%0WmI)z2A3RTHWT&)Z7Kf)r@0AM83fZADOkSYjxsTixrBJ009DmDbiVBjVGfH_ni z1V%Ez5>;E->&gDPrbS7>pltFjO$p&}Nr0IdZ(($9{;R`-LaYiD{}^EFmNEQ>1A#%4 zEbGcE|0#ldsGNk&TtX<7EU|&}H1(qG^UA-x&i`|wGAO_lD*i(pz%pQf_YKGY1u6e^ zENUq9N&Z^k27o_Q0{G6ycTE02{4faW1Yocp=7AaVf$1oTh+F<=eDoTKj6Om&z(57O zKCGlA^^bva|8A{-#O0`tGL{e!5;!$?$(l zn~@DF;*GBQ3PQL=DX37Xtakq?ZCo^{i08g&+oAhqLWQcZS>OFnZ|@I<3V(9(BVS4- z7pR%IXzIxSR|!EOjuQH7%INg^MJ#$csF~1hlxzQUbD~gO6Ga+M2XGA@Sl&(#y(aNL zl?#EoLkKCcbsA-?D^!QB62=%D{|HkqQ2kn|2-|PB&`MMa!fk`a#Dw78{*;axnE72e)<(EU1{c>+ z8I!WoBdA^$<`U_J_Y(~%p`IVB|8rk2p~|Nr03R8jLV@3PL3`*wr~VJMDSd&8?u&^T z^B5H%pTVzPRfYd~VE-f77Hx*wMKh)!cWx}yW@Dwtm;Peje?0%!$Ny8O8Y9#YRC{c* z{&{NA{is2zeDOvLRYs2ELN|lI2gq4H&e|HGfausyXgl45tkAK&%{nHGCMctuOY^IrK zJ5Y;9;4zD1FSL8L=(?_cW{HVI&%^4=(rs}mhd}m4TvPk>1}8-xP8xHdXwT0m;oTM05T>|JSC<0uInTaLi7k{rFTFsMpC7) z{!MUQj78n^{J8$i-&LfLCE&e&+~oV$HzSPz;Sd3xb-_RFOdkNicvuW1PiE)S6@FV1 zjWSKj*jK4Y$JGO5juT?YL-q6eOl=-F(MhuvdMyiw%zsAHIHjNN=R1a<9?n=pNE|~~ zKF{mbSj{q~33)WEeA$jVg#aNi!_BH|j-g8~gU)X2#V}L#^(`%u-Vf)ntmh#`@BG>K zRr*V^514PyMd!UCEVnP%1MYZjmtHYNz?0Vs-K>1{zOKy~0ulue%h~TqHY-h&yM5HV zm*XO??QGF}TcG{G%TdnpL?jF%&=V(D+udG9HBUhKCz1Qf7_NxrhtGuq3LgvQ;+8+P z{QRRlqSx-(d^!6YaydRyQk2d3a9kVX^kTRPFbr3JEqQ^VQJN{SkqaQp001KuWV6;F zq5f%skyFDa)*&JsJh-AZWwOL^z-Jle$#0hDDPZNt_3RzZMfz6y@GASXp-50ZKAn_q zsK<6-D8L{psl(^3%G3QMsBv|{u~>KY_+i1tsOQP?Y58%*<B{Swd=A;cFVLGk6)L1CboHcMe`@5)=aifCoKWSkGYCImO^jm#vj@V zw(p;MU2#b8SY0v>t4h}G3VV(o^PEV%4Px|m&W|}wf+ABpqzai0SkWSQh7O~2&@TO| z)&KfGr6Fvnc_>Sh?gmZ+0YxEqW&}QKGL8bD7?!`F^Dl~b@7{5IK2*gIGj3dUNdO{x z){0h<=ezL=ve#;n1nlB-l?JTjURQB~AsxsSF=Rs8_UQ{{TAZ$Aa8#)^Y6>%lBHtnu zIV>KvSv};WEqs7CGIPDU5b-S<7W6M4r~{0V!r;te>G|eWx3-}P%#9O9*Arl0P6+7T zUSFl6GPTfN2m~;EXWf|=m?kY+f4Xj*DpDk0tTGBfC*+W%V6i~n!9+lNAx8PmLc}(| zZAX!ga47bLb~4n7q5EBk8LsZxMpF<7+toW~{E!nSZ&OM~PiL;Y&ZM1PQcU#mVVC;! ziF*`f1T+Sk8fcs9LD_84IEz)ae^#!4!S1Jr;_r0$=X3Whu6%gVxrh(j8(Poj?P+C& z+h9+_kCY@T{wII*`y>$q`!c-D`20v-QY~H&6(cHGgxtzBP;SsM#T=cXXOdDWSSXf% z`lw4>U;aLSA_lpg1m}n-n`EPk?<8t1y6X1eLtpRElcMYUaOPf=yXfNC zpQ~snPL|t#jJH*>A)A zWz)-iN{*tT&A#OpkvJ{8Gwep@`>n>XGlRD?tAdSv)f{I5AB~s&6X7l_^ofZ!%5G0>)E` z^F{hBxE~!h=X6}ULVb~p1wsuD&6f$EO*RDxCB$f zBlzY#U8Hn0T~ql!$SxlwpobH7e`d>r-AX{$&~2N;|3^q*mhq+HK;E6#*Yj9^-QZ$zTn>)jWR)WQ@Tj8e@1ZniuDXUb`Ey!Vc zyMOG8JX&+%Q*+aee0fz_Hm-_xj4NM+%huluu|bFwCsLp zwA0)|@C@{9`17$N@y~R7v~9*7jeh4!yLWYq-Os^BQY{#x&IZR$&QCg=HDcZOysTu0 zp<(>;F|msnH&I7|fdl!K-Z|$_w$}R}CV%xu=PvM7rr2l+D>T??rk`i4vZ#aNDL*=) zsMk^=dnOrQLk%$RiA9Skf}jqJcb3ATXVMJA1tpHk4A( zEoL|{mNjL4??`8%zX*<=E_G2kyuX!+>0v&xAnP63mL7m z)9-Za3Wx8v)sZ43xfSDqf>3l$G|UDlH(B_l>zR*={BPL)oPVs!8e+RV)2lU$+PHxc zK?mWtcXm09XA3 z^d!?VNzggVrt6qsU|=QA;7_}bNA-%td;bt)Q+#62oFX?mwpdi2ViB>*$r z%i1Mg8EsA#6}>EBQ99RQyT2QfgP|g%^A$7m5BVlbrm_a%D86OSQw%nI_(($- zZ?qTSvuK*aFP3lA6I=rjS7KFkMhbrCeykvoO-as3Foj}6|4^l3Oyj53Lr+e~CZ>=5 z$#;#)Z2k9^cGME@*|ZAZ2aCpnK`tEtn{;|}T_p0zaQ%q_Q`?kpvu{9Ni-wAjLs}sG z*H~-s%;`#p8C}Ue7Hm#fB8Xjg%Zus184kXYeY1`f)&euuyH%|Cl4}^@Fo*_wfrrYyni{N|VFb0HM=% z$MfTv?4`yax}fXekD;8wWK$E<{RU&?3*4F<+`5mkqE?0MMF(*;b@C^FilDLiu1KJ!t|nf4s(piQD92m7LI_BBoNj>y@E!Jja$MIi$&?pXAi8-HJMpR{BF!@C99bizcda8l z$YjWWicXL|ekgjQLkCLQ1F>DQvnC2UT=Bd9ks@rX8cZ9mBN5PG%j#mMi4$Tg;Xe+l zU@uCL?pV>Q@UaVRUGe%(@+7Wd$!DmZ=Ui{NJk**w`;^SAvnNkJ(XibT7;rvCyO&-P zi#}89{>Mtg?j1GZxrT2Jd?t?e_a@NsN_!uFdao{GQCh0LoafPiMxA{t&3J^?oUd7P*uqI_2|Vp;y(B#m~RMV{8Gu!V3gKCsm<0B^P0 znU@}v&Td4HA|K}EP$7fVhyK>cy~_qDIw;UY{=#(HANyQIQFfVMq0?9q@yi!WQFFp1 zMrbYz(~4t*D;}TY4aXDFgj^bzWjxb|qnTeX)1nii@&B9~^&lhe5#08F`Q3-F*D|H1 z#u+cBT;E1nh2{sibN=Nz%WZF`)|3%WAXMYO-<9RK6{q;tb=zmHM=&(+E}t;46y^H; zOp@z%@xv<38v%q(GQ}_TMV!qPaNQ@iQcX$;d|uRB2s;RIxK;afa;9eoBU#e}B_neq z5bli31aVIZ&0!WeJ|o?B?}*DRb~B?mPmv-%ReDO6NlnXZiO>oB9|{iCQ*Aj>E@LE= z$z#RK(iFKA88gx$r=V8a=^|I+wo#hgj^qaT08v)f0z7(QVu&-r~ zzGbBw*0EO`P7N=#J)E|<51j-+^Q9SFIg|cK>?M~a%OZXsbZBDdAqCRXpn{t)Cy98JkJAPl-{`EmFL-Qx=gI!?H5XI%(EW>n8KQ$T7OI3owl4AN9zPc zlicBnx)_J|2}!mP^4S}P8KF=SHrOuHT3G9So>gP%WpDR5XPwR!gI}!v`t7~&86C+l z$ekcW} zs$Qj4cQ0;q@PaF5PBXHijvLEkc9$LI0Ble{axd$rf=5^%^?o!eBqJ;uo3KwL@a^hIkp!khsd>XBq6* zM$}7KOWZ#BkN75d{XxyW&p{1wLQAmT4 zI1n~4{XMGDE8zSh3ven8RXp)|1Vf8a*D1|EeHfE|-WfM!e-&poAJ|j7a4V0<%!$&l zE7fL~2^J?sw{|sx(qW4+#HAr};aYCgFFf*WdhIIT@N5J46boX^Wznwt5XB*9f)1OG zqH}Y)nl%xPBm4P&sYub&f?fuGaCjZE$E(1EdcsXxE7{-+^J}@$ZbgDviUVserNL;e z9-s%L(|N3BWZ2-p>Wh>V;`$5UQ2v@0=H8sHYQMsEgzZjZ8??xgPi5<}R1-5spgN_0 z(YWFm5z#LuB7FagYM#YY-JUd)p$PE!r*9=gayZHpYAi87=YK|$#o2qNGvFeG2=8yD z&i*ky3fGud?jYy#D8SiJZAZMy#EH5k zlXbhk?fI>owg8G4$pN6;4%~O^}mP#RT}~g zn<~=Scz_qnq{5rL1v|)m{QkK%R~pQN2RV0r=kvw&u9qE60XR264wJX}UeAWlQ8Cf~ zGnT!I;S28Y2_#T#09dl!KzEYGCt%^j<^P!!@eXcw+cNo z6kqmt6*1d*i{`rKRz%hCh&XGQ^D@e=3S#ppQnWY@_CBf|)qSnwyJyQUNE%n?qKnpL zw13=>JecVIFtjj#6YIeWK!sh%PoiWf@2})y67b$R1N$;-n8{&W*@5MizhBa*khQb( z;i5e9IJS71+D;a0v?VKRbW|SYTkz7~eL!hC+w; zBV<~E7*ifo#8jIO9F~J+(fJ7|vp*dS7K=KhIi4$Of&BO_T+(oxt+v(8$KotH9FDFz ztQGUrRPn}B&PZa{x!`Do`<5E*&Oiv>cA!}AZjz*5f~h_EYJF#~jNvX`z4W6OPN$Ih z&58JXP;jRQQ^fg9m@9!+A+va~*A7{s$8DU)a!T@t^TAeKp#?ER)(^`OqY%=)!B~J$ z6L{8!mH{&fSzO6aixJE5(#rP3wW0k? zr|4Wg>5GR%3(xu$-D8v}O|BmfTluc1u^61~3AWZ|VdPm9zvW%H4X`u?^O8p0Zm^2# z*&eb2z_KkO&20IKZ?ALFy%uGHJqhWorGcsgwZtiM~P%O`Ixbt2SM0w1MFJdyfJ3&~?w?2`mtrW5t0m zekl^|$S^RU38EtGKHbesN4eETmZN6i998XN4e_)PzeNbrpT`w~EL*6MoD*)-(Pqrx zqdyPryt)(x6k8;sT=*6N_Yjdrk%x8G$dqP6?Q5Z&s7%Cq@+ zxPUkVwJ6&`OE(?GM11#gWTMq-tBxhwo~<_#zvDN-vmB{ zF5|Ilyxj%0fUI5x5{BxJ)U)?aBJhFRh|G#QAm7MCfh%@S ze9w&+=JDLM0Y>9v!CIvm-TrE;dLu)P`*sCxxcC|Qi6YPvkd-`ym7pO~VtTR%W`-Vyb$E45{ES-2qq0Jm2uHT>x(!1sBW>J_ebTxPH2+-8q z?Ns7B|5;>m&kfbSJ9)9WRrjOvQ(m~d!S}4CV+Z%zjMe~Dlp7i&lGwt?zaP%_yclw4 zY>*~?|4>QyJFolB(El6tlr|e>U_K3Y@>B`&1x^mXMH-^l27>(T%Q*DbpW$m+B$DocvxA}>eK;~1!-{ut=tj1IRp$fA;z{7#$}WWFqnOI*0aowd5r*nF zBJJK3uT(Sq62kg<>tf$z%LRdRe~{|T2~d7s-5Ce}sp18@RZ6df^A+Mnw9Ap)*)A{L z)#Q(F*SHTd0X$6!T27OLi^gJ|ee7Rqr80sSXW01WqM3&Pec|<&)jT_Cu0!z zmuZMM$8*oLsX~GT=_KdTiBR|r#x)RdMkggbZvB+(83qZOQ%evqx{P7TU_+~d2#irS zM~yZqNRQ?M1J(Sa3G2lmsulDg&?(jKEf0HX@{rd;_Z}*QIIfvafgapx14Z(S5D~q= zbtaIj5)&k=a=!57epmmla^EqBaY!kh2hfr}o|i+=sGV2gsI7~t9Fus^?z@};Rx^a7 zr5a;^^*c4wTKesxHTOqfYweO!Yx03zi+_Vqi~F2kiWFZu4S`T!Pr-1htyDBe%1F;QR{T!s;IP$0Cn2cjp; z?uO^vfx~Hi%sJhWL&Gaue5FNX_UenW#=iC4k7t)|V_ERCZk=TYXI5t(k$tNMc%E5Gq2^oIO-Lii;Qr{j#%kJ-6b>{X5oxen2h8dl#qRAH(Gt<@ zi;9Aejq7#@=H7yQr=~0Ro<|vhG_MIEj@{8;mvo3$>aqrG`*Kw!5heqxYqe^x0H{XSpt*2rh!!i1p?!T~VP6`Hfh-Ul^-Z!MgWDITd0m3?+=j zD};}!_CFC&U{ULpM`7sEjKUqQ<|{}w5UAnr*vkzaM-K@T7M=4yP&g~Q0HxNfT8X7F z2KevGnK!aXQ7mHg2DCF4Tx@auF$mvRtqeY7IJCY?9U03KM585K$k>LUHJqTP}YMO2|e}J|iJjy^wfo$sh z#^yREJdqmN4gurSTl2tPg=G5aGh&|AD_&)*rMeQP90B2{+wGU#p7|crZT)tbkm88_ zVy>`R`^;}ODyMXw=p>b>P3PGNe8B<>ESM74w%H0M^no^v8tyi4IL85J} zZCCMF)qcH~qB%)ym&=Iix*tNoGDV+AFt%3MQqN1o+MYPe&0v;3$)K!VT2xbiXzr9h zLQnq58|ccFZX{;FNAy})hgu>PMRK{pmeeJjY1?lI?WET(IOn`5KnhLU!@D=mFbCps z%!dq+L@a^!k+wRh<1v~%N`BxC*Ks_v_9SD{$I@@9?3N9~v~@Iyy&OB-a7ia_G^)w% zYmp{(=4q7}NFEG0F?Oqf%9(nIM5M}ReG9wKAx!Pj$+!_oIo z$2v5DHA)F1AH!0vHoG`n29@GS+fsQ%%`3b@JT%!2MIi>m5~0Zjb3eQ7XW<{gHB?%> zG4%Q14GIDJ81?K$_vvI1#p}elVli8ERrS55#OcblV;VkaJVGwz7CtBa6d50`D4d#+ zCG>74S-0=O(5?e|tlqIP8;y1y0zG|EdLz4Hh2ps{HDe8pP&Vackt&WjwY1~?%;Ar* zetnb`C~Ox^J{G<&{C*zu_Cf~iG8#2AEn+K9Kl)i^iXA5&Ha_|nsBCci&G?N@{)yQr zg+uqtC9Eq>0(YJ_mDwX#cf-`9W{Kzc)Pxqq+Duo7Bwq0_&xjVNSVMjYW)>#Z`52SM zVe6&BR8Nn(F;*dK8CI(Tb6t0^-rN=~m01Bex}mabNz@?9z&o}Jt>wIj;_GCjMoH7s z2K01x##WR5&WG4Dody}CcCJT84DpbB)^@@9$qD8ihst2;bc^ zGiC^SMn#c78{);um`IQsWJB&*22wsI_f={q%8#Ix;?WSImd?&CIb#i~g5;z)s^Y_? zf(wE6(BjGvY-?>r`y7TL7!;(yGYOc;zHiZDIa5Ee?}0Wq{Cf04;RBxx1)pv@o`bHb zl739?bdyB?p!}$O5aJt1U>52B?HrA@bpwPwDu@+`osCmab!~>md-%dQuTTXGZT#(J zBpN;{Kl)Il8PO9q0bSh>u7YJL@5b+@h@1Xl*o8EP-M4vdTMxvO?%EAD2O!%j)5xxv z2Z%Xk8ME?s>F(Y%Svg*|V7F5Z8%!Ra8D5e?21A5-9COxf$<^YY#xdS`!c~cEF0~Aq4jMHU6J>^AXu>Hz@Nwnim z#E=A^x}*VOF7BR(u@M|OI#Kr}{%7|VtZW}opW;aED%#H*Oj-&+Gt`rB5f#F{g=8Fh zY6XQZf?7=NJC0jhnO(k*@qV&R!7UOdw5dw9bONw>6lg)<3E`^4sAd)WzNQZ;ED9F= zcP5(MKJeo89jGM9<02`;mqDCc_$~5D+xiETsY{Q=+8%dzrG3igkedAHNgh!8aTUjl zu$OPixqQTwq(7o9d%ni_HSAu+A~yokk`ZPOu+PyJF61#f37xvigQy-A$|pvd;Ss&U zvQhA`A!VihZB=up{-^@6HuKOHO@ zknn?JQUI+7XqRSFeLYq}^b+1sXVDmooqE@MNhWwlg3YN9smQC!JSy7J^Mq{dth3No z@Uj{|)3cXeylSd5;% zzRE+(wc%FY_`IzcZ$@!L0#qOh!f|gu=u*32i-+|g#d>K|mTT3G9Flz_QA+FN$!D{` zwm*nfOQ?R#jzNzx=t(`VCSG;$_+W4@>!T={0k}XIAw9e8U^|x-|w|A;f~V=e=B?l0(bV4 zQ>H=M-!oV>5_$FJKxiF37l86M9oN^xQT7*WN-4C5sJlfq0)<|Mb`T_)7@_Ob76Z~l zhiKgKX+;q|%{w|EcPwkbPJbm`l1e0+x&k=1inj)_{)VFRtQl=C z<^53=^)Po#4ds1EsEiqv7vt04Woj3tWb{7$`HIb9DQirQF6ZqtZQ+}7uD|ppmx{b5 zjF_=2Xvdi&!z+dnttjgjS4<-0HzB)E)Uvyx!D(RJSVBsF_xE-Y=L)L%HBzqSAcpd3 zj~{Q>O>3y8zq_XX;_{p@Y(7ee>;6)^dcSG!$9K{Afe174a{Uy4d8~AO9NRV4^#^uR zAc)zBSTctdefN-nuEOZg!#-&CyX~CN62JE|-;>vLmjl7dgrf{P)vz@mMKkjK1_9%c zZ+O{vx>~wJ+3(cwri^*J3Fw(;6L|qlbbNPel*<}oYEkeAiMa#rQ82L#Lsf=daEY;cZTigu`j}qa}6b6URw3_kxaH z>3njp$mI~-ijW%RGA-^+Qcq0kJnWw$lCfSyPNw!4zH<1zTCN4Pdcw%b|z2LV7rg>%fKsgnpj zgq4MJ5h`L%vFm3|R+MJ87x#Je=FFOiVHm?%m$&bJ$|8?R?5JbGJ7@JM(kvc0pdF_b zXCAlw(R~MWTshvnRFg!s3gr#_g+_E0gEHyk?qeb68*K4qV}zX@4({bvwaYdsyO_sk zkNW*O0tZ+(<;pX;dEVDm2#t6Wdpo+IyB%bkfX~R!Hz@c^Kd;5-8LGV}JBY|&C7u^2 z&Xr#m)=>wb4&Un*nXq&TEm9Ds^V*%#recafs(7dx2DEgP5@7Qd=i4_33|^*t$|H@H z*fQVb;rc2eq~$Z%Y=wW6Iqbs|NaaGvyLa#O^l#-|`||Y?E%%O+&j0qX7x%$b#AscC zP_BX7NVuEdrm&jby#5y8MqHi5uwnxYA1ZJ3Bcd1b80ikjL#f zhci{LnD!a3?;gl)s~xwGDD3FU@D5)CQO&|Ur6&67jpB$ImCqZ{nhcf8sgk7jq_o z6y1h7hQT2)5MNi!wYDx(4pX{9d4sh8Wp6SHQ=m!Y!7bY*lyAHYyQ8DPAPJhr{R_R&@tbQ?59e+fB!f=VK3ugYNx0KM z@=^LK^FC#~9XRp4f-eX&Z{YkAW$~DnCH81}B05K!UkdHd939bq2<1*gQHRUA$tTjHcJQoYi!U zqOlX5b$-^+Ht6o{Ix6~<%T(hHA2{0=9b_C2IP(iXU;EF&-AuWNuy@gdY5b82slN1J zTFJ4=sw@6Fu1*=q{3@Tp<1f)8heHJDmc?qp;2fn+r~aA+?8w;LNjdJyQ0*UMFW@p+ zaTD0i`trmL6ItUL=g~lY$1|VjcAlan;E{^sr6xjSJEwYYpd0R?+W-Ua@q&vJ~T7q7CMw65MO^+eYuiDz4 z5%k10=>m4vLb^}C59n`f#R5*6SrYUf)(QD^e&KtausMYFzLn};?vbiREs6=Wh~i-0@XpjVZui$30W!&xHDZe_C54GbiG>!@c(I|y zjrYQP_JM_aUZ`5(=c9sgH!sers&2kiDc*NHSI}Ou+3?g0)5#emd05}soS;?^tS&++#b}4h{G##(30-Tzh@b{aZ7v;)clU~dktw*6yS>T zSkEYL^z~ zSY@U^-UZ|-Hx@W&qp;!74$_0@`$>&UfO3FBLXa%QIOaG4P82I`q^_Uvo+zSLX zTf?GNn6%wnNoHH$ck|Zd`T1UK>+BX)g_YhX8g>&=b6q`G#oF=d1r9cC1{3Rg$;Eng zOVL$yg?YRh+GwnO8~x`Fz%M}r`TPK%2^G=YvMqj(tDv6&*(bVWKkEgYd|^y59cmnV z<_L_$Rq144XrylY&&%(=fUARb6UaxmD2nc~pKdaKD=A=$6ijHpTf%^vium!C=*uXOd@P$qxfrSi_?5Wnl$1e26aBRD@A{GG)=;ERU(uM810hY+L-eLwWMgS z&AaCPTIDfto=c3Sf=MpWxHo0DhbsM|D&IUER_yA;2N!Po-Rt)Wl;1Op!-~^!4d*uK z)PrvI3&c6DPFI(AG4644TkroIwOFTBL|bMQ%4h6B2q0Vd9rW0HY=Ad(gFWfkjuxy7 zT_8I_;6hW%p)tzFniJMTxsu22raeuJJEN8;yL^3`(f4raSJ^)dICz&c9uV>~X$XY{ zaN!gIR*sc|n*w2G9gJ`g?~2MY@e+hZ2=oP1ff zrI~S4l%AGr=|`Rm?HSKLjSE@=w;c+_OoGM-QhmGitTd3=%o6>RAy) zEead$;67*}8ffm4{GzyKeakoT?Jj`wP0yN|z&PE#B3sE~#xo0bN2O_B^_fmLQj6-( z|Jw^N56*o{vNa_<+aP+>c{7c5UC~d;dUKoivEKG7%o@0i>{3)$d0YFte)Lwj&T96( zos-9j$exwAcz_>A58L@AB0&CwUSIS)`yPmNVlV2FU1$$uz};_;$sZK3a<4CI+>`aE zYyj76E8|zmo}~`!?ggHVH$;S$Kv|v(W994P>`w>9r^w;8K0*jneaT_noAo~g{`iC& zslgi?b`%NnPlJ5&Nq~#Mw>n40wgEW$CtBSkuv0K6aI{PoxRCWm90Xi-T1n^)1oe+f z&$_C0vM=A^|Ndbf5-ci?Fq{D<;53WOuxHnzwt}~W)`CsL?nD`>;cu$KUu9YYU5v~u z`;TGP;-XI-vf}nz-|y%Yvq>6X7wq@YR_K~cg$KM7L8mMAOLfJXCnZOrw#il=De#nE zz%^0u>)}yN;XdfCpWq^_d+ZX@R$iCaeBA<;! zf0z>bE*og{YHo%>Lr+awnKb*RyS(MGPZ!Fz9c$X<2J>w45{}=m_8>!;fEKfnln#2& z0*`1Sv(vTDpPQ!RvVexr^Q{}c<-!tG%v%l@ly%NlP82UfIYx@wAC;CugxS3^!)#5NOx+-; ztzk331w!ep-zrjtfmLzn_q~YM=&^C=uu8+5>;H2MDQ)r%G-x3%x(#S>KbJZ?m@@12+)scZ)^YMwOUrJ699aLL zhA%w>U4e!?m$?IXfh*(qiwx>1N*y%M3`Ln+r#C$%?7t-mMDBlm&C+|rQ^Bm$5GjvW zf=L&&(4a!To9j5@mM;<;x(CDW%gE}Db#B)g%*=8ZmMQvVI+FaZVfrlNUWMYNgsSmw zI7jt(!Hd>y6a2C;o^4DcXb15a9`r(Yqx)^fI)qk%8Nc30y?!uc_3|CQ9yL()t;z%n zx?{>;lclw~o&u;&nvQEmbcqS@mk_$*F&VP<(Tt+i)&-X%6MGDPC1d_<pU&tUp`$QSE40~X=I0on)W`DZmX6r>anivuH{7K<+SjF=ci zNVu)8El%)^oEVTM36wGF(>~>df_-N&;?eI#)~Q68^?uBx)f>G)7K^k*35?1~1P|g- z+E53?RJe{B5)W;_swjlqvGneHJk$u;0GHpLACbT3Er^9=bKlI~SXEhEAnhcu~9QH<(} zQ;CADST^_C)V>d9xvrJW4qV3;0Ljse=ZkJ`fkD&1n6`O}W+)ydZ}4XdgE7oH-zE*t(0S7@4?r#m!iY?sb~mjhIl>Tks~uXdrx&~>+)ZD%tIIO z|9)JhXY(D3@hp8k>?)q8UA~QqSMmbVCEpRo$8GZG&{<;Vmno$@SoiEQ97_0mFTb?W z8kH_uPN`5z-9|Bo@R=*G1lY0*6NEB$J==H)&34_{4XSyR>q=1QA;^K`@YzRlUcg;@ z76hp8xn0JA2U~e*&bWX^!i4{*VSa#1+(5_nWMidrhcmMIjqOW_x Cj~=k`UQPoI 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/1/solid-calculix/precice-adapter-config.json b/examples/1/solid-calculix/precice-adapter-config.json deleted file mode 100644 index 110836c..0000000 --- a/examples/1/solid-calculix/precice-adapter-config.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "participant_name": "Solid", - "precice_config_file_name": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "Solid-Mesh", - "patches": [ - "surface" - ], - "read_data_names": [ - "Force" - ], - "write_data_names": [ - "Displacement" - ] - } - ] -} diff --git a/examples/2/README.md b/examples/2/README.md deleted file mode 100644 index e792318..0000000 --- a/examples/2/README.md +++ /dev/null @@ -1,6 +0,0 @@ -This example is an extension to example 1 since it uses specific, manually set, properties for coupling, like max-time and time-window-size. - -Inspired by: https://github.com/precice-forschungsprojekt/precice-generator/pull/55 and probably https://precice.org/configuration-coupling-mesh-exchange.html#example-configuration - -![](config_graph.png) -![](image.png) diff --git a/examples/2/config_graph.png b/examples/2/config_graph.png deleted file mode 100644 index d43ed61493621da99bc8a4f9b8039b5fe1a70b02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 277057 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

c>p zU~6DO*9*C!x~`N?fm+fQX;JehhJ&(fCZJhj8~pOCbS+0wbT0>!N6M%^V$F!<*+N>4 zBj|2*|J|94$VP7)TKyY{hps{_s;q9n;=d#f6_v8Rx)iSU#1&5x~Amz z_cfHDyHFax|HoJdiW~=fgT&>EH!9bpS@xRm>V+8qDDN#F%kcxlBO0^zcwVZm+mV&# zLL;|UUVzN=!J$oAudD2U(EexSB@MrcV^Rz}i%UC%^!V#RO|wrl-CG4dT8dWa-=zRu zmw|n~&*mPbu8}S9yIsPXVPCf?SGVUe?@`I)dw#fIqS?00o2oC!LS`zti}1(pVodsB z3(ye0wRX`_5%|c;aF^Y`QqL_Sf8x9Y+|9bstq%Gt%MA|sHt!yUP-|Yp#7;2M3LVJ3 z2^km>t@eH>VYNbF2wXj##@;V3ql=mRKD3cR8x0`d3cO zkKsV+#w3**uA8yFYVhW+G&sIbw?P8S+@Q}UE_gIDi3JfoK4RlokzKO@3sJcygs%~< zy5QaerUJZ&K#TGcoWuepPBxVxXjP(+yc06pq=rD1w=>sKOY=NwIP3qx}{@f)06W*~%p0eJft zlM^Y6Ew`yVF}fA0gl4OI+a7C;cs*?rtt92a z{&Ya>FTVL52Ufobe$21>8osyodAYh5ETiV&vzLPQIB>-LS1r)n|ID@D)99=-Wt$nQ zt1G?ywGWVi$tQgPX3ZMojJ_GYQ0Cx8tFc6@B{)!PUDN`>-Ett3+9&Be5SOIm3?#w#;vsUzDZ#@|i{ME3>% zcf=*L^2$HobfP@b8##!c_<0FQt>wD#dl@HTk@6bw-X1i~bcPE7Sy$`*&r*s@fVFFR z9&v8qEv0?nMJdJ86e;dJB8nNPU-Q3Vl{u|+gE_$sIuB*8bjYVxd4^0}jd4s3yA$sl zzDZku@cRLvuk3xlMD|&=^9D^t6>}PLWxBy?YZ)jneTX6%{8`aNoch=#FfU~A9W?P; zFu1oP<-HJ_MFk-q6e2}kcjKIogYWrfZP4gVjru=<;cMff65wun^qQnJc|_&as*}YU z(D~;O;U#yg8nR4!WP#~D$v-hkW=j?LkRtRAAkg(u=j_*#xxhwK{&-coaGSsZe9vLq zRYzjjOv%i}R_=0|*?8^bZ?}kv+DTQ?i;RIqqA9-eG|Ty!x8cUTi^vo_*`)Xa&CTDM z?mOD&`TRJ30C7niYZOJiZDiy9Zr-4}+CJ6)^_mr7ZP&RO)(1ePRf6nG^yX01YV$zC zI$uK_Vs0iAm;GU5c&F=zYYUmG-hImRQZeWE@W^AJ{ zD*ic+zMs@1Bu74v-%hoTn0k1pD&thX>2^q0xRZ2X!+|siL~<@e2^`hvrxD1+0Ki_AtG;lbUyv+96 zox?ZolVV>FUAx30N6+T2dRwu;TJosm>@_eGomKK6f04tb!iE4*%P4uIMXxsdm--Cp ziH5m5OB9l_7m;MKTex*E`u?B|8i%sutC~lw6l>F$7lLWB>RawR z+N3vxKLUBrVXvaH@JB9!>}ZynW}aAh&73=Oo>{3(Aj(5OGw|}UOL9qmVu$l==uqC; zW7gh+Y2I+_SL*e&9UTKvCO1JyRgUZ=Z&nTiiRzC07paVpV_BLXI{Ek+8GLAornJ>N z8L+Ik1)>s?VZ^d%f}B!z5)+;RpW2%wXLCO$88ATB#0KHm{^)0 zy}7}8?veTZn$HJXr8AXod|3Fpr?i5werShZs;aTF!4XQRMeh&k! zqgL}iy;zmf0wDBUDs5OsoD{Z0K3$7>Dy&@!87mXw3rmYPH&=#qON+tb&mUn(Ki;b* z``jBiP@4=YTeNG}!krauyhV~Q-e3T1QroB)e-CiLMf^_L-I_>D%j|;6nHnYfu?iPX zf!)$>dacK!HWsOg^Vk@W!S=g)*#0v&Q2BAvvYnlv@Ln+^r0Yn=w4CCR^8#Fpbw~}L z^qW5dVC76v`QXALMkM{OM-TBk+W*<(zdJ21v`#7Cg(z$tVict^2o}*_OzIFzkbYsz zrz;=sC(T3>-@dzS8Og%WMQGr$W%EO4xuhZOO1}?9jA-2heo=KQc*RSot8%+faFK5cp1#x?do{uA&^q+no^1e~xAMlru6+C)u@h3CWbGMJea+-=Zw- z;$=aRvOgm{j1=R$!>huQ&PI)ZcG&Ak7p3N@F_K252`a?P*khD|bO%j`t5UR^(qDIQ zE87}WNtdR6+0&cO&Nd?uMV*8W!K#wPKTDbFfZj`D&apj+e@ zdH&~XXJWTioxFgTSt0i=OfX&n>zB;Z;D{Bbc#s{m;*gw!S5l{+T7Niq`7PPD`>#J% zh88gYENu2_-Ja&5^}7ysghs$K&CY zGk#i$EH~_@;O)n8HgD|QewGII77Z_07_)#$f$Cy^Mc9ei(D+3J@}uf!+}K&f?eM78dHp6`hA?_KVIngSsTaK*)f+ z-C4c^!msYqsEA*5bBe*L;a(#-Q*CXq=+u2kbEplrQ4ljQY zR&og^ppIeAt1ig6 zF(Zyzx2WE_cF%nRfJD6rgT9Ah8jI|dsG#kY)Ry8ss=w$*RXT1lr0mL)O|?ksZP>bE zC228YPvj?Sm$NRtaGzCS+cb{_?3~{|7PDB4`(UX$zD*=~I{xHlF%dy~6u;l#n zL>`XY0_C>VXm@yDb5rhTl`s3nN^F?m&KBKgUv({AH_ko!OVSs2xLLz5-|BTLfL^=n zUpymy&)>J63o^y<4N9t1I%&B%cGcjS!PvRdOSg||8cs{N?8YYZDp#O}eZCZ(n@lj+ z&@0?4WI*Vsg23F(5QM^rMY-G^%N2WPGLHIf)_4*JIt{=fSky?s#*?Ir06b$RgD~=w9<AC=@u2jDEgH@f>ik%@U@hesss*RazsaD(#%f%UQu9E>6#?<$NSD2_w|E8mPq1NqZ#L*-N02>)%ya1K>8CX7(F~b5)r2w^ zY?JC9OY95;(;W5ZvZwwu;VD*RVwq!2u*J5Zs2>ycl%8`dwIRg=8vcdltI(8R=?w!7 z)Ycxi^o=_e=M$IA@?<T` z?DV-Y#79DG8(k4sk9&~R*jb7gIC=y_)Bf9&(~kF>c0DkV&x1;?_3Bz`5Le;T_T%`a z2}UPuXwph#7!S7#dXr@`E$X0w91hp~d*mZr|6``Yk9ltxlY8BU$>R`~1-5P<>h`EQ z#T*SMYBOWkXMvpy)Qn3ibib21sWg#SNZThj=A_zqQuz<7Xg@g=hVZ!}7G4p>?*t~H z?M$sVT=v_xvrT~mY!9mdFEgo_T`NvKQHV!=m+7wL5cu3BFd``WWVSv)?ek9yrL}&N>^v{J4$!xECqCVNu_mlB~76jsM%`3So#0w7nPi+o} zvJy%F{;+lf=v6O3mi@NXO2B|`e9rV2P_>HklD2KYjJ%p5o)W98s4WS;_bOH{?QRd+ zVMM`hxsrhFv3^K$A{2JaFm(z1J^#Z0-Oq6OauI`QV>JlT&a-bBWsh|zwons^4I9fq zJpR~u6F2ZIv^i?&4$8Kn$vOErx>cH0IQ0=pfr!Oxqw*X9CEb8Z7tgS`WInPa^pJ%| zV3U-Mn?BQkVl!Cw?JKd&O1g#wGDGjRqPl%}6w2w!q%Q*a58xiC9wL3g3(SDhwC&OZ zAtvWTn<}c3q9mpp-Ah8gK^+2}?)~lSi;zeDXO3cSG%RkDR<<&1K9uMFZWMRTHDqnM z-$%*vLO(Lf9rctf39^TN=+e=2#rd!mK>RG`eQb0Lcy>Kshn2b)%)ZKa_67afdzojC z-BX_>rrvPYo0EQSPire`kNw1=sg7b#^Ul;#AY>$~5M|n($*#SFy#bo90RB{b)_$Eya5H>$n3J(5`e4$k^_4ekp%oJj?c3oujY#qCv=OSWH+g2i-$ztDe(9Wu zC;3u`kpNOhxdbx*_d9Py4zDw z8CD8s*w>6=>e@@{4)^Y(&5vv$WUqQA%k3UkLYq5fW!Sx=EB|@!Vt~#|f@`Vr*HP{7 z$>IlePO7-`y|WfL-u1H>06uUM?ThKALf@o8Eg5qehe4-W(rA~$Y>ct|K{U4M1{0Ui zz20yhA-VIgEiQ$)m9~#lh+&Y@MURdRAVAuJL`~X!7g*b$r=Boh*hUG(8mf)Mv@_K& z*gOuqy^sev(OQLxZ&WplP&^A+9ygNtUxaT4=N#RC_M7g$)Blhx+!cK(b@Hr$0(V*Plv)E)5T0>x3o6FYp#u@l`IAEpi`b*!S6efh(jzVl1zlS$=@Tf zJDOq>cFNiwywR=+!fVki$|yYErLrGfm++}ns;V2ubJn3z`Y}_wWumCc&)DNlgVu4F zMF2+a_dfa+2$uG%(?{|!N*W*c{S$kN_QbaIarrH`d)zL0R}2r2BQ_^cVW*lA)0L2< zp@xLIOf=iaXo&M$&k>!_k~RAY^tHR?f-bLq0k~JyPPpnYa`2nG3;2I2KYeCbNk5fl za*esg*mv##;s7mbb3UsH`V2u9fOlQ<@2ZIUF(`pR&0SeG70&B#?@`(5;aPhIuEobNPokGq)E$2R5)Wf%Lud!ds3zr7Tn1<*;-P$tjJy z7iNsNj(UX2m^HWnl(JV-4=lll5d3iJ9l}nGn1l4TU)RD#l(y|U*fOa^#xPXP z52VUjQi+eAUw!Io_#TjE8HTGG(&SAa@{+Y1{r6fY$NuYP2`ND*)4--T1W;n#B0g@? zt$d)Ied=eGmLUB!YZIeHu*f~5jIdFeik+ldRYH{vs5+Z+hG-}vJbpLbmZGTkp9A*_3*efrFObT*uj=;<4R%~!Y{u%%#zp2KFuGmMU z$MrXT1q8Nb1~1R_PHjbS#SrPmpI9f2_`PimeVxu z0{i_=`(wirSCb`#7QnjUC&BAOPeaV)YsrN4CX6;$jMuWo1WhvEA#~nEbi;j0^0oib zdg;Y;F1AgmK1Z03uy0lUfvKtt>AGdF^t{S+3Yiu;QT1LrRY&mO8w6YhbAM#~+f8CzNZ$}agvC*`Fu&Zc7iu{; zX8LP6xh{p9-8T$84`ESQCS^HJK`HjnAwMgd=TbjG%R<87uL_Lto_K2D5(rD@n%y0+ zQ?6f~i6uIch&_%T(;?qpGg}xNUBzTd%dCngTt;G)8WpIu=q(fj$TD&l28`TCO7n=V z&B*TXloj0=rQaOQgr~OypJ&{}oz1dLs_*qP$gN5GRHKJ|D--9;JGzB9;LArMnGHsd zy{I?v4Zf67iDrneyO{pEW&ZZqo*28Bf-Eh+;B)#ZcOVVRpn;}1zF7lpn9lFi(LYdC zHx4-^qcTbUU)ojW)ISP(uoWjTM%@Q;+*w$VeVbkse747A)KI!-6yR;=w)gU(-G#q4 zH1}Se@f@tF1W9y2c8loa5NTC-nk_*7fCuELX?ufRan&e&yl*;oxolC$iBqwU1>aLkeuonfPCY`K4G81eF9^M;m1 zwNm-5s^EiL(^`M~NX*9n>1kXPqFSQ6-YDU%&>egv0g@no$piR`5qttH@+@eqZ?)qX zlVz@40|ixq7@NBzF73$HxI9s3miDoJK_`|d%YT)0rH8SarG5dM`S5H_9uolq8+6G- zP6ZUtRa;rpxgpNrn);&d%p=R>5sv0leQ5RZDHj8l}KZN+4Xgmtd) ztcaDF-jAuN*hv%C)`W=Uwl|@+I1a^ccR`S=Qh$NjjLQ4)?^(}B2Jiff$Z(-wN+$9V zxee4r3M~M9SixwiorHl!M=8GEglS4YGz`8->t9;75Af01>X{nP#qgD$--+={O5&=9 z*><_?;Y>BH49C=t|FO%2KuxsvVr{R$9X(~cPN`u@J|%RBu*vIS(MO;}ic&MFrNWBb zk<{#11y$veZ(8&pySZ|gl~&oDz+Gz1!4r3&EB+m0Nm;Na)(;R(v_GI2s%FTDnOcoyI`C+C zBWIDVHG<5^Yt{2!Gj(_sx)(U?`c72_TWtw+GAX&PZO~ac`os!79RVaCG{)#PKEs&k zOR&-KhPg(0wfL@NW)wCbw6DRQ>O31*(+@@h%zKNxK^!Q~+RHJOno1j(0jC^U@7+o* zj?`#nka{}Zbd1>i{1AJY3rkxIgSXO-XIq2rm<&%j_HH)xCLXWmU<(>_bp(z=(Xx3F zoT-EEiX?b*+0uCPbCJZ3i+v0eW$GctW-@dofz{RSh_OEsx*Rb>6Ekr;OsR;OF)Pm5 zq!_L3w9pxTz6eL+^?_{)$xr$v(u*gFe;wlAjp()uvgXpB5(D2=2&cHZ)%xee>Gb1)9cyvCsYaS#4)&K;1fz5_L?Da!-F>x!k8eT|u-ughZ6f(+q z8=sP03UaGxMRKsn@ma5ryq2OS$8C=+{Lx+gcH`gP79u8FPz*0a~CHUUjz^x}a#27M4$jI(i&V0)H(<_atgU%Cu4&AGxh!T!_v zY9Vs-w>LL*d*@&)=6B&hacDKzi81hfSZ>=W>-<<*BjVHOHRrCrJLyl_oU!&9HWQ)bo!phk@x}jN$G0TRDVQWpWuoYrK0bY^XgeW1?>36%-R^*a z;n|qHVoeOLLeMlj{EvqOxR;mTm1zW`>d!^o`x8dR-`fv#E-^k*2|JUnLn(BFQPa0D zX7c#m({Mx1fHl3Q*FgTP_=2E*=RJ)%w7zVZK;cgyn3Z2K61cmh9z%n9Cs^V*{UT}W z(x-m}$`*?d)5I~8m)O*OGB!Gvoo5A100W$w{YhwLE6cp&5Znq%obNdwwKE#(5F?*F zae5M-=r#1Jw)}j@HrTkj&DAkp%~^0c;BQgq(dIAipQtde;)}Z~bz$D9E_^f8QH0!# z=o`e$F3EG>qLr#R)C5*YrSoIVhbvSgwnFvY(3@ob_B@`6Fv)U&Y~6sTR^lG3r97%M zDNc;YdL+H&F>uqtnqGo5jGXL)&B%$!A*VH{W=~U!`m)jsztq`c6mV4A|G=- z-bI0OjzygR0>(Ct64P=FZ(yW`xp@N@FPjre-xIOnYjLkl(S0)kWqhjU+)?iJBD>+OPM;2a^<)MkMAE_1qvL6%Sf>KT++7#<{(% z`~e?gq+Y6C+ewYrB>I!BZEML3rMre3&JH(L&FVEL$B7X{XUw1Bnul;FWt+bbL2Tc2 z{>!W}Y7hmu?@4(+_5KKzkmdyoyKHsbJ+!j9v=qD2*BIj23Z4DH`IvY94vUx41Xfjc4}SDR*Z^j4sk^m{`AB7*+3&xgFTlXd;wVNh z0Fro|(hzedv7^QT??!um8Hi*iyvP!*y8`x**A3Ih@PcEOX{PxCwqlDL1;;We;|z&n zPdIaKHB`|wUTa(xeB!X|dz1`A+_vJ0UL+r}eWXG0i{e9;wq8KHH)CDYcF}Lz{r-$i zjImQ#S6?~UDxoa~cW??aMkehjY||jz=z&F}z-Rf}fbw+wJ&XK@N$@R&VnWP_uUBde z!0w`iyLH?hpNeYXz;2SBz5aqoajasD8YJLTmjYUG4({*T>*^-=ppd^=Ad3iD- z6wj5lgY0giIU5ly?+F?c&~HLkeW^R!XW{K~1<|1Qr?!ap3rII@ab{c-aY$WXltr5_ zIL^GOWC8*Day^U41nuvUVLVU%8`;eB_W+q5857NE+1gL(KuCmmr5rJ2hKC4OpFN^GFTvQujy1mM%DpGKd{ZZVMC z!Qzhuz@*SRbs_Oi#{yZ#_SG196VA_MX}J!~`q(}ENG|0Z3-i`Qxx z744*=A()VREK^PSeAi<+Fs>U8CmO}XK(MDRJf2xFqP*5xda*OxA0$jcyR0eVY%?G`o_$%f(7A$=T z@ll<11+Do^6z85RmGUAFMHAYBQiO6LV%@{AtHFW@_o|L=FO9+(DLkgzyCL zK|%0PzFBG+!WD(F#S5{V58_gKU^1~EX_>l26|MP8rwV}hUIOkZF}L(5UJ~C*^0G{& zI^&*ZAHKTHWlt}R&Z3MAGt8E-k}U`pkH^esrOoCnb^w5EX7{e-|HoksUdCE)CVeC@ znS=VRQ!<*GgA(VrAtbnBD8rv}Xa{2S8>Gi5U{Y-TbD&a*LVt}{mu^fEDaW{y8r_E= zlp)Lbl|{%&o)_?07L5+Fe1q=w0yIqPXlJ3u3g~q!a4i*ak*3prKkxV=4A5fhc$}bZ zw`u|oh=nT zf+RaE*}jPOQfD@Q1%QfWY2C2Fgl*gMm-CF9 z6JO*7ZD1AK_Nc~!s{G@(uo3m*Ai}Z`-4ZJoSOOk{OO6G415|t+lcmMmMus5S(|*G^ zxeiE3MQ~5Rt5~nPj8I2{_y}L%;(N*Qp9FBw%$?+S#jkS%Til5xX8eFtoRr7cD22wb zV^t}Qcnzbgf#AwF1Bgf|o^37l;QkmCS&hq)%Q*^lOUUvf>2?kTj#&JzhTBJXsu<|b z+5WNLjV^ryjsC>!6@lXSdh1?E8cczwvBk z31iO^Gh^&qBujP%GZ9fqvM)uEHCeJ`9ZSrNvXm4}Nu{C*m8I;WM4hr_FGrCq*_Yq@ zcFys)oueSbdh_iJs4PWWA4d+e#}n*f7+(l?0Gnfp=#k|y(Yr@qDt z|DnOGiP-uDXf8R&ZLt2-DX>W(P=yykX$EbD@@|ZJ%AV??rkiw2tPKJYGL0lTz$1+; zM4~vki3|nD1fWXI7(e74ZjcNzyvbx}%DU2izKorC^YU(jj?4F*>1}dG7T(<_A;a?5 znxY4$Bp=ZDKj-$OeC&E-Km?921MS7v9N1SCJmtk;3JZfq zG02e~H8EXYHXoHp88sS}n7)!o;CkDM!y>^#P_f7%bQ(GCl>c+wfnw&Y=}#GE>4evy z{R%e{A4wh6Q_}J{8HA!R`QZRoJ+D%;K&{l2y2&)6Ad;E|w)y*Q9?~0!a0Z`09O55I z!(SP{EwFD4<-VsaSSCLpuDE-jG`t$`qBs7W7?KXVa_zG_JVkx$nZmtFL4wA^T?PKw zAj(3LRxE$U@`>6@D`bucUv4-z7ov9hq%U@MeV}fFfx8R|-MHHxHiE?OCNdCW+t?xz zS7Y{90_9C~1Q3X88jTeVaZFSLBE@s}?E_C6>(Vb**GHS!%Dcy*jB)ypv94KjEq*ZS zMLWWUlFt#-A%t*Tv&^GINEV@oOp9#yS)MHvCQ*wQT#=PmNfD zCFT#rd~L%5MLU!|KiXZRDWxvZu;`c%Tqt7l;&mhvq0&XF%bav1UeUOF&$P2k07aKzjPOJ^0ryRoa-f_xJ#`X?VXi~wfSugpQ;C{*A(|n3 zWve>@&p(Dl$oQWT>ilV9tuw72!`ZVaJC!MNK;C2tNlOA7U@4+}gw6<^I)iR2B&Non z;f64a^{=cr-Fg+j&)zH@_NcZGKeDsOSp#R8*`V>~hFFIvaO@*~B_oI%Y2!JlvNy$_ z04LOB%j{CIpI7Qd4OqBppU5PtVhWaiULC$*>WJ~N0cSg7?ujTk5Ec=azG{A%K;b56 zCMpo_W5SuX_1wD)`*_@-(SSFS`0ac*E#(?`9x_cKO@*>9)4h8_D*r~1a(#HpHfYpaW4qu>|`i|O- zKVp{gngV4`Xx9}8^c;pg{+HiZ*~Ml_y4iMSZ*I*@?b;&-M$>6=C!c=^FB=Jfm<)5{3OqJK)B@%Dr@L$~}oWhmZ0}_DTpdUFJ8Wadb=a zSjElePX{B|V^!?zCekKrBw4n+i!^jOK zb|BTXz9qdOZbUU?5ff@CeAd?Xu zr6(6Jw8sB4K4%$)7|I(d7xv)UPryLz$Zy1o_K7prZ{v+wpEa+Ncuc~c?kt!tRhP4( zem4uuP`{55zC|w#6CTaMV3xF2h{xgL7@B+r*DRD@G!6wP2v+QBG@zCe;w(A)7$xgL z=G|y2*<1*t{foxW4^KR);@?L+4f2BA;)h-0!i5@AKB+TsfPOvo61y@R{rlzYCVAn| zk8^e=ufj7VSyRCJ;S{GRLi|t>+DPK5oxT~;O%$|#`s7|ndhv#~(tY7q6a}&hArs$W z`kK|y&ghWaCH$|um9kBp>gIePspG$xGeLkt)klU`cx<20-8Hey|-m|$0tt*qJLQdo5c7UGZ zHlcB@_9Ea+Yhq--!`qKFLELHbpQma}Qnbo@3CR(93_ggKdGH9i0JJcbJ866VK+9>5 z&P?@K(^(AF12iUfH4ztHf!M_<+XU|}YP>Hc6jglas;nDuHqKQNhwzsh<9p^o+78r# zsJS3gJ_9Kh?>H*>&wlJbojoL@O&+g;?44J!L|Zwwcv2f;qk}6z9Om}L&oQJ+hz{ta zd~7HDIeyNC!Yu40#yYOx`Dkl>!oV$Rowm>cplhZC{U$)$FHCvq4yPkcHLhq9a*eAG zXTZt)0{=Fb3;fW}kUSd@@1KR0zdR=M3DgyRA7xK@!T?D#a~{U~&J177J@tY2ddQK@ zTAmlx0_6~^~$hh*HL;+G?O0580%VJ znUAtc?2xb?b9X0~5wc9R{2_WvBF)~?aLpqn27C33QO~`eiXQIm_ZI*6zg0T$HoL_! z>W*>}`QScWq>1=jXed|=R%u3TCr8sEKH3|W+e-U5 z!Cb^8Jy3Dyuwv=&P0(0(oFWZDN}n>ILZluuo+(1uVd50~E>3a;Gr2vDgiZag|wHs}09kstVAbr!;w_c8>D)2^6fMV+U-eQPo(JJV zPh!C0afdjA#U2mkBuU0{CCOS&F|7}LB&2k*B`fUm)nm@_(Bt=)3p5)}1p)ncLo2YT zc1!hKmYd6vO- z2=6ni5-2&rRRcTD)`|C9OLbd+(k4c%ytn@)fy?$RVQn<2)u`+iqhQbu&Atn%%OkK} zT?mYiV=LN4l!7Py6kw~9ipFsQEJcV=H%oPllUdhOfcgy?B1=dJcb#?`5n01=ewqjc zIWEz&McXZ|e)EK@lHW2^N!dlz$d6YG$FzB8Vc<4s>U;Gi6V9j-pcv zIxr~rDv4i6De{8Gm$E_joX>wNR-n7CdRoIne6xq7b)~0eoy3B}t(M(R5G|=G)Bk+; z#5!_xf!M3P;{4aMAP-+`?6D{C3Q@Qx%JYW;&zC`_pbm&p8#c(W-Q4>JBs`CH(&~NlFpBpQWp0j-wgEUgqht#=yN|WchnJ6gl*wqc4H*!rn-;EgPt!iq z@fB`m$T}CY8!h47C*(skH#z1eVZMkf;b5aC9HGgLON<*j-*^=3H&vJ{UJgkQ%aKM{ zVPj#U2WttUC2x`^<>+3-$#riKe3g#ej{P(FQAU2;pfzuQab@Ver!jEYIDkpEA)?w< z(Zh1AjPwaplQ~{{`?w!^U=XHPa#&smoc?25Igz*J_4)-pVrQn*)NW^WHwJjNm45fKh@ z-turwm!NF)*MFP%o21~4Mv~k$CIwry=<||t`@Gp?izK@9$y%rb-b^V|DX1XWeH%K2he^Q9%rBX8|~PA@rUnh0Jt^W!$uT3mHXP*r+DG zzv>w>#~`Yq46aNC#VrFt!%-8|y~C0z`RNk070h?WwF$_Y4j}wA>)R2mNK|COwvn6n zvoB<3mJ=q}rB%kxD`b5zU+Vri5ayLUR_R5oW< zAu~;`Gm%{YU@pEu*0tYAYgl~(TlC;RkIOjzf3zM6B&_#X0JyVyz)d_PBY-3~FUdJ)eK1WuVT(lfG$atU3+r+qDvA*Fv3!-9P~4w}u8NU@_R#s;bQ(=4!0E==eL zj^eEi`Hk@s`9A|Pj>3(rGnT&p5lDceGvWu*e7wXqdTg}>W6rLZC^o+U6TKrJV15E@4yIq+B-zKUd4~UVL)y4-bJ{a zPSbKQpk4}wK6JQ*C`niu7F1t#_h(-K3M;@5C&Vzu(@i9oy5Hs8ml6#e$kJjN+|Tps z>b9>?#|Rhk>N>XNLqKonmMJ{s+mXe@HVch_^Z0sDxrhI>anKxsq^5#Hf}Cwv2mypZ z+Fgtg^m~3XpnXJIqxam%Mex;@ld0eNyNWII+`E|lJ`aXZ?6uDN7S#u~^z04)zEi=L zScZKCY=1?+sW^$$$po`6!_!z_exu|HQIeYm!WZM1tAQ2m1tL$+N!>@@S$(R~=kmfa z&l3*UWUTbznd*}|=(AFj{NXuGJM$;Vp6#>3Hl!8)7B{KLdy1Q?o0v_?dV5&ra!U^( zs2W89aI<=wR9QhpcrlV@1a9@f09(2VI}*PHGRuY}IT`7;Lfqt3PFx%l~eJ zHdz=3c27;{lYnJwZ4s`Ava(+uL0938Ic;u@jeIbEH4DlJ7Q+^Id~8Ib8ld zTpNy?NPhSu0EvB8*ARx}=mIEhrAM{R_~>b8bZEn=y9pM(9fKN#;_Yn!L|THKK+N;QiJ0>69w*Lw*5RZm z%$A@t&rIv^&s7QRhjIqk>fa#(0-q10G3auJhmn3gI2EG49FQ6qFhfTVOoP~6K+%35 zU~MG+JcF28nSfv}aM^tMr?WC*J0ljElt>op3`m19Ue`#}qHiPc&Tyv>nzsuf`;1+| z&RoBN8so)Xfy^FzSekWv$6>M$m5aZs7>H`r_T+cI)i|vnxe;{}WGM!rG|~5ZWE(Ic zH+#$6u<_m?-gpJ??%Ikau6|j~qj|UWu1jF0sPVQgm-0KrS1HB0i?$PUn_{+$wyp=x z`nE$yd?vXaH@Qb$mMKbv(DWDUEzjA% zi^8K)`+wU!fZsa-%GhtVTy3%RCwMMd2ME`V9UvQC&CXhZv?{HNuvvE@kAm>;dG{?H z-lozty5#}FaR)a%o$wuuw{#v!v*qpno*wjuO#vWta4J}5_W3Wlp3b~KiWnB9 zJpULDAl7I9G5#O%A%HaUnnf7JxjAQ@RC@?fpdN~QsbTi>6S}1oNS8E9j%t1l$x8E@QptO9 zi%b)w`(F7Rci@Sr+8#AUqBkL2_sNmAX4>@(G41ZVx{J?|Sat{Ku$?)4n*E)wiUWI= zq1m|^ZxNN=dlC_UW2|W=(g+sbO5IJ2g_FsHeKM{75#$*vpZA5;vxovW>{<~+!fS{Y zTw5;$Z7rK|CxjQ={Fb&Ww{l+w`Cj{?LINvyhYhF$zK=0g0$TE3C@{d+Go949@WK0r zIVJU-Jp@|}@Xe|`%(|A?+OeYE4^8NIrlA06`_w1h|HlFk!C9m#JRcev{z#ubg2vTh zoaI6{1J4CG0QgnTsYVBj?#{vTHi2zqlgTGPlC6r_ibh0ZH{oV* z3v29R>vsVt*AKMKc18G3*Jn*1~Jh{1CQfvkF8d3XvmIKss0^TsbH!O>r{&BL&J_oHg}Th%v%eKZ-!ns zxT&j$w zilEN~$jq!zTYJuc`sEx@l{w2Y?p)t9@=rxAbeR`ub-Z{E4{)JywGuUZ1tvkfV-Xt} zxqb0{CxJGCa}32qe1#;&x5x4?A@N&fyUT6Q5~DziUM=$pquTY7)QC?FBB-QD83l%< z$czwcbv- zh60U3QCot%zL%aBHr4Ri)NUolL+-?@^~SMc0U!F6OxB$MJNzlT>9^&*sN-OOou&%5 zoWpXd0bSxBb6Cfcxy}Bv`X?3+K^!io>%lr~g$pajALO+@C0=62^X|I5b+fm;5H))H zc6^v9eG$Hx$1%5#xr|4i2PH|#_qsgXCS_TO&F@QMtD^mB zZ?ts}@JXeJVd*0S@t1K`;c~`85^9g~q_hIMD*=aRZPZUKKu&qM9ahd6VnQIWWROuw zmX!K8;^d;k@6>2`r7Tyix3vU?<$M*Waw2-`gOLc}K;cMi)k7|_7^`N468SCjW{tWUJ+gL5^`5#kn= z*}4yEk%J{!Xqw{tOL=@Qrcd!7Cf@^r=7F58JwxH8ADR5Rhz3Y@Cdcm44`b|KBoBs8 z{oO(ii#?};bBCCfJOeaG*%b_T*{$M>5~p9C1!$e4ze76#RcIjoYzVu~vgQZCbkr@W zZ%=?Ba3h|{@Ur*iC&d6^^@l}*6hlkr;PHR@`WNC)9rt{!0IMuP^gl!k^h*KH0^%Aq zG)r{1JVL%%H;o};Ih~ONK1GMZzhBS0iKpz)f|LoNQ!hiO&mzi<2}@f?GI|MM_a3NKRpT;$m&-kl_End=HWVLsBNxnz*w zZcFHu02FU}(ub0-*rG)mUI6}oxd(EqywapKe0zq~_8U)uc-$LKPSfjK*-IHA8jGq9 zMyVz*Ae1LcM|xIm&~-=}qe<9>zdfg*Ey1)b(XNBa3A5vSEQlC+a3UN6*RVnyby11YRhf<*!wcS!tHN@orzC~ zi^iKw%J(2Idk7M_^L}drra>Tt6$N0_lG7ibp>0T)o~HOKznW6Z(WV@OOap&_W1fSW z6raDo%lD$;s;6#j&qc`2eswb3po#OM|l=cRmf0vg@Y;ADa*N{=+6Dk7-6JV zp#nTE4b2hEQVz$mM0((Rd8)^aDY|@{Q%}iL6AEDFdtiQ)S$n1E>gJ0*nX~a2wvbIt zP%u0LwVT9+{_}xa>5;g6%qm8Gf1Oe7ne*~1){Q!dx&f30Zzs0WEw+)A(bm7y|ADaK zLTF7}qg(IY=Nc=-B{vM6dmZ|aJMLe6UEzeXN&tpLJC=~nZw1z~EmC@HBa$dCf!&8? zw8ce1+$t}#QePX^2-|t23RRd~@s{=mGv8ITLReq@`J{l5L`&^hfYTbOL76D=#U0=R zzlzsg!ugZ$7Mp7MxThD%8{StU07ZRCCSrS#E&$Nb;sr;~v>MaRKyIoK4%1pG9JA3T z`d6gMl?DLJAY8FytC*^LBhOY+RBEFkZ#sU?5qbl7>ZVT%h$+ZTJ-exT@931dy*t+VaR=PI#SkR#~G5gnX ze;@uC(P;Gj7o`e~6&!YCWD{x2)F`H_ny*U=EXHvtgHe(X>n;mS6ynTTx&rd$#I=!a zP5`g_f2bB?PZ8GR^n-U;~rb42ub z^oVz%AdZQ;gP>qb%_o>4-sVbq<0&+QO+xmt9`^E1n}qrWFg@9>e+3_El@?Xg-`U^% z?T{{Hu_?<^%!qR?bi#E|x(D(|XS=1N?~+C}6KfI6htw$i9p8Nvkz?$}W`2pIN>sMR1p8R z2%Ypht2f0rpI35)Ma~$PiFt)nik^$q%?6ka$sKpHR|Gh#zEjQ&yf<~lQJA=NYD$LX z@0V1|EWOCk9D}&}knS)3AZAvMWr<0~A1V`NOAn={jOZtEOZ-a2Qa8z_RV*^Qke*$(kZ11>=h_ghz>4zPvT3ll~PhGuT{k^~+mds$A<^H2ON@!MMA+Ut za2_14Z~u`ko}_LgI51j1CCgZgTg$J2`Br!GOh>M&b5F5WGfT9-`PDp~i|37bUG5tR z8oFY<(mfe$*9aEG>lwU{Zkj}olwsX$Jio2ciIQ%QVZc~~p>oyy*Z$`T0<$wet%F2o zG})|QpUXKW?|!2SnvXAuvTbG*Y5K^~25^aW#m5z?@8I{F2Fxns>~|SukOneml>baQ|9R@ zV!=E&w8TG@FF?McU3n2nuBU)lFXbje6c1O)T?=?LwgypjRYGA%JY$Q#;Fs-4DeF@% z%#n?LwiC!<`m^g!@>UJ4w?k+P00d#{b;*sKG3hb=mLqL3#b?A)${9`%CO?X$H0ma{9s?%4|Ex*SoGvqbMx*}%P?%)pV7&RKHTrl-Dp=d5+tg9GL)tQts_6{IIbwrzfd@WmKzfGVceB;wAIWe>~mA?P|@0pJk zdABgf6<7{U1&&H3vRjM3t zhlH2YJ>qpJ;cJ@|C!TR)hRL3X&NVMPkLSry;!G{3kd&&HQ;mj;+&JNkV))&6N`G~^ z4YsV!wE>m3dh7z)4S0#Pg4Ol|-n=Em^|ZT*V#Wzfw9~wF@cE5%w8GIN_Fr5G)x{te zK?sHZG;gP7T`r#@z-L3Dwxjr@2z%c<>6$ITHX?Wgd}N>3ap=!!vMS>~v&3B{>}4i0 zEA~msBz@r}k}66`m-q=_cPyoNz?3)Xf@D5z)`0x0^Hfa+Xe29{^aaMR?O@okgNQde zHZI5f9?mS8wasQ*Ox}Dpg0myrYggZ#XjxX#-U$!7B91e2{BZ|WW;q578M8E;vu4Hq zgy)3IA=2YG{O;~N0`C=Rq`ygWt1IKmu@ePMa(+fHuM&hEq$KGIZPH#y>swBO4+Da^ z!@%wGpsq78c5Ekh7)sP8`ehxVv9k(?{kb@t{g9mJo5 z-I}UMfH&;FuL~~C5pN0YF9=BIpczm@efDRfIyE{S<2D%G$S?TZOIsahpTGgQxk*^( z!>S_#1AM=7P!7Qmq+|#V)x!UX##woy0#*;{oM_y~%K&N1cbV(VNA}AuOMd-u_9`Us z#L?QmB24Z)67r~Tj#tMEqEAXqdJwF{Sn(QxTGgkwgJdt!A6Qua7N2{Wb=G7RtK{gz zkVZEh-RsU@dQEN-O~FJ{e(=gb&TQce17i;{8yyCy;{!^%Oz(N))Y&Q zcP;AHGn7=Y>b7QK!?gs_1gdW~r7Uy7uv>$NvA0g^F?leJwY3z;)HZ1v8|B*558vR+ zoAZ!riEu4sQ~Kf)ocU=LzN(dV)?6k@$7h`T&D}Q}b>+*3-!Hzmx9oReHq5x}yCud% zY=)*r3y+8qyjG(D^WjE=jO5G9$-^o@^}1Y|O;lk#2U?s=KR8ji{uAK{sf-@596B4q z!1<*3EwUzjw1#ug2O0<~(hd>4@}>8?&;kyPinJNYQS8`Mo!Pq2$od|Ql`dfjSJC!9 znLKQUsRojHvj*77u<4X(vOjIZ8e1~6aSu%CMZ724zR_Iso6v08%*1@ z(^GiE!o8ZdceK<<_i2F;A&ME`mck0dbW*7*#V`$pi=4!>D6HED`DKXS{qxg^^%3b< zdYO^JIZQckbF{>b2)acf!HxH!&xKCM`_Q~s>;FL{42&X! z*?UW_X*2a7?7slvt-8dlx^D;Xvnu7Qpf^=34cAS2@aq=W!<67DE6OAI(WPn+E+t^q zUACbH8*l+^Q=1sPW&H9-P$>v?$d;c6oQ=;KaffV$BbCrrCbD;O4I@vcKEMUR%3|=> z8brDrY>kQaOdRK>dstpCVC8=SX}?~ez_VKJMH+0`xarZm4R_*Y$7^{Gl8e#VUo^Yl zXZvY%o0<<=;9emZpi}~~emH~v%=#A~dwxCR2Ck7t8MpWT0jyvOkv1CZ^~3LMFzsPd zh34dOqY7rypWUkoQwJIw!irw;UoL9`nxiHwXirS;+9hW zP8(0Qd>_b^!p@e}I0W9)p-PWtCEn_ujKo%Xlr>Ws_epNTD``$t8Fw@Efn`Y_F4vD* zUC#d-viBAPg>qk&+sD3c>juW5KG5*-&T?r8{jq^Evs zC+zqQGkwn$2DrCnPFVLN|5zd60pmMRt)3}HPYv%2L%0v9(>wc{=d@E|aa%TGrj56E zh|&e4f$p3FXA>Qq{PK#Ol6JXZqWuc-p9NLTKZ!qVZEaM@vc#t&^S66A`Ag->sc7?Z z_TNjmZ|L*bMjKqR{dte%9j(Ephpyng6_#O+dzF6@*3XzB?^ndM$B=pR0lDbY_z(uB~ z8_KAryzoCeye!Ufg7DDHmeaxE7W6U|l)u%mn3G56m)%eNboP6-Sd5Qq^gv)s;`BYUBX?!O+qoi-)*e*!d(N%wd8a8ngRkqSW5TaZ+} z@}-r4R8tpUfOvo9ktGx-`K|1FCg9JA^CKk$dtpTFZk)xo$@@ESZhtgt_z#1xz{y|e z`mx60jrJ^=OpYA>U{qn8U>IFM3Zvxna~L*!bJ`q}zf%7v`UcAYST1x1rBFOA#4A5~Pz1 zPx`i&f>=@8UF|8#ystS+rvg1i8A!Iww%>gwa;ypn?I){Z&%sO{3V{ldMd#tI=8eu- z!*lWHF$LRq$MI~vg!q9mes?5NOlp&jM_OwaVx^FH2Jtu||7Ha6@ZcA({afw`LK4nV z7qm!M1a<>M!A&EMLp8aL?^GCgj%ZsZ*SlSj>tQ=mh6s`td3 zSD9xy8t6EaXs`o@=H!G)pcsh9inL71-_d%>jG-CL zZp5NFQ$yY$3J+!GI|RNRJlW(|sQo~~{8Up~<1MA%Q9Z!dmE(6+V;IpzRc_%@GN;pU zwT~>fu-_;Nw%z&O{>@{l3&*m+q_wJH6eqAIv!*vD-(*kKBa--&8#YZC{oF@n28|xA z{BGdZYfI1W8QC%U`|~OPKV`$nfqYDZc>+XjYxd^XmFD9an0EeM!{;*!=f~2RB(Dz; zpjkI7(cO~2RYS3_gFFfv*0Zzg(uI%}so1vMshcF|PhPDpwD$hyGx$=t;`?RElcKXIJMpTX@r%K)gn&8%&oX3G)krPtz4p zfR6H(%Z|iRzBW$~V%s)W1k?VAl-wlnq#Tv#?S!`S$&}-`hjKQ50w8qt@1~ytGyRm; z@LXrc#HgHXREoUEycSQNuqb(m_~Kh&@GG#wN`@K;oNR|JD{8>wR31oWJLP z`_30K9{0fuvj4xBXCoJ)>n@r^Y5@_ax?pX`ymIw#W1)4V*3xecl_OhA-Ip+Ia!9~s zJ_;|*Td8IGU2wA0;u)j!F3%eDx6CI@KK^heJJX~Kzrz)RzzSjRd_G>63<#D;is8m{ zPR~QUZwTK=xnUm539IC`%GQ!2rimS-sMT1|gBc46Wx&apPY}1(W6dTWF$E#$s;if%1ZuOM&xx4k8F?S#dWx6#!WMk&_+l~y9C)^Q2yNA` zGytgU4?O(ES?-g3JT8ElP&kPtxQhmmmmU2cY+tkK+vq$c=78zH14qL07QS{I?Zyte z^h-uM%F3aXd}Az{xC2piGK#l(AsWdv<(I7=0T?M6HD;f-V0tr67&WSXbZ6|jVc(c! zoXcoqEkgdEOZ_`JmWUlf6a^`<)sL%d2ku$j{81-?lcSPMj4r&rDwn)bhdxjOe`~fm zmu|sMhFR>^8#rXAKs0zbOAB>q`4%0Ee#FGMKH!2{shBcY46XH|_cpdusdt zb7cZ3O+O@B8!>SdWK=`QxWp^s0jr;?`3s)i-*H=BN*(8r`1I0fO0w3yC}3Fzf1CpK zJB1qp)K1Uv7=}wJS7cfq;e~#{l*|UvZ-0IR7g6;4ZrTMnaV7SYGF%y#+#XR->O2 zNfGoOsppv!q*g@WWL<{2oT;v!+E2Sfu}nf&A*Vkk%m8u%zLmJ*6uJ-ofy>AFm?^at z8f??@&X!&BBoli+QhG-@q#jKgroQlmYso30_A! z$-giG!I};#+aUe%nJr~I=6BmNggcX1>6PYF><%nB^2g@y}##oT=V{R zMb^4oBG~GkUy;Q+2k(}a3@b0(G&ob5=)h>=DCh5Ef|?vRh$K2pC^F%~uS4HuuFy`| z9z@8YJhzuE^$#%Le`rQjC&B~CG7|17xYu94=J8`@i)@W-jj0|a95(D0c9%#zf;V(7 zM&>-1GwkvtQTmeU-$sH+i1Z^^-PoQqA)X+BcK_6wIwCzGGHdU0RU5qS9T8|fdMGJf zfN(4U2?9U5#m#mc#IwJ*OxU?bhY;D-$lk+z!;CEt)?|zv5o`*5dCN1`n{*+<2 z7~~4YB#5uPZh4I`mIMGi5NMSC!V)}mddIIZALeDN$stX_Wl` z@o)U6Lx1J%KjQ!t^~TTJlx1-wiZJ_oSJRy+HSvYapmW7B_cLEv?axRx@||6#xWNEs(n0l3$>H4yJXyfuiTA*v?sT;q4%5 z?BEd&SA_Iug#_!iGl~_abl(i4d?FM?F8gPw}uesy2f+dB!Aw0zK5wqzi|aX( zcC|H;#`PFFg%S_;{XTtQs-2{|?oZ|Z_-X?~RI`%2z%8OKd;aJ%!q%95V%Qbmy(;LJ z*C1Q|uAS}N=%0-k5mH9ea^^g10pjrE$ln&{neZ8VGIqStRyjklzyE#-iNpI(J_HI|&T4g- zr-49~Oo_+tHRenSWIaMNMM9pOQQVtJjbe>#wv*nfph0HQYs_sdQ7jbfw2k-N!`@2L zZVg6|G>#x}0Y3cjC``=fE}&%v2l^dxQwThNT5IRaP>5Q~z#wC!Z z`?x){s48QT)ynE{&d6+!liqAl53qgklb#y&apJP)3Ftf5e!&Zx^MQSj4cnWv&>J{u zmY9YaYyk@+1N9v!@wv{mnZ;Sz2?WZ?Q)%Ys+#G&lD}INq!m=}&2qKe(ie%mQ!z;;r zjTmPGhwz<_&=sI8{y|#!4e!bLdbXxnxXi-c`F>ME--24}8Aw-pkDqY5_Go=q-k;T@ zG;3;0qOxGIn$ZUyKOfK0eD%@n9+@#bs-1uN#Z%*#T3N7akRE4*&CxD zI%PkUnIX7%f+m17#C=7$z;a%Pn_0Cfd-81ve5SQ4@SE!q$+K$W7@}%{!;VT=8W5Tm zF@22J;q#Hz{((iR^60)G6_oL7MKti@&Dk_X_ImQz`yS<(9=JA9m3w%)Xz|0j``(!50ol=0XNHv&PMuM4sU6@5BPk=&yh_Ex`Gdw3jllkH1bo7l zEXU@X{16G^DAA`aA0eX;q%8*NTGv|3+iIb&?UoA!&(WZju)R{p&l*rxs$9n^*cuj= zs+7*!+lb*#V6M(aZ6=LI*fsoY-7-r`J`46O%i<_^NJ+i@J9iYF+X?D{*t^w7v5$od7YfVK;ob;9s*UvuqX=siv>`m?z22aVU=x|%aOMm@A(u=60cyL(QD!k%=}ahP;&$( z+pZio=8J8KG;Iea$&ZxxarEYVF4ZgQVzletj5g=t#9w@`GqZeUp%}^NQ?Tq~o>x_v zD4{K5mJvIM(c9r5hSCefCL@ScHz7bZ2V+F{gvnd?s@qZ0am-k}qLDFgT`m7$oD&!_Txuq*oJPrfq6Z`iAnzK~7+g+-B~3PF!!^&+;SO7YtI z&m=%~cCq|bFMzjQv?PSbWbs z&>XbUU|mcs30AxIU3R}s+p&9=!t#_tGF4li9g}A)Pvb2*f(vF65FulV)NsN_kKqrt z9O*9Ex?r$T7nS{WuxIRg^wNdWbI+2W*FOKeR5P?zIuRYy*_OgSM7l~NeFc!uS^aPa zOopYtWX*1au}G1?m7XrW5`#p_)7;fYkYr#kVl z8c!nyy4YiA&HcY9-q#)Wm zg?p@~-}2y5ePr6Fl!R(<@aiBYry8Q_8(;vwKarVWJ&(JIi8=uZ2BwwpXKR_#zqY*I zQg!)v%g@(wI|Zf4@^62>u8P|s>wc6ZWpe@+)KU91OK>`l1S1BY#K>TPxf=c(O@bXu z+n{He8XNz%aGaX3hl{FO2i^WhY|k&?jDC>ia7KHsE~V> zH4_I3*FM^^mpCBlaUg753@;@-d;!5DPE&hh4bVz`Nc^bvjC+Skw8gu?q#f~=ghMj6s$Xg**-Fp)2yY_l$B-L5(+7zm zQY_?<6SQ&rWYxT}P%xkK{8g`C2BO7XO1zDPSw2~1;S6eiE_x(X&~7OnFX#ku0E z5U{u`mZF*|IyQ0g%*}6WBHa>cX4D()q#o2(T%&>Q{gb*0%RaS15lh6FagDd=#T zYf1!>;_jvIaDXIj_wyb0jB{YikpAdu2t&&s2l)@##{Cpr`036Vb)HP9N6WnW$yGgSS=GWJEAr%0}?;m+1 z6>C3=0Dws*_)o$R&Qtl= zl8vM?wTp0vK6Ovvbc7m&mZ(UhCC@MuTJ!k`k9|SO0@@sdUR4FV;XPdAZ|!NIWJF9j zDlaWI+qH6csh&p;T`${=sPEk1$-1oapb97;CCH!AuX9aD>+S37sr0`kV=O5V{NCez zec0tGbDeRh)v7{uR@=jRxbL(6$2ir7^A@Z1SWj~?IL4MmdHrqjMCbjsGpL5Jui!b&7`+e)!SdB;D@I8lcYa+^ z{|U|exymtLgmUh*hBAESEW)My8CU{!ffletLiufxj$f#A87T?rQ?q{#4Y?Me2Q z*-KxP(%YXcc$q|VJKvH|TH&66xUAeY!YZF}zAVJuWVxtN?rjZ5&PXZB0z_+XvfYpN ze~H7>6YXLMqPP#>iD`KJ@`t>2$aR1!InMImp*SvIgjoXVFqmboL~4969Q}j zEl*3t&r&7Wnfz7rg?|rd=X~H5w$TN6Rxr&GoEXX{f-beNZ&&y| zW4%MGFdYk*5_D5^%Sd7+9Yf+Om)8qH6T(&+2W19(Dwfj1TR{!LSCOfWNi)f{#%@r^ z4{&YEyjv&|&lb{86@7&aPKW^i>nJQc#_iU88z9raI9lMu75v{$+(OR1N?Rxm!o7BA z{)yQ_;vYTNliNE-ZGj73SOLGpEXSv|Yg+pm1qKF8ca^BQ2QQ+TY)!;C=(#>Jg*j zjLa?iaa@ed-3zn0o7;^7inhmm?pVotpDlc@KE~;O;`Cdi)-;4!s!W>DA~iM2B=`;9 zK?Y8D2K{rG=R$#L6Z{WHPb(Ten1U(i(yzpEi->({QRJt|`PaLYz7e&gudt0|dgPmO zvO1?b`R*E>g#+|jVLuwn@!p9PgGgX+`B&MYO^?9^g)I$%F%Fzt-{<)ri^5L#`G48z z##X>AAGZMC_ z77NgCO@qfbNL3^3mg#!n@^3e!WuwvvC-4w~J{hqsd(XubA6GBQrSJGQv$Ap3ICXg2 zUVOHJl51=c)^{~%qTzX0Z$b@~10<}}*APdUjW#2J zHgejDZ$u!hDMXvi!qTCcdye)cjd(ZB0qs1`I8t7C!WQBwHp*|M5L$zByvs;k}R1pg9u&d3^17WRr=4QT*cWWF=epfah`bI_C4+HEWA!c`vJHII8JnR0Df8umq_$4 zBN4tXo%d)n=F%|Y7QS_CK!nb2l`_z_QR?*S^Na%h&px(zqdr#{!1pg`r?d)gAxB2t zY1i5YV@zY+*t=kOvkv^$W}b`z6@Mih$w}L@kkkM2WzHu^QzuZJgwq_hHwe4j#WkYW zmlKA*&0Q_JWxLgZY;fH|nlzz4Nkq8oU!p|b)xCQ%7N@KaVjg7%(_mX?_nwOcxjVV@ zpu@FS7pNt^D*SzAN5VkLhvT4bL2~Ypbe4e|ve>IgsKh>m%#4U50%YfuUj^EzEM0v# z`#d{!=hIY#Z-Y* zLTf}^^B=LMQ%^lwxU8p4SaDKhd^a49xYpSGC%m09s7#(Yrb&O`84Gq^X-!*bsl~og zs4e^&3`&ZnGrtoD&yzu#?xxjRMCR@=T zJq(K<40{DrsL2nDBHfu*>qo-rAVyOckP(L}&Et42S`^?R&k8=7 zx4YnMZS{$oY>8u{D>a#Dgj9uY!)Yyn|5B>G&>|0 z#M12ouHk8b1h|)uqIhtdfn3Ip;QxWF(OkZvpmrt1HtS-)T`%enf=wF7f0;L0-6b{e z4`@-i&^w>-wtIlvr3|nS`?2OLHG}~u+H8lUfF>RD46)fp9L=D6*K!Q}m`5Sl zW;^1fiu`MWmAh+jr?X;Di;DF1ZX&=Z%Mh0;dB3bbu$WaUg zwJR~Z7}NIHSHEUN2}a`AX63rA*F82(6e1ey(6cHbo8Xnt)0Re((?cQNvKNlB(%@?- ztn~J=FCDtN{y)qaYnrbyCX=7r^8hvNF=Ut4ZHO}tLyf98$fK-LOazj)^V~7TxB$dG z`C`Gm-wLn8&ds!oYvGuJL(ggH!bGl$D|T;?(9`0j-J%*Di4rtC?I7+iB|ni7O=a$HoHeeO>^F-L_Pg0T*a#*~&CLTPc8`s5yULY`hX|SkZA9TWCYZwC z7Pm2t2q@{q3@@7RxR~cBS}GGMl#Z0mI{Wp(3EgCR}twR|EetfHu zwr&|xdQI-e*g3Io2|(z_(VbnRIqu==caKvBjd^ZO%)=<%3w!%%sY6!@WQH^W1wmEY z39zc@Qc^3dkaUlWb?T9ulFv@1=6yY?5nRC#m`S^V*yT;xoMkd@sCm6b23l{-c|=?( zTw99OM>}PFe%;!i-jr?vAVdXl9{uq7|1I~p^&m8>z~;FS+6UoJ8M$LRa^80l%?Uz+ zwG(kK@uIAM=>BGm>4K;RpZ!;ky{(mU=je+L*2QcD4xV|0*eW<;25hO{&CjCQC>@ej z6p=7++MI-f&y89Xo63uE>h2gTtnR2pw}hrt0y_pvfx*1#am}KGL9voct!`ULD1bkL z{~ud#9u8&y|NUFD%a$c#j6upCA^SdqQrbjOwkS&|k)4sT&!CX4Wu&e)%VddAjV)WW zShGjUPIlvdoqfK)&-cEM>-WcX9M>P$aa?uIdA{GT<@tO(|2_P{Y7wxkRsxZ*^7|QQ zBW-z?bJfjMOrR2Am&08{NHUUoY&S>mF2f%tHhfb1Y(lXdQYR8mNlbKOjUzb`*mzOd z+9ph-X21k8zZ!wBckpjLGpE)P_PDn~hHULN;0!a@HhbAxxH%QiA(NXtViwFq1-|c| z!ba?uG`ZFC6dZ7VT6=Je3%Av}5b$h@E5>KsAuQ$YIQayc-RuZZVV=T)(86CI$W8f@ zB!f7$fSi$$0BBvOCQT%?WwYn@aPqj+L(z{+&_ei*r1*Cr*0IS&L?TR?KRQ)8ZOir{ z@;vsJbaNM3k|pKCmTI10B9%SoWM1GXo6wH!a@4Z#hqJ7)q4~w0~N3H@k z(@;uOe>!Su#g3(DTXC`4!jHZrU?{2js|V0AXWuqedVfDs1&#Uzy+=o78&!vl9e#-M zD8$`jtsslc0AMs1?>*NKDJ}NzJq}dP?w=%>2zb?l%#Vqs_C^ zt~Hs1G*(7A%JQR5og8sJ@N04W=h6MUT^Oa>4DO!*R}1ws0agrGVM1;5(VCSK5IXa^ z`}~$Mo$=O{fr{dUa7sgh1}>GV-6zv2lPRiTjvGVY;Sk{=p-TC9JdU=}w7q&AM2p8? zg|0}*W_`CCcph{_%P@p&#E15p#fDZxsqxm`B>t?OD>I&hPXlD3d3vG;sVXbZ?74}5 zpq{uH6s`6W@saXZ5`!PHF_}@N`vk3Xk9_?rBd1$bi%Uq%#XL1r1xaCkf*!#cQxpF) z>bkXwHeS2^QtPUFEqH6CUuUjVk3z1{VWz9W*Y=^8GTjWaOQC zexap=h&NT1Zvx=Zn9OrMJh4J~O)sMoH?GFFgCK`8bV+{#9i}=rGRry%X@8+!Sa#C6YXd0CF);Y1 zTuPR-c}I+X7zeL^FCu1fR(G<1$+kk*$RC-Y7l=Ux_~Ylu?<=V5$=AE!a)7xdl`V=W zLEb_%(KK){+vaTU zv;n7be0kxcYspN8qxoI*$-BLnJr2h6R6sp%ZM*;E<3w3Tzbc@Nb#3dmWY<2~6YQSU zi`z+CyvzO69@Q zU`npXj>GtQ>DzeDYL7m8`%mKKo}H|6ro{o6^JNjqvGeAsgCJkN*m?JSla?k{alBNw zi!Mk}N4C#qNzAn2-2ltN928pf-S@sYQ}q@2_>8E0=U+hy(b147!oMd03o{LYf8UnL z6Yw$LtQK*3I=W)q`DT(E}8Da{5Bx+cS)mOE18l;`RN_*Ycx;R%Gz3_w73nCd0lD zK<=0I<3~sLzcB1w#c6Lh>eDWfxFv#-J`TaOU4?mO!VS_uLrvKB1}%u$*#PtLY%7Pm z^|7b{k;^%}vq$;jkcf>rZPxG{XOGxiaBpUO)pCSRwGdCptW2>-*lGtVkvX)c8{zZ)lo}^_QlP{WI+XV4Gxb85M|i+yV{@UnG+kamN$<_yJA8EOw)nDk ztYKXL>Pv^WeXc!-k#RK|ImyaX8auGqZ)h(Dl|@KfYx&g3hgQMd@S85)`OJ{C47Q>E zTdMn>I)Pqfb%|L)0%w@Ci#KsW%r~Rh1!fFkI_7AkxtKB5OTh#VWr;oq)MbWvMs=uqAh4MU!P?lghFIlrmqn{|4xftOQ7lCHvSP0#+azu!yV+5VelWmZ zj^!3FVH}b#e;I~sO{(7&NW_^xcNhX(Re5PBcw4FqJgOH! zfl@giyB6zWI#LczoZ_qW{U?kRM$w${%akQ#S{YhQv$UVLl-8b!vI*aO+tD!Os(trp z(bB7$Hb229o||O~<@+RRJu5B0yuRAswvkO|JNvHIj!vR)>Gj*8Ln(LM_1YB`Z)Sx1 ztZoFAZDrjHSXqyGVf$6^%%+;I6h2GT&h9!9AF z*R{=Oyx4%a;^QG{8n*?8c`g%jJ*GV>@w9QH^%O|b zi<$~x9#96#&3u-8|6_c-i!e(y{MQjo2pok;>kW}Hut6{Hew7cy#VQ!vDdeGalLhZ$ z!=cz)Eh~WCBd+iA=R4S=10=7IiRUf%`E@yDvnz6j<_{T9|LoVEl zWs{x344ygo+5HSX0D>a2p=pGFZ;r=)!gN4~s?a+G9;0jtj;12=&pk>GI+7m0;T2!{ zwun8PbD4n!iLhi^|@1W>A8!=TZY+@we5*8?dXk~$G{!=9%d+V8P`O31oj zXh15PXCFmQ@`n!$>1ciagB;{q5VD!2=LpVhfv-TZAI<2OeEDT2Matd|jqpXonROSe-J5W`l72O!kHT4f{TfyOr4VGq;z6i8szlt$oGa0cj={r| zZ~pt_(>9(N|HrQd1WGPbU8ZudNi-znVD`NQL58o?&I!%J)7FqiCVz8wAaC*J{IDUC z2~aBzanK9of3W-~shva}QwG!`<5Lchl;OETpX4b7FFS3zj)`qH;==o8Z}@D^O}yw^ ze^T3KKV!J_=ITrie^~VpZ5ya~{T(kx_O-qEoD|+1{w{#XnJ&U7*yyeE*gt+ginH9U zZ7+C(YE62^QGa|uYc&Wy;M*(rt^uVXnBzwBNxl~1N#UEIY4#K9kTWo0CyUm=VV1xrVY?Y;@c?xpYC4U+A-iKY2kho?U%xE2arjjeZgA~+p;M3dSn_%W*C9w)dB!O87QfQ_pnf^)^v8E97 z^0!Seq7GlNj;|L;B`NPmpR_UwNQfO(QQ(lfFLi<#NXRi_{|b_n8Q58sK(+JqhIP6j z$46*8`oI8F?JB|i%a~=g|KX%}>A_>PuCR5FDky@Bo=-aXei?FIKkKdir`3Nt<88n7 zJc&k`-r2USuBcd*Hz?qSfMu|Air&UgHcK_b{xzzNRCq_l zJB8Or&+_zwZhy{5eO+L(DIe(W?_hK&l=^0ag1RjLOptc>Euf7FecHV{=dY}It zsA}~GvPCtN#fj7S;YhLaD_;*tydwI7Y4De`xK|q~E9>%O4az#=#dw=^%c6n1VQ<+@ z80!W=xj9DDtL?7|4VJiU%la8YFhDrU>dP>IRG@knIi(2#zbkpKE^E%b*@xD^#YYWCwVjgmG*w+YBWb0;yc%g#wipheRsEWU$oDCUkbk(tM z>v2KSvnE?aC^;4JZZr0IBRc#3Y2`(k$u>%>tIV;SOt;>1QUp?!PaELs>3t@s?is_S^%(`$c))l|T3XZ5*1BjrsrvjDsKd)P8ZZUjNWe zyOFj}v-EgW&CNCas_CW&`7?=P88X585Pee>{(ZR}rM*11V^a<-!mpV;Y{Ga0OCjc7 zX9?2hC|*TJCj-7x!^hTtZP#Z_Jm?#h@Lb#7tLLQZ$Yrr~|#e+);Z*NJ2Mr9Y`=xrj8} zOQ(6+8S)u*Rg{8569tFN=CtyfaNivZ0+SpU`0cQL&7mD22|v zten{E)BLT%*V(62#)%_-20|Y;vXA4p*vQ|D=A`;^Drp{7MJw+875&pG`fX*c62EHw z9g6#!XRQnSFYT<>W| zi=(Q-Gc0peb9z3_H|5t^&e8dzn8L~EyiP59>!LGH!B*7$B z$G=6PJn)_%WHNVo-O^SMMzR<+QL<%Mp6Afi97jSvIx z=03Jt)n!{@7JN?bZOviFo*lC>IK*Mo2K|(Ij^iPFy~F_FvCIVKE{Uh%1O~#T*3Ud2 zcHAdZeF)mxW(&=v)bX`#wNE`yx{0<}e?S4H^2mh$3qtOhKFTxO3x?C>hq0U`A_O}(j9Dp(v0t6VVF*EHZ`=+0);TS4nAs#wpVln;-8D94$pEl7;q;I@>qP-$g zvn|OvSIh9zFA@68fWg*IMv)>Q)|lt^d$crY$-TWa!m#AL(g9}CHDL^lFC@Em3szqn zyqt#}ebw;SNo&IXUo#3i-azl+cg`7p+_ErG0XQt=a6<8qCyxMCB!h0Tv3P>12x>*tj;i=mBxukza4`IR&AqE+^^BX3iJ zb|MEp)R^^OU|+$cFJumcgC|7yU2Ita=5DbP$gS0yH;w3whB@vqM!%v&j2|pHN9Xkq zDaNS4pfA?O#11Sr;VEYxj{aOtaLyMU{kmZAX?V4wfUMw*i6Za0w~^`4H451zvzywJ zdt3@A14^m#uMQbW*dUwg(0*%|VB9s=0f>!U-EIhO-E8Ynjiwr*oVZhR(_Ip5KhDkP z(KS;D2|7D;cnQ2&S4AoxomPfaqV!$D*&}ay z;iNM9C{cphWSG*=If#vMK4J7+v4JPN6G+lRG%)AQ&6F@=d&h*GbWmLB`G5U&gd>6T z7kBox&n505d&1-@g)O{g!0qR!2YTIxXUqj%9$33y!7QafG|Re?@VH@vRfCA25xzYR zGBW~cpj8fJkn3;RCVC@C<41Wd;JXNY!0fD;AVEBbeKszLQD*t{D`(TL%rh%xQa`5PcmG2iAIJ?fW;K#*rX&pZTqW zzn3?@8z}3FS4*&3vxZZGOluwn= zZEdCO(7bmv*V8fKG>b!}rKOp3;pF*5Xf{&x?Iw}*-@$f`Lk8?mU@|+m*<8Se-iK#r z6PQW)dPNgr1|6OY!A$XwWC`k3(NKXb#l)B}axZ(cBTd#io|b1K-&KmG{~_iJ>VfrQ zXn{XiT@7s$CZ=P|y800)M;xWeg%V|KR~X|>H|aet+IQ`-S|}okR2=KPttmI9^0x2f z95^ok;66EZ5tDCpYryB$mbY6|O7rXLiA_)YPpUbq5pz;5QW283Wxoy{dGX%Kt(ka4 zLd=oQihbNc@G)KE5mhmcQ?@$C;XcflMJ4R&QeNso5_kO^+_gtQ;I!Uj`9@hGnwO6E zr@ORxqDHGRu+~8S`s;6U(AlxQ=+0quaMy%x4zl~3^iASs4 z5wOM2466uV<=teUC;IZl5!czCM!h@i7lI;69f8DOrQ9K)F%m+ACBTwC>^u(@fKKlP z2q8}TYd|jUmVyuQZ$0b8l&Xu}w1pv8xv(+*ew)?vBA`WB?={>q7I<(UiCPL)x%2QJ zyPt9CMZPz?79|9ZbUYuQYVoT3(iU)HN+x_$%WpV-#_cqFrqI0H#7z+E^{y=gP3{KIMILhzHh@&SmL{aO;O$6CdI0hB-dN- z*5eP?5n`~iuvYg@#RWFM3u{@A04d+g+YrSzQx28%CCF#lJnz~3v#h;2H&)ZleW?;` z!9wrdaqSg`qPF`h*E(i`{M8W?tmhfGM5Ut9?2b*1S^{0_q&b@n{gb{Iq3PL#P`8=r2{(7N%RKi3{T zM!LAy!ae%}gd*xD2ensC>tnCIEB;7}wl!aLe6q#T^vRQj!JDq++Rrk{5fyW{6Gl)M zZUsMBl-S(6$ypn_->Pc<(~K!fCRg>kj;ZRvn;Tc(uL`G~JC6S(R_9E)^7SLQaVLI4 z>$vFh;gi>{_ILsFR`(Z6>q@FzLB=CTN`S|l7k^W}Qe94SwbT2KXp~?h8qMB(11hiUo!o{84?U1p z0XR4pn=h;LA-C2d5M>71U$l!tcat14@A+%Q*CMh+c1DUtTZSBLSv z%49uNU)EPiO^%N(OHChtIeB&XGG>-k^WI6QA%?mdEg*bAS=L*sO_*W8oNkPBirUo3 z8u363Ry|L4J_qD_vBr?CUFtvm=5iUMI&+R$?{5k>e0a%^sQh7@L(-(01k-1XhDHR|$kAR%s6`Z5D~J7?%qWsAgz@}VywTxQ`mUibPfxzh z{2LQ-`q3RJiF+I*LE6^m=|^qmE#bZGI?ZoRs~-#;bgVW0D58qH`?h5|>$a)ae6XA2 zocafP6Q-?@*xm<2t?gFh_igSM23n5_H)7-*30e>VyD}#=WwuvfiC4Ii#GNkCB#7aV zzJn&T8YI+Far&(6IJT&FwK%0j$`_6X35VU}z22UV@=af+-ug0U5m*F~UThi!ILpLJCa5zV(+Y~$|oX^uz zQJ;OiO*psj3w3$pg56}v{B270Sb?5u*sezHO}?kW?>aQYF2S@VPvBmlHpt}HA2HQ| zO1@gA2+-sZVr}IC_}~r?TQ%cn4h?lwh0@B}VV|@&wdp(q8cX@(sZA%fzX5Jh-eB*6 zga&NPk0q{`Nq>*d_lDQclK%c1OlWr97uJMbvh_Qu&gfHl0EjUORY@YN^hNn116Nr! zW(D3uXx*b!CHvKTGrG$e<1soX6gzMMKFp=hB~>M2{A{MN)s@4JZq{Gbv)AH!pR2q5 zytuRdc{-kkTkkRXQ*dD&KjVI;u6>CamDnlka~hZfnl!}X)D$g+-%6#1#YR- zbS95|P2DI3Hta7W3(YgnF5zQa1?Cx^qAMFYT?hu(nx0^)v0gg~MR!HURB(1!b@GI7 z>$P^Nw@R-+{Ugf8!zLt|LEVGj=W^J@psQci&dk+O3zAxrH^dihZ?U?N{g~q%rxfVG zZ1>Ino`y#k6@-ND#oRB>O}1u@LCVL6)>5K6a_wxgZCaTXaK@*<(`*aoZC{OEz!%5+ zVtjuO9@o5FG&hcnBq;79%@K(FrZWh-l(1Qs;ue_y{EAux2kp%-3d;jQXar#pV~nZ( zw7zTgj##61cZnAq-Z^R?w{)K_K(spkARL6@lSmRYv*P(V7ndlAxdmEXF%j^L{~6g_ zirRf!4x4twI9Q>J=I%it3%oeKjQNp5sYU3B#l+L|*l^gohf)io<9aTBeDBjb&9@o5 z?Y-|n&Xv;~$JdU%>4EmtakJK1w|9D0)vaDhO>{A`m-fNUvP?z^PR6ZIs;?p7;4oy| zC~Y``$1o3NYH!0%D`xO8qiFuPJ0RSklAn%h`i;1@tWDXyeq-%Fkh`G!V8#D65Hx4mUx^scF!~idB_x9Z4DcRa>xpC z>2qG(NYjbE-mqYNKoBSAAxG@u&K@I~$hQ|#W}e%ZzqCwZt)fi3=_em{&lMwRPGx;s zg@I*NMDuUshaS%b3u|Fdfn*7z#j@dH1f0uOxsR{}HwR1`>hw&aZlLCqfE~a30yY6_ zw1!Hqr)usyqIFsXQ{`5DV$eCw;|S>D%Te53$7}6u+oFOzf7cAPT7#7osHwulhc(%3 z&ViqzyEa!Sa|}h_HM*9pJ-gP=P=J^VOtEmWUCx{=DcYshi2PV475~@IHVpgyg~KYW zsuUBGdj}n=D@>&XP>>C`&wAq#fiP`+g10l;D0mc)k?i7UqTCdGQ5NoSjcQg_-KyA3 z+L}u>!b$3-KT|p!{4%n)Xm?x9=4zb2Vq6rNh7$JON;N}Zf>i)CJ%(M!H2ZmAR zC+?oNH)vq&%S7i$-(?~#{>_YIG15Y;ds%3LrY{;7N-mVtg1FptVbH=|_xzQl!$JHl2LamIMCs8Y;L=A9*9JC=5QnW)-e7TB~i)&zljDQ~SON{<3 zeA~wa+E3?XgP_0}A+s#8;$j;4$tk8#sZ`(D065BQM~2H+ST#x$qTf}fOh(Szmbx7c z50kfbD&~vQS9sm~5@s^L@%ahRRveJ4Tsdj+cbA~b@ZSQ46i1AYS)NCXd7eh1M_nr2 zqjx{|FgNRxkh5oHW>trMU4;-I?{$1r;&u_Dcd2LLm@c(G+bgY=tPmqfr)XO=>@(C6 z@c3M9pIhzDSLVZ}s1Oq2GqlYaE$%ybCITmc=^Dg3h?iIJV>YNxysRo5q&R!ODMIbm zVnVs4l|1V%xf>z6*M{p(ywX~vH$tJ+{j6<_hG9^$y$P+-q6xPPM-39;VgJc5zv(je z1l)I4`>B#9C~e{|6YaC&k6`wzXo!kMMWg(Q%e-|%#TSkjJDJupGx>=|q28>A(g(?7nxN6B8qVyU*8#rejFF(9IKzG~4U$I}W9lH$kJmpBBI!hrTz`VV zEC$0ePZ@L#J*4L=C)$4IXppfR@#Emz^(YGfKvhkI`9=f=o*y!6Xzw_<1Z!w_dZQfU zd;8vB7+tA~^I^ReXSn}pJV1KZA7;QtpbzHXBVIF%2tP|`ipQn})_Oz6*aza2!;f9J;9{0J?aYBHgeBVokP zbnXje4yyhhs;$kJ(hB#hRvAR|0jo~)u>6+G^n_sRhg8cwLP)8DRgm4zN_`##2LSKd zr=;CeYeh*3ibzpQNZfVF<lnDYvhmsRcYnjYi5zaaIDiFe6ZW^QVS3f>qCH?h^ z@HzSsRpOkH;d?0+;+ZyjLO8`vw(<$UQuS_=&R8t+7AZ-peEvlYWxph#6$Nf9LjIva zNjFJ9rWkFL!>LSF*QZ8PnI1~;ncDO-Z|NyqzOGs-?9@Sj5?R&L(IbvKf6-DwVh7#SxL*@;Ke9-6KxOz$SfEQP{4dT-e*#Il_9i13Y4z-Aj8KPQA3Z)uC$Lj$x+|h2YT|{8eg5)BWWK!g;$( zNX{I9M5Z@wULxXe>$H!o&61B$Kb$98vlQ!4iN_5J+R!)*W*Q?~!Ac@|_7uGX;lEyn z%P|ug2Ok~j84-)^{>aJ`5B=4TR9w>e$LBNQ~_~M9-OQ^M+L8P25Lu=Uox(%?AEP)f<&8=17MpB(ck z{rxq=j{>*~O0!9m@u@L&3v1#mZsy_I5!a6b8QLD*xGM^1)Qp-ngc~KOy#)DvwqEG1 zd!Hpqr+NSM-o&AjWddgjU%=ar$0p0+PYjwT<5paGMU~H}9u~KrmQq(!`y4T*acb1q z^O(i#Bc8puE+x4L5zt8e)cp7w=MMe{bCdOu^+g;wPzh@9bE=^0*K@pN$fwH9;cHtb zfc*tE3;U1O35F9ca4Cq$KqVqVq{|S9{PdwXMj$c5?3S3#hv9e8 z+ZAKBkB(MgxAly!`t_+XywZ3tHu@7Ow7Qs8FFesPc_LsUO`8JOUG{jB!mhLD#Remvl z4_`K?D+sokQY4ux#=Sw5X-|6^Ig|sABi;Ov#kg=md`~w}SnzX>H@==OgK3=O@*;2^ zH=|SpL#O**x71(z&ku(BZ}MPQ7BZSYUkreZXAnLlyJlh;JOFspst^-;;=^DN?rk$( z#j}w`B+>LM%?L#fuJW*SgBvJh<6}!1YfLF`PLs6;vmHsR@!wvG&_Cp1 zix?0#cmH5!e?GYpByWwMB~D7AcH!;__|Luhttcd_wNqG@yTAV8MP9=zOa^!pasy;& z^ntrYtkaoo@ld18!|CdvrL9cV+ftzE4EAM&qWMnl9ox534AhSG3MUC?k+_}*jqD0n z7$Z~0YN5;u=ilTxd+47%x5#zXcomT#9o>t^1p3a<0C8CZ;LE#I*kghRlCPaN)ay zVwh48*ykk)BW`0w6T4f`*y$GR_T?n*5Hl(yP|b5pHXr%v>XZS4yXi zgfSbpG6`#sl#2;vp^sh7I^0rSZkRol&O=ULbVxg#W#cZ_NW+aflMCWh2UTdyFG67_ z_iIS@!V=;*n0j^mfziEi{KEDF(~SkPUQKF`Fnh@r)ck^Ys@px=X=nMgPwPSyid!*P zqwy0=)?Q5^-*(Gp-{^TUN;O>lq%fjphZZUQv;pnWGlp(yi0w>5QfT#R3w4#dL$E!? zif`eA*r2{4zf|apXhnW^8p66ZxR&B1?sUC+@z{Mldjgt8K9x>})3~y~din z=q{8d*FvJl>`6DfoOfevn>B3U3t2TtDuJ0dYo|AYX7Bt6D znZn>m+$D?&zZPD-YWR=nlqaEwHKBU42^C_>X~>PiB?}m(D)By|TURb9VI4jA;=3#; zN=WRZ15wNz=QE!JM6%`TJOB2djSy>~mEL_BX4Q({B~cLMl5@0KD|e-xK%TayDEtV8 zyn~DJWpQ6{e4lu9PqL4(_qQbpyv3rh)of&as#&tWjYO7)3JY7ZD9INkA*NKEB8v9k z-_#XZ*9bCVlI^td^{-nhKj!bL=n?6x_M#ZvEPix@5-!N*CdM%sY5<*1h^)`IFS(ZF zFVjuGmH(R#QwLkJHMBC*HGELR9K;tJbJQWtG)V^Y-^$^@i1B$75>m6wN9vdt>q;x& z4)L?clc!N-sM9D#v?lyhPkvl~pC^l%nb$?p;1kZv7tat>!A~~=nu5jmJoOTGCZsiU zdWnUoamB77lV665CW=NcO|00CI=jld446IPuzAAZ5k=L-zk_+h8#-gYea+V>C@vHi z4=JU%6xxk%Fe=06Oa7AdMtL)@wu~Vno4j_Wrr3d-^V$?Pw@o4!iN1Dw#eT>fR-IEu z0v@4T*)CcuA`Mq*`8Jx~J#&x%<3r+XPGrrdSb;k#?=6rAzQLN@D#){a2tlBZr7{_% zLXeBIK9Z-#(G;n6O9wVX7NFnEvW%G4ACPDavOu+QoKTcT^vMOaur=+6jfeLLp4xqQs4PXcI{gFgt{|ltI?M(J2**77m;1R1@03Wxs}|XVM;bE zlLF&DWMA?SzgKUYR^s)ipVaK(ix`RheI&Imi&156WN)OYWQZGeRB&P(Ko8|lPZr*? zSpvb;KjY4S4>ghhZL5rkTA(;}g|pwE#HjKB@`;{aS;!D6O5&G2woK8Fj~8G^Bw*Gr z4jjL4P@!Q>;AfCa7I=YVruDNt7UZMDJz&>hy~KJ9yGJa$sS;aHi7eof={QRk?^0uU z%7AS#ZZH<(ioc4JJ}oIFIqJ*kQYU||L`dXC;W;%|YF+HotO^Ph{pciJP}QEwzv+gd?F{i3@qJ zFo~aNLMrk$(tnNzw()-DRSl}Cew^cf=$Z1zn)ksiUZB8Lgk1J%A#7%jF^)?|yqX3J zfPe=XOdsL$llaPgSz2~_jC-|_Yzo!=m_ z2kR8?E=CD7+%cFQgGQ~mHZF7^T}@O=xkklI=WhUf={)_p9DE#0WaMZ+*$>5E_Xaxw&X5wV?<{w@m8@?F=8O(WkBfa5hS3C)Pk)QcroC*=@ zq=FxC!bYt5JY~X)gJ3(b+v%+4IBa1h*sddS0)=|>TT$P_1>!Xwc$s)xOnw!Jyxg=& z^Nhbv-<*`zc%=gyC86L+(k9Jbgyi;`AwMn)jv~_p!AfNs62jYW-j|QQ+v%1W%HJaq zv8+#4WRDeK@)(K}+W@zJFN~4q z7fE)R@JR)KfX9FA02dVgr#Ygs3DUr}H5+$?^5;>(1*jVpQtumRg5NxYHW)a@wG$4Q zUe7Kvjuu(kS03k%Ulz5?7d&uk|AoGD=!YnWX#k;oraL66hcEbP-0zq=J`CogMSD60 zbKY*AB$HnT1{PlSOJi(qSYfPn$Wi$o)IWY4KY(SiQudb2SJEMA+WF5REKzENdp+&U z2Ly~U_sCO!QrKpa*xqv%%QkY*S!?qIidkBakC%h7!qJX>2wpoyH-z`R(~-0z#fC0q zCW^(fW~Pe?hqSe#89JVUe`=6DtD8Y29({#4otcH2_*8ax#t>sh9e?enLRWvjuUAI) zJagP_)@aPg!p3ee5YRUB+g2t?+s%4zaXPa7L4|W=p^i#^Dr>f=A%#5ME{C95-l{is zj?R{5@fMWV9H}&(uRR(_p3IBaxFW4i!NS|!CXfJoChvhu`=nUMx^p> z3U{M%U3;cjaIdfrF1)#}^=mU{cT~V1_(UG=PTi?kA#cyY5O8V8xq0F%x5PpN&k2cM&72|{V2}pwA+WksN+`J&Rxd12@~#*z+XvGpssJHbmMN}vGH@!g+3*ej3y1FK=f?bmqeSc9ZLKc_JBfK556RzVicH^T z^qn{9Tc3r1yLvQLo;?NEYymp-a2rR`ov2CX^Oh2pJeYN5DJESTFWh%2Iae63T^ic) z=uP@!en3)H+RGcqYPMoEyS{X5_r4=vV&1XXeRsNGSwp(ipYg2IO#6pp`0Ia;?ap*0 z9*cHwa$@Y-k4wY6;C%Y$&F_~9Q!c85+Iq%E@_J$iT55RN8GbMDZLZ~Fv+UzrWBp;; z!CY;6xEVQ&oL;3dB~(}Jaxs+i|9$JvuXQK7iEjw<2b#NoLkVddUF|1%eF;sX|>%D}A%P-qZA5=4XcAxd^*cLCl z(d+_MZ{^Q5%$fL~3|R{z#=)yBPr>M48^kt~pgeFR~(xjOCDoFFI9}m7-^LOF)g*#q0NJlC3GUdm5nU@J$gh0-J zc0` zOP4#@@L32T{Fgg9OSo}PjJr7J(Kg`QyTJ4uQhV7=RV?OJ2IFdKS zf0c(xe-LQo=>l0451oP;~{FVBF$>F_0Pxvjbah*;l1 zhTyXax-ghDd@FV~x28S2P*oO=usG!Yb0yXrBee;f6{F%9DZ6J@U{dC9#10vd*<_n^ zFs#1D$rWI0eGY``Z&0Z?%S5yBa&SVlBuMO~ggmcDjXi@Kl)}*`MBK~sU681($cI*VjTZ94^pmX8=}Ar z5LpS7s~FJmJG&qLe}B@4KzvRu&@D?@xk~U6xOkGo%TXJssSK#b{T!S;DM(0^5Pjv& zm-!j-(k|Vdjho%sZQ@TrwOhGrT6*qaYe~SHL2j`v$6rqS1@7Y3j5nM~^l0fhjt-H9 zIao#bAjAhxBw6N%>;4_!v$FP?+LYz0PNRl?%rXr#$C65IX%RqBL_nA6>c zM%FLSSL$#*2SuJDKb}!)_jC?kpYoC+RksXN4G_vV&Lf#!U*P9%W)GfyPNG5!^Xy$sYTu0}4#E^na^ zFT~MtHi(pEoT!lK$lk0xVbZ!^tAW)aHZiKvd{76js4bzs=eJk)cpSn`JUX72-V?k3rB*7zEHfbl zLO2k`=FA6pw6Z!IKOeE}xXmIdr2Q~z-|~NoG^(pvhf?VXbWfI|k$3c%!2dqdvH6h? zE0E)CzXRT#uj~?asbBn|&A;tx&l5nTt+7)iCO$ay)nL4PV zNKu;z(1AbHxR*Lafq47{%y{}%{rcybCrtWl=pwFD4JsyuO{g6}{pTnZGsgO|#y#cT zuO)8WF@jjchIqpE|I%9+=MOO6ZMjE7Ks|W#P^nUl`a!>iotmB5E2UDk*{2UUm0d3l zN^rpI*PyM?A5|I+I454?u3A31|9WYGT7w`>Vp{1O9Bud*Bj=!6KWZ~Q_BO3r-YE-A z7n^|rkQ946_$0i4_>sO0Q{fPqWpIOTs9#a8MVj1wN7ApS{#~P+`2AOzLgfk}BH~=Q zD6-3Ir50kzDmLM&!P>}X5*R1pFoIqpzkFaEd&`F30}tXsF(DXw-^gO}oeG@M`OHwi z$3=jeo}k2CeEB^Sny-XoYWEcVD6dy*Wv4~f=4H?3eEnL)t|M*PRcqpD{ErtPiIBKq z!4%Zc!WN|e{l%xsy7(EtAKR)0(H63MqEhBn?;D?;D}O`}(6!sq zGPW`lemi=^3EaVnj%OCm%!kvKB!rTC#HmMY&g28CBYYnN@ekH2N5dzta3vR{_<3%& zkWwZj$N0bpWX6NHG)_%3PAEs##fBuhXWC9%D!x7e{y^}pm%uk2^vt|@9p2<{qI+A^ zDLtXljr4H;Btgp74;@1%b+&JylS_G0e-++hJi%%i2isEQ;6;1)#RIQBns(>9yxjtf zf;CT;(~DdL+dPe4so4a{{wfcAQ19dBlfXkVLs7f(_&sE#4Bgn0o3T7}LG6^A7D{ll z#+xFvn!+4O1~d(&CuOu02%ywkZ}cCt>O*2@X@WE$R+C!FF6B6rewBOmPdHXe)&idS z6VmHg(?Qo(*ujQ~#^KrisWrBc%HlRm$@kYMGbsUgp;0=OZe347yOQ~M;twCKJmQS- zSsvy~@K%)FoO7@q%7*Y9OG3^P%knRG?YrEskMXy*cidf^v|Y6;6=`X^_04!gy+63l zbL3X(WxGs;wfEH#TkF5n&w%G^h{Yl3$DXTDwkN!6jpbQ`wCJg+V9zCZl`qUnJ>cn7 zqLa%OeZ}l7%iuVFem!2e>FS}Iv**LV2VO9WF_JXt(t+@T8rHbqbnq+}SU99JUm>D~ zNoV=zbS4H9=j1alaszwyWPYhCOBxfR8X-785NH4U=#2=OxAFO))v~Mf`=P@%iA36- z3CxlnAeAjalY9>D(`tibo9|$$zY&09hD#5-m`?}>D48c>(r%F>`?#t-V7Q1e&>l?` zBK{P2QSeH_g33)oWS8vp_%p>)2>1`0)jGN))=>-2_g|jwL`p8 zW)+$Q6v0FTqT7+R><;&Pg%_T@47d^Fdt)l4IoIpnd{r0y-Z%Yh&W5Jrqu^S$BwM=2 zp0=@Lf3WSC{@3TX7IwC|r=lU)wD9zE+s+@3;-YLMFC=DIc1uOWDHyn>KRW2wQ)XNw z(1z(j0Z9u@=EVWrnXq3^3w0{*yjM?=gFP^TDj#yc{*g%tyy1=&ddRXO z+}mW)5p3VnuytCl+{5-o-b6C%Nakk*-}?V3c?h`uR^aLEMbNBXCy}^1;6W{>zev0t z5Qy<6Juz0<=Nob7yTFEfw#KFROheqEfd{FMY%CCC{wV}ZGlzbt@cO!+jKhn1)3)cr zt89%$J6kR8W$FZ#lxs*=f*RoN$);w3JQL44t&~wooa6%2(*T{DHtM)7XHTt=wIU!# z_z!+Od|l%5j`^%{fIX}_%ikAVP?)M_jh;vLL}w>}y?dVp%r@m98xOjtl&Y@~`xj;; z=GA{6YAwYcN#PQOE%6u!s@4qx%8|10_nD{7Oo=%d|94vt5%KCg|()bDv`vQp0Q3Cq%6W z9@KaL55?1j5-GL>xXY@d==*8shz!EOff4XWmD=;3v^7e9_~J4MDMFr)t6yq0x-Zzt z;Wr7ppy@cD1t!%Q1hvU_9WISO>6XLQt?QZJs>ojSQxQ##ygF4!N7n5+jpWOwN)b02ubza=KWnMSKU)I;;)`=Z z!bXr-Um@jFfJd&!3Mye_nnlYONGonYMnH2ZCKEp+1ebHN-9^mq+3OgN?wi~h4w5SM zOO^>r+0G=t05X{^oHbjMK<237h$cJS{y$`Wc|6o@+qXov$QEsu86#w;q_P_s6s1yj zA(1^2*+q>d#;7cbXi6$YCR9SQX3G#+BC@1N_T9Y4>AIiyect=}^Sb)9nECzA^Eke1 z^G?b9N{E%1RFawAV~|Sl+C-tQ!lb!A!zaFI{YP5S(oblOK5CJ&2I+5}K6`^R1uqGrgU9*4rV_d`Q8ujvLw}2H7+$F?drH zT&WVY==Bb=VAZD}zA2Jbz|3o{IzmR^IcXl{7}MQyAu=hWLs*7dHy$O0K0Bf?!p1gc z2%-gH@!|1)z|cmcJYtrpa}BIZ+cq(r3}eD*#Ob|QYzbZeVW9n-wl^5nT9H>Js@Sv! zA{?Rx(vesFM)9bzaZOh6MN-^$IcJ`b56prkggtDctck1DuDTIYxsU6#sGQ%5+%17X z*u&EO2K%Dga-}~ED849JMpxK}^FS9^X8RIUqmOpak0Md3wa;=O3p}Wn1QMslHXca$5Gf4o7ZcRy zQ$lwbUfaTW5_%?-@YrllVHd+*ZhPnCE&#O!w}6x+#y3OG#_jg4y?wPre=B}t zHU*RmD?V1xMR^Mnc#H3i>XZ9XDL9i0FAt13cQeReQT9>$lSKK)TE{XDxZafzhJ0n! zE4w8l2?Xb0xayw+k1yAOAoS>gUFfSXI}ydjhazYNQqlh%jQqd6E^!wjGfS3TFPOa( zM$gwQ!u}OK>yIQ5_9$4#!{H)*Ogr6Pb;2-l3-y-;v0ay4&|Tc+xWOf-60N_Rs`|V* z!s-qtvi}e<2!obED(GSTEzi^(W!i$zg3VP4B6M|{t*JTsN^Jq3culztdfq|tfI2g& z;O2~~=%8p->)u6>^)5KlAjsPs2Gt3mx2J+dxNX6|@cXj3(jKV_LZr5I(e1tOj@?sf znk?7vAGj-#+?7A#v*jU z<(DjsqKx7+m9cOgV*AGe6S7=o0X%q#dnhMG)ch5mcRty8Q;m%w%?kA|G(WHw5%E36 z%Bst!D)!L@QG1R&Gw!WY?P6;fsYk_*l6W;Z zB+9=+qQ~#cyiyheYA@y|`zJdY;ZdEw+c$uPT9gdjJU}QGRN`0S2?8F;PrgBzX-DBj z6KQA|EIBCqN1G&3;0;*b*tL*2KknsJWv{p|@T8u%`JfufdNU6C$AV1;hx(}vdLEpt zAqN-J1WLByjtfiF*7tYy>dSnrGxxl6KW(NeNz~qn|o%qaNYb{~bqonm~tyQn#m7B#Hjd zZ^*$_{C4{f)YDGuhbH^?uNA7_z&_A}q^J{7QQTuJwbM|_G7jtk+q=_&F#HAHv&0p7 zeb~XDD;t({osth{&p8MQ3F-y!#)CUh?SOYP~_;yfAc-V>96(4Pb9+OjUmWx%-oYP)~7KKwYn2n3g3Yl?Tg zz@t`Hm)yEjRHvNxJ`f-Ss%VSXPrE-mVN2(!4v+O@Yf}jsa29-nV1q%j$Y%k;^S4eL zbq~`X7b2J&Nrn)h;oT^hB0=jzbl7pdu8r>B)5SOnb=Vy!=+3 z1yj}fnS8rSwY$2=wX+!;WhDQ8|8ur53SE1@IK$o>1xSYE*W+Fsu;N?eNn?;YhGC># zKJ!X+R8SN`oCfHjL^8`+f;j6ShUUMtAJ|2yyA9 z?`2<=b{h$2BH-!55Xg<)>vgZ-PC1}@f6`;`h znI8-wm$(RB&IW`%TUB3;wmmt{pmvf=M8gemrX%}gNiz&HiVr3(lX!Oo={53W?|xUK z161|)#PbgHjL?*Bil2D{DA7E)CJgrp>frwCDT%ZeNQG3!E3h`S& z?Hx-{DThF#`+{=@*_UXPXlqDn7<;=0t3Lvnul*VU9ls#diil=@=1upO+{4UYqej6p zJvi*Bb2Y7N zUhoyI1~$s4oWe1?`0?9G7^nYa3lHk32zm@JPVH^$gw@j4`D3yq?UrVlvk!0ieJYWh{UctZ8X^7FVU@%(jh?zMX;HKYyPfX1r(6dK($-W zg}QkTjPbD-+U*dz^e)Hs{atAzC*ulInm|H}AR#ol{-b0jl(kWG`9AP~8?=spIuS9QkD!=E8HFY)Qbu>Uo9)!m!NyY7k)sU99{ zFMN1({Yc+nyw;YjRa*Fc-{&54+BjQ?PBQlkVtGY}lV?u|Xer2{XJYIFz_zPC`(I>1 zx}`(#AMr?4_Wx$jh=0LdDh$9zCW?iUgP0$AE3pa+MO+|Rp$<<7MX5J4hX%Q5B2j@z zOfirXFf)?jadTF0lNzsfcRgGVsAjR_$;pSuLW5{L0q#3m2J^(RI#mFT{&G;U$AjS| zzRTtet_h}v39Pt*%VGMXTZr5NiPoh1v($T{vJ#!b=_*Ai?vnP%Xr=cC?yg4ga>?Hy zY`$|AoKow3kHm%U6n$Kp87+omy!sZyr_zKO!zVlHQYr%@^36-U1|n~3m0<&Z`-t#x zLARb87z1Y_&F=T3`Cg(id~wfn_&HSk|9(d#88+fy>A`i7;EaZe_sqCtQQS~3yy{Yh z!Pu!Nzo1@8e{{S9ftqjCm~BiuTl4bImvT7RuzB>f4*h*nyHSuH>O**2z12G{&E~ zHG19_M9Y5Xk5hyMBuS5pL2MoBo^;qFu}S#aPs}?&THg=58GcuWHmn*wi=wGFP>=_E zktYjw!usmBJ0mNx+d)olzgxvk)sP)`h}3dDtfMRXkyd0LLGxnt&j%1#l;I1sx?lZc zxKxzJXNsPldDe{z*9SgE?>)(ZvETi#_aW}){$1=t)b?lKvXdC%mpt)3lD!D(madFV zLd*3m9md0NkIF4Q-c+Mk_E=X42LEZmU$6Naq=PmHjA4o$_s2=QEufIA+ytYQ&nQ0? zq)-lUQ+#T#jXw>~^9A?}u1Jv+o^gvEO8Bf~vnoXPO&sEpG&wYU+so6qQ2{Kc&(0NO zZP%zDPpJ^qW0&3f-Cm$Z2ha$&~Iyjvw1uGVQsEb7t6ucT=bhcn3 z(HwT@pQ&RbHyU5_;g>@<32l~UP%VbSQz4mnASLwU1vch$6ithpD0u|gBIwOiWFjUIC(EB86Wv1Y-2x=dT;;VVJI+xE zi6!pEGV$AJB6*<)-MbxuLt@*|AP~LJakoPe&LeFO%$|Qe7qcubFF|Cfa;aT1nRg54 zE=Mp|YdGDr>1H&6d%0TE)D>ngHCGrpVng{Yqqti?f*^SO#%_mObJXVPCrKW=G=$KiPE~j#@J?R9xUT4skl_(&{5FoqxPQrkC?Xqt z=YEts%h9ZUZT4@`hQW1uA<+$P&S6?Ve8ryd_rCph?RTD>-|1&&$KAI^5lv4D0_N#e>YQ`S)vaoqj9Mz z$W{a=ljUuNVZ1m3DNh$cspm5Q6ldRbQ9-ReNHqMwfNBZzi(6$R+fKjIayT$F64C%X zJoC~lt%du&@+EG*V<>q2AtzS%^YAh2Z{{Shy;P zjds8%n?b?N~l1`Q4e;<~_-Rmp1h3bJnw>uyGkUAq=>?^6!w#ySLwB^nR z!3Wv_y6ZrgNM#}I$-u29R9$H6SVB9N{RvEFv!LzX-Q1u<{27_BT{Zqtjg&uVI;#ba zi+Wjs!x+8T@8CXFem$p9$;IX|SQX`CVcF`m449L5Kswc+uiQVv?-4SUpfITJBKO^Y znxcOdNWWGR{-Fn%_iAr;48$*pNrfy9u!x)`9EG6U^RHsXXup?k!|l?1__xdo1b8Zs zdsnrt0<+Plqd|>Q7(3E8h=MfP={vfIz3FWc*bFZCWOZn}@O94T-jJ>NVG$kICb*T;Lk% zGd)l!sy+TWOLrbH1*dL@8g`1iw+$x14}cv%m|(AE#ompbVlW^A7jgN`v5AMLxJ07J zr$0?yg$jb4d{CBql{unTNT`VHpM!Hv4URquz9jZ=U&LjZ2S`=>4!pAHYiyt zDhj+KZ@d1aKTCW78hu9wMVKdH`ZR~J#(Gs6(sFrCB8eD+`aZA_iuA+r2gODSdL?^* zLLhu>Q!2BAq@NvB z`E|SW1%QZ$GxGJHZ|?$Q951yo03kQVxX+*t7oym*>Ca2>!Ow&Gt7I!GU2WJ(xcK^uw)mtV5gsS^1oi_!c)4bue`SNl_M?KlrS4+Lk{T8{Fq2GK(bJ8hKj z9h#93SJ+8fhG6aQv`y|!Bra!p-nvjq@8|9Xw5CVigG|sKI7xo?KRh#lq|DWx+doDU z^PtEQWLr4_;B#%y-d-b~@ez^%&;`xWzy1r~1sygSBTzc>hT#p%k+PtS^ zUIggvz*;ZB^TxIC7{48v$zrdu9&U7a0MXoLpxU8dy)-J(c!k8q^P1b_I=%&jYR!nE zH6b*~ENvr@0s*pc2ZSudidYvO9OqZjc*kHQ0G>x{)?SzxBna4SG%(4L``}cTTf#D9 zV<8Z;TYLoos~*7UdH>{K$zkosnH=IZttVlsXBEszzZ@g+2!$CzM#By?&%sH)_kR}v z(NJOsYV?=@;%Ig#YnB4~U>i}jKeu5PDvaif);V0ZC|GG-=+qVQvb^Z!kt@s6JfJEA z1())X32J12Rvp9-dU+NSPNuf+!6V`Sq90}xdG;XqERjr2P|AQ&Y)T%^H~Kg>A7ML&bH;r6oOamE z!j=4Y9#TLTdpB<~-Lo54f@)flVz0L_5NaW7f>gX}EPwK*Uu9!(AH)OvhD1+fm);00 z){Ea8jtZgWDq&K7mb$)(4b~{czLwZ8ORBOq4Oab=cvjbvHEGWizwZN4euLCt8({w$ z(>>AiCr>#s)3xW@p5Wr4%jG;<&mFJ=VFN^)C3EZpB5`Uy z1-FdAtm)B~$?6NHPHd)tnxJGjDNp|Z=FPNRwlM7m zecA*3@`t6@aJv@4R4h0HbMhbZ*#i4&ButlU!5<-tlj-p-01aBzIRx1kYD}@$G>7V0ul&JRUHsbFjYko7lI3Mc_Zfttm)fd>%gp zK5sbsSl(j)A@xq`mxrtc9gxn;mz))QinxlNlSdnhPL*o+f?$Ky}QZoTD?WmYf+gZ}+a>~o4&(x334n%B(JQWNXkGlw+Wj8iP(j|jHKpBP>| zq5NR>=8y60Sh-h6{*;LI-a{d?IIC?_Z+<{)*@QtDeb{Fs>bgoTCo*s|{31Me1Svu& zf5ig;Mr^+034w4zSD&&m;sgg@QU!Xh^#a)o4@pqc1yuSbii7~l9gwP#1*ruU)cm89_@g( zbT8v~V1`TY9Ln`h6=%S1CB{91FF)h75yx?ILCQf~@=YCI@&faZ$ARx3hUg)<= z(8c>#?g|0q7o|CrgEr2OwMS!~;hu{+A!G*fL>vKnE&}b+z}J~KTf^4UYW0JLj{c$& z)xW+(A*cs&7q$NCI&ZUJ@zD($S!7^3)4he|U^i>hqHKZc6|cs&OS{?rLdnEN(N82d z8;QGd^eTn9Q0qH5D7Y5(LIN5$_Bw*T(5FVc=A6hJ-ILzBe#`7!-5%{rTgY}By|%@# z#lsWq6=jP_v(B&Yoc2!j<*Yi$Ue9lqI7s`%d9e4pyPp9~tVtnEfEqoV2FOAWa7L5W z?+QO97c;hKxT^OB$`6ck6uB2BEzcH6{q9&=@X=hNTo6*I@CcbZvohaL*Z5Pk6$IW- z%T`~>TEC%b;&2Bd&0=s2*ykrcKdz{Atth$+BNxX+P(I;^Qiw3SY@L7TVz8O8PbltA zWW=#5SCdVgJmk=}?tm&H&-x5RF)q7S1%G~=gtfFsY1k&FxZ|+`p|IUY8D;SgZI-+- zeN6+dRGYY*GrP)-K4E0P=oCx%kAE&|(qTpT_LBEHAdeSIP9&u&6lpoV-sA+XP_df{ znOGk!-&9Bo1dncW%UNm%uGO!Ogpmu4`N{O*1?;vVeHU#igCbAwAKBfw8A20NkL`R$ zGVBL^nCF38anyhSwiWF7Wo!kHKRi#&DQi<17#ZXkwgo8WGd{0<0l zb(FFOZbc4folxWfTvq{D^DIDggcP*%t@Er*-vrL*=tVr~$WQ~g!-`$-k zYI9ix=S-@p{;dWmNHBhMg2H( z66HNXjEijMZbc`uLR#wTZ(I5+0LnWd>u307GSTz$X!C@R`-}6WtT$WiGjUV*f)B#o zTLiI3t`M^&AAi2ty42s>GqY*(fTeuThGdsPFbIz!< zb#1)3*6obv(Er!L3(?mX%H2VOopG!Hq&;+nSlq#(k}!lC$h{fjHSzm#QR^x5^v-9t z1`eCZbl|0bPRMNL?g38a=fo>gN7$fJ`9YA}xB@g4nm}REz#DCI-fWPi;vI8-aJC#; zf|^dvT@IN~?aIxe`N-AxuZ<nzL|zo#An!Y~%T#M?@PzY`E&KxpXS2UxUs`Ly`tiQ$E40=o zENe`P*GJUpRj?#cpFLFn0nmFM;4bUIRcd|r*!cGP>tOTUOFgKn5B+x%f>zbDMP8Xc zalY>HO`9H^X-=t^PQQWLrC;gn>D(?p!vWNv~t@GfZeWU0$u(MI}qzO2BnA z8Zz8w*kMD6duT1={)eXpiV!Dlc@7ag9Wq%Drk}c_6}X?Wg1V8)@;7^DRYaZetawJ(C(2uUOy7iv|H=aynEwa)``7l`t;D%nWY`Ey68^h zxrh4L|M`kxeVEhXn`V*?F_?e&TAo*kbXlk1HJn))r^99HZr#2CqgBc3YoAeLy7f?n zmYrBsd_U$xxQpDaTa_- znk9K&=a0~z7miOHzZd_8Gkle0Ma9jliyU#~r>nL-Ht$N}UY%i0Ry;Fg4d3Rz5z(31 z1IVZw1Z2%q6RSiyZfKnC+uUc_SIbZaeMhovDJt%1o?<$-KOG7(|7MV#c-i%qKU3=- zMEU*<2GN#WqJjr@(+Mr&fgSIhH>an{h9$P^Ee-^04T_oz6o{C|1c$4nQX97lLIqGh z^dt!1Il8BXWESzjU{Hit$wy0In}W#sECvn@CChb(7atfSv^0(xcR2PH!oZg-*l zJl3bg_wYYfc_?HCk8UzD7dn+z2A?-M3DcvpD~A%xS!F3U>|)`37U@4R13P!J%A>BmQgCb8=c>J1Lc ziDW+#KEzLb;D&xsibjtn2|QJ6TFOB-_sQ6y5xrg1@TOy%POya~GLz}R zrVPu58>EOSasn#q0at;t^;diuhWQ|=8)2%WhfOc>@c$4O`U`#nISgiZ0pX!@YxcT@ zmxq4YdCXB&iX)B1Ao3`q1th5&ovMwP9YoP`SW%aD85t?KZ63QxEB!_i-Yeh{_j#=L zm?&!u*)ym&aqVc@K`+kjI4>WE0`AUJV77OtymESwqD6koXIqGuwo3ArH6)YKd%~Ij zHTuv`q}`i2@gj8N)v^2^ef~)nk<)i%%xQFM*k9x+G^KgqRi^pX*-f=SBss=Vv_>|Y zI+B>AUbU^G<`A2d>@{02&D0OTCzlfW-OieBv|}70XB-5HN#NCwTkcI)3;OA1sHwa( zS3Yv+7W3~pnK`$QC*reTP`ny7#}%Z zIB;AsQ#b#+DB+XVHEk}nj)24OMXPs6-S?YsbOr5!J+SKwGg6}_rbm6kY|bqU8HIk0sn} z+a4c(?>-HZ?!fl!ofuP&P9xUf-UzD42yM^HEYt4@Q5m~m;cr&zKlQLmOMqX`@|D65 zzFIzmQC4&};rCYzVwmQ^)6)gZ$A!t#8RJGGsQWRIiyZ&4pkSYBk3g#q397xjlCDWM zkHYMW$%|0QueC?zY{fXssEBl)?&j#hW6z*cVu17a>*QFSyq6d$$d+#IF*f$#!bfdZ{p=lSP-Uc7ml5+nhi?#C!FCO^heZE z2RJoNzTv}S=6={iPE+dLbx21M+uhxSw5dI|g>K7^6`k2f3u3B#J(5 z=ZYR^#7@l?%j{1Dc>%{M*k20Z23*A6je88@w)JxWZoJAVXHDc$FwycIzVUOH*0qbG z%$I-c(8?cKW?D*cY!MabRwPkAfN9EtqSNEuJX|lU0ogAY>~@V&$3)KDc3g%}o*29@ z#IM?y%Kx(uKt9?Kv%SSU+9KudPpPvP!jrPrAEN1ed^>AobW%U4Xhz1iXSGA%DC&h2 z+_IUFoyD3iY@mtjh5Nep!o8tISf$q&GU=XIEeGjsb6hv6ayODe$Fp{Go5X79^77pL zTKHx&W!o~x$xJ3~_N#R9_X(EG>3v)?utaG7S|C{C@#CE@`}<9KuXpk$@_2_w>X|CV z&%t*S^AlK#LKsrlCoU4x3CE0?S!4r z2>bD$oJ!Fbl+CH}Qg_uMybi>k8~ui`-s=C4X4RgN-H>zF{=avgBS|<`G3qkAGVcBf zd>_PxHONqVtO1Uv3ynz=-6+3KcnyA(cT5)5QwUoTJx|Ks&%BTQFJ=B@)p0iJ*9SlK zrtVB+J;htRHd8>|~v@y6pr8LYi5h-Y3Okj$2B(I)zbXRA4I$@B(IhKDP214!jQRrV)k4fE4*xKXI}o)8pAV9kGeXR6eZr zMMv7cyd;#O;v?4Ng2&Z;vD)Uv0q|dbLm8Eei^gb9tjd=Deoe|*Xb*+?^6|T=Y}IjR zQ4R$pM(%49J_Y9@!BaSN)f>55)T7f{rsL<#Dd=s?X8E7va_<9CBk6OdSjpz3T?JsB zHfhvmr_Ax!hw;ZciwJ7%)^t>)Ng|_66psA}|2JLj*&iPZ;0n8TZ|l0rK0Vkc-(RVT z=2cUfc;USH<^uxH&P`JwK-3uN?*pBqTp_e`8x?_$p&?*-%xsEgl;=78Y5pZ%q+?Ff zwy$Hn`@(er`FUK$zJTekuxIzAQs}}2cD0uV$h?7S- z36`wqVU(Eq5k-AV{Un)e?UyPGG(?m#?ckvV_ui7$>VP3tk5;bHGb3k8o$5k}E_F3^ zwQA+?>~z8&D6E)Q%R?e)IW>Q<5>t=2&DcF7gVQqIo5*1BQe*gb+)~NiYR=Nfb*f) zI=eOK$9@kAY)tZ7Al|X0KNUc~P1Idk#OcXUdJpp^_$BNwyIu70!j!}M!GRx&+|2?i zneKHw2>)hAA^iH2#u4@OOp^}pAuwubi@u|o-lLqR`Qevo*?Jr%s>?tle|#^6z2B`( zYo0@qzf4D<>R3g9g>qC&d)6}FE}Y{cHM$J$d8@;?;1p&~nJrHsXh~0*5K?-yZiTvz zC+aOalnz`eU7PQj5TP&L)T5QuskD*Hmdjn&o$t=o;ipv{kY$o*Vk-y^+n%Jx zCh5pU5<~u5WW>V<`=d&r-&^*u(AA|Jq1B0lt}DaI9j>26r6K6)utz>OmWDZh+gF*~ zv`fX!d8!!{eZMOEz7{xGR~jZb$_>eyek1Vk6>JuH`5t}>xqQr3Y=-EYZ}U`aD~b^3{LW*Ii`HV^(r;q zhc5Rm0g~Msn2xM2kfo{8f0aAVc_p1^MQZFqU2fem!%h4JRlxet_cD7xi410pI5c-c zibT(Gw8{fzfR55NoWUn}nei3^$^{Hj)uHMAaP))Zi&uxjv%!-4KH7(7Rt%ncdG3po zpsm~8c;+Xe>Aqz5x}@5>c{USz1>kOI>5%}vMJA+me6q9^E3Lk_x&W%?#dF0#Nm#z~ z%L@j=bRL{yU!n8Hs$Fb5a{6S%EdmOVGgd&5)fwk4V8(8bzJ#l4?Y_IM+eIQ2ga_Sl zVZSf&Q@aKkt8D3@1IdR$)e;)wtPYEtlZvd65>QWU^#pdApxcMtLFKscTU6K}yy z;cIoE>avGfG8F$Qlr;wN^gu!E*B#b;0y6!{Be+P&%EjpRdCs45JUV}><`Bl7t$S0F zO*NQBRVLUm3zVpBcPNFX?U%FFN!D?MgrZX(5=*RB?LcKgd+K&8Gb&_#fwAeY3?wn{qmaOG-cRB)$ zWoFdoMfi%7zgiCk)N$-(de%@%?$iBmq=nnz&<$ zDp9jF-g5Cb%zj!alZeYmLmT@6#27ih%AAJ{$)7>yYaPjp-G3!UppyCtRhZ>@_Lpra zt#^s8Y*e!_TH^`<*fCMV+cko!@|$<95Q22rL$X9kqJJ?iTr zBk)~1`aV*FmmEa(iUdWLZNjrNT^o$c&@Too-uEB#0d$Yyt+IhvfLCs4p}$E$R>`tx z{AH*J2e174;`L8=%qO~?;QQ!(H%be~i7{n?(C6CQZ92#PfNXQ}5Xd3!03#Flbcc?7 z)I{U4H!(OEsfWm%6QL-OPB4{V_2Vr7Tby!AR{)*16hFnPy@kL@VMminAL9XXTMOP_ zYZ@DHeU0Q-0W5DZ>MP{S-FrN3C{I%C%ANr5oJ_!}vT#~@^aP9DhK-?vZ(rgjH6hxYd+#DF#O{I*%qBn%#L5$Q@H#19eW!K;Iq=p8a3)j@}C2 z(0+}lrJ;}3Pda}}JMfL&nt#FN3~|41r3nZ$viA84vv2i)f9uu-CvdC~eF*RK z;9y5ibhDQ>6P?wdVft635q9lClSrPT%iLMeM!^Cc-{K*?|#2#~NbZAJwz+go{pzzD)-~`TSI^h`zPq*`or> zOGKRaI~wR415B|lId#S^S2RVakQv`7_A%y$ zWr36!M0?orQ4oc47jV|k!3jA3Mgk2jt>GJPo&QfI`kGza@qxO~D5#r)K3g{EnMNc6 zRh1hWL`<-YtP)$#xU>w^?c1%_&-s9O&ms}4M;k6P5PV3C5S3+;Isw36G0ftYeWd{t zs3U`4%VO-+ws|;3;3^hSDd5_;tu4+AUC6GZ1#&gGkqKyxnO^BTRhAh(lb>ILdyyYI zkT&}Oc#`$BB3p-sJ^+UQ_B3>ej`_OkM&nk&H*@VUMwW>3J)xH?<~YP)wLK!O{BFC}@Qi`9a*ive2-NWz6eguo9!fR~Xi`Sg1@(M!B&AW@aJ zpgy6;-K{{f<12r94|SF2H2r|??L6?lnnC}ICG^}qEshFKn|N^F4OF&4B9E$ND))`L z#e^V9SA$~RvjT+>Qi|S@KTsCcdMf7Oc1oibllTWWkmlyT73p&&rGeDZguVUz#^GJ`NuN|hbu17IB9UFU)Sx?lbb(d@H*1w zMVve&AC=3!ARw9m(V+2}=?gd=-b%#Fxn!!&zM*1c6K^4?k&&;#N|C6#BN26> z#1V9fn+;OATfmi;lMPD4Ht{Ru#D`;t;0CKxRn@l%oOq4!f6Yup`eBv+cjq`Zh$M6U zs{-6w^2T#xZMASDC5d)|{Z5ccjC|hNR-YD2*oBk8NyZGqj$A(6nA#TmgYq1S@KCg? z1spP_!SuL5eq(MndyMvRiU=VP`WlO1;^^9b)@ooZ3Fr2iaS{Lhp}OhjLuF^dw_bf{ z{=od`P~;c1a85!7b_JM2hh^V$+b#oz-Py2bbKK5?j=j7E$sIMUKBZ>4?y0+@MfYJm zunc6!w6v)hznpaC9or7b^A&83E~hqgJ&00q5T3Z4s*LGS+Kbf|V^5-fTI89i^fDby zfG;qx=lf@YN^PuY=KU=b*RKmyLdB-)uh(cJ7xA*8+)|58q1xezb^iq7{jX^ky9)M# zZE_-?pT_9$vhf3MaC?Us{%~bba>T@&(F|9S;Mv5;cn7UtyIzU7L=#T&FJGPPo3J%- z3WQ$sHeWg=gXZK3Yrt4h6Shdp(DiG6)^;h=s-#8JeQAGrM5YC?qS2WU?lyyyi1Gap z+{#N9u;~qj>npfl!}ljCGXW&`uAZA47VHn?z5>H1xR>la1CFiqpSw<_!Of3w5;gNz za8*bx2X?C!+Ll6=1h|w6xAqugu-fao)1$i_AtL}RIdUjXT}?Kj%7%6;McI36tHr@S zQF9g2rp=1nQ=6R+g&+&Z)*Zy~bkD^y#HQT%eS!SJ0CRC5nj1U)FS8VJj|RA<1syaX zm%*e{iwO({&Lszph$#=?dq;-NW$&Z0N4$dwUn$R8M63rbWrZHVN6+MMGjF`m>u)WLai7uksnfVksNirkR@XFYu zsC>b)at*}*sUHU8Wd^QfW>>f+vSa>97w zp~rytSil8{Hb~6@d_CNC-9SZL1aajnpzNF${n!&z6$F$s3rd8k%-y1TC+#I zzK7ih$J#(&FL4w#S$8U)X2-LlbR>Fu(Y*HW?^;{i=k5b2d=TY0NE{t)NN#DXeU087 zo&OFt#VRd(Qd4xgKg!Rw_0;ZR4QqUQY>!3Cq;m$WJ#=*h_5bg;gm+Xsj`Ww`l%PZG~5 z>8Yb)apo{1QNdHuWdjujd>*alaH6lkj;YRbpkrYhPv{A*TmYDJ)@*=cH3PoZlPx|) zsLmzX>T)#lNnYxFA@rx|)+e)}f4pao9@SRta;1MO%MHRy`*yj)L3{1Nb(T>R0p9A% zuZp-^iT@gX9Ity_$LS8-ir}7DCQO_>PayJ1my-LcJ_W_R$dWx;U69563pwU)aq`5v zZh=Oa!Z$y&W5?m>@kx|?l*f>GkH@pblhzr@x(K(2`qVbi#=fiDTgRQt?0u)BeB2dh zHV?6TzrH-X2z5BOGf%m!7-5m^R0d=M^U(2R0me-G`L`(!lW@o8!{_18;aHXA?*Lbb z+%=?JwA505A(Vik?z#1za#UMm?4ur7%gVmm>BI8{Fed_*te@{xPmEFWhEN7u)UrwCNN zHZ59iVswedva}w&@NIM@_<4nX2C|;;da4xAfaDt$#`$?OT zAKS4L1-#tE-5@g(F7K_>$m?>+l%t8%q{0NMp$*>L3b=h%THw9=CA(L*T8r1m{K3Wr zEYPh`t^qYV3H??MteDD#e?1w#ilOU4zkA;l#vTIDJ}1Yw+94(Z+Lo_x)A-A@JD$f; zBr!zPEb#&K*mU!Agi(baJsJVee;$w)JKx^N9wv-w+};D5jL*PTDDje8O8j{hP!qV@ z+nxh7x9&qZLuT+9s+%em|-;WwiUb`NMbknyEJL zuPw3vfaC1iVLK=Oph)5tcrt(JeTGxu?S3O~OUkymLok_7clyKTDCMz9&4q?@?WX2V zKrVM%2V{0F#o-TIz>TDO!B%Hkw+|BQ$AarZLDHVp5JD|=?|7aHt7prp{&<$$v(&#j zX}ZQkWs5yS^FA3LkukA!rrGFfuA=()D~N022!oaf-;#q8_KR@CsYUUB7=d$3-RYf5 zUkfZbEAYper@pL- z3YIv-7Y4d-8^GjaP40qAD0B^$Z8wm>^bHattAD?ECs)0I3IcohOwCop zm^kXbFk}Or?6fcEycA9=#+|yh*P2{Zj=*jh-y4v_5#l#4#1!8Oo&}HQlvxF3)80Gd zHzjpH)qu)X#DFU&K6-`t>dB|0;dW^LJ%bo5A?}kDjD-!z^*c>#3E7_ z+pZgfl~r;H|AcILa*d)#QQs<`z$td@7YL!TZss5Cu=Kq0#ut8iDPAFT!0lGB3!6+p z7cNT0STO1iP8vCS&uqRGg~>Xn@kD%wI!HTUlBRs70IwR=SqC~QffviooH(PbynPI| z8B|6oDDE^^W-pq1bn89*I#~M+}eBw&eWg_p{jj4N&;WoA+K*ANOeZhm(l}a z!fwdC(vsqG#|D_I@|P6W?&BBd51jw_idimy<9DbvF9PDBFvHT!B9C>87^2shNX(z0zXi4K@S9$@ODST zFuGrFqK{zs4zL5|pdLM6{#v9JGSHFOrwqGfwRky1x?h8?7I627Gg_?CY?foBU*wOq z<$(2aj+Xb;@A*m>97VAUb=+Fg4vvs@quEcV!}tBxk%#pFaa(F4t>MRhV9Oujc?meW z_%?^#2Dd3I2QIbO^(!}HqR-2qSuoQ98A^TRG1<55R?myHB+F-_%7oag4*^!ww&N9n z=HSgK$NbzhsXUW^LW+AT6=$sqIYxO9?jX1Ma>(&tz1put7jA8ZsoAwW0rhdTc?CR& zP5VuIKWu3zLp^Am$#E7eK+0V{qCGWlV%HRAuS$Mpk@^6Ws_~Zh7LWiHlJCVOmG*nH z0LwoK5IDfstHggLiX%D(P{m7xHL)wAIw_uHmkIu;Xq*l?Q^$lO;dmf5e2=1>=lWK*0S8+|No3 zwMzi?|E@%p1@DCv`X!oV3&|=Ge&v*!#7p%m^S{0{(1T%#e&_okCGr7cS1-n_vVdZ{ z7zCv_kJotC^@mh@T;JL+g`3smMCqP)|GcX4!sdEKm zpr7^4-BrJTA=Z&QH8C?a88ZY6X=j@+&)397aGgHKO1P=rrSfH`WK z?%L0E-g`J2bgd^@lGgDNXEqBwKLFi5?MsR2b zL<=XoJD)jb*;hp=Zme*Hab6^u;Z9`QtEDznloyOQ);42fy3Ig)Mq=uk1l#V-eD`PE zxfs>6NpB5JRmpS&B_Lu3kne7!8CcPjO1X4)hb`$eyggTJRc|o8g(D?$sO-cJKAtVH z+okXRRiEE&K`CUt$!}#xAKX*_dK74}!Q9sLLKOTX`23Iw#@Z)?g?8!CSuV(&6o9CD z&~WWH6i6R}4S(V6_X6Gou$1sbe@?vads*O!kVX&~(2*jfO6WhDVPJ#4(Bc_6qSP%C zPSlk_)}dOfHu2nbM;^zsL$^L>QwY0ZGX7gMNO@rm07OP_L_5Br7%g$J)n3`z3={p_ zIpFiaYtSMHa|VV)6l`AHp@%Jj8CUI_z)sRj!UU_ws_dXhv|jp*5=YTC?eM8BJmEgS zq3g^I?%KZf1rUn(XfwKOIvb>CNa=lFgvKj~yC;%b^*;Y&4MJbf zN{NN^OBcB(QDPp>`+pMi)QCUS;BYl}5XpN9aaOSAbQon@P^xC%|9*vtRBNby zjzpemM76vEf%BKArUK@?xbYQW09QUe_9Q5OM^Vh?%R>}EMJ+vUnF=&OCW8&k@D;LZ zGqFbc&i*EF=K(vrvZ-y~`}RVz$vVZfb46a(E#$j!Y#b)FywZ5ySR?&J%3<&-xI5q% zKp1p%_(FL{`Xz%TK{xmSEWcs(v}C6cO=2!brniC?T(|KDqIt-DLxOpyU*Z%H;Vyo% z+hYgP7*aRBRt1m$vSmsRHiK^!f+&Rlmo1vCzEhwGf{~3IqFQ?F^Elx3;i zA?&I>`XUhUpMm3aB9q0Pb6&G8kjPGz+w4LY1#@RQ;+QY0T^*ZOK2?9yGDz)0SKNc! z4z9JR_VEOjXxQd_8(72jxztwU15T+$rBJUJ!${E1gP|A+*m$P@;)>q?UGN>_CS5IZ zT!hAQ%pYbOJN2wXoROE|PDWuBoOOhe$3)rgd!VrR94VRFnswnL|YV4xNX;(|0ljS|J&bJ6M z+3+o@l;Uj6TKGyiVa-;HvA}{po6YN>BS3m`zaS^2rX!XR&?<^-93#S0%jrt%0vu28 zlY18LEs3!Bsm|?)?P=v9oRc_v&xOSFJXLpURP`6JD7(ln=$mHfP@|n?k-xQ2jL^rWDneb zJty9wh{?%bxaQs$pyp@up(lsrWy5@B*+mH)_#y`D_E}V$s@b`BR?uuJ7W1Hz0HQg?@t{YuK8RaDotd104n4)Z(7#sJBa_H?BcAp4e zwjU~Q3`-B*Udm)1%=w{_I>f+ZJ7jc=u$az+eX3T~Rm-CwuX=&>z$8`9?IlXx14q^R zs>+q`#0%+OQ4o}%Ib69eKu^(5`}*!BJC5H`T~O(K0`ee&5x?PYEeZz9^FLqV9&vw! z;oJfNXxneuog^9JO)0#1xJ9^nxC|a^gJ%+_`De=`Ku`Av$a&n6SSS8uu2W}UvbQ;4 z{}m9>Nuw*+><8eP`hH(Uevu!~;l$1;&<_)J;cC$A1(8`v>JtWM;zw>e(YzYsB{L3= z;Euu6419}zY~XO@NquYU#XGCx$eMrmQ_&TJfa7s*VorvMA8OoFf51`}n5LPTmqyls zFbdf1!oN58M8|vzCn56M+w{Iq#sD1M)SIXx1k%F4{B!C6&uYpsqw4YU#`Vl4jeRd; zB0NTnab0%!7O)=I#;H+6P8Q#_77_AKrQys6Q6iq581`vHu5lLX=) zBDCnWwi9VofVlBkFucmnVOJ#7FD@p!)%7?9C)~lBO-o47TV&~zN`2En-C-0xNd+Cz zMu!`pEu7LGH)Ea)vp15(v{vXu?Awd*d%41J=jnm?(}U@`APS7s9Fl zMgFjhaOsjYP0z-?CB;#tQBHy?_Y`e&U`RDND2izO_~6tJahfIX_Q2Nhv-AKN?zqQj z#IQS6`o2oHy=u`r4LXs{L(K1uX7VxLJjxfMTEbJ$MzWI{3!LhvYgrB!!5QBRx`F>V zQt`*c{%&ycc7P}e15QsWTK zqcsQ@oXYTOidYI?3P1Rt`0>(ucLQe2CMh>T$w8XmjAj!y0|$JI!amDJNN7LjQSs;Q z=X{63@y~F*oP`C(9gZkJVSK$J)Y^Gq&HTpUs?X?bd!|1SDB>Gv%+EUn{<#B*0Qla?RFqBoT0lJa@0>IGKX-$_bh*f-%aAniBocDD z{A%f@b{QXMAC6kNk3_30RRDNh0FdRi6=ZR;7!izLgf8gOIa1(OKq0ZqM|15s7M_|t zx(M^p8-QKU=B-uqmxtm_3Q4G~JjizDdzq3bHW&C-In9WS zTkAqIT;Ye`0&cQ2CTBmYt;}_wsrfeM0l1bj!GYbb&(&AjmaeAs{h=g2b*$~-*Nz&Q zS!RZB8vxQ2L*ul+uE3kmAjB0cp5a@~v*7s9O?c}q{&MZ+F_S?EYU<26vogl8dH0ru8ks@&VSRON3}DttS*!c#p!giXTS^_zK zi{+>9QlYVSrUr#)yAvg-=QMS$4x$j4f2!E}cJ8N@KP;M^w48ya6b3EJo9z8p$C{i_ z;RC2p{8$_WSC~C?0SlDvUoWs0*w-9f(aSUMxb`zGCLZk;{x!QPn zyCdkB^#RD|{V1UgCZ~w<&Ol{}NtFpPOR;x`DNmLg8QfX2a?|m^%~=k-Kf^ zmex8b3Wsu-%2#|tJkM%_W)Z{R(|zOdf6(gV(>tLEcPDu3Tw|rSP%(=`6~cA&O{{5{CePV- zz#%KRR66D-EP87>AK{donWqA@jTQ6muOAx+YNqSL0o*Hk4uvPXEjv=8b{xM5Gjg$G z4V~~&lxza<>V1<};;E^Ndz)Z{J^%;eN+gRoJ)^UT+XsYeX1=A7Lkwq%_uFoVNcI=# zh`s?Sbv|^eOK?VQ{96nPF}yq7n2WB6PsRGyqnMg*x|eB@1P>(nb>Pc{G!k=icM!KG zf#wOTyzUv}>_9iz6K3EE`s~ju#&9)PIdux2e?#bXk8CLuSMO#_^QM2?hYsgt&5h^i zaFt`hWyXy8!h)%h7=KM}OfZ!T3R}$ZmHL?6#H&QQgL&+}2g4qV<^!PZ1 z2q%?>&M7*_MtSIf|NZUlvt$zCclia~h#kg)O$2lGg$R_tSq#NVFF~^Y1B~Jsl^=Uk ztu%$yuI84ULkUURd0o_YV~m@7B653(~fMoogt71)+DK{Z;Lzrfj?hHPi2&XUWNX3AMQo z5P^D28+*IgA>38FyNx3r@+`-OZ9l&A6xjh!(Im}~pgkBXbLy*si2b(jSvtq8DUU9m z_tW^Adg8j+*Khn%5d^KjNc8&ei)YXl1ZPh@b7-dmFcIebkBL@59RAhu!C!WGKp87$ zQIMhL{WSOvg(rw0u6@jywP?>Lf8HNcDoq1i`AB{QWLhB{FlD=%f^_zaH(w}<^gv_2 znJDw3=+V58`%qJkwupDNUqr-Eg9Y%|v;x<1mK@_Wx6Z?YZ5U?3ueC)%E zu*0o@NwojaS6i38N3P9hE-B?66AyiB0;4|TQ~g7_higM&StK}sUsCPfZ3=K`e!quMnsY-yz0kyQxJ0k(+`B}~ ztwwfY*uvdVSvXZ_pFXtrgnhEl4NUbXg(D1}bOQxqVDCxOokfq*6!Shtu7gBcBWtX% zW9n5;y%>c2-CVL69Fcd-04mG zc7Ukuh|aJ35Q2b!c8A~rDbhj$EKU-wa37t$Cue6{>>P>*1i!Yz4QHk;b-!sukvmwjx&e-Lc1zTzx}S=YjVMP;G%u?pG(T zh}OsE{5^gC8)C#IrX1ECp><>8`e5XlGu{QX@NIQ*Gv2=QB=IO^(e;B@MZWE{>|;zj ziA&v~*VBR@3zNC=tXcsY1;gtNvmp`|yYJm2ec>^$7#!3`fxSUPfhrH(m(Y51ussc`Haf`H17-2k)sMeH^F4Al3@t&67Q7m){}-RakjyM{ zd10x2#%BwTU;9_j?JM5%9D*VfjD9X5RT?5IV`0z5hyu0XE+b)4O#%7ECpy(y9d-m; z4HB2sp*YR_px(gdEVcIor|P3$+tks_mCLJkeQ!RRsqAbrP@V-HDoe>TTApi4hi zy2i)Ih?*FkJLq<6`goCBjUDdAEOqqH`c}vHdv5Yd=O_9GI>;_UZVC65zFvLp{b+8p zTx&4scl;;RB6nVi``NcDFe&GeccsWjr7qk=obd_s&u%3}wKJyjZ-Iwqt}(vip!<;i zkj`2%Lp@+Lew_KP>3~V~qw1cV{BNsXTAfV>0#`wK&-Eo`R~NJZvkkC8`)K%ccwCEt z5!+PY-n@y8RY$?2!WYo`li@$BRz>3iN?BAdz_tt}vYjv@9}G@5Emen0;RfW$t$W!3 z;&mA?LeQy6Qu(p5W}pcx00l!Yh#wJ;3le`Umh}87wi?HA5AsQHINVfXi8Yc5N5(?j zZY>i02ut_^$^`GEcrC02WC5{!Slk>6PAi#?IZ=3>?gDWwxj87`c>gYEm`j4fD3WS{!mm_jv2V5^MiGtT?aTBZRC_F@;n;5vZZtnQcNVrUfznw;ow|Cz2SNH*&R}7daF>lvz39^U=G5`r zN}gws0JWeG3JAB<;8nQS{N+<52S5zh2WwD3x7LXygU+}~o|2FBzL+zQTwBiex<4-}}Lq*uRW@H`u02D}oR?{VC zgM?@aOdo(7{-Ca-q|?Yk1Wgg)cuS7pAksyY9PFs*%o+sZJFs=-+&#PV&>*uY@|19~ zb6UUGWBF%Skf3Qnbf6!*uEbB%(G?(9!3twMJYb8BrHP<|-|luN#E`n}RtFUwRfFdz zgKTI`FrUsp@jiG(p~;rgv@38W{nsf?_|&ygLI^lPV}Tz@-5r9*bi>h4GuxVpy|L&B;nN;t+la)Zu_`C{k|G~=K#Yn&VD-cRsfpjRx z=24~+mNeFbzJ(srKQZVRfmi-Z1OsEA3Gb=X1&%txYDV(MMsh@BQ|M(6?WF2!8dxKv z?FvY4BsK>YcY(7!j}@jw9si8+>YJOp?wW=>A(>(-9gsl@KhgtG4IfM z1zATxfa~;NORlhdsC{i5IjL+Em5xw&)StoTIJ^2yk4Jx8npsOYvj&~OgZoANQ6eO;123_M9ipc(Cd;=30LKMAG5 zdq`=u>m;<^C-=CG@W3rJc49|XOud91tth-dq#KvJA?*XjV#0~&JMf@xq^ys@nUj^X zh>AAsa4C*;q|HUj{yeL~TEm-CD)f512@7viw-KQ4Zh_|F!&{@3MimE6Pv#XEJm(_(@i&=zcY42z5rb^?yb2zE!`0JPvIbcVe z2b5y)JMx0#>s1(N^u^_-XaE?+a=s)j;@Tq*sGePCNv&XdZWN zPCWo8GO%4C4;NeFBg_n5nTI{d4KDhq%P!>`p!#%&G{nQOUbBVEf4sw8;&}VO+}7IB z+R*P(33TU0V+-@$%2>grSs3h5>wfhzQ249ddmr4u6?TP-OaW%Bp3-P7Zi zmJ?v2euw<2bs;dAY-nv~^rQUXV)*2K0&>CJYTOyOkRlVU>Xma@p$FI_ZZcE5Htrq0 zc?Ff>IvlG@TPWJ;7at=Yv{%eikbl?MW6=R7Pf-V8aXAf`ICsfFP3$9}=Y|I^lb#>B zc@Q)e)*W-6*=-RA=&MIE&?HC^fZ99D%le9YjYC!YyrUHjwjZT=Ka>ggX3(%MrR^cwA@iG{N!H>bfB#y=rd$CF6H8qj*SAZs7#z=E^V>XSw_ zLoM#TR=FKg|X&nh6i#C1t)3S z!^ecI-79zDgIw#Ed|>Uy1%6+Zo|y~yqxNK<-N>CPG|+r|-!1(e+|$10T~=#g3PE?5*W>l>#__0QearM1| zK3H#Nps{nY*hu%v#a~AJ?$6bep?V~+wx0-^sTJ_7Z7ijaK0=FjUGa&>VifZ4{Z#Xp z(!-bJN=2-WHQiR|j`-s{4R8MM(jJjry!1P&)<#&UNBf@gMe_G?TfzEEEhoInxw8qq zaSJYWU`8@0$Kc4>f1j0>VK`dh*JEvn8By1+!A$~3Z~^J|VfAl=c?V7zP9?UD(5M`k zwtff*AeE&lE2x53xea5lplkH$?mj{Dh^Y6D;(58dX_Eot?mczJ?i`!?e2CUPt6h&2 zTnu#Al2|uy>?FXoZNeWasA~rSO9>nE!o-2>KqSN| zL2Y|vi!OH%pKg1;5_ufe$SXG?%w z2ftzb^Zxhix4her&i)5~h$}fxc@S}Hm}vcEJ@$At61GQnLyQZm z!%z&6;UCR{lkHbxCO^ZbIeld*m3R&Hw>113y$$+poAhQadB4g0=AB3)eL z!Uzuc!d(x5zmBAfEYKraQAO2;A(O)ZLPA6RWbas2izlE&il0>=n}yYy6qEb+8B;nA z6Ak=29;HA8cU2LXjIAN6M%}8>D99{o8!+(Uf$~yL+cRXk>m&V{3e^ZKPJV7;wn@Uj zR`*?83x>jy7S5m<_|&q{R=`(qsxT5;n85Pn$8E3k6fMyYBDRJCyiQfnC)0|urLqqg zC_>V$cwJqvNUsg_VtfE-K#6j}@JNPK!icM~T)t@`#qZdOy`mP}xVPt8&ch*6qH??I z^i%FPP?b!)h(ftFK0OqqFZXG4b@-_11WWr=QF8$l*()s0Pz&;#+#EskO?UvsxtgVY(dK7h9_CDanzxM<)=%x^#7}A^ z;2**U-5nlmOZfv2J0Pa;AmNf={r=Cl6<5spI_SKz1swh}NWRsTR3 z2c-e!(EY5RK$Xj6U>R96s+vzhc?#-NQK?q=^3Wo@URdt+kWYNzl|ttRiZ=>VpBE10 zMja`z*}X5Q5Q6iGE~%u~{OZCt_^@+28_2f{cLc>Jp~G8U5z2O|tVBHq$~ARDTs$RN zP+#j|kAYY5JmMqCEMc8mv{sK+Ij~r@2mk&3%z}=*0IIdtMpRj*i*`VxMxy3ULN~V# zJxW4k4&5Ebsx088H9rZ5)HlGvXCTO}5SG{;9tYxCOzp8FMtdJ&ZUT^0HgMPLG07H! zJ9FqlnyWSAR*DqQee^M59zMr^3~A`uPA&u>>^%B8T3_2jl($(yP1%2_E;jOHSS*6A zf8W6KuXse@n27*Ie?|R3@hbF{eAKPKAVdl1SZ=@~y%}~ifA7Liz;2eR<+9J#GBn@O z3J!vppgVS;Um1`r1D50353|_Tz@7O_f_hlzY}Qo9X`qO{Q!}>aLHMt6Z5P8CJU(f+ ziC0h-tUqXjtZIrP{Td8dN^Hy28nii8<~R!T*&mjj@sN8z=ZhKOEEWRtSvddF#}Irf z1YP%n92Q|;LD`8gE>b%7Q9pkSkEzdg2wHC#Y~7yJqAsYEp(n5~f^!pjn)Ppl@q%fq z*hH>O{QJW_CotDKSMbDGNMIc#ZtM^<29f;~i=52sP77~%ZTva)3Q}adrhdK5U-8PP z_f3in(S?Huby*D%rKrnrHg2vdaJ!f0`LurrE@C^K*>e-i>+C8ms>3ZCzVeJ<0V+#2 zQM3qrf5>qhMO>g$Nd5xEngOnY9YzT!A8Ofl)63N>604*Ld*6xF)ux;)m$o9%Z06R{PR44fUxh8mf3 zaN_}kksR0N)El2qooV<{n1H_v^yQiY4Uav?wLK(i&c7$DS2?~{;GPz$&+>{9 zX#=&}lLewwY)R+$jD(Dw7tl6gsB`{@*&}Q$p$2a|Q*PmT=%ke? z*f$z?k)*#aJ7N!UE0yYG>kEKufETtHb_acT+4Vz#$7{g=*& zBbl?xhb}roP8>z}ftha-`_Hj=hDnXMBl$dF&Rv=R2~WHmR9;)zKDxyVt7P;98Vy=N zqaU{;V)`HvD+o$vjpa_gsp3Z*d>jtSI;xRdEr5+~S)o!3AwqV|FAy^RaT)CV$_ekD z8sy$QH0OgMBZ3Y9*CErj>CCc}Xn9BWU1MTG{h1Q#y9HH;lGT!40&6j)a|(;_kMjQ) z|FEA1&kpFB&LJ_84wqWV z%hW2pBEr?g#Ckb`L8n?vnX4(&?c>+q?{cFN%Jwi6st<`!s|7u0F?jlauec+HzVTo7 zHY#=#3|Y(p+o`QMdpx#r2lpdpKRc+55;AafdQezh6bjQ<2ah)Nf$2PiYE-5OuBcen z1TRTX-O@R$cq^Tu6&QUBdQ~|3|+O?si zz7c#K7YoWtD}q@E;(&0q034tRWsyc%40RCm&zi>Vq;G;cv!CuaP~9(*f+FBv^qW=V zhz#u@%6UVENG__s**Q+>r#iR4IwW0K<`?iE=FkmH2%B60YW95a4^-7%F_V1ycV}m2 z-yMB?ZG4F4q(Io+>Y*y-k`d$y!t7wA!XZ|*@*`E!huY>f41rItK-7UoiGsf%(*O4; zA*+Cp{7^0h+4&Mf;FM=wJ+H69o#Q5#^C;>-C+e(04punB3QFSnQH z$*ikVo2eB9TO%N!C*N($AJSO@XvLNNU2Or4wGh z4?Asx5zGXvk=a478s(2{+d5H~dR>y&D`Pwjl}ll|u1Nd^c?F-Pm6X`ry9b)Kle~VW z`oS^v7Vx8urRc(EMISj5o`_0)VfW1CyS*?Z^_FlHl4w!kqSnfqk`rC5eUYRvgxjIz zQ)dzI=w86!I2&DhcA>&cVbM0}74RHU#FV805=&f}`@7zhK&?wK+5hK%z#}V^?c7(V zpSlS9XCGQTkd@LjLtPDw3>>Hb4Ufe5R)?(Q(e7YeQ^4k&;H`L3VEr*7DZ@p5ujuZi zL+ci62a7!iIq+$4+cVXqT7oPJRXJ!hahh*(Gzz^vC|a%~9sZ@N(?a-JCgvymiVNNf zc+r3&7v)2ZSgUeq1`P<;8l>G__!#jBGsPok+w0tb zjCFw4E{VwNyuP&n1H<2K8exSZnl6kI8}ofSJ;IYyuYqc33o3`d!nXR*^+R04S8H*= z*`Hp@i6JDs`t0dtN|g45Gjl+>&EG94R97!lnJLQNQJhXvabCz9ppPJID51RjUmGxf zJGx6ff<@Ko3mytE{`|3wK5{bcBE@m`92DhLYb3non4*m?wI#~gCh{^0S#Tmh07pq(YzRc z_lQB^KcNR^P^S!P&SLw;nfB7|L-CxA&!Z#;)FjDNO1ump_>xiJ!7#dMn_emhfBaL& zLcze-vuLPc<39(Yi+}n-{p=C3^E>bw1B^|hhGcsfR;J*5Ediyj;AigApe?^(DlLC% zcvp>%{5(({yI0Sfq;>6TV-Te`hL}T0F$~ZYb5T#sef*xo~V9o&gXYu?JvQ$oY1n+9;-L{JrnMfjWevaQ-cZM z@)Boj=eX-q#HUm3k|>(Yjl{`XQOK+4!D<>mhXx(CUGj$yE6YoE-JCuIr7RCYa3cJ$ zn^M2kOhzss(G=7GFltDvjU}!51r7!Jc5?7i?i~_hr`c5-QWIPztv&a7l!=FZKIqZB zux!_ZMv(==??K#xDf}C;CP!#s+Qu63dtfiLrVYE>71^TpmoK125%%Zz&uUF*#sJPsG*LqgeV@Tg}5(wfVSy}hC-q+ zTz%hFM9=2}VBk}lHraz*TGIyX1%L{3=k-PxRJqEm!Gh-1J(#SmC>j`+iYVQJV!R67 zSovLc`tN{5Mbk28g0=O>krnu$!Lmcwwc!4#sRmQ`05xM}C2OBNhLL;!NkUBlFQmck z^w>Y?6MDms#xELI+1L2IyLm-=J6M}$K<+EAIhar<~61eL2@SxbwYJPv0X!cpT;&6W z%+m310UCMt3kwEOSf)CKAb*5ADD%@0mopqb>hxt0tLK2flVC{W3xj>-b0hgX+LEFD zz|!seRcoPBa0AlkzQCcbyq=LhDVn20{fg4lLW}xGEB@#tWe5*Sc!A<0TT=o-Yf)bETsDFRBk8cbT50*~1 zf^+SUa7Va;OQVm)UD6}^3psnACGg&CnM3j9!LzGByGDg;@?j9%;O#(@wN=XGuF-m! zR4x{Fmm4fy_%BH`cRohbdl0eRe_Q1Iy+?#P4%r7|=(-!52#(xGU;dV^JwiiELt}*3 zISJv)r}De#moeO&|Cqfz{@S*lJ>nFI{(ifBlsMcOWaNDdz~qaKb&NS<;lL+!)x!ygqpq*oW5Krd;lM{~Eh3dB`?z-J6+4_jHg zX1o7FgCUG0XUj(vyZ|=y6Z@w&m=szdnBT0N(-miMsSPmQ@%Yb5=UeBWRuij<#Q?ec z_p0WhuE&9G2uD{!y|>Y~uCoSQwpcUA<1OR8suQBdH8k1=Y=`Rg?aIFj1Nwx{h3ztU zlC9xJQ`bHLM4#3Q*!8QBI8u{A8z-DNV_Rfa>;4?RVt z8EKA(PaBlOPv=X2gO#+&KYS@eyWNi|j}{(mfIle*X%CrabARKVCCElH?}fLj`_(y%?y4uT zB5JGmW|gqm=ASF74`}raF+G9=EBR7wdEUK(MGRL9bCXD79q?l!!e@JjP#6CrB%iE* z?UOO--%am2rbKR#Fuo|U<)9$Qd%G~@ z9h_^zJ6gU16Zjc9s^c9B##KGH=K3F(6a8+@}@QzK?cD<1kw^X*|r=!{!5HVZi^ zo@N79)e8zojR5wDTmtR3*(eOi@pw;1y3lh1L#TYC?xwX>kK z3oMs*;9+y;{{9U4%lf1H_kF?slJwDgeq!#H3rqHm+UxYzZqI$uO~nO2*~9T%3FmXN zBO6Nuu9S+}1vMhG6$lLrP%L@KLo!7_^9F~3Yx$Z^CM;AuQ^$w z=tPAp=q|i&f-+n~U3zNpu<6T905|wxkTW{-?-`%a=WxmMP$~I$itz7(lqlfW zM@1VuhgzV~1Eq8pBiiTn`(OJZB#=}hZ4}@)T}ZwR$~NX?&VraajET^JgzpK;%KNZS zht_?&^m*33i{Lq-VwOQ^+w_o?dH#(^gLm5Dr#_dRoNx2gI9Rj01n!cEca%9?3E%Rz zy&CZ#^NROQ+D7gNLQFud<=;eRKNKUoNw=&%Cm3+S%UqX?y zFITk-zMFdt%H+0m2GoLytecEI4=EFcAY#Sf?g?jsiGFL(di5?mal&cvdy|{CUiXcA=Rz$J}rwY z??Oao*sb3QJ6=OkALO3bX_<$o)*mz&hERulLUB9UId-(^lOo&$;A#y>m;n_lMa^g} zav?K&xJsnF=~l@o_9WCcZF;_d<#|reP1w{NX&K>cT*nN-MYx$MLBXhdQW~}m zhqd4txsJ*^nKnzM<5{q3LZYRR4J;WfYzbEdl?pmU8`#KXA;Xu5SzI(-kQkk8q+{((Ti%?2YBeu?z*LC5RVCevLI zhj{pcrunT!7|i)*9VBpezT--csR^*=w-0a_k-*ljML+6d7)OZ}H1-{a!myJ`PxV~UXSG<<0eKoRPKMAlZ6 zf#pz`(ZzeS`SYJ5D*Kh;wUlJUduZ|I>k$`#IbOZ>6DApBUba@FYjk1IFmDm%QG#!G zW@$T%JPg_g0PAppb?y<9q1ay5;0QlVd1sLRd_Evc{7V~DFRh7>cUo-Ng?-1c0MET5 za*AHN1>B2A5#&UKqr7O%o!k(Fz1lUYj30n#{NVxDW^Dv_M-LMT!+#!xNasvgskUS2 zXZW662yNE*7GVMPw)F!{H{lr+z1PE5n$4a4ohas{fu^O_$e zb9Th0FF%=z?|N3WfjS>Gxu1eUVIZJ^@UB?5du|<%2HVPzUP{Kl{ZYT${(Dmh$a4Y>rOSg0$ny20!Ou(^#bu z$$81=-kzpl-5EwBE(&@d17n;8|$%>LC;qlw|a%?tRGp!PZvqi)<<|`7=*4+eLwg9R2 zAf8CEoFP%+brHY9K#C+HkgK;TOXgIi83%eHx(Eh09X}Ye6t5kXSnOoiHsPN+NgH;O z{kIr z8Mwkfq)@w^OpdM%UPxTDOD@Dt5;4&QC_vC5A;&pwKmqF{aF=uXrBTK_= z^%j`SdSpP?G1^-~5dUB3D9)tQ;4`Q>w7Ncio=RY>1W8)AY<>056Wl9hzdit|6vUzO z2{!4UQsMfkx}C`@^xXQD>k|UPc5A56ocMWJR~x5XZfKQA1Dn;mS5O(I+4x{+fAD#A zg*jjGbG^czT5p8oCK_J33@g-Gof0ZRrX+(CwIS0~tFfH%L~S<^0M=E!;2379hv#ug zVWj*tI+TRyUxAq9fn0=Qlpmk0Jc-aWg4O8zHkQz{n*+H@EOeH zcRIJjSPay5Gfw_f>X|TTlefWP^!JcjjziV}_~k^7J@uf4_h2t{F`$kdI~aq|oUOI+ zz_z)fG0~BYRSWV33joTo0x(>?bh2fPJbIocYS|0JI>L5cp*?oR*og1JUW@>8OepYe??}#u?ERO3 ziYtJpVDBMGo9^A@0OUzi2!M~p;Y%zZ#i`VK2~Ku#l!7G8AJ(WmkRIQK3j+o0QgC7e zx8R5RS)c*-q|0!Ky@NUI8xo&ddQm>=%PLn_{T*$OsxmeB&vbep%O;m5m`>Cxv`cl_ z%A$1;yaazwGg3^=oe`uFg^9C`JlEBFvtiGfwb+TVh|Q$W>Rc3?FnXDh9!ajEQiaBO zgrCXR-QIVC;(9~cu1z);%Qfz0)H8qpo}6&v2uef^w6(By-i6JUZ7fzSelRo)5t@`a z6q$3tA}b`>Whb}TFHmPvqwkBheP|#ic4|AJgZTAzfHW@|$@R6QRUhq!RktbL)q&BHdajlMrE{fyOOT|1x(T zGgFTxS$}8hjZzJ_)BxC2uD=3ultbT#>I-cg8)X7X>rm}XgxKSk(UX`ixYs`(lpAs0 zEti`W`3kZvH6w=sUVI0+(Y3@E*p@{t7^<>La+KSs+(vPjp=R!e-j8O|6!RM_yCHdwf*aiP~)+yX=b-L8U? ziPvOa$=k2G-hYF*&2+H>o=Z^6WXl|Qerpn%Ab%ag9}3z zbgG(P;ucQJSZct}2=zD)Qn%n>-?loBO=dVsx>ZwqFh4J$?FlyOwB?Eu{jC!&KqqJ# zCvj`9+#Kc)ByT&x5HPT83EX$VWy4pZm)oA73tN5>7=S+c*hnBF`D)Ei$L&p!Wr~+) zK8;le%!#4`1Aem~)f&!O>cPae7Y+X7$bcRmWc`=C`(`Dc{=cSCN+*@H&tmGVx*X7pzcrY#}ig+&lLA&BY~Tv*InQmP~w4pj(dO+GSGwXepX zmH(C5;ofQjt~P+agvgB%`ihe0nU4Fkb{`3WAA1YTqCy`43cdX4`SG1p2~OFpX|Y;9 zMPoL=qpMW@X$K{XFlWTc@GR*~t=b;=OD|h2%a(ix(eEAJTDpU#x0KfwdEua(1fk`9 zOG-uWvo73QAb<-JCnagxBN-Dkf}jy2kSilssOAsi6l_8;QZSSg#`r<%jEIb&1@^XK zsqj@C=oz*4|AnQRBHdvU(Ii%wf9Fo;rmY51=SIWR7d4SjY?pcX*G23T zVUs*9-nbqE+tSg`gEk{T2>$=RDUQIT&#ox#(;5chCnq8Of2T^QVCKS$#* zIqa!tL30JM6+Qj5uq34ann_Zjzk{&`_w}m6k`PIMpU?s2%h)U87*)_%BF)mNeES~& zQUHyATebRBoEUxM*OY#2}Myt3!W<2#;g!#m8xql*g_{`qSN|E%Jos80uq+U4^Ex}E90 zT4xhxOeq85Clmwdlh1@jDKko={(iIW(;Qf%b;T4E<;g#a2ui-3&aJ+=~+`xQ2aE|bHd4HzimLO znY43Im@V1Hpx`a9VEg$KNe3XL7Sb^X?7ss1UEpp~AqeD};OWDS^s&1P#34VE79Rmi!s zgaiZewz?f>Ju|!e1Sx_^lVx_-rVrpa%C)vqomlwB1rG!w{sq95@Tvu(KWe4CtQa9+I>#bTrkzzs1S2j2`Q6suy$# z$woVs`xmzFblSmZ;HaDc39IH=C%8O?0&+;nt39?MM*bR;_Qc-Nie@w^JBue}m$G|9 zqD?W-iEPWEcWbf|Gv|d^BhtTSZzX#Q4OhZUcoxL)l;3=`$EuT8ybb2MecC%ly^%gt z_$J5CQRfei5%QQl-84Qx4ftMioY$lP=CZ22*FEgAQh(#-m87Mx(^}TlwI98Va?<(` zX1!HKF)QcE@lBlHOFn8_t=pS){xIEjDcw@}g>_6ZiA^^MiB=re$g5)`T6EDxmflGT zqrWU*C@V%VV@YIxrh$?~iV^BP>xti)mf5 zaNn8nKHE>)XGQN=INWzB-*lDSiIS^9kK}fkPPMw$prEvx`KC3OmA2z;%c~0A4;WHl zCLQR1Ha1o(JdFBP&cgF>lJNy?f=SyLj* zSO&>3mKI5tXgQ|^B}>Uxp(I<2kZlx&Y-JnF_jPsOpZoWF+_%5Zc|6W(nR&mj>-BoB zBd{dST+tCP#r9{!5uNgL{?~`F5 z(owtXSsSWPNx4V6ndQZZ_Mz-<73AwcUv)KVprA}U*iIv-#Eeuk8M2z&o!GTV93h2x zuQ*ZqOM#}}r#m+en`y8OH&zzcCZ=4{Zz7y&;X2LE5%7oQ$rsWXA+lWnQpOqPL+}qA z#|w|H3VPHdF;M%rC|sfGKzw|DGuP&1&6|WsiStf8gGu6MX|qe~D$?w4t2g(4(wF9qD7ysrAn?FE3A;$V&@A1}66Xz=s ztGkD+b28msh(U?JS6~p_$`KXRm1!DsQw-darj8dw;;tWz-Rt_{-CvWmabDR|qXO(= zy}2B;dXJ1aE+KIdY(IE&rteO--{chFR@35J$UcNb>x$rvUrLpPtteSF;pj#$W*wdbB z`#QUXpJt0bu#gKh!XGXzEV~I5DSm;W{fe@2J7}Zr3_{x{D{j&qHiw}pMk0X6w^QppV zV{BfheZD@w#On2-Q~EzoeSY*+yDo9Ds^-qu#tj-Gye45nZDDQ}XPX=Aj?Z!Whpx&D zJnpV-u9hqHhe!DLkTf7*S>Ex{PVc%q$ zw2qgZK0O#>o(9+pK9vo)8nk)e6*DAl`?c#h;?NI*E+3_GCaq&7f*xgy_T;h&to6QR z9aNN2X%nTt7_Nmd>iPQs%?$`!m(uU``-TyJSxH`MW=j##A83)uQQ+Nz!CpN5;S3yc zYsD;x`mZ^vqZc!WY~V9LVGWzPx6C`=DR28s*8KinYMXvxyCSza)`F7Tq4LtEDuGSW zfs49-`MD&{>Mqa`fAjL;3+aDxP-(g&OfGg?X~D4764;_Cdkmr<6Q^)?sh87~jS|Tb z?&fJ@9M10*Y+rdw2yDdcUzYVcV67<7cDFpcw0-n!#87=~ttP>}xoSwYq^4^zP;KN< z$*okXc0fjq^~t!Q$&|yJzn-;8-ORFbb_WP?U&BxeRzDDmBL%c_KN zrXkKTUQVUA+9f~ZIdxc4+cu1@C4Z=*5=e#N3EuP|3)9&anI>_ZAip(d15A&ic!I08 zY1GOYRJ~Fu95bs=b>yV|K5nmhsI7aeEz^CR_goIsS&rScE7LpDj$BWz8OPJZ2; zYJYH#t#4~s`tj030>4N*cibsabuHe1^b~Ka@CD>M+_SQs{ugNXZ}DtaamexR3;;DC zeva^d*RzAA9hQBZ9x`#oMxo%M4C~L>uQ=QkeVIE8!Pcn$3r5*mGeDLdgs^Df8xU(b zWyl<{Z8*i-c2A9}d-}StyGt6K9y&>>(&T+Ap?Xja6anzPsnj!x8ZiV+i;btNs}zQ< zdoCdr&NIYHd%#5F|Ig_mqRVcU^BMloV=82W@4G?} z%U^8Ey#L&r0!6S0h@PLLriOd@y4w6o

y^>*N=>jg)0UOJUjTEEVQ->&=8!(FW5-lFG?@7r4uB zfHokIBns-WG!7=LQD4^WTygY(4;9D6kW8L2S`I)=UhJ6F52tT>tk z(uma&xbdz+ArXaMPSVflyYQN$P(22M8yuII3WG$R1dO0`pmOx6@_1qezNoy}*f@hY@I$z^)7%lIxu1&Yuo#K@v^_~_n z{1wk#vlrK)F2*@aE|t&A_(BGaJmpoRC+8;`t2*OsAKADD zTE7|pqD|?qgz!ZmUU*WutSz1#YC&28fO+jMVrFeF`!N4mzDzI z67l;QH@jKy%br6oIq>jgFXqwj-)w`NzYNqzOc9*P-u+Lk1+lB_LNEAx-QE+iws&(% zO_`24>hZTP+nT3eACp(VuV$v{TBX&0T?|KN6-i~h3WC!-*)Itq=h6q!Y%6h$xL$B8 zk4;*_EspOW>>zG~y_)_(#;GcOdNP0WiuAzsV0LARaAK2z)Vpa}KGp(c-Ial)LwT7Q zR5*~#5t(~vWWMGQe^BQ!;fH*$$~N!Eim)Qy84DBnjopOLYm9gYYx7q+jr0WruTwjf zeCH^!X*+TWwx@um{b$u8*H{nvi6f1vpl_oLr>V8TzpY~;AL2rF8#RC>O9z)kpG+9` zNASKZ+{4vtS+%f@&AkejEs;vC^SUHQI4q^`;zK*=*XA?sKjko-o9ZbeD9B#Tbuum# zNwQ1(Ey-J(mOzJ%DLhM--9-8$_I{~tJwxfttUUJ8oTR6fDkG7XJZlgw$cM!o!3rfF zYon+&EZ*i#S*R?=cwPKT#+-pZD=AS1#d3Cu3AC!Q>zmq?W-c6d^{AcUFxw}Q(J`}UJT=8pQswPJ6#N#^9s@vkrLDNUQw<)74cSw3&J?E9wda!4 zzr*uihjw{8$fx&>fKF&`@Um$>zp_*iyEn{=tBsNYN0jkz!8fLvHr)Rqx#NCY-SEOU zS8fS8o#B|iY{vGqAN1@cJF&3a$>} zF74d|HmA(AdJQ3iWud5cPtfW7L7Rs6mxe2DJ86se-R%j)>3f=A{8s0F;EAo;(39(H z2Fw~Tp@l_kb=W*f;eGljOqSQHJskf?|Bd2yz5!FHYjPs=GkB+3^%Q?B0gp;F6rN

cRUn--2D(s#`A3Hk2!fUgR6#?56dD1Od?zD2Rf! zX}THP$A#q=*^XKppr@mAFn#L&kyE{Se;`%Pl z3-+hk4-8oxL2KKc)g4{mh#(+f6C@j$9WP9aKZxeYPeX~AE;RaH`a z*BL)fKO_ZydiaI6PLAD-^cYj*21yjYLS9H z4-k))w!HOJ;k&B$@KK<5@a3^>5*${IA#r2M4OVGRVg8=OJND&l(B)9qMhU3$Z05FT z%(gZ28i1I1R%cJXIG~F6Qc8(_f8cFIiT?R-2{=A-?*0Cfu_s!Bp z2)<$vd{u`|#fx)eQpBj-QpvyI(vtmf|K;|XaOt~Y_H)ys6yX>~eDJH;MCP?93pJ_} zIa2=Z8!ru!Mn^@dWbJxtEg%tIfo>je)gI`mJrxn01i-BFRjDbz#6q)QHzb3MGDA4N zflppwV*7DoQ|}l^AKco}c&o@Y#*w`t{R+ET8WWZwhQmC3FvA6qnDOVwYGd!aIPC|R zd~DRL`A%uVUa}(+mL}DZ9SEbpV8u`=XKqp@zDOSI2sNm^lK&W_{BAV?{Z+H3>kcz( z;Qby|x6*rrvr1{+`xnXMy~94q>$~~nV%uPfF&UnB4R6Qd<0LRZ6B)uTgVzLReD}hF z@DRcKO*)rulrK3 zUwYAfb~S3ie^Q17;XMk`LL~NKbi~FGyi&s6CVI*`?HjItneQdz$yKk| z?ljlaVPZ3aV`_4Am$PPj+nx0rOKCnTXPPIr5Bq7b4YiwJFm&~>mOkv8v1uKZAiM7f;G-lp9{KtNgDC1ptzDmSfny(DF)aGh;Ds>hCNRK#2cl@BA4H3Mpwu&|iKYWD+b1P_Q_ zo^dYb-MS4cWwJb)wE!Bv2zTvUVS+Oe zIPOsfs0a2eg^UO_J}$(v;Z`1GOo%s_nT$?16?WfBh@=$#cBCB9izOdse?bDWuahvyR&pcm`I##wmZ^0az*3lNz_v(FIIF=RBi`%Y$K|a zl{_rnBWcVxaB?0;Q@JuO+#jfCpkreAV9&LV&30yb21PDXPOaEMHoB#YMtDCGkavmJ z?U=rnwo#B@K=6+k4FIO@GK;vvd=;9gUbqj@Mb4MctIslUklg511QNH}_M1=ip2Y6U zaPBPk-7nOQ62@O&F87bRVMiJR^9UU(_}=4N8+4^XG4LX593o7xZElI z53xJ~KCO-!`4o-9u=ddVLGI+B^r*(!pQ^ovyps<>$k1m}go~AK%7t#84*<3x-&wNc zAC7aPbK%_0&`uQUrYSFveQQz#^XR(EyLBQV_-zpQGglUZ?q}pIi~z4)&n{GI3bKcF z7nt%DMFb#IVuxv-E5xfICtdr-paGQ&`+^2y+G7{pgJMi|J#~Z0s#sdE#S%oulp#8ptcDdd zg4qmtGUOEaYc+tD@}241eI8=uengSjaBm9OhmbKpqh3Xn!}~3PfbUkcm7LIbupXat zCL~#!M#D>8w64yK?J#p6IcQE|&Gq-gOXb`olz$(tac0lnxPnO@>ro0EYNCPDx705y z4~)uRvNubO;$()CctuOwfF?OEwr~z)m5U!ea*V^Ll0*A%_owOUieiwOB3aor#)e=j z&1Vl{v(sea{Fpf$O^0lMRW9 zJne=PYAG0qHSvh6=mfAHAHpJvw1=s$LzcqoHhm@LDT^><1{;!Y7MWxMaUBSX)=HXL zpVrhv6l2IInZ6%qu#SIEHml>5Rh96G)57yxQ>-rb+q+K@suuAQf2+>2EK5hmy0>HVK-5 zqUlON`*FwqL8v)i4?%^!{6Z{Tnv(Mus7h%C+#+$^FXPgX!MjsBQxAYpIq`_KsXe5r z7HJ@BJ6iAhFKk4y*3*ZJZ8MZ6WBCjjU}ygu(d?Jadz&N=8e_*cx{MB zfP`dpJnWDpIOg#Pshl>av~$I3$3 zdgsxZ!+J}e-b-6{+$x!^uO9|ZpgVW3(F%Ma!X;968LpnSUF)=pUi@iV~nV>{Y+MK

8`YyFKfmK=J($hQs4{~{E{M}(Sp99YH|RXr~f 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 Cj~=k`UQPoI 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/2/solid-calculix/precice-adapter-config.json b/examples/2/solid-calculix/precice-adapter-config.json deleted file mode 100644 index 110836c..0000000 --- a/examples/2/solid-calculix/precice-adapter-config.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "participant_name": "Solid", - "precice_config_file_name": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "Solid-Mesh", - "patches": [ - "surface" - ], - "read_data_names": [ - "Force" - ], - "write_data_names": [ - "Displacement" - ] - } - ] -} diff --git a/examples/3/README.md b/examples/3/README.md deleted file mode 100644 index 9a2ee63..0000000 --- a/examples/3/README.md +++ /dev/null @@ -1,12 +0,0 @@ -This is a first example with more complex structure. - -1. It uses manually set couling-scheme properties, like max-time and coupling. - -2. It defines dimensionality of each participant. - -3. It manually defines acceleration to be used in the config. - -Inspired by: https://github.com/precice/tutorials/tree/master/flow-over-heated-plate-partitioned-flow - -![](config_graph.png) -![](image.png) diff --git a/examples/3/config_graph.png b/examples/3/config_graph.png deleted file mode 100644 index 9a4432a8f54b2edb9409aac5b185ded2e5d7df99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261491 zcmeEuc|4Wt`|c}AsZ=|u5VbW4q0D2WGKUNyOYD?+mU*peixS$IXJtwfip&<7%9tT! zT180aaT%7i&ixqn_jf+$k8}P$pRdnn@3u|vdf(^0pZmV<>$>je@io;eJDJ#+FbvzN zaP^V~hN1st_-pGH_~U@9yeIr2>3CV!QPalM@!l=_+nCBNM_Wr9M@uu~!_K$u9n5U3 z&z=?%JT1g`_^zX)t%Ib1fYrahaoWcIj(~#=bpWoi&GzaI2MpVF3;jd)N-o6=qr)(T zOXshY5l=v+0i(vkT9&70PEBsf>yo zerfzT{=uKxEdEc<`!^>}cnx{3On4PKcH9WPKO%XjVVu%gbk;VyGN0^a9ugWFik@Wc z>)Lhm_SsDv-(dvT6WG>&zq@=D+x_o1Po80i|NVyL2;I4Vzd3nf6XD-)uKm3kJ;d5q z{MK#QzZXBZ=MQZ2#!m=;9{ukJVc36{4h6)2gJE@B{5Kf>8w{&~fd2L0VEAt^{C^e< zFA7A8F+$`u4UIoYUdvX(X3a;JBV^nUvv691nN%k|vk{a9w^DSm$cRLzts z_$YHXo@)v*l1?wJdkWOkw9_LE5mZE9*B$~4GBuw5`B}*R=ck2%FdY1@pr#UE)}?Io zucv;uXW&|tHa^wd7du?)sHmve=O<9|iQj_vP38q=T{AtCTjt5ibYCZkG+CO=O{<)* zFP+CaMT+^>J_3v1vK8B;e8M|TV{4|h40$XS=KaP(ahyn_zsE-RBy&yKwJsB?_@Yh|vzQH21H z;ICuodhGYtwEZMc^35a@HSr&Rci7kR&yb7V=AI1JM-3e>|EjIe@57M`vAEEPr)myI zpNMt&Q?$eAVG({HL?>XoK#^dwYD^><5OWp7euLdso!OroUA^~d`}PM&SqEgCSbyNs zkE&>W)KgSr7DjM1HvDoIsc$5M7&|OvLtJqlEhhI)Rm)L@dhxUsj;B)OZU=`iZ~Mf5 zuw=RqCx!KK(H5?BJGQ7uu;?~T;AzW6WBEg|we8A33dcTlou-nBwE9^)lG{i+CC7$T zg2KsVw&{vVTKb2YTgC1Z#krI`9?j&Rr9Y1NaA=f_!JB^!VI)2dS8;*&XulwsPOMAI zC}CsdbTQ(KIRO+L>tSNOF8$(^$@1C^V%?eA zic@KCG?Lm6tv_J=ao9zC#t>-lIG!(0mhZaL5%$5VWN|R$L(+2UL7UEOGgo|1ffKy5 zx=4$+5#^q@n_rRa`l|*6Nzau|-|$+7U2D8B`C}%#jpZC=^nGJry%?#Etm%MbqKQ~{ z=TXA5WBo-t?>?FfmLX=x5-9@$A#Kk$d8L{O<}fCI_{d_U{G&8`C99f~mupvaBK8x# zJ++aI9!>W^Yx*z)c1_nTdmPr4>rSkzDRaj@JtkTXB$6fagj{*alk;WyP48~kcH9oT zX}{fQd49}c`Fq`4sg$`y)>4`I4wFZoJK05_!k(+H=E6r;?;;PkoCuIz`qk~SFkLHf z1@^??aMs5DWjziF(l1^~pjbF?lc9;f$SEtFMS4zOPP<`RHh+&=KVhUbHK=P&L#nsS zhIq5LAnc=q9F5|zIK^(6dENtFO@2fMY(a;d*rmCVp^Vhqwr*(0!qUiQH7oKCs28<} zu_Vv!U=uzWIG&ytJ8MwW7W5&#;P>nI9u#?hwt@It1&18!gce;(Xw>CJgY_FD7$1Yw zu~qM0kCO>;W!?|oe@XLvkeaLn0!{g5l&MIfgCwI&S$a zw8T+a#7G_v%!@I$AGb-I(@ECPwa)rx8dYgsIK~P)#+7-O*Ya5IRNdLeit)k;&KRkC zv1To}f~uKDxwwa3sSz1B-kZAO%y}[I+rF1rR#%xWl+;%Jm1ib1nm^QT^j_iX9i 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%0DSMeqk;QZA3~+{io|E^F&3PJ~O5CUez8D#=i;+fZ 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

ZtVVk{ySXyp44tUyi}RicoxAjP2R> zTTd>-l*(!+o(11fjGW{4cNWTP+!TGu?vhTE3biH6H{unsjMxEO@a46`n$OR%_Rfkn z8>jmrvC3o=8OP-j!cna~S*M*$GJTfS_$-U_Z0+dr7c`fr92fT7If8L0Wu022?oXkj zB@j^9g(EE-mt`}ED7N5EpOS1zOwS=bTG#A8lUfK?e0?87%<#Bj(#VrH;Y-j_#w^Qh z+8C0ktQI}hE97&^YobM0`a}@)!B_5Y{rh_*w?@uvW+L(|k>^SG2X-r#>wKTEWZd$b zofKpc zj}mWlpKc%vT>|F@0POH3BaN0^Bfp8%R*ig-?GOSEh2*iN-K&PXI$v!f*|5E_D_7T* zDUxHnDI(lKU`Ce{;$fe3!O1f0o21)b^@FdtNU-G$vs$qHVloS&ouYca+lZU_Ua`xn zM((aqW-Z$|1b=_+r}%Lb%Iq^`scg1P(?0vxD!nSpu4gyAJpm=?0| zE_|AuvIvJfM9Erh^uo2B7r$VzfNYm(r#YJ+#)1&9zn$ zWm_yIY*&vc9Ukz}ObTj?4F_a@paq$S)M1_C3L-ht6cejil#7+!PchoH%DY$z-nJzp z^$0CB=OAy9X>8E59xyAdM4W$rp!r~(2OUS+q($Z^@G7?=A>|&W5il^)XjJC=&ZA(b z*F5Z-0f?*c%f7)}EwP2^&y93u!vC#xNxm}<|L@nzDqF@vim36RK;Xz0rdPhi1Q5yB zj4~qV7vu7el$z8tiE>YgHt@hrQ4&+*;7OZZuQqbQ&B^%1rrkG3dL>b6hKV{Yv7L}z zq%BD`klu6|k72#SD<{5BEsW<7*c%C@vueQ--1HIJW#7O(pX*nZqK@*M^!aD?v)?9- zoa>GS7k5f&pmDY-UmEP?I^%bcDJU|NDCp{Xb1l_A1zxEVJr;i`X_I`%@Pg;u@PTVF z)iGZVJ2&<|xEESj`MQ5HHuX=#xuGXMZo`IrQ)`Em*CibT?$ZtB10*PeT$K~WE- zCr2p})UGmtm6viBx=Fw1#uH`($xHAki)U8#@^EdPn(7dY>IDLAtSUr!ACn?T{cLX> zXOVKUHH#+}tq{;b_5|OQ?1297M&Nh)y>>4v(tvy|0p!`v9YS-ccqd71i_27Y< zZcX)14pjU(ko`DSe5-NN`#^&0JO?fK>tL1{Ot4RDw{DgB_;M!h2@>iZ(0$NQ9MWa) ze*daHrJ9&@?=id#Le{Ul;n7ml9kB&*ee=)0A(@&R!gJ+Q8ayaL3{@RkaLU3dqm z>Q+2n%L&Kh-&ccuKr%`_&1T%%9@893*>%i%HyFcihe?FU(6~joOd+_Y+FWke<@bTN z@$9Ju`bHRkZZL#HInsUreUD9^?-3*JyIwhqk8fQ(?V#dQ?2wKDe0o-RJIO(mJ9TUUvy3 zD9827q>z*Eu4eQ;K67sghS)#O(xV1p&$WAUS54vf=R@o2j1{^HUw|9BRfEuVhG_z zXD*7oAnqmjW1B*Y+v~l&YWrt&z*TUO`aB$$xHVCEZV&ZCUuE#imun2sS^_)k$u+LC z`M;)Mq3{tn*WLm^q6hdCuVXVUsfDfInG!!5r>WJeeDG0}r!_a8qn<*z4MUhiu%K3o zKBAy+w3EU|v%;Bwp1vgam1IX1AxW~VOkvUcdA+|YZ;}vOK*z}WrsOkGzd1U$dod&S zge4Cig%TlRSIhg#`EX(yheZ0ZkB-Q&gu!~kH~?he9A8ImP=+e3lrmeO9Y1o+9T`An za~UCjZ}x3<=@skX*u8NSuTc*UciCRL}7X#cde&(k`AD#E{gp~o%@5>4u|Tkud^ zjj|s*Thpw}&~}*~4hEMV#MGjfNp^n4YG!nzOxxNf4L9G>shyo_Ck)5@F&Xq|V+;LA z0hAThD_85#F^(G~MH-MHZE=VJKk5EPeo3DiyArdJ#jGV9;q0%R;-$4~r&pSP*EARE zAI;=MdE7rTq(H8#lP-&o?0-{Yb0|Z8E2TcOEcq7z$$hP{;%h7L5la@g_||!8yiu#; zCx|1t*WDTa=h15Q=I`!s9D$skO?_!9&qOwU4D+tk#_rKcs)uEE0*g9B+Y9`_hgMPc zF3jygU?-?S1fT}WNj=KtWYrc6Ts!zPPK+|53)=QQ6K|uR{{U{C<55b?eDxLL5b>CX zcZpZA@>?1ot%I#SJ;&Y!1aX%gZGorp#28p!$W=Fro)3B~O<18PXwc$~+hMkUn6OISDQCw%PcTT=1NHprT9S#deiRUh?m zr;spS&vVRWSb@&W4n-?UGyx9fn3vH$QkgC8=Z@#nZG zN7SXxtN#H={3CFh9|(9psJ9Ilp5JW&cnZnQ$kq-b&1^<;%vVntjx zX#mw`1ci|zjkSwK{Lu4j+n0z_J){2&iAzPys;Z@WZGdWa#K98gJ)~DX{ur04Y;k0r z$jNd~mBWnNPouCIxD9k8QukqsgzYPFqB(p71VI>O=;^-2@AqmH%3YpsD<6EEuRbiT zzOXPU_f=%|Hj-xZDcg11ZYn8-`Ia@aV{v$Y;c7B0({+dQNDAm}#!%-=fyQ$e_7)%A zleDI4Hecfpd0D{p$~*LNuuf|q{LDD=VYN5P`;6GYG|u`$reYcn^R9C;MxU1wd3C0gOKd(?uB?HqrvxU4Dkb+#)EB7R^OnxFy&<_DeF?UEByXQ z%bWt_kZ`+XPC?1qyERjS!Oz2udU{YC8&kRF_A2W;w<5d=u{AQTL}m6GMgGF~OGp|3 zd{D^}!QmdML8_Cw1@WtOgH4u-aL|&Y6|(~p%Pbp^Y+#s}X=}E_jyZ1ooB4+lQyGZm z>tLxcR+(5e4O639#K_2&ZQ~Y3AG1W4`vXkp^xY^}sNAyKvFwGO7|-QAZZxlka};dk z^gOYc-g8=1F&fmNJv{|;Y{xzXHw#Mc@DMk%Ng@q=#WtJ&xtN1ha803wwLoOYk*`~8 zGIj)g190tku;o2k%}uxj>RU~B<UXXs#?)Q`848SQT~3& zhdM1zE&>G+)qyutBumk3yUnCZXT!Z;)c4aK?AFd^K8M%|6_&v|`z!i`vg!*{*z)87 zzv@eH=3YSUVIM}JQ9&IQr$YM2mK&k}%C4%Pv5S%q=)6nS0@VL7cwu*!vh;u3vLk3{DUC9 z2EfNk5^IZPUQg~znwWvjto@JnvF+90ay@hs-0vaiwb9KfC**-3H}v_zxnVUb*Oh}S zUaD`I|8U?`EeJ1Psv?j`8FmhlW*7O#}MRh8VPFN|2^Y8U!_ILFoG|7yxq z{jHsKFJ!a(jz#e8K4e3?ofsIBEJk#LFA=9&lQq1mW28%;BumbGoW}PGI3$?XoZ9UN zbthHHV08;I8lg3y^S<&xe(}pud;dmg<*!mAaXYa^F4m_(@w^Mg6CoF1swDmAm4o}( zyEfwnyUKm;OdJFI73N*SzK?S5ErP~^-qaLi3$X0@i(8k^U7tlN=qEe&B<><5K7++C zy=D31XR7tfu(0RLB;3e8{n)wKoFIY=$K@s`0wY5>Zh5NZ^z9@3xu?L>z31B*AQ4t; z)y~F%oU&6xP*=Z>agKKlC z$d%Oj59rM}1?{?31XuOGgO;kGc9lD+4|L3K;3Ip6dDd{0ktl3h`#z!y~{POBj z;1cAQwrx2g+EH_~9w(j-EW{H74WEFgD9y*y;GE_{!bo>2UHT>HjTdUx7j!f13rbS$ zDR-*iDTb{o!f1}ZP+1&$2UMl>Z=sQ5WD8iD4uLt#X$a)7*R?%=UyuWB>zsXp-?xlAyM0VVF;U+A-F zIL>mGHh5vPV$AkU`&`zhU@W_2G~8Y`bUi#Z0N)o?h3*8OU%(6ka%g)N`f3MeuY6gn z6MY)V#kfd%w%`HpPpepsjEJVjMB`mB=l+1%dQrBvr}^Fz>vQxFtmG#HcSm@z;u&$m zXmAOyw{B8>#D#&BV#IDo)`abFp}A73dXht&eJ-v5D$Wj=vUMc0K@hg+OOw{8&+LfY z&E}!V)PA|#p-JJk_5v9%YjFb~vKe%7;tvAq*=DtR{tW#eAsMX+gyoKWSbm&9+|LYf zK6Spyg#28QMlsc{+FZvi|766(pJ)$dR6`xn8OF(?KF&KBLVlDt32czcrl%lWbWiQn z2;dJUWk-W`{?I*-dd+eBY0ufu*$SyJo%soDFp+wG-cXUwbwaVGvUMsyp64x2hj@D3 z^aL-#aZ7DxN&5B>?H1H@jzl*~!-%w4Sd6|;UzRsKd3#$K9}?c;mg%8H@uT5(0c^ZA%8+axb>}e z5EoKR*pXvR{q0J(7Vv81&R8^QwjCB?Y{VI#P+yW)9W~x_7e>7fezx1ooS_fk*C_t2 z6VQaHSL{zMx7{lV@O3KTg?K(9T8}+$-C0+9*eT8rD9t?nbC4+~2jyb7dN&DvtUT(x z0T1@edelzVS+sjQ;95Vyipox3n_tQr63XczPX!a6r;6uMC3x_=G4HESe!4K8kPN}2 zEf4(PK4ZR@Eo@a6p}G)gKM?+u(w`{%P31cq!9w=2F)q&Jt{%>xu`2>b95t};clAbk z*naqeiho2+WC`xQ{mwt91t&+@(>)89x^v%0x}M?5zKC5Hlm@apsI3p7#n0ZBq-x=z zV#X6tWvTHE^1ONnOC{Xb{n((NCTeQ$tZR)=k@b>fx0

@ysg#lSgIewxL;Xz$mN^2+;-@iwS1)R5 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≦V&)Yi#q>LZ}^$oeShydUdBUT$Y- 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/3/solid-fenics/adapter-config.json b/examples/3/solid-fenics/adapter-config.json deleted file mode 100644 index abafcc0..0000000 --- a/examples/3/solid-fenics/adapter-config.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "participant_name": "Solid", - "precice_config_file_name": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "Solid-Mesh", - "patches": [ - "interface" - ], - "write_data_names": [ - "HeatTransfer" - ], - "read_data_names": [ - "Temperature" - ] - } - ] -} diff --git a/examples/3/topology.yaml b/examples/3/topology.yaml deleted file mode 100644 index e2b9161..0000000 --- a/examples/3/topology.yaml +++ /dev/null @@ -1,32 +0,0 @@ -coupling-scheme: - max-time: 1.0 - time-window-size: 1e-3 - max-iterations: 30 - coupling: serial - -participants: - - name: Fluid - solver: OpenFOAM - dimensionality: 2 - - name: Solid - solver: FEniCS - dimensionality: 2 - -acceleration: - name: aitken - initial-relaxation: - value: 0.5 - -exchanges: - - from: Solid - from-patch: interface - to: Fluid - to-patch: surface - data: HeatTransfer # Fluid reads heat flux - type: strong - - from: Fluid - from-patch: surface - to: Solid - to-patch: interface - data: Temperature # Solid reads temperature - type: strong diff --git a/examples/4/README.md b/examples/4/README.md deleted file mode 100644 index 1cf0acc..0000000 --- a/examples/4/README.md +++ /dev/null @@ -1,7 +0,0 @@ -This example adds additional complexity like Custom couplings and different participant solvers and names. - -Inspired by: https://github.com/precice/tutorials/tree/develop/partitioned-heat-conduction-complex - - -![](config_graph.png) -![](image.png) diff --git a/examples/4/config_graph.png b/examples/4/config_graph.png deleted file mode 100644 index e9bb65d1449068e9a2d6477e5d81f3231ba4e43f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262023 zcmeFZbyU^c`Y*gt5jQFpppv>36#)SOVUZ>%El4*AO2?vWp>9x-P?Ro}Mk#5Dg-D1J z61s>*BPrdv?lTeg`Q7o3aqs*09fvW_-Ul}EjX9s^Q_p;=C@;02nt>XF!R)_v^STlS zgZ?k&-95YEU&mY|J>Xx$_BYh+m90(eoeb=ZF>(g>HWt?Q7N&+L9F6U8rq)(`7kGIt z@N%BGZ*Omd6Xxc&{P#O9Sliv>##wLtg5UC&%}os)26Mmw{f{D9BFPj(fx+Cme&vpH z)bCEpS3itbsHPt8zP0xVMbVXAH?(&eIgD%S(9sp)##Mj+%q>&3xxH@}<4!u+-(~bI zI&{y1e3oMu=OwcF_-prl_HG!8ax3cGuG?|e8BJD`k;L^s#3E32?nEI z{}*P*_NSLA4r6w0f8w>{G-l8CCm70`n1la*Lj4?b;@?kbPf%R`_mgv%cX<8#iK5po zbYp)$USt0Ihu}&4_tBx{@ZZI-xhej;82-B$HWvc=$A1^Ye;335V~Zi#M1>pk`n+uT zMYfIAZnETOpZ#%~xn?RQOj|b^#sS!b*Q_O3-LcI$&ecIjKQr?XW*5CQ`x^1RMs}($ z!d~d(&XdW~)e9kdp3Cqxo-HWEH{jtfA{|Ik9TSrqsH5RMCCH( zp#FJw?cl3kbrAyJxXgJ7DQX$IEvYITJ~Ye`)cTKTD=+aT@^Mer32-)j~B<#37E ztvmLb`}fxW+`CE2jc4?>oeo5m`HS2C>D&$YI~3mwaYM=UcS)}}sZ{nRwS5iRU6bHDptM(M}e4TH}s6X$L2?WJPYB{k_==KODwFK z>iyjR{2I+uwovVh3<74fS{7M1ipd+Re8u-Z%75r`9s6~rtWL07RM&I)S2DblwWa<* z;{dVVe~uWwl)F^Z-R-g1*%*K8CFyR#*YocNp7&qsus8x=)CtG2xc$z$-<&AdMdZoeemTOxv#6fzP^3%3Igd=)lU)zjYD-V!BrJ#lx{ym%&f@f4f`_)^aaUWc#2;i z)0{eI|%kTCSSs>vWmZ~K-4zYSJ8PHTk7N=PjAJnBy` znmCV5x9%?GwIUTTDRDAW7f)9)8pZiv`Z@;B!L9FynjY6*bcuO{W(5f`8lfI9rgJ3M zv9vgu&rpr zv0zUNI#2bOE+kkoS{K`fTaLJxRYk%k@6yXQsbk9F$XgkGH)Nxi#XssaH{6J=CBDA$ zD5zSn+x>{1$NUebGy%$kgteJ(&g=8U+1VCSXgPjg$DG&@qH%>`T;j-?;^5 z1*}LylQNdxu)%$wUHEt|a3)&QY(!+C)o9lI*4V96ZXNm7dWZLjE|PFYkC`2xph5xv zF)$exJImfRc)7pK6SK?*5iNu{Z0mY z;aH_GtFN!vjq?(!il|uKd0ZEMA2-h^ainQT=$8(pmhX2C)p2ZVwaBiUQSbarBf?3w za&y#pU?PP>z@o{|cv z-EV(N((lVSF2SEs@IooPsrzWbrpC=MyH9a}+hON%R z^R64ebFcU*FN)-gBdo7cIVIuA>&^d=xBeC;3=8T*sw@NL+F+!0)gdXSLt54)4l3MK z+fVm3pa4bVmBmSk=JjY1r}_iiKbffFA>6V33C3$V3UlJ$&;C!C05pyBp9gC2p3D;B zhAqhwgpe+p?H~MgC%gD4=JhLf<&AyIC5yThudf{X?6YpI*PM9BvO_Y*iW#88b%)~? z+dnWEgE?{eh7Z|i-_zkA9EPL<)5Rp7o|g)e#Zy-+V%#M8txL=P!H76bFnxY}Ah4^% zO>G{8sXrg|40|PKcIkWmMV=q#U7yl3HN`JZ;8|kp-}Ri(%{BWm69=uk@q_U@HDW=XF&+Di|1$!k6p$_iq1%p#6{uztiH zTMZtE@tZb@>TN&qvWJqGgRhH~o0A@cwO?DERCC^wDIYDIHP<8~1x42o*7(!3 zy!P`e^JAfl2@53v7Wf5s{(Ps#4ZxA^fY_X3O6Wx_jrdYe(E7WyJWXx<`n+*^Yyfs7 z{-qs9ci%Ja7{=Yte0@y{0)B;PU1-lSJ#sI`#Y7Y~Cw5<$=DM#Au1+AUUU=;K`pW!l zM4<3!@-Z=2`z|5@PZpXg+i6ts6#c=(N*;669{gF}3I;H3~05}eKCCn{FX!a?}?=$-DSQIlR2JNuyIK9gegu+RIM z4XtwEd+(`0QKb)QuJfa|pZ5z6%mdUAn=aqWJ)mgN^yb>*0@$E$VUZQe@rcR8Z!We5 zq|lfk6Y5M}UyO5_>?$zwYd9`fq+7wifn5C(!|`Vb=Vztnz?wFnT?;6XixBgJhdkvGybbNe3dy>PBj)oh3R zcrMWnW78nESlgj=V$zSV{z<1}2bY9`K{I%u+a?B>aG$MN=G3uSXF|Goly^a=zFt}ZuZlwtI% z1DN|mw5*;=Y%HBh2aJ=fk!|uD;8LN1b!`}L*8EQ`1&7tYvH&m!ixNf>BkhX1;ps9O zRR`3qYUNu+FDBeBPVu&e$I6Kn*OBn=i|#tsGjgjs;j&&9?M>Obe_}mXOcBALI$G_| z7)t#3h1tac z*fGt?Tq)$AaB>ACaEw{l{z+VbaO&L-H9ZfN84rf)BETa9mwOT;ts?Rhs!Cg`h>3EM z8tFscM|Gb-o#2rdovv6DjSh`iRqEkM6S&pyBO_zvbygup+eFK3@7g?3um8ih3(rjI zB7RxIT8nt(w7o1}PpyaNVe}^wY&1Laa86c5j`$e8ryCoK1Sx39Z_SD6g`M2qlM}EO znSQ$sMLYHBkyq3_W8Q!GdLDZd-NQgx4|XW(h;_-lYWNs4KwzvhvB+tXsY1r!Q}5@; z3b<}q*VTa%8^;i!nDMw!I1tnd6%p6py|FqO8+c33`^Z`OTJt3UwEeJzoAXaJN4alntEq72U7bgExImG#Z8%#9q;`DmZgvUq6g8S8tV!t7Dh6)?Mw>VE!2 zRCH*7^^ehpS&rMl-TF5nbb7(xn*eXL2nwK)zrfEYmie8R0(V_tsc{1qS#4D`P7kG4 z%>r;lp>c*iqy9_-euHnJ!|gEPNR&I(p1a!Js@E&AeRW^2Ku`HQK~c~3 zeZKDXj=V$t)l#xy2X7ZSUXK<&^ztnE_{R2{_p$?bBY9utNdoPPOkhg>_SY|C!zKRO z{(b)!qr>YfkIPJ~UUgvLF@e#BjD-L3OMY-pQew^-e|;r!&2zHkDDQp6icAA?2QkMK zT~?ZwR7>)q+d8`$xBik>;aQIziZ6NzC$IgTUU;Uj=Il2ga?qTprNZiCn)TVG#I@#2l{|wM@-~G^-B}_o%vZhCdtTcaY9V(O1Zt2YYQ}3iEd~m{jht(`pq3C zNLV2Kp;+g|HcW7JY{xA$T4yhUUtZZ5onJmWT zShQW#1w3%ELs>twK!w|TIs_22yMKxlCTa4ej#HJcjVJ^avOmUc zqGpl9ik8zeIw{&w^Zm!sRBUG0&*$l4wtW@UE(+T%VDKL5Q~(yPr~E9z&ivGZf_6nI znLBrtPNq9)nhGgjHMah6_g6i%&q)JnYofV( zCkW&X+qLQH>a(%#hkDYIf>TjN()ktoBP5 z6ZLXK3A1A@DbEw)6}$gB8}(dkN$L9}z{k2?Ldz4Uv9$a_BWPr~$0R)6Z>eVj<+KG# zE;Zhso8(rpl1lyw(=E9$9)gTQiFj`dghe~ZH@t8@Dg$o}UrNo?%bHLN%bFv?+ZVA{7=aM!aSyr3`p#oL_PUh0 zWICBR59M!gAu)De+1WY-;TD}oQ|g3VSUJ z#2_gU3k?A%`a`7>L<~bz+8Np$h)n$SOL2kXh^r?Lkl^uGLT?Wv&cdBs2i>wC8fG9+ ziJa4-NCK=VS?pqL5S^8^qAUhIZRS{ipHEqzK>RwpeF0LX@(A|249BB1$$;XIDu_;B z7hM^Sqni=mCP=lDscIk$Q|nSs=2}G$cGb7Jj4Y|9o#$T*jkoD;%`(CjSfwO{oIiq* zH7Ew{fh$DABpmzEgdwFPLysUT>0C1Z^IHdiKM+quV>}kxm`csNOFa;&DtwWVLrW{W zC^OauxY7{V2v*j)-83nf2?uy!=yv%w8gRL8GjgeH0Hnk^b88?eoPb~o1#F-S`5sXa z<)vaoh?bF}0jgM``_T3(pq9yf3m>VvyUL0$*$sRlod_+z518tFwl%51wlL*FZo`l0 zPQ~t5?1!%TT%Q}B9$L&+DsjD@B!7sVGqm*orA{ub$Zy;it9RDlkG-E9`Mbt?sA*F@x}~Rx3*KK zgG$NvZ}HMVFy-|iq2{yRlPuOXF2km&a8^-MXTNp*jxf=+N(siD9EwBr(KrmZnAwk1 zIxej|KVaShRsM`eXRo4K@|e~03CK1@<>@YqolZl<>?#Ix+3XB33S9K4$G3YDrv;KS z%3uA(yU3?>nsx@%&N!Z26>V^jhi9Vhx-B=kbSZFto1JrHX&LW4N1u?-I|gW^v<$8u*e} z@E@CCy)94u&K+8$6wuHlE}8*a@`rm*uU$5(@_YJ-M)(|I!(Kbzs&jCZK)JO-E*qz| z`kwLfR?HpEHSEKG^C6k231=+WNl6<2s~im0MIz;ZSmL%=0I1F=SVi?IfOo90!|1Ee zP6#Nh4M~un$_aMzUjmZ=04ZV=>~c1GpWo$*t#tw!e9)(K zCymhS+7jh2)_}7Dz!s1Q5S_ti@ah-=Si7Ln3}WaalcYP;e$+M!vuwU`<@+^AkVWai zYYCcFI>DVb223dM2EE4Vz}@nek7c-W?}V?G&V1#_f~QmsbVKp5t|-9DnbMYjmOy|V zGO36WbF0!cPoskd+|U2uGrSn#kM<*nkpw_m>MflP+2S8fF{rP*kUx5eW?l&bTt7aQ`rwsvA z3PcFud)Lx*KkgtmAOg)!cYCf{S~ba}d5yH+i}i5qik(;oY&|$# zn&Qu0IGXzIEeI=EXEi3045GS%mfcXh?J!fwG>Hq4k+H-l#d^BdxHe(gYn|XB56&m$ z#`{#X_=V{jX%crcS||=ObXex=Fgdi`US36_EY)rhS8q^UrtYeEdIWb)Xq}Xh_-$_a zx#xvvh;vB>FdYYgXIu=darqvb_e15ev)d1e_0K~R{YV;8yNk&Lb;ITN1jtV>9+{iE zPXN`6ky=eGYxt>Utuwgv*O4;=HabC)i-|vr`#?e*aZQn%1gKb_hObom&f~p1Dam2% zCsyc{CPw)jH>IyqD|hY&TZ)S{_#s))Dnqf>zgx46t7t;4D2m6@i|p=mr=6voS1QQL zv9D{!P$h*_yoF1GEmz-5XNdHs)6--Sgr2*bEoAdB<-~(Meh-xt_cRGj(Qa@sPed|TR(k^W zb-80>_LEaAVv7oTr6OhpH*(2$beP|T+AGCHHhs$vpn1p8)UA>6d9@{E{Z?FrE zXl8QnHyVZzr9Z_*JGQe61_hVOn~p@V_oy*FjEbSPmrcWOIx*Fw?=o1B*e-sQo_}QM zq&Io+^b+W`6X1N$43D>9+B19KOXQ>Svjh&0-O^Sx(Ch2%lA!dxncvSrtvBOx8_btk5QBVyJN^x8wUp_E zv{H6gLZ~i-Aj#$$4Q=9gZH5}RIsszs)CPMi5fo2RVIluMIf_z4Ez4XLi=0NutZx^J zD&Qe7f>Zqz#3}($d*8d0M{ZHX)1H@pQ!;{ug3u4$x6WM7D3Iy^3zL}JLhZ?lzFFl{ zhSY2cJVt;RaVIhX!v1oN)euUMP)Ip>QEd0VV?3Qb+Gf$Rt4@GCgT@IPE9O=)B%lRG zHEf}^{-NU?`GHg{&iX!!H}{8tkm!1)sL!V%CE>fS3#?>48HN%tfhMU7yP}o`UMkql z-dpk8+O$1*XvJSsH0L#Mn~&5V5=dg!5K$J09GGod4rb3COVID8Q`0_lFUnRj3VF#D z`Owe@Y>Q1#+k6Y*n$0rhpWMq`{JeTNF{BJ+HHpAAE~}lQ;KB6)?rnHO0F(DD>&x<6 zl|v0T&GxxNt1}|%IC1fr2zf^!`-thGFp|E1sHoNTeuhUnSoLY-*3i+wgE2A4f@A^x zjOm;O7|1j#I)FdfC%(o6_0kTTygsDT)s0af^;*7cR%i}5)$bVZ-w*`2W71t<+us*yU0U-dk9IVi`NoZxhBH&4 zhQF!s&(1~oXUgSj-nQ;cij#aP7pE!E+!~I<%?`ct4c(E+Ui=ZbRV7I9Oh|&D>7*Bd z=4IDxVwNV$<-r~m5l?nBz3wzJSTm>ap~V+#(^Ez|s1Ahu;^KWsIauY$QWWzCxT(fD zHfur|P-V{$@vw@qDgO&wA;K+*Nt*6Wsha~;wwCy(_3JNqlJ|2i@nd$}@uKZ}*BEcq zqP3W!AxQDlVusvHsPiW4Q)Df6xea|stY11$4q_x!L}bmG1}J>0OR1Jm;?ZGv938Qt z^u^i?wNREgu_7)nQ$I)Q=;yVA;pviD#B_($X+IB;A{6cL@ z5Eir{(+#P+3<=Siml-cvgpnWLH6umo?lm+`3Fi}FPF#Gq6oDk}-&xfxh5LEEHGozy zdaTT`W6x5aP+sC50cKP4j-Y_Y?3b?7-s7l5hz2-ACHDge zC?2@90UZ9@E{yWjh1}mj=Hjsx%BvB zk?|a5npua*E-^v2M1e%!&Xl&Pxn_liHx(`JVGo}JGrcd)?Y~E2qM%>;>hlqYcqs-W zae%x_V|wHWshvr)W1Yhi~>5kZz@VzXz2f@M3;zP|D zte2qJy=Vtj5-4G|pgs?Ulpa4W?(S@Lm~#PK)FDfD_k2jy1Y2;6$qRZPP|nPdi@bzQ zR^z0c(FL&}=tVO-&k}UQf!&`08@{XEGfFEO6(hysa+>NSvKZlu=C}BI0Y|ZNywAK^ z3cj4fOdg2-=Qn0T2^FSE(eyBFiHSkY0WT-#lRyVedA8x3_9=ly zUgXL)88OLh%wfjNP>Oo{k`5t1YkWESj_ixI^lm%mMT5&l`%k5k^M|4uc{ z#Pv69)M%-d#H=DdCD-@XABNvP8$8hsn&c5RZQC0xZ&m>(7hOVmX7#zKCO&&Tjvy}3{) zu~aKcMcwb?>C0$SWw^Xx{jb;uvRk!rZ~-B)>J%1VpKB)dEw(5tR05hh{Fuq^CO;T) zgH>}3WNDc=zvg~O68T+uv^)5CbEM{hmoF8>u^E=Gsv!MpbdldYX7L4;N^E6ed{bRv zg1TTk|3huaaz6uq*t@M#h*3NTWe{`cITBw-+>VJC0Fl1HuD}-sZ!?v3Fp6hS8n1cXh zwSPkyvPGbz(L+_!G=a3E6})lMC86Awk7}BrIlib+eoUd9neOaHJ;KIbtPVnJNeBUv z8@5GQqmIR3h&KDR%Tbi4B=qQ;4VnXDvjCB((1Yhz0~n&SYYZqTxDbg2=2c-Ot9da0LdCHa7`ZvzX8cIuMy^#Bc+qt;ge}4N@|z=|wwzD~&BmNiO8>aTL)|Y-$S`7^eV_B7 z)V-=-u{tcBKPTy#=_e2Vc*nJL<2?{UCl+gA2i#H4T4dda@fcjSDwOGWPI3fLRd*3n z0IYb3zHEeYA}G(YqY99y*5L_oOEUGTYZ9`GQYd($yCInsgmVO4k7*E!`J&-e&!@sh z9?ChWgQk}4IZpvNaZoJ*T@K0!z54Jh1eNv?BX{7zQrAYEpzyCLz}*4h>+uDSmwx(BCA(?T@UBeEL%0Yc5f?)XIsr1a_gY_T7T5`j42B zIcYezbWP4LsdRGIs*Ghjtib2Po(qbIS5m%XnzDR8*EnJ7rrF1c&Ow42-bG-+4Mzx5 z=eG^1CZ?)#e6(&AYv=wcZl;=1!0CvDsbj-Xd>ahHn*u=6CA|u6uTlDLqI+D#(Sn94 zLGb|HJ*$nV4>q?X+)Q((;&0K3xQgcPPP8$kKJe#4c<|&6M)fJKr60+$ZK9U6i zj6tLJd}~%#kGb0*id*t@#WrbvJ0NO)fBEKNVo+AU-v6Ioynp+2dnGu46fhZ=7 zatopl`TY;?HtF_Zv^s`DA|PAwk_Tie8%^z}AZ@B~lDM^aU%MmP!0ta);xt@>bFdQ5 z_*)8dRAl(|qdpX-bn!%X1-KpRgJH-8kry6`KgNGw5vl3e6FETFt01ZLmC5NVds2l2 z7~#&K7NWeRFOX+mPe?VI1{6YN>W2W!*H5qQYb&1eSqaKs`3w!e8sJ$BEBhU1AfCa$ z6~-8ZZ1m?wn$JRR=V(Upj5Nf}MChjK%gWi-wI@M~#NLlA|M+V^c|Ry`0pL9sfUL-2 z;s2*?VQR&YXu$xr)?IkCxlq_?D)|$yYtt~bo^q0Wv|*VS1q!vT-8A@^la>RHlNiMO z^3}m_#GTTk{tJ~x6mflpod8q4raC>Vioq5Xtbr4aa3i+|!{A!D^MDGg1A6KM%kC-k zJ$4q4xyIw^+}`_?`Si_bNq1k$84}hPz5x$hAlUoAOaFKt6+w4dYCicG(ZZ|Ur_|N? z?|(n>_~DQvt&^?I6f#L*e-D;foArx=#I>%ywTThd#k-YO8s7@9LijshXW`w#1fU zWs!qnO-&^Xmn_t0ME#eU;oln@V8zsrKVY=Tyi&74D=bUgH7LHz83}&3+u6Shp0)IP z#`)pq#`~Lb zO$(O7!_9V}5O2`!PnEuSdgbRrl(tYCJCmW+!R7Q9If0NYI^hN~@e`0S_#RWQ0%SnB z@Zge5e=f|+8`7Vbu>$XZ@Ic>M(e|g%jq7D-d~NbbT7w8_P$S+l77ctWM~xA=uZfkHl5CEH+u(qFjpT4y8$SAO(ua&x6&pP_fVPRp4o1$PFi(< zrlRd4-aDM2fIEYqH?yfqqx>@fqT}Z2g(ktJ|K0~O|FCiq7ugrAOYu?5jo~q*?b@@RG04{s=;%hYX%nJ(!yoP;G!Y`2>vqYe>JzYu%KMv_jHXmKRIxtKo)ka)j95+Oj*1wjD}HMx!ifqc46 zU-v*lV>y)Vul#Y3AEdr)Uso!d1ijuD;uCCLV5X=Wc+>TvXc#@0W(Bg(!DiMGU7PwG z+PGxRSPYPP?feXxHruKf}{AcJ>3UBf!x4phA@+$ODSuMBEe#Vdv zVelfLtT#gJxOg3~O#P=a)c%kfbss{~D%^CN_oM&d?k*lqQi}q`oritT^{Cec(mMF@ zTqVr(6Zz}=nT2z} zfgJtOpZYHS>wYgFTOMmLKoZDnRCQ;>bxVMu)~QR?#gsifO}W<8kK)-VH2~(I+6Ocg zfUieW!uUuW&^xwOWX7Wx@f&(~Bji%hlV&-x z#!p{ive6@K{)d|LTM+q-zXNv@hFs@ zPr|pvj9>1KVv#tj)H(?o!@1d;Cz&AK262@@)c7yJR7U|se-hhbB`FRZ<2eClNl7b6 z>HT0%Wdu2Ft*OnNw4LvX?(Xs4!4^Nd7986;t2qfH}o9vc=@h@hC zi)ylvBEWCi&X1gcHTR{dURxCOL$PddTI%-e0$FtqACmytA7G66by&sHasHE369RHL{B&!ncQ3J9xs6+s@RS4gIZP=|^tleF!WSJ`k;2QvUoh zNWvFS7R?Nk3UM@(awQY6H2EaXKrWHds=xq+#HL|Fq!P7a5R<=Ei^6lpVuWB8sTgmD z_$8_y(@+(wq&d=F`(2LDeSysC45?Tm*0gTmdA3R_6H^r;0C za@7Ngnuv%@!!S*V_E}~;cyQH|1aeG9X!(^9u`$TB)bO%n!WgKU=S_wPT5lqoC6W|> zC@GJE5qS{t5agKv&=l(IZ@Sldg^KwVK86+4q&1EGo6n+*w2tVRDWvj}u*~ZsCC{~Q zNT0$fpU9f)e{w3|oN3!=W1JM~4%o|%kO>Hh3JuVLou0(F!4V?4K>wH=gi1ZM0abvq zhsD9$$Ia@kP?@Y$|N0~4m;yDis##>;_bPy+v>u=xJ@~;KICtv(!66Y8$|ra!sh+Vy zxt8(d2g<*4Qd+GO%@Q?}qpDi(ezz z=l%C6#642B$pl??)_waFj#-iYkm@{$iRw7?p50#Uc0c}JHM{~kVEu-u(Yw&vQ2(Z* znpEQGUhKxRLN#C3*29D0k9`$-RRqKsRT@lURxA#&gl~0v37{Kk8OJ1@_zr2mphp49 z5=!4r@{pzDsz5#+MdAdSw2SDqHGiKai7I7bIEZh8b#b4zYVSE2Xhu;=JG+2uV%3Hc zXQc&)RsPw^OREpQxaw?5GGRyym;A*7%M|N83#DV=g!~7nNxz=g!ER$gR%o1kEDSZG zfvS6}U8ZxBu)&W$qB;-&(S%bAK;hcV=sCFrRz2VwYyn39;^_mGBCL9yUXb#Psh$~? z2nv7=_aUhl1vb~1!pJDc?V|0x;(`aTY2r*mH4}JuAet9JT1o+==LbiGw{Bz52}Len zT{V^A%&K4#Tu$ge3ZyGYQR~L72PLoo6Kngq@yjx3auSitVb~Yq7c3_s(-#H1Y8op2 zkR`;}ZF0tF{z+!!I6b z>bG?h_q*qA3&YozKtsLvu94eYuc@FN?Kx+R&6QW>&yd*f4t!swdyQJFX|9YMPPZ6pG#6)>{b2aK+Ax@9s^3(S%9R9 z#=sh~w?~j_0|Bj_7upq8)tn9i;^v$W35lsWV&g|QA`8)qa76skrvL^&r$JNXL*9I< zF1_MkKh=%=odI>tF3kX%u?(qBYVhITAxim=VEg?zQR=O+bA1EjT|AkJsl$iLlx0}c z*n2|T-=h`zu)*b zOjU$wspJFv9B#`V64lsBaFnfGhog49&WG-3BCik$b}ze8C`D?m{_ERk7Z^}#5n(c9 z79#gFBvN&2z0=dfddJirRWdSz)RbMOHLTKFf%$BuBFAwAX8J&qdB#^SbSi(3e3X!F z%=@E%I@{}1bTAK3w>k(7Z(;g&8sO{Mjp;yq1&mCayc3&3gU|@gq0v7k7ACCSfT#xd zpP#*~g0gD6ARb*0nRr&#O+!bxJ!8 zszm(r>@bQyHV5tLPb(+N)|^C5lpBIPwBV6&v_XEp`92ttIbct~az6Cq-8cQ6wO?S7 zF(dekf&*ED5$08}@r1R8EMY0}f?12+6Uuk^K@t5MKe0^$p2RC)&hxAZ!ka9BAA-<* zEa#C883dNbS%vNIi+f)Au!Uq4jTaUACA{7BKiR=-YV`{#mg6Yp3Rn)G*PsPe*KTjm z#c!N1BQeSxC;mK*vWIX;((4_c@rW71POO`2%^?8bSzh|OhoTg$@InI{1TiU90M?_( zka1o#@SSORz-q%DNL0y#A*;+!E(TH<0#`L!}tOOI0?XZ43bg4s#fE2@TnC^xFSn3k*$(%aV@0na<=>Y0&b z>hwS=k*{%q0p>4y&F#u@y3@00Uf_8H8c#s#YpG+qn(My%X8N*25OI?O_l^oUq8|&t`worHH7*P!qEQ{xq|sb9dKCLs*|dU(0G1B z?j{zX6Vd%se8a(F3r zZh0;Pzs?Z=Q>`SXh^m$Pr)cm}@I~TtOQ6E2+|^np{dpu9Z|R*#m<;22Bi+D_k|vd4 z5Qj7V4g!8Scssn($X)q!Cuk4YPF!P*j1(kz*54VX!Trz@L|OjOwwRbC z$IngD-FP&`qj&G@cMa0}u!zd9*%S7%)F+XOk7Ww$O3IPk@5SR`I_F4TomdSyC!Xq| zB-??Mglw3BMFh?nHW`O;^ww?7KHLpfg7nF}R8fLD^-4lxZl%9l<;mQZ3tpw-)^8As`N!Px|s zG-64y!3gqFSr1(|6O#Kx;HMYMbwZ=XF0$A^mwfq6<0hdV4wfvd_qW%*;YWt=L-jHp z06S?=ZS7{A2m8ULNjzCZuu}}on`SXQoQhEMCcovopct|XK{F6~+^KXkZ7vQLYBN)8 z6=l-yvX*$k`Ds4Jj!0CL&;cf>D}vE5w*mE^yZN7mruloPb0-ss(dh#7xy`NLXBfbu zW0@|3+1L=jh3F24q*-C7iKs_6M+nzk@lEOm`c+DwN5J%cE^$p+$OW_uoV!0dzyr-N zpyYxPBIl4C_z>T=HAVDV5e=FuQ`_fSb~vWjTN2YdWgl5&kD;(GG=fcNr4E_0Z=y;C zY`HsQz!|{q2`f!p_{g7_U(m=+xvKQ26F4X>#GwPMOP9~UBtI+AfBh~zYRjPfg;eiF zMyHG4B(UrwkiYA(C&o&WQ8H*Vn+$_2V4_wXK?h#|Emo+V%Z)#i(NY!sGc2N{$sy6| zoa~sKK^3aUgozPA+R8IyGAG}(&^iJ&8B!d8E0w68w5Gn8=;i^n5AixtX(8`b6a=u# z5Qz@$it8&IgvQCIwf~>YOfCDy8*u=mmWTK#my`~=$|t#4y!(~LdO(8-)tXPVQkRu`Y-(WzR+L>w&s_X0 zau40fIbDE$g$WB-X1a)Y$Z+d}OBe`&OHKk2`JLgHJ{9ULf-n8@kt|FMe~~jmG`(~; zkNL>ZGU7(S!FbVNaN$QuhV@P)UGSlUTdGl%1<+&a)HVgU<70NiB${IHn-`~~1~W-8 zaynDc+5|FYDC3xBo&~n!O=(MONLAj#aHCOPdxz5fbYSL)p&#EptZyL&o%H@A*n29&TXb=7ev4V@z{v8-&t4 zBc?M(T-sw6_L3>?yyrI*@gG8mVX^$-@n`+_0m~wy1gReZ^onU%C#wJXO+kms%C4ro zmBJ`k&J5H*i}gp-b?A^OBq&1AfxV697qA&w4w%XqES=L>1yQL2h=MSY$N=XWAgVBp z=AjRLhIxA%@AN;i`s=sHDE93Y{7*OwCd_N~0Jy*IOCTG7)Y~muE+{~OctU!{4|FsL zlFMP%$p0D*_B5Kkn<7VUgA+l-J2-g|Hgg7?*bhp%?-6;SH`>Hh7{K3r_Q2OSXVf83 z_O&j3yHf9^xQxNjpM$pJLNk$24HFG_(#_G4CMYG0XdEun1`=igpz@`a|J?E!6j?U^ zoK4ekR}01&G)yT7On&t!;a6G$#P;OVBPul4*asSK`txm}_SIuhliASmT^kXSHv$+0 zQt#fqJMD-$ugB22N+fIuJYGb}Cp$fEN-~;Y47+G7onzfCj)qC8|K(+*R4nn{4jzA6 z>RbPRILe(wXrxsH^7i>tJ zNC-$K^m7PrO6%yXFDBcHL(RWMVBl@G)LzyOP?01M$hR#i1Oaud#gd zVc+0ApF}ZmY8{cw#u}yx!F@oKo>J`GT>%%Qb<&^&l+eM3HFRLp20FQCOdd`ex%zYK z=pmjWMDrox(E*2?wb9J|IcdZfz2DcRvExI1(Z*PFW?;1IvM_JExf8u4C< z<0mR_Ac{&P{#6(S@(*39yqAk98s0@`|DdgpR26S+K7TuOaK&4ghqHy%R0ZM}0}M!~ zKR4gf1#4-LUk@@qU~cO_GCmkYt03cBz$7XSMPlAN!;w|m4d4v((s^RAPzv|kq~-qf zMPml=)|g>^TB4MbaXJcy|9Y;^ptn!)3la^4(5WQPOjq{3Klhl$^*)ki(O3aG#0O;? zlQaLl20!Ey|A2FrfcWyO4Iu`$yyoi&2Ygk6ajr76hUOZe^V%d1A$c9I18n`Pg*6Dz zEbQ(eGTvGGV(8^Ej<^Gw+d|CZn5eUjw+@;ZsyXF@hh~PHLwDFQbdHvPwxHMX&Gv(& zy-b78gQFySU17poR8^>Mqd6(oom4cn9VVxt37`6j)N0^@3;e5aG|=xQz_f4SXbHMf zRWBEI?{rw^_@TrWV3?c15$YmGGi5n{a02 zqX8A1jj`lrGzP#As#d`tbm5l#1@X`^Hpg;f9|5hRW8smFBR2Pgit_IJ*w)ga1#){X z2`00y!%7+Y^ZYKx52m!33Bdd}8p8z(sr(%K+zi}L70T#;=HY9GdWx)(K9q=ulCJVK z0&Ys~Qrl_REcE%Ej#_A%n9dcc&^I7-zj;aq!oBFoGwI{YTiAh2(MT^$xa5XQdAk#O~Q?(Szt!GOqMYX&3}Qs@h(STXRUdtuB)j9+-?>C z06o4%W>s@+2WZz++^Z<3c^O4i8}(mM?Na zZ}%=DJGajozp7QL28+t*(f&)xQ(L#XH#U6J>bMn+L9u;vNUNiyXZAj$g!OVfW;T?c zTFiR}PAO!Duew23ep5b~h31Q4pU`upIFArFn4Uwxfb%iD6bxI z$x_nR=Uj@yJ1tkjZNZwum5&k%g{g06Fyj^H5j>-huDC zH;8srCJ-sh?GV}TuMTYBQUZP-04uX%pynkk2?muCS&WH3FxLPufp0)c&j?D`*Ei$7 zsz9|-wMDv(Envk8AU@1QZJa-Wb*oBX(MbJYzSo%8=R#SOLEYPM08zIBj-ly)r7Zsx z4LIlLtLD(sqeB$mLbTJimbbd%`sg9($rriTV|u63gmB0=%RC3KpDFZc{b zuGmoU6qPqC)~)HVFlGc3c$m@AIVko5E~6o=wP#T4)Y?msp9|K#;EWiWUI#_lFk$;R zJaro&ESR!={MKEfu8R}Qz&T7=YC^ zLM5Em$uS@EXX#w-MQ2Ht@tgnTM90~I9nIASCp#6OoR1M25^l<+p#3oV<6SkfhchqZN40;S<#F+I9cDVi_{zC}T`6-zcbHmY%jO?**pj$VG`` z7tP^W$nSjv9J&usHta>_c+DQ5(c>jRXqs%Qhpci2JZO+5OWQ$d9i1O_C}f3_rNA)7 zzeu`n(=DS8GNt6P#oX?XY&l2_jBiy2Psn}J;9f@>9)a-$!m(0>SO3vJPg-tAE2HY8 z<;STBzk&BUtQ%h|{cR)>>x)Fwz%#At@BwEH5w1P{$kz%D6A?bU3G$jw>sZJMaq@u( zUm^x>V@9F7_H!V?w@@86_*n(iCF6OYQLTA=c@FY4Jes3!HK2OG32CkAa5MKF7)o4V z;`<7CRL}h1VK$~C2+}CW_rvv~+%dY}SdaNGPi_AB*NUqaBItP0Hg_R=6p{M?>y7|H zxh%RDZ$SC09r*$}mR2M`X}8SRO*VW`L~liM15x(m;c3Knak=aazlRR=);63o;tTh) z5qSW>WI&$#pA8EVW)Cqm#%j)R-YP#K%Qhb~yQ>JWW?IiZT!)mc$;ckB?I_)W8}$_O z#%}NskV59!_jpW49Za(`nlbqXQ%J|O2@oz}c0@F83&w|y2onKIzK&gme{W=c!|5I1 zsws9%J@?|XpYuA`0bWf*)fI3+CYx$e3wjt_Cx$Jc7R}~fR|G1#Eo$*!e>D|vf(Z{| zrxXG*cVYP&X3`R|1t7YrLrk%OF!u=J89#{d74?7D0KoYH>aw)Da%iL~%J;qhr)*)^ z4byIhVqmC6O;7ja>L5YmP3SVf)bkpn?!nua%bk)}q3TgYzF5YfZm~tfY5oRKlXs0> z!kpWSoNb1iR^e!%na@7B0_fWoZb5v*v(zKd;kMe}?`rkq+>0v~Bu`c=6{Ib_0u(`) znp6coMA|_0s~fY+*?nn&fp7G5*Z+KzH`VBD?28cc3UZ9>y1le1Pc3$dUK{S~?puX*uu~Hib<#Gv}xQ^b9zuBEIx{V;vzz=`Qw@vPTd+pjeAQ@}mr)vN3Fbn1H9z=|tebsw*y9NSzfO7Y5OUM?(*nSY>oj^{!@DUMVZQ@tZKcDcO z4U(0J=m+b=Jo8-{P^&)JMk#XusX^=h>LJKe@`$1sms zC7>{rr&@!C4u7Z?Y)E`+?*ofk35^8yf}9ggY!;!<=^*^iN;F;rMxhunEjV9GC%z*Q z7BXrRGkL%7dLavpt9>PaspTWF2%+tn9naqntJe73gszY3@vF~kMlVb+6j26?mBK`$ z36(1Vu5?*f119dAQDhAcE#aVL+@>v|AcAa@o?TicQ~#Y724nFRftdKYE&MZIYK&0{ zvYgpTu?q8GvHkDgB6b;^Qd^)#rC(h`H&$p=KSRmqz>9y*dD4D(5Ag*X11xybpY9@z z#4D6kky@(|*db`{(Fp8XLf|;FmFbbck3@zHY53{v zf@O&hGvzFhl3cvBqoBKJ{C~|r+u{alyHG=m>_9)irj&Sy{Id|B49)*;LWb)+{;rB` z9V~sWklt?l`=aLuM~DZ`r90x25$FE`Oc*N?uB7q{Fw%d*h7|sXX0MbWdO&<2QK@%0g}^ygK)S=LUCFT*P5!=-$4gLUcC;^y zDmhU~ID>U#7#b*^(}=K$=53ta|KHcs zUgi-Gja64}UJWtZf!5L%d^_ctkuLHLOpM&!ody$D@^8LF{iO=vlX)_He?RTH zW1HnnkCnp11x99$a38sm{^;2>^Sl)MM*n~?(CR9y1@vyb$?^)V0c21 z8jEOK{ucBv1QCvtTf}R15=|eK@{|Kqp!Vo0+vI-9h@|)2ZY})s+!+T@nfee+I1sI4 zs;|fr75ODlgEgMot;`1a_D$3xl*1q9|8n7<7RpGnu4IQu6x-A5HMc%wICg#`BGx2% zCqb+i!V*%$`8drpDb6w@;@dWJ?z0!9y$M_349dJGAmbYZCM;d~j?{{I&yXQ(0-i#~ zy@DQv+RE;X)kO^0E551qw>2b^2YF=)<#h}N0t7zDD}JaJw@}=nAlRCll(?AV6-wE>=m_4eAPl-4=$S3U#Gu7=r-aF)*r4b6nN4^^e#QD*D}A ziAm+yW^SD{YTuBx&JyWo9j9RuDq*^Vf^?lN?sNXr8-=C7)~aCYGdGi5J)0;l*{r#4 zt}QMC`ZxKwNndq~4gT^lg9%UNA6KMdM9>l9<^N^S^a8CJ)!~xvj}Uc)9ZnXPm~ZjM5z168DWGVlC=b~_x^jfdWQfLiH_)!#FkbbQl+$;#q5#YH!Q zCH-bD^BMX@RPQY!I{CkTovt}*qiB56tc*k-K54G>vFgNODU!_$aInZkEo=Y`TAF(vu*t2vpoD5rRBsAg@P4L>!L}{nxu&>1Qzj2<~2Y ze>>{e(cL%@xn=+EB7e}?+r$;TADW-TQ;`eBBmxL4c3J0I_!fLUH|A;-Z>%!5>-fx* zh-VD6oJ(#|Iwx%fBo{YM~`@+D+Q*8;QR)R zPP3trt;{XkbFJ26n?(h39mRU?a5!@Ds4dPT0-`rWxeH{Xt z%NIWw(jlkhB>bxW4^#wg1^{-5q9@9Q!=%JPy7T9)7fH*vklxBUxE0A%!oGuPEq=k0 zp5h-S6T3bD`K7N1pFO*TQM)||otE445yV(Q({(&?>-mM}a(W`$d_yq4l4^?Nxm;Se zHiP)1XlDR&c<`A+g&^uifwZ>$ksrsb>2a&sr-~_2VBCMg9Yg?HBa(X{5G4Mk5cL+C zA|t?TJNW~@R2DI|tLLHYXxTtAAT*93r9=*ZTpeApqMloSi{tt`+NhG7v=#O60%FQ( z=n~zMz@p(od~2-mb_KDmeA%IUFueD~_i-rBBcZgw-}())%K&jf#vUHA0j0_VsD>{N zr2PH7+g^_t451Qm(l$ePI{T385qEH>PBOd2406w1}$!rS_fP96_ zDVqU`wSi(h3JLi<>)~x66SKVihp3W@*w{~lmKf2bh@df6t=RsV_5QQnFuWD(fCzlF z*E0_|+A7Gs*{A9dhJF;4Q%KQ_iWcOtj|@1Cid5#wWTk>dS5T-BN01(1fJ}E zL$~o42b&w@!Qm|h}=V03Lo=Lz6^0!@*6gs=IdE61&|fd3&2L8UDZ_2x*H{Z0$`#lP2^ zSB7%0)q(rua5U{32U;v~88ZZ?ZK^@{$iY4? z9Z6valm*t8iAOdQJDfhdF4lf#O2P&MX=;)D=r1Ye+!uIulQ-9jN>2qNza(xT9&ZaY zp%2S~S!N0NyEQ>?#(QBJrZ-`ATXU}LzMY@<#bad(ti`Cc(QL0DuzO@TS@dxO)8UGk zyGk@`5QmU60xZRey^J{y&|!4~v?Nm7C=Zm@gj#fhQTc#OWYOi^rXO?EFMDC>kL1aC zE*`^(eVh8k;x!!Y5YxSN42&znmghSGm2ZjvdoInkCpnPzu0%q`*5fn186JaWgAOqe zs#FG~&TE2?yceZOkJZF+4y}yU0 z8D2=+G&FuiJp>({+Y!qQpJ6C)1U2D^a!2TI1hevj9DcET>WCA31&EA5gcjLezyl?T z_RCM87~(!8ItM=UVbE(1R(L}~Y23()u3L(~LmR9T`p^Xi|2Q3K@9ahmci`phQduewMH6k7{Qur{z zW|yC!Ovg1lB&@ zX4Myd)Fa?~bbh);;czG*FSq;C=ij|(UGnzyEeiH|D8#zRG~$71ebr94UYK*nn$At0 z&+StxYnC__B3-+8v0ZwCfy|yNJJEf(9>62QUE~`={tMw*{eZ5nICu?!K(`^wYwJ2c zA_{UJpQeAGt7fXOf(HMHC$}&J5%E~_>RUMDOVW?d_ivjJ{iv4bsqsTZzhaAPe%jWJ z+puP?LqZrrB+=LzU2Oao8nYgKSMymcX^`psN0&1_Nv%f@ouFnruk#%u882vGKRXqT zA$1}ebnX=EZJ7kp58uvJ!?luEpVd*L&6vCd!9a*C5t*t#G}~jUquNu)kYAx3kk|1s zO7%?j`nARo2zu9ZzxI%M?JeTrWTP|AVSzBwO(zVhWt=&UVTmxUCr-Q~*oGI z_eFqNxPuPNYxo{?&Na-{Rxu}?8EFyK^lEW?k|s@f=T^)Jl~%BqX6RAX57jU-8iG6~ zI}+ugX~-tPHxCTtmkg2ByHO|WhGuwIz?pOzk2{AoX-n$>{=={}_}&xP)SnucWWkiX zMX?pk*JfKU-+)750u{mLDs(q%WaG@7Jq^&V*#HCeVZNknoqYOBW~|c#NaU5na1Ehl zG=*dn?weqy31YR!!kGdh0=Z}*Sm3PM0le`d1f0rZ%9dWiHUZ`y5+_Sq*Q~E(AQ__7hiCwx@v{G7C^kT=uwyGnEZ#>jhO2T%nk@9^UlN+c|6hd~WCrS(`a2~8OSUncP0 zU^;!dL5*oL-d&o;aTAbNhal2bxuDwiAokxieO+9K8yx(JxjgcAVRQWzMHl?mtjYVE z0@n-3=2`l@&yU%K1+0DZN>;&_-W+pE9CEFY4kR|74O+iCROxCd?*8S%*SFXEI=h<7 z((`HA#f*vpB5nqd@PcJCtrwt3i{wuUFy86z4&w>GE%r|i90<}?*gXNik}(T|wE0U{@xF$(9-KyD>0{nnJp zc`2~YuM`^?UaYqyE_-ZZHrg0aFzF#M+LFy{EfLN5AP~~;dxxqVz&<;r&~u(p8JI${ zdEt)llA2Qn2v};N2C_TMGY$rQ1LVOPCcmqn$3SXP-y0d-qRw+Ob}xS#;HQdb+$7A`c{UyC?*BB= zHjw^jW=LEo(X?Cfck!+vml-hXII8bj6F+Sh{Z1OhZ+}*CG1?7sd>j1CV8>CJ@mTxW zFBp-|;p4Uk&or$IP+Z)ih;{!y^*wf&)m4SLl&At65wOj7zYtUT)??ZRDuDE$S`lBl zmzLK1`y`5k$R@Up;jWI2+T2!+UeD|r!=2B6E<5y}Yb#Ot-`SKw;^GoEZ+o;aCM*=sDCKTctD{A~l(91q$* z$o@d$i7Ms>S;8XmB&Fa3u^h_D1n5uK6$B;(RYjjp)ARRmj-OCx=`m*U04c0Faxw)IU8=A2bZvo|$rBaI_b4XjHT^+TPpFz?4GN-AJPvmSq(7pvqlx&77lzVfqpQjjq=25AR@qO~H z55}+Dayt*jF9+e@UsxR(IvX^}bsc*66_bsXi?w!IL4i@MLWP|-@H#ZW&DA6TIhL0p9sS8uzPYw{-!+TQ9QwbIV=0FDVXET z&(}e503UqNU%Q@ASt%C59qLVhKEqN!RNZWRb00HB^a)sbAjSDHn{F&?Va@SN=t^J3 z?g3SC;eMzdtBDNZiN(&Is$J#cyuJs9C1WSs)tZ44gyJcVtyVJSq@k}+=v^9 zh`hC1pl?*Fd=U9_^A1}qD7Xd`k0G>{k?siS^cA={mPUie2y*F|;BNqg{6A+3HrcdnNmn{!-K0RV+R<4QeQ zn)@ZMF~1+v^2@o+-)sg{;tV|D;h$9B7gV5ezfsHez4|4T z`XnEUK{3`-6&!X|01SN_ijXN%f($!BSXx({XFiy+=o?bUM?RTOmh`IG!PJ5yXLSd$ zoG;}ZKn}T&Js>Mn<^*iNLXHn(jFbudaP*6M9D^;2qZ`GER-C$*KQVBeh2{4P%7xuv(Kv zKZpNQ2(b#HZ;g|wheh=6`8Q)s^O)Q;K}uUdAF9>&6-#W6WNYlcTw-(2OR2(nNUoW1 zQeHdel1ToUW??O(xUcHQ1N-Q&RbgpQzSV!w0{vXof-=k*L)h?FV&wx7qoCKFI~G8- zX;m#oby@yT^wEb@PrLK?1bn33ap**lFAQMKzSD~a@l!{-@9E0M-m#Q`9G#uG^H4GY zhC>z5zV*i{vNTZUYR9*&rN7%J$lIK-#FXn&K@*~$FhM5GlYe%LXPK#EB-zEJinD>{6;i!~#t8PZ9S0|3e&A|W+KkSkyEzt>`oL?EPl#P~9cua&!)k*h z6=&N(h`7cHFzW4(l9o5&Feu*K+B#D1vUtH^KY3*NL*4%Jg-E@P@w%V@$Dl6N-g3!+ z-1w(!ICk;cfOp-6|5qq6XPv{LOSQJ!ucnItiGkS`fb`>!x9e3z9;E2>%p1;yM+)r-aF-_eX zsUabs9tBLCA@Hy&-F(<@f3N@QhmAr>JxIVy^vxVpSI4WsThA11T_iv8`6MhQZsvRt zDOJc~n2-f(i6atXHeKI;+$Akrb^#lf_6`$?Bk2;2+ty1}V`g;~c<|+D6-=XE?%f+_ zn@Hh;EsvuCAnb>PHI27KGxemiC*R}w20sOUu$}iIbbKvr#bGKQL^JO&QReky;v{zt zjk{#n*i~KWu?$}Rb^fe;W9$p9#zQ3td0IVs+OXKYG|={5yPDDG;U515c|k5&HIV}? zIjtD{m~gsBOk$?~MUpA$@e4~|=L4fPSN#SSzU^7TS51`LzNU-8RIt9>5$zy)PtQ;E z|B{@#0YAk#`2G|uqDL#^QJbi>0yeDr6sz#n zHUR%h=kEe(WW{J&=KEdQq5-61-0<55ow~_zG0XeNhKp8!##exw`Um@}r*Zc^-n_3-ue0DdkwY?B{8_#hH0`hHAfJ-Yt(GzaQ@R?ZBX_+i zOD67??b#9;+F!eyrb>MempgqsR*N`WPMuTr^i8MdYZ%0@RVq!7=bX+HciK}p4_-`; z+7_W)M;z8jr;;bG_{@55ZV^IWKp1m+6%?3m14PRb9`W5}c0yI1ooVvDrzb^T9h*Jg zo+!QQjv9RSPigf37k~^Fo>u6>W2LiG$*E1_BT73WW!=bC;}@pKq<1R8<$eq7mk8hT z5N3g^k3H6bboE1M5X6XVxD~7$du}(9Ig`^_bDnJ4;m9HkN*+_^^nn6$l0*F{h#8Vm zNT>U7*^olZ%L3MR2=^@x1MG{qhC{P|(4_OwCviFc-O1C?)OIcp!~An%<4A*5a7;NM zK2sOFgJ2S`^eK|6!C20z->Pn|l%c73LU=coQ`l$hKo!mHWAgXxpHMAAi(NH9Ueiqw{`l6*)ek5T zTfHJIJLp>3-Ct?-Jx~R zFRl3p!k9(g)M7+~o`3WYK>w4Or#Cvh9(~l}`i$wZ6p_|@t4BW$l!(o(u#nSQ2H{qW zm{V%wYmJZdhD%8iT@L#LHFkD3SBkmJaF}0JoF_hF7tg4U;dVQ`!8UVi$eH}M^8s5+ z`8oidoYR|h|G5QwMPyIGE#MljMLP0!jneiYc#$y-8P|LjOgX?I3UF&+DCO&}c z-2!5cBoZA*H1{ATLO=%0@@#;+PyzqL=SXFuUD>rS)kdy?#d;++D{Z-ngR9RkUCu8! zKUc#WSPbkUmxPtXIVB#ySq{~F06(PqKb=7%G8JW3bCd3pg>*h_i3)%ezYGuY@d%tH zd_!Q*L4#DcSMvAfnWp!#;BKq=tIQpf9fMlk0dB5e!n`uF1;m4qT*fpJQH7{A1zlK& zaWv6XV?vBE4iVLn_01*0<*H)03=Sp#={|h7uXqkwD3JWw@^07DIt>-}d259^wQowB z$|k7mwDq3*Q7>j z2Hx>|VWh(?spA{t?qx?5ljhv-oBVOu?>zj9*ZIAE_r~hw{IfjzgZ6K;{co{Fc7o@~ zYjRXyoY;l7dq19T(!F9YR5T0)Suzc$o>smcGxn(b(ZW4BJphFJP>K#w{9J%i*}n4j zT);$Iyd0j1&FFRQkl4*h?bI(SFD7p!I?mzrW7a315CCvjNS#2lZkEn`TZv z4nr%bC9pr{tY)d8gmG~_bqlnLreO79&U}#QH`$RaRd_Ih;z1~P1&5T`RL=!~xXd?C zv8k6oGswOlVV1+>rlb~GXqX!=yhlJspvbK{g5EK%+`)pv5zw-{rD>EeNhf3si-LhAB7v%GZv5VxV& zs3UHtux`?K!z1l#vZ6DpVjiUy?>DsQ#;d|Z3_m!IpRV=#U|znv*43iB%Gv~`l{4*( zo1K65wzp##ESgvEhqad??WKz3|Bgx4(~Y`&%mq=}7>4a%il+Hk0ImyH^oRKGiPafa zEHRAN0rlIPSc?d9y<`z{U7Niz7@;j34Ne6bbqDxO4`S3!J&!5|esweL#Bz{8H?NR? zD-IpXjKMsT!!Nw=wID?_>~auPrg`3xe582~rIz|w{~ookSrUhTUKDB9sp5WsLrj$W zn6R)FkXFCB!Je@rlEqp=yqT)!muB(U7Db43NIBr7Z!sKEF!*cPBdry1>LNqyP0h&` z+mpkO3{1BhlwtI{7stXRL;;b*OB4#7QjGGAmZb%3j!iv+?xF z40=J1b$GEaX)Y-=yk>OEX=Uw&17}9*^t|uuj%%-vUjO3!pyn81mtxg#I+7BrP=QxV z68~YAWZ81NV+9SgDb=({XtJboAW8l)YLec2r~>n^y7_R&JovPLArG z<)4nawGL5h-RmTmTicC;>`iwh0CzYSq<55`nI-l^pq*}pq`!|Fp-k)M)CS;ut?!CEmm3tUTdLQBnvMLGpN= z+7&|d>l0GA&m4J;*}!fjk)dN(ZudEjfi={1<}!?Ye*CEf)$d6k{Q2H4`Yj(xvJ8=H zv%s^BpSJVT7HK{>g5P>G%X68yQRjKhxoosAsq?avk4+*^r&Rwd)3or3PVL_|7YnLQ z=H8QZ*z(zAa2A|l^pS-}YNfTMV#7IIiCVS~4lME_XKsZJN*>71jzyOZJ-N-j`DJ+9a3VofB#avi9MxX#dX>R<|&q zd<@SOqei0m7Z6^>}epdKuoH6{`FOH(3?pfb3aLHi-xzlD&a$*+f--0|RItubx% zn{#K`S;7pT1E;yH)OpCX7pFPqCC%GhGrtzBezU=2!!)zXrI+cKIDtX{q@O}TiHk5hoj zFd>2URsB2&D=*zwYx%>C0aPmHe^6D)0{fEB^7Mu1w(|j?-W#>PYb)fco^uS4DN7qraM&k-RryG$G_`L zQGqoG&|e{%dat`bxg}o^3vu)7C}*ni-fs>`c=ARaxqW40JnimW6q}B=@_Ch%&(?#n zQ*!C46YT$2l4d>L?pmp-c-R4itI1{X2m|59dqiRqAo{ntLY^5x&>;K^6s8=^v)HTy zHVPBBc58lLijTXQ^9pSYo(X#XxrkXHzXO_!*h=OHmM{`iwY-I^fl6t%UD|o9j%>PU z_DWP=?wXx`xvQ&c#*I5K(q!J{KQI%ayRip(&77$;vJ-7v63{jH74PvH7ZwQZsLve> zC0wsNeJ=>EQoh0X{w7(U)!MT-U>KMf8JG%~y!x8*=LTry?CK3gl@GKRTweP^&(kPy z;?5A^d<;Ql=+DzArN2xdZ8<*LB5F=^pf$JYu&Erl~VD?Nv{V82Cef5ge4XM zHf6EGsfDwJ2yDrHd_qOsKvizSOQ#5^+5--F5y55q*>;xxF4GE^xxVj$2STapjFT+K zRkbnA2U~I^M&VGn0+B9KFYUyqc49d|F}-0vk#q7D?c)DwTu*K{u7(d`VmG8X2;^@@ zKcM7Dus=EC08EKwg^nrp99wPFx$?`0o^@{9G;p{9n?GR^_tr!Jizfmsrga+|)-Ok) z6&msy*vVf(m*orsbJ9F@91}!Tjz}r+snr%hW(p ztpb729@z3;*SYL`Ie9XTf53U69g~!PB1BB^%{v{|Ml_aA7gSt?k;us6M$BY#ehY$58;zk@?ZJT>S z3?6QcI#Dg6f-+FziCN;cX!#Af26b7THT(GI!aPr~JfP=U9A}zL{g4NvXZEEuI;gU= z{bF1O!Fh+554&V}h$wxoFzGdy?1!#2xlWSv=axe3Jv{)bhMXPC$s~te`;xwSXAc~1 zhGAL;zc4>3`u_d#a__~TSmTCqO8FQgHNys$CQXYm`SA*%CApOKX|&fE2C`R1-BvXb zdXCUbogNjC*{9arFMSQYXsajbnNh({x;wPCO8pnl0_{|n^&sIk-(LMQ4<+?e&x>3q zL+>{P&Ns=^#Qtvai~c*s%ijly-dEM|f4ig2X`T4Bnw&9qPQ}UaH$H#u?1j=TRRVje z!zxgH+14sgJzy0w3wfx5_4(%AcNg60R_wfKj@wZWF%rJz>t}Y7DnRzkSP;EbQ_`;c zQ@IfESMfx^0sePv!!}Q&*qg%)^5vDt=fL3_fZ3xnz#VpZELSb4;AY(Z)^tYdFa-J9L}+G(J)91Mf}s;DPEQFiRN zPsYhXXY?zR2;_x+s0kgRcUmQ8ANd2F;4ARK;2R5IpGw=ZY}g^7xt1E4@sWQ=O9-&# z%AvR#`DGBV7jEFcZcdUgf32IUTCmQTzTbb1P?YwaIVTW zfqr5^BP;wNHtY@_C{?Av60eLqZrwmN1Dg=fi1rzK@0w_Q`)A6!QRK&9);$w^7x*+e zo+;(DzcW;Ee5R)n_Stq^`}$CvR)FFxm{@mTW*HKsaAA_21P&JNrt=b*2vi#1^X|*l z;Y?hGO(8RV(x2j#N1AUn0DbKWFd5=??h4Wy-dO<*YNhXn9PvNNMJ(gE?|s%c0Ej$Q4b{9@V3_*?@=NL?p>-eBPkvMM zReb9gV$yEmaP0EtYL(c|q%SY8c@CW`3)D~975Hv;naLy()0Oh`G8+b#rgBSP=1w33 zr^0Jd5_Y?IV~v#e09YPTZXQ+2Or0L*5R8O*yq^X&k2b=G&RnCI2#%hd zDqMr@3Cg?f9gS22`IQr-o{{KN8eBY1ErDwESYUn5g3D$xj4G-`u)+t@Elj`!$1ibO zBuafJ506)zkVUDTR^BaHt9lF&^`A;Y&$8zv8Vc|n2g3W(k{-MG#buvKA2sF>INd(i zG}jb46i8D!m4Ik%5fDKLiGGd*sCa-K?dj7Bqas6Rn)zFI1BpQDqe>4^FO`eEE|%KP zrEN(WxWQ6^xU^TfAB6eUf4%dOw%O~(bXViVd^>$t6qk}A{J;(^>zs!%QWwh$O)A~g zb6tF07(xWqXeu-*hq-e^LymW~N56_*f0IYMBLO#zuz1dSkYGhGs=Pey(3LhVI|?Eq zC(st9SNt)X;ajDc=TZ%<)`2}<-Kzv&?RB?D!E70^r5&`vW>GhtL4GTD&Saz4rMSpF14LiZU2k!{?W%*yYfWXnBUJ_(GV?xWXzHb3E z5Z>B5g&L*=A7ZaQgX*=%^;c|Mh0qjLxa5{Po+XooA@g*PSsYB4h7=o@b|{GBmZoO0 zHrc&XKxijKq9MZ|ursd!zqP|*K07uh@)a=U9kjpE;#yAPhXB7zSsY%PXjhiJ0m|i( zk|sx7X{b6jhBvdZTh^X*DYdO5|B(lH^r_CzX7Aax7&%^3`1nX<*Jq#(`7WvBltrjv zBK-bg-=_yUcuP$H(Q#es3LcdHa&%#WN;pi5*F%4AYC35L#Qq)xG1f0iK>>S#*r7Qi zTK>|zI+RolRQn>SJ$!`^(h6|zjMmYtIXwvBQZCMCA}#72KM+P%-bq|mIF9{ldxPPD z>p(nxrz9he-z4ST5&tt5y+72~-&y4Y7)yLT1S;k&v&^G9taRP3{^fHU?{7MgodN@r zd1t-X#LMS0@;O^xLCX6Zo1^z`jbg(-3vciP^@YEjc4-u{MCRC@B5xb3z~C?qS!x^Z zbH5)_G4!P22+U(sY>#%54+aQ`|F8uG<;Vjr=^sC!Xc?6-xx2ipN7*JbU*g6q-Om7N zyM~^3lgt~7JIdHb9otgx!7LU{=T1N4-5Ac!HNA_1dC@D zSU0XD6i=lbDI7N3O7ozEb|y!g2MEtnRECpKgr{s1b3|#%WMEb_okrUoM|=7u{au|U zhMX}do+-5{*#_QqdfVN~QKd1x`Qk%xF33MON>2E4Thy6rY|PB4IK3mD*g0gpm@YOX z=l8k0`RadwYyNOb6n&xv_|~J>IrWCK?;_{mg_tnJ0#2Ck{2f&6`{$az#)C^g#WdYZ ziZn#fcEID}*V*G~iDo&mA|AsqTkL7qodZ6E3OUYw11N=se5fjt4ctwLu@p*%ubKQ< zSse?`xRDh^h>|Ox?zGZO{K9u6kIC{)R|x(Q_z9H;15J$?IG##!AXftwO%9DH9H+CB1nPIn3CwwOP2GQjN&f$P+5&jYT1@ zC+b@;das_{fP3PCBCJ7o46{I{S`sXwO)Ufr6iHzQK$qn%K|XvU4+MDMIX!Tn@Z0l=~Sq*_Hz;PX7_OdHvhQiYk98y98REA<)6wyqB zvkGS77YnDdnm{=3P^EdlxuwxIhb4adO|s@yjK z&>OK+bRIDn7WOMTAl9_dIdkGbEs)y3mOEcoJ%9kiuTTzAYHhM&*_hx56mJ7DR!m*`8`1#|NDspi)QX4(f$zmeaL zmJhvz;x@r+&yBZRE~RtrqcQl^zYx^ll+ViWH`{-VKDF~~wH<5Q?=wO$p+NH}G5P)J zXBU6^?6yC>pa`<>v4m^t7!VjKnh&0u0+n6VpZU>IeCXMy^`HrQ0qeFsL9^heeHw^G zTduTMeOvAbzJL;RWRDn<#!BG#|9Aatk^xY)Oy->G#Y ziZwUh>crSGo^h&PehW54|(V8 zQx{9^TC*~Q_|=)L9y8v(q`9D;bFh=EM5+RJpfi{&ri?)c!zi=&o}i2259arR6nPiL z>~SR6hM~vH-RS8H%+IRjMBc0OYQKbfmBDY`3AAb#he@S%wN;&@bx+(t(=D>!g^Lxd zn%BwA2m}?v^6XhkE7%z6l1vS~OW4KS-*-#}z_BSv+7xwRLWu*KF!%JrnR^}(>W-5BQY{x)`epP7mrdu6p z-y)iI#&{i$bR66w5Q8r|UU}C>pr-iX#i7xF)i(|G=gsycxlRu)r})m;xv|oi5dj zXLLNVtbK?}Ds&t9`J=NRlKjG=W>ANOB-ozdHQ_Vx8xD!{tMtucnP1t^I z-ssenx2EccaTt8l=Ly-X{1`)lH^q41mHh9x(;6(pWd&TDuVn|B^j3>BCVcx~3_W`0 zN6_l}S7ITR0Gj&JwcCMgv%CaKkU{W!v4ZZp81>>hiUL6Zjz^)C7=OuP`f3oQu8a!> zhC-HkI@hLW2g>FkQk@N3uJfJgjo)4VOTLGO+LH6)P|p zT8-)5G&cfLSL2?YV9jd_>=DDr(NK)$z^wYv*Z;&)X6h(iHvSM1H96Ata<|UBO!PX$ zZom((D#RN0#R%z0u&Z6kDI5dX;HT_ak!+C=5#z5wNJdHs@H+ksGgc)(P!baKNC&r~ zO6y?ick_uj%K&H-%{GUiOsX+AFSa^q&~4b(up$#g@|T|085AfLqV$G2wle^ED{#zx zmIUp+A`D5uc*cE$`4Uod3_$mv^n8^Bt*;pQzqnwE03x)|ccw_VDAUj zpK?5HYw)Wa(AjnxQY74Si-_Y@22i#}Fo!woyOpIPux)3-C;BzwO=b8@Ci_d8gDBHT zpL~i^cU=9bpjsP6qLjHQs}+T25Lj16!??dw?9xjo`0w8^c*5+u92m8q>|M*>LcK8v zTubB6W!GVfTX<`>{}cR4cF>fXzZ~seLMP$hqamOi9U~CJO#MN1f9GV8%;kmj0by~u zEp#1oD4`?@MJTBKU9fZMhd)+={VALGOip(ta|zqXbDy#XScqV zbPCA}=ogo>_6XL?+PA%-($q4IUY!s8JzV*<(%n(|LeK{mjee*a=D_mfkKsq|3WP}X zcmcd6VSs#&3IVh91nsCXkf8`iccBvH-?N+}y&X7$`Tn^6A~)P!OV$<*2A`C8ub!Bv z(R3b4J0K+xh^&;TiS9?ROJ35A36cuVwYWgTn|BM5t+9d`c6DNn8P`%VC%EScj@I`=csc z@E+>%aFEV@la0}mnr#1(ynKEFIbOL&< zsAB{h%O-7pLVWmcxb>Ab9KDWz-;btcx#TY{Xe*5D-k&Kuo=6hjT6CYpI|yGmI#eF~ z<+{Q}7}_}ipJG+^5`wwBd~bn_tB+37L?{nj2Ia~j9Zq_iB0j=PmCNv~mOkd`?cac} zFb94DWnky|;Vk%)=uqQiG;IX*et}B*HTYpQ01^`&!l4zSX~g_mgp&mQv!4R5+vSso z?c3O-C-jnk*lCd?geiIw1WaN}Q+iJxFJS5ucG5v%wcQQw*qDO7eW) z_Y=e%H$J(7_BBvaEfo}{=g}UjP2<>DXK4fL%s0?%ZtV-ZF8tD~JVEB1_Wv89gwgpH z*vVxPtE&)@?^kjGuCX|lg<3ga&H7f(x*oIuympfui z)+1c<%@RuYJ7TC#qAAM18EIN;X;hgV@Cizj-M8m|ra0{AIyU6kH(Zn1H|jHz zw|XRfGlmQabUeLSNIR|=9Ikp}7p53<3Ao7jz|HYBG4FXeWqk0DbTK3le8Kr>!+Jr1 zi8ITO%ftuebsguR%28t3F%m=$xc>3+?R-kvx|2)UvGUp;fm#wFR|>4)(%frCsRQg+ z?g$@0-AFKc0?hafsiu;+F$*WL7tGTb%JVq#-Z#jSw2DzDg#ZtD4)2w-gF}wdmp>qm zFk+`qj=-+V;TIV*`00=!qul5R_`tZCq}^7Hdx<<`m09N7#EV|R%j-Vhj+73GFVCMO zF-#Qm`Y)W^ujE}kuSh)ohJ-4sCFhj?dpg*#asFe!AA|mk1xx;U(l2#aRsC$pUAL8t zJ-g-nzEhU%SRDj|_p>6{mQ#7z{?fUgVErmA-5MqlnsnPt`)bb9`DKuE^v*G595p%c!#GwOC#GoI#Hc@xHA1$i zpuGzbF*-3S;GFz<0;;|~@N#o`3)AUcQcOFZ)Nr>lvaAlP|LD@ zhvb*J%*xmLlhODZ^f~!oqMs>1y9Z!LdI0!?l>gIW@Idwv6>@7pJ<)>+Aokp_mQy{6 zu~XE_9XJ1PQ0p?FgZI_4vs}`pT<>sM>e<5^-uDJvgB-R7V-!=q8M~fu9lbNvI|x;# z@@-N22Hx~yt3=``f0;NF*TJRyNQuE*7Tabl4s1u^G@ zsBZk;`&KV>sTPFvl?WDFfpJ~GfdRs`!ChIzp=n>~>QeB)x=dWj?YkgVFA(z-k{L`79~3Ukb~j^tl57xN{nK zOpv&HxJpN%dUjg;*_cel(DfEI(0I?BFN;+T7*Uod;mdUm>mBMi3<^Xc2^h#xGZO*G z(?Eaoa*gk6Q~(B&qL#hDio>+3{&g3$tMhdDIFcmo0FY@kFW^XTf)=6Pn_N={Yo2W~ zLHCz`dp{@=cZDLx@*VX$=|H)m;(ON|H^~w4sTP*T9}jy21En7*7S&^qN~=KStr2-X z4Ywxp{x#h6jm}kL<{dCu{>|g(!Q2OZG+J%u)Qf>f{o^X1=AF1l2ZhAq8h*ON9#k!T zx&qVJ&+^3#ETk$venJ(ew~1YzJeY`@=|kLBA3 z@t^TK4mlq)uo~jCuZGD>;O|FM6*qohk<4rpzeyz27`ZF71_|1tjw(>^h(pI-RXGkS z+F$^v^>6E54zr6P2lo+FF6{XCRFw|F z&!A;@%Sc>=hCtiZf;GD_fUwJuO0?Gj&Y8V*fP{MKsXIq^oD`|?20Yt`_?2%UdYMx@ z;Gi!>L8l-V>XWgHuvwfkQ`N;0louM^Y4S%Tsp_XH`5Jh3+zgKaFCU)(B-$s( zu76#2zM}zi21)aiw8HloanU#d2Kta;xRWDj3lHT6BY(_EQbd*@6j6r|9zAX&Ci7bG)!uiuq!9_Se;p z-iP^xqvd~rieT6Wibea#_33@(AdFS!s7I3Vje=b5>NTfUka6!|_7Ds>G!EE5*)5)vI8Jc}dYMwu2IJ zC)9+>2&Ye(`%so{Ha5p5Rw4g<7H!dv;jFnc&;hInZEuAPI=vPvD-*k{_Qw=n!h8@c z%G}8!JUQnZkvy#hV0^3uBJI}iP2Poz=yazQCv!{_u#)URy7Q9q94F*)j&pCQ)um{1 z8&DsvAT0|gcIW>4Of1P>=O~48;6!ebzuXnvwc^B|FKdT0<*TO!;&#t6DD@{{NC9RN z2Ri7K9OhLH7Z|P~=`LP9dFtyhY8gR#V#HxEfI5MSj^k>=&`}o~>1Wwv%WrF5djzxe z6I%m^8oKJM{H9EE70yRz{c_V5jYK;jW1Ek)S6#*qwM>6+gp%BGWf$-dD}L>CZxJ0P zm-7SWsB$E&=N%lj3_#9~ljwtc(5aw0IpDeTD{3C{0oGxYNv!L)=8MoZ6ttM;jy^ag zZE+G*2#fOo52%0;f$L}8HQFO9xtyy7mSDLtxiAcqv4@hja4~hQ&~<>wYuekem@u%J zM*1p}IFs7eBvTb!+&ymriv3Q)N!l?0FsCx|%T*<^Ps#Q&)M> zKY8xjex)yOj=jBJo`Q-08hTqt8CH6zAQyb)_k_hbQHO-JfOeMw^_)HeEEkzw?6 zx|BUSK1%}d@feQvPdf`!%+sK&3oD$lp_ZBgrTQ`%Hh;xHN5P+D!+z6c5RwGr~SJ+QH_|MYJ090{At~oQG%DJHP zq4=X7mzfQAlQXE)eNgG3d+vrtYf;Q)|Nc}5;EMVyru)B%zAHKTJ~|sdSLudx^kVPm z-wR!iiu&KHnHXR&oWx-;Ni%9)UjKOLRp_3@?nv`x_Tf-#b>~mXF#IB#qbR^)?6fYC z6vaQcd0>zrDwr0apbK21hI$Yx9)b1&eIW6I{;sIh3=H}z;QV!YvXeQm076N}m211( zn+3i>FvGHiiK}u)Ty;LVb91`caKYs$&YP941zN>mP>0t zV6A4hJ3`%F3Cf(UU%yCXQT5%8 zJXw7l_cy~~TDngDdywmCo@k}uaW1xDqnp@JQk5d}ZEh0H$-E$y^4Kfl|pFvdEzZzc>Q(zeCsafWb9JyYRC ze{tjHH2>Znl>gIW({?@$){~RA9y5bu*M+}lPVjnOwR;u99xYO=OdUM080*r7Y?eV_ zo0S}bR8RLLTRU&Un6^+5=KONOegdvriJ!y=3wl7<#50wqwSp`B4BEtTpUarwDnXmS zPQQJ&zaatXq#9T2o7YO1g3sq74!3Y;W|~vBi|w6oVfgD41K-xXt|#4X3wv|!E|9iu zZyi1swz;_rdi~t*n@rzHR-a{5-(QGCiRCSd{LVS=P`QxK$n2FY!=C1mfe<%GUW$*CBQEGV|0g-_T>{@ zMs!@TBUk_4VBzdGPi_n?;v5dG>n*<{AW6+wmYR4fQ7x<&Q2_3Vj3EQ2IK4_YWH;*M zRBqyWuNlJ_RjK52q-m3yWCdd%|Fz#RA@2vF($~@~{42vtFW^GfGV;CrCDftTx9FL6 zdt`MCV_2}~7RL@pH-U+>GP@1#=Zi;NQn=qV?V~?|YWf66Z-diHsJY&@;Vk;tRWpL6i$s zeBLX`XI;!yEj1aVro4x+Sw4J|Y>yxp-lZt4Agj_JBeY}ErTrx+4A9m;lpb~LdVY(+ zvk#Zl9*B9Q6doH|!~W4MqPgA*{R@hgpFj8DPhksI#O=YJkeSezfX5EoGc-+!Ta5X6 z>rVUb8$D`DJt&l>LmUaJh&88Ja;nU3F)^z0yOth$0n8^ejiP^&cy<%--bBjdNYVz_ zhyQ7QDF+_ti-9kIEcSI;v82Gic|G`k#i@GR&z~i*gE|K)%hTYDqV2aKB;az3t@F)4 z*_bb1Q0JuTg+VmWeVlyP0~*`J=1I`{|1u9XMU$v_uIOTYlXQA(_&-H(>PXg|v8~uc zC^B;QOZ{GOvNt4qTyiG_ZH-sZLI z1{H>DSc1XzE>?1sQ2}7xU+kS27vGYUO2AQ~7+ZthtaEd*Z3=VQnd=b@ZjNuqtRGHF zahut}G|=&;ytvJ^jVTli7vduZ@v19m z;+oFYU%z^HLhAeBK9U>jh*?BaL|ltWmAtRL{-ohuOt8Fwi|v?<#D(kCEb^=P3ku_I zgNLFyZol{D9+cobIYdtsrNJfHbvzXq;H6RkUCEvdX5AKd&$Upj((2y{5l-R{$b%&y z*7AY`M#?uv>yrkL(RlMM-$~sXiyG^iGawc)o~r531q&(bRjpz4iU(-_Jq(-gyI*zdRzbmGBOjyPVPbm9KQ&B6~bNB4$Sf^%m z33G&7S^4QxnC72Iwc1gexw9=bWiJ8qu0~PYJ~@IM&t0<%{B1V~&kuk-hNRrXXav#Te`LkS^Rj>4z#%G1 zrhgzj2@N6%v0BzyXFu{WE-@E@9gl za^TEaVs*_Rrm`6W)!*bD*y>@jk_Ok>LmAipg^HXu$>U*1)ARaO!x*91L$6#fge`xw za>^|IVCGj4`c}lSX|$UiKwr=XY>!cc`Y9kiQZ@0S|8(~$GFQkqgmOgecjw(CXwbnJd+P=oW^Ni?YHwH9s zF*lQU`=dUtj&?muOP2HLGZz}qSP4$NI$AOngP)juin~L%Z`Jgi$xVl&biUB)ojdla zVliQAQj3-#v+BZsAq3$b_BT{69PMh>G2}Wg$$y;54I8kl1M$E04?CHP*3{c%V_%Qz z<(wmVOPxt}21k>f#XFbJ8+=05FZIJFBHNcOJ!m){5b24hO1REnM;)`$0a4G|Cc%e~ zZZ6k*9-64$jCSJ@^B0cU6@sm7J$CiiEB8_|1A02vn}a)`UnTv;-6We&Q_(Y2ShDbM z-@`~``){?6;SLzqhNv6Fo4Y6pksp~L5a=0p$QcX2V?_2Q)RrX9-uh8lV_4A0=x$aFSy-6(% z_5w;Q0Q3((U1%2!15gG&@3ZWL8NI@c5nptQQQm%bY`31|y{_Ln@EGhn4Q+cof6{e+ ztCB@B||nEav5@5y#z0V0TLWEi^b{}du& z+aQT)Vdn1qHOuoH%PcvhHTwcXuL)%R(wfgx<2~#$>@kc$DL;>_p_oAo+kLO&IUkT+ zba_a@>K7q|{iJlt$HG)t}|7=eT5)7bXThG_~wM{Ajlhiv<$92M2I>v8VOCG?2CU)1-<NcgcS(DzJG6CiD+JtYjGTxTO3m$OI2{v5C1a8s zsG>+zt9lUSoBbk!XA0cwL≻8{a(Z!eF>e^x4xW@t`vz> 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%0A?rQ!>xWFSjDVTfWMZ1K|l?Mx=q+`E%Dc% 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 z≥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 diff --git a/examples/4/dirichlet-dirichletfenics/adapter-config.json b/examples/4/dirichlet-dirichletfenics/adapter-config.json deleted file mode 100644 index 81c32c7..0000000 --- a/examples/4/dirichlet-dirichletfenics/adapter-config.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "participant_name": "Dirichlet", - "precice_config_file_name": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "Dirichlet-Mesh", - "patches": [ - "interface" - ], - "write_data_names": [ - "HeatTransfer" - ], - "read_data_names": [ - "Temperature" - ] - } - ] -} diff --git a/examples/4/image.png b/examples/4/image.png deleted file mode 100644 index 218baf7528816110c96e92b39079331b9d28c20d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82782 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/4/topology.yaml b/examples/4/topology.yaml deleted file mode 100644 index 423d91b..0000000 --- a/examples/4/topology.yaml +++ /dev/null @@ -1,28 +0,0 @@ -coupling-scheme: - max-time: 1.0 - time-window-size: 0.1 - max-iterations: 100 - coupling: serial - -participants: - - name: Dirichlet - solver: DirichletFEniCS - dimensionality: 2 - - name: Neumann - solver: FEniCS - dimensionality: 2 - -exchanges: - - from: Dirichlet - from-patch: interface - to: Neumann - to-patch: surface - data: HeatTransfer # Fluid reads heat flux - data-type: vector - type: strong - - from: Neumann - from-patch: surface - to: Dirichlet - to-patch: interface - data: Temperature # Solid reads temperature - type: strong diff --git a/examples/5/README.md b/examples/5/README.md deleted file mode 100644 index d2ea1f1..0000000 --- a/examples/5/README.md +++ /dev/null @@ -1,6 +0,0 @@ -This example presents a much more complex configuration, with 3 different participants and more complex naming conventions like 'Fluid-Top" instead of just 'Fluid'. It also contains more exchanges. - -Inspired by: https://github.com/precice/tutorials/tree/develop/heat-exchanger-simplified - -![](config_graph.png) -![](image.png) diff --git a/examples/5/config_graph.png b/examples/5/config_graph.png deleted file mode 100644 index 48061956f986d187b76095e173bd3b8c897fd4d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406320 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%0DsAEdCOY@f2`z+L1eRtQk` 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 z≥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 diff --git a/examples/expert/4/dirichlet-dirichletfenics/adapter-config.json b/examples/expert/4/dirichlet-dirichletfenics/adapter-config.json deleted file mode 100644 index 81c32c7..0000000 --- a/examples/expert/4/dirichlet-dirichletfenics/adapter-config.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "participant_name": "Dirichlet", - "precice_config_file_name": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "Dirichlet-Mesh", - "patches": [ - "interface" - ], - "write_data_names": [ - "HeatTransfer" - ], - "read_data_names": [ - "Temperature" - ] - } - ] -} diff --git a/examples/expert/4/image.png b/examples/expert/4/image.png deleted file mode 100644 index 218baf7528816110c96e92b39079331b9d28c20d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82782 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/expert/4/topology.yaml b/examples/expert/4/topology.yaml deleted file mode 100644 index 0548fa0..0000000 --- a/examples/expert/4/topology.yaml +++ /dev/null @@ -1,35 +0,0 @@ -coupling-scheme: - max-time: 1.0 - time-window-size: 0.1 - max-iterations: 100 - -acceleration: - initial-relaxation: - value: 0.1 - max-used-iterations: 10 - time-windows-reused: 5 - filter: - type: QR2 - limit: 1e-3 - -participants: - - name: Dirichlet - solver: DirichletFEniCS - dimensionality: 2 - - name: Neumann - solver: FEniCS - dimensionality: 2 - -exchanges: - - from: Dirichlet - from-patch: interface - to: Neumann - to-patch: surface - data: HeatTransfer # Fluid reads heat flux - type: strong - - from: Neumann - from-patch: surface - to: Dirichlet - to-patch: interface - data: Temperature # Solid reads temperature - type: strong diff --git a/examples/expert/5/README.md b/examples/expert/5/README.md deleted file mode 100644 index ec39daf..0000000 --- a/examples/expert/5/README.md +++ /dev/null @@ -1,6 +0,0 @@ -This expert example is identical example to example 5, but its acceleration contains more complex settings like filters, max-used iterations, preconditioner etc. - -Inspired by: https://github.com/precice/tutorials/tree/develop/heat-exchanger-simplified - -![](config_graph.png) -![](image.png) diff --git a/examples/expert/5/config_graph.png b/examples/expert/5/config_graph.png deleted file mode 100644 index 48061956f986d187b76095e173bd3b8c897fd4d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406320 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%0DsAEdCOY@f2`z+L1eRtQk` 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

&1Li0EIW#KE#n1+V}iI)8|Y3$lTh0 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%0DXCn%CBRK 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ⅈ19wMv891*%rkziVpS?~gy8qd`qs1@ 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 Kwp`jQ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/expert/5/solid-calculix/adapter-config.json b/examples/expert/5/solid-calculix/adapter-config.json deleted file mode 100644 index abafcc0..0000000 --- a/examples/expert/5/solid-calculix/adapter-config.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "participant_name": "Solid", - "precice_config_file_name": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "Solid-Mesh", - "patches": [ - "interface" - ], - "write_data_names": [ - "HeatTransfer" - ], - "read_data_names": [ - "Temperature" - ] - } - ] -} diff --git a/new_examples/multi-coupling/_generated/README.md b/new_examples/multi-coupling/_generated/README.md deleted file mode 100644 index fca3965..0000000 --- a/new_examples/multi-coupling/_generated/README.md +++ /dev/null @@ -1,88 +0,0 @@ -# Multiphysics Simulation Project - -> [!NOTE] This `README.md` file was auto-generated by preCICE case-generate. - - ---- - -## Project Overview - -This project uses **preCICE** for a multiphysics simulation involving: - -- Solver `ASolver` with participant `NASTIN` -- Solver `SolVer` with participant `SOLIDZ1` -- Solver `SolVer` with participant `SOLIDZ2` -- Solver `SolVer` with participant `SOLIDZ3` - -### Project Structure - -Global files that are generated are: `precice-config.xml`, `README.md` and `clean.sh`. Additionally, for each participant, a folder with an `adapter-config.json` and a `run.sh` file are created. -The folder structure is as follows: - -``` -_generated/ - ├── README.md # This file - ├── clean.sh # Clean up script - ├──nastin-asolver/ - │ ├── adapter-config.json - │ └── run.sh # Not yet implemented - ├──solidz1-solver/ - │ ├── adapter-config.json - │ └── run.sh # Not yet implemented - ├──solidz2-solver/ - │ ├── adapter-config.json - │ └── run.sh # Not yet implemented - ├──solidz3-solver/ - │ ├── adapter-config.json - │ └── run.sh # Not yet implemented - └── precice-config.xml # Global precice-config.xml file -``` - - -- `precice-config.xml` is the global preCICE configuration file which defines the parameters and communication of participants -- `adapter-config.json` is a configuration file to couple the solvers with preCICE. -- `run.sh` is a script that is meant to execute a participant. Note, however, that since different solvers are executed differently, this file is not implemented yet. -- `clean.sh` removes any files in the current root directory that were not created by preCICE case-generate (and moves them to a backup folder). -Execution: - -```bash -./clean.sh [--force] [--dry-run] -``` - -- `--force` Deletes the files and any backup folders -- `--dry-run` Does not delete any files, but prints files that would be deleted - ---- - -## Prerequisites - -Before running the simulation, ensure you have the following installed: - -- The preCICE coupling library -- Solver `ASolver` and its dependencies -- Solver `SolVer` and its dependencies -- Solver `SolVer` and its dependencies -- Solver `SolVer` and its dependencies - ---- - -## Running the Simulation - -### Quick Start - -```bash -# Navigate to the `_generated` folder -cd _generated/ - -# Implement the run script - -# Make the run script executable -chmod +x run.sh - -# Execute the simulation -./run.sh -``` - ---- - -For more information, see the [preCICE documentation](https://precice.org/docs.html) and [precice-case-generate](https://github.com/precice/case-generate). \ No newline at end of file diff --git a/new_examples/multi-coupling/_generated/clean.sh b/new_examples/multi-coupling/_generated/clean.sh deleted file mode 100644 index 2954b31..0000000 --- a/new_examples/multi-coupling/_generated/clean.sh +++ /dev/null @@ -1,350 +0,0 @@ -#!/usr/bin/env bash - -# ------------------------------------------------------------------- -# Script Name: clean.sh -# Description: Recursively deletes/moves files/dirs except: -# - Global preserved filenames anywhere (run.sh, adapter-config.json...) -# - Specific root files (README.md, precice-config.xml) -# Usage: ./clean.sh [--dry-run] [--force] -# --dry-run : show what would happen, don't remove/move -# --force : permanently delete unpreserved items AND remove existing backups -# ------------------------------------------------------------------- - -# Strict mode: -# -e: exit on error -# -u: exit on undefined variable -# -o pipefail: exit if any command in a pipe fails -set -euo pipefail - -# --- CONFIGURATION --- -ROOT_DIR="$(pwd)" -LOG_FILE="cleanup.log" -BACKUP_DIR="$ROOT_DIR/backup_$(date '+%Y%m%d_%H%M%S')" - -# 1. GLOBAL PRESERVES: filenames to keep anywhere in the tree -GLOBAL_PRESERVE_NAMES=( - "run.sh" - "adapter-config.json" -) - -# 2. ROOT PRESERVES: filenames to keep only if in ROOT_DIR -ROOT_PRESERVE_PATHS=( - "clean.sh" - "README.md" - "precice-config.xml" - "$LOG_FILE" # always keep the log (will be overwritten) -) - -# --- DEFAULTS --- -DRY_RUN=0 # No dry-run by default -FORCE=0 # No permanent removal of files by default -MOVED_COUNT=0 # Counter to track if we actually backed anything up -DELETED_COUNT=0 # Counter to track if we actually deleted anything - -# --- HELPERS --- - -log() { - # We use tee -a (append) here so we don't overwrite previous lines *of this run*. - # The file is cleared once at the start of the MAIN block. - echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE" -} - -# Is filename (basename) a global preserved name? -is_global_preserved() { - local filename="$1" - for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do - if [[ "$filename" == "$name" ]]; then - return 0 - fi - done - return 1 -} - -# Is a relative path preserved at root? -is_root_preserved() { - local relpath="$1" - for p in "${ROOT_PRESERVE_PATHS[@]}"; do - if [[ "$relpath" == "$p" ]]; then - return 0 - fi - done - return 1 -} - -# Find out whether directory contains any preserved file *anywhere* under it. -# Implementation Note: Uses `head -n 1` instead of `-quit` for maximum compatibility -# across all Linux distros (including Alpine/BusyBox) and BSD/MacOS. -dir_contains_preserved_content() { - local dir="$1" - local name - local -a find_args=() - - # Build find arguments: ( -name A -o -name B ... ) - for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do - if [ ${#find_args[@]} -eq 0 ]; then - find_args+=( -name "$name" ) - else - find_args+=( -o -name "$name" ) - fi - done - - # Check if find returns any match. - # piping to head -n 1 causes find to receive SIGPIPE and stop early if a match is found. - if [ -n "$(find "$dir" \( "${find_args[@]}" \) -print 2>/dev/null | head -n 1)" ]; then - return 0 - fi - return 1 -} - -# Ensure backup destination exists and safely move source there preserving relative path. -# Prevents collisions by making unique names if needed. -# Args: -# $1 = absolute src path -# $2 = rel path relative to ROOT_DIR (used to recreate path inside backup) -safe_move_to_backup() { - local src="$1" - local rel="$2" - - # Destination path = $BACKUP_DIR/$rel - local dest="$BACKUP_DIR/$rel" - local dest_dir - dest_dir="$(dirname "$dest")" - - # Normalize: if dirname is ".", use $BACKUP_DIR as target dir - if [[ "$dest_dir" == "$BACKUP_DIR/." ]] || [[ "$dest_dir" == "." ]]; then - dest_dir="$BACKUP_DIR" - fi - - if [ "$DRY_RUN" -eq 0 ]; then - mkdir -p "$dest_dir" - fi - - # If dest exists, append numeric suffix before extension to avoid overwrite - if [ -e "$dest" ]; then - local base name ext candidate n - base="$(basename "$dest")" - name="${base%.*}" - ext="${base##*.}" - n=1 - - # Check if file has an extension - if [[ "$ext" == "$base" ]]; then - # No extension - candidate="$dest_dir/${name}_$n" - while [ -e "$candidate" ]; do - n=$((n+1)) - candidate="$dest_dir/${name}_$n" - done - else - # Has extension - candidate="$dest_dir/${name}_$n.$ext" - while [ -e "$candidate" ]; do - n=$((n+1)) - candidate="$dest_dir/${name}_$n.$ext" - done - fi - dest="$candidate" - fi - - if [ "$DRY_RUN" -eq 1 ]; then - log "Would be deleted: ${rel}" - else - mv -- "$src" "$dest" - # Increment the counter because we successfully moved a file - MOVED_COUNT=$((MOVED_COUNT + 1)) - log "Deleted: ${rel}" - fi -} - -# Safe remove (used by --force). Respects --dry-run. -safe_remove() { - local src="$1" - local rel="$2" - if [ "$DRY_RUN" -eq 1 ]; then - log "Would permanently remove: $rel" - else - rm -rf -- "$src" - DELETED_COUNT=$((DELETED_COUNT + 1)) - log "Permanently removed: $rel" - fi -} - -# Remove existing backup_* directories permanently (used when FORCE=1). -remove_existing_backups_permanently() { - shopt -s nullglob - local found=0 - for old in "$ROOT_DIR"/backup_*; do - if [ -d "$old" ]; then - found=1 - if [ "$DRY_RUN" -eq 1 ]; then - log "Would permanently remove backup: $(basename "$old")" - else - rm -rf -- "$old" - DELETED_COUNT=$((DELETED_COUNT + 1)) - log "Permanently removed backup: $(basename "$old")" - fi - fi - done - shopt -u nullglob - if [ "$found" -eq 0 ]; then - log "No existing backup directories to remove." - fi -} - -# Perform action for a single path (file or directory) that is NOT preserved. -# Moves to backup preserving tree, or removes permanently when FORCE=1. -perform_action() { - local item="$1" - local rel_path="${item#$ROOT_DIR/}" - - if [ "$FORCE" -eq 1 ]; then - safe_remove "$item" "$rel_path" - else - safe_move_to_backup "$item" "$rel_path" - fi -} - -# --- RECURSIVE CLEANUP --- -recursive_cleanup() { - local current_dir="$1" - - # dotglob: includes hidden files (starting with .) - # nullglob: makes the loop not run if no files match (avoids literal string issues) - shopt -s dotglob nullglob - - local item rel_path base - - for item in "$current_dir"/*; do - # Sanity check: ensure file exists (handles rare race conditions or broken links) - [ ! -e "$item" ] && [ ! -L "$item" ] && continue - - rel_path="${item#$ROOT_DIR/}" - base="$(basename "$item")" - - # Skip . and .. (though glob usually excludes them, safety first) - if [[ "$base" == "." || "$base" == ".." ]]; then - continue - fi - - # --- FILE or SYMLINK --- - if [ -f "$item" ] || [ -L "$item" ]; then - # 1. Preserve by global name anywhere? - if is_global_preserved "$base"; then - log "Preserving: $rel_path" - continue - fi - - # 2. Preserve if at root and matches root-preserve list? - if [[ "$current_dir" == "$ROOT_DIR" ]] && is_root_preserved "$base"; then - log "Preserving: $rel_path" - continue - fi - - # Otherwise: perform action - perform_action "$item" - continue - fi - - # --- DIRECTORY --- - if [ -d "$item" ]; then - # Check if dir contains any preserved content anywhere below - if dir_contains_preserved_content "$item"; then - recursive_cleanup "$item" - - # After recursion, if directory is empty, remove it (respecting dry-run) - if [ -z "$(ls -A "$item")" ]; then - if [ "$DRY_RUN" -eq 1 ]; then - log "Would remove empty directory: $rel_path" - else - rmdir -- "$item" - DELETED_COUNT=$((DELETED_COUNT + 1)) - log "Removed empty directory: $rel_path" - fi - fi - else - # Directory contains no preserved files anywhere deep: remove/move entire directory - perform_action "$item" - fi - continue - fi - done - - # Restore defaults for shopt to avoid side effects if function is reused - shopt -u dotglob nullglob -} - -# --- MAIN --- - -# Parse flags -while [[ $# -gt 0 ]]; do - case $1 in - --dry-run) DRY_RUN=1 ;; - --force) FORCE=1 ;; - *) echo "Unknown parameter: $1"; exit 1 ;; - esac - shift -done - -# Initialize/Clear the log file for this new run -: > "$LOG_FILE" - -# Confirmation prompt (skip when dry-run) -if [ "$DRY_RUN" -eq 1 ]; then - log "Dry run enabled, nothing will be removed." -else - read -p "This will delete all files except preserved ones. Proceed? [y/n]: " confirm - case "$confirm" in - [yY][eE][sS]|[yY]) ;; - *) log "Cleanup aborted."; exit 0 ;; - esac -fi - -if [ "$FORCE" -eq 1 ] && [ "$DRY_RUN" -eq 1 ]; then - log "Ignoring --force." - FORCE=0 -fi - -log "Starting cleanup..." - - -if [ "$FORCE" -eq 1 ]; then - remove_existing_backups_permanently -fi - -recursive_cleanup "$ROOT_DIR" - -if [ "$DELETED_COUNT" -eq 1 ]; then - FILE_STR="file" - DIRECTORY_STR="directory" -else - FILE_STR="files" - DIRECTORY_STR="directories" -fi - -OUTPUT_STR="" - -# Output if FORCE -if [ "$FORCE" -eq 1 ]; then - OUTPUT_STR="Deleted $DELETED_COUNT $FILE_STR or $DIRECTORY_STR. " -fi - -if [ "$DRY_RUN" -eq 1 ]; then - OUTPUT_STR="Dry-run completed successfully." -else - OUTPUT_STR="${OUTPUT_STR}Cleanup completed successfully." -fi - -# Only append the backup message if we actually moved files (MOVED_COUNT > 0) -if [ "$MOVED_COUNT" -gt 0 ]; then - # Correct wording - if [ "$MOVED_COUNT" -eq 1 ]; then - FILE_STR="file" - DIRECTORY_STR="directory" - else - FILE_STR="files" - DIRECTORY_STR="directories" - fi - OUTPUT_STR="$OUTPUT_STR Backed up $MOVED_COUNT deleted $FILE_STR or $DIRECTORY_STR in '$BACKUP_DIR'." -fi - -log "$OUTPUT_STR" \ No newline at end of file diff --git a/new_examples/multi-coupling/_generated/nastin-asolver/adapter-config.json b/new_examples/multi-coupling/_generated/nastin-asolver/adapter-config.json deleted file mode 100644 index b3eaceb..0000000 --- a/new_examples/multi-coupling/_generated/nastin-asolver/adapter-config.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "participant_name": "NASTIN", - "precice_config_file_name": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "NASTIN-SOLIDZ1-Mesh", - "patches": [ - "interface" - ], - "read_data_names": [ - "Displacements1" - ], - "write_data_names": [ - "Forces1" - ] - }, - { - "mesh_name": "NASTIN-SOLIDZ2-Mesh", - "patches": [ - "interface" - ], - "read_data_names": [ - "Displacements2" - ], - "write_data_names": [ - "Forces2" - ] - }, - { - "mesh_name": "NASTIN-SOLIDZ3-Mesh", - "patches": [ - "interface" - ], - "read_data_names": [ - "Displacements3" - ], - "write_data_names": [ - "Forces3" - ] - } - ] -} \ No newline at end of file diff --git a/new_examples/multi-coupling/_generated/nastin-asolver/run.sh b/new_examples/multi-coupling/_generated/nastin-asolver/run.sh deleted file mode 100644 index 5fdeba8..0000000 --- a/new_examples/multi-coupling/_generated/nastin-asolver/run.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -# -# run.sh script -# -# This is a template. You need to implement it yourself. -# -# If you are trying to launch a python script, you need to add: -# -# python path/to/file.py -# -# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh -# -# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment -# or installing dependencies) have already been completed. -# Therefore, you may only need to add: -# -# python path/to/file.py -# - -set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/multi-coupling/_generated/precice-config.xml b/new_examples/multi-coupling/_generated/precice-config.xml deleted file mode 100644 index 0576651..0000000 --- a/new_examples/multi-coupling/_generated/precice-config.xml +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/new_examples/multi-coupling/_generated/solidz1-solver/adapter-config.json b/new_examples/multi-coupling/_generated/solidz1-solver/adapter-config.json deleted file mode 100644 index c065898..0000000 --- a/new_examples/multi-coupling/_generated/solidz1-solver/adapter-config.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "participant_name": "SOLIDZ1", - "precice_config_file_name": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "SOLIDZ1-Mesh", - "patches": [ - "interface" - ], - "read_data_names": [ - "Forces1" - ], - "write_data_names": [ - "Displacements1" - ] - } - ] -} \ No newline at end of file diff --git a/new_examples/multi-coupling/_generated/solidz1-solver/run.sh b/new_examples/multi-coupling/_generated/solidz1-solver/run.sh deleted file mode 100644 index 5fdeba8..0000000 --- a/new_examples/multi-coupling/_generated/solidz1-solver/run.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -# -# run.sh script -# -# This is a template. You need to implement it yourself. -# -# If you are trying to launch a python script, you need to add: -# -# python path/to/file.py -# -# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh -# -# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment -# or installing dependencies) have already been completed. -# Therefore, you may only need to add: -# -# python path/to/file.py -# - -set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/multi-coupling/_generated/solidz2-solver/adapter-config.json b/new_examples/multi-coupling/_generated/solidz2-solver/adapter-config.json deleted file mode 100644 index 249ddfa..0000000 --- a/new_examples/multi-coupling/_generated/solidz2-solver/adapter-config.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "participant_name": "SOLIDZ2", - "precice_config_file_name": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "SOLIDZ2-Mesh", - "patches": [ - "interface" - ], - "read_data_names": [ - "Forces2" - ], - "write_data_names": [ - "Displacements2" - ] - } - ] -} \ No newline at end of file diff --git a/new_examples/multi-coupling/_generated/solidz2-solver/run.sh b/new_examples/multi-coupling/_generated/solidz2-solver/run.sh deleted file mode 100644 index 5fdeba8..0000000 --- a/new_examples/multi-coupling/_generated/solidz2-solver/run.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -# -# run.sh script -# -# This is a template. You need to implement it yourself. -# -# If you are trying to launch a python script, you need to add: -# -# python path/to/file.py -# -# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh -# -# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment -# or installing dependencies) have already been completed. -# Therefore, you may only need to add: -# -# python path/to/file.py -# - -set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/multi-coupling/_generated/solidz3-solver/adapter-config.json b/new_examples/multi-coupling/_generated/solidz3-solver/adapter-config.json deleted file mode 100644 index 5ccabe4..0000000 --- a/new_examples/multi-coupling/_generated/solidz3-solver/adapter-config.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "participant_name": "SOLIDZ3", - "precice_config_file_name": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "SOLIDZ3-Mesh", - "patches": [ - "interface" - ], - "read_data_names": [ - "Forces3" - ], - "write_data_names": [ - "Displacements3" - ] - } - ] -} \ No newline at end of file diff --git a/new_examples/multi-coupling/_generated/solidz3-solver/run.sh b/new_examples/multi-coupling/_generated/solidz3-solver/run.sh deleted file mode 100644 index 5fdeba8..0000000 --- a/new_examples/multi-coupling/_generated/solidz3-solver/run.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -# -# run.sh script -# -# This is a template. You need to implement it yourself. -# -# If you are trying to launch a python script, you need to add: -# -# python path/to/file.py -# -# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh -# -# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment -# or installing dependencies) have already been completed. -# Therefore, you may only need to add: -# -# python path/to/file.py -# - -set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/multi-coupling/multi.yaml b/new_examples/multi-coupling/multi.yaml deleted file mode 100644 index 607764b..0000000 --- a/new_examples/multi-coupling/multi.yaml +++ /dev/null @@ -1,56 +0,0 @@ -participants: - - name: NASTIN - solver: ASolver - dimensionality: 3 - - name: SOLIDZ1 - solver: SolVer - dimensionality: 3 - - name: SOLIDZ2 - solver: SolVer - dimensionality: 3 - - name: SOLIDZ3 - solver: SolVer - dimensionality: 3 -exchanges: - - from: NASTIN - to: SOLIDZ1 - from-patch: interface - to-patch: interface - data: Forces1 - type: strong - data-type: vector - - from: NASTIN - to: SOLIDZ2 - from-patch: interface - to-patch: interface - data: Forces2 - type: strong - data-type: vector - - from: NASTIN - to: SOLIDZ3 - from-patch: interface - to-patch: interface - data: Forces3 - type: strong - data-type: vector - - from: SOLIDZ1 - to: NASTIN - from-patch: interface - to-patch: interface - data: Displacements1 - type: strong - data-type: vector - - from: SOLIDZ2 - to: NASTIN - from-patch: interface - to-patch: interface - data: Displacements2 - type: strong - data-type: vector - - from: SOLIDZ3 - to: NASTIN - from-patch: interface - to-patch: interface - data: Displacements3 - type: strong - data-type: vector diff --git a/new_examples/tutorial1/_generated/README.md b/new_examples/tutorial1/_generated/README.md deleted file mode 100644 index 5662797..0000000 --- a/new_examples/tutorial1/_generated/README.md +++ /dev/null @@ -1,78 +0,0 @@ -# Multiphysics Simulation Project - -> [!NOTE] This `README.md` file was auto-generated by preCICE case-generate. - - ---- - -## Project Overview - -This project uses **preCICE** for a multiphysics simulation involving: - -- Solver `ASolver` with participant `Generator` -- Solver `BSolver` with participant `Propagator` - -### Project Structure - -Global files that are generated are: `precice-config.xml`, `README.md` and `clean.sh`. Additionally, for each participant, a folder with an `adapter-config.json` and a `run.sh` file are created. -The folder structure is as follows: - -``` -_generated/ - ├── README.md # This file - ├── clean.sh # Clean up script - ├──generator-asolver/ - │ ├── adapter-config.json - │ └── run.sh # Not yet implemented - ├──propagator-bsolver/ - │ ├── adapter-config.json - │ └── run.sh # Not yet implemented - └── precice-config.xml # Global precice-config.xml file -``` - - -- `precice-config.xml` is the global preCICE configuration file which defines the parameters and communication of participants -- `adapter-config.json` is a configuration file to couple the solvers with preCICE. -- `run.sh` is a script that is meant to execute a participant. Note, however, that since different solvers are executed differently, this file is not implemented yet. -- `clean.sh` removes any files in the current root directory that were not created by preCICE case-generate (and moves them to a backup folder). -Execution: - -```bash -./clean.sh [--force] [--dry-run] -``` - -- `--force` Deletes the files and any backup folders -- `--dry-run` Does not delete any files, but prints files that would be deleted - ---- - -## Prerequisites - -Before running the simulation, ensure you have the following installed: - -- The preCICE coupling library -- Solver `ASolver` and its dependencies -- Solver `BSolver` and its dependencies - ---- - -## Running the Simulation - -### Quick Start - -```bash -# Navigate to the `_generated` folder -cd _generated/ - -# Implement the run script - -# Make the run script executable -chmod +x run.sh - -# Execute the simulation -./run.sh -``` - ---- - -For more information, see the [preCICE documentation](https://precice.org/docs.html) and [precice-case-generate](https://github.com/precice/case-generate). \ No newline at end of file diff --git a/new_examples/tutorial1/_generated/clean.sh b/new_examples/tutorial1/_generated/clean.sh deleted file mode 100644 index 2954b31..0000000 --- a/new_examples/tutorial1/_generated/clean.sh +++ /dev/null @@ -1,350 +0,0 @@ -#!/usr/bin/env bash - -# ------------------------------------------------------------------- -# Script Name: clean.sh -# Description: Recursively deletes/moves files/dirs except: -# - Global preserved filenames anywhere (run.sh, adapter-config.json...) -# - Specific root files (README.md, precice-config.xml) -# Usage: ./clean.sh [--dry-run] [--force] -# --dry-run : show what would happen, don't remove/move -# --force : permanently delete unpreserved items AND remove existing backups -# ------------------------------------------------------------------- - -# Strict mode: -# -e: exit on error -# -u: exit on undefined variable -# -o pipefail: exit if any command in a pipe fails -set -euo pipefail - -# --- CONFIGURATION --- -ROOT_DIR="$(pwd)" -LOG_FILE="cleanup.log" -BACKUP_DIR="$ROOT_DIR/backup_$(date '+%Y%m%d_%H%M%S')" - -# 1. GLOBAL PRESERVES: filenames to keep anywhere in the tree -GLOBAL_PRESERVE_NAMES=( - "run.sh" - "adapter-config.json" -) - -# 2. ROOT PRESERVES: filenames to keep only if in ROOT_DIR -ROOT_PRESERVE_PATHS=( - "clean.sh" - "README.md" - "precice-config.xml" - "$LOG_FILE" # always keep the log (will be overwritten) -) - -# --- DEFAULTS --- -DRY_RUN=0 # No dry-run by default -FORCE=0 # No permanent removal of files by default -MOVED_COUNT=0 # Counter to track if we actually backed anything up -DELETED_COUNT=0 # Counter to track if we actually deleted anything - -# --- HELPERS --- - -log() { - # We use tee -a (append) here so we don't overwrite previous lines *of this run*. - # The file is cleared once at the start of the MAIN block. - echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE" -} - -# Is filename (basename) a global preserved name? -is_global_preserved() { - local filename="$1" - for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do - if [[ "$filename" == "$name" ]]; then - return 0 - fi - done - return 1 -} - -# Is a relative path preserved at root? -is_root_preserved() { - local relpath="$1" - for p in "${ROOT_PRESERVE_PATHS[@]}"; do - if [[ "$relpath" == "$p" ]]; then - return 0 - fi - done - return 1 -} - -# Find out whether directory contains any preserved file *anywhere* under it. -# Implementation Note: Uses `head -n 1` instead of `-quit` for maximum compatibility -# across all Linux distros (including Alpine/BusyBox) and BSD/MacOS. -dir_contains_preserved_content() { - local dir="$1" - local name - local -a find_args=() - - # Build find arguments: ( -name A -o -name B ... ) - for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do - if [ ${#find_args[@]} -eq 0 ]; then - find_args+=( -name "$name" ) - else - find_args+=( -o -name "$name" ) - fi - done - - # Check if find returns any match. - # piping to head -n 1 causes find to receive SIGPIPE and stop early if a match is found. - if [ -n "$(find "$dir" \( "${find_args[@]}" \) -print 2>/dev/null | head -n 1)" ]; then - return 0 - fi - return 1 -} - -# Ensure backup destination exists and safely move source there preserving relative path. -# Prevents collisions by making unique names if needed. -# Args: -# $1 = absolute src path -# $2 = rel path relative to ROOT_DIR (used to recreate path inside backup) -safe_move_to_backup() { - local src="$1" - local rel="$2" - - # Destination path = $BACKUP_DIR/$rel - local dest="$BACKUP_DIR/$rel" - local dest_dir - dest_dir="$(dirname "$dest")" - - # Normalize: if dirname is ".", use $BACKUP_DIR as target dir - if [[ "$dest_dir" == "$BACKUP_DIR/." ]] || [[ "$dest_dir" == "." ]]; then - dest_dir="$BACKUP_DIR" - fi - - if [ "$DRY_RUN" -eq 0 ]; then - mkdir -p "$dest_dir" - fi - - # If dest exists, append numeric suffix before extension to avoid overwrite - if [ -e "$dest" ]; then - local base name ext candidate n - base="$(basename "$dest")" - name="${base%.*}" - ext="${base##*.}" - n=1 - - # Check if file has an extension - if [[ "$ext" == "$base" ]]; then - # No extension - candidate="$dest_dir/${name}_$n" - while [ -e "$candidate" ]; do - n=$((n+1)) - candidate="$dest_dir/${name}_$n" - done - else - # Has extension - candidate="$dest_dir/${name}_$n.$ext" - while [ -e "$candidate" ]; do - n=$((n+1)) - candidate="$dest_dir/${name}_$n.$ext" - done - fi - dest="$candidate" - fi - - if [ "$DRY_RUN" -eq 1 ]; then - log "Would be deleted: ${rel}" - else - mv -- "$src" "$dest" - # Increment the counter because we successfully moved a file - MOVED_COUNT=$((MOVED_COUNT + 1)) - log "Deleted: ${rel}" - fi -} - -# Safe remove (used by --force). Respects --dry-run. -safe_remove() { - local src="$1" - local rel="$2" - if [ "$DRY_RUN" -eq 1 ]; then - log "Would permanently remove: $rel" - else - rm -rf -- "$src" - DELETED_COUNT=$((DELETED_COUNT + 1)) - log "Permanently removed: $rel" - fi -} - -# Remove existing backup_* directories permanently (used when FORCE=1). -remove_existing_backups_permanently() { - shopt -s nullglob - local found=0 - for old in "$ROOT_DIR"/backup_*; do - if [ -d "$old" ]; then - found=1 - if [ "$DRY_RUN" -eq 1 ]; then - log "Would permanently remove backup: $(basename "$old")" - else - rm -rf -- "$old" - DELETED_COUNT=$((DELETED_COUNT + 1)) - log "Permanently removed backup: $(basename "$old")" - fi - fi - done - shopt -u nullglob - if [ "$found" -eq 0 ]; then - log "No existing backup directories to remove." - fi -} - -# Perform action for a single path (file or directory) that is NOT preserved. -# Moves to backup preserving tree, or removes permanently when FORCE=1. -perform_action() { - local item="$1" - local rel_path="${item#$ROOT_DIR/}" - - if [ "$FORCE" -eq 1 ]; then - safe_remove "$item" "$rel_path" - else - safe_move_to_backup "$item" "$rel_path" - fi -} - -# --- RECURSIVE CLEANUP --- -recursive_cleanup() { - local current_dir="$1" - - # dotglob: includes hidden files (starting with .) - # nullglob: makes the loop not run if no files match (avoids literal string issues) - shopt -s dotglob nullglob - - local item rel_path base - - for item in "$current_dir"/*; do - # Sanity check: ensure file exists (handles rare race conditions or broken links) - [ ! -e "$item" ] && [ ! -L "$item" ] && continue - - rel_path="${item#$ROOT_DIR/}" - base="$(basename "$item")" - - # Skip . and .. (though glob usually excludes them, safety first) - if [[ "$base" == "." || "$base" == ".." ]]; then - continue - fi - - # --- FILE or SYMLINK --- - if [ -f "$item" ] || [ -L "$item" ]; then - # 1. Preserve by global name anywhere? - if is_global_preserved "$base"; then - log "Preserving: $rel_path" - continue - fi - - # 2. Preserve if at root and matches root-preserve list? - if [[ "$current_dir" == "$ROOT_DIR" ]] && is_root_preserved "$base"; then - log "Preserving: $rel_path" - continue - fi - - # Otherwise: perform action - perform_action "$item" - continue - fi - - # --- DIRECTORY --- - if [ -d "$item" ]; then - # Check if dir contains any preserved content anywhere below - if dir_contains_preserved_content "$item"; then - recursive_cleanup "$item" - - # After recursion, if directory is empty, remove it (respecting dry-run) - if [ -z "$(ls -A "$item")" ]; then - if [ "$DRY_RUN" -eq 1 ]; then - log "Would remove empty directory: $rel_path" - else - rmdir -- "$item" - DELETED_COUNT=$((DELETED_COUNT + 1)) - log "Removed empty directory: $rel_path" - fi - fi - else - # Directory contains no preserved files anywhere deep: remove/move entire directory - perform_action "$item" - fi - continue - fi - done - - # Restore defaults for shopt to avoid side effects if function is reused - shopt -u dotglob nullglob -} - -# --- MAIN --- - -# Parse flags -while [[ $# -gt 0 ]]; do - case $1 in - --dry-run) DRY_RUN=1 ;; - --force) FORCE=1 ;; - *) echo "Unknown parameter: $1"; exit 1 ;; - esac - shift -done - -# Initialize/Clear the log file for this new run -: > "$LOG_FILE" - -# Confirmation prompt (skip when dry-run) -if [ "$DRY_RUN" -eq 1 ]; then - log "Dry run enabled, nothing will be removed." -else - read -p "This will delete all files except preserved ones. Proceed? [y/n]: " confirm - case "$confirm" in - [yY][eE][sS]|[yY]) ;; - *) log "Cleanup aborted."; exit 0 ;; - esac -fi - -if [ "$FORCE" -eq 1 ] && [ "$DRY_RUN" -eq 1 ]; then - log "Ignoring --force." - FORCE=0 -fi - -log "Starting cleanup..." - - -if [ "$FORCE" -eq 1 ]; then - remove_existing_backups_permanently -fi - -recursive_cleanup "$ROOT_DIR" - -if [ "$DELETED_COUNT" -eq 1 ]; then - FILE_STR="file" - DIRECTORY_STR="directory" -else - FILE_STR="files" - DIRECTORY_STR="directories" -fi - -OUTPUT_STR="" - -# Output if FORCE -if [ "$FORCE" -eq 1 ]; then - OUTPUT_STR="Deleted $DELETED_COUNT $FILE_STR or $DIRECTORY_STR. " -fi - -if [ "$DRY_RUN" -eq 1 ]; then - OUTPUT_STR="Dry-run completed successfully." -else - OUTPUT_STR="${OUTPUT_STR}Cleanup completed successfully." -fi - -# Only append the backup message if we actually moved files (MOVED_COUNT > 0) -if [ "$MOVED_COUNT" -gt 0 ]; then - # Correct wording - if [ "$MOVED_COUNT" -eq 1 ]; then - FILE_STR="file" - DIRECTORY_STR="directory" - else - FILE_STR="files" - DIRECTORY_STR="directories" - fi - OUTPUT_STR="$OUTPUT_STR Backed up $MOVED_COUNT deleted $FILE_STR or $DIRECTORY_STR in '$BACKUP_DIR'." -fi - -log "$OUTPUT_STR" \ No newline at end of file diff --git a/new_examples/tutorial1/_generated/generator-asolver/adapter-config.json b/new_examples/tutorial1/_generated/generator-asolver/adapter-config.json deleted file mode 100644 index 84de0ac..0000000 --- a/new_examples/tutorial1/_generated/generator-asolver/adapter-config.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "participant_name": "Generator", - "precice_config_file_name": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "Generator-Mesh", - "patches": [ - "interface" - ], - "write_data_names": [ - "Color" - ] - } - ] -} \ No newline at end of file diff --git a/new_examples/tutorial1/_generated/generator-asolver/run.sh b/new_examples/tutorial1/_generated/generator-asolver/run.sh deleted file mode 100644 index 5fdeba8..0000000 --- a/new_examples/tutorial1/_generated/generator-asolver/run.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -# -# run.sh script -# -# This is a template. You need to implement it yourself. -# -# If you are trying to launch a python script, you need to add: -# -# python path/to/file.py -# -# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh -# -# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment -# or installing dependencies) have already been completed. -# Therefore, you may only need to add: -# -# python path/to/file.py -# - -set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/tutorial1/_generated/precice-config.xml b/new_examples/tutorial1/_generated/precice-config.xml deleted file mode 100644 index 3ba986e..0000000 --- a/new_examples/tutorial1/_generated/precice-config.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/new_examples/tutorial1/_generated/propagator-bsolver/adapter-config.json b/new_examples/tutorial1/_generated/propagator-bsolver/adapter-config.json deleted file mode 100644 index 390d7fc..0000000 --- a/new_examples/tutorial1/_generated/propagator-bsolver/adapter-config.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "participant_name": "Propagator", - "precice_config_file_name": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "Propagator-Mesh", - "patches": [ - "interface" - ], - "read_data_names": [ - "Color" - ] - } - ] -} \ No newline at end of file diff --git a/new_examples/tutorial1/_generated/propagator-bsolver/run.sh b/new_examples/tutorial1/_generated/propagator-bsolver/run.sh deleted file mode 100644 index 5fdeba8..0000000 --- a/new_examples/tutorial1/_generated/propagator-bsolver/run.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -# -# run.sh script -# -# This is a template. You need to implement it yourself. -# -# If you are trying to launch a python script, you need to add: -# -# python path/to/file.py -# -# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh -# -# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment -# or installing dependencies) have already been completed. -# Therefore, you may only need to add: -# -# python path/to/file.py -# - -set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/tutorial1/tutorial1.yaml b/new_examples/tutorial1/tutorial1.yaml deleted file mode 100644 index 62ddb59..0000000 --- a/new_examples/tutorial1/tutorial1.yaml +++ /dev/null @@ -1,15 +0,0 @@ -participants: - - name: Generator - solver: ASolver - dimensionality: 2 - - name: Propagator - solver: BSolver - dimensionality: 2 -exchanges: - - from: Generator - to: Propagator - from-patch: interface - to-patch: interface - data: Color - type: weak - data-type: scalar \ No newline at end of file diff --git a/new_examples/tutorial2/_generated/README.md b/new_examples/tutorial2/_generated/README.md deleted file mode 100644 index 891ce73..0000000 --- a/new_examples/tutorial2/_generated/README.md +++ /dev/null @@ -1,83 +0,0 @@ -# Multiphysics Simulation Project - -> [!NOTE] This `README.md` file was auto-generated by preCICE case-generate. - - ---- - -## Project Overview - -This project uses **preCICE** for a multiphysics simulation involving: - -- Solver `ASolver` with participant `Generator-Left` -- Solver `ASolver` with participant `Generator-Right` -- Solver `BSolver` with participant `Propagator` - -### Project Structure - -Global files that are generated are: `precice-config.xml`, `README.md` and `clean.sh`. Additionally, for each participant, a folder with an `adapter-config.json` and a `run.sh` file are created. -The folder structure is as follows: - -``` -_generated/ - ├── README.md # This file - ├── clean.sh # Clean up script - ├──generator-left-asolver/ - │ ├── adapter-config.json - │ └── run.sh # Not yet implemented - ├──generator-right-asolver/ - │ ├── adapter-config.json - │ └── run.sh # Not yet implemented - ├──propagator-bsolver/ - │ ├── adapter-config.json - │ └── run.sh # Not yet implemented - └── precice-config.xml # Global precice-config.xml file -``` - - -- `precice-config.xml` is the global preCICE configuration file which defines the parameters and communication of participants -- `adapter-config.json` is a configuration file to couple the solvers with preCICE. -- `run.sh` is a script that is meant to execute a participant. Note, however, that since different solvers are executed differently, this file is not implemented yet. -- `clean.sh` removes any files in the current root directory that were not created by preCICE case-generate (and moves them to a backup folder). -Execution: - -```bash -./clean.sh [--force] [--dry-run] -``` - -- `--force` Deletes the files and any backup folders -- `--dry-run` Does not delete any files, but prints files that would be deleted - ---- - -## Prerequisites - -Before running the simulation, ensure you have the following installed: - -- The preCICE coupling library -- Solver `ASolver` and its dependencies -- Solver `ASolver` and its dependencies -- Solver `BSolver` and its dependencies - ---- - -## Running the Simulation - -### Quick Start - -```bash -# Navigate to the `_generated` folder -cd _generated/ - -# Implement the run script - -# Make the run script executable -chmod +x run.sh - -# Execute the simulation -./run.sh -``` - ---- - -For more information, see the [preCICE documentation](https://precice.org/docs.html) and [precice-case-generate](https://github.com/precice/case-generate). \ No newline at end of file diff --git a/new_examples/tutorial2/_generated/clean.sh b/new_examples/tutorial2/_generated/clean.sh deleted file mode 100644 index 2954b31..0000000 --- a/new_examples/tutorial2/_generated/clean.sh +++ /dev/null @@ -1,350 +0,0 @@ -#!/usr/bin/env bash - -# ------------------------------------------------------------------- -# Script Name: clean.sh -# Description: Recursively deletes/moves files/dirs except: -# - Global preserved filenames anywhere (run.sh, adapter-config.json...) -# - Specific root files (README.md, precice-config.xml) -# Usage: ./clean.sh [--dry-run] [--force] -# --dry-run : show what would happen, don't remove/move -# --force : permanently delete unpreserved items AND remove existing backups -# ------------------------------------------------------------------- - -# Strict mode: -# -e: exit on error -# -u: exit on undefined variable -# -o pipefail: exit if any command in a pipe fails -set -euo pipefail - -# --- CONFIGURATION --- -ROOT_DIR="$(pwd)" -LOG_FILE="cleanup.log" -BACKUP_DIR="$ROOT_DIR/backup_$(date '+%Y%m%d_%H%M%S')" - -# 1. GLOBAL PRESERVES: filenames to keep anywhere in the tree -GLOBAL_PRESERVE_NAMES=( - "run.sh" - "adapter-config.json" -) - -# 2. ROOT PRESERVES: filenames to keep only if in ROOT_DIR -ROOT_PRESERVE_PATHS=( - "clean.sh" - "README.md" - "precice-config.xml" - "$LOG_FILE" # always keep the log (will be overwritten) -) - -# --- DEFAULTS --- -DRY_RUN=0 # No dry-run by default -FORCE=0 # No permanent removal of files by default -MOVED_COUNT=0 # Counter to track if we actually backed anything up -DELETED_COUNT=0 # Counter to track if we actually deleted anything - -# --- HELPERS --- - -log() { - # We use tee -a (append) here so we don't overwrite previous lines *of this run*. - # The file is cleared once at the start of the MAIN block. - echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE" -} - -# Is filename (basename) a global preserved name? -is_global_preserved() { - local filename="$1" - for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do - if [[ "$filename" == "$name" ]]; then - return 0 - fi - done - return 1 -} - -# Is a relative path preserved at root? -is_root_preserved() { - local relpath="$1" - for p in "${ROOT_PRESERVE_PATHS[@]}"; do - if [[ "$relpath" == "$p" ]]; then - return 0 - fi - done - return 1 -} - -# Find out whether directory contains any preserved file *anywhere* under it. -# Implementation Note: Uses `head -n 1` instead of `-quit` for maximum compatibility -# across all Linux distros (including Alpine/BusyBox) and BSD/MacOS. -dir_contains_preserved_content() { - local dir="$1" - local name - local -a find_args=() - - # Build find arguments: ( -name A -o -name B ... ) - for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do - if [ ${#find_args[@]} -eq 0 ]; then - find_args+=( -name "$name" ) - else - find_args+=( -o -name "$name" ) - fi - done - - # Check if find returns any match. - # piping to head -n 1 causes find to receive SIGPIPE and stop early if a match is found. - if [ -n "$(find "$dir" \( "${find_args[@]}" \) -print 2>/dev/null | head -n 1)" ]; then - return 0 - fi - return 1 -} - -# Ensure backup destination exists and safely move source there preserving relative path. -# Prevents collisions by making unique names if needed. -# Args: -# $1 = absolute src path -# $2 = rel path relative to ROOT_DIR (used to recreate path inside backup) -safe_move_to_backup() { - local src="$1" - local rel="$2" - - # Destination path = $BACKUP_DIR/$rel - local dest="$BACKUP_DIR/$rel" - local dest_dir - dest_dir="$(dirname "$dest")" - - # Normalize: if dirname is ".", use $BACKUP_DIR as target dir - if [[ "$dest_dir" == "$BACKUP_DIR/." ]] || [[ "$dest_dir" == "." ]]; then - dest_dir="$BACKUP_DIR" - fi - - if [ "$DRY_RUN" -eq 0 ]; then - mkdir -p "$dest_dir" - fi - - # If dest exists, append numeric suffix before extension to avoid overwrite - if [ -e "$dest" ]; then - local base name ext candidate n - base="$(basename "$dest")" - name="${base%.*}" - ext="${base##*.}" - n=1 - - # Check if file has an extension - if [[ "$ext" == "$base" ]]; then - # No extension - candidate="$dest_dir/${name}_$n" - while [ -e "$candidate" ]; do - n=$((n+1)) - candidate="$dest_dir/${name}_$n" - done - else - # Has extension - candidate="$dest_dir/${name}_$n.$ext" - while [ -e "$candidate" ]; do - n=$((n+1)) - candidate="$dest_dir/${name}_$n.$ext" - done - fi - dest="$candidate" - fi - - if [ "$DRY_RUN" -eq 1 ]; then - log "Would be deleted: ${rel}" - else - mv -- "$src" "$dest" - # Increment the counter because we successfully moved a file - MOVED_COUNT=$((MOVED_COUNT + 1)) - log "Deleted: ${rel}" - fi -} - -# Safe remove (used by --force). Respects --dry-run. -safe_remove() { - local src="$1" - local rel="$2" - if [ "$DRY_RUN" -eq 1 ]; then - log "Would permanently remove: $rel" - else - rm -rf -- "$src" - DELETED_COUNT=$((DELETED_COUNT + 1)) - log "Permanently removed: $rel" - fi -} - -# Remove existing backup_* directories permanently (used when FORCE=1). -remove_existing_backups_permanently() { - shopt -s nullglob - local found=0 - for old in "$ROOT_DIR"/backup_*; do - if [ -d "$old" ]; then - found=1 - if [ "$DRY_RUN" -eq 1 ]; then - log "Would permanently remove backup: $(basename "$old")" - else - rm -rf -- "$old" - DELETED_COUNT=$((DELETED_COUNT + 1)) - log "Permanently removed backup: $(basename "$old")" - fi - fi - done - shopt -u nullglob - if [ "$found" -eq 0 ]; then - log "No existing backup directories to remove." - fi -} - -# Perform action for a single path (file or directory) that is NOT preserved. -# Moves to backup preserving tree, or removes permanently when FORCE=1. -perform_action() { - local item="$1" - local rel_path="${item#$ROOT_DIR/}" - - if [ "$FORCE" -eq 1 ]; then - safe_remove "$item" "$rel_path" - else - safe_move_to_backup "$item" "$rel_path" - fi -} - -# --- RECURSIVE CLEANUP --- -recursive_cleanup() { - local current_dir="$1" - - # dotglob: includes hidden files (starting with .) - # nullglob: makes the loop not run if no files match (avoids literal string issues) - shopt -s dotglob nullglob - - local item rel_path base - - for item in "$current_dir"/*; do - # Sanity check: ensure file exists (handles rare race conditions or broken links) - [ ! -e "$item" ] && [ ! -L "$item" ] && continue - - rel_path="${item#$ROOT_DIR/}" - base="$(basename "$item")" - - # Skip . and .. (though glob usually excludes them, safety first) - if [[ "$base" == "." || "$base" == ".." ]]; then - continue - fi - - # --- FILE or SYMLINK --- - if [ -f "$item" ] || [ -L "$item" ]; then - # 1. Preserve by global name anywhere? - if is_global_preserved "$base"; then - log "Preserving: $rel_path" - continue - fi - - # 2. Preserve if at root and matches root-preserve list? - if [[ "$current_dir" == "$ROOT_DIR" ]] && is_root_preserved "$base"; then - log "Preserving: $rel_path" - continue - fi - - # Otherwise: perform action - perform_action "$item" - continue - fi - - # --- DIRECTORY --- - if [ -d "$item" ]; then - # Check if dir contains any preserved content anywhere below - if dir_contains_preserved_content "$item"; then - recursive_cleanup "$item" - - # After recursion, if directory is empty, remove it (respecting dry-run) - if [ -z "$(ls -A "$item")" ]; then - if [ "$DRY_RUN" -eq 1 ]; then - log "Would remove empty directory: $rel_path" - else - rmdir -- "$item" - DELETED_COUNT=$((DELETED_COUNT + 1)) - log "Removed empty directory: $rel_path" - fi - fi - else - # Directory contains no preserved files anywhere deep: remove/move entire directory - perform_action "$item" - fi - continue - fi - done - - # Restore defaults for shopt to avoid side effects if function is reused - shopt -u dotglob nullglob -} - -# --- MAIN --- - -# Parse flags -while [[ $# -gt 0 ]]; do - case $1 in - --dry-run) DRY_RUN=1 ;; - --force) FORCE=1 ;; - *) echo "Unknown parameter: $1"; exit 1 ;; - esac - shift -done - -# Initialize/Clear the log file for this new run -: > "$LOG_FILE" - -# Confirmation prompt (skip when dry-run) -if [ "$DRY_RUN" -eq 1 ]; then - log "Dry run enabled, nothing will be removed." -else - read -p "This will delete all files except preserved ones. Proceed? [y/n]: " confirm - case "$confirm" in - [yY][eE][sS]|[yY]) ;; - *) log "Cleanup aborted."; exit 0 ;; - esac -fi - -if [ "$FORCE" -eq 1 ] && [ "$DRY_RUN" -eq 1 ]; then - log "Ignoring --force." - FORCE=0 -fi - -log "Starting cleanup..." - - -if [ "$FORCE" -eq 1 ]; then - remove_existing_backups_permanently -fi - -recursive_cleanup "$ROOT_DIR" - -if [ "$DELETED_COUNT" -eq 1 ]; then - FILE_STR="file" - DIRECTORY_STR="directory" -else - FILE_STR="files" - DIRECTORY_STR="directories" -fi - -OUTPUT_STR="" - -# Output if FORCE -if [ "$FORCE" -eq 1 ]; then - OUTPUT_STR="Deleted $DELETED_COUNT $FILE_STR or $DIRECTORY_STR. " -fi - -if [ "$DRY_RUN" -eq 1 ]; then - OUTPUT_STR="Dry-run completed successfully." -else - OUTPUT_STR="${OUTPUT_STR}Cleanup completed successfully." -fi - -# Only append the backup message if we actually moved files (MOVED_COUNT > 0) -if [ "$MOVED_COUNT" -gt 0 ]; then - # Correct wording - if [ "$MOVED_COUNT" -eq 1 ]; then - FILE_STR="file" - DIRECTORY_STR="directory" - else - FILE_STR="files" - DIRECTORY_STR="directories" - fi - OUTPUT_STR="$OUTPUT_STR Backed up $MOVED_COUNT deleted $FILE_STR or $DIRECTORY_STR in '$BACKUP_DIR'." -fi - -log "$OUTPUT_STR" \ No newline at end of file diff --git a/new_examples/tutorial2/_generated/generator-left-asolver/adapter-config.json b/new_examples/tutorial2/_generated/generator-left-asolver/adapter-config.json deleted file mode 100644 index 097022e..0000000 --- a/new_examples/tutorial2/_generated/generator-left-asolver/adapter-config.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "participant_name": "Generator-Left", - "precice_config_file_name": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "Generator-Left-Mesh", - "patches": [ - "interface" - ], - "write_data_names": [ - "Color" - ] - } - ] -} \ No newline at end of file diff --git a/new_examples/tutorial2/_generated/generator-left-asolver/run.sh b/new_examples/tutorial2/_generated/generator-left-asolver/run.sh deleted file mode 100644 index 5fdeba8..0000000 --- a/new_examples/tutorial2/_generated/generator-left-asolver/run.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -# -# run.sh script -# -# This is a template. You need to implement it yourself. -# -# If you are trying to launch a python script, you need to add: -# -# python path/to/file.py -# -# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh -# -# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment -# or installing dependencies) have already been completed. -# Therefore, you may only need to add: -# -# python path/to/file.py -# - -set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/tutorial2/_generated/generator-right-asolver/adapter-config.json b/new_examples/tutorial2/_generated/generator-right-asolver/adapter-config.json deleted file mode 100644 index 0354ca9..0000000 --- a/new_examples/tutorial2/_generated/generator-right-asolver/adapter-config.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "participant_name": "Generator-Right", - "precice_config_file_name": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "Generator-Right-Mesh", - "patches": [ - "interface" - ], - "write_data_names": [ - "Color" - ] - } - ] -} \ No newline at end of file diff --git a/new_examples/tutorial2/_generated/generator-right-asolver/run.sh b/new_examples/tutorial2/_generated/generator-right-asolver/run.sh deleted file mode 100644 index 5fdeba8..0000000 --- a/new_examples/tutorial2/_generated/generator-right-asolver/run.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -# -# run.sh script -# -# This is a template. You need to implement it yourself. -# -# If you are trying to launch a python script, you need to add: -# -# python path/to/file.py -# -# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh -# -# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment -# or installing dependencies) have already been completed. -# Therefore, you may only need to add: -# -# python path/to/file.py -# - -set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/tutorial2/_generated/precice-config.xml b/new_examples/tutorial2/_generated/precice-config.xml deleted file mode 100644 index bebff6c..0000000 --- a/new_examples/tutorial2/_generated/precice-config.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/new_examples/tutorial2/_generated/propagator-bsolver/adapter-config.json b/new_examples/tutorial2/_generated/propagator-bsolver/adapter-config.json deleted file mode 100644 index 32f9b21..0000000 --- a/new_examples/tutorial2/_generated/propagator-bsolver/adapter-config.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "participant_name": "Propagator", - "precice_config_file_name": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "Propagator-Generator-Left-Mesh", - "patches": [ - "interface" - ], - "read_data_names": [ - "Color" - ] - }, - { - "mesh_name": "Propagator-Generator-Right-Mesh", - "patches": [ - "interface" - ], - "read_data_names": [ - "Color" - ] - } - ] -} \ No newline at end of file diff --git a/new_examples/tutorial2/_generated/propagator-bsolver/run.sh b/new_examples/tutorial2/_generated/propagator-bsolver/run.sh deleted file mode 100644 index 5fdeba8..0000000 --- a/new_examples/tutorial2/_generated/propagator-bsolver/run.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -# -# run.sh script -# -# This is a template. You need to implement it yourself. -# -# If you are trying to launch a python script, you need to add: -# -# python path/to/file.py -# -# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh -# -# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment -# or installing dependencies) have already been completed. -# Therefore, you may only need to add: -# -# python path/to/file.py -# - -set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/tutorial2/tutorial2.yaml b/new_examples/tutorial2/tutorial2.yaml deleted file mode 100644 index 76933df..0000000 --- a/new_examples/tutorial2/tutorial2.yaml +++ /dev/null @@ -1,25 +0,0 @@ -participants: - - name: Generator-Left - solver: ASolver - dimensionality: 2 - - name: Generator-Right - solver: ASolver - dimensionality: 2 - - name: Propagator - solver: BSolver - dimensionality: 2 -exchanges: - - from: Generator-Left - to: Propagator - from-patch: interface - to-patch: interface - data: Color - type: weak - data-type: scalar - - from: Generator-Right - to: Propagator - from-patch: interface - to-patch: interface - data: Color - type: weak - data-type: scalar \ No newline at end of file diff --git a/new_examples/tutorial3/_generated/README.md b/new_examples/tutorial3/_generated/README.md deleted file mode 100644 index 65463c3..0000000 --- a/new_examples/tutorial3/_generated/README.md +++ /dev/null @@ -1,78 +0,0 @@ -# Multiphysics Simulation Project - -> [!NOTE] This `README.md` file was auto-generated by preCICE case-generate. - - ---- - -## Project Overview - -This project uses **preCICE** for a multiphysics simulation involving: - -- Solver `OpenFOAM` with participant `Fluid` -- Solver `Nutils` with participant `Solid` - -### Project Structure - -Global files that are generated are: `precice-config.xml`, `README.md` and `clean.sh`. Additionally, for each participant, a folder with an `adapter-config.json` and a `run.sh` file are created. -The folder structure is as follows: - -``` -_generated/ - ├── README.md # This file - ├── clean.sh # Clean up script - ├──fluid-openfoam/ - │ ├── adapter-config.json - │ └── run.sh # Not yet implemented - ├──solid-nutils/ - │ ├── adapter-config.json - │ └── run.sh # Not yet implemented - └── precice-config.xml # Global precice-config.xml file -``` - - -- `precice-config.xml` is the global preCICE configuration file which defines the parameters and communication of participants -- `adapter-config.json` is a configuration file to couple the solvers with preCICE. -- `run.sh` is a script that is meant to execute a participant. Note, however, that since different solvers are executed differently, this file is not implemented yet. -- `clean.sh` removes any files in the current root directory that were not created by preCICE case-generate (and moves them to a backup folder). -Execution: - -```bash -./clean.sh [--force] [--dry-run] -``` - -- `--force` Deletes the files and any backup folders -- `--dry-run` Does not delete any files, but prints files that would be deleted - ---- - -## Prerequisites - -Before running the simulation, ensure you have the following installed: - -- The preCICE coupling library -- Solver `OpenFOAM` and its dependencies -- Solver `Nutils` and its dependencies - ---- - -## Running the Simulation - -### Quick Start - -```bash -# Navigate to the `_generated` folder -cd _generated/ - -# Implement the run script - -# Make the run script executable -chmod +x run.sh - -# Execute the simulation -./run.sh -``` - ---- - -For more information, see the [preCICE documentation](https://precice.org/docs.html) and [precice-case-generate](https://github.com/precice/case-generate). \ No newline at end of file diff --git a/new_examples/tutorial3/_generated/clean.sh b/new_examples/tutorial3/_generated/clean.sh deleted file mode 100644 index 2954b31..0000000 --- a/new_examples/tutorial3/_generated/clean.sh +++ /dev/null @@ -1,350 +0,0 @@ -#!/usr/bin/env bash - -# ------------------------------------------------------------------- -# Script Name: clean.sh -# Description: Recursively deletes/moves files/dirs except: -# - Global preserved filenames anywhere (run.sh, adapter-config.json...) -# - Specific root files (README.md, precice-config.xml) -# Usage: ./clean.sh [--dry-run] [--force] -# --dry-run : show what would happen, don't remove/move -# --force : permanently delete unpreserved items AND remove existing backups -# ------------------------------------------------------------------- - -# Strict mode: -# -e: exit on error -# -u: exit on undefined variable -# -o pipefail: exit if any command in a pipe fails -set -euo pipefail - -# --- CONFIGURATION --- -ROOT_DIR="$(pwd)" -LOG_FILE="cleanup.log" -BACKUP_DIR="$ROOT_DIR/backup_$(date '+%Y%m%d_%H%M%S')" - -# 1. GLOBAL PRESERVES: filenames to keep anywhere in the tree -GLOBAL_PRESERVE_NAMES=( - "run.sh" - "adapter-config.json" -) - -# 2. ROOT PRESERVES: filenames to keep only if in ROOT_DIR -ROOT_PRESERVE_PATHS=( - "clean.sh" - "README.md" - "precice-config.xml" - "$LOG_FILE" # always keep the log (will be overwritten) -) - -# --- DEFAULTS --- -DRY_RUN=0 # No dry-run by default -FORCE=0 # No permanent removal of files by default -MOVED_COUNT=0 # Counter to track if we actually backed anything up -DELETED_COUNT=0 # Counter to track if we actually deleted anything - -# --- HELPERS --- - -log() { - # We use tee -a (append) here so we don't overwrite previous lines *of this run*. - # The file is cleared once at the start of the MAIN block. - echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE" -} - -# Is filename (basename) a global preserved name? -is_global_preserved() { - local filename="$1" - for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do - if [[ "$filename" == "$name" ]]; then - return 0 - fi - done - return 1 -} - -# Is a relative path preserved at root? -is_root_preserved() { - local relpath="$1" - for p in "${ROOT_PRESERVE_PATHS[@]}"; do - if [[ "$relpath" == "$p" ]]; then - return 0 - fi - done - return 1 -} - -# Find out whether directory contains any preserved file *anywhere* under it. -# Implementation Note: Uses `head -n 1` instead of `-quit` for maximum compatibility -# across all Linux distros (including Alpine/BusyBox) and BSD/MacOS. -dir_contains_preserved_content() { - local dir="$1" - local name - local -a find_args=() - - # Build find arguments: ( -name A -o -name B ... ) - for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do - if [ ${#find_args[@]} -eq 0 ]; then - find_args+=( -name "$name" ) - else - find_args+=( -o -name "$name" ) - fi - done - - # Check if find returns any match. - # piping to head -n 1 causes find to receive SIGPIPE and stop early if a match is found. - if [ -n "$(find "$dir" \( "${find_args[@]}" \) -print 2>/dev/null | head -n 1)" ]; then - return 0 - fi - return 1 -} - -# Ensure backup destination exists and safely move source there preserving relative path. -# Prevents collisions by making unique names if needed. -# Args: -# $1 = absolute src path -# $2 = rel path relative to ROOT_DIR (used to recreate path inside backup) -safe_move_to_backup() { - local src="$1" - local rel="$2" - - # Destination path = $BACKUP_DIR/$rel - local dest="$BACKUP_DIR/$rel" - local dest_dir - dest_dir="$(dirname "$dest")" - - # Normalize: if dirname is ".", use $BACKUP_DIR as target dir - if [[ "$dest_dir" == "$BACKUP_DIR/." ]] || [[ "$dest_dir" == "." ]]; then - dest_dir="$BACKUP_DIR" - fi - - if [ "$DRY_RUN" -eq 0 ]; then - mkdir -p "$dest_dir" - fi - - # If dest exists, append numeric suffix before extension to avoid overwrite - if [ -e "$dest" ]; then - local base name ext candidate n - base="$(basename "$dest")" - name="${base%.*}" - ext="${base##*.}" - n=1 - - # Check if file has an extension - if [[ "$ext" == "$base" ]]; then - # No extension - candidate="$dest_dir/${name}_$n" - while [ -e "$candidate" ]; do - n=$((n+1)) - candidate="$dest_dir/${name}_$n" - done - else - # Has extension - candidate="$dest_dir/${name}_$n.$ext" - while [ -e "$candidate" ]; do - n=$((n+1)) - candidate="$dest_dir/${name}_$n.$ext" - done - fi - dest="$candidate" - fi - - if [ "$DRY_RUN" -eq 1 ]; then - log "Would be deleted: ${rel}" - else - mv -- "$src" "$dest" - # Increment the counter because we successfully moved a file - MOVED_COUNT=$((MOVED_COUNT + 1)) - log "Deleted: ${rel}" - fi -} - -# Safe remove (used by --force). Respects --dry-run. -safe_remove() { - local src="$1" - local rel="$2" - if [ "$DRY_RUN" -eq 1 ]; then - log "Would permanently remove: $rel" - else - rm -rf -- "$src" - DELETED_COUNT=$((DELETED_COUNT + 1)) - log "Permanently removed: $rel" - fi -} - -# Remove existing backup_* directories permanently (used when FORCE=1). -remove_existing_backups_permanently() { - shopt -s nullglob - local found=0 - for old in "$ROOT_DIR"/backup_*; do - if [ -d "$old" ]; then - found=1 - if [ "$DRY_RUN" -eq 1 ]; then - log "Would permanently remove backup: $(basename "$old")" - else - rm -rf -- "$old" - DELETED_COUNT=$((DELETED_COUNT + 1)) - log "Permanently removed backup: $(basename "$old")" - fi - fi - done - shopt -u nullglob - if [ "$found" -eq 0 ]; then - log "No existing backup directories to remove." - fi -} - -# Perform action for a single path (file or directory) that is NOT preserved. -# Moves to backup preserving tree, or removes permanently when FORCE=1. -perform_action() { - local item="$1" - local rel_path="${item#$ROOT_DIR/}" - - if [ "$FORCE" -eq 1 ]; then - safe_remove "$item" "$rel_path" - else - safe_move_to_backup "$item" "$rel_path" - fi -} - -# --- RECURSIVE CLEANUP --- -recursive_cleanup() { - local current_dir="$1" - - # dotglob: includes hidden files (starting with .) - # nullglob: makes the loop not run if no files match (avoids literal string issues) - shopt -s dotglob nullglob - - local item rel_path base - - for item in "$current_dir"/*; do - # Sanity check: ensure file exists (handles rare race conditions or broken links) - [ ! -e "$item" ] && [ ! -L "$item" ] && continue - - rel_path="${item#$ROOT_DIR/}" - base="$(basename "$item")" - - # Skip . and .. (though glob usually excludes them, safety first) - if [[ "$base" == "." || "$base" == ".." ]]; then - continue - fi - - # --- FILE or SYMLINK --- - if [ -f "$item" ] || [ -L "$item" ]; then - # 1. Preserve by global name anywhere? - if is_global_preserved "$base"; then - log "Preserving: $rel_path" - continue - fi - - # 2. Preserve if at root and matches root-preserve list? - if [[ "$current_dir" == "$ROOT_DIR" ]] && is_root_preserved "$base"; then - log "Preserving: $rel_path" - continue - fi - - # Otherwise: perform action - perform_action "$item" - continue - fi - - # --- DIRECTORY --- - if [ -d "$item" ]; then - # Check if dir contains any preserved content anywhere below - if dir_contains_preserved_content "$item"; then - recursive_cleanup "$item" - - # After recursion, if directory is empty, remove it (respecting dry-run) - if [ -z "$(ls -A "$item")" ]; then - if [ "$DRY_RUN" -eq 1 ]; then - log "Would remove empty directory: $rel_path" - else - rmdir -- "$item" - DELETED_COUNT=$((DELETED_COUNT + 1)) - log "Removed empty directory: $rel_path" - fi - fi - else - # Directory contains no preserved files anywhere deep: remove/move entire directory - perform_action "$item" - fi - continue - fi - done - - # Restore defaults for shopt to avoid side effects if function is reused - shopt -u dotglob nullglob -} - -# --- MAIN --- - -# Parse flags -while [[ $# -gt 0 ]]; do - case $1 in - --dry-run) DRY_RUN=1 ;; - --force) FORCE=1 ;; - *) echo "Unknown parameter: $1"; exit 1 ;; - esac - shift -done - -# Initialize/Clear the log file for this new run -: > "$LOG_FILE" - -# Confirmation prompt (skip when dry-run) -if [ "$DRY_RUN" -eq 1 ]; then - log "Dry run enabled, nothing will be removed." -else - read -p "This will delete all files except preserved ones. Proceed? [y/n]: " confirm - case "$confirm" in - [yY][eE][sS]|[yY]) ;; - *) log "Cleanup aborted."; exit 0 ;; - esac -fi - -if [ "$FORCE" -eq 1 ] && [ "$DRY_RUN" -eq 1 ]; then - log "Ignoring --force." - FORCE=0 -fi - -log "Starting cleanup..." - - -if [ "$FORCE" -eq 1 ]; then - remove_existing_backups_permanently -fi - -recursive_cleanup "$ROOT_DIR" - -if [ "$DELETED_COUNT" -eq 1 ]; then - FILE_STR="file" - DIRECTORY_STR="directory" -else - FILE_STR="files" - DIRECTORY_STR="directories" -fi - -OUTPUT_STR="" - -# Output if FORCE -if [ "$FORCE" -eq 1 ]; then - OUTPUT_STR="Deleted $DELETED_COUNT $FILE_STR or $DIRECTORY_STR. " -fi - -if [ "$DRY_RUN" -eq 1 ]; then - OUTPUT_STR="Dry-run completed successfully." -else - OUTPUT_STR="${OUTPUT_STR}Cleanup completed successfully." -fi - -# Only append the backup message if we actually moved files (MOVED_COUNT > 0) -if [ "$MOVED_COUNT" -gt 0 ]; then - # Correct wording - if [ "$MOVED_COUNT" -eq 1 ]; then - FILE_STR="file" - DIRECTORY_STR="directory" - else - FILE_STR="files" - DIRECTORY_STR="directories" - fi - OUTPUT_STR="$OUTPUT_STR Backed up $MOVED_COUNT deleted $FILE_STR or $DIRECTORY_STR in '$BACKUP_DIR'." -fi - -log "$OUTPUT_STR" \ No newline at end of file diff --git a/new_examples/tutorial3/_generated/fluid-openfoam/adapter-config.json b/new_examples/tutorial3/_generated/fluid-openfoam/adapter-config.json deleted file mode 100644 index 434a2cc..0000000 --- a/new_examples/tutorial3/_generated/fluid-openfoam/adapter-config.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "participant_name": "Fluid", - "precice_config_file_name": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "Fluid-Mesh", - "patches": [ - "interface" - ], - "read_data_names": [ - "Heat-Flux" - ], - "write_data_names": [ - "Temperature" - ] - } - ] -} \ No newline at end of file diff --git a/new_examples/tutorial3/_generated/fluid-openfoam/run.sh b/new_examples/tutorial3/_generated/fluid-openfoam/run.sh deleted file mode 100644 index 5fdeba8..0000000 --- a/new_examples/tutorial3/_generated/fluid-openfoam/run.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -# -# run.sh script -# -# This is a template. You need to implement it yourself. -# -# If you are trying to launch a python script, you need to add: -# -# python path/to/file.py -# -# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh -# -# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment -# or installing dependencies) have already been completed. -# Therefore, you may only need to add: -# -# python path/to/file.py -# - -set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/tutorial3/_generated/precice-config.xml b/new_examples/tutorial3/_generated/precice-config.xml deleted file mode 100644 index bc26bcb..0000000 --- a/new_examples/tutorial3/_generated/precice-config.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/new_examples/tutorial3/_generated/solid-nutils/adapter-config.json b/new_examples/tutorial3/_generated/solid-nutils/adapter-config.json deleted file mode 100644 index 2bc5e24..0000000 --- a/new_examples/tutorial3/_generated/solid-nutils/adapter-config.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "participant_name": "Solid", - "precice_config_file_name": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "Solid-Mesh", - "patches": [ - "interface" - ], - "read_data_names": [ - "Temperature" - ], - "write_data_names": [ - "Heat-Flux" - ] - } - ] -} \ No newline at end of file diff --git a/new_examples/tutorial3/_generated/solid-nutils/run.sh b/new_examples/tutorial3/_generated/solid-nutils/run.sh deleted file mode 100644 index 5fdeba8..0000000 --- a/new_examples/tutorial3/_generated/solid-nutils/run.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -# -# run.sh script -# -# This is a template. You need to implement it yourself. -# -# If you are trying to launch a python script, you need to add: -# -# python path/to/file.py -# -# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh -# -# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment -# or installing dependencies) have already been completed. -# Therefore, you may only need to add: -# -# python path/to/file.py -# - -set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/tutorial3/tutorial3.yaml b/new_examples/tutorial3/tutorial3.yaml deleted file mode 100644 index 6fe97ae..0000000 --- a/new_examples/tutorial3/tutorial3.yaml +++ /dev/null @@ -1,22 +0,0 @@ -participants: - - name: Fluid - solver: OpenFOAM - dimensionality: 2 - - name: Solid - solver: Nutils - dimensionality: 2 -exchanges: - - from: Fluid - to: Solid - from-patch: interface - to-patch: interface - data: Temperature - type: strong - data-type: scalar - - from: Solid - to: Fluid - from-patch: interface - to-patch: interface - data: Heat-Flux - type: strong - data-type: scalar \ No newline at end of file diff --git a/new_examples/tutorial4/_generated/README.md b/new_examples/tutorial4/_generated/README.md deleted file mode 100644 index 9200ef5..0000000 --- a/new_examples/tutorial4/_generated/README.md +++ /dev/null @@ -1,78 +0,0 @@ -# Multiphysics Simulation Project - -> [!NOTE] This `README.md` file was auto-generated by preCICE case-generate. - - ---- - -## Project Overview - -This project uses **preCICE** for a multiphysics simulation involving: - -- Solver `ASolver` with participant `A` -- Solver `BSolver` with participant `B` - -### Project Structure - -Global files that are generated are: `precice-config.xml`, `README.md` and `clean.sh`. Additionally, for each participant, a folder with an `adapter-config.json` and a `run.sh` file are created. -The folder structure is as follows: - -``` -_generated/ - ├── README.md # This file - ├── clean.sh # Clean up script - ├──a-asolver/ - │ ├── adapter-config.json - │ └── run.sh # Not yet implemented - ├──b-bsolver/ - │ ├── adapter-config.json - │ └── run.sh # Not yet implemented - └── precice-config.xml # Global precice-config.xml file -``` - - -- `precice-config.xml` is the global preCICE configuration file which defines the parameters and communication of participants -- `adapter-config.json` is a configuration file to couple the solvers with preCICE. -- `run.sh` is a script that is meant to execute a participant. Note, however, that since different solvers are executed differently, this file is not implemented yet. -- `clean.sh` removes any files in the current root directory that were not created by preCICE case-generate (and moves them to a backup folder). -Execution: - -```bash -./clean.sh [--force] [--dry-run] -``` - -- `--force` Deletes the files and any backup folders -- `--dry-run` Does not delete any files, but prints files that would be deleted - ---- - -## Prerequisites - -Before running the simulation, ensure you have the following installed: - -- The preCICE coupling library -- Solver `ASolver` and its dependencies -- Solver `BSolver` and its dependencies - ---- - -## Running the Simulation - -### Quick Start - -```bash -# Navigate to the `_generated` folder -cd _generated/ - -# Implement the run script - -# Make the run script executable -chmod +x run.sh - -# Execute the simulation -./run.sh -``` - ---- - -For more information, see the [preCICE documentation](https://precice.org/docs.html) and [precice-case-generate](https://github.com/precice/case-generate). \ No newline at end of file diff --git a/new_examples/tutorial4/_generated/a-asolver/adapter-config.json b/new_examples/tutorial4/_generated/a-asolver/adapter-config.json deleted file mode 100644 index 99af464..0000000 --- a/new_examples/tutorial4/_generated/a-asolver/adapter-config.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "participant_name": "A", - "precice_config_file_name": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "A-Mesh", - "patches": [ - "interface" - ], - "write_data_names": [ - "Data" - ] - } - ] -} \ No newline at end of file diff --git a/new_examples/tutorial4/_generated/a-asolver/run.sh b/new_examples/tutorial4/_generated/a-asolver/run.sh deleted file mode 100644 index 5fdeba8..0000000 --- a/new_examples/tutorial4/_generated/a-asolver/run.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -# -# run.sh script -# -# This is a template. You need to implement it yourself. -# -# If you are trying to launch a python script, you need to add: -# -# python path/to/file.py -# -# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh -# -# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment -# or installing dependencies) have already been completed. -# Therefore, you may only need to add: -# -# python path/to/file.py -# - -set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/tutorial4/_generated/b-bsolver/adapter-config.json b/new_examples/tutorial4/_generated/b-bsolver/adapter-config.json deleted file mode 100644 index 3306043..0000000 --- a/new_examples/tutorial4/_generated/b-bsolver/adapter-config.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "participant_name": "B", - "precice_config_file_name": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "B-Mesh", - "patches": [ - "interface" - ], - "read_data_names": [ - "Data" - ] - } - ] -} \ No newline at end of file diff --git a/new_examples/tutorial4/_generated/b-bsolver/run.sh b/new_examples/tutorial4/_generated/b-bsolver/run.sh deleted file mode 100644 index 5fdeba8..0000000 --- a/new_examples/tutorial4/_generated/b-bsolver/run.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -# -# run.sh script -# -# This is a template. You need to implement it yourself. -# -# If you are trying to launch a python script, you need to add: -# -# python path/to/file.py -# -# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh -# -# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment -# or installing dependencies) have already been completed. -# Therefore, you may only need to add: -# -# python path/to/file.py -# - -set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/new_examples/tutorial4/_generated/clean.sh b/new_examples/tutorial4/_generated/clean.sh deleted file mode 100644 index 2954b31..0000000 --- a/new_examples/tutorial4/_generated/clean.sh +++ /dev/null @@ -1,350 +0,0 @@ -#!/usr/bin/env bash - -# ------------------------------------------------------------------- -# Script Name: clean.sh -# Description: Recursively deletes/moves files/dirs except: -# - Global preserved filenames anywhere (run.sh, adapter-config.json...) -# - Specific root files (README.md, precice-config.xml) -# Usage: ./clean.sh [--dry-run] [--force] -# --dry-run : show what would happen, don't remove/move -# --force : permanently delete unpreserved items AND remove existing backups -# ------------------------------------------------------------------- - -# Strict mode: -# -e: exit on error -# -u: exit on undefined variable -# -o pipefail: exit if any command in a pipe fails -set -euo pipefail - -# --- CONFIGURATION --- -ROOT_DIR="$(pwd)" -LOG_FILE="cleanup.log" -BACKUP_DIR="$ROOT_DIR/backup_$(date '+%Y%m%d_%H%M%S')" - -# 1. GLOBAL PRESERVES: filenames to keep anywhere in the tree -GLOBAL_PRESERVE_NAMES=( - "run.sh" - "adapter-config.json" -) - -# 2. ROOT PRESERVES: filenames to keep only if in ROOT_DIR -ROOT_PRESERVE_PATHS=( - "clean.sh" - "README.md" - "precice-config.xml" - "$LOG_FILE" # always keep the log (will be overwritten) -) - -# --- DEFAULTS --- -DRY_RUN=0 # No dry-run by default -FORCE=0 # No permanent removal of files by default -MOVED_COUNT=0 # Counter to track if we actually backed anything up -DELETED_COUNT=0 # Counter to track if we actually deleted anything - -# --- HELPERS --- - -log() { - # We use tee -a (append) here so we don't overwrite previous lines *of this run*. - # The file is cleared once at the start of the MAIN block. - echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE" -} - -# Is filename (basename) a global preserved name? -is_global_preserved() { - local filename="$1" - for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do - if [[ "$filename" == "$name" ]]; then - return 0 - fi - done - return 1 -} - -# Is a relative path preserved at root? -is_root_preserved() { - local relpath="$1" - for p in "${ROOT_PRESERVE_PATHS[@]}"; do - if [[ "$relpath" == "$p" ]]; then - return 0 - fi - done - return 1 -} - -# Find out whether directory contains any preserved file *anywhere* under it. -# Implementation Note: Uses `head -n 1` instead of `-quit` for maximum compatibility -# across all Linux distros (including Alpine/BusyBox) and BSD/MacOS. -dir_contains_preserved_content() { - local dir="$1" - local name - local -a find_args=() - - # Build find arguments: ( -name A -o -name B ... ) - for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do - if [ ${#find_args[@]} -eq 0 ]; then - find_args+=( -name "$name" ) - else - find_args+=( -o -name "$name" ) - fi - done - - # Check if find returns any match. - # piping to head -n 1 causes find to receive SIGPIPE and stop early if a match is found. - if [ -n "$(find "$dir" \( "${find_args[@]}" \) -print 2>/dev/null | head -n 1)" ]; then - return 0 - fi - return 1 -} - -# Ensure backup destination exists and safely move source there preserving relative path. -# Prevents collisions by making unique names if needed. -# Args: -# $1 = absolute src path -# $2 = rel path relative to ROOT_DIR (used to recreate path inside backup) -safe_move_to_backup() { - local src="$1" - local rel="$2" - - # Destination path = $BACKUP_DIR/$rel - local dest="$BACKUP_DIR/$rel" - local dest_dir - dest_dir="$(dirname "$dest")" - - # Normalize: if dirname is ".", use $BACKUP_DIR as target dir - if [[ "$dest_dir" == "$BACKUP_DIR/." ]] || [[ "$dest_dir" == "." ]]; then - dest_dir="$BACKUP_DIR" - fi - - if [ "$DRY_RUN" -eq 0 ]; then - mkdir -p "$dest_dir" - fi - - # If dest exists, append numeric suffix before extension to avoid overwrite - if [ -e "$dest" ]; then - local base name ext candidate n - base="$(basename "$dest")" - name="${base%.*}" - ext="${base##*.}" - n=1 - - # Check if file has an extension - if [[ "$ext" == "$base" ]]; then - # No extension - candidate="$dest_dir/${name}_$n" - while [ -e "$candidate" ]; do - n=$((n+1)) - candidate="$dest_dir/${name}_$n" - done - else - # Has extension - candidate="$dest_dir/${name}_$n.$ext" - while [ -e "$candidate" ]; do - n=$((n+1)) - candidate="$dest_dir/${name}_$n.$ext" - done - fi - dest="$candidate" - fi - - if [ "$DRY_RUN" -eq 1 ]; then - log "Would be deleted: ${rel}" - else - mv -- "$src" "$dest" - # Increment the counter because we successfully moved a file - MOVED_COUNT=$((MOVED_COUNT + 1)) - log "Deleted: ${rel}" - fi -} - -# Safe remove (used by --force). Respects --dry-run. -safe_remove() { - local src="$1" - local rel="$2" - if [ "$DRY_RUN" -eq 1 ]; then - log "Would permanently remove: $rel" - else - rm -rf -- "$src" - DELETED_COUNT=$((DELETED_COUNT + 1)) - log "Permanently removed: $rel" - fi -} - -# Remove existing backup_* directories permanently (used when FORCE=1). -remove_existing_backups_permanently() { - shopt -s nullglob - local found=0 - for old in "$ROOT_DIR"/backup_*; do - if [ -d "$old" ]; then - found=1 - if [ "$DRY_RUN" -eq 1 ]; then - log "Would permanently remove backup: $(basename "$old")" - else - rm -rf -- "$old" - DELETED_COUNT=$((DELETED_COUNT + 1)) - log "Permanently removed backup: $(basename "$old")" - fi - fi - done - shopt -u nullglob - if [ "$found" -eq 0 ]; then - log "No existing backup directories to remove." - fi -} - -# Perform action for a single path (file or directory) that is NOT preserved. -# Moves to backup preserving tree, or removes permanently when FORCE=1. -perform_action() { - local item="$1" - local rel_path="${item#$ROOT_DIR/}" - - if [ "$FORCE" -eq 1 ]; then - safe_remove "$item" "$rel_path" - else - safe_move_to_backup "$item" "$rel_path" - fi -} - -# --- RECURSIVE CLEANUP --- -recursive_cleanup() { - local current_dir="$1" - - # dotglob: includes hidden files (starting with .) - # nullglob: makes the loop not run if no files match (avoids literal string issues) - shopt -s dotglob nullglob - - local item rel_path base - - for item in "$current_dir"/*; do - # Sanity check: ensure file exists (handles rare race conditions or broken links) - [ ! -e "$item" ] && [ ! -L "$item" ] && continue - - rel_path="${item#$ROOT_DIR/}" - base="$(basename "$item")" - - # Skip . and .. (though glob usually excludes them, safety first) - if [[ "$base" == "." || "$base" == ".." ]]; then - continue - fi - - # --- FILE or SYMLINK --- - if [ -f "$item" ] || [ -L "$item" ]; then - # 1. Preserve by global name anywhere? - if is_global_preserved "$base"; then - log "Preserving: $rel_path" - continue - fi - - # 2. Preserve if at root and matches root-preserve list? - if [[ "$current_dir" == "$ROOT_DIR" ]] && is_root_preserved "$base"; then - log "Preserving: $rel_path" - continue - fi - - # Otherwise: perform action - perform_action "$item" - continue - fi - - # --- DIRECTORY --- - if [ -d "$item" ]; then - # Check if dir contains any preserved content anywhere below - if dir_contains_preserved_content "$item"; then - recursive_cleanup "$item" - - # After recursion, if directory is empty, remove it (respecting dry-run) - if [ -z "$(ls -A "$item")" ]; then - if [ "$DRY_RUN" -eq 1 ]; then - log "Would remove empty directory: $rel_path" - else - rmdir -- "$item" - DELETED_COUNT=$((DELETED_COUNT + 1)) - log "Removed empty directory: $rel_path" - fi - fi - else - # Directory contains no preserved files anywhere deep: remove/move entire directory - perform_action "$item" - fi - continue - fi - done - - # Restore defaults for shopt to avoid side effects if function is reused - shopt -u dotglob nullglob -} - -# --- MAIN --- - -# Parse flags -while [[ $# -gt 0 ]]; do - case $1 in - --dry-run) DRY_RUN=1 ;; - --force) FORCE=1 ;; - *) echo "Unknown parameter: $1"; exit 1 ;; - esac - shift -done - -# Initialize/Clear the log file for this new run -: > "$LOG_FILE" - -# Confirmation prompt (skip when dry-run) -if [ "$DRY_RUN" -eq 1 ]; then - log "Dry run enabled, nothing will be removed." -else - read -p "This will delete all files except preserved ones. Proceed? [y/n]: " confirm - case "$confirm" in - [yY][eE][sS]|[yY]) ;; - *) log "Cleanup aborted."; exit 0 ;; - esac -fi - -if [ "$FORCE" -eq 1 ] && [ "$DRY_RUN" -eq 1 ]; then - log "Ignoring --force." - FORCE=0 -fi - -log "Starting cleanup..." - - -if [ "$FORCE" -eq 1 ]; then - remove_existing_backups_permanently -fi - -recursive_cleanup "$ROOT_DIR" - -if [ "$DELETED_COUNT" -eq 1 ]; then - FILE_STR="file" - DIRECTORY_STR="directory" -else - FILE_STR="files" - DIRECTORY_STR="directories" -fi - -OUTPUT_STR="" - -# Output if FORCE -if [ "$FORCE" -eq 1 ]; then - OUTPUT_STR="Deleted $DELETED_COUNT $FILE_STR or $DIRECTORY_STR. " -fi - -if [ "$DRY_RUN" -eq 1 ]; then - OUTPUT_STR="Dry-run completed successfully." -else - OUTPUT_STR="${OUTPUT_STR}Cleanup completed successfully." -fi - -# Only append the backup message if we actually moved files (MOVED_COUNT > 0) -if [ "$MOVED_COUNT" -gt 0 ]; then - # Correct wording - if [ "$MOVED_COUNT" -eq 1 ]; then - FILE_STR="file" - DIRECTORY_STR="directory" - else - FILE_STR="files" - DIRECTORY_STR="directories" - fi - OUTPUT_STR="$OUTPUT_STR Backed up $MOVED_COUNT deleted $FILE_STR or $DIRECTORY_STR in '$BACKUP_DIR'." -fi - -log "$OUTPUT_STR" \ No newline at end of file diff --git a/new_examples/tutorial4/_generated/precice-config.xml b/new_examples/tutorial4/_generated/precice-config.xml deleted file mode 100644 index 66eefac..0000000 --- a/new_examples/tutorial4/_generated/precice-config.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/new_examples/tutorial4/tutorial4.yaml b/new_examples/tutorial4/tutorial4.yaml deleted file mode 100644 index 52d0de4..0000000 --- a/new_examples/tutorial4/tutorial4.yaml +++ /dev/null @@ -1,15 +0,0 @@ -participants: - - name: A - solver: ASolver - dimensionality: 3 - - name: B - solver: BSolver - dimensionality: 3 -exchanges: - - from: A - to: B - data: Data - type: weak - data-type: scalar - from-patch: interface - to-patch: interface \ No newline at end of file From d9abe013d966b820b7f725242134098e0f84617a Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 26 Jan 2026 11:09:23 +0100 Subject: [PATCH 073/131] Removed old examples --- examples/1/topology.yaml | 20 ------------ examples/2/topology.yaml | 21 ------------- examples/5/topology.yaml | 41 ------------------------- examples/expert/5/topology.yaml | 54 --------------------------------- 4 files changed, 136 deletions(-) delete mode 100644 examples/1/topology.yaml delete mode 100644 examples/2/topology.yaml delete mode 100644 examples/5/topology.yaml delete mode 100644 examples/expert/5/topology.yaml diff --git a/examples/1/topology.yaml b/examples/1/topology.yaml deleted file mode 100644 index a6519a7..0000000 --- a/examples/1/topology.yaml +++ /dev/null @@ -1,20 +0,0 @@ -coupling-scheme: - display_standard_values: true -participants: - - name: Fluid - solver: SU2 - - name: Solid - solver: Calculix -exchanges: - - from: Fluid - from-patch: interface - to: Solid - to-patch: surface - data: Force - type: strong - - from: Solid - from-patch: surface - to: Fluid - to-patch: interface - data: Displacement - type: strong diff --git a/examples/2/topology.yaml b/examples/2/topology.yaml deleted file mode 100644 index a19e5bb..0000000 --- a/examples/2/topology.yaml +++ /dev/null @@ -1,21 +0,0 @@ -coupling-scheme: - max-time: 1e-1 - time-window-size: 1e-3 -participants: - - name: Fluid - solver: SU2 - - name: Solid - solver: Calculix -exchanges: - - from: Fluid - from-patch: interface - to: Solid - to-patch: surface - data: Force - type: strong - - from: Solid - from-patch: surface - to: Fluid - to-patch: interface - data: Displacement - type: strong diff --git a/examples/5/topology.yaml b/examples/5/topology.yaml deleted file mode 100644 index 50bd652..0000000 --- a/examples/5/topology.yaml +++ /dev/null @@ -1,41 +0,0 @@ -coupling-scheme: - max-time: 1e-1 - time-window-size: 1e-3 - max-iterations: 30 - -participants: - - name: Fluid-Top - solver: OpenFOAM - dimensionality: 2 - - name: Fluid-Bottom - solver: OpenFOAM - dimensionality: 2 - - name: Solid - solver: CalculiX - dimensionality: 2 - -exchanges: - - from: Fluid-Top - from-patch: surface - to: Solid - to-patch: interface - data: Temperature-Top # Solid reads temperature - type: strong - - from: Solid - from-patch: surface - to: Fluid-Top - to-patch: interface - data: HeatTransfer-Top # Solid reads temperature - type: strong - - from: Fluid-Bottom - from-patch: surface - to: Solid - to-patch: interface - data: Temperature-Bottom # Solid reads temperature - type: strong - - from: Solid - from-patch: interface - to: Fluid-Bottom - to-patch: surface - data: HeatTransfer-Bottom # Fluid reads heat flux - type: strong diff --git a/examples/expert/5/topology.yaml b/examples/expert/5/topology.yaml deleted file mode 100644 index fc092f5..0000000 --- a/examples/expert/5/topology.yaml +++ /dev/null @@ -1,54 +0,0 @@ -coupling-scheme: - max-time: 5.0 - time-window-size: 1e-2 - max-iterations: 30 - -acceleration: - name: IQN-ILS - initial-relaxation: - value: 0.5 - preconditioner: - freeze-after: -1 - type: residual-sum - filter: - limit: 1e-6 - type: QR1 - max-used-iterations: 50 - time-windows-reused: 10 - -participants: - - name: Fluid-Top - solver: OpenFOAM - dimensionality: 2 - - name: Fluid-Bottom - solver: OpenFOAM - dimensionality: 2 - - name: Solid - solver: CalculiX - dimensionality: 2 - -exchanges: - - from: Fluid-Top - from-patch: surface - to: Solid - to-patch: interface - data: Temperature-Top # Solid reads temperature - type: strong - - from: Solid - from-patch: surface - to: Fluid-Top - to-patch: interface - data: HeatTransfer-Top # Solid reads temperature - type: strong - - from: Fluid-Bottom - from-patch: surface - to: Solid - to-patch: interface - data: Temperature-Bottom # Solid reads temperature - type: strong - - from: Solid - from-patch: interface - to: Fluid-Bottom - to-patch: surface - data: HeatTransfer-Bottom # Fluid reads heat flux - type: strong From 31ed42aae87e5ff75cfed29d3ee8b33a3e544c1a Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 26 Jan 2026 11:09:33 +0100 Subject: [PATCH 074/131] Update .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 86a13f2..9188d15 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ venv/ dist/ build/ *.egg-info/ +.tox/ # macOS .DS_Store From 59b20dd85c141a699ac1af6a6653e0d33782f183 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 26 Jan 2026 11:10:56 +0100 Subject: [PATCH 075/131] Fixed default data bug It was only checked whether a data_name is a key of the dict; not whether a key is contained in data_name. That was Force-Left would not be recognized as being in the dict. also added variations of data names to the list of intensive/extensive data --- precicecasegenerate/helper.py | 18 ++++++++++++++++-- precicecasegenerate/node_creator.py | 9 ++++++--- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/precicecasegenerate/helper.py b/precicecasegenerate/helper.py index 13bdf77..0fdcc2b 100644 --- a/precicecasegenerate/helper.py +++ b/precicecasegenerate/helper.py @@ -22,8 +22,19 @@ DEFAULT_DATA_KIND: str = "intensive" DEFAULT_MAPPING_KIND: str = "read" -EXTENSIVE_DATA: list[str] = ["force", "displacement"] -INTENSIVE_DATA: list[str] = ["temperature", "pressure", "velocity", "heat-flux"] +EXTENSIVE_DATA: list[str] = [ + "force", + "displacement", + "heat-transfer", + "heattransfer", +] +INTENSIVE_DATA: list[str] = [ + "temperature", + "pressure", + "velocity", + "heat-flux", + "heatflux" +] # To make duplicate data names unique DATA_UNIQUIFIERS: list[str] = [ @@ -48,6 +59,9 @@ "pressure": e.DataType.SCALAR, "velocity": e.DataType.VECTOR, "heat-flux": e.DataType.VECTOR, + "heatflux": e.DataType.VECTOR, + "heat-transfer": e.DataType.SCALAR, + "heattransfer": e.DataType.SCALAR, } diff --git a/precicecasegenerate/node_creator.py b/precicecasegenerate/node_creator.py index 505c783..0305102 100644 --- a/precicecasegenerate/node_creator.py +++ b/precicecasegenerate/node_creator.py @@ -837,9 +837,12 @@ def _initialize_data(self, participant_map: dict[str, n.ParticipantNode]) -> dic data_name: str = exchange["data"] data_type: e.DataType = exchange.get("data-type") if data_type is None: - # Check if the data has a default type - data_type = helper.DEFAULT_DATA_TYPES[data_name] \ - if data_name in helper.DEFAULT_DATA_TYPES else helper.DEFAULT_DATA_TYPE + data_type = helper.DEFAULT_DATA_TYPE + # Check if the data has a default type. Sort by key length to have a deterministic order + for key in sorted(helper.DEFAULT_DATA_TYPES.keys(), key=len, reverse=True): + if key.lower() in data_name.lower(): + data_type = helper.DEFAULT_DATA_TYPES[key] + break logger.warning(f"No data type provided for data \"{data_name}\". " f"Choosing default type \"{data_type.value}\".") else: From 7193004ef98717c578ce74baf1ca9865e5bbcb2a Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 26 Jan 2026 12:49:59 +0100 Subject: [PATCH 076/131] Update node_creator.py Fixed a critical bug where the wrong participant was used as the "origin" of a receive_mesh_node. --- precicecasegenerate/node_creator.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/precicecasegenerate/node_creator.py b/precicecasegenerate/node_creator.py index 0305102..13ace09 100644 --- a/precicecasegenerate/node_creator.py +++ b/precicecasegenerate/node_creator.py @@ -502,11 +502,12 @@ def _create_write_mapping(self, from_participant: n.ParticipantNode, to_particip mapping_map[(from_mesh, to_mesh)] = mapping from_participant.mappings.append(mapping) # In a write-mapping, the writer has to receive the to-mesh to be able to map to it - receive_mesh: n.ReceiveMeshNode = n.ReceiveMeshNode(participant=to_participant, + receive_mesh: n.ReceiveMeshNode = n.ReceiveMeshNode(participant=from_participant, mesh=to_mesh, - from_participant=from_participant, + from_participant=to_participant, api_access=False) from_participant.receive_meshes.append(receive_mesh) + logger.debug(f"Added receive-mesh {receive_mesh.mesh.name} to participant {from_participant.name}.") logger.debug(f"Created write-mapping between {from_mesh.name} and {to_mesh.name} " f"for participant {from_participant.name}.") @@ -539,6 +540,7 @@ def _create_read_mapping(self, from_participant: n.ParticipantNode, to_participa from_participant=from_participant, api_access=False) to_participant.receive_meshes.append(receive_mesh) + logger.debug(f"Added receive-mesh {receive_mesh.mesh.name} to participant {to_participant.name}.") logger.debug(f"Created read-mapping between {from_mesh.name} and {to_mesh.name} " f"for participant {to_participant.name}.") From 5ddad2a4679b79150b5d8cba5a07b182fdb2f178 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 26 Jan 2026 12:55:32 +0100 Subject: [PATCH 077/131] Update test_examples.py Updated the generic test; the command changed and the directories / filenames of the examples. --- tests/test_examples.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/tests/test_examples.py b/tests/test_examples.py index 1514365..cd5004d 100644 --- a/tests/test_examples.py +++ b/tests/test_examples.py @@ -8,28 +8,31 @@ def list_examples(): examples = Path(__file__).parent.parent / "examples" - return examples.rglob("topology.yaml") + return examples.rglob("*.yaml") @pytest.mark.parametrize("example", list_examples()) def test_application_with_example(example: Path): - """Test the application with each example topology files""" + """ + Test the application with each example topology file. + :param example: The path to the example topology file. + """ - assert example.exists() and example.is_file(), "topology file doesn't exist" + assert example.exists() and example.is_file(), "Topology file doesn't exist." with tempfile.TemporaryDirectory() as temp_dir: - cmd = ["precice-case-generate", "-f", str(example), "-o", temp_dir] + cmd = ["precice-case-generate", str(example), "-o", temp_dir] print(f"Running {cmd}") subprocess.run(cmd) output = [p.name for p in Path(temp_dir).iterdir()] print(f"Output {output}") - assert output, "Nothing generated" + assert output, "Nothing generated." - config = Path(temp_dir) / "precice-config.xml" - assert config.exists(), "No config generated" + config = Path(temp_dir) / "_generated/precice-config.xml" + assert config.exists(), "No config generated." ret = runCheck(config, True) if ret != 0: print("Failed config:") print(config.read_text()) - assert False, "The config failed to validate" + assert False, "The config failed to validate." From 38d8afd2df02e3b25eae0417fae81cfb02de3616 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 26 Jan 2026 13:13:09 +0100 Subject: [PATCH 078/131] Update test_node_generation.py Added a test for receive-mesh nodes. --- tests/node_generation/test_node_generation.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/tests/node_generation/test_node_generation.py b/tests/node_generation/test_node_generation.py index ce0759b..4ced636 100644 --- a/tests/node_generation/test_node_generation.py +++ b/tests/node_generation/test_node_generation.py @@ -114,8 +114,13 @@ def test_participant_nodes(): assert not to_participant.mappings, f"To-participant {to_name} specifies mapping." assert len(from_participant.mappings) == 1, f"From-participant {from_name} specifies more than one mapping." # Then the from-participant also receives a mesh from the to-participant - assert from_participant.receive_meshes, f"From-participant {from_name} does not receive a mesh." + assert len(from_participant.receive_meshes) == 1, (f"From-participant {from_name} receives " + f"{len(from_participant.receive_meshes)} meshes, expected 1.") assert not to_participant.receive_meshes, f"To-participant {to_name} receives a mesh." + receive_mesh_node: n.ReceiveMeshNode = from_participant.receive_meshes[0] + assert receive_mesh_node.mesh == to_participant.provide_meshes[0], ( + f"From-participant {from_name} receives mesh {receive_mesh_node.mesh.name}." + ) mapping: n.MappingNode = from_participant.mappings[0] # Write-mappings are always conservative @@ -130,8 +135,13 @@ def test_participant_nodes(): assert not from_participant.mappings, f"From-participant {from_name} specifies mapping." assert len(to_participant.mappings) == 1, f"To-participant {to_name} specifies more than one mapping." # Then the to-participant also receives a mesh from the from-participant - assert to_participant.receive_meshes, f"To-participant {to_name} does not receive a mesh." + assert len(to_participant.receive_meshes) == 1, (f"To-participant {to_name} does not receives " + f"{len(to_participant.receive_meshes)} meshes, expected 1.") assert not from_participant.receive_meshes, f"From-participant {from_name} receives a mesh." + receive_mesh_node: n.ReceiveMeshNode = to_participant.receive_meshes[0] + assert receive_mesh_node.mesh == from_participant.provide_meshes[0], ( + f"To-participant {to_name} receives mesh {receive_mesh_node.mesh.name}." + ) mapping: n.MappingNode = to_participant.mappings[0] # Read-mappings are always consistent From 856d53e89ff3d92558123f20ce0428bde1c32a47 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 26 Jan 2026 13:13:45 +0100 Subject: [PATCH 079/131] New example topologies --- examples/complex-multi-coupling/multi.yaml | 56 ++++++++++++++++++++++ examples/multi-coupling/topology.yaml | 36 ++++++++++++++ examples/strong-coupling/topology.yaml | 18 +++++++ examples/tutorial1/tutorial1.yaml | 15 ++++++ examples/tutorial2/tutorial2.yaml | 25 ++++++++++ examples/tutorial3/tutorial3.yaml | 22 +++++++++ examples/tutorial4/tutorial4.yaml | 15 ++++++ 7 files changed, 187 insertions(+) create mode 100644 examples/complex-multi-coupling/multi.yaml create mode 100644 examples/multi-coupling/topology.yaml create mode 100644 examples/strong-coupling/topology.yaml create mode 100644 examples/tutorial1/tutorial1.yaml create mode 100644 examples/tutorial2/tutorial2.yaml create mode 100644 examples/tutorial3/tutorial3.yaml create mode 100644 examples/tutorial4/tutorial4.yaml diff --git a/examples/complex-multi-coupling/multi.yaml b/examples/complex-multi-coupling/multi.yaml new file mode 100644 index 0000000..607764b --- /dev/null +++ b/examples/complex-multi-coupling/multi.yaml @@ -0,0 +1,56 @@ +participants: + - name: NASTIN + solver: ASolver + dimensionality: 3 + - name: SOLIDZ1 + solver: SolVer + dimensionality: 3 + - name: SOLIDZ2 + solver: SolVer + dimensionality: 3 + - name: SOLIDZ3 + solver: SolVer + dimensionality: 3 +exchanges: + - from: NASTIN + to: SOLIDZ1 + from-patch: interface + to-patch: interface + data: Forces1 + type: strong + data-type: vector + - from: NASTIN + to: SOLIDZ2 + from-patch: interface + to-patch: interface + data: Forces2 + type: strong + data-type: vector + - from: NASTIN + to: SOLIDZ3 + from-patch: interface + to-patch: interface + data: Forces3 + type: strong + data-type: vector + - from: SOLIDZ1 + to: NASTIN + from-patch: interface + to-patch: interface + data: Displacements1 + type: strong + data-type: vector + - from: SOLIDZ2 + to: NASTIN + from-patch: interface + to-patch: interface + data: Displacements2 + type: strong + data-type: vector + - from: SOLIDZ3 + to: NASTIN + from-patch: interface + to-patch: interface + data: Displacements3 + type: strong + data-type: vector diff --git a/examples/multi-coupling/topology.yaml b/examples/multi-coupling/topology.yaml new file mode 100644 index 0000000..3286748 --- /dev/null +++ b/examples/multi-coupling/topology.yaml @@ -0,0 +1,36 @@ +participants: + - name: Fluid-Top + solver: OpenFOAM + dimensionality: 2 + - name: Fluid-Bottom + solver: OpenFOAM + dimensionality: 2 + - name: Solid + solver: CalculiX + dimensionality: 2 + +exchanges: + - from: Fluid-Top + from-patch: surface + to: Solid + to-patch: interface + data: Temperature-Top # Solid reads temperature + type: strong + - from: Solid + from-patch: surface + to: Fluid-Top + to-patch: interface + data: HeatTransfer-Top # Solid reads temperature + type: strong + - from: Fluid-Bottom + from-patch: surface + to: Solid + to-patch: interface + data: Temperature-Bottom # Solid reads temperature + type: strong + - from: Solid + from-patch: interface + to: Fluid-Bottom + to-patch: surface + data: HeatTransfer-Bottom # Fluid reads heat flux + type: strong diff --git a/examples/strong-coupling/topology.yaml b/examples/strong-coupling/topology.yaml new file mode 100644 index 0000000..4689ccb --- /dev/null +++ b/examples/strong-coupling/topology.yaml @@ -0,0 +1,18 @@ +participants: + - name: Fluid + solver: SU2 + - name: Solid + solver: Calculix +exchanges: + - from: Fluid + from-patch: interface + to: Solid + to-patch: surface + data: Force + type: strong + - from: Solid + from-patch: surface + to: Fluid + to-patch: interface + data: Displacement + type: strong diff --git a/examples/tutorial1/tutorial1.yaml b/examples/tutorial1/tutorial1.yaml new file mode 100644 index 0000000..62ddb59 --- /dev/null +++ b/examples/tutorial1/tutorial1.yaml @@ -0,0 +1,15 @@ +participants: + - name: Generator + solver: ASolver + dimensionality: 2 + - name: Propagator + solver: BSolver + dimensionality: 2 +exchanges: + - from: Generator + to: Propagator + from-patch: interface + to-patch: interface + data: Color + type: weak + data-type: scalar \ No newline at end of file diff --git a/examples/tutorial2/tutorial2.yaml b/examples/tutorial2/tutorial2.yaml new file mode 100644 index 0000000..76933df --- /dev/null +++ b/examples/tutorial2/tutorial2.yaml @@ -0,0 +1,25 @@ +participants: + - name: Generator-Left + solver: ASolver + dimensionality: 2 + - name: Generator-Right + solver: ASolver + dimensionality: 2 + - name: Propagator + solver: BSolver + dimensionality: 2 +exchanges: + - from: Generator-Left + to: Propagator + from-patch: interface + to-patch: interface + data: Color + type: weak + data-type: scalar + - from: Generator-Right + to: Propagator + from-patch: interface + to-patch: interface + data: Color + type: weak + data-type: scalar \ No newline at end of file diff --git a/examples/tutorial3/tutorial3.yaml b/examples/tutorial3/tutorial3.yaml new file mode 100644 index 0000000..6fe97ae --- /dev/null +++ b/examples/tutorial3/tutorial3.yaml @@ -0,0 +1,22 @@ +participants: + - name: Fluid + solver: OpenFOAM + dimensionality: 2 + - name: Solid + solver: Nutils + dimensionality: 2 +exchanges: + - from: Fluid + to: Solid + from-patch: interface + to-patch: interface + data: Temperature + type: strong + data-type: scalar + - from: Solid + to: Fluid + from-patch: interface + to-patch: interface + data: Heat-Flux + type: strong + data-type: scalar \ No newline at end of file diff --git a/examples/tutorial4/tutorial4.yaml b/examples/tutorial4/tutorial4.yaml new file mode 100644 index 0000000..52d0de4 --- /dev/null +++ b/examples/tutorial4/tutorial4.yaml @@ -0,0 +1,15 @@ +participants: + - name: A + solver: ASolver + dimensionality: 3 + - name: B + solver: BSolver + dimensionality: 3 +exchanges: + - from: A + to: B + data: Data + type: weak + data-type: scalar + from-patch: interface + to-patch: interface \ No newline at end of file From cb0fce8d3ce3353aced066fb30cf5804ca3df1b4 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 26 Jan 2026 13:16:30 +0100 Subject: [PATCH 080/131] ...rest of the example files --- .../_generated/README.md | 88 +++++ .../_generated/clean.sh | 350 ++++++++++++++++++ .../nastin-asolver/adapter-config.json | 42 +++ .../_generated/nastin-asolver/run.sh | 21 ++ .../_generated/precice-config.xml | 144 +++++++ .../solidz1-solver/adapter-config.json | 18 + .../_generated/solidz1-solver/run.sh | 21 ++ .../solidz2-solver/adapter-config.json | 18 + .../_generated/solidz2-solver/run.sh | 21 ++ .../solidz3-solver/adapter-config.json | 18 + .../_generated/solidz3-solver/run.sh | 21 ++ examples/multi-coupling/_generated/README.md | 83 +++++ examples/multi-coupling/_generated/clean.sh | 350 ++++++++++++++++++ .../fluid-bottom-openfoam/adapter-config.json | 24 ++ .../_generated/fluid-bottom-openfoam/run.sh | 21 ++ .../fluid-top-openfoam/adapter-config.json | 24 ++ .../_generated/fluid-top-openfoam/run.sh | 21 ++ .../_generated/precice-config.xml | 116 ++++++ .../solid-calculix/adapter-config.json | 42 +++ .../_generated/solid-calculix/run.sh | 21 ++ examples/strong-coupling/_generated/README.md | 78 ++++ examples/strong-coupling/_generated/clean.sh | 350 ++++++++++++++++++ .../_generated/fluid-su2/adapter-config.json | 18 + .../_generated/fluid-su2/run.sh | 21 ++ .../_generated/precice-config.xml | 63 ++++ .../solid-calculix/adapter-config.json | 18 + .../_generated/solid-calculix/run.sh | 21 ++ examples/tutorial1/_generated/README.md | 78 ++++ examples/tutorial1/_generated/clean.sh | 350 ++++++++++++++++++ .../generator-asolver/adapter-config.json | 15 + .../_generated/generator-asolver/run.sh | 21 ++ .../tutorial1/_generated/precice-config.xml | 44 +++ .../propagator-bsolver/adapter-config.json | 15 + .../_generated/propagator-bsolver/run.sh | 21 ++ examples/tutorial2/_generated/README.md | 83 +++++ examples/tutorial2/_generated/clean.sh | 350 ++++++++++++++++++ .../adapter-config.json | 15 + .../_generated/generator-left-asolver/run.sh | 21 ++ .../adapter-config.json | 15 + .../_generated/generator-right-asolver/run.sh | 21 ++ .../tutorial2/_generated/precice-config.xml | 70 ++++ .../propagator-bsolver/adapter-config.json | 24 ++ .../_generated/propagator-bsolver/run.sh | 21 ++ examples/tutorial3/_generated/README.md | 78 ++++ examples/tutorial3/_generated/clean.sh | 350 ++++++++++++++++++ .../fluid-openfoam/adapter-config.json | 18 + .../_generated/fluid-openfoam/run.sh | 21 ++ .../tutorial3/_generated/precice-config.xml | 63 ++++ .../solid-nutils/adapter-config.json | 18 + .../tutorial3/_generated/solid-nutils/run.sh | 21 ++ examples/tutorial4/_generated/README.md | 78 ++++ .../_generated/a-asolver/adapter-config.json | 15 + .../tutorial4/_generated/a-asolver/run.sh | 21 ++ .../_generated/b-bsolver/adapter-config.json | 15 + .../tutorial4/_generated/b-bsolver/run.sh | 21 ++ examples/tutorial4/_generated/clean.sh | 350 ++++++++++++++++++ .../tutorial4/_generated/precice-config.xml | 44 +++ 57 files changed, 4310 insertions(+) create mode 100644 examples/complex-multi-coupling/_generated/README.md create mode 100644 examples/complex-multi-coupling/_generated/clean.sh create mode 100644 examples/complex-multi-coupling/_generated/nastin-asolver/adapter-config.json create mode 100644 examples/complex-multi-coupling/_generated/nastin-asolver/run.sh create mode 100644 examples/complex-multi-coupling/_generated/precice-config.xml create mode 100644 examples/complex-multi-coupling/_generated/solidz1-solver/adapter-config.json create mode 100644 examples/complex-multi-coupling/_generated/solidz1-solver/run.sh create mode 100644 examples/complex-multi-coupling/_generated/solidz2-solver/adapter-config.json create mode 100644 examples/complex-multi-coupling/_generated/solidz2-solver/run.sh create mode 100644 examples/complex-multi-coupling/_generated/solidz3-solver/adapter-config.json create mode 100644 examples/complex-multi-coupling/_generated/solidz3-solver/run.sh create mode 100644 examples/multi-coupling/_generated/README.md create mode 100644 examples/multi-coupling/_generated/clean.sh create mode 100644 examples/multi-coupling/_generated/fluid-bottom-openfoam/adapter-config.json create mode 100644 examples/multi-coupling/_generated/fluid-bottom-openfoam/run.sh create mode 100644 examples/multi-coupling/_generated/fluid-top-openfoam/adapter-config.json create mode 100644 examples/multi-coupling/_generated/fluid-top-openfoam/run.sh create mode 100644 examples/multi-coupling/_generated/precice-config.xml create mode 100644 examples/multi-coupling/_generated/solid-calculix/adapter-config.json create mode 100644 examples/multi-coupling/_generated/solid-calculix/run.sh create mode 100644 examples/strong-coupling/_generated/README.md create mode 100644 examples/strong-coupling/_generated/clean.sh create mode 100644 examples/strong-coupling/_generated/fluid-su2/adapter-config.json create mode 100644 examples/strong-coupling/_generated/fluid-su2/run.sh create mode 100644 examples/strong-coupling/_generated/precice-config.xml create mode 100644 examples/strong-coupling/_generated/solid-calculix/adapter-config.json create mode 100644 examples/strong-coupling/_generated/solid-calculix/run.sh create mode 100644 examples/tutorial1/_generated/README.md create mode 100644 examples/tutorial1/_generated/clean.sh create mode 100644 examples/tutorial1/_generated/generator-asolver/adapter-config.json create mode 100644 examples/tutorial1/_generated/generator-asolver/run.sh create mode 100644 examples/tutorial1/_generated/precice-config.xml create mode 100644 examples/tutorial1/_generated/propagator-bsolver/adapter-config.json create mode 100644 examples/tutorial1/_generated/propagator-bsolver/run.sh create mode 100644 examples/tutorial2/_generated/README.md create mode 100644 examples/tutorial2/_generated/clean.sh create mode 100644 examples/tutorial2/_generated/generator-left-asolver/adapter-config.json create mode 100644 examples/tutorial2/_generated/generator-left-asolver/run.sh create mode 100644 examples/tutorial2/_generated/generator-right-asolver/adapter-config.json create mode 100644 examples/tutorial2/_generated/generator-right-asolver/run.sh create mode 100644 examples/tutorial2/_generated/precice-config.xml create mode 100644 examples/tutorial2/_generated/propagator-bsolver/adapter-config.json create mode 100644 examples/tutorial2/_generated/propagator-bsolver/run.sh create mode 100644 examples/tutorial3/_generated/README.md create mode 100644 examples/tutorial3/_generated/clean.sh create mode 100644 examples/tutorial3/_generated/fluid-openfoam/adapter-config.json create mode 100644 examples/tutorial3/_generated/fluid-openfoam/run.sh create mode 100644 examples/tutorial3/_generated/precice-config.xml create mode 100644 examples/tutorial3/_generated/solid-nutils/adapter-config.json create mode 100644 examples/tutorial3/_generated/solid-nutils/run.sh create mode 100644 examples/tutorial4/_generated/README.md create mode 100644 examples/tutorial4/_generated/a-asolver/adapter-config.json create mode 100644 examples/tutorial4/_generated/a-asolver/run.sh create mode 100644 examples/tutorial4/_generated/b-bsolver/adapter-config.json create mode 100644 examples/tutorial4/_generated/b-bsolver/run.sh create mode 100644 examples/tutorial4/_generated/clean.sh create mode 100644 examples/tutorial4/_generated/precice-config.xml diff --git a/examples/complex-multi-coupling/_generated/README.md b/examples/complex-multi-coupling/_generated/README.md new file mode 100644 index 0000000..fca3965 --- /dev/null +++ b/examples/complex-multi-coupling/_generated/README.md @@ -0,0 +1,88 @@ +# Multiphysics Simulation Project + +> [!NOTE] This `README.md` file was auto-generated by preCICE case-generate. + + +--- + +## Project Overview + +This project uses **preCICE** for a multiphysics simulation involving: + +- Solver `ASolver` with participant `NASTIN` +- Solver `SolVer` with participant `SOLIDZ1` +- Solver `SolVer` with participant `SOLIDZ2` +- Solver `SolVer` with participant `SOLIDZ3` + +### Project Structure + +Global files that are generated are: `precice-config.xml`, `README.md` and `clean.sh`. Additionally, for each participant, a folder with an `adapter-config.json` and a `run.sh` file are created. +The folder structure is as follows: + +``` +_generated/ + ├── README.md # This file + ├── clean.sh # Clean up script + ├──nastin-asolver/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + ├──solidz1-solver/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + ├──solidz2-solver/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + ├──solidz3-solver/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + └── precice-config.xml # Global precice-config.xml file +``` + + +- `precice-config.xml` is the global preCICE configuration file which defines the parameters and communication of participants +- `adapter-config.json` is a configuration file to couple the solvers with preCICE. +- `run.sh` is a script that is meant to execute a participant. Note, however, that since different solvers are executed differently, this file is not implemented yet. +- `clean.sh` removes any files in the current root directory that were not created by preCICE case-generate (and moves them to a backup folder). +Execution: + +```bash +./clean.sh [--force] [--dry-run] +``` + +- `--force` Deletes the files and any backup folders +- `--dry-run` Does not delete any files, but prints files that would be deleted + +--- + +## Prerequisites + +Before running the simulation, ensure you have the following installed: + +- The preCICE coupling library +- Solver `ASolver` and its dependencies +- Solver `SolVer` and its dependencies +- Solver `SolVer` and its dependencies +- Solver `SolVer` and its dependencies + +--- + +## Running the Simulation + +### Quick Start + +```bash +# Navigate to the `_generated` folder +cd _generated/ + +# Implement the run script + +# Make the run script executable +chmod +x run.sh + +# Execute the simulation +./run.sh +``` + +--- + +For more information, see the [preCICE documentation](https://precice.org/docs.html) and [precice-case-generate](https://github.com/precice/case-generate). \ No newline at end of file diff --git a/examples/complex-multi-coupling/_generated/clean.sh b/examples/complex-multi-coupling/_generated/clean.sh new file mode 100644 index 0000000..2954b31 --- /dev/null +++ b/examples/complex-multi-coupling/_generated/clean.sh @@ -0,0 +1,350 @@ +#!/usr/bin/env bash + +# ------------------------------------------------------------------- +# Script Name: clean.sh +# Description: Recursively deletes/moves files/dirs except: +# - Global preserved filenames anywhere (run.sh, adapter-config.json...) +# - Specific root files (README.md, precice-config.xml) +# Usage: ./clean.sh [--dry-run] [--force] +# --dry-run : show what would happen, don't remove/move +# --force : permanently delete unpreserved items AND remove existing backups +# ------------------------------------------------------------------- + +# Strict mode: +# -e: exit on error +# -u: exit on undefined variable +# -o pipefail: exit if any command in a pipe fails +set -euo pipefail + +# --- CONFIGURATION --- +ROOT_DIR="$(pwd)" +LOG_FILE="cleanup.log" +BACKUP_DIR="$ROOT_DIR/backup_$(date '+%Y%m%d_%H%M%S')" + +# 1. GLOBAL PRESERVES: filenames to keep anywhere in the tree +GLOBAL_PRESERVE_NAMES=( + "run.sh" + "adapter-config.json" +) + +# 2. ROOT PRESERVES: filenames to keep only if in ROOT_DIR +ROOT_PRESERVE_PATHS=( + "clean.sh" + "README.md" + "precice-config.xml" + "$LOG_FILE" # always keep the log (will be overwritten) +) + +# --- DEFAULTS --- +DRY_RUN=0 # No dry-run by default +FORCE=0 # No permanent removal of files by default +MOVED_COUNT=0 # Counter to track if we actually backed anything up +DELETED_COUNT=0 # Counter to track if we actually deleted anything + +# --- HELPERS --- + +log() { + # We use tee -a (append) here so we don't overwrite previous lines *of this run*. + # The file is cleared once at the start of the MAIN block. + echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE" +} + +# Is filename (basename) a global preserved name? +is_global_preserved() { + local filename="$1" + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [[ "$filename" == "$name" ]]; then + return 0 + fi + done + return 1 +} + +# Is a relative path preserved at root? +is_root_preserved() { + local relpath="$1" + for p in "${ROOT_PRESERVE_PATHS[@]}"; do + if [[ "$relpath" == "$p" ]]; then + return 0 + fi + done + return 1 +} + +# Find out whether directory contains any preserved file *anywhere* under it. +# Implementation Note: Uses `head -n 1` instead of `-quit` for maximum compatibility +# across all Linux distros (including Alpine/BusyBox) and BSD/MacOS. +dir_contains_preserved_content() { + local dir="$1" + local name + local -a find_args=() + + # Build find arguments: ( -name A -o -name B ... ) + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [ ${#find_args[@]} -eq 0 ]; then + find_args+=( -name "$name" ) + else + find_args+=( -o -name "$name" ) + fi + done + + # Check if find returns any match. + # piping to head -n 1 causes find to receive SIGPIPE and stop early if a match is found. + if [ -n "$(find "$dir" \( "${find_args[@]}" \) -print 2>/dev/null | head -n 1)" ]; then + return 0 + fi + return 1 +} + +# Ensure backup destination exists and safely move source there preserving relative path. +# Prevents collisions by making unique names if needed. +# Args: +# $1 = absolute src path +# $2 = rel path relative to ROOT_DIR (used to recreate path inside backup) +safe_move_to_backup() { + local src="$1" + local rel="$2" + + # Destination path = $BACKUP_DIR/$rel + local dest="$BACKUP_DIR/$rel" + local dest_dir + dest_dir="$(dirname "$dest")" + + # Normalize: if dirname is ".", use $BACKUP_DIR as target dir + if [[ "$dest_dir" == "$BACKUP_DIR/." ]] || [[ "$dest_dir" == "." ]]; then + dest_dir="$BACKUP_DIR" + fi + + if [ "$DRY_RUN" -eq 0 ]; then + mkdir -p "$dest_dir" + fi + + # If dest exists, append numeric suffix before extension to avoid overwrite + if [ -e "$dest" ]; then + local base name ext candidate n + base="$(basename "$dest")" + name="${base%.*}" + ext="${base##*.}" + n=1 + + # Check if file has an extension + if [[ "$ext" == "$base" ]]; then + # No extension + candidate="$dest_dir/${name}_$n" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n" + done + else + # Has extension + candidate="$dest_dir/${name}_$n.$ext" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n.$ext" + done + fi + dest="$candidate" + fi + + if [ "$DRY_RUN" -eq 1 ]; then + log "Would be deleted: ${rel}" + else + mv -- "$src" "$dest" + # Increment the counter because we successfully moved a file + MOVED_COUNT=$((MOVED_COUNT + 1)) + log "Deleted: ${rel}" + fi +} + +# Safe remove (used by --force). Respects --dry-run. +safe_remove() { + local src="$1" + local rel="$2" + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove: $rel" + else + rm -rf -- "$src" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed: $rel" + fi +} + +# Remove existing backup_* directories permanently (used when FORCE=1). +remove_existing_backups_permanently() { + shopt -s nullglob + local found=0 + for old in "$ROOT_DIR"/backup_*; do + if [ -d "$old" ]; then + found=1 + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove backup: $(basename "$old")" + else + rm -rf -- "$old" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed backup: $(basename "$old")" + fi + fi + done + shopt -u nullglob + if [ "$found" -eq 0 ]; then + log "No existing backup directories to remove." + fi +} + +# Perform action for a single path (file or directory) that is NOT preserved. +# Moves to backup preserving tree, or removes permanently when FORCE=1. +perform_action() { + local item="$1" + local rel_path="${item#$ROOT_DIR/}" + + if [ "$FORCE" -eq 1 ]; then + safe_remove "$item" "$rel_path" + else + safe_move_to_backup "$item" "$rel_path" + fi +} + +# --- RECURSIVE CLEANUP --- +recursive_cleanup() { + local current_dir="$1" + + # dotglob: includes hidden files (starting with .) + # nullglob: makes the loop not run if no files match (avoids literal string issues) + shopt -s dotglob nullglob + + local item rel_path base + + for item in "$current_dir"/*; do + # Sanity check: ensure file exists (handles rare race conditions or broken links) + [ ! -e "$item" ] && [ ! -L "$item" ] && continue + + rel_path="${item#$ROOT_DIR/}" + base="$(basename "$item")" + + # Skip . and .. (though glob usually excludes them, safety first) + if [[ "$base" == "." || "$base" == ".." ]]; then + continue + fi + + # --- FILE or SYMLINK --- + if [ -f "$item" ] || [ -L "$item" ]; then + # 1. Preserve by global name anywhere? + if is_global_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # 2. Preserve if at root and matches root-preserve list? + if [[ "$current_dir" == "$ROOT_DIR" ]] && is_root_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # Otherwise: perform action + perform_action "$item" + continue + fi + + # --- DIRECTORY --- + if [ -d "$item" ]; then + # Check if dir contains any preserved content anywhere below + if dir_contains_preserved_content "$item"; then + recursive_cleanup "$item" + + # After recursion, if directory is empty, remove it (respecting dry-run) + if [ -z "$(ls -A "$item")" ]; then + if [ "$DRY_RUN" -eq 1 ]; then + log "Would remove empty directory: $rel_path" + else + rmdir -- "$item" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Removed empty directory: $rel_path" + fi + fi + else + # Directory contains no preserved files anywhere deep: remove/move entire directory + perform_action "$item" + fi + continue + fi + done + + # Restore defaults for shopt to avoid side effects if function is reused + shopt -u dotglob nullglob +} + +# --- MAIN --- + +# Parse flags +while [[ $# -gt 0 ]]; do + case $1 in + --dry-run) DRY_RUN=1 ;; + --force) FORCE=1 ;; + *) echo "Unknown parameter: $1"; exit 1 ;; + esac + shift +done + +# Initialize/Clear the log file for this new run +: > "$LOG_FILE" + +# Confirmation prompt (skip when dry-run) +if [ "$DRY_RUN" -eq 1 ]; then + log "Dry run enabled, nothing will be removed." +else + read -p "This will delete all files except preserved ones. Proceed? [y/n]: " confirm + case "$confirm" in + [yY][eE][sS]|[yY]) ;; + *) log "Cleanup aborted."; exit 0 ;; + esac +fi + +if [ "$FORCE" -eq 1 ] && [ "$DRY_RUN" -eq 1 ]; then + log "Ignoring --force." + FORCE=0 +fi + +log "Starting cleanup..." + + +if [ "$FORCE" -eq 1 ]; then + remove_existing_backups_permanently +fi + +recursive_cleanup "$ROOT_DIR" + +if [ "$DELETED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" +else + FILE_STR="files" + DIRECTORY_STR="directories" +fi + +OUTPUT_STR="" + +# Output if FORCE +if [ "$FORCE" -eq 1 ]; then + OUTPUT_STR="Deleted $DELETED_COUNT $FILE_STR or $DIRECTORY_STR. " +fi + +if [ "$DRY_RUN" -eq 1 ]; then + OUTPUT_STR="Dry-run completed successfully." +else + OUTPUT_STR="${OUTPUT_STR}Cleanup completed successfully." +fi + +# Only append the backup message if we actually moved files (MOVED_COUNT > 0) +if [ "$MOVED_COUNT" -gt 0 ]; then + # Correct wording + if [ "$MOVED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" + else + FILE_STR="files" + DIRECTORY_STR="directories" + fi + OUTPUT_STR="$OUTPUT_STR Backed up $MOVED_COUNT deleted $FILE_STR or $DIRECTORY_STR in '$BACKUP_DIR'." +fi + +log "$OUTPUT_STR" \ No newline at end of file diff --git a/examples/complex-multi-coupling/_generated/nastin-asolver/adapter-config.json b/examples/complex-multi-coupling/_generated/nastin-asolver/adapter-config.json new file mode 100644 index 0000000..18a953c --- /dev/null +++ b/examples/complex-multi-coupling/_generated/nastin-asolver/adapter-config.json @@ -0,0 +1,42 @@ +{ + "participant_name": "NASTIN", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "NASTIN-SOLIDZ1-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Displacements1" + ], + "write_data_names": [ + "Forces1" + ] + }, + { + "mesh_name": "NASTIN-SOLIDZ2-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Displacements2" + ], + "write_data_names": [ + "Forces2" + ] + }, + { + "mesh_name": "NASTIN-SOLIDZ3-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Displacements3" + ], + "write_data_names": [ + "Forces3" + ] + } + ] +} \ No newline at end of file diff --git a/examples/complex-multi-coupling/_generated/nastin-asolver/run.sh b/examples/complex-multi-coupling/_generated/nastin-asolver/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/examples/complex-multi-coupling/_generated/nastin-asolver/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/examples/complex-multi-coupling/_generated/precice-config.xml b/examples/complex-multi-coupling/_generated/precice-config.xml new file mode 100644 index 0000000..999cc1c --- /dev/null +++ b/examples/complex-multi-coupling/_generated/precice-config.xml @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/complex-multi-coupling/_generated/solidz1-solver/adapter-config.json b/examples/complex-multi-coupling/_generated/solidz1-solver/adapter-config.json new file mode 100644 index 0000000..64e59e4 --- /dev/null +++ b/examples/complex-multi-coupling/_generated/solidz1-solver/adapter-config.json @@ -0,0 +1,18 @@ +{ + "participant_name": "SOLIDZ1", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "SOLIDZ1-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Forces1" + ], + "write_data_names": [ + "Displacements1" + ] + } + ] +} \ No newline at end of file diff --git a/examples/complex-multi-coupling/_generated/solidz1-solver/run.sh b/examples/complex-multi-coupling/_generated/solidz1-solver/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/examples/complex-multi-coupling/_generated/solidz1-solver/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/examples/complex-multi-coupling/_generated/solidz2-solver/adapter-config.json b/examples/complex-multi-coupling/_generated/solidz2-solver/adapter-config.json new file mode 100644 index 0000000..36c4af2 --- /dev/null +++ b/examples/complex-multi-coupling/_generated/solidz2-solver/adapter-config.json @@ -0,0 +1,18 @@ +{ + "participant_name": "SOLIDZ2", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "SOLIDZ2-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Forces2" + ], + "write_data_names": [ + "Displacements2" + ] + } + ] +} \ No newline at end of file diff --git a/examples/complex-multi-coupling/_generated/solidz2-solver/run.sh b/examples/complex-multi-coupling/_generated/solidz2-solver/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/examples/complex-multi-coupling/_generated/solidz2-solver/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/examples/complex-multi-coupling/_generated/solidz3-solver/adapter-config.json b/examples/complex-multi-coupling/_generated/solidz3-solver/adapter-config.json new file mode 100644 index 0000000..8660d37 --- /dev/null +++ b/examples/complex-multi-coupling/_generated/solidz3-solver/adapter-config.json @@ -0,0 +1,18 @@ +{ + "participant_name": "SOLIDZ3", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "SOLIDZ3-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Forces3" + ], + "write_data_names": [ + "Displacements3" + ] + } + ] +} \ No newline at end of file diff --git a/examples/complex-multi-coupling/_generated/solidz3-solver/run.sh b/examples/complex-multi-coupling/_generated/solidz3-solver/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/examples/complex-multi-coupling/_generated/solidz3-solver/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/examples/multi-coupling/_generated/README.md b/examples/multi-coupling/_generated/README.md new file mode 100644 index 0000000..67842e7 --- /dev/null +++ b/examples/multi-coupling/_generated/README.md @@ -0,0 +1,83 @@ +# Multiphysics Simulation Project + +> [!NOTE] This `README.md` file was auto-generated by preCICE case-generate. + + +--- + +## Project Overview + +This project uses **preCICE** for a multiphysics simulation involving: + +- Solver `OpenFOAM` with participant `Fluid-Top` +- Solver `OpenFOAM` with participant `Fluid-Bottom` +- Solver `CalculiX` with participant `Solid` + +### Project Structure + +Global files that are generated are: `precice-config.xml`, `README.md` and `clean.sh`. Additionally, for each participant, a folder with an `adapter-config.json` and a `run.sh` file are created. +The folder structure is as follows: + +``` +_generated/ + ├── README.md # This file + ├── clean.sh # Clean up script + ├──fluid-top-openfoam/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + ├──fluid-bottom-openfoam/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + ├──solid-calculix/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + └── precice-config.xml # Global precice-config.xml file +``` + + +- `precice-config.xml` is the global preCICE configuration file which defines the parameters and communication of participants +- `adapter-config.json` is a configuration file to couple the solvers with preCICE. +- `run.sh` is a script that is meant to execute a participant. Note, however, that since different solvers are executed differently, this file is not implemented yet. +- `clean.sh` removes any files in the current root directory that were not created by preCICE case-generate (and moves them to a backup folder). +Execution: + +```bash +./clean.sh [--force] [--dry-run] +``` + +- `--force` Deletes the files and any backup folders +- `--dry-run` Does not delete any files, but prints files that would be deleted + +--- + +## Prerequisites + +Before running the simulation, ensure you have the following installed: + +- The preCICE coupling library +- Solver `OpenFOAM` and its dependencies +- Solver `OpenFOAM` and its dependencies +- Solver `CalculiX` and its dependencies + +--- + +## Running the Simulation + +### Quick Start + +```bash +# Navigate to the `_generated` folder +cd _generated/ + +# Implement the run script + +# Make the run script executable +chmod +x run.sh + +# Execute the simulation +./run.sh +``` + +--- + +For more information, see the [preCICE documentation](https://precice.org/docs.html) and [precice-case-generate](https://github.com/precice/case-generate). \ No newline at end of file diff --git a/examples/multi-coupling/_generated/clean.sh b/examples/multi-coupling/_generated/clean.sh new file mode 100644 index 0000000..2954b31 --- /dev/null +++ b/examples/multi-coupling/_generated/clean.sh @@ -0,0 +1,350 @@ +#!/usr/bin/env bash + +# ------------------------------------------------------------------- +# Script Name: clean.sh +# Description: Recursively deletes/moves files/dirs except: +# - Global preserved filenames anywhere (run.sh, adapter-config.json...) +# - Specific root files (README.md, precice-config.xml) +# Usage: ./clean.sh [--dry-run] [--force] +# --dry-run : show what would happen, don't remove/move +# --force : permanently delete unpreserved items AND remove existing backups +# ------------------------------------------------------------------- + +# Strict mode: +# -e: exit on error +# -u: exit on undefined variable +# -o pipefail: exit if any command in a pipe fails +set -euo pipefail + +# --- CONFIGURATION --- +ROOT_DIR="$(pwd)" +LOG_FILE="cleanup.log" +BACKUP_DIR="$ROOT_DIR/backup_$(date '+%Y%m%d_%H%M%S')" + +# 1. GLOBAL PRESERVES: filenames to keep anywhere in the tree +GLOBAL_PRESERVE_NAMES=( + "run.sh" + "adapter-config.json" +) + +# 2. ROOT PRESERVES: filenames to keep only if in ROOT_DIR +ROOT_PRESERVE_PATHS=( + "clean.sh" + "README.md" + "precice-config.xml" + "$LOG_FILE" # always keep the log (will be overwritten) +) + +# --- DEFAULTS --- +DRY_RUN=0 # No dry-run by default +FORCE=0 # No permanent removal of files by default +MOVED_COUNT=0 # Counter to track if we actually backed anything up +DELETED_COUNT=0 # Counter to track if we actually deleted anything + +# --- HELPERS --- + +log() { + # We use tee -a (append) here so we don't overwrite previous lines *of this run*. + # The file is cleared once at the start of the MAIN block. + echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE" +} + +# Is filename (basename) a global preserved name? +is_global_preserved() { + local filename="$1" + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [[ "$filename" == "$name" ]]; then + return 0 + fi + done + return 1 +} + +# Is a relative path preserved at root? +is_root_preserved() { + local relpath="$1" + for p in "${ROOT_PRESERVE_PATHS[@]}"; do + if [[ "$relpath" == "$p" ]]; then + return 0 + fi + done + return 1 +} + +# Find out whether directory contains any preserved file *anywhere* under it. +# Implementation Note: Uses `head -n 1` instead of `-quit` for maximum compatibility +# across all Linux distros (including Alpine/BusyBox) and BSD/MacOS. +dir_contains_preserved_content() { + local dir="$1" + local name + local -a find_args=() + + # Build find arguments: ( -name A -o -name B ... ) + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [ ${#find_args[@]} -eq 0 ]; then + find_args+=( -name "$name" ) + else + find_args+=( -o -name "$name" ) + fi + done + + # Check if find returns any match. + # piping to head -n 1 causes find to receive SIGPIPE and stop early if a match is found. + if [ -n "$(find "$dir" \( "${find_args[@]}" \) -print 2>/dev/null | head -n 1)" ]; then + return 0 + fi + return 1 +} + +# Ensure backup destination exists and safely move source there preserving relative path. +# Prevents collisions by making unique names if needed. +# Args: +# $1 = absolute src path +# $2 = rel path relative to ROOT_DIR (used to recreate path inside backup) +safe_move_to_backup() { + local src="$1" + local rel="$2" + + # Destination path = $BACKUP_DIR/$rel + local dest="$BACKUP_DIR/$rel" + local dest_dir + dest_dir="$(dirname "$dest")" + + # Normalize: if dirname is ".", use $BACKUP_DIR as target dir + if [[ "$dest_dir" == "$BACKUP_DIR/." ]] || [[ "$dest_dir" == "." ]]; then + dest_dir="$BACKUP_DIR" + fi + + if [ "$DRY_RUN" -eq 0 ]; then + mkdir -p "$dest_dir" + fi + + # If dest exists, append numeric suffix before extension to avoid overwrite + if [ -e "$dest" ]; then + local base name ext candidate n + base="$(basename "$dest")" + name="${base%.*}" + ext="${base##*.}" + n=1 + + # Check if file has an extension + if [[ "$ext" == "$base" ]]; then + # No extension + candidate="$dest_dir/${name}_$n" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n" + done + else + # Has extension + candidate="$dest_dir/${name}_$n.$ext" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n.$ext" + done + fi + dest="$candidate" + fi + + if [ "$DRY_RUN" -eq 1 ]; then + log "Would be deleted: ${rel}" + else + mv -- "$src" "$dest" + # Increment the counter because we successfully moved a file + MOVED_COUNT=$((MOVED_COUNT + 1)) + log "Deleted: ${rel}" + fi +} + +# Safe remove (used by --force). Respects --dry-run. +safe_remove() { + local src="$1" + local rel="$2" + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove: $rel" + else + rm -rf -- "$src" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed: $rel" + fi +} + +# Remove existing backup_* directories permanently (used when FORCE=1). +remove_existing_backups_permanently() { + shopt -s nullglob + local found=0 + for old in "$ROOT_DIR"/backup_*; do + if [ -d "$old" ]; then + found=1 + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove backup: $(basename "$old")" + else + rm -rf -- "$old" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed backup: $(basename "$old")" + fi + fi + done + shopt -u nullglob + if [ "$found" -eq 0 ]; then + log "No existing backup directories to remove." + fi +} + +# Perform action for a single path (file or directory) that is NOT preserved. +# Moves to backup preserving tree, or removes permanently when FORCE=1. +perform_action() { + local item="$1" + local rel_path="${item#$ROOT_DIR/}" + + if [ "$FORCE" -eq 1 ]; then + safe_remove "$item" "$rel_path" + else + safe_move_to_backup "$item" "$rel_path" + fi +} + +# --- RECURSIVE CLEANUP --- +recursive_cleanup() { + local current_dir="$1" + + # dotglob: includes hidden files (starting with .) + # nullglob: makes the loop not run if no files match (avoids literal string issues) + shopt -s dotglob nullglob + + local item rel_path base + + for item in "$current_dir"/*; do + # Sanity check: ensure file exists (handles rare race conditions or broken links) + [ ! -e "$item" ] && [ ! -L "$item" ] && continue + + rel_path="${item#$ROOT_DIR/}" + base="$(basename "$item")" + + # Skip . and .. (though glob usually excludes them, safety first) + if [[ "$base" == "." || "$base" == ".." ]]; then + continue + fi + + # --- FILE or SYMLINK --- + if [ -f "$item" ] || [ -L "$item" ]; then + # 1. Preserve by global name anywhere? + if is_global_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # 2. Preserve if at root and matches root-preserve list? + if [[ "$current_dir" == "$ROOT_DIR" ]] && is_root_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # Otherwise: perform action + perform_action "$item" + continue + fi + + # --- DIRECTORY --- + if [ -d "$item" ]; then + # Check if dir contains any preserved content anywhere below + if dir_contains_preserved_content "$item"; then + recursive_cleanup "$item" + + # After recursion, if directory is empty, remove it (respecting dry-run) + if [ -z "$(ls -A "$item")" ]; then + if [ "$DRY_RUN" -eq 1 ]; then + log "Would remove empty directory: $rel_path" + else + rmdir -- "$item" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Removed empty directory: $rel_path" + fi + fi + else + # Directory contains no preserved files anywhere deep: remove/move entire directory + perform_action "$item" + fi + continue + fi + done + + # Restore defaults for shopt to avoid side effects if function is reused + shopt -u dotglob nullglob +} + +# --- MAIN --- + +# Parse flags +while [[ $# -gt 0 ]]; do + case $1 in + --dry-run) DRY_RUN=1 ;; + --force) FORCE=1 ;; + *) echo "Unknown parameter: $1"; exit 1 ;; + esac + shift +done + +# Initialize/Clear the log file for this new run +: > "$LOG_FILE" + +# Confirmation prompt (skip when dry-run) +if [ "$DRY_RUN" -eq 1 ]; then + log "Dry run enabled, nothing will be removed." +else + read -p "This will delete all files except preserved ones. Proceed? [y/n]: " confirm + case "$confirm" in + [yY][eE][sS]|[yY]) ;; + *) log "Cleanup aborted."; exit 0 ;; + esac +fi + +if [ "$FORCE" -eq 1 ] && [ "$DRY_RUN" -eq 1 ]; then + log "Ignoring --force." + FORCE=0 +fi + +log "Starting cleanup..." + + +if [ "$FORCE" -eq 1 ]; then + remove_existing_backups_permanently +fi + +recursive_cleanup "$ROOT_DIR" + +if [ "$DELETED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" +else + FILE_STR="files" + DIRECTORY_STR="directories" +fi + +OUTPUT_STR="" + +# Output if FORCE +if [ "$FORCE" -eq 1 ]; then + OUTPUT_STR="Deleted $DELETED_COUNT $FILE_STR or $DIRECTORY_STR. " +fi + +if [ "$DRY_RUN" -eq 1 ]; then + OUTPUT_STR="Dry-run completed successfully." +else + OUTPUT_STR="${OUTPUT_STR}Cleanup completed successfully." +fi + +# Only append the backup message if we actually moved files (MOVED_COUNT > 0) +if [ "$MOVED_COUNT" -gt 0 ]; then + # Correct wording + if [ "$MOVED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" + else + FILE_STR="files" + DIRECTORY_STR="directories" + fi + OUTPUT_STR="$OUTPUT_STR Backed up $MOVED_COUNT deleted $FILE_STR or $DIRECTORY_STR in '$BACKUP_DIR'." +fi + +log "$OUTPUT_STR" \ No newline at end of file diff --git a/examples/multi-coupling/_generated/fluid-bottom-openfoam/adapter-config.json b/examples/multi-coupling/_generated/fluid-bottom-openfoam/adapter-config.json new file mode 100644 index 0000000..2a97c25 --- /dev/null +++ b/examples/multi-coupling/_generated/fluid-bottom-openfoam/adapter-config.json @@ -0,0 +1,24 @@ +{ + "participant_name": "Fluid-Bottom", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "Fluid-Bottom-Extensive-Mesh", + "patches": [ + "surface-extensive" + ], + "read_data_names": [ + "HeatTransfer-Bottom" + ] + }, + { + "mesh_name": "Fluid-Bottom-Intensive-Mesh", + "patches": [ + "surface-intensive" + ], + "write_data_names": [ + "Temperature-Bottom" + ] + } + ] +} \ No newline at end of file diff --git a/examples/multi-coupling/_generated/fluid-bottom-openfoam/run.sh b/examples/multi-coupling/_generated/fluid-bottom-openfoam/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/examples/multi-coupling/_generated/fluid-bottom-openfoam/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/examples/multi-coupling/_generated/fluid-top-openfoam/adapter-config.json b/examples/multi-coupling/_generated/fluid-top-openfoam/adapter-config.json new file mode 100644 index 0000000..884ac87 --- /dev/null +++ b/examples/multi-coupling/_generated/fluid-top-openfoam/adapter-config.json @@ -0,0 +1,24 @@ +{ + "participant_name": "Fluid-Top", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "Fluid-Top-Extensive-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "HeatTransfer-Top" + ] + }, + { + "mesh_name": "Fluid-Top-Intensive-Mesh", + "patches": [ + "surface" + ], + "write_data_names": [ + "Temperature-Top" + ] + } + ] +} \ No newline at end of file diff --git a/examples/multi-coupling/_generated/fluid-top-openfoam/run.sh b/examples/multi-coupling/_generated/fluid-top-openfoam/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/examples/multi-coupling/_generated/fluid-top-openfoam/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/examples/multi-coupling/_generated/precice-config.xml b/examples/multi-coupling/_generated/precice-config.xml new file mode 100644 index 0000000..5543221 --- /dev/null +++ b/examples/multi-coupling/_generated/precice-config.xml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/multi-coupling/_generated/solid-calculix/adapter-config.json b/examples/multi-coupling/_generated/solid-calculix/adapter-config.json new file mode 100644 index 0000000..a8070c7 --- /dev/null +++ b/examples/multi-coupling/_generated/solid-calculix/adapter-config.json @@ -0,0 +1,42 @@ +{ + "participant_name": "Solid", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "Solid-Fluid-Top-Extensive-Mesh", + "patches": [ + "surface" + ], + "write_data_names": [ + "HeatTransfer-Top" + ] + }, + { + "mesh_name": "Solid-Fluid-Top-Intensive-Mesh", + "patches": [ + "interface-intensive" + ], + "read_data_names": [ + "Temperature-Top" + ] + }, + { + "mesh_name": "Solid-Fluid-Bottom-Extensive-Mesh", + "patches": [ + "interface-extensive" + ], + "write_data_names": [ + "HeatTransfer-Bottom" + ] + }, + { + "mesh_name": "Solid-Fluid-Bottom-Intensive-Mesh", + "patches": [ + "interface-intensive" + ], + "read_data_names": [ + "Temperature-Bottom" + ] + } + ] +} \ No newline at end of file diff --git a/examples/multi-coupling/_generated/solid-calculix/run.sh b/examples/multi-coupling/_generated/solid-calculix/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/examples/multi-coupling/_generated/solid-calculix/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/examples/strong-coupling/_generated/README.md b/examples/strong-coupling/_generated/README.md new file mode 100644 index 0000000..b915599 --- /dev/null +++ b/examples/strong-coupling/_generated/README.md @@ -0,0 +1,78 @@ +# Multiphysics Simulation Project + +> [!NOTE] This `README.md` file was auto-generated by preCICE case-generate. + + +--- + +## Project Overview + +This project uses **preCICE** for a multiphysics simulation involving: + +- Solver `SU2` with participant `Fluid` +- Solver `Calculix` with participant `Solid` + +### Project Structure + +Global files that are generated are: `precice-config.xml`, `README.md` and `clean.sh`. Additionally, for each participant, a folder with an `adapter-config.json` and a `run.sh` file are created. +The folder structure is as follows: + +``` +_generated/ + ├── README.md # This file + ├── clean.sh # Clean up script + ├──fluid-su2/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + ├──solid-calculix/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + └── precice-config.xml # Global precice-config.xml file +``` + + +- `precice-config.xml` is the global preCICE configuration file which defines the parameters and communication of participants +- `adapter-config.json` is a configuration file to couple the solvers with preCICE. +- `run.sh` is a script that is meant to execute a participant. Note, however, that since different solvers are executed differently, this file is not implemented yet. +- `clean.sh` removes any files in the current root directory that were not created by preCICE case-generate (and moves them to a backup folder). +Execution: + +```bash +./clean.sh [--force] [--dry-run] +``` + +- `--force` Deletes the files and any backup folders +- `--dry-run` Does not delete any files, but prints files that would be deleted + +--- + +## Prerequisites + +Before running the simulation, ensure you have the following installed: + +- The preCICE coupling library +- Solver `SU2` and its dependencies +- Solver `Calculix` and its dependencies + +--- + +## Running the Simulation + +### Quick Start + +```bash +# Navigate to the `_generated` folder +cd _generated/ + +# Implement the run script + +# Make the run script executable +chmod +x run.sh + +# Execute the simulation +./run.sh +``` + +--- + +For more information, see the [preCICE documentation](https://precice.org/docs.html) and [precice-case-generate](https://github.com/precice/case-generate). \ No newline at end of file diff --git a/examples/strong-coupling/_generated/clean.sh b/examples/strong-coupling/_generated/clean.sh new file mode 100644 index 0000000..2954b31 --- /dev/null +++ b/examples/strong-coupling/_generated/clean.sh @@ -0,0 +1,350 @@ +#!/usr/bin/env bash + +# ------------------------------------------------------------------- +# Script Name: clean.sh +# Description: Recursively deletes/moves files/dirs except: +# - Global preserved filenames anywhere (run.sh, adapter-config.json...) +# - Specific root files (README.md, precice-config.xml) +# Usage: ./clean.sh [--dry-run] [--force] +# --dry-run : show what would happen, don't remove/move +# --force : permanently delete unpreserved items AND remove existing backups +# ------------------------------------------------------------------- + +# Strict mode: +# -e: exit on error +# -u: exit on undefined variable +# -o pipefail: exit if any command in a pipe fails +set -euo pipefail + +# --- CONFIGURATION --- +ROOT_DIR="$(pwd)" +LOG_FILE="cleanup.log" +BACKUP_DIR="$ROOT_DIR/backup_$(date '+%Y%m%d_%H%M%S')" + +# 1. GLOBAL PRESERVES: filenames to keep anywhere in the tree +GLOBAL_PRESERVE_NAMES=( + "run.sh" + "adapter-config.json" +) + +# 2. ROOT PRESERVES: filenames to keep only if in ROOT_DIR +ROOT_PRESERVE_PATHS=( + "clean.sh" + "README.md" + "precice-config.xml" + "$LOG_FILE" # always keep the log (will be overwritten) +) + +# --- DEFAULTS --- +DRY_RUN=0 # No dry-run by default +FORCE=0 # No permanent removal of files by default +MOVED_COUNT=0 # Counter to track if we actually backed anything up +DELETED_COUNT=0 # Counter to track if we actually deleted anything + +# --- HELPERS --- + +log() { + # We use tee -a (append) here so we don't overwrite previous lines *of this run*. + # The file is cleared once at the start of the MAIN block. + echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE" +} + +# Is filename (basename) a global preserved name? +is_global_preserved() { + local filename="$1" + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [[ "$filename" == "$name" ]]; then + return 0 + fi + done + return 1 +} + +# Is a relative path preserved at root? +is_root_preserved() { + local relpath="$1" + for p in "${ROOT_PRESERVE_PATHS[@]}"; do + if [[ "$relpath" == "$p" ]]; then + return 0 + fi + done + return 1 +} + +# Find out whether directory contains any preserved file *anywhere* under it. +# Implementation Note: Uses `head -n 1` instead of `-quit` for maximum compatibility +# across all Linux distros (including Alpine/BusyBox) and BSD/MacOS. +dir_contains_preserved_content() { + local dir="$1" + local name + local -a find_args=() + + # Build find arguments: ( -name A -o -name B ... ) + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [ ${#find_args[@]} -eq 0 ]; then + find_args+=( -name "$name" ) + else + find_args+=( -o -name "$name" ) + fi + done + + # Check if find returns any match. + # piping to head -n 1 causes find to receive SIGPIPE and stop early if a match is found. + if [ -n "$(find "$dir" \( "${find_args[@]}" \) -print 2>/dev/null | head -n 1)" ]; then + return 0 + fi + return 1 +} + +# Ensure backup destination exists and safely move source there preserving relative path. +# Prevents collisions by making unique names if needed. +# Args: +# $1 = absolute src path +# $2 = rel path relative to ROOT_DIR (used to recreate path inside backup) +safe_move_to_backup() { + local src="$1" + local rel="$2" + + # Destination path = $BACKUP_DIR/$rel + local dest="$BACKUP_DIR/$rel" + local dest_dir + dest_dir="$(dirname "$dest")" + + # Normalize: if dirname is ".", use $BACKUP_DIR as target dir + if [[ "$dest_dir" == "$BACKUP_DIR/." ]] || [[ "$dest_dir" == "." ]]; then + dest_dir="$BACKUP_DIR" + fi + + if [ "$DRY_RUN" -eq 0 ]; then + mkdir -p "$dest_dir" + fi + + # If dest exists, append numeric suffix before extension to avoid overwrite + if [ -e "$dest" ]; then + local base name ext candidate n + base="$(basename "$dest")" + name="${base%.*}" + ext="${base##*.}" + n=1 + + # Check if file has an extension + if [[ "$ext" == "$base" ]]; then + # No extension + candidate="$dest_dir/${name}_$n" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n" + done + else + # Has extension + candidate="$dest_dir/${name}_$n.$ext" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n.$ext" + done + fi + dest="$candidate" + fi + + if [ "$DRY_RUN" -eq 1 ]; then + log "Would be deleted: ${rel}" + else + mv -- "$src" "$dest" + # Increment the counter because we successfully moved a file + MOVED_COUNT=$((MOVED_COUNT + 1)) + log "Deleted: ${rel}" + fi +} + +# Safe remove (used by --force). Respects --dry-run. +safe_remove() { + local src="$1" + local rel="$2" + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove: $rel" + else + rm -rf -- "$src" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed: $rel" + fi +} + +# Remove existing backup_* directories permanently (used when FORCE=1). +remove_existing_backups_permanently() { + shopt -s nullglob + local found=0 + for old in "$ROOT_DIR"/backup_*; do + if [ -d "$old" ]; then + found=1 + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove backup: $(basename "$old")" + else + rm -rf -- "$old" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed backup: $(basename "$old")" + fi + fi + done + shopt -u nullglob + if [ "$found" -eq 0 ]; then + log "No existing backup directories to remove." + fi +} + +# Perform action for a single path (file or directory) that is NOT preserved. +# Moves to backup preserving tree, or removes permanently when FORCE=1. +perform_action() { + local item="$1" + local rel_path="${item#$ROOT_DIR/}" + + if [ "$FORCE" -eq 1 ]; then + safe_remove "$item" "$rel_path" + else + safe_move_to_backup "$item" "$rel_path" + fi +} + +# --- RECURSIVE CLEANUP --- +recursive_cleanup() { + local current_dir="$1" + + # dotglob: includes hidden files (starting with .) + # nullglob: makes the loop not run if no files match (avoids literal string issues) + shopt -s dotglob nullglob + + local item rel_path base + + for item in "$current_dir"/*; do + # Sanity check: ensure file exists (handles rare race conditions or broken links) + [ ! -e "$item" ] && [ ! -L "$item" ] && continue + + rel_path="${item#$ROOT_DIR/}" + base="$(basename "$item")" + + # Skip . and .. (though glob usually excludes them, safety first) + if [[ "$base" == "." || "$base" == ".." ]]; then + continue + fi + + # --- FILE or SYMLINK --- + if [ -f "$item" ] || [ -L "$item" ]; then + # 1. Preserve by global name anywhere? + if is_global_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # 2. Preserve if at root and matches root-preserve list? + if [[ "$current_dir" == "$ROOT_DIR" ]] && is_root_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # Otherwise: perform action + perform_action "$item" + continue + fi + + # --- DIRECTORY --- + if [ -d "$item" ]; then + # Check if dir contains any preserved content anywhere below + if dir_contains_preserved_content "$item"; then + recursive_cleanup "$item" + + # After recursion, if directory is empty, remove it (respecting dry-run) + if [ -z "$(ls -A "$item")" ]; then + if [ "$DRY_RUN" -eq 1 ]; then + log "Would remove empty directory: $rel_path" + else + rmdir -- "$item" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Removed empty directory: $rel_path" + fi + fi + else + # Directory contains no preserved files anywhere deep: remove/move entire directory + perform_action "$item" + fi + continue + fi + done + + # Restore defaults for shopt to avoid side effects if function is reused + shopt -u dotglob nullglob +} + +# --- MAIN --- + +# Parse flags +while [[ $# -gt 0 ]]; do + case $1 in + --dry-run) DRY_RUN=1 ;; + --force) FORCE=1 ;; + *) echo "Unknown parameter: $1"; exit 1 ;; + esac + shift +done + +# Initialize/Clear the log file for this new run +: > "$LOG_FILE" + +# Confirmation prompt (skip when dry-run) +if [ "$DRY_RUN" -eq 1 ]; then + log "Dry run enabled, nothing will be removed." +else + read -p "This will delete all files except preserved ones. Proceed? [y/n]: " confirm + case "$confirm" in + [yY][eE][sS]|[yY]) ;; + *) log "Cleanup aborted."; exit 0 ;; + esac +fi + +if [ "$FORCE" -eq 1 ] && [ "$DRY_RUN" -eq 1 ]; then + log "Ignoring --force." + FORCE=0 +fi + +log "Starting cleanup..." + + +if [ "$FORCE" -eq 1 ]; then + remove_existing_backups_permanently +fi + +recursive_cleanup "$ROOT_DIR" + +if [ "$DELETED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" +else + FILE_STR="files" + DIRECTORY_STR="directories" +fi + +OUTPUT_STR="" + +# Output if FORCE +if [ "$FORCE" -eq 1 ]; then + OUTPUT_STR="Deleted $DELETED_COUNT $FILE_STR or $DIRECTORY_STR. " +fi + +if [ "$DRY_RUN" -eq 1 ]; then + OUTPUT_STR="Dry-run completed successfully." +else + OUTPUT_STR="${OUTPUT_STR}Cleanup completed successfully." +fi + +# Only append the backup message if we actually moved files (MOVED_COUNT > 0) +if [ "$MOVED_COUNT" -gt 0 ]; then + # Correct wording + if [ "$MOVED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" + else + FILE_STR="files" + DIRECTORY_STR="directories" + fi + OUTPUT_STR="$OUTPUT_STR Backed up $MOVED_COUNT deleted $FILE_STR or $DIRECTORY_STR in '$BACKUP_DIR'." +fi + +log "$OUTPUT_STR" \ No newline at end of file diff --git a/examples/strong-coupling/_generated/fluid-su2/adapter-config.json b/examples/strong-coupling/_generated/fluid-su2/adapter-config.json new file mode 100644 index 0000000..bc5bc0b --- /dev/null +++ b/examples/strong-coupling/_generated/fluid-su2/adapter-config.json @@ -0,0 +1,18 @@ +{ + "participant_name": "Fluid", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "Fluid-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Displacement" + ], + "write_data_names": [ + "Force" + ] + } + ] +} \ No newline at end of file diff --git a/examples/strong-coupling/_generated/fluid-su2/run.sh b/examples/strong-coupling/_generated/fluid-su2/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/examples/strong-coupling/_generated/fluid-su2/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/examples/strong-coupling/_generated/precice-config.xml b/examples/strong-coupling/_generated/precice-config.xml new file mode 100644 index 0000000..8b8abeb --- /dev/null +++ b/examples/strong-coupling/_generated/precice-config.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/strong-coupling/_generated/solid-calculix/adapter-config.json b/examples/strong-coupling/_generated/solid-calculix/adapter-config.json new file mode 100644 index 0000000..7f96532 --- /dev/null +++ b/examples/strong-coupling/_generated/solid-calculix/adapter-config.json @@ -0,0 +1,18 @@ +{ + "participant_name": "Solid", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "Solid-Mesh", + "patches": [ + "surface" + ], + "read_data_names": [ + "Force" + ], + "write_data_names": [ + "Displacement" + ] + } + ] +} \ No newline at end of file diff --git a/examples/strong-coupling/_generated/solid-calculix/run.sh b/examples/strong-coupling/_generated/solid-calculix/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/examples/strong-coupling/_generated/solid-calculix/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/examples/tutorial1/_generated/README.md b/examples/tutorial1/_generated/README.md new file mode 100644 index 0000000..5662797 --- /dev/null +++ b/examples/tutorial1/_generated/README.md @@ -0,0 +1,78 @@ +# Multiphysics Simulation Project + +> [!NOTE] This `README.md` file was auto-generated by preCICE case-generate. + + +--- + +## Project Overview + +This project uses **preCICE** for a multiphysics simulation involving: + +- Solver `ASolver` with participant `Generator` +- Solver `BSolver` with participant `Propagator` + +### Project Structure + +Global files that are generated are: `precice-config.xml`, `README.md` and `clean.sh`. Additionally, for each participant, a folder with an `adapter-config.json` and a `run.sh` file are created. +The folder structure is as follows: + +``` +_generated/ + ├── README.md # This file + ├── clean.sh # Clean up script + ├──generator-asolver/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + ├──propagator-bsolver/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + └── precice-config.xml # Global precice-config.xml file +``` + + +- `precice-config.xml` is the global preCICE configuration file which defines the parameters and communication of participants +- `adapter-config.json` is a configuration file to couple the solvers with preCICE. +- `run.sh` is a script that is meant to execute a participant. Note, however, that since different solvers are executed differently, this file is not implemented yet. +- `clean.sh` removes any files in the current root directory that were not created by preCICE case-generate (and moves them to a backup folder). +Execution: + +```bash +./clean.sh [--force] [--dry-run] +``` + +- `--force` Deletes the files and any backup folders +- `--dry-run` Does not delete any files, but prints files that would be deleted + +--- + +## Prerequisites + +Before running the simulation, ensure you have the following installed: + +- The preCICE coupling library +- Solver `ASolver` and its dependencies +- Solver `BSolver` and its dependencies + +--- + +## Running the Simulation + +### Quick Start + +```bash +# Navigate to the `_generated` folder +cd _generated/ + +# Implement the run script + +# Make the run script executable +chmod +x run.sh + +# Execute the simulation +./run.sh +``` + +--- + +For more information, see the [preCICE documentation](https://precice.org/docs.html) and [precice-case-generate](https://github.com/precice/case-generate). \ No newline at end of file diff --git a/examples/tutorial1/_generated/clean.sh b/examples/tutorial1/_generated/clean.sh new file mode 100644 index 0000000..2954b31 --- /dev/null +++ b/examples/tutorial1/_generated/clean.sh @@ -0,0 +1,350 @@ +#!/usr/bin/env bash + +# ------------------------------------------------------------------- +# Script Name: clean.sh +# Description: Recursively deletes/moves files/dirs except: +# - Global preserved filenames anywhere (run.sh, adapter-config.json...) +# - Specific root files (README.md, precice-config.xml) +# Usage: ./clean.sh [--dry-run] [--force] +# --dry-run : show what would happen, don't remove/move +# --force : permanently delete unpreserved items AND remove existing backups +# ------------------------------------------------------------------- + +# Strict mode: +# -e: exit on error +# -u: exit on undefined variable +# -o pipefail: exit if any command in a pipe fails +set -euo pipefail + +# --- CONFIGURATION --- +ROOT_DIR="$(pwd)" +LOG_FILE="cleanup.log" +BACKUP_DIR="$ROOT_DIR/backup_$(date '+%Y%m%d_%H%M%S')" + +# 1. GLOBAL PRESERVES: filenames to keep anywhere in the tree +GLOBAL_PRESERVE_NAMES=( + "run.sh" + "adapter-config.json" +) + +# 2. ROOT PRESERVES: filenames to keep only if in ROOT_DIR +ROOT_PRESERVE_PATHS=( + "clean.sh" + "README.md" + "precice-config.xml" + "$LOG_FILE" # always keep the log (will be overwritten) +) + +# --- DEFAULTS --- +DRY_RUN=0 # No dry-run by default +FORCE=0 # No permanent removal of files by default +MOVED_COUNT=0 # Counter to track if we actually backed anything up +DELETED_COUNT=0 # Counter to track if we actually deleted anything + +# --- HELPERS --- + +log() { + # We use tee -a (append) here so we don't overwrite previous lines *of this run*. + # The file is cleared once at the start of the MAIN block. + echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE" +} + +# Is filename (basename) a global preserved name? +is_global_preserved() { + local filename="$1" + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [[ "$filename" == "$name" ]]; then + return 0 + fi + done + return 1 +} + +# Is a relative path preserved at root? +is_root_preserved() { + local relpath="$1" + for p in "${ROOT_PRESERVE_PATHS[@]}"; do + if [[ "$relpath" == "$p" ]]; then + return 0 + fi + done + return 1 +} + +# Find out whether directory contains any preserved file *anywhere* under it. +# Implementation Note: Uses `head -n 1` instead of `-quit` for maximum compatibility +# across all Linux distros (including Alpine/BusyBox) and BSD/MacOS. +dir_contains_preserved_content() { + local dir="$1" + local name + local -a find_args=() + + # Build find arguments: ( -name A -o -name B ... ) + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [ ${#find_args[@]} -eq 0 ]; then + find_args+=( -name "$name" ) + else + find_args+=( -o -name "$name" ) + fi + done + + # Check if find returns any match. + # piping to head -n 1 causes find to receive SIGPIPE and stop early if a match is found. + if [ -n "$(find "$dir" \( "${find_args[@]}" \) -print 2>/dev/null | head -n 1)" ]; then + return 0 + fi + return 1 +} + +# Ensure backup destination exists and safely move source there preserving relative path. +# Prevents collisions by making unique names if needed. +# Args: +# $1 = absolute src path +# $2 = rel path relative to ROOT_DIR (used to recreate path inside backup) +safe_move_to_backup() { + local src="$1" + local rel="$2" + + # Destination path = $BACKUP_DIR/$rel + local dest="$BACKUP_DIR/$rel" + local dest_dir + dest_dir="$(dirname "$dest")" + + # Normalize: if dirname is ".", use $BACKUP_DIR as target dir + if [[ "$dest_dir" == "$BACKUP_DIR/." ]] || [[ "$dest_dir" == "." ]]; then + dest_dir="$BACKUP_DIR" + fi + + if [ "$DRY_RUN" -eq 0 ]; then + mkdir -p "$dest_dir" + fi + + # If dest exists, append numeric suffix before extension to avoid overwrite + if [ -e "$dest" ]; then + local base name ext candidate n + base="$(basename "$dest")" + name="${base%.*}" + ext="${base##*.}" + n=1 + + # Check if file has an extension + if [[ "$ext" == "$base" ]]; then + # No extension + candidate="$dest_dir/${name}_$n" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n" + done + else + # Has extension + candidate="$dest_dir/${name}_$n.$ext" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n.$ext" + done + fi + dest="$candidate" + fi + + if [ "$DRY_RUN" -eq 1 ]; then + log "Would be deleted: ${rel}" + else + mv -- "$src" "$dest" + # Increment the counter because we successfully moved a file + MOVED_COUNT=$((MOVED_COUNT + 1)) + log "Deleted: ${rel}" + fi +} + +# Safe remove (used by --force). Respects --dry-run. +safe_remove() { + local src="$1" + local rel="$2" + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove: $rel" + else + rm -rf -- "$src" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed: $rel" + fi +} + +# Remove existing backup_* directories permanently (used when FORCE=1). +remove_existing_backups_permanently() { + shopt -s nullglob + local found=0 + for old in "$ROOT_DIR"/backup_*; do + if [ -d "$old" ]; then + found=1 + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove backup: $(basename "$old")" + else + rm -rf -- "$old" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed backup: $(basename "$old")" + fi + fi + done + shopt -u nullglob + if [ "$found" -eq 0 ]; then + log "No existing backup directories to remove." + fi +} + +# Perform action for a single path (file or directory) that is NOT preserved. +# Moves to backup preserving tree, or removes permanently when FORCE=1. +perform_action() { + local item="$1" + local rel_path="${item#$ROOT_DIR/}" + + if [ "$FORCE" -eq 1 ]; then + safe_remove "$item" "$rel_path" + else + safe_move_to_backup "$item" "$rel_path" + fi +} + +# --- RECURSIVE CLEANUP --- +recursive_cleanup() { + local current_dir="$1" + + # dotglob: includes hidden files (starting with .) + # nullglob: makes the loop not run if no files match (avoids literal string issues) + shopt -s dotglob nullglob + + local item rel_path base + + for item in "$current_dir"/*; do + # Sanity check: ensure file exists (handles rare race conditions or broken links) + [ ! -e "$item" ] && [ ! -L "$item" ] && continue + + rel_path="${item#$ROOT_DIR/}" + base="$(basename "$item")" + + # Skip . and .. (though glob usually excludes them, safety first) + if [[ "$base" == "." || "$base" == ".." ]]; then + continue + fi + + # --- FILE or SYMLINK --- + if [ -f "$item" ] || [ -L "$item" ]; then + # 1. Preserve by global name anywhere? + if is_global_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # 2. Preserve if at root and matches root-preserve list? + if [[ "$current_dir" == "$ROOT_DIR" ]] && is_root_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # Otherwise: perform action + perform_action "$item" + continue + fi + + # --- DIRECTORY --- + if [ -d "$item" ]; then + # Check if dir contains any preserved content anywhere below + if dir_contains_preserved_content "$item"; then + recursive_cleanup "$item" + + # After recursion, if directory is empty, remove it (respecting dry-run) + if [ -z "$(ls -A "$item")" ]; then + if [ "$DRY_RUN" -eq 1 ]; then + log "Would remove empty directory: $rel_path" + else + rmdir -- "$item" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Removed empty directory: $rel_path" + fi + fi + else + # Directory contains no preserved files anywhere deep: remove/move entire directory + perform_action "$item" + fi + continue + fi + done + + # Restore defaults for shopt to avoid side effects if function is reused + shopt -u dotglob nullglob +} + +# --- MAIN --- + +# Parse flags +while [[ $# -gt 0 ]]; do + case $1 in + --dry-run) DRY_RUN=1 ;; + --force) FORCE=1 ;; + *) echo "Unknown parameter: $1"; exit 1 ;; + esac + shift +done + +# Initialize/Clear the log file for this new run +: > "$LOG_FILE" + +# Confirmation prompt (skip when dry-run) +if [ "$DRY_RUN" -eq 1 ]; then + log "Dry run enabled, nothing will be removed." +else + read -p "This will delete all files except preserved ones. Proceed? [y/n]: " confirm + case "$confirm" in + [yY][eE][sS]|[yY]) ;; + *) log "Cleanup aborted."; exit 0 ;; + esac +fi + +if [ "$FORCE" -eq 1 ] && [ "$DRY_RUN" -eq 1 ]; then + log "Ignoring --force." + FORCE=0 +fi + +log "Starting cleanup..." + + +if [ "$FORCE" -eq 1 ]; then + remove_existing_backups_permanently +fi + +recursive_cleanup "$ROOT_DIR" + +if [ "$DELETED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" +else + FILE_STR="files" + DIRECTORY_STR="directories" +fi + +OUTPUT_STR="" + +# Output if FORCE +if [ "$FORCE" -eq 1 ]; then + OUTPUT_STR="Deleted $DELETED_COUNT $FILE_STR or $DIRECTORY_STR. " +fi + +if [ "$DRY_RUN" -eq 1 ]; then + OUTPUT_STR="Dry-run completed successfully." +else + OUTPUT_STR="${OUTPUT_STR}Cleanup completed successfully." +fi + +# Only append the backup message if we actually moved files (MOVED_COUNT > 0) +if [ "$MOVED_COUNT" -gt 0 ]; then + # Correct wording + if [ "$MOVED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" + else + FILE_STR="files" + DIRECTORY_STR="directories" + fi + OUTPUT_STR="$OUTPUT_STR Backed up $MOVED_COUNT deleted $FILE_STR or $DIRECTORY_STR in '$BACKUP_DIR'." +fi + +log "$OUTPUT_STR" \ No newline at end of file diff --git a/examples/tutorial1/_generated/generator-asolver/adapter-config.json b/examples/tutorial1/_generated/generator-asolver/adapter-config.json new file mode 100644 index 0000000..84de0ac --- /dev/null +++ b/examples/tutorial1/_generated/generator-asolver/adapter-config.json @@ -0,0 +1,15 @@ +{ + "participant_name": "Generator", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "Generator-Mesh", + "patches": [ + "interface" + ], + "write_data_names": [ + "Color" + ] + } + ] +} \ No newline at end of file diff --git a/examples/tutorial1/_generated/generator-asolver/run.sh b/examples/tutorial1/_generated/generator-asolver/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/examples/tutorial1/_generated/generator-asolver/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/examples/tutorial1/_generated/precice-config.xml b/examples/tutorial1/_generated/precice-config.xml new file mode 100644 index 0000000..3ba986e --- /dev/null +++ b/examples/tutorial1/_generated/precice-config.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/tutorial1/_generated/propagator-bsolver/adapter-config.json b/examples/tutorial1/_generated/propagator-bsolver/adapter-config.json new file mode 100644 index 0000000..390d7fc --- /dev/null +++ b/examples/tutorial1/_generated/propagator-bsolver/adapter-config.json @@ -0,0 +1,15 @@ +{ + "participant_name": "Propagator", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "Propagator-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Color" + ] + } + ] +} \ No newline at end of file diff --git a/examples/tutorial1/_generated/propagator-bsolver/run.sh b/examples/tutorial1/_generated/propagator-bsolver/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/examples/tutorial1/_generated/propagator-bsolver/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/examples/tutorial2/_generated/README.md b/examples/tutorial2/_generated/README.md new file mode 100644 index 0000000..891ce73 --- /dev/null +++ b/examples/tutorial2/_generated/README.md @@ -0,0 +1,83 @@ +# Multiphysics Simulation Project + +> [!NOTE] This `README.md` file was auto-generated by preCICE case-generate. + + +--- + +## Project Overview + +This project uses **preCICE** for a multiphysics simulation involving: + +- Solver `ASolver` with participant `Generator-Left` +- Solver `ASolver` with participant `Generator-Right` +- Solver `BSolver` with participant `Propagator` + +### Project Structure + +Global files that are generated are: `precice-config.xml`, `README.md` and `clean.sh`. Additionally, for each participant, a folder with an `adapter-config.json` and a `run.sh` file are created. +The folder structure is as follows: + +``` +_generated/ + ├── README.md # This file + ├── clean.sh # Clean up script + ├──generator-left-asolver/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + ├──generator-right-asolver/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + ├──propagator-bsolver/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + └── precice-config.xml # Global precice-config.xml file +``` + + +- `precice-config.xml` is the global preCICE configuration file which defines the parameters and communication of participants +- `adapter-config.json` is a configuration file to couple the solvers with preCICE. +- `run.sh` is a script that is meant to execute a participant. Note, however, that since different solvers are executed differently, this file is not implemented yet. +- `clean.sh` removes any files in the current root directory that were not created by preCICE case-generate (and moves them to a backup folder). +Execution: + +```bash +./clean.sh [--force] [--dry-run] +``` + +- `--force` Deletes the files and any backup folders +- `--dry-run` Does not delete any files, but prints files that would be deleted + +--- + +## Prerequisites + +Before running the simulation, ensure you have the following installed: + +- The preCICE coupling library +- Solver `ASolver` and its dependencies +- Solver `ASolver` and its dependencies +- Solver `BSolver` and its dependencies + +--- + +## Running the Simulation + +### Quick Start + +```bash +# Navigate to the `_generated` folder +cd _generated/ + +# Implement the run script + +# Make the run script executable +chmod +x run.sh + +# Execute the simulation +./run.sh +``` + +--- + +For more information, see the [preCICE documentation](https://precice.org/docs.html) and [precice-case-generate](https://github.com/precice/case-generate). \ No newline at end of file diff --git a/examples/tutorial2/_generated/clean.sh b/examples/tutorial2/_generated/clean.sh new file mode 100644 index 0000000..2954b31 --- /dev/null +++ b/examples/tutorial2/_generated/clean.sh @@ -0,0 +1,350 @@ +#!/usr/bin/env bash + +# ------------------------------------------------------------------- +# Script Name: clean.sh +# Description: Recursively deletes/moves files/dirs except: +# - Global preserved filenames anywhere (run.sh, adapter-config.json...) +# - Specific root files (README.md, precice-config.xml) +# Usage: ./clean.sh [--dry-run] [--force] +# --dry-run : show what would happen, don't remove/move +# --force : permanently delete unpreserved items AND remove existing backups +# ------------------------------------------------------------------- + +# Strict mode: +# -e: exit on error +# -u: exit on undefined variable +# -o pipefail: exit if any command in a pipe fails +set -euo pipefail + +# --- CONFIGURATION --- +ROOT_DIR="$(pwd)" +LOG_FILE="cleanup.log" +BACKUP_DIR="$ROOT_DIR/backup_$(date '+%Y%m%d_%H%M%S')" + +# 1. GLOBAL PRESERVES: filenames to keep anywhere in the tree +GLOBAL_PRESERVE_NAMES=( + "run.sh" + "adapter-config.json" +) + +# 2. ROOT PRESERVES: filenames to keep only if in ROOT_DIR +ROOT_PRESERVE_PATHS=( + "clean.sh" + "README.md" + "precice-config.xml" + "$LOG_FILE" # always keep the log (will be overwritten) +) + +# --- DEFAULTS --- +DRY_RUN=0 # No dry-run by default +FORCE=0 # No permanent removal of files by default +MOVED_COUNT=0 # Counter to track if we actually backed anything up +DELETED_COUNT=0 # Counter to track if we actually deleted anything + +# --- HELPERS --- + +log() { + # We use tee -a (append) here so we don't overwrite previous lines *of this run*. + # The file is cleared once at the start of the MAIN block. + echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE" +} + +# Is filename (basename) a global preserved name? +is_global_preserved() { + local filename="$1" + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [[ "$filename" == "$name" ]]; then + return 0 + fi + done + return 1 +} + +# Is a relative path preserved at root? +is_root_preserved() { + local relpath="$1" + for p in "${ROOT_PRESERVE_PATHS[@]}"; do + if [[ "$relpath" == "$p" ]]; then + return 0 + fi + done + return 1 +} + +# Find out whether directory contains any preserved file *anywhere* under it. +# Implementation Note: Uses `head -n 1` instead of `-quit` for maximum compatibility +# across all Linux distros (including Alpine/BusyBox) and BSD/MacOS. +dir_contains_preserved_content() { + local dir="$1" + local name + local -a find_args=() + + # Build find arguments: ( -name A -o -name B ... ) + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [ ${#find_args[@]} -eq 0 ]; then + find_args+=( -name "$name" ) + else + find_args+=( -o -name "$name" ) + fi + done + + # Check if find returns any match. + # piping to head -n 1 causes find to receive SIGPIPE and stop early if a match is found. + if [ -n "$(find "$dir" \( "${find_args[@]}" \) -print 2>/dev/null | head -n 1)" ]; then + return 0 + fi + return 1 +} + +# Ensure backup destination exists and safely move source there preserving relative path. +# Prevents collisions by making unique names if needed. +# Args: +# $1 = absolute src path +# $2 = rel path relative to ROOT_DIR (used to recreate path inside backup) +safe_move_to_backup() { + local src="$1" + local rel="$2" + + # Destination path = $BACKUP_DIR/$rel + local dest="$BACKUP_DIR/$rel" + local dest_dir + dest_dir="$(dirname "$dest")" + + # Normalize: if dirname is ".", use $BACKUP_DIR as target dir + if [[ "$dest_dir" == "$BACKUP_DIR/." ]] || [[ "$dest_dir" == "." ]]; then + dest_dir="$BACKUP_DIR" + fi + + if [ "$DRY_RUN" -eq 0 ]; then + mkdir -p "$dest_dir" + fi + + # If dest exists, append numeric suffix before extension to avoid overwrite + if [ -e "$dest" ]; then + local base name ext candidate n + base="$(basename "$dest")" + name="${base%.*}" + ext="${base##*.}" + n=1 + + # Check if file has an extension + if [[ "$ext" == "$base" ]]; then + # No extension + candidate="$dest_dir/${name}_$n" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n" + done + else + # Has extension + candidate="$dest_dir/${name}_$n.$ext" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n.$ext" + done + fi + dest="$candidate" + fi + + if [ "$DRY_RUN" -eq 1 ]; then + log "Would be deleted: ${rel}" + else + mv -- "$src" "$dest" + # Increment the counter because we successfully moved a file + MOVED_COUNT=$((MOVED_COUNT + 1)) + log "Deleted: ${rel}" + fi +} + +# Safe remove (used by --force). Respects --dry-run. +safe_remove() { + local src="$1" + local rel="$2" + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove: $rel" + else + rm -rf -- "$src" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed: $rel" + fi +} + +# Remove existing backup_* directories permanently (used when FORCE=1). +remove_existing_backups_permanently() { + shopt -s nullglob + local found=0 + for old in "$ROOT_DIR"/backup_*; do + if [ -d "$old" ]; then + found=1 + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove backup: $(basename "$old")" + else + rm -rf -- "$old" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed backup: $(basename "$old")" + fi + fi + done + shopt -u nullglob + if [ "$found" -eq 0 ]; then + log "No existing backup directories to remove." + fi +} + +# Perform action for a single path (file or directory) that is NOT preserved. +# Moves to backup preserving tree, or removes permanently when FORCE=1. +perform_action() { + local item="$1" + local rel_path="${item#$ROOT_DIR/}" + + if [ "$FORCE" -eq 1 ]; then + safe_remove "$item" "$rel_path" + else + safe_move_to_backup "$item" "$rel_path" + fi +} + +# --- RECURSIVE CLEANUP --- +recursive_cleanup() { + local current_dir="$1" + + # dotglob: includes hidden files (starting with .) + # nullglob: makes the loop not run if no files match (avoids literal string issues) + shopt -s dotglob nullglob + + local item rel_path base + + for item in "$current_dir"/*; do + # Sanity check: ensure file exists (handles rare race conditions or broken links) + [ ! -e "$item" ] && [ ! -L "$item" ] && continue + + rel_path="${item#$ROOT_DIR/}" + base="$(basename "$item")" + + # Skip . and .. (though glob usually excludes them, safety first) + if [[ "$base" == "." || "$base" == ".." ]]; then + continue + fi + + # --- FILE or SYMLINK --- + if [ -f "$item" ] || [ -L "$item" ]; then + # 1. Preserve by global name anywhere? + if is_global_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # 2. Preserve if at root and matches root-preserve list? + if [[ "$current_dir" == "$ROOT_DIR" ]] && is_root_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # Otherwise: perform action + perform_action "$item" + continue + fi + + # --- DIRECTORY --- + if [ -d "$item" ]; then + # Check if dir contains any preserved content anywhere below + if dir_contains_preserved_content "$item"; then + recursive_cleanup "$item" + + # After recursion, if directory is empty, remove it (respecting dry-run) + if [ -z "$(ls -A "$item")" ]; then + if [ "$DRY_RUN" -eq 1 ]; then + log "Would remove empty directory: $rel_path" + else + rmdir -- "$item" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Removed empty directory: $rel_path" + fi + fi + else + # Directory contains no preserved files anywhere deep: remove/move entire directory + perform_action "$item" + fi + continue + fi + done + + # Restore defaults for shopt to avoid side effects if function is reused + shopt -u dotglob nullglob +} + +# --- MAIN --- + +# Parse flags +while [[ $# -gt 0 ]]; do + case $1 in + --dry-run) DRY_RUN=1 ;; + --force) FORCE=1 ;; + *) echo "Unknown parameter: $1"; exit 1 ;; + esac + shift +done + +# Initialize/Clear the log file for this new run +: > "$LOG_FILE" + +# Confirmation prompt (skip when dry-run) +if [ "$DRY_RUN" -eq 1 ]; then + log "Dry run enabled, nothing will be removed." +else + read -p "This will delete all files except preserved ones. Proceed? [y/n]: " confirm + case "$confirm" in + [yY][eE][sS]|[yY]) ;; + *) log "Cleanup aborted."; exit 0 ;; + esac +fi + +if [ "$FORCE" -eq 1 ] && [ "$DRY_RUN" -eq 1 ]; then + log "Ignoring --force." + FORCE=0 +fi + +log "Starting cleanup..." + + +if [ "$FORCE" -eq 1 ]; then + remove_existing_backups_permanently +fi + +recursive_cleanup "$ROOT_DIR" + +if [ "$DELETED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" +else + FILE_STR="files" + DIRECTORY_STR="directories" +fi + +OUTPUT_STR="" + +# Output if FORCE +if [ "$FORCE" -eq 1 ]; then + OUTPUT_STR="Deleted $DELETED_COUNT $FILE_STR or $DIRECTORY_STR. " +fi + +if [ "$DRY_RUN" -eq 1 ]; then + OUTPUT_STR="Dry-run completed successfully." +else + OUTPUT_STR="${OUTPUT_STR}Cleanup completed successfully." +fi + +# Only append the backup message if we actually moved files (MOVED_COUNT > 0) +if [ "$MOVED_COUNT" -gt 0 ]; then + # Correct wording + if [ "$MOVED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" + else + FILE_STR="files" + DIRECTORY_STR="directories" + fi + OUTPUT_STR="$OUTPUT_STR Backed up $MOVED_COUNT deleted $FILE_STR or $DIRECTORY_STR in '$BACKUP_DIR'." +fi + +log "$OUTPUT_STR" \ No newline at end of file diff --git a/examples/tutorial2/_generated/generator-left-asolver/adapter-config.json b/examples/tutorial2/_generated/generator-left-asolver/adapter-config.json new file mode 100644 index 0000000..097022e --- /dev/null +++ b/examples/tutorial2/_generated/generator-left-asolver/adapter-config.json @@ -0,0 +1,15 @@ +{ + "participant_name": "Generator-Left", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "Generator-Left-Mesh", + "patches": [ + "interface" + ], + "write_data_names": [ + "Color" + ] + } + ] +} \ No newline at end of file diff --git a/examples/tutorial2/_generated/generator-left-asolver/run.sh b/examples/tutorial2/_generated/generator-left-asolver/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/examples/tutorial2/_generated/generator-left-asolver/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/examples/tutorial2/_generated/generator-right-asolver/adapter-config.json b/examples/tutorial2/_generated/generator-right-asolver/adapter-config.json new file mode 100644 index 0000000..0354ca9 --- /dev/null +++ b/examples/tutorial2/_generated/generator-right-asolver/adapter-config.json @@ -0,0 +1,15 @@ +{ + "participant_name": "Generator-Right", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "Generator-Right-Mesh", + "patches": [ + "interface" + ], + "write_data_names": [ + "Color" + ] + } + ] +} \ No newline at end of file diff --git a/examples/tutorial2/_generated/generator-right-asolver/run.sh b/examples/tutorial2/_generated/generator-right-asolver/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/examples/tutorial2/_generated/generator-right-asolver/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/examples/tutorial2/_generated/precice-config.xml b/examples/tutorial2/_generated/precice-config.xml new file mode 100644 index 0000000..bebff6c --- /dev/null +++ b/examples/tutorial2/_generated/precice-config.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/tutorial2/_generated/propagator-bsolver/adapter-config.json b/examples/tutorial2/_generated/propagator-bsolver/adapter-config.json new file mode 100644 index 0000000..32f9b21 --- /dev/null +++ b/examples/tutorial2/_generated/propagator-bsolver/adapter-config.json @@ -0,0 +1,24 @@ +{ + "participant_name": "Propagator", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "Propagator-Generator-Left-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Color" + ] + }, + { + "mesh_name": "Propagator-Generator-Right-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Color" + ] + } + ] +} \ No newline at end of file diff --git a/examples/tutorial2/_generated/propagator-bsolver/run.sh b/examples/tutorial2/_generated/propagator-bsolver/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/examples/tutorial2/_generated/propagator-bsolver/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/examples/tutorial3/_generated/README.md b/examples/tutorial3/_generated/README.md new file mode 100644 index 0000000..65463c3 --- /dev/null +++ b/examples/tutorial3/_generated/README.md @@ -0,0 +1,78 @@ +# Multiphysics Simulation Project + +> [!NOTE] This `README.md` file was auto-generated by preCICE case-generate. + + +--- + +## Project Overview + +This project uses **preCICE** for a multiphysics simulation involving: + +- Solver `OpenFOAM` with participant `Fluid` +- Solver `Nutils` with participant `Solid` + +### Project Structure + +Global files that are generated are: `precice-config.xml`, `README.md` and `clean.sh`. Additionally, for each participant, a folder with an `adapter-config.json` and a `run.sh` file are created. +The folder structure is as follows: + +``` +_generated/ + ├── README.md # This file + ├── clean.sh # Clean up script + ├──fluid-openfoam/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + ├──solid-nutils/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + └── precice-config.xml # Global precice-config.xml file +``` + + +- `precice-config.xml` is the global preCICE configuration file which defines the parameters and communication of participants +- `adapter-config.json` is a configuration file to couple the solvers with preCICE. +- `run.sh` is a script that is meant to execute a participant. Note, however, that since different solvers are executed differently, this file is not implemented yet. +- `clean.sh` removes any files in the current root directory that were not created by preCICE case-generate (and moves them to a backup folder). +Execution: + +```bash +./clean.sh [--force] [--dry-run] +``` + +- `--force` Deletes the files and any backup folders +- `--dry-run` Does not delete any files, but prints files that would be deleted + +--- + +## Prerequisites + +Before running the simulation, ensure you have the following installed: + +- The preCICE coupling library +- Solver `OpenFOAM` and its dependencies +- Solver `Nutils` and its dependencies + +--- + +## Running the Simulation + +### Quick Start + +```bash +# Navigate to the `_generated` folder +cd _generated/ + +# Implement the run script + +# Make the run script executable +chmod +x run.sh + +# Execute the simulation +./run.sh +``` + +--- + +For more information, see the [preCICE documentation](https://precice.org/docs.html) and [precice-case-generate](https://github.com/precice/case-generate). \ No newline at end of file diff --git a/examples/tutorial3/_generated/clean.sh b/examples/tutorial3/_generated/clean.sh new file mode 100644 index 0000000..2954b31 --- /dev/null +++ b/examples/tutorial3/_generated/clean.sh @@ -0,0 +1,350 @@ +#!/usr/bin/env bash + +# ------------------------------------------------------------------- +# Script Name: clean.sh +# Description: Recursively deletes/moves files/dirs except: +# - Global preserved filenames anywhere (run.sh, adapter-config.json...) +# - Specific root files (README.md, precice-config.xml) +# Usage: ./clean.sh [--dry-run] [--force] +# --dry-run : show what would happen, don't remove/move +# --force : permanently delete unpreserved items AND remove existing backups +# ------------------------------------------------------------------- + +# Strict mode: +# -e: exit on error +# -u: exit on undefined variable +# -o pipefail: exit if any command in a pipe fails +set -euo pipefail + +# --- CONFIGURATION --- +ROOT_DIR="$(pwd)" +LOG_FILE="cleanup.log" +BACKUP_DIR="$ROOT_DIR/backup_$(date '+%Y%m%d_%H%M%S')" + +# 1. GLOBAL PRESERVES: filenames to keep anywhere in the tree +GLOBAL_PRESERVE_NAMES=( + "run.sh" + "adapter-config.json" +) + +# 2. ROOT PRESERVES: filenames to keep only if in ROOT_DIR +ROOT_PRESERVE_PATHS=( + "clean.sh" + "README.md" + "precice-config.xml" + "$LOG_FILE" # always keep the log (will be overwritten) +) + +# --- DEFAULTS --- +DRY_RUN=0 # No dry-run by default +FORCE=0 # No permanent removal of files by default +MOVED_COUNT=0 # Counter to track if we actually backed anything up +DELETED_COUNT=0 # Counter to track if we actually deleted anything + +# --- HELPERS --- + +log() { + # We use tee -a (append) here so we don't overwrite previous lines *of this run*. + # The file is cleared once at the start of the MAIN block. + echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE" +} + +# Is filename (basename) a global preserved name? +is_global_preserved() { + local filename="$1" + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [[ "$filename" == "$name" ]]; then + return 0 + fi + done + return 1 +} + +# Is a relative path preserved at root? +is_root_preserved() { + local relpath="$1" + for p in "${ROOT_PRESERVE_PATHS[@]}"; do + if [[ "$relpath" == "$p" ]]; then + return 0 + fi + done + return 1 +} + +# Find out whether directory contains any preserved file *anywhere* under it. +# Implementation Note: Uses `head -n 1` instead of `-quit` for maximum compatibility +# across all Linux distros (including Alpine/BusyBox) and BSD/MacOS. +dir_contains_preserved_content() { + local dir="$1" + local name + local -a find_args=() + + # Build find arguments: ( -name A -o -name B ... ) + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [ ${#find_args[@]} -eq 0 ]; then + find_args+=( -name "$name" ) + else + find_args+=( -o -name "$name" ) + fi + done + + # Check if find returns any match. + # piping to head -n 1 causes find to receive SIGPIPE and stop early if a match is found. + if [ -n "$(find "$dir" \( "${find_args[@]}" \) -print 2>/dev/null | head -n 1)" ]; then + return 0 + fi + return 1 +} + +# Ensure backup destination exists and safely move source there preserving relative path. +# Prevents collisions by making unique names if needed. +# Args: +# $1 = absolute src path +# $2 = rel path relative to ROOT_DIR (used to recreate path inside backup) +safe_move_to_backup() { + local src="$1" + local rel="$2" + + # Destination path = $BACKUP_DIR/$rel + local dest="$BACKUP_DIR/$rel" + local dest_dir + dest_dir="$(dirname "$dest")" + + # Normalize: if dirname is ".", use $BACKUP_DIR as target dir + if [[ "$dest_dir" == "$BACKUP_DIR/." ]] || [[ "$dest_dir" == "." ]]; then + dest_dir="$BACKUP_DIR" + fi + + if [ "$DRY_RUN" -eq 0 ]; then + mkdir -p "$dest_dir" + fi + + # If dest exists, append numeric suffix before extension to avoid overwrite + if [ -e "$dest" ]; then + local base name ext candidate n + base="$(basename "$dest")" + name="${base%.*}" + ext="${base##*.}" + n=1 + + # Check if file has an extension + if [[ "$ext" == "$base" ]]; then + # No extension + candidate="$dest_dir/${name}_$n" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n" + done + else + # Has extension + candidate="$dest_dir/${name}_$n.$ext" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n.$ext" + done + fi + dest="$candidate" + fi + + if [ "$DRY_RUN" -eq 1 ]; then + log "Would be deleted: ${rel}" + else + mv -- "$src" "$dest" + # Increment the counter because we successfully moved a file + MOVED_COUNT=$((MOVED_COUNT + 1)) + log "Deleted: ${rel}" + fi +} + +# Safe remove (used by --force). Respects --dry-run. +safe_remove() { + local src="$1" + local rel="$2" + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove: $rel" + else + rm -rf -- "$src" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed: $rel" + fi +} + +# Remove existing backup_* directories permanently (used when FORCE=1). +remove_existing_backups_permanently() { + shopt -s nullglob + local found=0 + for old in "$ROOT_DIR"/backup_*; do + if [ -d "$old" ]; then + found=1 + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove backup: $(basename "$old")" + else + rm -rf -- "$old" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed backup: $(basename "$old")" + fi + fi + done + shopt -u nullglob + if [ "$found" -eq 0 ]; then + log "No existing backup directories to remove." + fi +} + +# Perform action for a single path (file or directory) that is NOT preserved. +# Moves to backup preserving tree, or removes permanently when FORCE=1. +perform_action() { + local item="$1" + local rel_path="${item#$ROOT_DIR/}" + + if [ "$FORCE" -eq 1 ]; then + safe_remove "$item" "$rel_path" + else + safe_move_to_backup "$item" "$rel_path" + fi +} + +# --- RECURSIVE CLEANUP --- +recursive_cleanup() { + local current_dir="$1" + + # dotglob: includes hidden files (starting with .) + # nullglob: makes the loop not run if no files match (avoids literal string issues) + shopt -s dotglob nullglob + + local item rel_path base + + for item in "$current_dir"/*; do + # Sanity check: ensure file exists (handles rare race conditions or broken links) + [ ! -e "$item" ] && [ ! -L "$item" ] && continue + + rel_path="${item#$ROOT_DIR/}" + base="$(basename "$item")" + + # Skip . and .. (though glob usually excludes them, safety first) + if [[ "$base" == "." || "$base" == ".." ]]; then + continue + fi + + # --- FILE or SYMLINK --- + if [ -f "$item" ] || [ -L "$item" ]; then + # 1. Preserve by global name anywhere? + if is_global_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # 2. Preserve if at root and matches root-preserve list? + if [[ "$current_dir" == "$ROOT_DIR" ]] && is_root_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # Otherwise: perform action + perform_action "$item" + continue + fi + + # --- DIRECTORY --- + if [ -d "$item" ]; then + # Check if dir contains any preserved content anywhere below + if dir_contains_preserved_content "$item"; then + recursive_cleanup "$item" + + # After recursion, if directory is empty, remove it (respecting dry-run) + if [ -z "$(ls -A "$item")" ]; then + if [ "$DRY_RUN" -eq 1 ]; then + log "Would remove empty directory: $rel_path" + else + rmdir -- "$item" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Removed empty directory: $rel_path" + fi + fi + else + # Directory contains no preserved files anywhere deep: remove/move entire directory + perform_action "$item" + fi + continue + fi + done + + # Restore defaults for shopt to avoid side effects if function is reused + shopt -u dotglob nullglob +} + +# --- MAIN --- + +# Parse flags +while [[ $# -gt 0 ]]; do + case $1 in + --dry-run) DRY_RUN=1 ;; + --force) FORCE=1 ;; + *) echo "Unknown parameter: $1"; exit 1 ;; + esac + shift +done + +# Initialize/Clear the log file for this new run +: > "$LOG_FILE" + +# Confirmation prompt (skip when dry-run) +if [ "$DRY_RUN" -eq 1 ]; then + log "Dry run enabled, nothing will be removed." +else + read -p "This will delete all files except preserved ones. Proceed? [y/n]: " confirm + case "$confirm" in + [yY][eE][sS]|[yY]) ;; + *) log "Cleanup aborted."; exit 0 ;; + esac +fi + +if [ "$FORCE" -eq 1 ] && [ "$DRY_RUN" -eq 1 ]; then + log "Ignoring --force." + FORCE=0 +fi + +log "Starting cleanup..." + + +if [ "$FORCE" -eq 1 ]; then + remove_existing_backups_permanently +fi + +recursive_cleanup "$ROOT_DIR" + +if [ "$DELETED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" +else + FILE_STR="files" + DIRECTORY_STR="directories" +fi + +OUTPUT_STR="" + +# Output if FORCE +if [ "$FORCE" -eq 1 ]; then + OUTPUT_STR="Deleted $DELETED_COUNT $FILE_STR or $DIRECTORY_STR. " +fi + +if [ "$DRY_RUN" -eq 1 ]; then + OUTPUT_STR="Dry-run completed successfully." +else + OUTPUT_STR="${OUTPUT_STR}Cleanup completed successfully." +fi + +# Only append the backup message if we actually moved files (MOVED_COUNT > 0) +if [ "$MOVED_COUNT" -gt 0 ]; then + # Correct wording + if [ "$MOVED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" + else + FILE_STR="files" + DIRECTORY_STR="directories" + fi + OUTPUT_STR="$OUTPUT_STR Backed up $MOVED_COUNT deleted $FILE_STR or $DIRECTORY_STR in '$BACKUP_DIR'." +fi + +log "$OUTPUT_STR" \ No newline at end of file diff --git a/examples/tutorial3/_generated/fluid-openfoam/adapter-config.json b/examples/tutorial3/_generated/fluid-openfoam/adapter-config.json new file mode 100644 index 0000000..434a2cc --- /dev/null +++ b/examples/tutorial3/_generated/fluid-openfoam/adapter-config.json @@ -0,0 +1,18 @@ +{ + "participant_name": "Fluid", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "Fluid-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Heat-Flux" + ], + "write_data_names": [ + "Temperature" + ] + } + ] +} \ No newline at end of file diff --git a/examples/tutorial3/_generated/fluid-openfoam/run.sh b/examples/tutorial3/_generated/fluid-openfoam/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/examples/tutorial3/_generated/fluid-openfoam/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/examples/tutorial3/_generated/precice-config.xml b/examples/tutorial3/_generated/precice-config.xml new file mode 100644 index 0000000..bc26bcb --- /dev/null +++ b/examples/tutorial3/_generated/precice-config.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/tutorial3/_generated/solid-nutils/adapter-config.json b/examples/tutorial3/_generated/solid-nutils/adapter-config.json new file mode 100644 index 0000000..2bc5e24 --- /dev/null +++ b/examples/tutorial3/_generated/solid-nutils/adapter-config.json @@ -0,0 +1,18 @@ +{ + "participant_name": "Solid", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "Solid-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Temperature" + ], + "write_data_names": [ + "Heat-Flux" + ] + } + ] +} \ No newline at end of file diff --git a/examples/tutorial3/_generated/solid-nutils/run.sh b/examples/tutorial3/_generated/solid-nutils/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/examples/tutorial3/_generated/solid-nutils/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/examples/tutorial4/_generated/README.md b/examples/tutorial4/_generated/README.md new file mode 100644 index 0000000..9200ef5 --- /dev/null +++ b/examples/tutorial4/_generated/README.md @@ -0,0 +1,78 @@ +# Multiphysics Simulation Project + +> [!NOTE] This `README.md` file was auto-generated by preCICE case-generate. + + +--- + +## Project Overview + +This project uses **preCICE** for a multiphysics simulation involving: + +- Solver `ASolver` with participant `A` +- Solver `BSolver` with participant `B` + +### Project Structure + +Global files that are generated are: `precice-config.xml`, `README.md` and `clean.sh`. Additionally, for each participant, a folder with an `adapter-config.json` and a `run.sh` file are created. +The folder structure is as follows: + +``` +_generated/ + ├── README.md # This file + ├── clean.sh # Clean up script + ├──a-asolver/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + ├──b-bsolver/ + │ ├── adapter-config.json + │ └── run.sh # Not yet implemented + └── precice-config.xml # Global precice-config.xml file +``` + + +- `precice-config.xml` is the global preCICE configuration file which defines the parameters and communication of participants +- `adapter-config.json` is a configuration file to couple the solvers with preCICE. +- `run.sh` is a script that is meant to execute a participant. Note, however, that since different solvers are executed differently, this file is not implemented yet. +- `clean.sh` removes any files in the current root directory that were not created by preCICE case-generate (and moves them to a backup folder). +Execution: + +```bash +./clean.sh [--force] [--dry-run] +``` + +- `--force` Deletes the files and any backup folders +- `--dry-run` Does not delete any files, but prints files that would be deleted + +--- + +## Prerequisites + +Before running the simulation, ensure you have the following installed: + +- The preCICE coupling library +- Solver `ASolver` and its dependencies +- Solver `BSolver` and its dependencies + +--- + +## Running the Simulation + +### Quick Start + +```bash +# Navigate to the `_generated` folder +cd _generated/ + +# Implement the run script + +# Make the run script executable +chmod +x run.sh + +# Execute the simulation +./run.sh +``` + +--- + +For more information, see the [preCICE documentation](https://precice.org/docs.html) and [precice-case-generate](https://github.com/precice/case-generate). \ No newline at end of file diff --git a/examples/tutorial4/_generated/a-asolver/adapter-config.json b/examples/tutorial4/_generated/a-asolver/adapter-config.json new file mode 100644 index 0000000..99af464 --- /dev/null +++ b/examples/tutorial4/_generated/a-asolver/adapter-config.json @@ -0,0 +1,15 @@ +{ + "participant_name": "A", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "A-Mesh", + "patches": [ + "interface" + ], + "write_data_names": [ + "Data" + ] + } + ] +} \ No newline at end of file diff --git a/examples/tutorial4/_generated/a-asolver/run.sh b/examples/tutorial4/_generated/a-asolver/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/examples/tutorial4/_generated/a-asolver/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/examples/tutorial4/_generated/b-bsolver/adapter-config.json b/examples/tutorial4/_generated/b-bsolver/adapter-config.json new file mode 100644 index 0000000..3306043 --- /dev/null +++ b/examples/tutorial4/_generated/b-bsolver/adapter-config.json @@ -0,0 +1,15 @@ +{ + "participant_name": "B", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "B-Mesh", + "patches": [ + "interface" + ], + "read_data_names": [ + "Data" + ] + } + ] +} \ No newline at end of file diff --git a/examples/tutorial4/_generated/b-bsolver/run.sh b/examples/tutorial4/_generated/b-bsolver/run.sh new file mode 100644 index 0000000..5fdeba8 --- /dev/null +++ b/examples/tutorial4/_generated/b-bsolver/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# +# run.sh script +# +# This is a template. You need to implement it yourself. +# +# If you are trying to launch a python script, you need to add: +# +# python path/to/file.py +# +# Example: https://github.com/precice/tutorials/blob/develop/flow-over-heated-plate/solid-dunefem/run.sh +# +# Note: In the example `run.sh` file, most setup steps (such as creating and activating a virtual environment +# or installing dependencies) have already been completed. +# Therefore, you may only need to add: +# +# python path/to/file.py +# + +set -e # Exit immediately if any command fails \ No newline at end of file diff --git a/examples/tutorial4/_generated/clean.sh b/examples/tutorial4/_generated/clean.sh new file mode 100644 index 0000000..2954b31 --- /dev/null +++ b/examples/tutorial4/_generated/clean.sh @@ -0,0 +1,350 @@ +#!/usr/bin/env bash + +# ------------------------------------------------------------------- +# Script Name: clean.sh +# Description: Recursively deletes/moves files/dirs except: +# - Global preserved filenames anywhere (run.sh, adapter-config.json...) +# - Specific root files (README.md, precice-config.xml) +# Usage: ./clean.sh [--dry-run] [--force] +# --dry-run : show what would happen, don't remove/move +# --force : permanently delete unpreserved items AND remove existing backups +# ------------------------------------------------------------------- + +# Strict mode: +# -e: exit on error +# -u: exit on undefined variable +# -o pipefail: exit if any command in a pipe fails +set -euo pipefail + +# --- CONFIGURATION --- +ROOT_DIR="$(pwd)" +LOG_FILE="cleanup.log" +BACKUP_DIR="$ROOT_DIR/backup_$(date '+%Y%m%d_%H%M%S')" + +# 1. GLOBAL PRESERVES: filenames to keep anywhere in the tree +GLOBAL_PRESERVE_NAMES=( + "run.sh" + "adapter-config.json" +) + +# 2. ROOT PRESERVES: filenames to keep only if in ROOT_DIR +ROOT_PRESERVE_PATHS=( + "clean.sh" + "README.md" + "precice-config.xml" + "$LOG_FILE" # always keep the log (will be overwritten) +) + +# --- DEFAULTS --- +DRY_RUN=0 # No dry-run by default +FORCE=0 # No permanent removal of files by default +MOVED_COUNT=0 # Counter to track if we actually backed anything up +DELETED_COUNT=0 # Counter to track if we actually deleted anything + +# --- HELPERS --- + +log() { + # We use tee -a (append) here so we don't overwrite previous lines *of this run*. + # The file is cleared once at the start of the MAIN block. + echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE" +} + +# Is filename (basename) a global preserved name? +is_global_preserved() { + local filename="$1" + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [[ "$filename" == "$name" ]]; then + return 0 + fi + done + return 1 +} + +# Is a relative path preserved at root? +is_root_preserved() { + local relpath="$1" + for p in "${ROOT_PRESERVE_PATHS[@]}"; do + if [[ "$relpath" == "$p" ]]; then + return 0 + fi + done + return 1 +} + +# Find out whether directory contains any preserved file *anywhere* under it. +# Implementation Note: Uses `head -n 1` instead of `-quit` for maximum compatibility +# across all Linux distros (including Alpine/BusyBox) and BSD/MacOS. +dir_contains_preserved_content() { + local dir="$1" + local name + local -a find_args=() + + # Build find arguments: ( -name A -o -name B ... ) + for name in "${GLOBAL_PRESERVE_NAMES[@]}"; do + if [ ${#find_args[@]} -eq 0 ]; then + find_args+=( -name "$name" ) + else + find_args+=( -o -name "$name" ) + fi + done + + # Check if find returns any match. + # piping to head -n 1 causes find to receive SIGPIPE and stop early if a match is found. + if [ -n "$(find "$dir" \( "${find_args[@]}" \) -print 2>/dev/null | head -n 1)" ]; then + return 0 + fi + return 1 +} + +# Ensure backup destination exists and safely move source there preserving relative path. +# Prevents collisions by making unique names if needed. +# Args: +# $1 = absolute src path +# $2 = rel path relative to ROOT_DIR (used to recreate path inside backup) +safe_move_to_backup() { + local src="$1" + local rel="$2" + + # Destination path = $BACKUP_DIR/$rel + local dest="$BACKUP_DIR/$rel" + local dest_dir + dest_dir="$(dirname "$dest")" + + # Normalize: if dirname is ".", use $BACKUP_DIR as target dir + if [[ "$dest_dir" == "$BACKUP_DIR/." ]] || [[ "$dest_dir" == "." ]]; then + dest_dir="$BACKUP_DIR" + fi + + if [ "$DRY_RUN" -eq 0 ]; then + mkdir -p "$dest_dir" + fi + + # If dest exists, append numeric suffix before extension to avoid overwrite + if [ -e "$dest" ]; then + local base name ext candidate n + base="$(basename "$dest")" + name="${base%.*}" + ext="${base##*.}" + n=1 + + # Check if file has an extension + if [[ "$ext" == "$base" ]]; then + # No extension + candidate="$dest_dir/${name}_$n" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n" + done + else + # Has extension + candidate="$dest_dir/${name}_$n.$ext" + while [ -e "$candidate" ]; do + n=$((n+1)) + candidate="$dest_dir/${name}_$n.$ext" + done + fi + dest="$candidate" + fi + + if [ "$DRY_RUN" -eq 1 ]; then + log "Would be deleted: ${rel}" + else + mv -- "$src" "$dest" + # Increment the counter because we successfully moved a file + MOVED_COUNT=$((MOVED_COUNT + 1)) + log "Deleted: ${rel}" + fi +} + +# Safe remove (used by --force). Respects --dry-run. +safe_remove() { + local src="$1" + local rel="$2" + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove: $rel" + else + rm -rf -- "$src" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed: $rel" + fi +} + +# Remove existing backup_* directories permanently (used when FORCE=1). +remove_existing_backups_permanently() { + shopt -s nullglob + local found=0 + for old in "$ROOT_DIR"/backup_*; do + if [ -d "$old" ]; then + found=1 + if [ "$DRY_RUN" -eq 1 ]; then + log "Would permanently remove backup: $(basename "$old")" + else + rm -rf -- "$old" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Permanently removed backup: $(basename "$old")" + fi + fi + done + shopt -u nullglob + if [ "$found" -eq 0 ]; then + log "No existing backup directories to remove." + fi +} + +# Perform action for a single path (file or directory) that is NOT preserved. +# Moves to backup preserving tree, or removes permanently when FORCE=1. +perform_action() { + local item="$1" + local rel_path="${item#$ROOT_DIR/}" + + if [ "$FORCE" -eq 1 ]; then + safe_remove "$item" "$rel_path" + else + safe_move_to_backup "$item" "$rel_path" + fi +} + +# --- RECURSIVE CLEANUP --- +recursive_cleanup() { + local current_dir="$1" + + # dotglob: includes hidden files (starting with .) + # nullglob: makes the loop not run if no files match (avoids literal string issues) + shopt -s dotglob nullglob + + local item rel_path base + + for item in "$current_dir"/*; do + # Sanity check: ensure file exists (handles rare race conditions or broken links) + [ ! -e "$item" ] && [ ! -L "$item" ] && continue + + rel_path="${item#$ROOT_DIR/}" + base="$(basename "$item")" + + # Skip . and .. (though glob usually excludes them, safety first) + if [[ "$base" == "." || "$base" == ".." ]]; then + continue + fi + + # --- FILE or SYMLINK --- + if [ -f "$item" ] || [ -L "$item" ]; then + # 1. Preserve by global name anywhere? + if is_global_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # 2. Preserve if at root and matches root-preserve list? + if [[ "$current_dir" == "$ROOT_DIR" ]] && is_root_preserved "$base"; then + log "Preserving: $rel_path" + continue + fi + + # Otherwise: perform action + perform_action "$item" + continue + fi + + # --- DIRECTORY --- + if [ -d "$item" ]; then + # Check if dir contains any preserved content anywhere below + if dir_contains_preserved_content "$item"; then + recursive_cleanup "$item" + + # After recursion, if directory is empty, remove it (respecting dry-run) + if [ -z "$(ls -A "$item")" ]; then + if [ "$DRY_RUN" -eq 1 ]; then + log "Would remove empty directory: $rel_path" + else + rmdir -- "$item" + DELETED_COUNT=$((DELETED_COUNT + 1)) + log "Removed empty directory: $rel_path" + fi + fi + else + # Directory contains no preserved files anywhere deep: remove/move entire directory + perform_action "$item" + fi + continue + fi + done + + # Restore defaults for shopt to avoid side effects if function is reused + shopt -u dotglob nullglob +} + +# --- MAIN --- + +# Parse flags +while [[ $# -gt 0 ]]; do + case $1 in + --dry-run) DRY_RUN=1 ;; + --force) FORCE=1 ;; + *) echo "Unknown parameter: $1"; exit 1 ;; + esac + shift +done + +# Initialize/Clear the log file for this new run +: > "$LOG_FILE" + +# Confirmation prompt (skip when dry-run) +if [ "$DRY_RUN" -eq 1 ]; then + log "Dry run enabled, nothing will be removed." +else + read -p "This will delete all files except preserved ones. Proceed? [y/n]: " confirm + case "$confirm" in + [yY][eE][sS]|[yY]) ;; + *) log "Cleanup aborted."; exit 0 ;; + esac +fi + +if [ "$FORCE" -eq 1 ] && [ "$DRY_RUN" -eq 1 ]; then + log "Ignoring --force." + FORCE=0 +fi + +log "Starting cleanup..." + + +if [ "$FORCE" -eq 1 ]; then + remove_existing_backups_permanently +fi + +recursive_cleanup "$ROOT_DIR" + +if [ "$DELETED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" +else + FILE_STR="files" + DIRECTORY_STR="directories" +fi + +OUTPUT_STR="" + +# Output if FORCE +if [ "$FORCE" -eq 1 ]; then + OUTPUT_STR="Deleted $DELETED_COUNT $FILE_STR or $DIRECTORY_STR. " +fi + +if [ "$DRY_RUN" -eq 1 ]; then + OUTPUT_STR="Dry-run completed successfully." +else + OUTPUT_STR="${OUTPUT_STR}Cleanup completed successfully." +fi + +# Only append the backup message if we actually moved files (MOVED_COUNT > 0) +if [ "$MOVED_COUNT" -gt 0 ]; then + # Correct wording + if [ "$MOVED_COUNT" -eq 1 ]; then + FILE_STR="file" + DIRECTORY_STR="directory" + else + FILE_STR="files" + DIRECTORY_STR="directories" + fi + OUTPUT_STR="$OUTPUT_STR Backed up $MOVED_COUNT deleted $FILE_STR or $DIRECTORY_STR in '$BACKUP_DIR'." +fi + +log "$OUTPUT_STR" \ No newline at end of file diff --git a/examples/tutorial4/_generated/precice-config.xml b/examples/tutorial4/_generated/precice-config.xml new file mode 100644 index 0000000..66eefac --- /dev/null +++ b/examples/tutorial4/_generated/precice-config.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 3c21a4340e6bcb1628e9e952fbfb764e1578d250 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 26 Jan 2026 16:25:03 +0100 Subject: [PATCH 081/131] Bug fix This critical bug would have caused some configs to be generated with errors: Since the data exchange A -> B was not added to the map, an exchange B -> A with the same data node could have occurred. --- precicecasegenerate/node_creator.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/precicecasegenerate/node_creator.py b/precicecasegenerate/node_creator.py index 13ace09..bdc11e9 100644 --- a/precicecasegenerate/node_creator.py +++ b/precicecasegenerate/node_creator.py @@ -950,7 +950,7 @@ def _initialize_data(self, participant_map: dict[str, n.ParticipantNode]) -> dic # If so, the data name needs to be uniquified (and a new data node has to be created), # to avoid both participants writing and reading this data logger.debug(f"{from_participant.name}->{to_participant.name}: {data_name}({data_type.value})") - # Here, we also want to check that A->B does not yet exchange this data; + # Here, we also want to check that A -> B does not yet exchange this data; # in that case we should not uniquify but split if (from_participant, to_participant, data_name) in participant_data_name_map: print(participant_data_name_map[(from_participant, to_participant, data_name)]) @@ -1065,9 +1065,15 @@ def _initialize_data(self, participant_map: dict[str, n.ParticipantNode]) -> dic else: data_name_map[data_name][data_type] = [new_data_node] exchange_data_map[frozenset(exchange.items())] = new_data_node - # Otherwise, do nothing + # Otherwise, record that we observed this data exchange in one direction else: exchange_data_map[frozenset(exchange.items())] = data_node + if (from_participant, to_participant, data_name) not in participant_data_name_map: + participant_data_name_map[(from_participant, to_participant, data_name)] = { + data_type: data_node} + else: + participant_data_name_map[(from_participant, to_participant, data_name)][ + data_type] = data_node # This data is unknown, so we create a new data node else: From 7511e9284b6b42ce02d321eb2e69a98441271d9a Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 26 Jan 2026 16:25:32 +0100 Subject: [PATCH 082/131] Fixed test Somehow this was not a multi coupling scheme at all --- .../multi_coupling/precice-config.xml | 61 ++++++++++++++----- .../multi_coupling/topology.yaml | 18 +++++- 2 files changed, 63 insertions(+), 16 deletions(-) diff --git a/tests/coupling_scheme_type/multi_coupling/precice-config.xml b/tests/coupling_scheme_type/multi_coupling/precice-config.xml index a9ec843..9cb54ce 100644 --- a/tests/coupling_scheme_type/multi_coupling/precice-config.xml +++ b/tests/coupling_scheme_type/multi_coupling/precice-config.xml @@ -8,29 +8,52 @@ + + + + - + + - + + + + - + + + + + + - + + - + - - + + + + - - - - - - - + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/coupling_scheme_type/multi_coupling/topology.yaml b/tests/coupling_scheme_type/multi_coupling/topology.yaml index 351c40e..800a8f2 100644 --- a/tests/coupling_scheme_type/multi_coupling/topology.yaml +++ b/tests/coupling_scheme_type/multi_coupling/topology.yaml @@ -12,7 +12,21 @@ exchanges: - from: A to: B data: Color - type: weak + type: strong + data-type: scalar + from-patch: interface + to-patch: interface + - from: B + to: A + data: Color + type: strong + data-type: scalar + from-patch: interface + to-patch: interface + - from: C + to: A + data: Color + type: strong data-type: scalar from-patch: interface to-patch: interface @@ -22,4 +36,4 @@ exchanges: type: strong data-type: scalar from-patch: interface - to-patch: interface + to-patch: interface \ No newline at end of file From 204b55b18abe4a8fbacd2003bede64ef896d7bbe Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 26 Jan 2026 16:53:31 +0100 Subject: [PATCH 083/131] Fixed mesh dimensions bug It could have happened that participants are defined with different dimensionalities. This means that exchanges and thus also mappings occurred, where the involved meshes had different dimensions. This has been fixed now. I am unsure, however, if just setting the other meshes dimensions to the higher dimensions is a "good" solution. --- precicecasegenerate/node_creator.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/precicecasegenerate/node_creator.py b/precicecasegenerate/node_creator.py index bdc11e9..a18c994 100644 --- a/precicecasegenerate/node_creator.py +++ b/precicecasegenerate/node_creator.py @@ -384,6 +384,16 @@ def _initialize_exchanges(self, participant_map: dict[str, n.ParticipantNode], from_mesh: n.MeshNode = mesh_map[(from_participant, to_participant, data_label)] to_mesh: n.MeshNode = mesh_map[(to_participant, from_participant, data_label)] + # This will prevent exchanges between meshes of different dimensions from being created. + # If this ever becomes allowed, this block can be removed. + if from_mesh.dimensions != to_mesh.dimensions: + max_dim: int = max(from_mesh.dimensions, to_mesh.dimensions) + min_dim_mesh: n.MeshNode = from_mesh if from_mesh.dimensions != max_dim else to_mesh + min_dim_mesh.dimensions = max_dim + logger.warning(f"Mesh {from_mesh.name} and {to_mesh.name} have different dimensions. " + f"Mapping to meshes of different dimensions is not allowed. " + f"Setting {min_dim_mesh.name}'s dimensions to {max_dim} dimensions.") + # Check type of mapping to determine which mesh is exchanged if mapping_map[(from_mesh, to_mesh)].direction == e.Direction.WRITE: # In a write-mapping, the exchanged mesh is the "to"-mesh From 47954aba365faadaf217c50a78c1ffcad4025e04 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 26 Jan 2026 16:58:03 +0100 Subject: [PATCH 084/131] Adjusted tests --- tests/miscellaneous/test_validity.py | 2 +- tests/node_generation/test_node_generation.py | 26 +++++++++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/tests/miscellaneous/test_validity.py b/tests/miscellaneous/test_validity.py index 1712d46..4f420d5 100644 --- a/tests/miscellaneous/test_validity.py +++ b/tests/miscellaneous/test_validity.py @@ -17,7 +17,7 @@ def test_validity(): """ for case_directory in test_directory.iterdir(): # Ignore files and folders like __pycache__/ - if not case_directory.is_dir() or case_directory.name.startswith("__"): + if not case_directory.is_dir() or case_directory.name.startswith("__") or case_directory.name.startswith("."): continue input_file: Path = case_directory / "topology.yaml" diff --git a/tests/node_generation/test_node_generation.py b/tests/node_generation/test_node_generation.py index 4ced636..4a508e1 100644 --- a/tests/node_generation/test_node_generation.py +++ b/tests/node_generation/test_node_generation.py @@ -385,8 +385,30 @@ def test_mesh_nodes(): # Check the dimensions of the mesh dimensionality: int = next(p.get("dimensionality", helper.DEFAULT_PARTICIPANT_DIMENSIONALITY) for p in topology["participants"] if p["name"] == provider.name) - assert mesh.dimensions == dimensionality, (f"Mesh {mesh.name} has dimensions {mesh.dimensions}, " - f"expected {dimensionality}.") + # It can happen in a "legal" way that the dimensions do not match: + # If A maps something to B and one has a higher dimensionality than the other, + # the highest dimensionality of the two is used. + increase_dim: bool = False + if not mesh.dimensions == dimensionality: + # We need to check if there exists a mapping involving this mesh that has a higher dimensionality + # Since the mapping of this topology is a read-mapping, the "provider" participant defined the mapping + for mapping in provider.mappings: + if mapping.from_mesh == mesh: + assert mapping.to_mesh.dimensions >= dimensionality, ( + f"Mesh {mesh.name} has dimensions {mesh.dimensions}, " + f"expected at least {mapping.to_mesh.dimensions}." + ) + increase_dim = True + break + elif mapping.to_mesh == mesh: + assert mapping.from_mesh.dimensions >= dimensionality, ( + f"Mesh {mesh.name} has dimensions {mesh.dimensions}, " + f"expected at least {mapping.from_mesh.dimensions}." + ) + increase_dim = True + break + assert increase_dim, (f"Mesh {mesh.name} has dimensions {mesh.dimensions}, " + f"expected {dimensionality}.") # Check that each mesh is in the mesh-patch map for mesh in mesh_nodes: From 81044a674c99f9acad302ddd9059dad498c53d25 Mon Sep 17 00:00:00 2001 From: Orlando Date: Tue, 10 Feb 2026 16:33:25 +0100 Subject: [PATCH 085/131] Update .gitignore Include spec file --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 9188d15..5a62519 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ dist/ build/ *.egg-info/ .tox/ +*.spec # macOS .DS_Store From f336a77152cea84b7a26fe168bcb99b1c22470da Mon Sep 17 00:00:00 2001 From: Orlando Date: Tue, 10 Feb 2026 17:10:57 +0100 Subject: [PATCH 086/131] Remove participants if unused Otherwise it will show an error when comparing the unused participants adapter config. While it is not ideal to simply remove this item, i also do not see why an empty participant would be helpful --- precicecasegenerate/input_handler/topology_reader.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/precicecasegenerate/input_handler/topology_reader.py b/precicecasegenerate/input_handler/topology_reader.py index 7de3375..9aaf640 100644 --- a/precicecasegenerate/input_handler/topology_reader.py +++ b/precicecasegenerate/input_handler/topology_reader.py @@ -69,10 +69,16 @@ def check_topology(self) -> int: participant_names.add(participant["name"]) logger.debug("Topology does not contain duplicate participant names.") + # Check if participants actually appear in exchanges + participants_in_exchanges: set[str] = set() + # Check if exchanges only contain known "to" and "from" participants for exchange in self.topology["exchanges"]: to_participant: str = exchange["to"] from_participant: str = exchange["from"] + participants_in_exchanges.add(to_participant) + participants_in_exchanges.add(from_participant) + if to_participant not in participant_names: logger.critical(f"Unknown participant {to_participant} in topology file " f"{self.topology_file_path}.") @@ -88,6 +94,11 @@ def check_topology(self) -> int: helper.DATA_UNIQUIFIERS.remove(uniquifier) logger.debug(f"Removed uniquifier {uniquifier} from the list of uniquifiers.") + for participant in self.topology["participants"]: + if participant["name"] not in participants_in_exchanges: + logger.warning(f"Removing participant {participant['name']} as it is defined but never used.") + self.topology["participants"].remove(participant) + logger.debug("Topology does not contain any errors.") return 0 From 9bf5f4b179e4f3f6de6aa9b3299117c4913dd9ad Mon Sep 17 00:00:00 2001 From: Orlando Date: Tue, 10 Feb 2026 23:37:20 +0100 Subject: [PATCH 087/131] indentation Changed indentation apparently :-) --- .../generator-asolver/adapter-config.json | 26 +++++++++---------- .../tutorial1/_generated/precice-config.xml | 2 +- .../propagator-bsolver/adapter-config.json | 26 +++++++++---------- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/examples/tutorial1/_generated/generator-asolver/adapter-config.json b/examples/tutorial1/_generated/generator-asolver/adapter-config.json index 84de0ac..c9cd23f 100644 --- a/examples/tutorial1/_generated/generator-asolver/adapter-config.json +++ b/examples/tutorial1/_generated/generator-asolver/adapter-config.json @@ -1,15 +1,15 @@ { - "participant_name": "Generator", - "precice_config_file_name": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "Generator-Mesh", - "patches": [ - "interface" - ], - "write_data_names": [ - "Color" - ] - } - ] + "participant_name": "Generator", + "precice_config_file_name": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "Generator-Mesh", + "patches": [ + "interface" + ], + "write_data_names": [ + "Color" + ] + } + ] } \ No newline at end of file diff --git a/examples/tutorial1/_generated/precice-config.xml b/examples/tutorial1/_generated/precice-config.xml index 3ba986e..df9d469 100644 --- a/examples/tutorial1/_generated/precice-config.xml +++ b/examples/tutorial1/_generated/precice-config.xml @@ -1,6 +1,6 @@ - + Date: Tue, 10 Feb 2026 23:37:52 +0100 Subject: [PATCH 088/131] Improved descriptions Now they represent the parameters better. --- precicecasegenerate/cli_helper.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/precicecasegenerate/cli_helper.py b/precicecasegenerate/cli_helper.py index 169157f..3904b96 100644 --- a/precicecasegenerate/cli_helper.py +++ b/precicecasegenerate/cli_helper.py @@ -23,16 +23,16 @@ def get_args() -> argparse.Namespace: parser.add_argument( "file_path", type=str, - help="Path to the input YAML file." + help="Path to the input YAML topology file." ) parser.add_argument( - "-v", "--verbose", action="store_true", help="Enable verbose output." + "-v", "--verbose", action="store_true", help="Enable verbose logging output." ) parser.add_argument( "-o", "--output_path", type=str, default="./", - help="A custom output path for the generated files." + help="A custom output path for the generated folder." ) return parser.parse_args() From 298c1a6f5c84073e3a15ee3291df2259ca7f5662 Mon Sep 17 00:00:00 2001 From: Orlando Date: Tue, 10 Feb 2026 23:38:36 +0100 Subject: [PATCH 089/131] Check if exchange is a loop This disallows exchanges from a participant to itself. --- precicecasegenerate/input_handler/topology_reader.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/precicecasegenerate/input_handler/topology_reader.py b/precicecasegenerate/input_handler/topology_reader.py index 9aaf640..4216a4e 100644 --- a/precicecasegenerate/input_handler/topology_reader.py +++ b/precicecasegenerate/input_handler/topology_reader.py @@ -76,6 +76,7 @@ def check_topology(self) -> int: for exchange in self.topology["exchanges"]: to_participant: str = exchange["to"] from_participant: str = exchange["from"] + participants_in_exchanges.add(to_participant) participants_in_exchanges.add(from_participant) @@ -88,6 +89,11 @@ def check_topology(self) -> int: f"{self.topology_file_path}.") return 1 data: str = exchange["data"] + + if from_participant == to_participant: + logger.error(f"Participant {from_participant} exchanges {data} with itself.") + return 1 + # Remove uniquifiers from the list if they are present in a data name for uniquifier in helper.DATA_UNIQUIFIERS.copy(): if uniquifier in data: From 3dd1b0eef2ef99f4c938495ab03f0f793c644d78 Mon Sep 17 00:00:00 2001 From: Orlando Date: Tue, 10 Feb 2026 23:38:50 +0100 Subject: [PATCH 090/131] Add test for loop-exchange --- tests/preprocessing/exchange_loop/topology.yaml | 11 +++++++++++ tests/preprocessing/test_preprocessing.py | 9 +++++++++ 2 files changed, 20 insertions(+) create mode 100644 tests/preprocessing/exchange_loop/topology.yaml diff --git a/tests/preprocessing/exchange_loop/topology.yaml b/tests/preprocessing/exchange_loop/topology.yaml new file mode 100644 index 0000000..2af1c16 --- /dev/null +++ b/tests/preprocessing/exchange_loop/topology.yaml @@ -0,0 +1,11 @@ +participants: + - name: Croc + solver: IDK + +exchanges: + - from: Croc + to: Croc + from-patch: I + to-patch: I + data: Fish + type: strong \ No newline at end of file diff --git a/tests/preprocessing/test_preprocessing.py b/tests/preprocessing/test_preprocessing.py index 5ec673f..05a2d75 100644 --- a/tests/preprocessing/test_preprocessing.py +++ b/tests/preprocessing/test_preprocessing.py @@ -37,3 +37,12 @@ def test_duplicate_exchanges(): input_file: Path = case_directory / "topology.yaml" assert 0 != generate_case(input_file, case_directory), "The case generation didn't fail." + +def test_exchange_loop(): + """ + Test that an error is raised when an exchange is a loop, i.e., the `from`-participant is also the `to`-participant. + """ + case_directory: Path = test_directory / "exchange_loop" + input_file: Path = case_directory / "topology.yaml" + + assert 0 != generate_case(input_file, case_directory), "The case generation didn't fail." \ No newline at end of file From ab51ffacd338c6086de992b3e15cdf1ac0b84dc9 Mon Sep 17 00:00:00 2001 From: Orlando Date: Tue, 10 Feb 2026 23:48:55 +0100 Subject: [PATCH 091/131] Update README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit New and improved (😼) project description, updated requirements and usage, updated links --- README.md | 125 +++++++++++++++--------------------------------------- 1 file changed, 35 insertions(+), 90 deletions(-) diff --git a/README.md b/README.md index c04e630..23e15fe 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,13 @@ -# precice-generator +# preCICE Case Generate -![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/precice/case-generate/check.yml?label=Examples%20generation%20and%20validation%20using%20config-checker) +preCICE case-generate is a python based utility designed to simplify the generation of preCICE application cases. +Such cases consist of the central `precice-config.xml` file which defines all sorts of connections and relations between +involved solvers, as well as `adapter-config.json` files for each solver. -![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/precice/case-generate/installation.yml?label=Installation%20Checker) - -![GitHub License](https://img.shields.io/github/license/precice/case-generate) - -## Project Overview - -The preCICE case-generate package is a Python-based utility designed to automate the generation of preCICE configuration files from -simple YAML topology descriptions. This tool simplifies the process of setting up multi-physics simulations by transforming -user-defined YAML configurations into preCICE-compatible XML configuration files. +These files involve a lot of complex elements and modifiers, which are often times not needed. +This tool introduces a simpler, easier to read and write `topology.yaml` file, +which covers a wide range of features of the `precice-config.xml` file, yet with only a fraction of the complexity. +An overview over the `topology.yaml` file can be found in `precicecasegenerate/schemas/README.md`. ## Key Features @@ -20,16 +17,16 @@ user-defined YAML configurations into preCICE-compatible XML configuration files - Comprehensive error logging and handling - Simple command-line interface -## Installation +## Getting Started ### Prerequisites -- Python 3.9 or - higher ([workflow validated](https://github.com/precice/case-generate/actions/workflows/installation.yml) - with 3.9, 3.10, 3.11 and 3.12) +- Python ≥ 3.10 - pip -- venv -- (preCICE library) +- git for cloning the repository :) +- [preCICE Config Graph](https://github.com/precice/config-graph) (will be installed during the setup) +- pyyaml +- jsonschema ### Manual Installation @@ -37,7 +34,7 @@ user-defined YAML configurations into preCICE-compatible XML configuration files ```bash git clone https://github.com/precice/case-generate.git -cd precice-generator +cd case-generate ``` 2. Create a virtual environment @@ -92,102 +89,54 @@ precice-case-generate --help Generate a preCICE configuration file from a YAML topology called `topology.yaml`: ```bash -precice-case-generate +precice-case-generate path/to/topology.yaml ``` -or pass a topology file via argument; - -```bash -precice-case-generate -f path/to/your/topology.yaml -``` +The only required argument is the `path/to/topology.yaml`. The `precice-case-generate` tool supports the following optional parameters: -- `-f, --input-file`: Path to the input topology.yaml file. - - **Default**: `./topology.yaml` - - **Description**: Specify a custom topology file for configuration generation. - - `-o, --output-path`: Destination path for the generated folder. - **Default**: `./_generated/` - - **Description**: Choose a specific output location for generated files. + - **Description**: Choose a specific output location for the `_generated/` directory. -- `-v, --verbose`: Enable verbose logging. +- `-v, --verbose`: Enable verbose console logging. - **Default**: Disabled - **Description**: Provides detailed logging information during execution. -- `--validate-topology`: Validate the input topology.yaml against the preCICE topology schema. - - **Default**: Enabled - - **Description**: Ensures the topology file meets the required schema specifications. - -Example usage: -```bash -precice-case-generate -f custom_topology.yaml -o /path/to/output -v -``` > [!NOTE] -> You should validate your files by running them through precice-tools and the -> preCICE [config-checker](https://github.com/precice/case-generate) to avoid errors. +> While it is not expected, the topology generation might fail or produce faulty configuration files. +> This might happen in situations where the `topology.yaml` contains multiple edge cases, +> such as many data exchanges with the same `data`-tag. +> The preCICE [Config Check](https://github.com/precice/config-check) is designed to identify and alert to such errors. + +### Examples + +Valid `topology.yaml` <-> application case pairs can be found in the `examples/` directory. +They include the preCICE tutorials 1-4 as well as some more complex simulations. ### Configuration 1. Prepare a YAML topology file describing your multi-physics simulation setup. 2. Use the command-line interface to generate the preCICE configuration. -3. The tool will create the necessary configuration files in the `_generated/` directory. +3. preCICE Case Generate will create the necessary configuration files in the `_generated/` directory. -## Creating Topology with MetaConfigurator +## Creating Topologies with MetaConfigurator You can create a topology for your preCICE simulation using the online MetaConfigurator. We provide a preloaded schema to help you get started: 1. Open the MetaConfigurator with the preloaded - schema: [MetaConfigurator Link](https://metaconfigurator.github.io/meta-configurator/?schema=https://github.com/precice/case-generate/blob/main/precicecasegenerate/schemas/topology-schema.json&settings=https://github.com/precice/case-generate/blob/main/precicecasegenerate/templates/metaConfiguratorSettings.json) + schema: [MetaConfigurator link](https://metaconfigurator.github.io/meta-configurator/?schema=https://github.com/precice/case-generate/blob/main/precicecasegenerate/schemas/topology-schema.json&settings=https://github.com/precice/case-generate/blob/main/precicecasegenerate/templates/metaConfiguratorSettings.json) 2. Use the interactive interface to define your topology: - The preloaded schema provides a structured way to describe your simulation components - - Add configuration details on the right side of the screen 3. Once complete, export your topology as a YAML file - Save the generated YAML file - - Use this file with the `precice-generator` tool to create your preCICE configuration - - Validate the generated preCICE config - with [config-checker](https://github.com/precice/config-check) - - Use `precice-config-checker` and/or `precice-tools check` to validate the generated preCICE config - -### Benefits of Using MetaConfigurator - -- Visual, user-friendly interface -- Real-time validation against our predefined schema -- Reduces manual configuration errors -- Simplifies topology creation process - -## Example Configurations - -### Normal Examples (0-5) - -Our project provides a set of progressively complex example configurations to help you get started with preCICE -simulations: - -- Located in `examples/0` through `examples/5` -- Designed for beginners and intermediate users -- Each example includes: - - A `topology.yaml` file defining the simulation setup - - A `precice-config.xml` file - - Subdirectories for different simulation components -- Showcase simple, linear multi-physics scenarios -- Ideal for learning basic preCICE configuration concepts - -### Expert Examples - -For advanced users, we offer more sophisticated configuration examples: - -- Located in `examples/expert` -- Contain more advanced usage of topology options but extend the according example with the same number -- Demonstrate advanced coupling strategies and intricate topology configurations -- Targeted at users with a better understanding of preCICE - -> [!TIP] -> Start with normal examples (0-5) and progress to expert examples as you become more comfortable with preCICE -> configurations. + - Use `precice-case-generte` to create your preCICE application case and configuration files + - Validate the generated preCICE config with [config-checker](https://github.com/precice/config-check) ## Documentation @@ -207,10 +156,6 @@ Alongside it, you will find `README.md`, which explains the topology's parameter - Ensure all dependencies are correctly installed - Verify the format of your input YAML file -- Check the generated logs for detailed error information - -## Acknowledgements +- Check the generated logs (`./.logs`) for detailed process information -This project was started with code from the [preCICE controller](https://github.com/precice/controller) repository. -The file `format_precice_config.py` was taken -from [preCICE pre-commit hook file](https://github.com/precice/precice-pre-commit-hooks/blob/main/format_precice_config/format_precice_config.py) +If all else fails, open a pull request describing the issue you are encountering. \ No newline at end of file From 8d84f6f697e3436e9eafb3c20d1bc365cdde1259 Mon Sep 17 00:00:00 2001 From: Orlando Date: Tue, 10 Feb 2026 23:49:10 +0100 Subject: [PATCH 092/131] Create README.md A new file describing the topology.yaml file. --- precicecasegenerate/schemas/README.md | 85 +++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 precicecasegenerate/schemas/README.md diff --git a/precicecasegenerate/schemas/README.md b/precicecasegenerate/schemas/README.md new file mode 100644 index 0000000..46f95ed --- /dev/null +++ b/precicecasegenerate/schemas/README.md @@ -0,0 +1,85 @@ +# The Topology File + +A `topology.yaml` file is the only file needed to run this program. + +> [!NOTE] As a YAML file, the topology is case-, indent- and whitespace-sensitive. + + +The JSON schema of the topology can be found in the `topology-schema.json` file. + +It consists of two main elements: + +- `participants`: The solvers involved in the simulation. +- `exchanges`: How the solvers interact with one another. + +## Participants + +The `participants` element describes the main actors of the simulation through given `name`s and the `solver`s they use. +It can hold an arbitrary number of elements, which must have pairwise unique names. +The optional parameter `dimensionality` defines the dimensions of the meshes used by the participant. + +There must be at least one participant defined, however, for a successful communication to be possible, +at least two participants must exist. +A valid entry might look as follows: + +```yaml +participants: + - name: Crocodile # An arbitrary string + solver: SeeYouLater # An arbitrary string + dimensionality: 3 # Either 2, 3 or not given + - name: Alligator + solver: InAWhile + - ... +``` + +## Exchanges + +The `exchanges` element describes how the main actors of the simulation communicate and relate to one-another. +This means that a single exchange needs to define a source participant `from`, a destination participant `to` and +patches (interfaces) of these participants through `from-patch` and `to-patch`. +The data that is exchanges is given as `data` and the type of the exchange (strong (implicit) or weak (explicit)) +is chosen through `type`. +The optional parameter `data-type` can take either of the two values `scalar` or `vector`. +If not given, a value might be inferred from the name of the `data`. + +At least one exchange must exist for a valid topology. Exchanges must be unique. +A valid entry might look as follows: + +```yaml +exchanges: + - from: Crocodile # A string that corresponds to a previously defined participant + to: Alligator # A string that corresponds to a previously defined participant + from-patch: claw # A patch (interface) of the `from`-participant + to-patch: claw # A patch (interface) of the `to`-participant + type: strong # The type of the data-exchange; either `strong` (implicit) or `weak` (explicit) + data: fish # The data that is being exchanged + data-type: vector # The type of the data that is being exchange; either `scalar`,`vector` or not given + - ... +``` + +## Example + +A complete example for a valid `topology.yaml` file is the following: + +```yaml +participants: + - name: Crocodile # An arbitrary string + solver: SeeYouLater # An arbitrary string + dimensionality: 3 # Either 2, 3 or not given + - name: Alligator + solver: InAWhile +exchanges: + - from: Crocodile # A string that corresponds to a previously defined participant + to: Alligator # A string that corresponds to a previously defined participant + from-patch: claw # A patch (interface) of the `from`-participant + to-patch: claw # A patch (interface) of the `to`-participant + type: strong # The type of the data-exchange; either `strong` (implicit) or `weak` (explicit) + data: fish # The data that is being exchanged + data-type: vector +``` + +## Legacy + +In version 1 of preCICE Case Generate, the topology had the additional elements `coupling-scheme` and `acceleration`. +To facilitate the usage of the tool, they were removed and the parameters are now either inferred from the remaining +two tags or assigned a default value. \ No newline at end of file From df79e558036e24a28c38e67943c5ab51600d5f29 Mon Sep 17 00:00:00 2001 From: Orlando Date: Wed, 11 Feb 2026 01:07:56 +0100 Subject: [PATCH 093/131] Update README.md Mention optional dependencies for testing --- README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/README.md b/README.md index 23e15fe..934c39d 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,8 @@ An overview over the `topology.yaml` file can be found in `precicecasegenerate/s ### Prerequisites +Required dependencies are: + - Python ≥ 3.10 - pip - git for cloning the repository :) @@ -28,6 +30,11 @@ An overview over the `topology.yaml` file can be found in `precicecasegenerate/s - pyyaml - jsonschema +Optional dependencies are: + +- pytest +- [preCICE Config Check](https://github.com/precice/config-check) + ### Manual Installation 1. Clone the repository @@ -60,6 +67,11 @@ pip install build pip install -e . ``` +Optional dependencies for testing can be installed via +```bash +pip install -e ".[dev]" +``` + ### Using Setup Scripts #### Unix/macOS From 07897183a4779dcf4f51b6750e164881215ce195 Mon Sep 17 00:00:00 2001 From: Orlando Date: Wed, 11 Feb 2026 01:16:25 +0100 Subject: [PATCH 094/131] Change quotation marks Apparently it is not allowed to use the delimiting quotes inside an f-string --- precicecasegenerate/file_creators/config_creator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/precicecasegenerate/file_creators/config_creator.py b/precicecasegenerate/file_creators/config_creator.py index 94c4349..03031e4 100644 --- a/precicecasegenerate/file_creators/config_creator.py +++ b/precicecasegenerate/file_creators/config_creator.py @@ -89,7 +89,7 @@ def validate_config_file(self, filepath: Path = "./precice-config.xml") -> None: elif result.returncode == 1: logger.error( f"The generated preCICE configuration file failed to validate with precice-config-check due to syntactic errors:\n" - f"{"".join("> " + line for line in result.stderr.splitlines(keepends=True))}\n" + f"{''.join('> ' + line for line in result.stderr.splitlines(keepends=True))}\n" f"This is likely an error within this program. Please visit {helper.case_generate_repository_url} for more help.") # Output = 2 means the file was parsed correctly but contains logical errors elif result.returncode == 2: From 025c996028572d007136a9f868d53a2b250006be Mon Sep 17 00:00:00 2001 From: Orlando Date: Wed, 11 Feb 2026 01:18:18 +0100 Subject: [PATCH 095/131] python 3.10 quotation marks Here as well --- precicecasegenerate/file_creators/config_creator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/precicecasegenerate/file_creators/config_creator.py b/precicecasegenerate/file_creators/config_creator.py index 03031e4..168c10f 100644 --- a/precicecasegenerate/file_creators/config_creator.py +++ b/precicecasegenerate/file_creators/config_creator.py @@ -95,7 +95,7 @@ def validate_config_file(self, filepath: Path = "./precice-config.xml") -> None: elif result.returncode == 2: logger.error( f"The generated preCICE configuration file failed to validate with precice-config-check due to logical errors:\n" - f"{"".join("> " + line for line in result.stdout.splitlines(keepends=True))}\n" + f"{''.join('> ' + line for line in result.stdout.splitlines(keepends=True))}\n" f"This is likely an error within this program. " f"You can either try to fix the configuration file yourself or visit " f"{helper.case_generate_repository_url} for more help.") From 0a12f1d0cf17478bc866a99f8567b5a4b1b326cd Mon Sep 17 00:00:00 2001 From: Orlando Date: Wed, 11 Feb 2026 15:02:28 +0100 Subject: [PATCH 096/131] Update adapter-config-schema.json @Logende 's suggestion --- precicecasegenerate/schemas/adapter-config-schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/precicecasegenerate/schemas/adapter-config-schema.json b/precicecasegenerate/schemas/adapter-config-schema.json index 61f634f..8fe69ee 100644 --- a/precicecasegenerate/schemas/adapter-config-schema.json +++ b/precicecasegenerate/schemas/adapter-config-schema.json @@ -10,7 +10,7 @@ "type": "string", "description": "Name of the participant" }, - "precice_config_file_name": { + "precice_config_file_path": { "type": "string", "description": "Path to the precice configuration file" }, From c8e1e961442f43cbe31e7c292d4eca29dc707aa8 Mon Sep 17 00:00:00 2001 From: Orlando Date: Fri, 20 Feb 2026 10:38:56 +0100 Subject: [PATCH 097/131] Update helper.py move displacement to intensive data --- precicecasegenerate/helper.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/precicecasegenerate/helper.py b/precicecasegenerate/helper.py index 0fdcc2b..cf58d7e 100644 --- a/precicecasegenerate/helper.py +++ b/precicecasegenerate/helper.py @@ -24,11 +24,12 @@ EXTENSIVE_DATA: list[str] = [ "force", - "displacement", "heat-transfer", "heattransfer", ] + INTENSIVE_DATA: list[str] = [ + "displacement", "temperature", "pressure", "velocity", From a002c5905d0a4b5b4abfbc16ab6e56541c5afa76 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 23 Feb 2026 11:01:59 +0100 Subject: [PATCH 098/131] Include "precice_config_file_path" in all files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I forgot to put this everywhere 😵‍💫 --- precicecasegenerate/file_creators/adapter_config_creator.py | 2 +- precicecasegenerate/schemas/__init__.py | 0 precicecasegenerate/schemas/adapter-config-schema.json | 2 +- precicecasegenerate/templates/__init__.py | 0 4 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 precicecasegenerate/schemas/__init__.py create mode 100644 precicecasegenerate/templates/__init__.py diff --git a/precicecasegenerate/file_creators/adapter_config_creator.py b/precicecasegenerate/file_creators/adapter_config_creator.py index 02ed978..740deff 100644 --- a/precicecasegenerate/file_creators/adapter_config_creator.py +++ b/precicecasegenerate/file_creators/adapter_config_creator.py @@ -76,7 +76,7 @@ def _create_adapter_config_dict(self, participant: n.ParticipantNode, # the path to the precice-config.xml file and the list of interfaces return { "participant_name": participant.name, - "precice_config_file_name": f"../{self.precice_config_filename}", + "precice_config_file_path": f"../{self.precice_config_filename}", "interfaces": interfaces } diff --git a/precicecasegenerate/schemas/__init__.py b/precicecasegenerate/schemas/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/precicecasegenerate/schemas/adapter-config-schema.json b/precicecasegenerate/schemas/adapter-config-schema.json index 8fe69ee..ece008c 100644 --- a/precicecasegenerate/schemas/adapter-config-schema.json +++ b/precicecasegenerate/schemas/adapter-config-schema.json @@ -2,7 +2,7 @@ "type": "object", "required": [ "participant_name", - "precice_config_file_name", + "precice_config_file_path", "interfaces" ], "properties": { diff --git a/precicecasegenerate/templates/__init__.py b/precicecasegenerate/templates/__init__.py new file mode 100644 index 0000000..e69de29 From a15bdd9c53bc978d9a91f6948e1c7f911788a478 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 23 Feb 2026 14:15:23 +0100 Subject: [PATCH 099/131] Update to precice_config_file_path --- .../_generated/nastin-asolver/adapter-config.json | 2 +- .../_generated/solidz1-solver/adapter-config.json | 2 +- .../_generated/solidz2-solver/adapter-config.json | 2 +- .../_generated/solidz3-solver/adapter-config.json | 2 +- .../_generated/fluid-bottom-openfoam/adapter-config.json | 2 +- .../_generated/fluid-top-openfoam/adapter-config.json | 2 +- .../_generated/solid-calculix/adapter-config.json | 2 +- .../strong-coupling/_generated/fluid-su2/adapter-config.json | 2 +- .../_generated/solid-calculix/adapter-config.json | 2 +- .../tutorial1/_generated/generator-asolver/adapter-config.json | 2 +- .../tutorial1/_generated/propagator-bsolver/adapter-config.json | 2 +- .../_generated/generator-left-asolver/adapter-config.json | 2 +- .../_generated/generator-right-asolver/adapter-config.json | 2 +- .../tutorial2/_generated/propagator-bsolver/adapter-config.json | 2 +- .../tutorial3/_generated/fluid-openfoam/adapter-config.json | 2 +- examples/tutorial3/_generated/solid-nutils/adapter-config.json | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/examples/complex-multi-coupling/_generated/nastin-asolver/adapter-config.json b/examples/complex-multi-coupling/_generated/nastin-asolver/adapter-config.json index 18a953c..bdeb3bc 100644 --- a/examples/complex-multi-coupling/_generated/nastin-asolver/adapter-config.json +++ b/examples/complex-multi-coupling/_generated/nastin-asolver/adapter-config.json @@ -1,6 +1,6 @@ { "participant_name": "NASTIN", - "precice_config_file_name": "../precice-config.xml", + "precice_config_file_path": "../precice-config.xml", "interfaces": [ { "mesh_name": "NASTIN-SOLIDZ1-Mesh", diff --git a/examples/complex-multi-coupling/_generated/solidz1-solver/adapter-config.json b/examples/complex-multi-coupling/_generated/solidz1-solver/adapter-config.json index 64e59e4..3942466 100644 --- a/examples/complex-multi-coupling/_generated/solidz1-solver/adapter-config.json +++ b/examples/complex-multi-coupling/_generated/solidz1-solver/adapter-config.json @@ -1,6 +1,6 @@ { "participant_name": "SOLIDZ1", - "precice_config_file_name": "../precice-config.xml", + "precice_config_file_path": "../precice-config.xml", "interfaces": [ { "mesh_name": "SOLIDZ1-Mesh", diff --git a/examples/complex-multi-coupling/_generated/solidz2-solver/adapter-config.json b/examples/complex-multi-coupling/_generated/solidz2-solver/adapter-config.json index 36c4af2..b3f5be0 100644 --- a/examples/complex-multi-coupling/_generated/solidz2-solver/adapter-config.json +++ b/examples/complex-multi-coupling/_generated/solidz2-solver/adapter-config.json @@ -1,6 +1,6 @@ { "participant_name": "SOLIDZ2", - "precice_config_file_name": "../precice-config.xml", + "precice_config_file_path": "../precice-config.xml", "interfaces": [ { "mesh_name": "SOLIDZ2-Mesh", diff --git a/examples/complex-multi-coupling/_generated/solidz3-solver/adapter-config.json b/examples/complex-multi-coupling/_generated/solidz3-solver/adapter-config.json index 8660d37..303e618 100644 --- a/examples/complex-multi-coupling/_generated/solidz3-solver/adapter-config.json +++ b/examples/complex-multi-coupling/_generated/solidz3-solver/adapter-config.json @@ -1,6 +1,6 @@ { "participant_name": "SOLIDZ3", - "precice_config_file_name": "../precice-config.xml", + "precice_config_file_path": "../precice-config.xml", "interfaces": [ { "mesh_name": "SOLIDZ3-Mesh", diff --git a/examples/multi-coupling/_generated/fluid-bottom-openfoam/adapter-config.json b/examples/multi-coupling/_generated/fluid-bottom-openfoam/adapter-config.json index 2a97c25..6c084e6 100644 --- a/examples/multi-coupling/_generated/fluid-bottom-openfoam/adapter-config.json +++ b/examples/multi-coupling/_generated/fluid-bottom-openfoam/adapter-config.json @@ -1,6 +1,6 @@ { "participant_name": "Fluid-Bottom", - "precice_config_file_name": "../precice-config.xml", + "precice_config_file_path": "../precice-config.xml", "interfaces": [ { "mesh_name": "Fluid-Bottom-Extensive-Mesh", diff --git a/examples/multi-coupling/_generated/fluid-top-openfoam/adapter-config.json b/examples/multi-coupling/_generated/fluid-top-openfoam/adapter-config.json index 884ac87..c3e6b61 100644 --- a/examples/multi-coupling/_generated/fluid-top-openfoam/adapter-config.json +++ b/examples/multi-coupling/_generated/fluid-top-openfoam/adapter-config.json @@ -1,6 +1,6 @@ { "participant_name": "Fluid-Top", - "precice_config_file_name": "../precice-config.xml", + "precice_config_file_path": "../precice-config.xml", "interfaces": [ { "mesh_name": "Fluid-Top-Extensive-Mesh", diff --git a/examples/multi-coupling/_generated/solid-calculix/adapter-config.json b/examples/multi-coupling/_generated/solid-calculix/adapter-config.json index a8070c7..0fab59d 100644 --- a/examples/multi-coupling/_generated/solid-calculix/adapter-config.json +++ b/examples/multi-coupling/_generated/solid-calculix/adapter-config.json @@ -1,6 +1,6 @@ { "participant_name": "Solid", - "precice_config_file_name": "../precice-config.xml", + "precice_config_file_path": "../precice-config.xml", "interfaces": [ { "mesh_name": "Solid-Fluid-Top-Extensive-Mesh", diff --git a/examples/strong-coupling/_generated/fluid-su2/adapter-config.json b/examples/strong-coupling/_generated/fluid-su2/adapter-config.json index bc5bc0b..9f2d5dc 100644 --- a/examples/strong-coupling/_generated/fluid-su2/adapter-config.json +++ b/examples/strong-coupling/_generated/fluid-su2/adapter-config.json @@ -1,6 +1,6 @@ { "participant_name": "Fluid", - "precice_config_file_name": "../precice-config.xml", + "precice_config_file_path": "../precice-config.xml", "interfaces": [ { "mesh_name": "Fluid-Mesh", diff --git a/examples/strong-coupling/_generated/solid-calculix/adapter-config.json b/examples/strong-coupling/_generated/solid-calculix/adapter-config.json index 7f96532..c37451d 100644 --- a/examples/strong-coupling/_generated/solid-calculix/adapter-config.json +++ b/examples/strong-coupling/_generated/solid-calculix/adapter-config.json @@ -1,6 +1,6 @@ { "participant_name": "Solid", - "precice_config_file_name": "../precice-config.xml", + "precice_config_file_path": "../precice-config.xml", "interfaces": [ { "mesh_name": "Solid-Mesh", diff --git a/examples/tutorial1/_generated/generator-asolver/adapter-config.json b/examples/tutorial1/_generated/generator-asolver/adapter-config.json index c9cd23f..fadc0b1 100644 --- a/examples/tutorial1/_generated/generator-asolver/adapter-config.json +++ b/examples/tutorial1/_generated/generator-asolver/adapter-config.json @@ -1,6 +1,6 @@ { "participant_name": "Generator", - "precice_config_file_name": "../precice-config.xml", + "precice_config_file_path": "../precice-config.xml", "interfaces": [ { "mesh_name": "Generator-Mesh", diff --git a/examples/tutorial1/_generated/propagator-bsolver/adapter-config.json b/examples/tutorial1/_generated/propagator-bsolver/adapter-config.json index 671041f..d892d87 100644 --- a/examples/tutorial1/_generated/propagator-bsolver/adapter-config.json +++ b/examples/tutorial1/_generated/propagator-bsolver/adapter-config.json @@ -1,6 +1,6 @@ { "participant_name": "Propagator", - "precice_config_file_name": "../precice-config.xml", + "precice_config_file_path": "../precice-config.xml", "interfaces": [ { "mesh_name": "Propagator-Mesh", diff --git a/examples/tutorial2/_generated/generator-left-asolver/adapter-config.json b/examples/tutorial2/_generated/generator-left-asolver/adapter-config.json index 097022e..e6720b0 100644 --- a/examples/tutorial2/_generated/generator-left-asolver/adapter-config.json +++ b/examples/tutorial2/_generated/generator-left-asolver/adapter-config.json @@ -1,6 +1,6 @@ { "participant_name": "Generator-Left", - "precice_config_file_name": "../precice-config.xml", + "precice_config_file_path": "../precice-config.xml", "interfaces": [ { "mesh_name": "Generator-Left-Mesh", diff --git a/examples/tutorial2/_generated/generator-right-asolver/adapter-config.json b/examples/tutorial2/_generated/generator-right-asolver/adapter-config.json index 0354ca9..cb02f37 100644 --- a/examples/tutorial2/_generated/generator-right-asolver/adapter-config.json +++ b/examples/tutorial2/_generated/generator-right-asolver/adapter-config.json @@ -1,6 +1,6 @@ { "participant_name": "Generator-Right", - "precice_config_file_name": "../precice-config.xml", + "precice_config_file_path": "../precice-config.xml", "interfaces": [ { "mesh_name": "Generator-Right-Mesh", diff --git a/examples/tutorial2/_generated/propagator-bsolver/adapter-config.json b/examples/tutorial2/_generated/propagator-bsolver/adapter-config.json index 32f9b21..173d178 100644 --- a/examples/tutorial2/_generated/propagator-bsolver/adapter-config.json +++ b/examples/tutorial2/_generated/propagator-bsolver/adapter-config.json @@ -1,6 +1,6 @@ { "participant_name": "Propagator", - "precice_config_file_name": "../precice-config.xml", + "precice_config_file_path": "../precice-config.xml", "interfaces": [ { "mesh_name": "Propagator-Generator-Left-Mesh", diff --git a/examples/tutorial3/_generated/fluid-openfoam/adapter-config.json b/examples/tutorial3/_generated/fluid-openfoam/adapter-config.json index 434a2cc..d34c61c 100644 --- a/examples/tutorial3/_generated/fluid-openfoam/adapter-config.json +++ b/examples/tutorial3/_generated/fluid-openfoam/adapter-config.json @@ -1,6 +1,6 @@ { "participant_name": "Fluid", - "precice_config_file_name": "../precice-config.xml", + "precice_config_file_path": "../precice-config.xml", "interfaces": [ { "mesh_name": "Fluid-Mesh", diff --git a/examples/tutorial3/_generated/solid-nutils/adapter-config.json b/examples/tutorial3/_generated/solid-nutils/adapter-config.json index 2bc5e24..3a09d45 100644 --- a/examples/tutorial3/_generated/solid-nutils/adapter-config.json +++ b/examples/tutorial3/_generated/solid-nutils/adapter-config.json @@ -1,6 +1,6 @@ { "participant_name": "Solid", - "precice_config_file_name": "../precice-config.xml", + "precice_config_file_path": "../precice-config.xml", "interfaces": [ { "mesh_name": "Solid-Mesh", From 6ba9677be6578e18abdda35ab30912f86904be0e Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 23 Feb 2026 17:54:53 +0100 Subject: [PATCH 100/131] Update examples Minor changes; it includes the `precice_config_file_path` and new mesh names if it uses intensive and extensive data --- .../nastin-asolver/adapter-config.json | 40 +++-- .../_generated/precice-config.xml | 164 ++++++++++-------- .../solidz1-solver/adapter-config.json | 10 +- .../solidz2-solver/adapter-config.json | 10 +- .../solidz3-solver/adapter-config.json | 10 +- .../{multi.yaml => topology.yaml} | 0 .../_generated/precice-config.xml | 2 +- .../_generated/fluid-su2/adapter-config.json | 16 +- .../_generated/precice-config.xml | 58 ++++--- .../solid-calculix/adapter-config.json | 10 +- .../{tutorial1.yaml => topology.yaml} | 0 .../adapter-config.json | 26 +-- .../adapter-config.json | 26 +-- .../tutorial2/_generated/precice-config.xml | 2 +- .../propagator-bsolver/adapter-config.json | 44 ++--- .../{tutorial2.yaml => topology.yaml} | 0 .../fluid-openfoam/adapter-config.json | 32 ++-- .../tutorial3/_generated/precice-config.xml | 2 +- .../solid-nutils/adapter-config.json | 32 ++-- .../{tutorial3.yaml => topology.yaml} | 0 .../_generated/a-asolver/adapter-config.json | 26 +-- .../_generated/b-bsolver/adapter-config.json | 26 +-- .../tutorial4/_generated/precice-config.xml | 2 +- .../{tutorial4.yaml => topology.yaml} | 0 24 files changed, 305 insertions(+), 233 deletions(-) rename examples/complex-multi-coupling/{multi.yaml => topology.yaml} (100%) rename examples/tutorial1/{tutorial1.yaml => topology.yaml} (100%) rename examples/tutorial2/{tutorial2.yaml => topology.yaml} (100%) rename examples/tutorial3/{tutorial3.yaml => topology.yaml} (100%) rename examples/tutorial4/{tutorial4.yaml => topology.yaml} (100%) diff --git a/examples/complex-multi-coupling/_generated/nastin-asolver/adapter-config.json b/examples/complex-multi-coupling/_generated/nastin-asolver/adapter-config.json index bdeb3bc..0dfaa04 100644 --- a/examples/complex-multi-coupling/_generated/nastin-asolver/adapter-config.json +++ b/examples/complex-multi-coupling/_generated/nastin-asolver/adapter-config.json @@ -3,40 +3,58 @@ "precice_config_file_path": "../precice-config.xml", "interfaces": [ { - "mesh_name": "NASTIN-SOLIDZ1-Mesh", + "mesh_name": "NASTIN-SOLIDZ1-Extensive-Mesh", "patches": [ - "interface" - ], - "read_data_names": [ - "Displacements1" + "interface-extensive" ], "write_data_names": [ "Forces1" ] }, { - "mesh_name": "NASTIN-SOLIDZ2-Mesh", + "mesh_name": "NASTIN-SOLIDZ1-Intensive-Mesh", "patches": [ - "interface" + "interface-intensive" ], "read_data_names": [ - "Displacements2" + "Displacements1" + ] + }, + { + "mesh_name": "NASTIN-SOLIDZ2-Extensive-Mesh", + "patches": [ + "interface-extensive" ], "write_data_names": [ "Forces2" ] }, { - "mesh_name": "NASTIN-SOLIDZ3-Mesh", + "mesh_name": "NASTIN-SOLIDZ2-Intensive-Mesh", "patches": [ - "interface" + "interface-intensive" ], "read_data_names": [ - "Displacements3" + "Displacements2" + ] + }, + { + "mesh_name": "NASTIN-SOLIDZ3-Extensive-Mesh", + "patches": [ + "interface-extensive" ], "write_data_names": [ "Forces3" ] + }, + { + "mesh_name": "NASTIN-SOLIDZ3-Intensive-Mesh", + "patches": [ + "interface-intensive" + ], + "read_data_names": [ + "Displacements3" + ] } ] } \ No newline at end of file diff --git a/examples/complex-multi-coupling/_generated/precice-config.xml b/examples/complex-multi-coupling/_generated/precice-config.xml index 999cc1c..e2c1e1e 100644 --- a/examples/complex-multi-coupling/_generated/precice-config.xml +++ b/examples/complex-multi-coupling/_generated/precice-config.xml @@ -14,99 +14,117 @@ - + + + - + + + - + + + - + + + - + + + - + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -116,29 +134,29 @@ - - - - - - - + + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + \ No newline at end of file diff --git a/examples/complex-multi-coupling/_generated/solidz1-solver/adapter-config.json b/examples/complex-multi-coupling/_generated/solidz1-solver/adapter-config.json index 3942466..89fe9f3 100644 --- a/examples/complex-multi-coupling/_generated/solidz1-solver/adapter-config.json +++ b/examples/complex-multi-coupling/_generated/solidz1-solver/adapter-config.json @@ -3,12 +3,18 @@ "precice_config_file_path": "../precice-config.xml", "interfaces": [ { - "mesh_name": "SOLIDZ1-Mesh", + "mesh_name": "SOLIDZ1-Extensive-Mesh", "patches": [ - "interface" + "interface-extensive" ], "read_data_names": [ "Forces1" + ] + }, + { + "mesh_name": "SOLIDZ1-Intensive-Mesh", + "patches": [ + "interface-intensive" ], "write_data_names": [ "Displacements1" diff --git a/examples/complex-multi-coupling/_generated/solidz2-solver/adapter-config.json b/examples/complex-multi-coupling/_generated/solidz2-solver/adapter-config.json index b3f5be0..5ce6436 100644 --- a/examples/complex-multi-coupling/_generated/solidz2-solver/adapter-config.json +++ b/examples/complex-multi-coupling/_generated/solidz2-solver/adapter-config.json @@ -3,12 +3,18 @@ "precice_config_file_path": "../precice-config.xml", "interfaces": [ { - "mesh_name": "SOLIDZ2-Mesh", + "mesh_name": "SOLIDZ2-Extensive-Mesh", "patches": [ - "interface" + "interface-extensive" ], "read_data_names": [ "Forces2" + ] + }, + { + "mesh_name": "SOLIDZ2-Intensive-Mesh", + "patches": [ + "interface-intensive" ], "write_data_names": [ "Displacements2" diff --git a/examples/complex-multi-coupling/_generated/solidz3-solver/adapter-config.json b/examples/complex-multi-coupling/_generated/solidz3-solver/adapter-config.json index 303e618..521035c 100644 --- a/examples/complex-multi-coupling/_generated/solidz3-solver/adapter-config.json +++ b/examples/complex-multi-coupling/_generated/solidz3-solver/adapter-config.json @@ -3,12 +3,18 @@ "precice_config_file_path": "../precice-config.xml", "interfaces": [ { - "mesh_name": "SOLIDZ3-Mesh", + "mesh_name": "SOLIDZ3-Extensive-Mesh", "patches": [ - "interface" + "interface-extensive" ], "read_data_names": [ "Forces3" + ] + }, + { + "mesh_name": "SOLIDZ3-Intensive-Mesh", + "patches": [ + "interface-intensive" ], "write_data_names": [ "Displacements3" diff --git a/examples/complex-multi-coupling/multi.yaml b/examples/complex-multi-coupling/topology.yaml similarity index 100% rename from examples/complex-multi-coupling/multi.yaml rename to examples/complex-multi-coupling/topology.yaml diff --git a/examples/multi-coupling/_generated/precice-config.xml b/examples/multi-coupling/_generated/precice-config.xml index 5543221..f319e45 100644 --- a/examples/multi-coupling/_generated/precice-config.xml +++ b/examples/multi-coupling/_generated/precice-config.xml @@ -94,9 +94,9 @@ + - diff --git a/examples/strong-coupling/_generated/fluid-su2/adapter-config.json b/examples/strong-coupling/_generated/fluid-su2/adapter-config.json index 9f2d5dc..a4bc88e 100644 --- a/examples/strong-coupling/_generated/fluid-su2/adapter-config.json +++ b/examples/strong-coupling/_generated/fluid-su2/adapter-config.json @@ -3,16 +3,22 @@ "precice_config_file_path": "../precice-config.xml", "interfaces": [ { - "mesh_name": "Fluid-Mesh", + "mesh_name": "Fluid-Extensive-Mesh", "patches": [ - "interface" - ], - "read_data_names": [ - "Displacement" + "interface-extensive" ], "write_data_names": [ "Force" ] + }, + { + "mesh_name": "Fluid-Intensive-Mesh", + "patches": [ + "interface-intensive" + ], + "read_data_names": [ + "Displacement" + ] } ] } \ No newline at end of file diff --git a/examples/strong-coupling/_generated/precice-config.xml b/examples/strong-coupling/_generated/precice-config.xml index 8b8abeb..8357165 100644 --- a/examples/strong-coupling/_generated/precice-config.xml +++ b/examples/strong-coupling/_generated/precice-config.xml @@ -10,54 +10,60 @@ - + + + - + + + - - - - + + + + + + - - - - - - + + + + + + - + - + - - + + - - + + - - + + \ No newline at end of file diff --git a/examples/strong-coupling/_generated/solid-calculix/adapter-config.json b/examples/strong-coupling/_generated/solid-calculix/adapter-config.json index c37451d..d6404fe 100644 --- a/examples/strong-coupling/_generated/solid-calculix/adapter-config.json +++ b/examples/strong-coupling/_generated/solid-calculix/adapter-config.json @@ -3,12 +3,18 @@ "precice_config_file_path": "../precice-config.xml", "interfaces": [ { - "mesh_name": "Solid-Mesh", + "mesh_name": "Solid-Extensive-Mesh", "patches": [ - "surface" + "surface-extensive" ], "read_data_names": [ "Force" + ] + }, + { + "mesh_name": "Solid-Intensive-Mesh", + "patches": [ + "surface-intensive" ], "write_data_names": [ "Displacement" diff --git a/examples/tutorial1/tutorial1.yaml b/examples/tutorial1/topology.yaml similarity index 100% rename from examples/tutorial1/tutorial1.yaml rename to examples/tutorial1/topology.yaml diff --git a/examples/tutorial2/_generated/generator-left-asolver/adapter-config.json b/examples/tutorial2/_generated/generator-left-asolver/adapter-config.json index e6720b0..30e6217 100644 --- a/examples/tutorial2/_generated/generator-left-asolver/adapter-config.json +++ b/examples/tutorial2/_generated/generator-left-asolver/adapter-config.json @@ -1,15 +1,15 @@ { - "participant_name": "Generator-Left", - "precice_config_file_path": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "Generator-Left-Mesh", - "patches": [ - "interface" - ], - "write_data_names": [ - "Color" - ] - } - ] + "participant_name": "Generator-Left", + "precice_config_file_path": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "Generator-Left-Mesh", + "patches": [ + "interface" + ], + "write_data_names": [ + "Color" + ] + } + ] } \ No newline at end of file diff --git a/examples/tutorial2/_generated/generator-right-asolver/adapter-config.json b/examples/tutorial2/_generated/generator-right-asolver/adapter-config.json index cb02f37..7d09b06 100644 --- a/examples/tutorial2/_generated/generator-right-asolver/adapter-config.json +++ b/examples/tutorial2/_generated/generator-right-asolver/adapter-config.json @@ -1,15 +1,15 @@ { - "participant_name": "Generator-Right", - "precice_config_file_path": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "Generator-Right-Mesh", - "patches": [ - "interface" - ], - "write_data_names": [ - "Color" - ] - } - ] + "participant_name": "Generator-Right", + "precice_config_file_path": "../precice-config.xml", + "interfaces": [ + { + "mesh_name": "Generator-Right-Mesh", + "patches": [ + "interface" + ], + "write_data_names": [ + "Color" + ] + } + ] } \ No newline at end of file diff --git a/examples/tutorial2/_generated/precice-config.xml b/examples/tutorial2/_generated/precice-config.xml index bebff6c..59a3297 100644 --- a/examples/tutorial2/_generated/precice-config.xml +++ b/examples/tutorial2/_generated/precice-config.xml @@ -1,6 +1,6 @@ - + - + - + Date: Mon, 23 Feb 2026 17:56:07 +0100 Subject: [PATCH 101/131] Rename test case It is clearer now since there is also preprocessing in the node_creator.py --- .../duplicate_exchanges/topology.yaml | 0 .../duplicate_participants/topology.yaml | 0 .../exchange_loop/topology.yaml | 0 .../test_preprocessing.py | 3 ++- .../unknown_participants/topology.yaml | 0 5 files changed, 2 insertions(+), 1 deletion(-) rename tests/{preprocessing => topology_preprocessing}/duplicate_exchanges/topology.yaml (100%) rename tests/{preprocessing => topology_preprocessing}/duplicate_participants/topology.yaml (100%) rename tests/{preprocessing => topology_preprocessing}/exchange_loop/topology.yaml (100%) rename tests/{preprocessing => topology_preprocessing}/test_preprocessing.py (98%) rename tests/{preprocessing => topology_preprocessing}/unknown_participants/topology.yaml (100%) diff --git a/tests/preprocessing/duplicate_exchanges/topology.yaml b/tests/topology_preprocessing/duplicate_exchanges/topology.yaml similarity index 100% rename from tests/preprocessing/duplicate_exchanges/topology.yaml rename to tests/topology_preprocessing/duplicate_exchanges/topology.yaml diff --git a/tests/preprocessing/duplicate_participants/topology.yaml b/tests/topology_preprocessing/duplicate_participants/topology.yaml similarity index 100% rename from tests/preprocessing/duplicate_participants/topology.yaml rename to tests/topology_preprocessing/duplicate_participants/topology.yaml diff --git a/tests/preprocessing/exchange_loop/topology.yaml b/tests/topology_preprocessing/exchange_loop/topology.yaml similarity index 100% rename from tests/preprocessing/exchange_loop/topology.yaml rename to tests/topology_preprocessing/exchange_loop/topology.yaml diff --git a/tests/preprocessing/test_preprocessing.py b/tests/topology_preprocessing/test_preprocessing.py similarity index 98% rename from tests/preprocessing/test_preprocessing.py rename to tests/topology_preprocessing/test_preprocessing.py index 05a2d75..1492385 100644 --- a/tests/preprocessing/test_preprocessing.py +++ b/tests/topology_preprocessing/test_preprocessing.py @@ -38,6 +38,7 @@ def test_duplicate_exchanges(): assert 0 != generate_case(input_file, case_directory), "The case generation didn't fail." + def test_exchange_loop(): """ Test that an error is raised when an exchange is a loop, i.e., the `from`-participant is also the `to`-participant. @@ -45,4 +46,4 @@ def test_exchange_loop(): case_directory: Path = test_directory / "exchange_loop" input_file: Path = case_directory / "topology.yaml" - assert 0 != generate_case(input_file, case_directory), "The case generation didn't fail." \ No newline at end of file + assert 0 != generate_case(input_file, case_directory), "The case generation didn't fail." diff --git a/tests/preprocessing/unknown_participants/topology.yaml b/tests/topology_preprocessing/unknown_participants/topology.yaml similarity index 100% rename from tests/preprocessing/unknown_participants/topology.yaml rename to tests/topology_preprocessing/unknown_participants/topology.yaml From 858bae636c7f4b25f0ba971e652fa6a584db420e Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 23 Feb 2026 17:57:27 +0100 Subject: [PATCH 102/131] Update node_creator.py Includes the checking if the exchanges are unique up to patches, as suggested by @uekerman --- precicecasegenerate/node_creator.py | 84 ++++++++++++++++++++++++++++- 1 file changed, 82 insertions(+), 2 deletions(-) diff --git a/precicecasegenerate/node_creator.py b/precicecasegenerate/node_creator.py index a18c994..fa61053 100644 --- a/precicecasegenerate/node_creator.py +++ b/precicecasegenerate/node_creator.py @@ -22,7 +22,6 @@ def __init__(self, topology: dict): # Containers for temporary values # Dimensionality is needed for meshes self.participant_dimensionality: dict[n.ParticipantNode, int] = {} - # self.data_types: dict[n.DataNode, e.DataType] = {} self.exchange_types: dict[n.ExchangeNode, str] = {} self._create_nodes() @@ -82,8 +81,12 @@ def _create_nodes(self) -> None: participant_patch_label_map: dict[tuple[n.ParticipantNode, n.ParticipantNode], dict[str, set[str]]] = ( self._patch_preprocessing(participant_map)) + # Update non-unique data names depending on from-/to-patches of the involved participants + # IMPORTANT: This updates the topology dict (see warning above) + self._data_preprocessing(participant_map) + # Initialize data from exchanges tag (defined implicitly) - # This uses the topology dict as keys, so it needs to be done after the patch preprocessing. + # IMPORTANT: This uses the topology dict as keys, so it needs to be done after the patch preprocessing. data_map: dict[frozenset, n.DataNode] = self._initialize_data(participant_map) logger.debug(f"Created {len(set(data_map.values()))} data nodes.") @@ -672,6 +675,82 @@ def _initialize_participants(self) -> dict[str, n.ParticipantNode]: logger.debug(f"Initialized participant {parzival.name} with dimensionality {dim}.") return participant_map + def _data_preprocessing(self, participant_map: dict[str, n.ParticipantNode]): + """ + Update data names in the topology dict, if they fulfill these conditions: + - Data is sent from participant A to participant B with the same name multiple times + - The exchanges are of the same type (strong/weak) + Then, these exchanges lead to errors, as they are only "unique" in the patch names, + which are not included in the precice-config; i.e., they would lead to duplicate exchanges. + Such a data name is then "uniquified", directly in the topology dict. + :param participant_map: A dict mapping participant names to participant nodes. + :return: None + """ + # Map tuples of from-/to-participants, data-name, data-type and exchange-type to the from-/to-patches + # that are used in exchanges + exchange_patch_map: dict[ + tuple[n.ParticipantNode, n.ParticipantNode, str, e.DataType, str], dict[str, list[str]]] = {} + for exchange in self.topology["exchanges"]: + from_participant: n.ParticipantNode = participant_map[exchange["from"]] + to_participant: n.ParticipantNode = participant_map[exchange["to"]] + data: str = exchange["data"] + data_type = self._get_data_type(exchange) + type: str = exchange["type"] + from_patch: str = exchange["from-patch"] + to_patch: str = exchange["to-patch"] + if (from_participant, to_participant, data, data_type, type) in exchange_patch_map: + exchange_patch_map[from_participant, to_participant, data, data_type, type]["from-patch"].append( + from_patch) + exchange_patch_map[from_participant, to_participant, data, data_type, type]["to-patch"].append(to_patch) + else: + exchange_patch_map[from_participant, to_participant, data, data_type, type] = \ + {"from-patch": [from_patch], "to-patch": [to_patch]} + + # Check every collected tuple for violations + for key, patches in exchange_patch_map.items(): + from_participant, to_participant, data, data_type, type = key + from_patches = patches["from-patch"] + to_patches = patches["to-patch"] + # Check if it is the first occurrence since we want to preserve the original data name + initial: bool = True + # If a tuple is not unique, its dict will have sets of length greater than 1 + if len(from_patches) > 1 or len(to_patches) > 1: + for from_patch, to_patch in zip(from_patches, to_patches): + # Iterate over all exchanges to check if they correspond to this tuple + for exchange in self.topology["exchanges"]: + # Check that all values match + if (from_participant.name == exchange["from"] and to_participant.name == exchange["to"] + and data == exchange["data"] and type.lower() == exchange["type"].lower() + and data_type == self._get_data_type(exchange) + and from_patch == exchange["from-patch"] and to_patch == exchange["to-patch"]): + # Do not modify the first occurrence in order to not uniquify all data names + if initial: + initial = False + continue + # All values match, and it is not the first violation + # Thus, uniquify the data name + # Choose a new uniquifier for each violation + uniquifier: str = helper.get_uniquifier() + new_data_name: str = f"{uniquifier.capitalize()}-{helper.capitalize_name(data)}" + exchange["data"] = new_data_name + + def _get_data_type(self, exchange) -> e.DataType: + """ + Get the data type for the given exchange or choose a default if none is given. + :param exchange: + :return: + """ + data: str = exchange["data"] + data_type: e.DataType = exchange.get("data-type") + if data_type is None: + data_type = helper.DEFAULT_DATA_TYPE + # Check if the data has a default type. Sort by key length to have a deterministic order + for key in sorted(helper.DEFAULT_DATA_TYPES.keys(), key=len, reverse=True): + if key.lower() in data.lower(): + data_type = helper.DEFAULT_DATA_TYPES[key] + break + return data_type + def _patch_preprocessing(self, participant_map: dict[str, n.ParticipantNode]): """ Preprocess patch labels in the topology. @@ -683,6 +762,7 @@ def _patch_preprocessing(self, participant_map: dict[str, n.ParticipantNode]): :return: A dict mapping participant pairs to patches used in communication between them. """ participant_patch_label_map: dict[tuple[n.ParticipantNode, str], set[str]] = {} + for exchange in self.topology["exchanges"]: from_participant: n.ParticipantNode = participant_map[exchange["from"]] to_participant: n.ParticipantNode = participant_map[exchange["to"]] From 41a131355a14a4498820c509d0e7e8f00262ee16 Mon Sep 17 00:00:00 2001 From: Orlando Date: Mon, 23 Feb 2026 17:57:46 +0100 Subject: [PATCH 103/131] Test for patches causing renaming --- .../precice-config.xml | 56 +++++++++++++++++++ .../test_data_renaming.py | 28 ++++++++++ .../topology.yaml | 29 ++++++++++ 3 files changed, 113 insertions(+) create mode 100644 tests/exchange_with_non_unique_patches/precice-config.xml create mode 100644 tests/exchange_with_non_unique_patches/test_data_renaming.py create mode 100644 tests/exchange_with_non_unique_patches/topology.yaml diff --git a/tests/exchange_with_non_unique_patches/precice-config.xml b/tests/exchange_with_non_unique_patches/precice-config.xml new file mode 100644 index 0000000..a727823 --- /dev/null +++ b/tests/exchange_with_non_unique_patches/precice-config.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/exchange_with_non_unique_patches/test_data_renaming.py b/tests/exchange_with_non_unique_patches/test_data_renaming.py new file mode 100644 index 0000000..99e62f5 --- /dev/null +++ b/tests/exchange_with_non_unique_patches/test_data_renaming.py @@ -0,0 +1,28 @@ +""" +Test that exchanges between participants correctly lead to data renaming if only the specified patches are unique. +""" + +from pathlib import Path +from precice_config_graph.graph import check_config_equivalence +from preciceconfigcheck.cli import runCheck + +from precicecasegenerate.cli import generate_case + +# This directory is the same for all tests in this file. +test_directory: Path = Path(__file__).parent +def test_data_renaming(): + """ + Test that the data is renamed correctly when exchanges are not unique if patches are disregarded; + i.e., if from, to, type, data, data-type, is not unique in the topology, + then the non-unique exchanges need their data renamed. + """ + case_directory: Path = test_directory + input_file: Path = case_directory / "topology.yaml" + + generate_case(input_file, case_directory) + + expected: Path = case_directory / "precice-config.xml" + actual: Path = case_directory / "_generated/precice-config.xml" + assert not check_config_equivalence(expected, actual), "Configs are equivalent with different names." + assert check_config_equivalence(expected, actual, ignore_names=True), "Configs not are equivalent up to naming." + assert runCheck(actual, True) == 0, "The config failed to validate." \ No newline at end of file diff --git a/tests/exchange_with_non_unique_patches/topology.yaml b/tests/exchange_with_non_unique_patches/topology.yaml new file mode 100644 index 0000000..a32ee2f --- /dev/null +++ b/tests/exchange_with_non_unique_patches/topology.yaml @@ -0,0 +1,29 @@ +participants: + - name: Alligator + solver: ASolver + dimensionality: 3 + - name: Crocodile + solver: BSolver + dimensionality: 3 +exchanges: + - from: Alligator + to: Crocodile + from-patch: Face + to-patch: Face + type: weak + data: Information + data-type: scalar + - from: Alligator + to: Crocodile + from-patch: Body + to-patch: Body + type: weak + data: Information + data-type: scalar + - from: Alligator + to: Crocodile + from-patch: Eye + to-patch: Eye + type: weak + data: Information + data-type: scalar \ No newline at end of file From 5f304872583a398b926c56e04ab54f95e1b8c91f Mon Sep 17 00:00:00 2001 From: Orlando Date: Fri, 10 Apr 2026 09:58:55 +0200 Subject: [PATCH 104/131] update indent it now uses textwrap and is cleaner. --- .../file_creators/config_creator.py | 23 ++++++++++--------- precicecasegenerate/helper.py | 3 +++ 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/precicecasegenerate/file_creators/config_creator.py b/precicecasegenerate/file_creators/config_creator.py index 168c10f..70cd81f 100644 --- a/precicecasegenerate/file_creators/config_creator.py +++ b/precicecasegenerate/file_creators/config_creator.py @@ -1,4 +1,5 @@ import logging +import textwrap import subprocess from pathlib import Path from precice_config_graph import nodes as n @@ -31,41 +32,41 @@ def _create_config_str(self) -> str: # "Header" information config_str: str = (f"\n" f"\n" - f" \n" - f" debug\"\n" - f" format=\"---[precice] %ColorizedSeverity% %Message%\"\n" - f" enabled=\"true\" />\n" - f" \n\n") # two newlines to separate the header from the content + f"{helper.INDENT}\n" + f"{helper.INDENT}{helper.INDENT} debug\"\n" + f"{helper.INDENT}{helper.INDENT}{helper.INDENT}format=\"---[precice] %ColorizedSeverity% %Message%\"\n" + f"{helper.INDENT}{helper.INDENT}{helper.INDENT}enabled=\"true\" />\n" + f"{helper.INDENT}\n\n") # two newlines to separate the header from the content for data in self.config_topology["data"]: - config_str += f" " + data.to_xml() + "\n" + config_str += f"{helper.INDENT}" + data.to_xml() + "\n" config_str += "\n" # separate mesh from data mesh_str: str = "" for mesh in self.config_topology["meshes"]: mesh_str += f"{mesh.to_xml()}" - config_str += "".join(" " + line for line in mesh_str.splitlines(keepends=True)) + config_str += textwrap.indent(mesh_str, helper.INDENT) config_str += "\n" # separate mesh from participants participant_str: str = "" for participant in self.config_topology["participants"]: participant_str += f"{participant.to_xml()}" - config_str += "".join(" " + line for line in participant_str.splitlines(keepends=True)) + config_str += textwrap.indent(participant_str, helper.INDENT) config_str += "\n" # separate participants from m2ns for m2n in self.config_topology["m2n"]: - config_str += f" {m2n.to_xml()}" + config_str += f"{helper.INDENT}{m2n.to_xml()}" config_str += "\n" # separate m2ns from coupling-schemes coupling_scheme_str: str = "" for coupling_scheme in self.config_topology["coupling-schemes"]: coupling_scheme_str += f"{coupling_scheme.to_xml()}" - config_str += "".join(" " + line for line in coupling_scheme_str.splitlines(keepends=True)) + config_str += textwrap.indent(coupling_scheme_str, helper.INDENT) config_str += f"\n" return config_str diff --git a/precicecasegenerate/helper.py b/precicecasegenerate/helper.py index cf58d7e..2ee29eb 100644 --- a/precicecasegenerate/helper.py +++ b/precicecasegenerate/helper.py @@ -7,6 +7,9 @@ """ Helper items and classes for the NodeCreator. """ +# Indent for config +INDENT: str = " " * 4 + # Link to the precice/case-generate repository case_generate_repository_url: str = "https://github.com/precice/case-generate" From 6e3ae846204f00bd929ad114abc86b5482e0fdb6 Mon Sep 17 00:00:00 2001 From: Orlando Date: Tue, 28 Apr 2026 13:33:42 +0200 Subject: [PATCH 105/131] Move data label comp to helper --- precicecasegenerate/helper.py | 35 ++++++++++++++++ precicecasegenerate/node_creator.py | 64 +++++++++++------------------ 2 files changed, 60 insertions(+), 39 deletions(-) diff --git a/precicecasegenerate/helper.py b/precicecasegenerate/helper.py index 2ee29eb..1179c8f 100644 --- a/precicecasegenerate/helper.py +++ b/precicecasegenerate/helper.py @@ -40,6 +40,41 @@ "heatflux" ] +class DataKind(Enum): + EXTENSIVE = "extensive" + INTENSIVE = "intensive" + DEFAULT = DEFAULT_DATA_KIND + +def get_data_label(data_name: str) -> DataKind: + """ + Return the kind / label of data based on the name of the data: + either "extensive" or "intensive"; with default "intensive". + :param data_name: The name of the data. + :return: "extensive" or "intensive". + """ + if _is_extensive(data_name): + return DataKind.EXTENSIVE + elif _is_intensive(data_name): + return DataKind.INTENSIVE + else: + return DataKind.DEFAULT + +def _is_extensive(data_name: str) -> bool: + """ + Checks if the given data name is associated with an extensive data. + :param data_name: The name of the data to check. + :return: True, if the data extensive. False otherwise. + """ + return any(data_name.lower().__contains__(extensive_data) for extensive_data in EXTENSIVE_DATA) + +def _is_intensive(data_name: str) -> bool: + """ + Checks if the given data name is associated with an intensive data. + :param data_name: The name of the data to check. + :return: True, if the data intensive. False otherwise. + """ + return any(data_name.lower().__contains__(intensive_data) for intensive_data in INTENSIVE_DATA) + # To make duplicate data names unique DATA_UNIQUIFIERS: list[str] = [ "magnificent", diff --git a/precicecasegenerate/node_creator.py b/precicecasegenerate/node_creator.py index fa61053..4be4fe0 100644 --- a/precicecasegenerate/node_creator.py +++ b/precicecasegenerate/node_creator.py @@ -377,12 +377,7 @@ def _initialize_exchanges(self, participant_map: dict[str, n.ParticipantNode], to_participant: n.ParticipantNode = participant_map[exchange["to"]] data: n.DataNode = data_map[frozenset(exchange.items())] - if any(data.name.lower().__contains__(extensive_data) for extensive_data in helper.EXTENSIVE_DATA): - data_label: str = "extensive" - elif any(data.name.lower().__contains__(intensive_data) for intensive_data in helper.INTENSIVE_DATA): - data_label: str = "intensive" - else: - data_label: str = helper.DEFAULT_DATA_KIND + data_label: str = helper.get_data_label(data.name.lower()).value from_mesh: n.MeshNode = mesh_map[(from_participant, to_participant, data_label)] to_mesh: n.MeshNode = mesh_map[(to_participant, from_participant, data_label)] @@ -439,17 +434,13 @@ def _initialize_mappings(self, participant_map: dict[str, n.ParticipantNode], to_participant: n.ParticipantNode = participant_map[exchange["to"]] data: n.DataNode = data_map[frozenset(exchange.items())] - if any(data.name.lower().__contains__(extensive_data) for extensive_data in helper.EXTENSIVE_DATA): - data_label: str = "extensive" - elif any(data.name.lower().__contains__(intensive_data) for intensive_data in helper.INTENSIVE_DATA): - data_label: str = "intensive" - else: - logger.warning(f"Data \"{data.name}\" is neither extensive nor intensive. Choosing default " + data_label: helper.DataKind = helper.get_data_label(data.name.lower()) + if data_label == helper.DataKind.DEFAULT: + logger.info(f"Data \"{data.name}\" is neither extensive nor intensive. Choosing default " f"{helper.DEFAULT_DATA_KIND} with corresponding {helper.DEFAULT_MAPPING_KIND}-mapping.") - data_label: str = helper.DEFAULT_DATA_KIND - from_mesh: n.MeshNode = mesh_map[(from_participant, to_participant, data_label)] - to_mesh: n.MeshNode = mesh_map[(to_participant, from_participant, data_label)] + from_mesh: n.MeshNode = mesh_map[(from_participant, to_participant, data_label.value)] + to_mesh: n.MeshNode = mesh_map[(to_participant, from_participant, data_label.value)] if data not in from_mesh.use_data: logger.debug(f"Adding use-data {data.name} to mesh {from_mesh.name}.") @@ -460,7 +451,7 @@ def _initialize_mappings(self, participant_map: dict[str, n.ParticipantNode], # Extensive data needs a conservative mapping, # so create a write-conservative mapping to allow for parallel participants - if data_label == "extensive": + if data_label == helper.DataKind.EXTENSIVE: logger.debug(f"Data {data.name} is extensive. Creating write-conservative mapping.") # If no mapping between from-mesh and to-mesh exists, create one if (from_mesh, to_mesh) not in mapping_map: @@ -470,12 +461,18 @@ def _initialize_mappings(self, participant_map: dict[str, n.ParticipantNode], # Intensive data needs a consistent mapping, # so create a read-consistent mapping to allow for parallel participants - else: + elif data_label == helper.DataKind.INTENSIVE: logger.debug(f"Data {data.name} is intensive. Creating read-consistent mapping.") if (from_mesh, to_mesh) not in mapping_map: logger.debug( f"No mapping between {from_mesh.name} and {to_mesh.name} exists. Creating new mapping.") self._create_read_mapping(from_participant, to_participant, from_mesh, to_mesh, mapping_map) + else: + logger.debug(f"Data {data.name} is {helper.DEFAULT_DATA_KIND}. Creating read-consistent mapping.") + if (from_mesh, to_mesh) not in mapping_map: + logger.debug( + f"No mapping between {from_mesh.name} and {to_mesh.name} exists. Creating new mapping.") + self._create_read_mapping(from_participant, to_participant, from_mesh, to_mesh, mapping_map) # If a mapping already exists, then the participants already receive the corresponding meshes. # Regardless of whether a mapping already exists, write- and read-data tags need to be added. @@ -734,11 +731,12 @@ def _data_preprocessing(self, participant_map: dict[str, n.ParticipantNode]): new_data_name: str = f"{uniquifier.capitalize()}-{helper.capitalize_name(data)}" exchange["data"] = new_data_name - def _get_data_type(self, exchange) -> e.DataType: + def _get_data_type(self, exchange: dict) -> e.DataType: """ - Get the data type for the given exchange or choose a default if none is given. - :param exchange: - :return: + Get the data-type for the data in the given exchange or choose a default if none is given. + E.g., temperature defaults to DataType.SCALAR, whereas force defaults to DataType.VECTOR. + :param exchange: The exchange for which the data-type is needed. + :return: A data-type for the given exchange, which defaults to the helper.DEFAULT_DATA_TYPE. """ data: str = exchange["data"] data_type: e.DataType = exchange.get("data-type") @@ -770,12 +768,7 @@ def _patch_preprocessing(self, participant_map: dict[str, n.ParticipantNode]): to_patch: str = exchange["to-patch"] data_name: str = exchange["data"] # Get data label - if any(data_name.lower().__contains__(extensive_data) for extensive_data in helper.EXTENSIVE_DATA): - data_label: str = "extensive" - elif any(data_name.lower().__contains__(intensive_data) for intensive_data in helper.INTENSIVE_DATA): - data_label: str = "intensive" - else: - data_label: str = "intensive" + data_label: str = helper.get_data_label(data_name).value # Create new entries if necessary if (from_participant, from_patch) not in participant_patch_label_map: participant_patch_label_map[(from_participant, from_patch)] = set() @@ -794,12 +787,8 @@ def _patch_preprocessing(self, participant_map: dict[str, n.ParticipantNode]): from_patch: str = exchange["from-patch"] to_patch: str = exchange["to-patch"] data_name: str = exchange["data"] - if any(data_name.lower().__contains__(extensive_data) for extensive_data in helper.EXTENSIVE_DATA): - data_label: str = "extensive" - elif any(data_name.lower().__contains__(intensive_data) for intensive_data in helper.INTENSIVE_DATA): - data_label: str = "intensive" - else: - data_label: str = "intensive" + # Extensive or intensive + data_label: str = helper.get_data_label(data_name).value # Check if this patch has been split up before if (from_participant, from_patch) in participant_patch_new_patch_map: @@ -842,12 +831,7 @@ def _patch_preprocessing(self, participant_map: dict[str, n.ParticipantNode]): from_patch: str = exchange["from-patch"] to_patch: str = exchange["to-patch"] data_name: str = exchange["data"] - if any(data_name.lower().__contains__(extensive_data) for extensive_data in helper.EXTENSIVE_DATA): - data_label: str = "extensive" - elif any(data_name.lower().__contains__(intensive_data) for intensive_data in helper.INTENSIVE_DATA): - data_label: str = "intensive" - else: - data_label: str = "intensive" + data_label: str = helper.get_data_label(data_name).value # Initialize entries if necessary if (from_participant, to_participant) not in participant_patch_map: participant_patch_map[(from_participant, to_participant)] = {"extensive": set(), "intensive": set()} @@ -1205,3 +1189,5 @@ def _contains_read_data(self, read_data: n.ReadDataNode, suspect_list: list[n.Re f"mesh {suspect.mesh.name} and data {suspect.data.name}.") return True return False + + From 375af3629548c8e3c291ce850e4fa0ab703980d4 Mon Sep 17 00:00:00 2001 From: Orlando Date: Wed, 29 Apr 2026 16:24:58 +0200 Subject: [PATCH 106/131] Update helper.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit reordered uniquifier names 😵‍💫 --- precicecasegenerate/helper.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/precicecasegenerate/helper.py b/precicecasegenerate/helper.py index 1179c8f..e184b40 100644 --- a/precicecasegenerate/helper.py +++ b/precicecasegenerate/helper.py @@ -50,7 +50,7 @@ def get_data_label(data_name: str) -> DataKind: Return the kind / label of data based on the name of the data: either "extensive" or "intensive"; with default "intensive". :param data_name: The name of the data. - :return: "extensive" or "intensive". + :return: Enum type of the data kind. """ if _is_extensive(data_name): return DataKind.EXTENSIVE @@ -77,17 +77,17 @@ def _is_intensive(data_name: str) -> bool: # To make duplicate data names unique DATA_UNIQUIFIERS: list[str] = [ - "magnificent", - "grand", - "wonderful", - "suspicious", - "mischievous", - "pretty", - "scary", "adventurous", "alien", + "grand", "humungous", "informative", + "magnificent", + "mischievous", + "pretty", + "scary", + "suspicious", + "wonderful", ] # A default data type if none is given From 8e7c538a86e780df7473a44e47ceb7ebf1ec7174 Mon Sep 17 00:00:00 2001 From: Orlando Date: Wed, 29 Apr 2026 16:33:38 +0200 Subject: [PATCH 107/131] Update logging_setup.py Switch to 'colored' package instead of manually setting color --- precicecasegenerate/logging_setup.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/precicecasegenerate/logging_setup.py b/precicecasegenerate/logging_setup.py index 09f8c01..f84dd3b 100644 --- a/precicecasegenerate/logging_setup.py +++ b/precicecasegenerate/logging_setup.py @@ -2,18 +2,20 @@ import logging from logging import LogRecord, Logger from pathlib import Path +from colored import Style, Fore + from precicecasegenerate import cli_helper class ColorFormatter(logging.Formatter): COLORS = { - logging.INFO: "\033[32m", # green - logging.DEBUG: "\033[34m", # blue - logging.WARNING: "\033[33m", # yellow - logging.ERROR: "\033[31m", # red - logging.CRITICAL: "\033[1;31m" # bold red + logging.INFO: Fore.green, # green + logging.DEBUG: Fore.blue, # blue + logging.WARNING: Fore.yellow, # yellow + logging.ERROR: Fore.red, # red + logging.CRITICAL: f"{Style.bold}{Fore.red}" # bold red } - RESET = "\033[0m" + RESET = Style.reset def format(self, record: LogRecord) -> str: """ @@ -53,7 +55,7 @@ def setup_logging(verbose: bool = False) -> Logger: # This deletes the file old_file.unlink() except OSError as e: - logger.warning(f"Error deleting old log file {old_file}: {e}") + logger.error(f"Error deleting old log file {old_file}: {e}") timestamp: str = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S") log_file_path: Path = log_directory / f"precice-case-generate-{timestamp}.log" From 5d7d6f1792d82b61ceb20edfe50b408720917246 Mon Sep 17 00:00:00 2001 From: Orlando Date: Wed, 29 Apr 2026 16:46:56 +0200 Subject: [PATCH 108/131] Update pyproject.toml add colored as a dependency --- pyproject.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 81d16db..b02326f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,7 +19,9 @@ dependencies = [ "precice-config-graph", "pyyaml", "jsonschema", + "colored", ] + [project.optional-dependencies] dev = [ "pytest", From e8b5045a9248efdbc3663b74f56f739adfee258f Mon Sep 17 00:00:00 2001 From: Orlando Date: Wed, 29 Apr 2026 17:19:37 +0200 Subject: [PATCH 109/131] Update config_creator.py Incorporate new config-graph functionality --- .../file_creators/config_creator.py | 55 +------------------ 1 file changed, 3 insertions(+), 52 deletions(-) diff --git a/precicecasegenerate/file_creators/config_creator.py b/precicecasegenerate/file_creators/config_creator.py index 70cd81f..be2ba94 100644 --- a/precicecasegenerate/file_creators/config_creator.py +++ b/precicecasegenerate/file_creators/config_creator.py @@ -1,8 +1,8 @@ import logging -import textwrap import subprocess from pathlib import Path from precice_config_graph import nodes as n +import precice_config_graph.graph.operations as operations import precicecasegenerate.helper as helper @@ -23,54 +23,6 @@ def __init__(self, config_topology: dict[str, list[n.ParticipantNode] | list[n.D """ self.config_topology = config_topology - def _create_config_str(self) -> str: - """ - Create a string representing a preCICE configuration file. - This is done by iterating over the given topology dict and creating a string for each element. - :return: A string representing a preCICE configuration file. - """ - # "Header" information - config_str: str = (f"\n" - f"\n" - f"{helper.INDENT}\n" - f"{helper.INDENT}{helper.INDENT} debug\"\n" - f"{helper.INDENT}{helper.INDENT}{helper.INDENT}format=\"---[precice] %ColorizedSeverity% %Message%\"\n" - f"{helper.INDENT}{helper.INDENT}{helper.INDENT}enabled=\"true\" />\n" - f"{helper.INDENT}\n\n") # two newlines to separate the header from the content - - for data in self.config_topology["data"]: - config_str += f"{helper.INDENT}" + data.to_xml() + "\n" - - config_str += "\n" # separate mesh from data - - mesh_str: str = "" - for mesh in self.config_topology["meshes"]: - mesh_str += f"{mesh.to_xml()}" - config_str += textwrap.indent(mesh_str, helper.INDENT) - - config_str += "\n" # separate mesh from participants - - participant_str: str = "" - for participant in self.config_topology["participants"]: - participant_str += f"{participant.to_xml()}" - config_str += textwrap.indent(participant_str, helper.INDENT) - - config_str += "\n" # separate participants from m2ns - - for m2n in self.config_topology["m2n"]: - config_str += f"{helper.INDENT}{m2n.to_xml()}" - - config_str += "\n" # separate m2ns from coupling-schemes - - coupling_scheme_str: str = "" - for coupling_scheme in self.config_topology["coupling-schemes"]: - coupling_scheme_str += f"{coupling_scheme.to_xml()}" - config_str += textwrap.indent(coupling_scheme_str, helper.INDENT) - - config_str += f"\n" - return config_str - def validate_config_file(self, filepath: Path = "./precice-config.xml") -> None: """ Validate the preCICE configuration file at the given filepath using precice-config-check. @@ -101,7 +53,7 @@ def validate_config_file(self, filepath: Path = "./precice-config.xml") -> None: f"You can either try to fix the configuration file yourself or visit " f"{helper.case_generate_repository_url} for more help.") - def create_config_file(self, directory: Path = "./", filename: str = "precice-config.xml") -> None: + def create_config_file(self, directory: Path = ".", filename: str = "precice-config.xml") -> None: """ Create a configuration file. The file is saved in the given directory with the given filename. @@ -111,6 +63,5 @@ def create_config_file(self, directory: Path = "./", filename: str = "precice-co # Convert to Path object just in case directory = Path(directory) file_path: Path = directory / filename - with open(file_path, "w") as f: - f.write(self._create_config_str()) + operations.create_config_file_from_dict(self.config_topology, path=directory, filename=filename) logger.info(f"preCICE configuration file written to {file_path}") From ade3e5861eb1c110a46fbe6946c5be69bd5a4cc8 Mon Sep 17 00:00:00 2001 From: Orlando Date: Wed, 29 Apr 2026 17:28:03 +0200 Subject: [PATCH 110/131] default for file_path cli argument --- precicecasegenerate/cli_helper.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/precicecasegenerate/cli_helper.py b/precicecasegenerate/cli_helper.py index 3904b96..bc891bd 100644 --- a/precicecasegenerate/cli_helper.py +++ b/precicecasegenerate/cli_helper.py @@ -23,7 +23,9 @@ def get_args() -> argparse.Namespace: parser.add_argument( "file_path", type=str, - help="Path to the input YAML topology file." + nargs="?", + help="Path to the input YAML topology file.", + default="./topology.yaml" ) parser.add_argument( "-v", "--verbose", action="store_true", help="Enable verbose logging output." From 5ea9305e1c78b37afa105c0ef7fd5472fad82c4a Mon Sep 17 00:00:00 2001 From: Orlando Date: Fri, 1 May 2026 11:11:02 +0200 Subject: [PATCH 111/131] use preciceadapterschema --- .../file_creators/adapter_config_creator.py | 49 ++++++------------- pyproject.toml | 1 + 2 files changed, 15 insertions(+), 35 deletions(-) diff --git a/precicecasegenerate/file_creators/adapter_config_creator.py b/precicecasegenerate/file_creators/adapter_config_creator.py index 740deff..8a90d1f 100644 --- a/precicecasegenerate/file_creators/adapter_config_creator.py +++ b/precicecasegenerate/file_creators/adapter_config_creator.py @@ -1,8 +1,7 @@ import json -import jsonschema import logging from pathlib import Path -from importlib.resources import files +import preciceadapterschema from precice_config_graph import nodes as n @@ -80,47 +79,20 @@ def _create_adapter_config_dict(self, participant: n.ParticipantNode, "interfaces": interfaces } - def _validate_adapter_config_file(self, directory: Path = "./", filename: str = "adapter-config.json"): - """ - Validate the adapter-config.json file in the given directory against the schema. - :param directory: The directory containing the adapter-config.json file. - :param filename: The name of the adapter-config file. - :return: None - """ - # Convert to Path object just in case - directory = Path(directory) - schema_path = files("precicecasegenerate.schemas") / "adapter-config-schema.json" - file_path: Path = directory / filename - - schema = json.loads(schema_path.read_text(encoding="utf-8")) - - with open(file_path, "r") as f: - adapter_config = json.load(f) - - try: - jsonschema.validate(adapter_config, schema) - logger.debug(f"Adapter config file {file_path} adheres to the schema.") - except jsonschema.ValidationError as e: - logger.error(f"Adapter config file {file_path} does not adhere to the schema " - f"as specified in {schema_path}: {e.message}. This is likely an error within the program.") - - def _create_adapter_config_file(self, participant: n.ParticipantNode, - patch_map: dict[n.MeshNode, set[str]], + def _create_adapter_config_file(self, adapter_config_dict: dict[str, str | list[str]], directory: Path = "./", filename: str = "adapter-config.json"): """ Write an adapter-config.json file for the given participant to the given directory. - :param participant: The participant for which the adapter-config.json file is created. - :param patch_map: A dict mapping meshes to sets of patches. + :param adapter_config_dict: The dict representing the adapter configuration file. :param directory: The directory to save the file in. :param filename: The name of the file. """ # Convert to Path object just in case directory = Path(directory) file_path: Path = directory / filename - adapter_config: dict[str, str | list[str]] = self._create_adapter_config_dict(participant, patch_map) with open(file_path, "w") as f: - json.dump(adapter_config, f, indent=4) - logger.info(f"Adapter configuration file for participant {participant.name} written to {file_path}") + json.dump(adapter_config_dict, f, indent=4) + logger.info(f"Adapter configuration file written to {file_path}") def create_adapter_configs(self, parent_directory: Path = "./"): """ @@ -133,5 +105,12 @@ def create_adapter_configs(self, parent_directory: Path = "./"): logger.debug(f"Creating adapter configuration file for participant {participant.name}.") directory: Path = helper.get_participant_solver_directory(parent_directory, participant.name, self.participant_solver_map[participant]) - self._create_adapter_config_file(participant, self.patch_map, directory=directory) - self._validate_adapter_config_file(directory=directory) + adapter_config_dict: dict[str, str | list[str]] = self._create_adapter_config_dict(participant, + self.patch_map) + try: + preciceadapterschema.validate(adapter_config_dict) + logger.debug(f"Adapter config file {directory} adheres to the schema.") + except Exception as e: + logger.error(f"Adapter config file {directory} does not adhere to the schema " + f"as specified by the precice-adapter-schema: {e}. This is likely an error within the program.") + self._create_adapter_config_file(adapter_config_dict, directory=directory) diff --git a/pyproject.toml b/pyproject.toml index b02326f..2aff3a4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,6 +17,7 @@ authors = [ requires-python = ">= 3.10" dependencies = [ "precice-config-graph", + "precice-adapter-schema", "pyyaml", "jsonschema", "colored", From db887afb5c39b748ba7a775d1a2e53e9b5ea4a7b Mon Sep 17 00:00:00 2001 From: Orlando Date: Fri, 1 May 2026 11:30:54 +0200 Subject: [PATCH 112/131] Allow specified output path --- precicecasegenerate/cli.py | 18 ++++++++---------- precicecasegenerate/cli_helper.py | 12 ++++++------ .../file_creators/adapter_config_creator.py | 2 +- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/precicecasegenerate/cli.py b/precicecasegenerate/cli.py index 6024509..243e93b 100644 --- a/precicecasegenerate/cli.py +++ b/precicecasegenerate/cli.py @@ -46,12 +46,8 @@ def generate_case(input_file: Path, output_root: Path) -> int: :return: 0 if successful, 1 otherwise. """ # Create a new directory for the generated files - generated_dir: Path = output_root / cli_helper.GENERATED_DIR_NAME - logger.debug(f"Resetting generated files at {generated_dir.resolve()}.") - # Remove the directory if it already exists - if generated_dir.exists(): - shutil.rmtree(generated_dir, ignore_errors=True) - generated_dir.mkdir(parents=True, exist_ok=True) + output_root.mkdir(parents=True, exist_ok=True) + logger.debug(f"Created output directory at {output_root}") logger.debug("Starting topology reader.") topology_reader: TopologyReader = TopologyReader(input_file.resolve()) @@ -71,13 +67,13 @@ def generate_case(input_file: Path, output_root: Path) -> int: logger.debug("Starting config creator.") config_creator: ConfigCreator = ConfigCreator(nodes) - config_creator.create_config_file(directory=generated_dir, filename=cli_helper.PRECICE_CONFIG_FILE_NAME) + config_creator.create_config_file(directory=output_root, filename=cli_helper.PRECICE_CONFIG_FILE_NAME) logger.debug("Config creator finished.") logger.debug("Creating participant directories.") participant_solver_map: dict = node_creator.get_participant_solver_map() for participant in participant_solver_map: - participant_directory: Path = helper.get_participant_solver_directory(generated_dir, participant.name, + participant_directory: Path = helper.get_participant_solver_directory(output_root, participant.name, participant_solver_map[participant]) # The directory will be overwritten if it already exists and is of the form "_generated/name-solver/" if participant_directory.exists(): @@ -90,13 +86,15 @@ def generate_case(input_file: Path, output_root: Path) -> int: adapter_config_creator: AdapterConfigCreator = AdapterConfigCreator(participant_solver_map, mesh_patch_map, precice_config_filename=cli_helper.PRECICE_CONFIG_FILE_NAME) - adapter_config_creator.create_adapter_configs(parent_directory=generated_dir) + adapter_config_creator.create_adapter_configs(parent_directory=output_root) logger.debug("Starting utility file creator.") utility_file_creator: UtilityFileCreator = UtilityFileCreator(participant_solver_map) - utility_file_creator.create_utility_files(parent_directory=generated_dir) + utility_file_creator.create_utility_files(parent_directory=output_root) return 0 if __name__ == "__main__": + # args = makeGenerateParser().parse_args() + # return runGenerate(args) sys.exit(main()) diff --git a/precicecasegenerate/cli_helper.py b/precicecasegenerate/cli_helper.py index bc891bd..76efdc6 100644 --- a/precicecasegenerate/cli_helper.py +++ b/precicecasegenerate/cli_helper.py @@ -21,20 +21,20 @@ def get_args() -> argparse.Namespace: parser = argparse.ArgumentParser() parser.add_argument( - "file_path", - type=str, + "input_file", + type=Path, nargs="?", help="Path to the input YAML topology file.", - default="./topology.yaml" + default=Path.cwd() / "topology.yaml" ) parser.add_argument( "-v", "--verbose", action="store_true", help="Enable verbose logging output." ) parser.add_argument( "-o", "--output_path", - type=str, - default="./", - help="A custom output path for the generated folder." + type=Path, + default=Path.cwd() / "_generated", + help="A custom output path for the generated folder. Already existing folders and files will be overwritten." ) return parser.parse_args() diff --git a/precicecasegenerate/file_creators/adapter_config_creator.py b/precicecasegenerate/file_creators/adapter_config_creator.py index 8a90d1f..93b8ccc 100644 --- a/precicecasegenerate/file_creators/adapter_config_creator.py +++ b/precicecasegenerate/file_creators/adapter_config_creator.py @@ -96,7 +96,7 @@ def _create_adapter_config_file(self, adapter_config_dict: dict[str, str | list[ def create_adapter_configs(self, parent_directory: Path = "./"): """ - Create adapter-config.json files for all participants and directly validate them afterwards. + Create adapter-config.json files for all participants and directly validate them afterward. The files are saved from the given parent-directory, in subdirectories of the form "participant-solver/". """ # Convert to Path object just in case From 773b00cb195afe9d0551064a9cd4dbb089d5b29c Mon Sep 17 00:00:00 2001 From: Orlando Date: Fri, 1 May 2026 11:51:37 +0200 Subject: [PATCH 113/131] Revert to old main() method --- precicecasegenerate/cli.py | 22 ++++++++++++---------- precicecasegenerate/cli_helper.py | 18 ++++++++---------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/precicecasegenerate/cli.py b/precicecasegenerate/cli.py index 243e93b..f145233 100644 --- a/precicecasegenerate/cli.py +++ b/precicecasegenerate/cli.py @@ -1,6 +1,7 @@ import sys import shutil import logging +import argparse from pathlib import Path from precicecasegenerate import helper @@ -15,9 +16,7 @@ logger = logging.getLogger(__name__) -def main() -> int: - args = cli_helper.get_args() - +def runGenerate(args: argparse.Namespace) -> int: setup_logging(verbose=args.verbose) logger.info("Program started.") @@ -25,15 +24,13 @@ def main() -> int: if return_value != 0: return return_value - input_file: Path = Path(args.file_path) + input_file: Path = Path(args.input_file) output_root: Path = Path(args.output_path) - return_value: int = generate_case(input_file, output_root) - if return_value != 0: - return return_value + return_value = generate_case(input_file, output_root) logger.info("Program finished.") - return 0 + return return_value def generate_case(input_file: Path, output_root: Path) -> int: @@ -94,7 +91,12 @@ def generate_case(input_file: Path, output_root: Path) -> int: return 0 +def main() -> int: + # Parse the command line arguments + parser = cli_helper.makeGenerateParser() + args = parser.parse_args() + return runGenerate(args) + + if __name__ == "__main__": - # args = makeGenerateParser().parse_args() - # return runGenerate(args) sys.exit(main()) diff --git a/precicecasegenerate/cli_helper.py b/precicecasegenerate/cli_helper.py index 76efdc6..496b831 100644 --- a/precicecasegenerate/cli_helper.py +++ b/precicecasegenerate/cli_helper.py @@ -13,13 +13,11 @@ LOG_DIR_NAME: str = ".logs" -def get_args() -> argparse.Namespace: - """ - Get the arguments passed to the CLI. - :return: An argparse namespace. - """ - parser = argparse.ArgumentParser() - +def makeGenerateParser(add_help: bool = True) -> argparse.ArgumentParser: + parser = argparse.ArgumentParser( + description="Initialize a preCICE case given a topology file", + add_help=add_help, + ) parser.add_argument( "input_file", type=Path, @@ -33,10 +31,10 @@ def get_args() -> argparse.Namespace: parser.add_argument( "-o", "--output_path", type=Path, - default=Path.cwd() / "_generated", + default=Path.cwd() / GENERATED_DIR_NAME, help="A custom output path for the generated folder. Already existing folders and files will be overwritten." ) - return parser.parse_args() + return parser def validate_args(args: argparse.Namespace) -> int: @@ -48,7 +46,7 @@ def validate_args(args: argparse.Namespace) -> int: """ logger.debug(f"Arguments parsed. Arguments: {vars(args)}. Checking if given file exists.") - input_file: Path = Path(args.file_path) + input_file: Path = Path(args.input_file).resolve() # Check if the file exists if not input_file.is_file(): From c65eaae224748013bac57a88d81553da12940ba3 Mon Sep 17 00:00:00 2001 From: Orlando Date: Fri, 1 May 2026 16:20:16 +0200 Subject: [PATCH 114/131] Update pyproject.toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 2aff3a4..5fbdc8b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,7 +16,7 @@ authors = [ requires-python = ">= 3.10" dependencies = [ - "precice-config-graph", + "precice-config-graph @ git+https://github.com/precice/config-graph.git@refs/pull/3/head", "precice-adapter-schema", "pyyaml", "jsonschema", From 5c63671eb9037d265c86ccdd27d3e8e3fd137cc4 Mon Sep 17 00:00:00 2001 From: Orlando Date: Fri, 1 May 2026 16:22:15 +0200 Subject: [PATCH 115/131] Update coupling_scheme_test.py --- .../coupling_scheme_test.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/tests/coupling_scheme_type/coupling_scheme_test.py b/tests/coupling_scheme_type/coupling_scheme_test.py index 7e901b5..09ee70e 100644 --- a/tests/coupling_scheme_type/coupling_scheme_test.py +++ b/tests/coupling_scheme_type/coupling_scheme_test.py @@ -3,7 +3,14 @@ """ from pathlib import Path -from precice_config_graph.graph import check_config_equivalence +from precice_config_graph.graph import operations + +import precice_config_graph +print("\n" + "="*50) +print("🚨 DEPENDENCY PATH CHECK 🚨") +print("Loading from:", precice_config_graph.__file__) +print("="*50 + "\n") + from preciceconfigcheck.cli import runCheck from precicecasegenerate.cli import generate_case @@ -20,10 +27,9 @@ def test_explicit_coupling_scheme(): input_file_two_participants: Path = case_directory / "two-participants.yaml" generate_case(input_file_two_participants, case_directory) - expected: Path = case_directory / "precice-config_two-participants.xml" actual: Path = case_directory / "_generated/precice-config.xml" - assert check_config_equivalence(expected, actual, ignore_names=True), "Configs are not equivalent up to naming." + assert operations.check_config_equivalence(expected, actual, ignore_names=True), "Configs are not equivalent up to naming." assert runCheck(actual, True) == 0, "The config failed to validate." input_file_three_participants: Path = case_directory / "three-participants.yaml" @@ -32,7 +38,7 @@ def test_explicit_coupling_scheme(): expected: Path = case_directory / "precice-config_three-participants.xml" actual: Path = case_directory / "_generated/precice-config.xml" - assert check_config_equivalence(expected, actual, ignore_names=True), "Configs are not equivalent up to naming." + assert operations.check_config_equivalence(expected, actual, ignore_names=True), "Configs are not equivalent up to naming." assert runCheck(actual, True) == 0, "The config failed to validate." def test_implicit_coupling_scheme(): @@ -46,7 +52,7 @@ def test_implicit_coupling_scheme(): expected: Path = case_directory / "precice-config.xml" actual: Path = case_directory / "_generated/precice-config.xml" - assert check_config_equivalence(expected, actual, ignore_names=True), "Configs are not equivalent up to naming." + assert operations.check_config_equivalence(expected, actual, ignore_names=True), "Configs are not equivalent up to naming." assert runCheck(actual, True) == 0, "The config failed to validate." def test_multi_coupling_scheme(): @@ -60,5 +66,5 @@ def test_multi_coupling_scheme(): expected: Path = case_directory / "precice-config.xml" actual: Path = case_directory / "_generated/precice-config.xml" - assert check_config_equivalence(expected, actual, ignore_names=True), "Configs are not equivalent up to naming." + assert operations.check_config_equivalence(expected, actual, ignore_names=True), "Configs are not equivalent up to naming." assert runCheck(actual, True) == 0, "The config failed to validate." \ No newline at end of file From 4a13b42a76ac6892d0e165298316ff362d7d4398 Mon Sep 17 00:00:00 2001 From: Orlando Date: Fri, 1 May 2026 16:24:15 +0200 Subject: [PATCH 116/131] Update import --- tests/data_type/data_type_test.py | 16 ++++++++-------- .../test_data_renaming.py | 6 +++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/tests/data_type/data_type_test.py b/tests/data_type/data_type_test.py index c464f85..d4caf6f 100644 --- a/tests/data_type/data_type_test.py +++ b/tests/data_type/data_type_test.py @@ -5,7 +5,7 @@ """ from pathlib import Path -from precice_config_graph.graph import check_config_equivalence +import precice_config_graph.graph.operations as operations from preciceconfigcheck.cli import runCheck from precicecasegenerate.cli import generate_case @@ -27,7 +27,7 @@ def test_same_type_one_direction(): expected: Path = case_directory / "precice-config.xml" actual: Path = case_directory / "_generated/precice-config.xml" - assert check_config_equivalence(expected, actual), "Configs are not equivalent." + assert operations.check_config_equivalence(expected, actual), "Configs are not equivalent." assert runCheck(actual, True) == 0, "The config failed to validate." @@ -44,7 +44,7 @@ def test_different_type_one_direction(): expected: Path = case_directory / "precice-config.xml" actual: Path = case_directory / "_generated/precice-config.xml" - assert check_config_equivalence(expected, actual), "Configs are not equivalent up to naming." + assert operations.check_config_equivalence(expected, actual), "Configs are not equivalent up to naming." assert runCheck(actual, True) == 0, "The config failed to validate." @@ -61,8 +61,8 @@ def test_same_type_both_directions(): expected: Path = case_directory / "precice-config.xml" actual: Path = case_directory / "_generated/precice-config.xml" - assert not check_config_equivalence(expected, actual), "Configs are equivalent with different names." - assert check_config_equivalence(expected, actual, ignore_names=True), "Configs not are equivalent up to naming." + assert not operations.check_config_equivalence(expected, actual), "Configs are equivalent with different names." + assert operations.check_config_equivalence(expected, actual, ignore_names=True), "Configs not are equivalent up to naming." assert runCheck(actual, True) == 0, "The config failed to validate." @@ -79,7 +79,7 @@ def test_different_type_both_directions(): expected: Path = case_directory / "precice-config.xml" actual: Path = case_directory / "_generated/precice-config.xml" - assert check_config_equivalence(expected, actual), "Configs are not equivalent up to naming." + assert operations.check_config_equivalence(expected, actual), "Configs are not equivalent up to naming." assert runCheck(actual, True) == 0, "The config failed to validate." @@ -98,6 +98,6 @@ def test_both_types_both_directions(): expected: Path = case_directory / "precice-config.xml" actual: Path = case_directory / "_generated/precice-config.xml" - assert not check_config_equivalence(expected, actual), "Configs are equivalent with different names." - assert check_config_equivalence(expected, actual, ignore_names=True), "Configs are not equivalent up to naming." + assert not operations.check_config_equivalence(expected, actual), "Configs are equivalent with different names." + assert operations.check_config_equivalence(expected, actual, ignore_names=True), "Configs are not equivalent up to naming." assert runCheck(actual, True) == 0, "The config failed to validate." diff --git a/tests/exchange_with_non_unique_patches/test_data_renaming.py b/tests/exchange_with_non_unique_patches/test_data_renaming.py index 99e62f5..c1894b0 100644 --- a/tests/exchange_with_non_unique_patches/test_data_renaming.py +++ b/tests/exchange_with_non_unique_patches/test_data_renaming.py @@ -3,7 +3,7 @@ """ from pathlib import Path -from precice_config_graph.graph import check_config_equivalence +from precice_config_graph.graph import operations from preciceconfigcheck.cli import runCheck from precicecasegenerate.cli import generate_case @@ -23,6 +23,6 @@ def test_data_renaming(): expected: Path = case_directory / "precice-config.xml" actual: Path = case_directory / "_generated/precice-config.xml" - assert not check_config_equivalence(expected, actual), "Configs are equivalent with different names." - assert check_config_equivalence(expected, actual, ignore_names=True), "Configs not are equivalent up to naming." + assert not operations.check_config_equivalence(expected, actual), "Configs are equivalent with different names." + assert operations.check_config_equivalence(expected, actual, ignore_names=True), "Configs not are equivalent up to naming." assert runCheck(actual, True) == 0, "The config failed to validate." \ No newline at end of file From a95680633f4642705ad8a9935232453c02ad6e85 Mon Sep 17 00:00:00 2001 From: Orlando Date: Fri, 1 May 2026 16:47:24 +0200 Subject: [PATCH 117/131] Update examples They now use the correct output path. --- tests/coupling_scheme_type/coupling_scheme_test.py | 14 ++++---------- tests/data_type/data_type_test.py | 10 +++++----- .../test_data_renaming.py | 2 +- tests/miscellaneous/test_validity.py | 2 +- tests/test_examples.py | 2 +- 5 files changed, 12 insertions(+), 18 deletions(-) diff --git a/tests/coupling_scheme_type/coupling_scheme_test.py b/tests/coupling_scheme_type/coupling_scheme_test.py index 09ee70e..7f55a81 100644 --- a/tests/coupling_scheme_type/coupling_scheme_test.py +++ b/tests/coupling_scheme_type/coupling_scheme_test.py @@ -5,12 +5,6 @@ from pathlib import Path from precice_config_graph.graph import operations -import precice_config_graph -print("\n" + "="*50) -print("🚨 DEPENDENCY PATH CHECK 🚨") -print("Loading from:", precice_config_graph.__file__) -print("="*50 + "\n") - from preciceconfigcheck.cli import runCheck from precicecasegenerate.cli import generate_case @@ -26,7 +20,7 @@ def test_explicit_coupling_scheme(): case_directory: Path = test_directory / "explicit_coupling" input_file_two_participants: Path = case_directory / "two-participants.yaml" - generate_case(input_file_two_participants, case_directory) + generate_case(input_file_two_participants, case_directory / "_generated") expected: Path = case_directory / "precice-config_two-participants.xml" actual: Path = case_directory / "_generated/precice-config.xml" assert operations.check_config_equivalence(expected, actual, ignore_names=True), "Configs are not equivalent up to naming." @@ -34,7 +28,7 @@ def test_explicit_coupling_scheme(): input_file_three_participants: Path = case_directory / "three-participants.yaml" # The previous files are overwritten - generate_case(input_file_three_participants, case_directory) + generate_case(input_file_three_participants, case_directory / "_generated") expected: Path = case_directory / "precice-config_three-participants.xml" actual: Path = case_directory / "_generated/precice-config.xml" @@ -48,7 +42,7 @@ def test_implicit_coupling_scheme(): case_directory: Path = test_directory / "implicit_coupling" input_file: Path = case_directory / "topology.yaml" - generate_case(input_file, case_directory) + generate_case(input_file, case_directory / "_generated") expected: Path = case_directory / "precice-config.xml" actual: Path = case_directory / "_generated/precice-config.xml" @@ -62,7 +56,7 @@ def test_multi_coupling_scheme(): case_directory: Path = test_directory / "multi_coupling" input_file: Path = case_directory / "topology.yaml" - generate_case(input_file, case_directory) + generate_case(input_file, case_directory / "_generated") expected: Path = case_directory / "precice-config.xml" actual: Path = case_directory / "_generated/precice-config.xml" diff --git a/tests/data_type/data_type_test.py b/tests/data_type/data_type_test.py index d4caf6f..f178f3b 100644 --- a/tests/data_type/data_type_test.py +++ b/tests/data_type/data_type_test.py @@ -23,7 +23,7 @@ def test_same_type_one_direction(): case_directory: Path = test_directory / "same_type_one_direction" input_file: Path = case_directory / "topology.yaml" - generate_case(input_file, case_directory) + generate_case(input_file, case_directory / "_generated") expected: Path = case_directory / "precice-config.xml" actual: Path = case_directory / "_generated/precice-config.xml" @@ -40,7 +40,7 @@ def test_different_type_one_direction(): case_directory: Path = test_directory / "different_type_one_direction" input_file: Path = case_directory / "topology.yaml" - generate_case(input_file, case_directory) + generate_case(input_file, case_directory / "_generated") expected: Path = case_directory / "precice-config.xml" actual: Path = case_directory / "_generated/precice-config.xml" @@ -57,7 +57,7 @@ def test_same_type_both_directions(): case_directory: Path = test_directory / "same_type_both_directions" input_file: Path = case_directory / "topology.yaml" - generate_case(input_file, case_directory) + generate_case(input_file, case_directory / "_generated") expected: Path = case_directory / "precice-config.xml" actual: Path = case_directory / "_generated/precice-config.xml" @@ -75,7 +75,7 @@ def test_different_type_both_directions(): case_directory: Path = test_directory / "different_type_both_directions" input_file: Path = case_directory / "topology.yaml" - generate_case(input_file, case_directory) + generate_case(input_file, case_directory / "_generated") expected: Path = case_directory / "precice-config.xml" actual: Path = case_directory / "_generated/precice-config.xml" @@ -94,7 +94,7 @@ def test_both_types_both_directions(): case_directory: Path = test_directory / "both_types_both_directions" input_file: Path = case_directory / "topology.yaml" - generate_case(input_file, case_directory) + generate_case(input_file, case_directory / "_generated") expected: Path = case_directory / "precice-config.xml" actual: Path = case_directory / "_generated/precice-config.xml" diff --git a/tests/exchange_with_non_unique_patches/test_data_renaming.py b/tests/exchange_with_non_unique_patches/test_data_renaming.py index c1894b0..a492a15 100644 --- a/tests/exchange_with_non_unique_patches/test_data_renaming.py +++ b/tests/exchange_with_non_unique_patches/test_data_renaming.py @@ -19,7 +19,7 @@ def test_data_renaming(): case_directory: Path = test_directory input_file: Path = case_directory / "topology.yaml" - generate_case(input_file, case_directory) + generate_case(input_file, case_directory / "_generated") expected: Path = case_directory / "precice-config.xml" actual: Path = case_directory / "_generated/precice-config.xml" diff --git a/tests/miscellaneous/test_validity.py b/tests/miscellaneous/test_validity.py index 4f420d5..a7a3bba 100644 --- a/tests/miscellaneous/test_validity.py +++ b/tests/miscellaneous/test_validity.py @@ -22,7 +22,7 @@ def test_validity(): input_file: Path = case_directory / "topology.yaml" - assert 0 == generate_case(input_file, case_directory), "Case generation failed." + assert 0 == generate_case(input_file, case_directory / "_generated"), "Case generation failed." config_file: Path = case_directory / "_generated/precice-config.xml" assert runCheck(config_file, True) == 0, "The config failed to validate." diff --git a/tests/test_examples.py b/tests/test_examples.py index cd5004d..86431f9 100644 --- a/tests/test_examples.py +++ b/tests/test_examples.py @@ -29,7 +29,7 @@ def test_application_with_example(example: Path): print(f"Output {output}") assert output, "Nothing generated." - config = Path(temp_dir) / "_generated/precice-config.xml" + config = Path(temp_dir) / "precice-config.xml" assert config.exists(), "No config generated." ret = runCheck(config, True) if ret != 0: From ddf41e474cbf71edd1f6cd80fc6d1996e2a38ce2 Mon Sep 17 00:00:00 2001 From: Orlando Date: Fri, 1 May 2026 18:19:03 +0200 Subject: [PATCH 118/131] Update pyproject.toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 5fbdc8b..202d814 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,7 +26,7 @@ dependencies = [ [project.optional-dependencies] dev = [ "pytest", - "precice-config-check" + "precice-config-check @ git+https://github.com/precice/config-check.git@main" ] [project.scripts] From fa3d1c8d976bbe56b6b13708539e935cef9e665a Mon Sep 17 00:00:00 2001 From: Orlando Date: Fri, 1 May 2026 18:23:44 +0200 Subject: [PATCH 119/131] Update pyproject.toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 202d814..19618cc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,7 +26,7 @@ dependencies = [ [project.optional-dependencies] dev = [ "pytest", - "precice-config-check @ git+https://github.com/precice/config-check.git@main" + "precice-config-check @ git+https://github.com/precice/config-check.git@refs/pull/3/head" ] [project.scripts] From 9aea61dacec3cec6f7fac77bb9fde18042723d0b Mon Sep 17 00:00:00 2001 From: Orlando Date: Fri, 1 May 2026 18:42:02 +0200 Subject: [PATCH 120/131] Switch to ruamel.yaml --- precicecasegenerate/input_handler/topology_reader.py | 5 +++-- pyproject.toml | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/precicecasegenerate/input_handler/topology_reader.py b/precicecasegenerate/input_handler/topology_reader.py index 4216a4e..d1ef78b 100644 --- a/precicecasegenerate/input_handler/topology_reader.py +++ b/precicecasegenerate/input_handler/topology_reader.py @@ -1,4 +1,4 @@ -import yaml +from ruamel.yaml import YAML import json import jsonschema import logging @@ -25,8 +25,9 @@ def _read_topology(self) -> dict: :return: The topology dict. """ logger.debug(f"Reading topology file at {self.topology_file_path.resolve()}") + yaml = YAML(typ="safe") with open(self.topology_file_path, "r") as topology_file: - topology = yaml.safe_load(topology_file) + topology = yaml.load(topology_file) return topology def validate_topology(self) -> int: diff --git a/pyproject.toml b/pyproject.toml index 19618cc..8bb7eeb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,7 +18,7 @@ requires-python = ">= 3.10" dependencies = [ "precice-config-graph @ git+https://github.com/precice/config-graph.git@refs/pull/3/head", "precice-adapter-schema", - "pyyaml", + "ruamel.yaml", "jsonschema", "colored", ] From 6b83c6bb180a5156372e9289b20e75ecf14198b7 Mon Sep 17 00:00:00 2001 From: Orlando Date: Fri, 1 May 2026 18:45:47 +0200 Subject: [PATCH 121/131] Create test_topology_parsing.py Test to ensure correct parsing of scientific notation --- tests/topology_parsing/test_topology_parsing.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 tests/topology_parsing/test_topology_parsing.py diff --git a/tests/topology_parsing/test_topology_parsing.py b/tests/topology_parsing/test_topology_parsing.py new file mode 100644 index 0000000..7758feb --- /dev/null +++ b/tests/topology_parsing/test_topology_parsing.py @@ -0,0 +1,12 @@ +from ruamel.yaml import YAML + +def test_scientific_notation_parsing(): + """ + Test that YAML scientific notation (e.g., 1e-2) is parsed as a float, not a string. + """ + yaml = YAML(typ="safe") + + parsed_value = yaml.load("1e-2") + + assert isinstance(parsed_value, float), "Scientific notation was parsed as a string." + assert parsed_value == 0.01 \ No newline at end of file From f207d4ccbee8a8b47369a7f02be106e21da78dd6 Mon Sep 17 00:00:00 2001 From: Orlando Date: Fri, 1 May 2026 18:46:11 +0200 Subject: [PATCH 122/131] rename misc test folder --- .../misc1/topology.yaml | 0 .../misc2/topology.yaml | 0 .../misc3/topology.yaml | 0 .../test_validity.py | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename tests/{miscellaneous => miscellaneous_config_generation}/misc1/topology.yaml (100%) rename tests/{miscellaneous => miscellaneous_config_generation}/misc2/topology.yaml (100%) rename tests/{miscellaneous => miscellaneous_config_generation}/misc3/topology.yaml (100%) rename tests/{miscellaneous => miscellaneous_config_generation}/test_validity.py (100%) diff --git a/tests/miscellaneous/misc1/topology.yaml b/tests/miscellaneous_config_generation/misc1/topology.yaml similarity index 100% rename from tests/miscellaneous/misc1/topology.yaml rename to tests/miscellaneous_config_generation/misc1/topology.yaml diff --git a/tests/miscellaneous/misc2/topology.yaml b/tests/miscellaneous_config_generation/misc2/topology.yaml similarity index 100% rename from tests/miscellaneous/misc2/topology.yaml rename to tests/miscellaneous_config_generation/misc2/topology.yaml diff --git a/tests/miscellaneous/misc3/topology.yaml b/tests/miscellaneous_config_generation/misc3/topology.yaml similarity index 100% rename from tests/miscellaneous/misc3/topology.yaml rename to tests/miscellaneous_config_generation/misc3/topology.yaml diff --git a/tests/miscellaneous/test_validity.py b/tests/miscellaneous_config_generation/test_validity.py similarity index 100% rename from tests/miscellaneous/test_validity.py rename to tests/miscellaneous_config_generation/test_validity.py From a62c71454be411d07690c10f3604bfe218c9e5b5 Mon Sep 17 00:00:00 2001 From: Orlando Date: Fri, 1 May 2026 18:55:15 +0200 Subject: [PATCH 123/131] Rename expected results of examples to "_reference" --- .../{_generated => _reference}/README.md | 0 .../{_generated => _reference}/clean.sh | 0 .../nastin-asolver/adapter-config.json | 0 .../nastin-asolver/run.sh | 0 .../precice-config.xml | 120 +++++++++--------- .../solidz1-solver/adapter-config.json | 0 .../solidz1-solver/run.sh | 0 .../solidz2-solver/adapter-config.json | 0 .../solidz2-solver/run.sh | 0 .../solidz3-solver/adapter-config.json | 0 .../solidz3-solver/run.sh | 0 .../{_generated => _reference}/README.md | 0 .../{_generated => _reference}/clean.sh | 0 .../fluid-bottom-openfoam/adapter-config.json | 0 .../fluid-bottom-openfoam/run.sh | 0 .../fluid-top-openfoam/adapter-config.json | 0 .../fluid-top-openfoam/run.sh | 0 .../precice-config.xml | 113 ++++++++++------- .../solid-calculix/adapter-config.json | 0 .../solid-calculix/run.sh | 0 .../{_generated => _reference}/README.md | 0 .../{_generated => _reference}/clean.sh | 0 .../fluid-su2/adapter-config.json | 0 .../fluid-su2/run.sh | 0 .../precice-config.xml | 48 ++++--- .../solid-calculix/adapter-config.json | 0 .../solid-calculix/run.sh | 0 .../{_generated => _reference}/README.md | 0 .../{_generated => _reference}/clean.sh | 0 .../generator-asolver/adapter-config.json | 0 .../generator-asolver/run.sh | 0 .../precice-config.xml | 25 ++-- .../propagator-bsolver/adapter-config.json | 0 .../propagator-bsolver/run.sh | 0 .../{_generated => _reference}/README.md | 0 .../{_generated => _reference}/clean.sh | 0 .../adapter-config.json | 0 .../generator-left-asolver/run.sh | 0 .../adapter-config.json | 0 .../generator-right-asolver/run.sh | 0 .../precice-config.xml | 44 +++---- .../propagator-bsolver/adapter-config.json | 0 .../propagator-bsolver/run.sh | 0 .../{_generated => _reference}/README.md | 0 .../{_generated => _reference}/clean.sh | 0 .../fluid-openfoam/adapter-config.json | 0 .../fluid-openfoam/run.sh | 0 .../precice-config.xml | 46 +++---- .../solid-nutils/adapter-config.json | 0 .../solid-nutils/run.sh | 0 .../{_generated => _reference}/README.md | 0 .../a-asolver/adapter-config.json | 0 .../a-asolver/run.sh | 0 .../b-bsolver/adapter-config.json | 0 .../b-bsolver/run.sh | 0 .../{_generated => _reference}/clean.sh | 0 .../precice-config.xml | 23 ++-- 57 files changed, 214 insertions(+), 205 deletions(-) rename examples/complex-multi-coupling/{_generated => _reference}/README.md (100%) rename examples/complex-multi-coupling/{_generated => _reference}/clean.sh (100%) rename examples/complex-multi-coupling/{_generated => _reference}/nastin-asolver/adapter-config.json (100%) rename examples/complex-multi-coupling/{_generated => _reference}/nastin-asolver/run.sh (100%) rename examples/complex-multi-coupling/{_generated => _reference}/precice-config.xml (79%) rename examples/complex-multi-coupling/{_generated => _reference}/solidz1-solver/adapter-config.json (100%) rename examples/complex-multi-coupling/{_generated => _reference}/solidz1-solver/run.sh (100%) rename examples/complex-multi-coupling/{_generated => _reference}/solidz2-solver/adapter-config.json (100%) rename examples/complex-multi-coupling/{_generated => _reference}/solidz2-solver/run.sh (100%) rename examples/complex-multi-coupling/{_generated => _reference}/solidz3-solver/adapter-config.json (100%) rename examples/complex-multi-coupling/{_generated => _reference}/solidz3-solver/run.sh (100%) rename examples/multi-coupling/{_generated => _reference}/README.md (100%) rename examples/multi-coupling/{_generated => _reference}/clean.sh (100%) rename examples/multi-coupling/{_generated => _reference}/fluid-bottom-openfoam/adapter-config.json (100%) rename examples/multi-coupling/{_generated => _reference}/fluid-bottom-openfoam/run.sh (100%) rename examples/multi-coupling/{_generated => _reference}/fluid-top-openfoam/adapter-config.json (100%) rename examples/multi-coupling/{_generated => _reference}/fluid-top-openfoam/run.sh (100%) rename examples/multi-coupling/{_generated => _reference}/precice-config.xml (65%) rename examples/multi-coupling/{_generated => _reference}/solid-calculix/adapter-config.json (100%) rename examples/multi-coupling/{_generated => _reference}/solid-calculix/run.sh (100%) rename examples/strong-coupling/{_generated => _reference}/README.md (100%) rename examples/strong-coupling/{_generated => _reference}/clean.sh (100%) rename examples/strong-coupling/{_generated => _reference}/fluid-su2/adapter-config.json (100%) rename examples/strong-coupling/{_generated => _reference}/fluid-su2/run.sh (100%) rename examples/strong-coupling/{_generated => _reference}/precice-config.xml (78%) rename examples/strong-coupling/{_generated => _reference}/solid-calculix/adapter-config.json (100%) rename examples/strong-coupling/{_generated => _reference}/solid-calculix/run.sh (100%) rename examples/tutorial1/{_generated => _reference}/README.md (100%) rename examples/tutorial1/{_generated => _reference}/clean.sh (100%) rename examples/tutorial1/{_generated => _reference}/generator-asolver/adapter-config.json (100%) rename examples/tutorial1/{_generated => _reference}/generator-asolver/run.sh (100%) rename examples/tutorial1/{_generated => _reference}/precice-config.xml (78%) rename examples/tutorial1/{_generated => _reference}/propagator-bsolver/adapter-config.json (100%) rename examples/tutorial1/{_generated => _reference}/propagator-bsolver/run.sh (100%) rename examples/tutorial2/{_generated => _reference}/README.md (100%) rename examples/tutorial2/{_generated => _reference}/clean.sh (100%) rename examples/tutorial2/{_generated => _reference}/generator-left-asolver/adapter-config.json (100%) rename examples/tutorial2/{_generated => _reference}/generator-left-asolver/run.sh (100%) rename examples/tutorial2/{_generated => _reference}/generator-right-asolver/adapter-config.json (100%) rename examples/tutorial2/{_generated => _reference}/generator-right-asolver/run.sh (100%) rename examples/tutorial2/{_generated => _reference}/precice-config.xml (82%) rename examples/tutorial2/{_generated => _reference}/propagator-bsolver/adapter-config.json (100%) rename examples/tutorial2/{_generated => _reference}/propagator-bsolver/run.sh (100%) rename examples/tutorial3/{_generated => _reference}/README.md (100%) rename examples/tutorial3/{_generated => _reference}/clean.sh (100%) rename examples/tutorial3/{_generated => _reference}/fluid-openfoam/adapter-config.json (100%) rename examples/tutorial3/{_generated => _reference}/fluid-openfoam/run.sh (100%) rename examples/tutorial3/{_generated => _reference}/precice-config.xml (76%) rename examples/tutorial3/{_generated => _reference}/solid-nutils/adapter-config.json (100%) rename examples/tutorial3/{_generated => _reference}/solid-nutils/run.sh (100%) rename examples/tutorial4/{_generated => _reference}/README.md (100%) rename examples/tutorial4/{_generated => _reference}/a-asolver/adapter-config.json (100%) rename examples/tutorial4/{_generated => _reference}/a-asolver/run.sh (100%) rename examples/tutorial4/{_generated => _reference}/b-bsolver/adapter-config.json (100%) rename examples/tutorial4/{_generated => _reference}/b-bsolver/run.sh (100%) rename examples/tutorial4/{_generated => _reference}/clean.sh (100%) rename examples/tutorial4/{_generated => _reference}/precice-config.xml (76%) diff --git a/examples/complex-multi-coupling/_generated/README.md b/examples/complex-multi-coupling/_reference/README.md similarity index 100% rename from examples/complex-multi-coupling/_generated/README.md rename to examples/complex-multi-coupling/_reference/README.md diff --git a/examples/complex-multi-coupling/_generated/clean.sh b/examples/complex-multi-coupling/_reference/clean.sh similarity index 100% rename from examples/complex-multi-coupling/_generated/clean.sh rename to examples/complex-multi-coupling/_reference/clean.sh diff --git a/examples/complex-multi-coupling/_generated/nastin-asolver/adapter-config.json b/examples/complex-multi-coupling/_reference/nastin-asolver/adapter-config.json similarity index 100% rename from examples/complex-multi-coupling/_generated/nastin-asolver/adapter-config.json rename to examples/complex-multi-coupling/_reference/nastin-asolver/adapter-config.json diff --git a/examples/complex-multi-coupling/_generated/nastin-asolver/run.sh b/examples/complex-multi-coupling/_reference/nastin-asolver/run.sh similarity index 100% rename from examples/complex-multi-coupling/_generated/nastin-asolver/run.sh rename to examples/complex-multi-coupling/_reference/nastin-asolver/run.sh diff --git a/examples/complex-multi-coupling/_generated/precice-config.xml b/examples/complex-multi-coupling/_reference/precice-config.xml similarity index 79% rename from examples/complex-multi-coupling/_generated/precice-config.xml rename to examples/complex-multi-coupling/_reference/precice-config.xml index e2c1e1e..ed6673e 100644 --- a/examples/complex-multi-coupling/_generated/precice-config.xml +++ b/examples/complex-multi-coupling/_reference/precice-config.xml @@ -1,10 +1,7 @@ - + @@ -17,36 +14,47 @@ + + + + + + + + + + + @@ -64,99 +72,95 @@ - - - + + + + direction="write" + from="NASTIN-SOLIDZ1-Extensive-Mesh" + to="SOLIDZ1-Extensive-Mesh" + constraint="conservative" /> + direction="write" + from="NASTIN-SOLIDZ2-Extensive-Mesh" + to="SOLIDZ2-Extensive-Mesh" + constraint="conservative" /> + direction="write" + from="NASTIN-SOLIDZ3-Extensive-Mesh" + to="SOLIDZ3-Extensive-Mesh" + constraint="conservative" /> + direction="read" + from="SOLIDZ1-Intensive-Mesh" + to="NASTIN-SOLIDZ1-Intensive-Mesh" + constraint="consistent" /> + direction="read" + from="SOLIDZ2-Intensive-Mesh" + to="NASTIN-SOLIDZ2-Intensive-Mesh" + constraint="consistent" /> + direction="read" + from="SOLIDZ3-Intensive-Mesh" + to="NASTIN-SOLIDZ3-Intensive-Mesh" + constraint="consistent" /> + - + + - + + - + - - - + + + - - - - - + + + - - - - - - - - + + + + + + + + + + - - \ No newline at end of file + diff --git a/examples/complex-multi-coupling/_generated/solidz1-solver/adapter-config.json b/examples/complex-multi-coupling/_reference/solidz1-solver/adapter-config.json similarity index 100% rename from examples/complex-multi-coupling/_generated/solidz1-solver/adapter-config.json rename to examples/complex-multi-coupling/_reference/solidz1-solver/adapter-config.json diff --git a/examples/complex-multi-coupling/_generated/solidz1-solver/run.sh b/examples/complex-multi-coupling/_reference/solidz1-solver/run.sh similarity index 100% rename from examples/complex-multi-coupling/_generated/solidz1-solver/run.sh rename to examples/complex-multi-coupling/_reference/solidz1-solver/run.sh diff --git a/examples/complex-multi-coupling/_generated/solidz2-solver/adapter-config.json b/examples/complex-multi-coupling/_reference/solidz2-solver/adapter-config.json similarity index 100% rename from examples/complex-multi-coupling/_generated/solidz2-solver/adapter-config.json rename to examples/complex-multi-coupling/_reference/solidz2-solver/adapter-config.json diff --git a/examples/complex-multi-coupling/_generated/solidz2-solver/run.sh b/examples/complex-multi-coupling/_reference/solidz2-solver/run.sh similarity index 100% rename from examples/complex-multi-coupling/_generated/solidz2-solver/run.sh rename to examples/complex-multi-coupling/_reference/solidz2-solver/run.sh diff --git a/examples/complex-multi-coupling/_generated/solidz3-solver/adapter-config.json b/examples/complex-multi-coupling/_reference/solidz3-solver/adapter-config.json similarity index 100% rename from examples/complex-multi-coupling/_generated/solidz3-solver/adapter-config.json rename to examples/complex-multi-coupling/_reference/solidz3-solver/adapter-config.json diff --git a/examples/complex-multi-coupling/_generated/solidz3-solver/run.sh b/examples/complex-multi-coupling/_reference/solidz3-solver/run.sh similarity index 100% rename from examples/complex-multi-coupling/_generated/solidz3-solver/run.sh rename to examples/complex-multi-coupling/_reference/solidz3-solver/run.sh diff --git a/examples/multi-coupling/_generated/README.md b/examples/multi-coupling/_reference/README.md similarity index 100% rename from examples/multi-coupling/_generated/README.md rename to examples/multi-coupling/_reference/README.md diff --git a/examples/multi-coupling/_generated/clean.sh b/examples/multi-coupling/_reference/clean.sh similarity index 100% rename from examples/multi-coupling/_generated/clean.sh rename to examples/multi-coupling/_reference/clean.sh diff --git a/examples/multi-coupling/_generated/fluid-bottom-openfoam/adapter-config.json b/examples/multi-coupling/_reference/fluid-bottom-openfoam/adapter-config.json similarity index 100% rename from examples/multi-coupling/_generated/fluid-bottom-openfoam/adapter-config.json rename to examples/multi-coupling/_reference/fluid-bottom-openfoam/adapter-config.json diff --git a/examples/multi-coupling/_generated/fluid-bottom-openfoam/run.sh b/examples/multi-coupling/_reference/fluid-bottom-openfoam/run.sh similarity index 100% rename from examples/multi-coupling/_generated/fluid-bottom-openfoam/run.sh rename to examples/multi-coupling/_reference/fluid-bottom-openfoam/run.sh diff --git a/examples/multi-coupling/_generated/fluid-top-openfoam/adapter-config.json b/examples/multi-coupling/_reference/fluid-top-openfoam/adapter-config.json similarity index 100% rename from examples/multi-coupling/_generated/fluid-top-openfoam/adapter-config.json rename to examples/multi-coupling/_reference/fluid-top-openfoam/adapter-config.json diff --git a/examples/multi-coupling/_generated/fluid-top-openfoam/run.sh b/examples/multi-coupling/_reference/fluid-top-openfoam/run.sh similarity index 100% rename from examples/multi-coupling/_generated/fluid-top-openfoam/run.sh rename to examples/multi-coupling/_reference/fluid-top-openfoam/run.sh diff --git a/examples/multi-coupling/_generated/precice-config.xml b/examples/multi-coupling/_reference/precice-config.xml similarity index 65% rename from examples/multi-coupling/_generated/precice-config.xml rename to examples/multi-coupling/_reference/precice-config.xml index f319e45..ec147f3 100644 --- a/examples/multi-coupling/_generated/precice-config.xml +++ b/examples/multi-coupling/_reference/precice-config.xml @@ -1,10 +1,7 @@ - + @@ -15,24 +12,31 @@ + + + + + + + @@ -40,15 +44,17 @@ - + + - + + @@ -58,59 +64,74 @@ - - + + + direction="read" + from="Fluid-Top-Intensive-Mesh" + to="Solid-Fluid-Top-Intensive-Mesh" + constraint="consistent" /> + direction="write" + from="Solid-Fluid-Top-Extensive-Mesh" + to="Fluid-Top-Extensive-Mesh" + constraint="conservative" /> + direction="read" + from="Fluid-Bottom-Intensive-Mesh" + to="Solid-Fluid-Bottom-Intensive-Mesh" + constraint="consistent" /> + direction="write" + from="Solid-Fluid-Bottom-Extensive-Mesh" + to="Fluid-Bottom-Extensive-Mesh" + constraint="conservative" /> - - + + - - - + - - + + + + + + + + - - - - - - - - - + + + + + - - \ No newline at end of file + diff --git a/examples/multi-coupling/_generated/solid-calculix/adapter-config.json b/examples/multi-coupling/_reference/solid-calculix/adapter-config.json similarity index 100% rename from examples/multi-coupling/_generated/solid-calculix/adapter-config.json rename to examples/multi-coupling/_reference/solid-calculix/adapter-config.json diff --git a/examples/multi-coupling/_generated/solid-calculix/run.sh b/examples/multi-coupling/_reference/solid-calculix/run.sh similarity index 100% rename from examples/multi-coupling/_generated/solid-calculix/run.sh rename to examples/multi-coupling/_reference/solid-calculix/run.sh diff --git a/examples/strong-coupling/_generated/README.md b/examples/strong-coupling/_reference/README.md similarity index 100% rename from examples/strong-coupling/_generated/README.md rename to examples/strong-coupling/_reference/README.md diff --git a/examples/strong-coupling/_generated/clean.sh b/examples/strong-coupling/_reference/clean.sh similarity index 100% rename from examples/strong-coupling/_generated/clean.sh rename to examples/strong-coupling/_reference/clean.sh diff --git a/examples/strong-coupling/_generated/fluid-su2/adapter-config.json b/examples/strong-coupling/_reference/fluid-su2/adapter-config.json similarity index 100% rename from examples/strong-coupling/_generated/fluid-su2/adapter-config.json rename to examples/strong-coupling/_reference/fluid-su2/adapter-config.json diff --git a/examples/strong-coupling/_generated/fluid-su2/run.sh b/examples/strong-coupling/_reference/fluid-su2/run.sh similarity index 100% rename from examples/strong-coupling/_generated/fluid-su2/run.sh rename to examples/strong-coupling/_reference/fluid-su2/run.sh diff --git a/examples/strong-coupling/_generated/precice-config.xml b/examples/strong-coupling/_reference/precice-config.xml similarity index 78% rename from examples/strong-coupling/_generated/precice-config.xml rename to examples/strong-coupling/_reference/precice-config.xml index 8357165..131bb0c 100644 --- a/examples/strong-coupling/_generated/precice-config.xml +++ b/examples/strong-coupling/_reference/precice-config.xml @@ -1,10 +1,7 @@ - + @@ -13,12 +10,15 @@ + + + @@ -28,42 +28,40 @@ - + + direction="write" + from="Fluid-Extensive-Mesh" + to="Solid-Extensive-Mesh" + constraint="conservative" /> + direction="read" + from="Solid-Intensive-Mesh" + to="Fluid-Intensive-Mesh" + constraint="consistent" /> + - + - + - - - - - - + + + + + + - - \ No newline at end of file + diff --git a/examples/strong-coupling/_generated/solid-calculix/adapter-config.json b/examples/strong-coupling/_reference/solid-calculix/adapter-config.json similarity index 100% rename from examples/strong-coupling/_generated/solid-calculix/adapter-config.json rename to examples/strong-coupling/_reference/solid-calculix/adapter-config.json diff --git a/examples/strong-coupling/_generated/solid-calculix/run.sh b/examples/strong-coupling/_reference/solid-calculix/run.sh similarity index 100% rename from examples/strong-coupling/_generated/solid-calculix/run.sh rename to examples/strong-coupling/_reference/solid-calculix/run.sh diff --git a/examples/tutorial1/_generated/README.md b/examples/tutorial1/_reference/README.md similarity index 100% rename from examples/tutorial1/_generated/README.md rename to examples/tutorial1/_reference/README.md diff --git a/examples/tutorial1/_generated/clean.sh b/examples/tutorial1/_reference/clean.sh similarity index 100% rename from examples/tutorial1/_generated/clean.sh rename to examples/tutorial1/_reference/clean.sh diff --git a/examples/tutorial1/_generated/generator-asolver/adapter-config.json b/examples/tutorial1/_reference/generator-asolver/adapter-config.json similarity index 100% rename from examples/tutorial1/_generated/generator-asolver/adapter-config.json rename to examples/tutorial1/_reference/generator-asolver/adapter-config.json diff --git a/examples/tutorial1/_generated/generator-asolver/run.sh b/examples/tutorial1/_reference/generator-asolver/run.sh similarity index 100% rename from examples/tutorial1/_generated/generator-asolver/run.sh rename to examples/tutorial1/_reference/generator-asolver/run.sh diff --git a/examples/tutorial1/_generated/precice-config.xml b/examples/tutorial1/_reference/precice-config.xml similarity index 78% rename from examples/tutorial1/_generated/precice-config.xml rename to examples/tutorial1/_reference/precice-config.xml index df9d469..daf4753 100644 --- a/examples/tutorial1/_generated/precice-config.xml +++ b/examples/tutorial1/_reference/precice-config.xml @@ -1,10 +1,7 @@ - + @@ -12,6 +9,7 @@ + @@ -20,25 +18,24 @@ + + direction="read" + from="Generator-Mesh" + to="Propagator-Mesh" + constraint="consistent" /> - + - - + + - - \ No newline at end of file + diff --git a/examples/tutorial1/_generated/propagator-bsolver/adapter-config.json b/examples/tutorial1/_reference/propagator-bsolver/adapter-config.json similarity index 100% rename from examples/tutorial1/_generated/propagator-bsolver/adapter-config.json rename to examples/tutorial1/_reference/propagator-bsolver/adapter-config.json diff --git a/examples/tutorial1/_generated/propagator-bsolver/run.sh b/examples/tutorial1/_reference/propagator-bsolver/run.sh similarity index 100% rename from examples/tutorial1/_generated/propagator-bsolver/run.sh rename to examples/tutorial1/_reference/propagator-bsolver/run.sh diff --git a/examples/tutorial2/_generated/README.md b/examples/tutorial2/_reference/README.md similarity index 100% rename from examples/tutorial2/_generated/README.md rename to examples/tutorial2/_reference/README.md diff --git a/examples/tutorial2/_generated/clean.sh b/examples/tutorial2/_reference/clean.sh similarity index 100% rename from examples/tutorial2/_generated/clean.sh rename to examples/tutorial2/_reference/clean.sh diff --git a/examples/tutorial2/_generated/generator-left-asolver/adapter-config.json b/examples/tutorial2/_reference/generator-left-asolver/adapter-config.json similarity index 100% rename from examples/tutorial2/_generated/generator-left-asolver/adapter-config.json rename to examples/tutorial2/_reference/generator-left-asolver/adapter-config.json diff --git a/examples/tutorial2/_generated/generator-left-asolver/run.sh b/examples/tutorial2/_reference/generator-left-asolver/run.sh similarity index 100% rename from examples/tutorial2/_generated/generator-left-asolver/run.sh rename to examples/tutorial2/_reference/generator-left-asolver/run.sh diff --git a/examples/tutorial2/_generated/generator-right-asolver/adapter-config.json b/examples/tutorial2/_reference/generator-right-asolver/adapter-config.json similarity index 100% rename from examples/tutorial2/_generated/generator-right-asolver/adapter-config.json rename to examples/tutorial2/_reference/generator-right-asolver/adapter-config.json diff --git a/examples/tutorial2/_generated/generator-right-asolver/run.sh b/examples/tutorial2/_reference/generator-right-asolver/run.sh similarity index 100% rename from examples/tutorial2/_generated/generator-right-asolver/run.sh rename to examples/tutorial2/_reference/generator-right-asolver/run.sh diff --git a/examples/tutorial2/_generated/precice-config.xml b/examples/tutorial2/_reference/precice-config.xml similarity index 82% rename from examples/tutorial2/_generated/precice-config.xml rename to examples/tutorial2/_reference/precice-config.xml index 59a3297..7843a41 100644 --- a/examples/tutorial2/_generated/precice-config.xml +++ b/examples/tutorial2/_reference/precice-config.xml @@ -1,10 +1,7 @@ - + @@ -12,12 +9,15 @@ + + + @@ -26,10 +26,12 @@ + + @@ -38,33 +40,31 @@ + direction="read" + from="Generator-Left-Mesh" + to="Propagator-Generator-Left-Mesh" + constraint="consistent" /> + direction="read" + from="Generator-Right-Mesh" + to="Propagator-Generator-Right-Mesh" + constraint="consistent" /> - - + + - - + + + - - + + - - \ No newline at end of file + diff --git a/examples/tutorial2/_generated/propagator-bsolver/adapter-config.json b/examples/tutorial2/_reference/propagator-bsolver/adapter-config.json similarity index 100% rename from examples/tutorial2/_generated/propagator-bsolver/adapter-config.json rename to examples/tutorial2/_reference/propagator-bsolver/adapter-config.json diff --git a/examples/tutorial2/_generated/propagator-bsolver/run.sh b/examples/tutorial2/_reference/propagator-bsolver/run.sh similarity index 100% rename from examples/tutorial2/_generated/propagator-bsolver/run.sh rename to examples/tutorial2/_reference/propagator-bsolver/run.sh diff --git a/examples/tutorial3/_generated/README.md b/examples/tutorial3/_reference/README.md similarity index 100% rename from examples/tutorial3/_generated/README.md rename to examples/tutorial3/_reference/README.md diff --git a/examples/tutorial3/_generated/clean.sh b/examples/tutorial3/_reference/clean.sh similarity index 100% rename from examples/tutorial3/_generated/clean.sh rename to examples/tutorial3/_reference/clean.sh diff --git a/examples/tutorial3/_generated/fluid-openfoam/adapter-config.json b/examples/tutorial3/_reference/fluid-openfoam/adapter-config.json similarity index 100% rename from examples/tutorial3/_generated/fluid-openfoam/adapter-config.json rename to examples/tutorial3/_reference/fluid-openfoam/adapter-config.json diff --git a/examples/tutorial3/_generated/fluid-openfoam/run.sh b/examples/tutorial3/_reference/fluid-openfoam/run.sh similarity index 100% rename from examples/tutorial3/_generated/fluid-openfoam/run.sh rename to examples/tutorial3/_reference/fluid-openfoam/run.sh diff --git a/examples/tutorial3/_generated/precice-config.xml b/examples/tutorial3/_reference/precice-config.xml similarity index 76% rename from examples/tutorial3/_generated/precice-config.xml rename to examples/tutorial3/_reference/precice-config.xml index e87a42a..dbb49dc 100644 --- a/examples/tutorial3/_generated/precice-config.xml +++ b/examples/tutorial3/_reference/precice-config.xml @@ -1,10 +1,7 @@ - + @@ -14,6 +11,7 @@ + @@ -22,42 +20,40 @@ - + + direction="read" + from="Solid-Mesh" + to="Fluid-Mesh" + constraint="consistent" /> + - + + direction="read" + from="Fluid-Mesh" + to="Solid-Mesh" + constraint="consistent" /> - + - - - - - - + + + + + + - - \ No newline at end of file + diff --git a/examples/tutorial3/_generated/solid-nutils/adapter-config.json b/examples/tutorial3/_reference/solid-nutils/adapter-config.json similarity index 100% rename from examples/tutorial3/_generated/solid-nutils/adapter-config.json rename to examples/tutorial3/_reference/solid-nutils/adapter-config.json diff --git a/examples/tutorial3/_generated/solid-nutils/run.sh b/examples/tutorial3/_reference/solid-nutils/run.sh similarity index 100% rename from examples/tutorial3/_generated/solid-nutils/run.sh rename to examples/tutorial3/_reference/solid-nutils/run.sh diff --git a/examples/tutorial4/_generated/README.md b/examples/tutorial4/_reference/README.md similarity index 100% rename from examples/tutorial4/_generated/README.md rename to examples/tutorial4/_reference/README.md diff --git a/examples/tutorial4/_generated/a-asolver/adapter-config.json b/examples/tutorial4/_reference/a-asolver/adapter-config.json similarity index 100% rename from examples/tutorial4/_generated/a-asolver/adapter-config.json rename to examples/tutorial4/_reference/a-asolver/adapter-config.json diff --git a/examples/tutorial4/_generated/a-asolver/run.sh b/examples/tutorial4/_reference/a-asolver/run.sh similarity index 100% rename from examples/tutorial4/_generated/a-asolver/run.sh rename to examples/tutorial4/_reference/a-asolver/run.sh diff --git a/examples/tutorial4/_generated/b-bsolver/adapter-config.json b/examples/tutorial4/_reference/b-bsolver/adapter-config.json similarity index 100% rename from examples/tutorial4/_generated/b-bsolver/adapter-config.json rename to examples/tutorial4/_reference/b-bsolver/adapter-config.json diff --git a/examples/tutorial4/_generated/b-bsolver/run.sh b/examples/tutorial4/_reference/b-bsolver/run.sh similarity index 100% rename from examples/tutorial4/_generated/b-bsolver/run.sh rename to examples/tutorial4/_reference/b-bsolver/run.sh diff --git a/examples/tutorial4/_generated/clean.sh b/examples/tutorial4/_reference/clean.sh similarity index 100% rename from examples/tutorial4/_generated/clean.sh rename to examples/tutorial4/_reference/clean.sh diff --git a/examples/tutorial4/_generated/precice-config.xml b/examples/tutorial4/_reference/precice-config.xml similarity index 76% rename from examples/tutorial4/_generated/precice-config.xml rename to examples/tutorial4/_reference/precice-config.xml index a431fb5..a4e987a 100644 --- a/examples/tutorial4/_generated/precice-config.xml +++ b/examples/tutorial4/_reference/precice-config.xml @@ -1,10 +1,7 @@ - + @@ -12,6 +9,7 @@ + @@ -20,25 +18,20 @@ + - + - + - - + + - - \ No newline at end of file + From 7f1fd6e8229555a8d929623583a2f7566f44e439 Mon Sep 17 00:00:00 2001 From: Orlando Date: Fri, 1 May 2026 19:00:53 +0200 Subject: [PATCH 124/131] Delete adapter-config-schema.json The schema is now imported through the "precice-adapter-config" dependency --- .../schemas/adapter-config-schema.json | 69 ------------------- 1 file changed, 69 deletions(-) delete mode 100644 precicecasegenerate/schemas/adapter-config-schema.json diff --git a/precicecasegenerate/schemas/adapter-config-schema.json b/precicecasegenerate/schemas/adapter-config-schema.json deleted file mode 100644 index ece008c..0000000 --- a/precicecasegenerate/schemas/adapter-config-schema.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "type": "object", - "required": [ - "participant_name", - "precice_config_file_path", - "interfaces" - ], - "properties": { - "participant_name": { - "type": "string", - "description": "Name of the participant" - }, - "precice_config_file_path": { - "type": "string", - "description": "Path to the precice configuration file" - }, - "interfaces": { - "type": "array", - "items": { - "type": "object", - "required": [ - "mesh_name", - "patches" - ], - "properties": { - "mesh_name": { - "type": "string" - }, - "patches": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "read_data_names": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "write_data_names": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - } - }, - "anyOf": [ - { - "required": [ - "read_data_names" - ] - }, - { - "required": [ - "write_data_names" - ] - } - ], - "additionalProperties": false - }, - "minItems": 1 - } - }, - "additionalProperties": false -} \ No newline at end of file From 7a4adceb74c1f63d39302ad61c9c42e3f27dcc58 Mon Sep 17 00:00:00 2001 From: Orlando Date: Fri, 1 May 2026 19:01:04 +0200 Subject: [PATCH 125/131] Update README.md Fixed a typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 934c39d..fb25f7f 100644 --- a/README.md +++ b/README.md @@ -147,7 +147,7 @@ We provide a preloaded schema to help you get started: 3. Once complete, export your topology as a YAML file - Save the generated YAML file - - Use `precice-case-generte` to create your preCICE application case and configuration files + - Use `precice-case-generate` to create your preCICE application case and configuration files - Validate the generated preCICE config with [config-checker](https://github.com/precice/config-check) ## Documentation From 279c72ecdc294f385f5b9863a735814c83bbed27 Mon Sep 17 00:00:00 2001 From: orlando Date: Fri, 8 May 2026 10:53:32 +0200 Subject: [PATCH 126/131] Update precicecasegenerate/cli_helper.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Frédéric Simonis --- precicecasegenerate/cli_helper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/precicecasegenerate/cli_helper.py b/precicecasegenerate/cli_helper.py index 496b831..3cbbf8a 100644 --- a/precicecasegenerate/cli_helper.py +++ b/precicecasegenerate/cli_helper.py @@ -23,7 +23,7 @@ def makeGenerateParser(add_help: bool = True) -> argparse.ArgumentParser: type=Path, nargs="?", help="Path to the input YAML topology file.", - default=Path.cwd() / "topology.yaml" + default=Path("topology.yaml") ) parser.add_argument( "-v", "--verbose", action="store_true", help="Enable verbose logging output." From 3d0ba078139e9c5b371280e0f91d3cad06ae4bd3 Mon Sep 17 00:00:00 2001 From: Orlando Date: Fri, 8 May 2026 10:55:21 +0200 Subject: [PATCH 127/131] Update cli_helper.py A shorter default path --- precicecasegenerate/cli_helper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/precicecasegenerate/cli_helper.py b/precicecasegenerate/cli_helper.py index 3cbbf8a..bcebad5 100644 --- a/precicecasegenerate/cli_helper.py +++ b/precicecasegenerate/cli_helper.py @@ -31,7 +31,7 @@ def makeGenerateParser(add_help: bool = True) -> argparse.ArgumentParser: parser.add_argument( "-o", "--output_path", type=Path, - default=Path.cwd() / GENERATED_DIR_NAME, + default=Path(GENERATED_DIR_NAME), help="A custom output path for the generated folder. Already existing folders and files will be overwritten." ) return parser From fba53d3b18496212086a21366e6f2c5787068d7c Mon Sep 17 00:00:00 2001 From: Orlando Date: Fri, 8 May 2026 11:02:12 +0200 Subject: [PATCH 128/131] Move runGenerate to cli.py I think this is makes sense as it is one of the main interfaces. Just importing it seems like a workaround. --- precicecasegenerate/cli.py | 22 ++++++++++++++++++++++ precicecasegenerate/cli_helper.py | 24 +----------------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/precicecasegenerate/cli.py b/precicecasegenerate/cli.py index f145233..4156c4c 100644 --- a/precicecasegenerate/cli.py +++ b/precicecasegenerate/cli.py @@ -15,6 +15,28 @@ logger = logging.getLogger(__name__) +def makeGenerateParser(add_help: bool = True) -> argparse.ArgumentParser: + parser = argparse.ArgumentParser( + description="Initialize a preCICE case given a topology file", + add_help=add_help, + ) + parser.add_argument( + "input_file", + type=Path, + nargs="?", + help="Path to the input YAML topology file.", + default=Path(cli_helper.DEFAULT_TOPOLOGY_NAME) + ) + parser.add_argument( + "-v", "--verbose", action="store_true", help="Enable verbose logging output." + ) + parser.add_argument( + "-o", "--output_path", + type=Path, + default=Path(cli_helper.GENERATED_DIR_NAME), + help="A custom output path for the generated folder. Already existing folders and files will be overwritten." + ) + return parser def runGenerate(args: argparse.Namespace) -> int: setup_logging(verbose=args.verbose) diff --git a/precicecasegenerate/cli_helper.py b/precicecasegenerate/cli_helper.py index bcebad5..308c0a2 100644 --- a/precicecasegenerate/cli_helper.py +++ b/precicecasegenerate/cli_helper.py @@ -11,31 +11,9 @@ PRECICE_CONFIG_FILE_NAME: str = "precice-config.xml" GENERATED_DIR_NAME: str = "_generated" LOG_DIR_NAME: str = ".logs" +DEFAULT_TOPOLOGY_NAME:str = "topology.yaml" -def makeGenerateParser(add_help: bool = True) -> argparse.ArgumentParser: - parser = argparse.ArgumentParser( - description="Initialize a preCICE case given a topology file", - add_help=add_help, - ) - parser.add_argument( - "input_file", - type=Path, - nargs="?", - help="Path to the input YAML topology file.", - default=Path("topology.yaml") - ) - parser.add_argument( - "-v", "--verbose", action="store_true", help="Enable verbose logging output." - ) - parser.add_argument( - "-o", "--output_path", - type=Path, - default=Path(GENERATED_DIR_NAME), - help="A custom output path for the generated folder. Already existing folders and files will be overwritten." - ) - return parser - def validate_args(args: argparse.Namespace) -> int: """ From fba30295a52f24b203bf03a99c7e51cb856772f7 Mon Sep 17 00:00:00 2001 From: Orlando Date: Fri, 8 May 2026 11:06:32 +0200 Subject: [PATCH 129/131] Update pyproject.toml --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 8bb7eeb..996c91b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,7 +16,7 @@ authors = [ requires-python = ">= 3.10" dependencies = [ - "precice-config-graph @ git+https://github.com/precice/config-graph.git@refs/pull/3/head", + "precice-config-graph", "precice-adapter-schema", "ruamel.yaml", "jsonschema", @@ -26,7 +26,7 @@ dependencies = [ [project.optional-dependencies] dev = [ "pytest", - "precice-config-check @ git+https://github.com/precice/config-check.git@refs/pull/3/head" + "precice-config-check", ] [project.scripts] From 5f95d88f33080ae5f024c56da2f3de02e81c3114 Mon Sep 17 00:00:00 2001 From: Orlando Date: Fri, 8 May 2026 11:21:19 +0200 Subject: [PATCH 130/131] Update cli.py ummm --- precicecasegenerate/cli.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/precicecasegenerate/cli.py b/precicecasegenerate/cli.py index 4156c4c..031190f 100644 --- a/precicecasegenerate/cli.py +++ b/precicecasegenerate/cli.py @@ -115,7 +115,7 @@ def generate_case(input_file: Path, output_root: Path) -> int: def main() -> int: # Parse the command line arguments - parser = cli_helper.makeGenerateParser() + parser = makeGenerateParser() args = parser.parse_args() return runGenerate(args) From fd9755afca9d2e3c494a42eb7b2c97962d0d5c37 Mon Sep 17 00:00:00 2001 From: Orlando Date: Fri, 8 May 2026 11:41:37 +0200 Subject: [PATCH 131/131] Error checking inside argparse --- precicecasegenerate/cli.py | 9 +++------ precicecasegenerate/cli_helper.py | 29 +++++++++++++---------------- 2 files changed, 16 insertions(+), 22 deletions(-) diff --git a/precicecasegenerate/cli.py b/precicecasegenerate/cli.py index 031190f..af1c46d 100644 --- a/precicecasegenerate/cli.py +++ b/precicecasegenerate/cli.py @@ -22,10 +22,10 @@ def makeGenerateParser(add_help: bool = True) -> argparse.ArgumentParser: ) parser.add_argument( "input_file", - type=Path, + type=cli_helper.yaml_file, nargs="?", help="Path to the input YAML topology file.", - default=Path(cli_helper.DEFAULT_TOPOLOGY_NAME) + default=cli_helper.DEFAULT_TOPOLOGY_NAME # Needs to be a string to cover the case no input is given ) parser.add_argument( "-v", "--verbose", action="store_true", help="Enable verbose logging output." @@ -42,10 +42,6 @@ def runGenerate(args: argparse.Namespace) -> int: setup_logging(verbose=args.verbose) logger.info("Program started.") - return_value: int = cli_helper.validate_args(args) - if return_value != 0: - return return_value - input_file: Path = Path(args.input_file) output_root: Path = Path(args.output_path) @@ -117,6 +113,7 @@ def main() -> int: # Parse the command line arguments parser = makeGenerateParser() args = parser.parse_args() + logger.debug(f"Arguments parsed. Arguments: {vars(args)}.") return runGenerate(args) diff --git a/precicecasegenerate/cli_helper.py b/precicecasegenerate/cli_helper.py index 308c0a2..1433dde 100644 --- a/precicecasegenerate/cli_helper.py +++ b/precicecasegenerate/cli_helper.py @@ -11,31 +11,28 @@ PRECICE_CONFIG_FILE_NAME: str = "precice-config.xml" GENERATED_DIR_NAME: str = "_generated" LOG_DIR_NAME: str = ".logs" -DEFAULT_TOPOLOGY_NAME:str = "topology.yaml" +DEFAULT_TOPOLOGY_NAME: str = "topology.yaml" - -def validate_args(args: argparse.Namespace) -> int: +def yaml_file(filepath: str) -> Path: """ - Validate the arguments passed to the CLI. - This checks if the input file exists and is a YAML file. - :param args: The parsed arguments. - :return: 0 if the arguments are valid, 1 otherwise. + Check if the filepath points to an existing YAML file. + Otherwise, raise an argparse.ArgumentTypeError. + :param filepath: The path to the input file as a string. + :return: The path to the input file as a Path object. """ - logger.debug(f"Arguments parsed. Arguments: {vars(args)}. Checking if given file exists.") - - input_file: Path = Path(args.input_file).resolve() + input_file = Path(filepath).resolve() # Check if the file exists if not input_file.is_file(): logger.critical(f"File {input_file.resolve()} does not exist. Aborting program.") - return 1 + raise argparse.ArgumentTypeError(f"File '{input_file.resolve()}' does not exist.") logger.debug(f"File {input_file.resolve()} exists.") # Check if the file is a YAML file - if input_file.suffix.lower() in [".yaml", ".yml"]: - logger.debug(f"File {input_file.resolve()} is a YAML file.") - else: + if input_file.suffix.lower() not in [".yaml", ".yml"]: logger.critical(f"File {input_file.resolve()} is not a YAML file. Aborting program.") - return 1 - return 0 + raise argparse.ArgumentTypeError(f"The file '{input_file}' is not a YAML file.") + logger.debug(f"File {input_file.resolve()} is a YAML file.") + + return input_file

&1Li0EIW#KE#n1+V}iI)8|Y3$lTh0 za$kuNxLZ`#5iMYC?dGpzAYg9V_BRndEaz+unB?{Qa?OP~w+~~{B=nIlH?AKFvc%|x zfQe86NvAPjJM;c@$8K7rzFGXWpr0VS?kM$-8WKallDwT zQl+c}$}JY^qZoEhG4hr4cMAO`+8@5REpD8j?zWdEjCz$Q*L>NkG_>5Kl&bO=WtR7C z(|h8v56&R6$&uvuwLq6(=OdFlL4G~}s_tYDyVaw@O#iKCbZri29lBO?kiD3V?xMLh z7n&%f)3q#z3tgG&yt%|noQICmce>#0J#o_`+6`)xni>L`#{|K?$G~2Xpq5He1Vx-!Z=p;Be{Z__sUMc7H@lt7b-? zfAsi#2LD$iY?HJIxR-tF%)cOTl#wTvPTd4|z%c_3-<1sZ#kx@*UpSsq&L44*51RErt6 zIuQZ@K|r`n{UtGV6fU97uX|`r4VZ7^$Z%@7hs5eIlG|gDzGm$x6mT=&-duvGq0|_-xeP0>dx@(UHEm-o&1&{*lVEvl`G`kWVrxKgaNw^)wzUZj z+8OH%QeRQ5e|5(>|6uU_dB2ZZXMzuS*z%}UJ)MFug$oa>^{S)`{l8lw=3%rMMf^4+ z*IkxkoQ$R=3tCvH%y5NHEEHjgP4ggO%NMGhia$E_rp63U45!7Kg=6?JH7Ff(-vI|n zO(A=tc1&CJDi>C*>>x>6fUS%OMbi=88@a9fjdWax3@Y{@C`{R3On5p}>3|WQ9MJ^2 zy6rzAa6hQMwj1@*778ZDl60}ZJ{>thLUn0WK#jfzlP~>s+n@2pR7Ka}yD-# zI+Ap$I6?Rg;rxfwx>GD3I!qeUZ^0*FaRhV!Z`{IKZ~j6|1uJDqB4Vu6um_eh>HiS* z-tkob|Np-|lfANz<5&qHO7=byLdlF|M@A)k%O2+_lo_X_jBu=M5wa!gls%HY>EL`H z&tC7(@AvC-4-Y~ZGs>PHe*V50CU@)0Z;+WmNWLOtUkk!75ta+h zDRI#-EjvE4*`&|3ga^vH1_e2fL7oi`5LY(D<6TmHfs`!Z4_}CmLpY@4Hklw9NrgDV z5mu;A`Gojz&v3Jtz3;%5_v?neou!sz9viEzAElb6J-ukv%Ov$be7FH%>`h zx-0wf8iPTWRYu-hxE)~KMr=~PC;fi@dJd70PYR=yG?wQ4oZH%N6kFSNHE}<&bEQ75 zJ6WTre%M}Ckslj-Wy+eVNy9fw7s+EA#?`>_^Zm2(Ofbf^jSNO;SgwVI*T@@{5^mY@im^ z{ZL_2-Di}Ogq*;gZsinNQzFf;Eb{5Mdg7~P$%h3wBYX2~@;0K!zZ|rKTH62Pn0nFM z=lg7Lk|U-56pt_htIJZ=7p_OOt*$>lEUt3mgk=p~ivv4d0Kb^FbUQCwr0NbvfWqp# zYsNIENXe#FEOBeXfDc%kOFVH6=)1NSF;6#1jkYOP>^emnIt17?YTMG|`&vLajbczT z@n1JFP=4=pb}$otSw&~{R#72#i0pXBn47>VjF7o$h9E=t>z?K!`UmMmea`Cm-cVba z%p7%8(JblkL=B(M6+_ETKLnoYzYw+n-0$s>n~TBj>I^2GL_k2bz!QGMOPD4^1}^Wj zz)@m(%}<{Ualn5@T=5HJ#>{q%1OM*?2u)lN9*0PipF>1~z0d|m@#@Q*3H{P~qs9@( zOObd`@fv(iR2LW6_PsP`#ezP$_G-!L+RD3I+C~|;FT1xE@-w)WNEzq~ZgDtb#5W^o zg)T|XRF6!S!Oo=Yk`K?tJcsaMLoVRKw;DdpkQ`D8p8 zK^kc^+;4G2_G)}mtyO=rKp1(-aplIkAg@s!LUsaGT{@Byp2zyfkTYtY`KdsAirH+~ z=ocf=TMLTDllP9+{*0C7uHmU-UyNMWJ+GnYknM2G`@M`YsUUd@@wXA>BG%_*tViAZBSbzwM0}1D9e?RcnEjDtSV$bC@pJvy=;(C3&Z!PKG5+JZg9ig z{@g)px%bY8aE`yxNE0wRoHi922_N*cKoQ5PS=*ru2Ma|72pmv zH%{ov4^-gJpjA7I=lPMwgbXdWv(1P7&0!ORCQr@soP~{K#xN2X^|OTAiIjx-1@Xx_ z#J9DH%0{XS9-7=GVs_-J+Otx|mk)g6$g|#4#{8j=3MJ|e$FAG5ToRY{<&C^y--d0I ze)pR}VJEHGPtqvAj4$qcLn*X#gq{p0%IQ-z-K+5C7A^PTM=3xs)jrnwo4X4TM&8z{E+|z7uIcIK3OXprPr_ZGxKiA+85(X5 z^TGK#DbaFuXACpXl-ViHDsw7%byoL~b(mjp)^}tB`ZaKi*68a>V{F&bV8j$urjRpm z9hiL|i)O87uIrK5+Rg6T^UMU?qypImpf&CPhk;pOWH=QG)z(oovCsF_BDM!rm;QEn z(J8%1sGR%ch{>KE^|002spz>7U>s6N3hXNIcOXd|R z%RlGvDAz>hCU5?l~8PV?(=i0SWgY)~7w@ zom%M|rHj)11Ibh|3^C&@xI5Zwjt`J|!iTqrhFa*+J50AIz3qvn$xJ(VV@_qogP3F#-d=Khkml2cW=UFGH~*gw7; zf;cX>_Dl@L59eo^HoJLX^XOm&UP{Chm)&~M1g4&UJ6k89NN^;aLClnxtoVQ8dQ#6h zMc*x3KEDeJ#;=gU+C5UPFNT&9`jeteFR>6^Golv{Ef@jLaGf(FB0W9Y3vq9=j#4o? zvsaY{tD~3?Jf*v-CP9C%G!Z01vvne>#!ttHUXFWrVdoj(sSL}i{IAh!uO?!HmuWoI ziIkLxTxM(4TT=!{BE4{kd?i^EZh-(`VK7G2$tHaRzsjiD2+ZttzcquXh{>dYZMTh`v>bA%bDEh}LJdP*y)xBeSh60N7+`n<0B__}04GL)_)zZIvDolxJTesfPZFc=MZuSJ!FWP1q>=L z^ORHJDt|I{TZLH*3fyfZcY@D38XSD}+M&khb>RA{x!`EIc*JZ$LOCw?N(J!*WyaCa zv7I>(;Q*~WW3nIwH_%YbY2`eY<|+FjDO_J(Aj{17%0McHc?mML>%7&zkCj~s&C1IL zrnF%A6jx?BI#YPQt4typb#^YTBQ42$j|iZqLHv#alxUB zO1CQEJc$-2w?%$hkCs}msta_7m&1qvEk*WznV>iC_GtIzt&G>g;U>Rp)hop8nA?7X zVb=rTC@v|(BkaBgNVvYnQak>#0hv@#6rHkBk3-P;f!K2#k*a6!l&&$CEckIB>QHI6 zI|Mwq{49l7SGYIkW@hFa$3DEyjeOqo(mNCX~Y5J z4F>kSU~dDpxVhfaDcTMa?U#1}3B&S{=Qe^SY6{4*>s}ze>_E_nf)YKsls41OUzVsO z`6Z43Fb%f8{2z{1-Ci76UegHxIlXh;%4%6%cDV%ZAv6oyBwL~14!cf2cV3pkK5I}} z>Z)pEhP~rTS^s#*v2s?9DD;5%trN+me7SlxwH!f?M`Epu0(hRc!PvQy`iizq9!Tx@m!#C;8l1VjP;qYVMLpEvG5YlpO`F;|7qypO{}E9S~r<(8A> z2Q;?IhgV0#` z3Wl8Zzcte-CpU(@cOl3L@hc3bJdi{48zDu0eENGL|EKz*ko)({N0DMk<9Y$6uMz${ z;&)LG@?lzVEbI;T(XZ=o%0#`d#^@B|isNIMf>HSKVD%d_U}G@53h|B_J3Nt8Py)Sm zg#%t=P*69~1&Sn;7?u*mkPcsvt)c3633D*`E9{;Q5s^Ov(TC4~acKlu(^O-?<_ovD zTd`#N-r{X{&8D!^4txne^+{k1ysFZd2nBKpC(+~42q>@80suH03m9BJMbdpbU(qx? zM0t&!s_1nQs%uuFM&n|P07dO~fCNf-woNXaLRT&()Kw=V0QgsmL@+1(KVZjO$InNb zuvLB3#(in-mTSLkrmNCJf+rjaQaBG>K?|>Gi%&1EI;3X82e%b!#kp^1z;0BlMS4{xMDXe(tpZd+W*@>FE)ese0FFW%ieG~dJkUj`Vyn3Ked zM*o!_&`%w1Vnl0;8sn#qMhGG3xN?tJ3qigoJ`$FaT2VOCK@vQK{BvMJPk1P2_>7BC|62WuKVY}A4j#u|*~63@(2jF-x)+%4PC z;oxN!CY<|sGlI-`CJ92+m|2B=Y{*xzU1|iz!3t7)C4|bmPwoKD{Y+OpV!{CQ#9jnG zmq%|Lwg6;cb&hr23q=f`GWTXW`9lER^X#TY$%|9F)qfdP3C4yHYWVLDbSnEV^c-3? z>pZHa9r)mKOqcWwJEpZ0pFN(8nu*@30}xRAWG)c2SQDVLC3N5W?BuxVJSf^Ik{%-i z!N%xmc`})@y*jTB)5T654AVh62+y!EhTDQiAa(MLV(#tsHm|z35b~tw6>R)GNCX0z zH{j>5xdB1CVgh5qvZU)8gj@UXBdCs};L^2Jd>;KxBYl0Kdn$5 zbzTd1&w`th|G`2RD(90H3508HAiqq|IkGhu=mV%x_VeuI0P2`6L9|I+yIO{Ke)xSwa5Kjf}>g&E% zUr>jlNB)oF%t|r?RAncTN-f=2OYTH=t^fbGN_?7CMix*rWP>^y;@%=&KzWYLKFA*v zcj^^TO{NVPI(~UisSEkyv=g~|0B;B=?zRB1w}t%-gf-VYmMxou8=>?@iPpj4mzoGy z4Z!>InN4OZ1B2uC{wx3CQf`8X0;#i8` zt*}O@$6xg`pYc_+4K&x!YUuIG2x?mR)Ii?pJvEd;9i0q9lcE0hm}|cPRN6PM zo6}TG6RKaWn~OZA0j%+VV+0fzRks!RKzA<0umP>elNIESjUE5Wd#!jjiDUj^Pqhn1 z=U0f!7a>qIh-K^-q_7x5&qY&lSlD^S?ly4|P5 zc0ig*_kB1GZE<;n_Kce8>VU>ca!)P|im9(Si0IV-)tL33rZHG{a`{YdK*^_B6|e4elzzOZ@3r6ST)O!PkX8r|S5&27Q1LbDwLEg@RIb&mg&&wI_T^gAZG!9c!i*S*bk7&u@w^10*vbJo3sIjq@SFT-|1b$xCaB!NSYzk%Q&Pl^~`T^2^A znO0%XtO?Eg)TsnpTrfk+S4sgs=yTV> zh}3W>PKZ_+2rzTZ*u*Hc)ub}l{`CF2OZOb#PE8N^2TZbd%tIKJS(A~0ro0i2eGOkKT%0O5S5gL zMLy^F0rYSzi~J~Qs$jJ<%UaL-(te05#rz$ya!;_Tnr$??k4_9M^)?PczUs023B7p~ zpc_#@aiN7j$Qh^^d%_VMdSKyV{YYbO#_!0gF62@J+uS*7U#m+xS7w{A%t`7W^*8iZ z?IN!*UGv=lN|d9H0}-TL7v~U*7_S})d-rqfenZ)4Q1$0!SKLA8c|U0vKX<~|S>UN5 zzT}6;!NYi)^~2I;93ky&!1P|t@aX<=S)ct4x8uP0m)GAxDOCLqoC`OYS~G;xf`EG` zfF6Lusc<}I!3YXC_waDKT*H9kZbG5lFp2M7AgcP(Q2-7_eF9h1K*T{5g8CiBDka?I z2HZ86ortj!SzD~&YS&W=|Tu1oTY}^z?&aCz1!^kT_Vt$pn z#3u|UN8VJ}0iDOx1v$6hD?h+Pvj0T$V4ho;A!$Oz`y>QRqZHL%9IV8k5zpZ|q`8b` zFSB=SuH__g%6tVLXje#o%D~QqP}*f3tx{dvrjvA|30F>ua*UFL!vi za?^C}$nt-mnsoeaTi8Sty>I6(jZh^o^AM7cpyUn9su^N8{k2S_RY@q?an=> z7Q^stm>HSNd6zJpQ-9V{o<*N?I%=;V?K9)cOGKNr`&T5PJ=KPR$In6zz;dV85w*p?;BHH`0apnCAE$i0iGk zNj+WLlsv0expyQm5hQnR%9d+-+&RE>^7}!vPY7;4PsvUHQ1)PRT0s(TcJ}LU*=gkr zAHK3J7i4`A9($qLn!qn$*Wp|_Ngn`0p9<$%UurN!WQ>c-owA0dAuisNL{P$6w?88o z-?17KPn_4?i6;j}Y-vFTO7pUmpT_WJ+R*#>mm)6$sOG#bsa-selN`LBAxg8uC%px2 zc1P|h#0+A4wTcB_y?jdQm$E#6t?S@9ch>&(TTI*~d(w^7&zAql!#W4}T7sfu5#C#P_9)>E+&6^CZ%{edPs! zZk!_mB17&P3ONu|E1W@2gVovto9Dj)@NJ-uBi1)T1ZnBl#N19gdtN@ zGj>2y@~j7{ogm(fY2ZCID+!H~0W!99)8nMJYN&pR`I!jZ@BErVYJaAqcb}c~4?Li+ zP$cc(ndIz!Ei0xkV8Gd7a9=jz|3)K~5aN2rgVu0zUFvYvZ+ynI>|Ysez*;B>49Ij>l6&c0LNV%S7;DsDU1YvS z@oXd7J31lE6MX@E(KWwRHiO0PRKA#KcFdfbu*Y3>uL+N$oveO}bDPgdtTy}=RJ@=h zn95r-n@CqZyH8i7Tq8OE1GhFEa#p48Ks!+r63A5(B)QM6nu96TSiLuyyc7Ju50L7D z;>a0gF5cU@nhUYDJvJM5lR|tL^to=*25xjkV31$iK1jfXAJu%{AO_% z&&tjFCDRjg%0t4^L(|Q+9sBeUeAWl2e7c^O}w`Q*E<}4idCG04kw% z5J#{dB#0XXpyLxlOb=B=OjC>-*gh83&@C;4C@ZTBL9NSjvn-GJ?Bq^lDtBF9Rmp#M z8y#>QNVtmMzFK*AQmA<||BjSmNm4$ zYaIwO+Hm{cmbafTaAmpxhKd zz{^rQHx4x>XF#^FRoue9v))vL-(y4bbJOvaG{&a7a`v1ldtdRhwUK*CWUq{AK6K$= z*lO1w-?VJ1S)n7h5d6;(B2@11al%Pu^C;-=faBF%yXt2`n@>e=c@mR|AZ~-?37tnW z-YC>6XHdVHUl|CLyGN$~usqgiZ(IA+NzUq)ZBv0R$$vF?OtG+)S%Q8T6TBvDA+-G| zh)5fUQd*CBFnMO%ltW=p1dR(Aco;-ec%7r-i=%Gdes}Yg^*j2gg?tbuH=w10D1#Bf z-Hn!2i&ekQJOxPSg+sv~qKHi|H9Uklexe+VZc1k|I!>0W?cxvYA7W`GS_vN-9T>3* z?`3Q6AX?RP`@lys11y8hdc+K~&lk7){(88rHe0%veF&I%SDxvH``~W6^(nmC;ef5u z-4UN%X;ab3s$Ayznyh7=%Ln^W&SBxBN~;e}Kh z@tpmo@*?%F4CKq0H-QG&6KgOWpp|iPA#l9~oF|Ei_VBFdgPIQwEjT;F&0_a7EbJA{ zq8VT9JS2gY7%*B-I5M7ukM#H(?!Z?stHW?GX<_x!F7Ezo^9k9HdJ?XSxjc;-L=aHH zG+2svzkFCMA}c)X)hirxJ3oh?>(X?+h)-(y>7cOC++!%WdP<1ydwAj1%ZsiDZPAY3 zmol?iwqw~#t^^b%PRJ8BNo{=4<`El?^och>lp1fp`A%$4(0v*(b=fiEa+*q+Mv`ed zE_y5_2VH~9Y|1LK<2?@ahvc@qytq}Ig?mB5u;Jl6DV{#bJ)kSp=bt5xby>kcsoV88tN_rCSWTEA6@A zHvTku9dWFBV-NqQ;M`%$vh=){51vRIKV1^-QkVPjww)gXP52S}X1ElbJ)8lp35JE% zEF{L5l-Lyd-y$tRfO!}X9`L6qdXz+iw(ldRqVbTFw)S;|`2O#qFCK-glDdIZyoy)5 z4T#%i+c`1Ph|7Pt8ys)IsNi0gV^UtTp_LdAQ6|!bYh$A-Q9CS9?ym)(Hd?FX8S}^?b`E!z)K+X@D5Rm3SlV( zTjR(s+3Q9c*yn=AUPxSEI15PqC}X36l=pArzb=;uz8I^?$;(i{Ij)!eEY0@(e% zWvDDcj96Z-LiFRw6YXow+8pXWP-;)(xv(cBsaOOnb)MMA8Ohf!v%iHB{uK1uWM+kZ`jft(se&2j-+EMPU(LQ22%)+ z_V6wcup;wtFfWWYo(ev4@x8$1=~w0FzN<5Qs3v5d1PRh;s)d{-;@m+4H`f%5Zpp?RN6 z&vSBtAfX(HT6=4_&a`7FG|PUUM%>g}e|ZY4i5i{g@}Dh_xerP%!-`I00Sea=)v>-_OU~Wc`J!y^oGcaP*~SpHg)_?m!_jD^dJP=?-Z>)?>5|zIde%QlX1=XQ5TA=F~qk z9)@|L0Z!Y&rDFyxly=;i&o=KM>b$c7Mex@~J$>7kxaX+$6@fLEfjYgVJD-GHUHgr0Vh_JjB zvAuOvINs4gbT88=4V!C=xr&B~#QqmA7PA&Xn*e5O-ZC*ESe3Wp~MvPbKQ#0``RMC&?dt?$FLHD!SmmSaoho0 z;FbOGTWv7yKj*jmS0ga(K@XPGeJUCb5;$cP7li~NbC0MO(#0rNU_{-Hdd1r)#XiN! z&T`4y##M@#34vNMc2(j^whLg>yFr{_{C+P9K0InuGs#PNcK6Tp*|HD**?g&Gb5O{W!{dU(@uqOL8cPvS$ijLprCs6 zr|!*0To&7AQ()O#@QCTL!iXDValxTLHZwIFooOhRs4g4m9D6vPH(PH`demy z+L7Z!L8SP7&k*I!+EujRbJmA_1`W~EXU(}=1bVYV2_8Lge3gY4R4j-(1=hyQ$0jyC zZ}RiJd_YmeIZ;=avza%u_e=18qxxF|`Z=S*P z%<pDqbZD-}u} zq{DRe4Q?c-y@8@Q?~6#P(%zLI`A!|m_IZRc-(8LWCtKdB#6J1(jxV=38wx~NxB>~L zFmXk;z)d4PDrp{d*nrk+6($N2>WI^8(>fFdK57>jOSnzoT_JB+-BQGiQ`z6s4wk;a zav|DY%+&evN+eMF-u!LP0H{Vg9GmRU>^**jujxSj883XX&a!+RXAH?c>7 zU^HZGr7WtJ?FtraXLXl-WvYGJL+>D1?FA?M;SMA!1y!&N5E@NSqXmOHH*4;Mw!B*w zAd86g{f5YXK-B)+{yGwz1 zPWe{m{$<_~U&d*5{Nq1`!2G`zVD^NF4#nI+3{3^>!K@Qt`vaddG-^v_v{$0@MlS-O!_1DN>lw`!%7voOdhL?#{m`% z{yN!;pC`mE>gJuIj2-ctP6v)Um3G1^9sw-4p+~|NJ^e9c29#WBbej=}m0}D|uionk zjFgwXkq8DtHA@2+@;P?N(S{bgru^r9L15-mMo+skSV6&ec%MYtWvhO=YZeY2h(lza zD^OD%)7mSMHKkSc^13^k%4P3|Y!Jqe6?g}B5jW1}^U1V~;tE(&b=#n2Xk&~Q;6n#I zH7%t!LvX43a~lwgscHcPoo|vJ34$} z!tY)bvm^rvjo+lDt1)E+bx|^G3$jg538i8%FCsN9R0VoqBc4*(uc=ZJ*n5CGe60;Z zDpAz2m3sTbi^!M0BO><%g5#%{qKZAgw;dchh2UOOj@2I3oK5UkA4l|=dJ@82;(ksp zw+F4|k`u=7lN0nrZ_-`Yh6!%_MOWt!v9yDd!o4uobf}nAElCX?f7SEFqNX=1T%W}v zZb$J+sxOf0G?ELev#f4`In}cZN8Nv;G@&i==H3NGl^r{d(ATej$Be(SSyWMF5g&mzW6*9v*+=a)lcyKTw{(F(yiM&ifo%_Ud4uC6vWUp;YyV`lB*nV__rBaDTkgqR;%0OxVwxpY8r^U5}5 zOc)`Lo8=UBd*@(p@1J*Bi$6Pdloo5AH{LZ}F8(Ed_@stPhJ|CL*1!N`_*nKSm^2-=L{YiYAXK~z45Ybs*o_&Ul4GcN zzdYu*g=N9?q&XO8<4r$diive)VmOcw_-C5|6*))w%LBiuwFT^VgG#VHndrE@AY^d> z5w7nUz5-$igF~kjI4LLNnHiw}Jx&nz?BKes``Ng5rhi8>5Md;ybVUL;zHz!SRZGAT zUZ0kVA1q1u(H;pz5&zLMn@xU)%OP}@PEFPt-TjZzVZEJ@B+IL z+JOb#89Ip^=k9;h09jAFt@u|4OX&X3ssqQa?^gcraztc?fOstkP)XFopL9rW2%&gQ<# zw*J0`5lB@Tn|0{BPA`Rbj5S}$cl0orMzM_--uaqFy}DIu%co@w>kOdyT**B#ec3Gg zlp3x`O2iX-RF@*iimS1vx0hdK3!C> z_Et2BuzUP43H(0xmyY5!FAPyzM+5d9Q84%ryU*USYJgE+<7F)__%O9-Lo^#4gt^~& zopZHu7X%gmJJ1)d-HqWH6wow?jwc`usJyc(m$ctg-lC0R%}F6b5?zq@#`Gwi+W_f@ zz#$@GMeY*b8U+9g^bJtjkYI9kE&~1%1SD)m^mY=Q`6d87GW{2_UVuMIQ_YoCQL z{{_DBab=OMu=P`eofqvSQ8eRccQ-aoZ1G>$tAoDyh~0J_>#0=TCK>&mudSPFNK`I) z@vuWEH0pMzsvF>R8qe{99JTb={4&O5XK%#1wn@O0Z%Uh1V%*cqIiI+yDa#*@FYD(j zE14^7L1Vdx{`a@sopZ&#`=5y$OX)t;oD||=F5)y#UFaWC-765hw33d!xa@J@h5WU4 zSdj8b-enlEc`ahE)2HXN>IX6JD}?xA{Kd*R%C(fUuOSai{X;4boHCzY_gFr@){tO6 zkmjhQ^IH6*uegoaQSztl==%>27m+29PC1Cby8Sq9_?+^r1dS{|76@-Sef=+{a!2T2!KQX=70O~stViOP z36?eMNJ7s=1`^b+$kgD5?IhOa-UyPGVc@U8#W)q0`zGVHCi-)sq|l1hJs*N}YvIy%Lk4 zu0#Z)1vIx8G|Odp#6aLiv;O$XK}gNXDnMq+H8l=}Y}^qCJNqaamWnw19qd`-U(2e3 zkA96J)!EA%;Wy(>#_FGKT7L_PwFQR5;D$FjEc7K0IR!q449R86Vziu-gk>t}9c}nF zkMjZN*r5=AD;30At{K#Pzs|X^4U;O8bQ+Hfoa{7B?Qq|z)QVw z00Kh&U5VMnIT8)^NG-0f(ZunxL?!_tNAsr^a#9*jBatPUid2++LZp2=u(-*Zh+o*9 zM4a<93d2A9J;?8}r&2J_>0n?Kt1cBKM$-ZQ3%xP?qoMpLV1@jqBagnR%6Ls&3-+%7 z=hvLOp8}FZQJEZ4c9Au0T2}LOeg@%>fA&b!_c9;Lj|rdVVDo)pi~Q2VUo%)#78*fn z3_hvWSPEvt*ih*L;s!N1_ZUgR^~Eis}KVD63cH3?5t3KQguxt&YnN-<5 zD{p>x<`BSFQ?nj)^G^h+y%(i?_{rx(JZdU6UqNuvQB5dL=yW=6QtLBnb?I3fI z%W02On<_EI;jU8XgH7;Yu8dJ=PC0>tnsXNWzQ+dwamF z>PupXNJ3I8qCMkV)D&*_*8{|VJM$Vr z%C?{D3>ZyXp9$=*Kujpj8W5ELn|-EwaamCLn`V8h6Dz)t&ILp7qkbL7J;#ZdzrRKKCrI`aHR+P}+W8S7r!y-so9= zlnD9*a3k#k7i#TVr>2-~JHP!S3be{r3u(?ybW5V@S1IqUnbsT;?T^or=n)C!jgPti zQyG<2;CU8pu1y7lWyu*Hq*?^p5vfFwL-SPepGC*ub{x~CdNzZf5i4uR_gM#ToTl=> zphEEU5;!0Rfdj^g`*m7*%I8@GxkmI(CqNB7@OkpHN3H~qhTd=I2r%mkHf zbcuES=--3&%wLsgIASaHr;f48`U!GZ6ev1s)}U^6Ek)yeIan5TD<3Z~TLKk(PuS1g z7ed2$KW>%F95p75pYcvlW`p;M&f>?@Ypn%rAMd?SPy0OkK=w1};;Q zs>_1;ahV5L<#tJ2+-IRH0sjJdaIrSM(ZB7ZPha}jxYI-BT|`Uc#dQbDy@b8VpXB5v zc|8%&c%G*JdZM|6SS(it+ODV^hOeJrSPt`=JbWvzc@Ow%&$db>`4^KTuZdSeBUP%T4BDl)I#xLC477&I06ZDOD4O7(4orBSR6)+`Q0ep~mlF=vH zvr06$LFVYm?<&gfK_P1o$%{kXE8SiE-QJKy6_4k1ti@h195;6u_=X)#Eq;J8XadBy zrbkOGNVOaK+V-c5${1U8VD}5l1ucFb^66G*YChw$rlUDp!^nA#(6uoLbJhj^s;}0( zelCOc`mS8F;`y)ymI=_y)IP~UHu+wAV<rsu#VmSF+&ieVOZ~Tu;`TVaUglD zT@J2C7ili-{^FaSpeykBBq*4EVN0QH;@Op`qIuoibKx2 zzuFJS_Q|{5)Z0-(y4Fhy+$;S+Jvx@EHo_PDbnsmS&~}+H?R8bhpJ{ z8K@1|&#onvpH&#@P{4WER_OV&p7e}Z_zHY!+WyMbl!$ek817I>5|oc+$2U9MNF3oP z&T*v7Cyz~#uOwn!B`mPc;0$%CgPc|V^hw}x7CMH=D_u_i7A<6|r}+1z1ifS2kDz1` z_iB)lvi{BXe@3GPpaBQe6@%vsWdLvb%Ykwj)q` zlnPL|JNp|T(yuCuqT30<{MEAAsW)S`Vj7Hj9l=Dm#US|(vmnakO_hS^CvfjQAcmDd ztQ`q}NkX~4y3jQZXnIe!>BDNkU~&{BoYw>SxikXI>ST7KDk=Sy?x)`is1djRJOT=> z#qQ^Dd9Zb>0qOLExK>{8E`A{Nh11Sl(^l97GRT2ufq&?e5Pm3y-WaCT(O80eMiu0u zze~Hrmy8ozBu-afK;Axr(%~W*IK!T>86zXRik<+}A>_RZn2Qy@B+O+0Rs@pq)cO3Z z_3~MKc~|J|{!s8s+GZqA4EG6m38tUvVt|Iz2WWXFsfDvr_7oK*2L@PPo{m^ZIeiD# zA%(>kCdIBl)=~ik2@s}TZI&T*J+;5Q6nT8wThZ9!;$^CGY?0v#L4AR&`q8gH-S@hJ zZ+0o4E45WgUeo!;M-l)^-r>DK1R0R_ObeqW{no$}2qkFZbTjnn16V$~y_K}KC7gL^ zyyp9|9i6sIwc=I=GE%Y4oxba|jOQdpOechRjXV2Q2!SeW-U)g|*$=S72vFif` zn6vy-ymm^QAXQkpwa+VIB9KQu1|?mzG0K9(mTG=M+qku#U!4bdE&dun{<))hdK(>= z>8V0PK1j$~43;%6Qz5%q+`>q_fPC_P)&pAiPs#F28IgSoOt$`_w;DbNNjo(vfj{VD zU0CS0hsj+7Nm+*5XBaN@j2{5knn41#^_uB}Tsxf)^8g530_a`WtCyJ{0m2yJEIOfC zf#hG5hPUKj3II`%V!3#`OXp-*o!l9fmuk=N!vcP^<8tHLVm$cj(?rGQK6rDb-8pWM^`{hc@ZX3I16H7(mI59ig7 z{yG~`?GlqepvZUJ(k!qJlso14eO)xSAX>hyd^AJ43Pw>Migd9?T4{ceU{0$T#Ewdg zS0oPd;(VLCinnAqdQE*mJ5Rif^t|Uj6?a?SxEq2Yt{Nw+)02v>d z;pkx&5edBQQJwdqVq(g=lq@j=h_GJMje#5sdMJpb1%`y#A&fx1ED3n zf(Weu95@cSNBz*f9&_?9%qoUdV4fcdED;3NGur=ov>05XSOmePDZDeRCpiJic>r(H z?@4QCA!`P_TK{i+!_%O2`i-M4Vc-M0ZbLbBPb9U)DI5tCMR~K8S=+JDEqyyZ0k`x4 z7%NSJn)&yN^+an+7-?e%6b0dN_1BZsMSCPwyzl`0ONA1w7jFIw9Lgqov!=j0DDqb> zo?0bwVrSEKF6qGDAC>% zAg+yl&D-L$;Ce6WY+SAkWQ(hmg3Ibjy0{zajkyoz=RKfE4_<2k;`g1Z1%r!XXyFJ- z&8g?}Kj^Ohv}M2N`=$y!!~Y8norr? zu}D`B)NnO6m!UMbv_=W_FSTCt0PJG{bLa7+pP-kThX#mntvJj|o$JW^S(7V`N-_G! z=D}S(=eXp0Q?nU}DkC7DheHG?kH&$a#z~%Y_!P_^*bYPP<9&g_#+n08tsm3t2$YKl zfZ|oV)fssbP1SE}X|IB|a#^icSpV%uhnCdE&tEgi*QB1dfvxfa2VRaqtqLnH1|(<^(oXa!xYGX7O^}Etgb+=(})R*~y!qikBhLrm_dP zk>R=E(E>Mjm|dN{@V{ybxO;#6w&j#NE8}`N>M83IVVu zm)PwY&yaTc`*xsUYs?lYazQBlKepaGoa+CLAD1Yj%#f6MkTN2BkAq{Sq+yf2Gcz(m zIZ~WsCL%g2Wn^z6Gpi)B6Oxck9OHMtd_M2*_w)W;-#^~(>#FNYo!5CipZ9$~?#Eyf zF_-5mxGx^}MO_eo(t&mx*m=XyDHiRN&UB^PgW*&9S8)EzP8+%4kmTxqL+C zbKcEZg^ioz!j9z+pO=CTVY)&xhkGXcu7v-}6d^&W_t(wXZ@w5?>wSxIH#7ImbP9z3 z&T{X;G1ed9LUi@Od$fV_*m14(hyg8r{o4TNK7#X(75R0i$y|q(jkpqRltamJ1iy&h zfEtudm*P-O1Rp)V?42NJ z)`ZQ|V7Z#U)apIr(W=GAP)#l*@7Pcc7L|f}0ffiGu0@W#AV}zoXn&j1bw%@xErORl z)VkSs#NUFVx-A$n#fuKno#$}qK>Ye_fK)v~E_7FkIA2UisE7RekHbsXa}1il?9%O> zf}rnD3lAp0L3LP2u}@znbb#h*YwzC1$WFS6RUoQ?HU)o=rzRN&PGL2zT1ZR^#B&e2 zgGhULMb;{%kR4VE=ixcnFywx@TW>S|VY6!lw3ER0vlPxaGXGPrzyLp>{unc|;wjY~fc81*_sk}->ZMc`_eR341gduHd$y*fo({dxtK zf`x0>3^+8$F!%|Vn1Ck79WUW3r1&lu-N|T@L8@vve`vY6_f&iHXg)h@f++yco-&?T`Cd=PHe>#@+hGeZ1PcgX9rFId{n$o*46Haxj%$c# z9d|Ux7&5Yk2PtLg;r8nG_W~^}95}|oj+j5nKVUNYA(wska81vSqc#BWO3GM+4^aHb6N(2qs&VCY0}G z=r;xtE1UIjpKDVJ{RI~8h|4#>@k-Eji}amM%C&S6ps(`R#(j1CPS%1J8O34*Imeo#!R&~;dn zr5v-ZtG8!T;(#CZ>QP9~*D&B5mZfyA4csh47{AaE?+}O&YmSd!0SF-)H4*C?v;GU_ z7oUl0aLq&p$AHxFTn7uiXba=rUgLD;5xC~v49@?lIYt?(9C(#XxlAFZ7Ew+_<5-!5 zjoe%Yu(gPsi24EQIJ2RR{8u!#@)uiaB?=j^G#|^7fSx=)x4HW68L=il}Wk z`x}b8WzXxF7r+I$foOGXLcJ4)pFjXPKxC55)9Qg&rYOnYf@ZPuW)l&f6loVw1tvP4 z-)es7RQNIqD(i`wqNMYBRpmrCCDKNdZxTX&0u`JleU%1{LcKh!s`SKy}qZ~ ztvrM5htn)Ha6b;iL2(7XbGjcDMJQpz^RC-i&6b-&2mrQb8@!_li-)m^u;(hSArXkI zDF>`evD#kUh7`oTqUs15kvMK{@M2H|TI!o0K)o*iNmN*;NBk09S*>#=0Axd0d*Adf5PoWmUMaB&Dh0$k=sDvOcU zHOXWPi5E9JKkO$ThS4JGZ_wW34Ccy(2Bih&oAJ`i0Gf)UBHDVbnYBF^J$Oka!tj8+eWU(Uk9@<(V$ipH&D6@Cf@1CsD`v{(TB5ND`)$_##$ z3wxiGZDW`z*7`)zY-O<{RAOIC9KXy%Qm^i^q6&!%91DYwTw0+p!j!8eFOJsV`E;FmkoMlAjXF3NU1eK5K1n4?sIP}sSgN=JSE(*4@cGpWzbqmt*O80Z#U7+f% zcktI;8Ok*(md|7MIC;exKzd<{s5GIr-fo4G^=D8n5FoMHje!&F`4;Ao;MJ5oVo)z? zF#l!`CJo(tYnM9@*#fqgZGCK~3{91CFN3EDJ{o6!mcv=;p6)_iTn&4z%~<7pbNMq6 z$$p*UXHw8(9v-xKd|IY=_``3a-dGr_6Af~N4^rY7^`6{LVS{u5Q0Id-Y=;qxd&9XIRv~xmEBe{pzLQA zXeGy`elEMLvXVURD;P)r5~{sw4KI-|g2*d|CB38g0Mh(Y#Gw4ClzaZJIt_VB3@R7y z&c4r8@CsM;7g}pVeUqMuI96NKqd52 z`2Yi~?lC`AT+UWnjPwr*mON%5V;e9vD1u38!1FN5Y;R-O-Dy9y6>;X4$Fp#4G#usV z1cOARoC_apIR5$4+q^+7#6Zr_3@11-VWo8uD@(zF?3>D$-$KIVtIZL(LV~ZHzJeBu zZFAj0X3&5&2Y1a>qd5^$SNM#1Ftyj|F$owndCFm|?4SAc3nvc(WFVh-oRaPkPM|8| zvm%eZGI0ZdA91a}YHxV9Xhq9ld*s`~YJU@gMqJ?`m8X#iMQS40Ssd1=#I_cy83J*X zLjwr+(=-)k43*-JT`nf;B@;*E+;N zJVD;~Hdt4?Lg9!nmv|*{;6mDze*huN9E~?s`m=fQ329X@sUdrzy<>^WGSH3I*H##%l zW|8`xAHA1h)Vt$vfwD3_*L!OjoXm%2L%0K#>!vQMKusgUD$|ry5Eh#q!Sk#5Vo&41 zpD;~)1AxL|m$-RnIn5`!EEn?-)fu(c?ng++lbj?MSb`GOB}E2 zC!!zmosr;o7s<6J>^s&c-uW))4mVB^Rn(J%&seQ$f99VLi(GTS4#Ln9>3j7HCR ze^RNdSKi^t+lbQqSFu``oUNTR%pAa zlo3&kzKjW@vocvRE{5ya-eH+MG{(4d1+59K&v*ZHH(6^D2A9c678Z4Pz5W|?5 zsXoKEk3!EzTz(*rXFvvEj#y;;1~Z@apkr~oq^Dd>@Q3hUFd7Mdcxk$GTIV460syz{ z5ObKdJu831wZEKHnS%FC!O&?yqv`M7(-q(e`Er#J8qT-!M56Rb&?V@I7`}v}UGsq1 zY+=iyF`J*BBIY#}A(~bkDn*kZYpt#IyQGz6!*)w)3?jJmLj1{M^nmuTg1$oVM!tOP z8n{sXpVvUuCWQn`#*I>ADi1KZ<=9eQ-n-yu|vdsGd|9sQu&IlC>!amnqZaSWOG*EUm30Hex{sj!O5bg}XC)80S z{ds^qo4~(zb!7R#o6#uz-}B3B^4ojl?IMJo&nwH|x3CetMOYPu!++MwH2?`qWZ4hc zn0EwJ0i&9J6`OmcGGb!@AZ;VnjAY+11kmHZX{+Hpk@jhir4rc(3yd9Ye-d$-Py&^+ z%0&j$_AFm8CRB_eJa+`HonHVOgAtgPo}hN|ud%2D%^&nXb49k$sd;sY?LzN84@T9c zuodrSF3WpR>FugWD6rp3DD5+DcS#KR zo#PU4MVhMlh_!lT#?|6~mXNo~<(rXbQXUXJD`xxgCftO@fxbwk$Lkz8n*VbXh@F9~ zJ|)}=Ms6IpvI)fgzcb@NM+^Lw89ATk)m;das@O!k9qJOk&9Ktbb`G}0su?EO+_0c2 zFxs2qCRx$RLSV>+2W)Oj8x<6x{`5^3BYyM^Jt#J%#{qrD_Rfe$B(*%&x$Q#f{#5nUH-{nws};piQ%uD$gCVks*7Vw> zFK4O_iqUd=eCiGWJCMCy#54%;nt|89E&Km>2>=@Jin9gw%?!&2dKC~a{1Py3Lwfs_ zq}Y@o6)))7Hef9qKzhxI6h|kMf|!(wnQ=32ztqogOE&e4l5p+u7M zVotVIVk)4?(SPgJV+&W!DxO0TTlTk_ki|R$@_ihqJ+!39hOl zhz+n$*Tyh#&FMMiyhv$Acs5!Q(Ebpu>I0y;2#j`YGB~&c9vOVMco2oKJSO3`E`d?g z|9m6>?@Is0_uvVw$b)@n^sARR3QcMae6>oF@*c#}AxY_FF{TyhZR)HDtq6%tvZ4NOv7snlSR|wiOX_bC0CNT2n7>0zPnQHP|Iq zApwtLFqJiaXQ^V)$Z^Z`bxt~5JHoq#b=Th*3JhpxzrCKf($odzZEN!c12wY8b{?y# zM6aAyMywhh-KvcqklhCV?{b9pAUBo^u&zWp*~zUo=NuJv=cmG z=7FnR48r1*8*$ZYL6w%F9qY!{@Y|Q@^bqM16u-*~VB-Fcyz&N*99X%I@O1&md{^!~)z=Hx7KxxqMScf|B_DY4O3LhWwE#vM)vo7%~k$hOulEsk4A34|REb z-ilzn^bQGH`N%OVw`|~F#L#;OLFMOw$z&|?&{S`KZ`UlV7U%@N#7e+KodJ$7>)^sx z6R4+ck!@Bo&dZs>%(wg!jX(&YvJuX~+#FX2w5o^;%Lq*zRLT!#JClCCaKj)LA5)|^ zeB0-^ecoKp`>o`7__RI=&}^i~jaDOIxptO|;crd4YWeJqNqIiM4mat~4a0NzkS%0vXh38jV;i1#vhxAT z=|EPX?gE&=`I=7HnK~Uk2wqV+_-`Y`UmA?Ia6o$Al zb|S2SKlVA(KxIruxMy{XUpCW6+ClaJUSUpqXObe!pRrMLG2G7&p~lyLmQwqt!$VNn z+g9i6O$j@9i2E+Ymz8Bfle)uo(=5dy<;M3^i6#x)Uvn+-L)UK?92Vq{NYgIj>I?B^V~4 zK4&GM*%I>{c;d3}GwW=a5%zsTcE)E)sd{@X5FO*(tN=pS(z1sU4rGoaIa2 z14;-}=`c;^;bqz=UgP8|*b?P1rko&fi+6r$4yGOo!VN)Sy(tO6e?{^>3H~@@DLyfP zaO!k=9`P=>AdTi6_9&4oODZZDS)d>t$o+bNQ<@V)8!HzOYfSMnh@XM2;g)H>D-=Q1 z(~Qfclpp#?;z^#I>XRD3{o#1ot!Aq8U`nG-wIMQA?=jf|xjAOAS&T~*G!oO+SzMZm!1nO2fe=qaifKqi@Z{iS~1K?mz$T zpQ;GiTsgLH-5usLzceXll>efj=(G%N&&KpfmCxH(O60xch-bVf*{nVcfvbk7xVEfk zP)u&Z;8a^z2$(kB{4|#sIi)T3Cg61)35K_aUCS%mG)lk2`ob}aBqzJCg9Cv46zwR; zC`?vARmPQLpQ7~=M)haW!73lekvXiOb?-JjOk!|LMsd|kafaK$YzhG-(IHAZOW_^X zJC&gPzW!YK9!4a+jl@N*%+`ssQS?vk_V2gpk65&DxJrCjD!+8g$w=r<==(R7|7iT4 zPUE`8crJt-UFXWQvPWa$0%a$xA*vz4XCMQ>iv*}2 zVg(W1v~skOW0Eyid5?#_2s(pE-N>xHgx#Zqu|CTHJrOG`3U8?+THlUQL`*l((0o2^ z@&U~mCz0B}r14X+2+tGCunNoo$s<=ka`Cs?AC%(T|AHH_$BOO{#fBC4ZxQdz z6ukB&c7)^h`;S4Lsy|%OcLU=b+R9L~;=FWO7+0uHZ)3MmTKGSjT|yScS;68@pXaBS z=%DLiBlo_C98t%KS75F;JY1so!8{{)zbrGuE8%}g^JU$G0k^-P0h5ko>$yS(Za+{3 z-u3UdScloyeCU!gyk5+)xj3%W8-3vTB#r(T@XS1T&lrXqmLVwPxezZa%s$`@QFXkm4X{R#l?oN!VF_3X8E)hcMT#Fo>qg-N{FMsAsoF;jv^B z??hlFfj{=6)fMFJVuIc^P&WH3z3lawRFCMOFtu_&usped!=zjysex^U&z!9hQ%kTs4IkHMh z_y5USAoWxJ0t_emC0(#PBCzO3ux^BW-v(X>j-ZS6-nKYv>drNX*T$@GK=;3MIx70W(`I2BC>ooWEZSoD}my%pD zhFEcxAa+V)jCdw|34Q8%oYw^7Ze7v-8Zxh`+9V5ucj>}#xd~M7i)%z=luoEXsKBvb z(33E&tOX2r8a}yL2hxYelWt+g<5MGG{Q|NvNhN+&*n69e*_pB_-mSPHy=wVrW)Xg8 zwNUm%Iug9J%|rhe8gA3Or@%yX-0%~CNCh_(fQQ6g>%dK|vaOc14ZG{BL6^j%LNagb zwUmlPb%3T}jZMNF3N|?ZR%L-b1BnujQ>L zBq0D#n5Gl{yo0`3F~t9KgEp=+3crZU#qffop%s zGkA=D??zA@Rk?p&;2CR<;I!W>^Ekp~hR+OKyFw?N+yQP{)g9P(gC%wL8g$XGDt*CD z*ii%*N7w6zij0u$4gthyX_L~@1Oc4Y-MSwG)oA0l`3B{iki)PO{o#1U@B}}1ZU$^o zyAW7WKj;}y$q;vuIZNc~ZV#a(X{B1PEHrf;%Qus&?^gY$2+Bq=Z~3F^^^dmR>^~Ng zbRU~1xyfG!}EKRb|0!!OKW>`cO~o& zFJ3UY&_5q%>=^Vlq-(>atUe^@cKsqSM_TQ`QjGE;z`aTQLSvpCLc&)dWwKV71i{Vg zVzhR3(&-YDd|Jvl?+eOc?_;$F^*D*kgSe-37^s`Igp6#|AO(Fi48*NhyMU!u=DjaG zDLg4Ekn!jRvb^QJmDLN7y?m79Mb4LM#tbC%{W+^sH9j!T@oR-+wB=tfj#l7}{fZGn zy;d-%6lM}mMg0zVk- z0%>TCOrk#!{3v*8vD|D(DB{J0?T*5(Mc-ea8n}FPOY*d6}iJ+V0km+L)@Op6k2STadXH-96Ml-jkBw}W!f+rnVbG1~n^Hfm9-JlP`pdt{m0hD%oU=3?;o7Xh@9BP!C!=pQq1v{`| zrse`c=vG&EZ8yDwus%|6+reCa{SEM@EOc(m7b&T$g z>7O1_8d-78NZd5d0{VoiMZXm4rcYMJ6 z$N{i%J)g=;O1s`Hq6pk@I9THuX9pWbs!d!_q+J)eo~M-^koBPHJL>82+CZ1hk1VGB z;c=~hhiXQ?SZ&bDQD6OF=!_pgyJ?%KZsI`uY6fZiyg z{g&c+$17NR3@TTuiJ}*cv6+X#qu?Uy{hF#L=kO$qW!l^9@iVAsE&?j@qoq?uPKZYT zX+W*?ZQ{W)h-C>pNVZmr^6`hY?h)RcXyB2#+YQY{=~?uxFD?eMH@YaZVbw1 zpMkrd>+5lqBy`Ujij=Dyhf*g!Bj)8`=91NL@A9^oEG z=Ks=|wzNmqCSxj_KIn++CcUoP6^m zm0#*01*YJa8rA_a`Fgz&Ltw}Agtq02y|b_N2rDdFq*mbxQhW|t!D?ZYiCZ{S7=alr z-c*A)+cbxgM3C617~r4G>rt9BMv;8xqdNhjVE1G?{8(6(@0MS};pxzGU(^A`ch z?bSRn(v9`?cZjie`!1IPVlQ5jd~5P`K3mIfu}4hq)l;Lqb3~{`G8dk2M%z{IixMrd zgOt1*K?Pgtb`r)Z3QK8&Qw=E2>37Z|O3jLYZ{5?k;psfYfIdqQh;vd??L{=7<7#Oy zu8Y;;x?4A_&Emtb-tCeT>jpny%e~g5iDHh+3H3ogy#}U-^9X4{<$;YD!$({K4XhR(Lc4Y?_Tl^7Y2F7k<0nWtJO}d2mK@N~xbw>_nC{X?C2s`dLT( zW(D7b-Qgysb2sQ+R)2Omf2Nr10xI+5KnLc#>D4RO(uRV2*6F0sx4Zan9nQ~|u~=F> zit2Nqzl`k9>BoOrT>0N`|FVL{j}vi+qnIfe+Z-^*m7h%ja;!ifML1`p62W9Zd|jM< zy$p`C`9!qx%~GeYC*pU)qQn^V5l1^m@0#mNufe8cKh5}k-*=xJ-D7%XYGu#sB>nW! zY79RyEK@z1iw!8T#z|nB#jg_$Mo8z&VB7w8-61O+C(hsMC)5qjliQ`1r<_SzwK#A7>yv;!tODw8a6Qlt!1$`v z+5}|&W?818f3VOx(DyrJkdMM2Ba}H89dx*zT$GYdNlSnyd+zduL+r{D?DehALV)qt zw-Tg@hgQz694CE4S4d@jT$RMy+Sp)*G$k}bKSrd9zNH&|MD%pymB@BKmNws`hcnN} zu(Glq!mW;gk**WdIm4y#nVCarJoJ)UCC6LrBYF@QZrB4z?Xw#Y5rv^CRRxT<^T4|H z$&`gq5KmKi3e~x~C?l z{^K!o#RF?W)(e)Q(LqrDSH(N~@~cmJ;jGnNlw~Dn1f0H4>Wv*x-`281wEpKB7rzJr z0W4LB{)~lzu3k0!s6jN&1lA<8S(Z!6cFHHn$m9(sF!Js3{IS%Ba_*f_o_7A_ynGg* z(EYpcH|6XJhaLMt_BHCzP71nGnR5q_wY&Zp9^E~53}ySc^DI?WuMm8{%*Miv~?Hp8A}rS(I^>N^u=`yzXlu-4~o7a{q)CBz@F()mQJo4c9&1 zBpneCc);Rj5IW)V6I~5A${+&Sa2)zne-Ehe5NtTzJaI@8q#7R&&7G(72wVSJ7Zf;t zsZEd~i$J{+C~yzP<|Up!vV!Jd23f8c=??@M;$!$8qh3N`di;{Sr4LCWj@6Ho4Y&D( zey~bseb<=$V>m$a+ULPo>S?+O45LZ~mp?>dDFu(tG;o%lc&(*r^YWzvN&8bT8_wm+ z)Q|cY18An!ksuEE>h9^r(uF^{Kh-MpXjPag1-0HXJi|0d+sZ^_l%gc#obXKZ+->mC z(Y62&yO{NdM0L#1@7UJn(Fs2*rxs_;(y)I zQz+J$dGhRY%lrbwN7WAWw$|rR<7dgO&eE~QoA2$T7FGgRHe` z{E5~CiYZ+Nj(XxBx#Yim`swqrU}|j)xc^R&s#PE^x4B87^y$1D;j}^gHh>%fPdSI_ zW+Q`yZqo3oN8OBAQ;LZ%d3d+am|Oo!vi5P`tPdw!ZoaQLLqqoh48r{jre>`TMG)hr z^gn2)8_@fkroGI%`0XX8?-AZbB+f%-lZ!;G`-m#VjIPZmKg@>C@$Tgj>GwA;ZJ)}> z_&5%n9dAR~HVOyvPrX{`3rZOYI`67Ro-RdiNp-IsSPYo9QM zINEDvmqDDDoRBPN6elhz8pFMQd2k0Plz;tcC>1N;v&J%FfL ztM>%a8ki25jEHtnrEHZRb?h;fblNT&PXqFsHS;!=>5n?&kr_}~@tjrNdE zi2=D$mtNiCX)d7}=l;~%FS97lHpxKv%@@lIB^tQ~SG6$TeWdulyih_C>mDiT4~vxC3L_0-{WKibFVKlXF2@m$QHF!HOOe_w?{h4F-;!B~;-OmWQrp zlCe8^Qa6H*0bSVkC+197y7-2 zW2akuay$D-^eM}8gShvvebsX<v13{v&>!an9 zDM|Nv0i@Gwi#(a+iA_g!4xtpH+rOl`Rn3MDeX9#1Zac?cXk9@PaqCVa=2$o6S7t&# zP#KOd-eK9X@x97XOx<(gZO|K|Oj5g$d=Se?LryrZ~<2{FA}tqr1AgM~a0pW{7wyC`F4&4by%$mnBZ8x2Sed z<2ak7w^i)I1MC*;a*1e(4z-nT81Luj@?lr&i$q1QOm~=FmWQZ@yK(F|H0B}qJ!*l3 z_5ek;A_o%3xE+P`W>);k3%*>M7x|ckP5(acQ7=-*O#1l&UiL#wK=>jlC-)tV`zKp? zTkaa{`Q^c1_$`8xu_hqC$+(HF`zQgMeI$;JK~})*QIyMhf_?8FPJGz_q+ptz=78X? z3{6bDtpc|wCB5)#+|MVSiF4n-JVitSld^uo18Jx^Jl`Wjy*K;@J|(J8&vtbBh=}nZ zYKz`zUYbKQ^i9ETVXDdpt6D7CzhxH6KeCw1LLiNqbQFOJqLeWAF!T`hvwDJ)?{?0f zdQ8QShv(&)C0aw);^ac<~&{uYFa#1 z*nKcK^w@4|_31Ss=Zz&HyT{$Ti+9dHvy`;O4u*f|O27NnWwGAw)eSMWvC-V0?fd(L zkj-yan)u6qS5%Z3=g28zhfII-hOf(5z9)ey_|%p+cORLA7%zPbc40wZDkC4>0W;yX z8NBa0GO2B&SaF6b{YqMPf+3g5j|2I6-FOm!Ki>8ynM9UrT>zhU_4e?huZJguaR$B) zVpTcSz+9O^Cc$gIcQnV7&?093im6);paIVb+MLu?Mr&H@ehAH5$O(F6+dk({d*qf} zqbKL{i+g+wxmQtlo0PgUP|5hGu$q+G-nxpt{h?HSg-zOEvYEv~w<_lQb_AT$^$N#K zAhLo2+goYl1=Eyz92IcU?{Ji3a$cT#QgVep=(eKcK>jn=(JF~qy94DI7K57{PY|02 zZGZP*jeqg}t3&M+JN%*ly?3$mhqmrhit$-nOMG_Sv|x0ZX?$DsJ<-d!JIvm=?su`^ zmCQdWXbhPe1Ekdd?1^R(@y&_Y|ENo_5u&#ccj{}4zmQXR$yG_??`wq1smxWid~K%{ zI1@jv{e)RZ=gkRy8c)$ELR)a##azwaZMrD>POZO_5`dOY&-xff6zO63nT|%ju`v+D zSLf{5n)%Lu`#g<`dc*yeYnRny^KuxI&lf;H-vKA4&t1&w^hros3CW1~2->tEAT`;3 zrjhc-d24g~Ko7FRm#CKA`fwhU*P_8+s0CgNj5>g(Y%uC){e6rJuu%W$-=Lp6LC8}G z+^9%Up)y^%1N}AqIm6eVRNgYbcxVzkEGjdh1~yW`Kc z*(ii*fwIqastqr^e7(N)e=dqh29zz= z?($6t#E8CVNFL9OU5dQ$#PoDl@M&qOsDz2M$5_1~j;I<4Sts;E+x!;DuCR$f(NR=8 zY6bJD`26~mDZJx3`p#ug?7UGCL5H3|)fzV6Ar=DMpbbc4*?w{dwAods6~O|kK1u_9 z6tny2K1FEUKJsDd9sdOy3fi{exM1yT*pZ=BzYABHu;((9q{}x;Xix|@N}IK-Ok&b1 z1@*IUxDanhH2!@PX_S9U>Slf;ixD>iMg|+YlVT{qp4po*r9|Ixj6-pxS)lioL0E*W zlg*6+b7U3q4q!4HqF9UeV=?OwK<1o>soZBa_NYK+ni5i0BueCu8Xcirvg9NY`-!7D zyAfGpe(opzJ}5>UfUCE%>fezhl&5@;6mKq%54}B!F|GjoRUswL={KzQjFA9PB8m&C z{>;>zdmi1K&A0-DIz#9}7zATMn`ZiCC-C>3`+$W}ncE{R@c()Wkxf84cM9NabOB;JWtfb3cRyU_|Uxzto3>q$&ngb^Pjc zJ)ozePyLIYssq`{#Y%Cj00su~+T}iEiR2jn?6OERyzV8{CsDAZrxaPabEnDis*q;> z-wgRJ9O&w)GLvOtt1ES#9{XaTIs_#(E4-2pfu<%?BVw}~+I($#Kda3Xz$K6k` zEdAuzetH1NyMb}Kk$qLL*3*BU4=lZbQUow}*N&0|BRP8_@U|CVEj+kLJe`b6kMq=y zvjPSJG*)g5UOevsxv++#z2=JkT7%qjXmPrr8)g5e&7|Yzs+ce8sM$*vPX_Qd@V7~B zduU{G)v)K!JO?@Eafh81r1}|E4ILf#bOrINTSxFOr?>TkOVVS0vhH*hHlBV?D z;iE&a!&;2O(Vtp-eVrSyN;9lGkeRiWs%5eKqy1dM60JjilJF>$m zkjbIjgHjq~u?Wk(>7I=7>>mz?t?+X^Nis60lOaENnd}3sJO+^b!20~{@%=p(ysaJ@ z_Zet30sG}0Kn6N7+l(-HA~34|+Wvad)zDS{J=JDT%_6*Zt_=3STVA)WZGZGxn@-wq zYc6y4cOS0xjM%NVf4i{PI=^&yZ${|VuCt6_|~$j@u0<$zV!COO`xyox5^nBpBp%1>V@$5 zf=BNywMrBFuIdj0|0&3YUDD-dA5~~uNW;2^r?f_n0{@})BontnPznZ)7CJc;A2rxN zFz7iX5Byu6TIquqL+iDU+COs$h-?MiYuA%Tfx=?mjNHj{ASEqz{L+#Sy7q#L)NhJ! z8OgRS*Ec4;npf_y2u!RMEw9r{Gy3HD^Q}|T+joOjn#M67Vv9dK6fYUE4KOMg5H8dh zUHN8p|F=mNoy+j&7n*@#`p_A;%yd74|Tk zYGNve6uo@~hz1g_!$})vs*;D8%VUqq&~(@zwlKH77*gNA@^z=1s?W@xynD=H%X#0; z|80$RWye~{kpb^gST_3qHp}vWB##QRhzQl7Q=~v{2zS}}yL=tNQSP7MHdpq{HZKJd znU>GM1t@FIK)pbi&Y-ibuQ*9G(D`m$<(>1&#SD^Td|~?*$RrjOiP(ld14bu(UXcCP z^?Xy-O;XM{WaaGwqxuFxsk@%S5MgNEc)<>#U3haeSFg_*6+Ma8#mwhfiG+H~v>c22 zx>qrEK(~;DZnB`}ccnB5`>cnRHa!#3&2X0@Hd2-O3JZ2_U?vpqd{ zLRrWE1tkgIkC0-IA_?PR7zQ;!@^7yL(8BdaSWHtAI&7^TiiR=VZmwY11Star{$W&% zE1#1ZdC=1682IFaur7JJRtwtr{`{I1ZTN- z2S@KF2z0+o6dPTcNi|1SzHxT)a9FM!l+bg((X7_^OLE@7z896!6{eB2RaAk?hv9k8 z!#Lte_t%yoz_b+tk&G{5i}U1B=m_Ywq9t)&^qo{E&f@ZYR-jk)E0UzlfaZ8zDS9a; zr%%X>k@{9h%|jw`%&@N9`vorl2SuZx-;B4zFdODwQE3ZTS`9+ILl$cBnLq9U|7@h5 zdy{aaQ6K0D3z?DZD{FGURVJB!D{R#q2;tb9GzpyNLhx>wL)Hu-O;~#KubN_~-nlz? zUTcztzCM?_UghH~{2UjUOLO+m$Sf^=pe?@{DS8+9%E6{QyIj&oRJDP=KM%QxC7_U% zG85BrB8#$^IK_r(3HM_l8Dwu$!iKm+1M?%`2e&{1!ZwA*46FO0l1k|yc;G(-dCl`oQ$!ZLBlDgC<1DM+9X0=-#xyGi(73VY@T>X?U*jW@mWlSwAk?WDtyAwKTyj55ozIvB zwyoT+Rh%e>zP%0Qp4%ScG5`gMFY4_3;LsiLViGQRN#F((hD`G>tpQO@F~i zcD~z*Ja*B4#l|Apq|9a6gDcHijgtgOS0lHcK_cB(*m1GT0eMWpBe`b{I*VaIL=~oW zS2D0HNT6Xs8}Ede5bh=7QI=d*!LD+N9oBi{ca@LJ4Y2oFX&%Nr1UbWo$3-68ZA{pA zq^}3MtuMH3<>&Dnm*~yaZ@E6Djl4Km2j15D23Ict{FE;*t28#j?rlfO{2yZgn=>Fb z+0@36kxdyDB^1a}F*>o4S-?kB%=rt8r{y}++SPh8M_Vyzt zFlQe%o$TH(;EJ01?5fhvLLmI3_;=;cfS4 zI5MzuA0LQC-KvKYkPpvn5WY^?Z>TsGj0=I%YEx&1HbxQ9OPl+#5$ zJ_oGbe;Ockk}7yWO_?G9S_k6gRY6BGkZWX(@D&jY0LK7D32zD^F!Rv6`q)hH+S2%AHBPA^62D|ICZ3JgUxL}=xGp&*WFRBlFKtu6`G_s z?Tjitv!fps@_An)PD{;gBA>4~OoAVFChO*a!DaQeb^uMgw{Lv2HtMqcd%iVkOfhFJL(ERrdf z{)^3d=Ac(bvHuJGK%X_OcozbyaDB4`%Bk3!yqH+4ED0gpQ{Y4k=)a4SI&|S%4C*Rg zk&&>=_4mqdCqX={$HcvM`dSuHt2Q%q_F!5-jA=+~pdqgL!{&dS6;iO?Fh9m!#vWsY zgm1YE>{so(rPY0;C?E9g+VQFw(T7=pdD;TdyLGk|f6z?wQrk(o&&ut`>2hubq1VK4x} z*BuPT9=#^P?1~ty14heUHZWyJ-6WC!p<8xNupmRz_k`mlpos4fvfO>~ImBKK-k*O- zT8h%@!54w?#_Qgp+Q9MwlK7f1?=VZ!Lg5RXV%(iLzIf)>Y1Lp%VHV0JecMv^`ek;i zh-bhp{IjXRH(US_v-^swC*t42QKyLpk7se^AfX@4Na*U3yYQ8nJ&$I_+2O2kyMCN! z5mY%=uXh*2Z)++HMndSO3E&_v-Y{yZyl0ya8_a73=A%i%W~Y)i)kp+Er=@-|?IOaL zMJNqOK+g3NhbxG#b{?|S^j0f1uztEEsIMXltrxVufNJ6$%!mGAXRX;SSWQl5XnlEv zGHkK%{;Y03eDYF7_cnCfd7y?f7u^B(9@J<8m%-7f46-2@W)-^H#}1AXp3m1k=RXE& z2fr3Q)P4hD)qKRfF^5LV8PUY+2v;^;CBf^FatSB3V}eX!e3fr^1XBU#Sls1O7;gdr z09$}6r5h)Yn9&e{&9gJpr&b(GK~IZIj~uxRE+XH)H-sw`9-oltym zct8rg>!21b0`m389!3;LK6s0?UWJ(7&x|BoTgQ(a4JS;VMi~SJiUx;5A<{no#q#9m1>a-wL)YK_1hO>IoS%Y*j4=<@9X#~g0qBrSX(7X0)#fVKwW;+Hf_MJ5@u zs8=LPn?MwH#0SwViHBmbWOc|g5q72n`!Od)8?#TM6ndZF?qG^l*=di~uvi`G)PDNI^=*rDitxVt7BGS93Nx^HDNXt_e~{L9)$XWk zr1$LMWJ4EGUs>XXh{oa2A{YSDSX4(uc&l}dLZ@sRO6ZTLyw2N;y&0*k-7A#in%(=9 zkTZX3`1N&790W3M^GrOP=4_9ZwO~K(42A(E>K8%TRCyyZKJ71@fa)f!<>Pq>;;0F; zWTp9b{h6#!5xYXbP1GRF4+9|vs~x_RtMS)c6i+M+1IMD_IN1ogQ96}9Nzmv=yW0qk zP6+4pRK!BD-iZ6{#M4xeoByfmI3?vaKj~6}{r;I`;5A&M9x|szFZS;TaYta}#rK8K zw_f}&$sI2wc=O$RkYw@_0jQ)GUjwGU|OjH32fecK+EBVxREq- z>z+Nz)Q!3x1VldbYwa2IMnE(>Qc#HAK{n&^ObkYE0M0i5pgH=Au8`(yE|k1-{yq;u z`)uj=qUCAhdQ$&Boq!kEwgi$|222<~)+`wb4SUq~Z3FsE zn-1c#e@^+d>?3FKZWh$xxbC!H@04)Iw(9qHdkWflYTXas2m;H$fSV4Lr7D;Jf_m4X zmEA;DAYpgTVir)x-|@<-Q%$8pOCX|Fud~3$7=u{R0a)!%rJL&s&tVubjbloJqOoL? z=bT^JGWQsP2K0HXds#7*JJ8Jp#Yu$h?cmM5K@Y)A^|c@Cr1H$Vf{QXXqW=3mj{MZKDy8YnWqDCLB#ycr5BU0Hy5-O)SU5SZ1hO=7Hm9J4ZAJ53Tff z+P{Ar**}|}4S!S_b?k>Cv2Ut9KC$i`(f~d|Grd>EMxg22{@c;ugAi!|vQEmdL@hr) zp&WM!BX32zg5+mZX}-Cog^iZLxT|m@1`eS95L7Ezh8LmgS7QLIF&{VIS{IQ>LhJ}` zaK(o*e*!DJf>bp(6*3nfl_5&3xM9p5IZq$}mvA(GDRN2EnD4Sa zc3$(=X^Esl!Q)3W;-{1d74TF2d8H?*vMj(SFc+-0HlU*)Vso#Vn3FBOz`Fv1!)-|< z^ndZ4*Qj8sCD^X zr|wg5)@wmV0sRlr5{E8e*bviC(@^eFQ9}~gW4;REYf|cGN=$FqNZR4Qb*4pZV-pd* zR!uYAFvU*{s0Q#%(10Gx9dg`++YRVrmIm@nq~3xVpKgb+0A9-7T>r9d9D~+h0A@;& z^|xJ5`a=7|+@nsDtU6+ifS|hWZm*l;A7M3jMV6{i5^>5HAJ2QF?(KLk) z_iBJ^jJ0^5`2g}F`PV7ZQSszFlMiv3dz-L5Tf7q~yP}ypuz&saWv(yR;vm>>y~?yV z6Kow_3Q6O$QLn&jR1UHK`-T+G#A8vB1f^ia>^txW4>wJd)6fgL%*$SnKdE~%WSN6C zL2s#rm&@hw$Mdb$(1etEOllM~DFQ;PAeso4az7YUnBT(2us0*;*v!2Xm2lgztkH3O zIXq0Zb$UyLmkx(NlymrJ!?-`~x!H@wb*$rm zt{UH;+Q2NUIHqx~8CS?>np4Pne>suLvgNE>?_anaa{-a}@EN1*eKYt|h04eCKiYKe z{?GeG|HD2Kyl=?Q$AXs*(~>;Lq4kgrJlu5L>E5cIB;}mFmU4gU9U?BdN@7jPhm8dv zkb+)ToQm|c_Fj}#fcFIKHYj*Z^*J@Y((DsJ)z)#|4@3iQ_)uf7v3=0M zmSMtANP%~1AV59{cu>UVR?*--7R3@)@*B3y@@kX+A6xGoPj&zQk0ZP6B2kXxAd)R3 zd!B7&G+%@`n-Ri_w~8`{K3op z>-l^|Ol?E;#*s4(*4w`Z{=a^$?!1o2+C~^v^_vdSLB(X(LODIiGsw z^prr-tw6_OM7Q1;b9`nJ2_==g&gxN|!G+EB2hVe5!u7w?{fU21_lJq+5VLGBC8{I6 zGCzc}kL$5jjYP=#a?lJh;luNA*~_?Jwgxzsk^5jT6V3EH1n$C%TL^Qua zj#KtViMDn=U+%SR|MkaL%v;tRFR;c1aS1$Q=)TR;%OPTN6Ud`A-Cri*i%BV7ofT%U zKy7}nX2$d{q;UV=aW$?<*8H1yA$LYJ`cjTz?Zr1a9FJ^p6y(gg*}%FCf!A4rtq5ZXIIAwg$6#sA&o zG1ebL7Z!8fsR;(X?Ii7KzKjPXk#vAly52s4++uq@GEC+j5Ceh{4cP#i?lw-%QU)cZ z>R>~owXx4_qO=`UApLX4TQq@Avj(1W`N>YX6W&UQ*%DTbv4<-Z{~1Ezirt`*umaHJ zZ=Xlqaa61O{P+I2(WIzHm&lQX7^WFVM52NuQXqWr1<3)`Fg0&ZI6AUFB6bUe+bu~& z47*<8bBdtnL6R=~SWP4DlUY26_Z)%L6FqX@Ga9Acsam~!7WQkUsTG)uRw&=YnXKbY zcpeN6jXor-=svkp7UJ;XklWZo~tdf;|}I z-U4POGrJ%Zg7u+5q5im>OJ+HmPxyl+M`RfyXMbrQCF*ise8$;$t6s&3zUF8!!aNe-Ej+W;Ly*^NPfPG1jmtE`)Q?aaA3~(!`G8e3f`e8E$$9U?kqmTL1YT(ifSq|wcNqyY4yCXbckq*Er>Iq(?E*@0+SU3h zO357r7^34Onr=ue=(jSJm?s1`tSK$lv+bre^u2)NcuXEdt2^2U90H}hrKs(DNStvB zx`j|XTE`nBRjO&Vd)M{-2_#N%7WUf}N5#eufEqQl%lv@$y_wZnShe2)CfZB&0c;E= zkU^#haShX7>Ec@dx^p*l-bw%0>mp(U*z_6KF)YG&De^yREkz<~u8YLIK0w1*Y;tb@ zfbjP^x?Bs)BZ498ylz`Nv;G=2k%8@ne%>BHE89v7NSsc~S8yuvquYcuwdG8-WGGNg z^2Ad&2;{hswp7`CpuKBxv~5R`*od(#WT4pJgY>>~yp;dWeGVUWM|m7)6<{oRVC7dn zPZW+&+=C9%g)8K(Lpa_lNOsGEAMhKT0;IA2Pm8IP1ITLrD z-eZ0vg&+`RbNmrC0#Q!M)rOo!wc|;_A8=cYL}UCf80>xF&HT>WAj}fr^rPtOnpa8i?z#S5*8=V zj2SpruN-oS_ySz7w-D=YuM~hNUo)EI$DkVFE#RqMS9=jOr*a3rjh%H6Jf^I`60%wZ zyvmlRIyPO|Z;QMRF>y_f`~YzCE}|=p9fyO_>EYwFO66zhwqVt|B_yx%43fb+=`>i{ zG5z(G9g=Kw@Buu}8aU$GG7`C8st^KlI3_&)W?+ktt>+qZsFRN05w=k5JQQ`BL>I#; z)mV5;xPepfXsRV$C!wdzO@oQa=mO{9^XOkGQt$1v0EkUD!9JEi%l6JA^-;@8vV6SM zu2O#+ku?>c(%(eB{(oL_LKc3+9f@qQ(b=R*55&YPZ zKq)Z}OI0Bxd1ea;^6*o6#pqm_Du_x*1ax7VevLfaUEEE7hd9FOB9;_?Djv(OKuzhr{`DyCkmih+4m{_P(JP(-4||n{i!NB z&rDf@?Tw(?2Q=H8;mgdqVWfJn>L!a){>5kOCAWrT|NF_H?&JGbV8-A^sUsP=S+Tzs z3MlN2jRV6f_GIG`I7zT1?#isKEMhq`NI>%$J;%|1d%&dpTjlxX=+zGx@g*LQE`7#} zSwbUR-MeAC((Nz(j5`$kdRt!Pr4(lD&;%^(4o=)ovHKXnd1un!`;AQUkNN~BQ_Ig3 zmkMUPNSBS8jx`75@{?2laSLI|+RtJLIY!)7=gFM%GM-jm`J}N17PN9wc#;~GH|ly} zHOmYbua;HJ~jBfP>S}*3k@i zfPXH|{Zk%g%LaUn5XJD&G*A7iP^5QMZ-g6AHXbAnq1=fl%hbJ{uvETPdqC~Abt*D% zM@iZx%_VJ_Qc})J#kK73n4I@-NM?LxVQ4>aL1Hm%OuO9Z&$>y_01lh`P0kFD)q0E( zx`?@`#VYU;_e!mY6YR0s*9kdVUj<~GNfeSU=eu>z3Dacj>G4aGRI{fmuz)<=l z3S)bZFokvov&P&ytkz}m^;L%R;6_c9xtwo4_q7JA1a1%PrqvEEa;(nGwLsu#qIw(! z%PZ(fnGm|rd@nQP8=VFiGntrs`gL*?{>I;5i4YjdZcF%~vdX$ChR?qE;OaT^8?-LB zf{kT~X7ZP%=w%k*vM#=2?$rRMTT4^&XA%_BmqrR0abLgpJy_AtlBfHeN#X7ptQzy{ z2gEI^7&tTXmZXfC)T_Sf$IXrV8jQ?BPsXpwdyO8APLz%DM2Ek$j3v~h{O=Zmz6OHV z3XsRNU3}*W#6A=2HT>_SG%NIcUQuVE3DTV>nuE!gW)w93bOEO$%pRAD5z?kFWr)kt z-}njeW%`~Z?IMeM1)80#J7Dh}bf_9a z;oW!dxK4?d+&+QzZEkIz>>-aExese`#i1?0um@lg^9VFNYOE2r)a0+Wd-wNDR`{VMnNOJy#Kb6WI?w+qA4b6B z_`ku*5hgnO2L=DXqa0WxfeHL^tep^02B0@01kJKbljp9S?NhCwQ`=rm4yAC0( z*Nmyr2N}8LK8=fZM`6PbYSzSKPgmhbgBKb4O-a`uYE%xN8jQi@!m4{}Y7!%j7-8W* z{Kx{|LKaPTI<_Bi{mXy>c1A9@U`)wq6z*|$jH27F zP>EgT?rKVRUuW?Tk=Sxv zcP9us`oRw`y44OPJ6Z~w$5`d@XD!uyfr3`4Y?L@l`2hyV_eo2zYh3euuyL5y7^$r= zh`P8CcJnJx$Y-I5x$^vNP*#c7LhgYAGK?&ADcZIt5k?eFgGh2eZFQc}Ft$QQ{QOZ$XF<%FR^3Z~Z2{lF|#?PVbL4CQQ z$sJ8wheE9Zq>uPEGy&|{P1i#*D-!Tg1mow{dLOmZt4KD%0Z>zWd|2Qc%L+&FiW|>c z?>qd;#+&7*OY7o{wLX8>^_H%9^$loTGe5w62Ok5h?njYV95I-vTvCeia=VnjRr94Q z*B_5;BpeZs;k#`_buLBDJ|wM+GqKFe7UuZv=w-#kg0rX9YyLU=GygRSjU(}_>GZ*e zS?He~l4Sf^sB^-L)IgyxP7!I*uLhjNZUKCvr0JH~K%9}l1wcw?3I)D;^yKkY8$RGP zwucmzeQXe&zu4!Q09+BmTEB+5oM!ecCQ|E~$1JD@n94fLuP?sr=znX_P0t~JI@@ET z82ZttbvSTwAHCI!H5di_i21Zv^nddGMm8Q%M{)nRJ3Gl+HDe($XQO0iduboce!(_H zq+)KD-W~dRO#0T%1JsA!!aua0=R@D6BHMHO*D1k_ZtLaEJu(2>^1P(w?^2zJaXa8Q zh$c5DMr7%pwWzJ|39)1*QHp6YQp%UoM8-HVeG_}jgX$8WCq}iN0cbZ%&*w|Ffr{#H zxuYai!Ur9r!je$7^Ck8n_#Ki z2WF`;^O^EjKELla7jB_iq(yJ~wQ+C*n(0M9Bk8$C`n*}hl3Igui3 zJ{@q8!X?$?ul~lQ!>)6>_@nA4rp`IzO-brF?dA;J&gf2^e7g0G#yg)%ULp^0gymm% zOPd<2o;@VskHS#WxmNzRU6sgYFV)P|PafQgEI7a^SQ1r<$HfV{4Z>3n*g)S2fNCp} zG+H@>4+_aQOJ_=w1dKZz^;zPe2cs|}DdeyTh-gUGMYo0x)zMP{2B&?5XBR4Z*9Mk^ z+DURpCz=W9u_ zcm!e(Ulo!9? z1)!GEj`AR$R1cY%16rzMdMCj}rq|%aL8{SWxQ^! z&ex)<;>#yt_UVTZWHV~g&qTjG&@Ry^X6%ySj-&BA*GUt>kIk5^0WbYKfbc)_>#VW7 zeCfqtMCpaU-@LrJh1`_uS7-Gi@QV1?pkhME%rE?B=?S#Xe!*!S2OwSof94^nZ8OC& z-FXq{+N+3A{b-EcQ9Ycht)k$$LT<^yrhZE$RIAbI&vZ(-CNfKbaW z(s-)BW5Ni-?%lNi>?Gixa>d)=$#6<}6GidsO#2zMq+_FF`0MB22^> zu#0?Vt;1uREf%h+kxrPCMz^tPqh-d9;p*j_UHo1QLG&$=z1lD7jan$Mvue}&<~Hq= zTTkx&v=5CHa&qHpFIkPvdlztKPHbkcV*SS8&a~|{kB`FF`tN7Go~!=mncsK&)!nPN zxv1~Rjg=2onRM<{Hn)`mC;%I$t|zxZA!7HhAHxsq>BAWAOIP>Jw@h=-R! z6%fZ48SVFE{HXvljx6Yu%zb5weo)9%m7Y0VN@Fzu=4z|RL)(W3g-d9@j?g+|zmjhA z8dJZ$exGss4%uosMvGV)uGv=IUOJYv1qa%7be1g#=gD}u{D0JR^?sU@1u$c%$&2A9 zlPUk^GU%^=>xn*cj(Xdk`L@eYKGLa9(p5j-qyR0H8P#huG!Hs3p21pqyvvhG0(0xk zPsF}oJ?10ASJE3ns#LZ*aHMXw0`rj=710yS-QpAW?bt!WNoQYjNl&>qWq7i(T3)jz zwmQjYuC4?{a|>S^{gIUCAf^#j4UdCt7^#K@w*$I(>WKQtn=#ETXS7~08YTZvSBUw) z5nL+FLE>lZJ#{nmrB@&d72T?*?|CPBt+XAO=}ITR8=6e4tx2k#qDh*kjdSpA77C~ud2+uQSt ze^>v~68oTn=d0cP+5Nm<(Nw3eM4FYp=~aMCuFUoDfb|{6ip2TSfb&~T=113qV;Lge z^jyCIO4W3Ir2BDqy7s`-Lq92b-}Civ$C#{Z46$UI-SkE@rd<)&ny*B>QJWJ{|5bZ) zNT>N(${G2dT6AKh#>b7iz4Qc^$1Z;Wc_=|rqtjYl!c?)xP-xrtO}q)GULQ$lS(jSV zp*+0im>?#Dzp$Z5x_p5rx^f$iE+2K&B=_1SP4haBA{j#}7wIwy>w9PRraW5^q zOA$#h2ZmsrTW(uvTf>1qp_Y`@=?8Nx;KZG;0XZuKu0vELzsV~tRe)8CjIvSj4NKWK zK?dez1#a;d#An!6SBFtQJT+}psFR-XxLWT^WEF_8i$5av-&3o@S-=Y8F#KascoKIN zpUBLOKZgAs;mMp&c7g9K?}bB|w;=x!nwma3c^L>8;4YSdSYZ}O#x(~el9WIJuKwA# zxUtjSIl+?;_iz3%Tcx)!Awly09O>2Nch{hifV$RDpsnCUZHYfQY`SEjZ9ipWSi zO(Y274sgT9cnQ*LRPMUsX}mBrEO8#1b=;OTl85m>X@anuh-o3(`Dzn7ge`p^KG)-a zq`Jd^j(PH;7w6vB#N5{>d+`8^2Y}b-S~)OojY z(NT<0Xb-8VhKLG#-&ByniQTjgFtE>HS{r?ORc@u$TPum-+z!S<%ImfBpL+>U{H{ir z@Ev{hkw8WZM{4F3I=5N$gdMweiBy;3m)HVL3f|-yrZ>lNXU5H1I%t#2%#ozcjtrHd zH^8zdHkA=*H|6DPeel#rY5ST3zJEvmh28W25Ug#0Izx(GR6qk*0-yC8J4qfWZx@n zZm4%zY%&#PT}wQHBD(`{9e3(>G&-prhDT~5t9CKVJgXZ;JEsrTx+hGR3iXkgc{n>w`w#xv_cspEKYLT^8pv0pJga*FIGm{Y%(d0r`^wVP?&da9Kc^Qu1 zK|r(bKp68qi)DE79uk!Oht%lHq7I8z$A%oi^z(Cc)+;mjib57M2W?-CsR7NaeGO(! z>~mLfV{_f9`%jIe) zT#pRx*Ce~KH`~iEW$(&$TF5(1{@gceRTtdqUm&|M19RGonJGLiPkc097PQ3W#wTRg;NBx(cAF1fvA{@=uze3aK z$NZ0y5-<3TcJJz1O(QKoR#d%(NG6^2hp6xRACnq4A3L7tT+gpsOUd3gV(9YXW$&*4 zJ5?3Z|9e2@wU5FXvUV^xF{d%hGrQp*Qv?a5*l<#kAod68AL3iu>#-tYHR_BZMfBt4 zGA>L!?-#PTo(L)0<5)f?z7Q@>m@=`~C^n*U$bBNW5x4vs$rRW4lW(ufiQ+{G z9SEb_@+=~cn{5ZczHP|X((@ZMfF^`fCcS8^EUr{>Fj16plhIv74b?NHORNh=v z1wTd9HnvvLDA-*uCKet;WJ;7lrbiq1*_Mk39?*>3oChL*F)mUQ>4;uWJyO@eX_saJ zzoAt(ZCgs!=>X0lIcnA?NVa@a43a1AID|t_q@|n7@w`>WvHF6d`1<9EQ@uu*9pcts z4w4Y@e-6XALeQr#wu)j-z)bT5tMr_m!4x&XOGRz;inEOo--2IM-unIgEk6sAdVq8^ z<@;!@nZR0BqipX$d%kiKAy*-%)Q$5rHvW;Vsnpf?(2`_kvIU!uVwQkRV=T`?-Dj|! zz0JTpxEaS9Vc4RkIr?5V{c58di!%k@gfQC8#~0svt=0eg(kS_m%50Kf@UQg8J|b5N z_V-?SElgCcEqv3^yRzdS^UgQ|*=7PfYezP(?&rTPMg z%Tdd-uA(-&nS*Lh0#}!-N@Ji$YpLEj<}o{BiJAOYpCPn{40* z)3+o5cuaI(2&MOsqIPqC|#VWv)1mEecR+NHWyY>q-1IEW~w{Rz?#?`MzHQ`{94 zFnT~QLoCK8;rE&EV1Mf7`d=m;nqirWqCCxdmr+0z#YI_o=+9YD?P3=B*m_v9x(z%_xC50C3`>X(QlLJwRAFL z6}*NnrgZj9{U>v*tVJwUm@uvBNOH-f* zI96$P8!;moHv*Z~!QT-G1kk{p>P_2y`6It0q$A$ghu+p}6@lQ%NRL^rN|h#hBc`R- znuL{)o*F4*wPiy5oQY%K;oD=CWEE`5$;5>qv&$uB&9V3-p+c@k=MXp6iJW5wV$A{A zkw~-sRMzi-ANsnY)yy*RPCp_I(|2huv+!L0E#7v|OL_2&Me6IBs?H_jE~|=w{@WGRKW*d> zPDtxL$d8+BS1h$zVQ<^N=U*gEDMGl6Q|HM@_LGsei8a0ua#>(sUYYp}HbCP{`JcLj z*Voin)F)7nSKwwnPuve&)r=kkE&k5YgHJCz1MMn$Yss6I+L$@+n2tA#tLaIsV{-|H zCGtR)IHsNa0CgV{cQ6DFu%)O|-R^^<7!73b`dQobk`<@jvi)8Znbdn?$bdaA4#dcs431u?%)F zg(*@+FU0j=Q~IH{k?7!*i@#)fc>`540Tpb2jL#a4%bft*m`kD+v>_y)%vN9;z6+)V zPrx*{_X1Bo<}T$d97M!S>Wn4#F~76I+aBJq{lVd`f+A<8FBQEd?>hN*j_1z1nwssw zy(^0Wmp6v%O6Su(%olu4E~RJmmR47O%~D*OD-KLs2X<;pVZ==^e~NK;R?*~!@gX!9 z$_@3dFrCw_+;grx!=$BLhj{1+8BUaeQj$bP()gyd+9$*xj5NoKO1{0`po}lWdOdrX z?3bYV8IiUWC;M{q@h40>HKN8;9Wpeu&av>I<|I59u|i)R!IQH6m7XT}7eYfnyL&53 zO44_!=fkgs@4n1Ep%3eWcW=R|DjLGqV<%08U%4=LmvW^z_*ZN70Ms}hs=AB*@V?V4 z$RmwqQ%v6M00Dc9d*L6eJ>k~ahHSGAyLtrWwt>$4h7D0DMKI}qb~v>8dvFUXNgT94 zfZ^r!ESKr4+Ze935FMZni z)8s@;a+5>Vg|-B-Yx6iCPToF2P8BTG4rF{f!GbDEiB=@uKbn%zvW%;?Zl^o`5vPZMk)t)tYZGK}7e{M9v44dX!ut`lR#LGceyO zf9#HlxGVRKMe`ynst#BK{ExP4&gc|xVt0C7xz~o)_V4x9q>~+O{dVu&R`17G-2TnIa~`^4XY-f5E?4_{ zahw4(KJLx9uKD6UL~3>b8w2*1ryv#W$m)l2YTMrz+-1iLJ6UQY{8XyGMuXADy#=H6 z46CTlAc>Y(9igH>{1%Y~L`7l`V6VcXUcP$2@o>6MmQ1&VeUh=dLmEqNZ3#t-zaliP zrybTZGopw)7>r~FAzA2Os1885%w+c+hv1u_1uWY95*ZaZd+*CRS+5Zuq1TwVX#a$h z7wYJb2*(fiYMszAo=7>VG^&7mo92kw59Np%gUhtJYVo%xtUj3P%waul|5|5oAIlG{@2{gZ7;<}TJqZ{Y= z3K?TszzsYI!1vuF`8l_^2Atjo%+(krAOCW%Z_S|e+WZ%{Yn_Vna|=9srN=WC-hTh; zdTl<=Eqkjxd|a;G;YhB{Y2A{yY4Wb#TKByz0uGI-I20fT@Fpsc8YBYjuNulTGipUp zGaU);{vyS+THcJ=IniX|t;&ou-i-ANmA+E1!ulSc-ACQ*+rs}6_`v3O$Ato~n7M>r zv4QNc`k91BM^3R9bfHEbfWoZ8xSfw5+ki_y*8E_Xn4dYyG7^x(e01w+=?X~ePb)mi z3oo!m7f|ybvX2Nwdo9r206|q&uV`UAl7`?yEdjk^mqeG-T^c!Q{B9fl z?o?Vg<2vi<6qa!Mv#O^Ts7J1UFs-~_0R4KV>HeW1oWeFCONhn_c&778oR8Zhjzj&l z@hG9Qk&mD7c%V0)Qfai6W_8ehPqFaRe0 zl=v`T@tjP-NakGA5Sq?5%%-a%dS3}x)bv>_@xH?(=U>K9ldq}9Y>}QFCN;s`IW|V``)|3m;lc{mHoZAiQaY#d9!1cPk&RbxtC z0k9mSzr0dXZFt7N>w))6+Q3fuc45v5V@c3`=eu+!pk>$-m9kz>mgg= z;^7-t7R+w1`v>Ivz2DNvUsg(@P5Ro6Lx3dxAG1N^cW8W zZXCmJfdmhWX8FM$WKIS7Zcn9q-O&q(JtQC-Cdy><#`~0XqYzTyE+Kv8jhV7G`W)Jo zCkkwxWpBSj+}U7}U2NL}FjRJxj)7qS&&3i(duJIT|v7VlcijoB9as?twrqI0kbG^f^BdkQ~lyQ6B!l9xOK`%dd z5Q5AhDQ1*c30`t`Z|AVp6TWQDKRkNN`c%MtI@FmKOY9{-$gBD6pL^-Q4g9n&%*-Q1 z0iWklAd2<=@dGg<0H>Mk{TfMc2~`(1zW7q>@FLS-I-Lh=9QLc#zV5l6vuC;r&J<2y zuT|O0mAP|y{y}+^e^bW0Rt7aMB&gk5IRCs;`l>o z)vl;4ux?=mt$B=|G;}rVm5Nj__v7GFQTi;GWo#A0M=BmOLIniC@}_9YOb`l;A2L)E zH)a(96@X?oGjr{G(+BkppkliU)|Q>}i1-G?9sp*EwA|hr7`f+?tYQj4A7e8lV}aVQ zeNke&{>_8#&&RTZx8c_Fgi5uL$p`#$NS@RBPoJ)tco0TEUh#`bMN%lB%EJj!3j#IU ze}GAmxukdI@8H`Xgg|O^k@Nq_tfD2bZ{$lsaP*N#ZLBh44mc=-d1^f|)B-A zXj8Zcr`F0xe`%;D1V!uiED|vTy<%HPI^F3Qp?gst{*^_yx9w6N1vD%le)o_{`0D&e z*Kiy8i@Gl~MSS2*MGi}ImOfA{>=NHIcOVzDbd~Z5gJlQ8_;m;MUAeb~#4(KU1pkJN z*=d=Y<~n=aCC!kjpH&svyHDVhO+VQWJ;er(eF3m38keGFIVDbwgx3qv2m9Kj9X#?A zOQ&ysihJj{gz#sgZy6zIhEsTku!pZFl;c7nye;=D_y{icy20vJafM-DxiWm*_sz#W zmGg7usDUVEew!djMZJ>Ew_d`J4r zRisMO#{Mety-_emOn~k_1HmNEtgIWc)@_4~*lgAt!b}y(#gtH{_{x<&nb>|Wt*$oW z_#uZ~m=;E5st~ARirKydXsNY&HiP>PyxS5U#cHfqu8ymqw3siDu2<|Eccf_eP=p!y;J3kHy+T&t!P0|jVT8M5K7 z&j%*Twng&cZ)<3a@I;C<-It&phs+BbOyz*UD_!wHX?v7rLiOKSuW6<|F4j|UIa36mf|Jo z0*9Z2)4~&cwfC=b*vn24(sTUzGaq@EKuj>7UgAYfrU(|qcG6pD?!P%M>T?`AnmGNH zy0fvPNPvP3mHzj;$aG!+c`PO%eG)N9S428DE0BU5;7dfQ(RFAF^wTU3OfuY1_qA@L zmq2wh5J-MNQ7v*sB!n}>vN5qZIB*3RzzT7!f{>9b_%znJ;*@v(Xe36RSHM|DF%O4~ zMh)CJA%tsBTfjBxnV)JOg;C+2ONy1;Q8!$N9*%kJLh-H7Ie8qm$++iQN0D-e><`qd z;SdM0zIghhzW+B@#lbzi!S;>w<&Lr`Kd$w{g@g;V2;n-C6QlEI@@nAnAv|q+30dz4 zBxzw`(D<9%lMl;%(9e#DVbLuA?ir5W-(3hO^;y4@VI9-hGHQ|q8w!Fs55UFYyCn5G z>X=MxRy(*88}v^XHFJ|zFJ!F4K3PT^N1?Nrcid~Xf(G$EaS%L@eY zaQ!IeX6pcmBvY!2aS^D>pj(V>Z3kZ1^jRSDBHWtg8?tT_`Zod$lvd-fsAtDNa~Ee8 zMT{NWpyzrGpfKVi8Gy`w=%&hH(H`sB5Yt=>7SSr?iG}v5?ZAu$&^mruCLRoqdX1R` zrHFrx!?&^Apv(X}k!VUJ`zh8=CX*QW`>P%VO|u|2kKAUoB7s(uzEnKFBkf9 zYFS&1aFso}eSU(%@b!UbWR^fW!@_wBvSCCGNV2?<1-=jrmtKt(J}UGu_mUH0(TA{= zS&vcmh~L4B@oooV(>o#qssm*Z6;Z_=J@&d--xZXuKN_-Ok+f@*eAryz zz3Siy=G;fF#uczQ_r6-JtA#Q8I-1W<&==DR)AL!N`T*}ITSs`m%HXETyrh>}RAiezgO0wY0Z({a|izWk#qx!?5} zy7!N2AQH+*1EAh1F*!&{uX))C`jR2;LD~tZ!$^$H@*Ve%m7tN|hTC{~Q9(LVyo6G% zaXZS~(ZzgJAqRLw|Jypp>{Y`WpB!oq2qL?`GHm-=Pg{reCfqcPeRm+OF(bAYh`s>L z{3`hX=O@wii9g+|VLBPia$8e*qXibPhIJ6-FE7haDs<{WmCx%(3;&RbEDHcFoxM8= z)~u5ja1iZfu3Tt*u2Bc?}D~a^wJ7|?B|s?t+~K;lY*&(I0x^BlaU0loIQoV+*~l= zZLap6Emev`4xw?qhxiUrqwa;b2Gu@CoX#{abXfVOJYiO^b|QU*h%c2nH}ZY4{lx;$ zd6~25c@)x7(`dn@e0rh=L3-`YS#~AgR>f zl{SBykN>&w>-p8Dd0N~)tBPAFSv4L4n@yUYB!XH9k_ftWV;D;oic8XM0jkf=LnL-3 z#oSHt;eHtE@+U@LMHnzsVQs83K-UrmQUR6OB_5O;Z?mnjfL=62wU<{$Nc#e)ZbCq7 znK3_Yjin2S(Q(+j168dECM_wlzYE8!sA~PSEgq{uu*?1Ss5HKTa82e_k520A-qL>8 z3%zW!V9N9$XQRX4Ca`bDx`f-jhnY}vrCL3rkG%HL%4O@@Mw{=Id6Q$^SSXf2J2x#U zJ5?OT6Sdl0Puq&v(1u36U0^~nzh-b%NJY>?`taCYqgiG;&Y2u%G1v-zfVR$mezYVv zaNH|R@IGU&w+LHq=Xa3;NKe@{k1Hq`=DalfAbg;IDkJsyVs*b;+xo847=4jK^gAIe@CI6aqUDBcX3^1$3ya{5~7hQdg# z-LTzvY3Am==76-+ztiyu)qk&k5fR2@ItOYsoxmfeMCAksIZcEFR$DQ+yzo|7q=$e- zvOaJq-VeJhC^+ryKzU$ZCNL5UztyYo5#Meh@}EJ3`nOtN`Xv_Y3w-;yx>f7asN7z! zjHX4M!P~mP@?GAi_VNqV3jDo|U(QF>EvnM9T3RT6P*BTLTiQk@P41@?9Jzc_B{Nvb z2szR&fw%=iCsX)&x_7o|zhYiP$!sX6IW@1QQ=mzBPh$rgDVn&Xvnx0H0an#@u18o$ zjqcHVM@NAUUg+jpeGTEF!9DMYCi=lh8QJ{31)dqY4X6CJmdE zYO}Blxs&62bv=?joeCOMMBYsVr2e=%kat_Ch<<;_N!h8aUx=#x%}LvYQ{nyfUv1}V zWCyqNO~dz@J{)&{XqruByXltv>7uNx5wGuZdfHOf*HO4Pj}oVYp5NzNG;uVtQbJIo!~(`#N}lwwn@)YVQ-nw?V@ z!}(S&AaQqtvxY*UX_GkOICrS@2IK*GDe%=J^GDTRQ8yEVnv%o7(GMJr|{kyw-LG2VzPQ2X1Y^=5ItX5atD z8FRrbo2~U-3)^eo1`ChdUhI^vc>jAZW3Fgm`wICz#oAe-SbO@;rV9C=))8AJ_Jvnu zcU*i6AG7sfhOWt;^Z3wAppDLpB@=cFfQ(WO4gzOT*T)i`l3Bz8nEz@;eMzP_BCkUA zr5%?uL(qMLtUJHocgfSR@FX+hJ6NR4_B2t7N7Lf4N3D5yam*G^Xk>?_p%t8s_RGOR zLh;RnxLyS?y!via_X>_S#lC}i<_pp$oJf8RDm5aDX`j`0;AZcNJov|P!}2PJ!sLJV z4oorGdykpR85>BIpPwXA*zlzb_)b+a=S40H*I`%qaN%8Qmgiluf6(J0!ip?6P;G>s z2RRMOe_*b($=%`5Pk>NFc|DRSaX;q|bX(p5EiKbV8h2tucrw)@8IF=%{IVLQMJk`K zVaub9@L#GP0z`e=F%{MqZy+r#f5@6^xjgUHN^1bpY-I}To#bQnlOYlQ_$llX-<%s* z2XIW&0ffL@7AC4;G5kI%$IY&icC6;p!o`cJ+>IZ|#w3V_-~=8m8Ld<m zu8_A$Z<@9(I{5@dvn`!Cxv!S9^UnTV|G;(INp^{CukGrZ?BsKf>$pG+`3a~Qle19S z6f>zI8O7Z?TJDb<8oer$^X{A&Y5YPmcS=rMxkY<+O46dr;X4U*V=BKCFF^Hcz>^iE z-4XHqR(2+aXj3*tr4RY6PLHD%^TYGbQ#q4OV%H8@U%a!#30~^}m7K>D1HmgTFr@kD zmLfZ#rpU8@v6{Cjmzp35_4t(5qO^o2Z2R50Ica=C)EB50BWRwnu)Q6|M;9I(6B95* zENuBh2X7i}z~;8*&i-;ybLYdJ-V#IIN0_M`Appdyv~mFmgJDT6aE*T48^ACYbP-pY zG?l-G`zmY3Dtay5Z#A%0JB*qNCp|R@Hde-jA+#@&y8jZ{Yf2HyMw2C`fZ#%5krXdL zjAJI3;xoNifD?{mMpv6cvZ!EQ)*1E-99+6NV>A)oc*O?M4P}q9Oy}b|Be#Dq%jw_` zMZDKWqpXg#9d33fjnBQ)KRA)}`UGL+9#oDbmHo`?wJhrAYA+S65Thjj(_FmO(L+wd zioylvept2Bow*0doF^Dhx!rfs#i2hdgWH?+~q+?9O>O5fHf^k~VPX)_!=+{-U zf*6l<^ZVCd&anL1Xr0vfq;XPT?E9w&zi}^lg3-N8zM^B=o%VnN6oEA0DmXfKci&$K zmcH4UjYR*3T&p+yyAYZDyB+pSaLVgjSh7P9f<(#J5~6wJ7U;!Qe!&df_Q~27V`0RW zI|aCk0V|p5P_r88KGLiWiK#3C*rLpC&Vq-x&p)}XEzmB-M<(gQlR|O$JhL-2rrN{x z>Yn?+TCko0^P^qe4{a&7T3SFsfdLIPMca7~c~{J(uuPBf4h3n#WyC z9)>}FSpr+~P`zHI*|RwS!;-D(>Jn`{5|5qRru`I7G5jc10jn+w>6VY~lD?w-FC(JN{+i;jaIF#9{UG0Ry&|14>OBc5DsOoh~oY7JYO}sj6vo`qgFY!&GK$D-V^# zT$hup_9AxUYR*6GGO#zZ+aRBsr!(N`&8?cSsY(sQS|%y&i0aa zK=v}+(|LdztPwRr3AKFZUIt8iqeD_ncL|Etchhuj#E-PrM(fssnh<&UEvfz`J>xwU zcmP5sZh>h?ltREDls8Dgi~gL5s?9ZcYPV~HsYGuf5FTRSDtXJ9yKwk3&1yx&OUyS^ zh{sen|KPjR6gMyT>{Fw53l`9?jmE2b7arE4E1 zUtF#<|Gm#fAv=HOtnfY2BK3y$6s4PO;nhiRR`p&AKdzxUKptmZ5%?*-KK|x+9WsNd zt9%zm^5#)kuyVF)R7vCFfL)a zNrGx~$&sZSwnI1mid-r_KmKdx{)d6bV#&pg^OEIUo`JNn-G)yf61S(P*Q#F}+~W@8 zw0HF6Le2hsix?6k0ZX)&_h(H3iyBRHNb4!T!cDxYas7^`fsxxRisywfXVQhE9N03w zPW$X96Le3o+_guE{Wdx=sA177Z+=(l>_OVrThMYe@mo`d!P+_qi}0M4F>C;Jr5!9! zP2WYak$6BJBIdMo!|+0M4-2*z7NBvYkb4?Qa^v|U)wm8Id)Tg021I)Ab`mg2u5X|% zlWWIE$$P~)`H^%#w1M%w*O$pZGowl6JZ;ruvA_R3Anxm4%+B10$%(U08DoiQaZ7XC zTbo;H+haA=Uv6L9vr?Qpqcn35QNYRxgnMwMX|RYBC?7OsQmVcr%5(e~Ajh0UH$8@2 zC|J?PcGLIaP1!D!{srkr#lW|hC#AE4qiTK-Q~W|sK3S=WfNpW+eTt}7(kbL1Sj!Q> zmi;u%>u=(6%LV!IT`ltXnQ`aJe~e_FY*qUe$Px2D_wGo{)ANstb8iJkHX(szuew3s zc$Q1vm6RQdXI2kAO1xzFoJ&u95hQ$$91YB5xixzBlIHd7fFl&#`}^k z$LX+f)=SD}bb**bB+lcaH}lUzBX+(;n$18D&S-IV!nE9-?{Y)cPBUPt2vv%XKP)7i zfMd7Lvr0u@3u9~K>DGb9r_8t2ZiA-tb2FifHVOr-anM2TJv06W5!HIxVos zJAn~fbeosNw*l(J7Jjk4?=Vss_-h3Ez<#ep#hl4~;r6~wxy#T&|4K1VQF)HzMfpqX zOY*kw63z^6#rFRhx7Bh>ef_;;-_4QR=FIGsB4xey)``LOG;bYHwj1dr{gCdOoqzP^ z-A8lI1=&o)N0l&UO8c2>$|%!h#LiSg9>@Efby(CZX0`q1VO)4Jzj}Y6YTbM5_{=ys zP1oI>>NPt%U zydWfQTRBo+1yYkv89ogh+F>Idym;dWbZ~Ej&UY>U;oqdo2=afa{zA@?DS{PKagGnq znykvd8-jCWwZ@ZM9T|H8F-zY=g+sER(i_wZATiXB4w3cK>^@Bpv*0EwWctUuasY?eGo9mTL)n z`$T=MwT_`zYn-}3b{M)_63YC!1;KbMkIC}71CrFl-u)FRQ)_V_4vCj-ECTqTjJxT+ z*O1@(=6bMWC(y5L4RSNMPa6~4Yt<< z#7`v*=3VD3vSO62aQV5{wxa4)G(OmozR}{;cB07b(JUL88`KK@tbQ6%vj03})z|VV z@KEiLdv6I#nC^0i0CqUTZ!K8~^s0NN*pX2)eJaUk9@_b<*l2;{u|54rb$q@IvmmZn zz~zj*Q!jYUDt_ZwZvq)Mmu#1g`*M!%yVHY>rd6Rqv9q_p|J|K|6Pqx5B)17=UznBv zReH26jmv1%-+?NRFgj#1FUbP^u!UaBw);(gkc4EO|Agi77Up-ePEEiIWZ-tr#8ZS# z2m|qwefj3@u$H9bFM*Kuk(PF??+_X{Eo*hS-q>gWUyG!YXUwY1zaK?cnS6sV z9)r&se_9W5TltDQydy9%Ub>iM%Iurl&CfXv%uNCIfpySRy%av27m0x8mxb?7FQgLu zuSkr_@PZc%jO96Tk7ss3=U)U6ahWk34Z|UnirqitVlgyjF=Gm2%EURWkA|&=p@!$^ z_t0Mn+?`r%XK&cNo7)?p`rv$BVeY46sqH;RpXHTK&yPQ6 ziM-xM7v7Jnl=cHtq*%a0p6bv9GX_epS3WmvwkRSDWIIm`UvZgjsT|1Qizti+i18Xg$`euzEuwd_cm8^}>yQ1*$WU5ae~ol1Fn5h&j6>jN zas)qJh_GbH3#7v#^p(j3jN1i>!#1uOf3)bVjh6NQpJm<7AJ1>L;vH&Z$R)MRrnXsk!uFyh&4Wy^spt!*}6z-KDzr^%Z=Aot(sg-%mfPo zhZhoW)5_Y8oh&llwK2}OJ-@ZeJf%eRCgS*S%1U#S_Aqop2m;+ruH?L?2>P@`hx&P% zeZW~|_1HKv`qbo)AK2K}vwT@nKL0;04JetXXcQM8>PYBm(12;bGI)-O)Eot2h=(N8 zj1gQ5zc&i#gs^8`-5ON~>#WqybITDS-Y@NV5++}y-d(=miU^zI_?}S&;AG%LR;)4# z3fEUVW?B-&1!v#`C^_S?r)_vWzavKA$myBxDfP9vFVBJvb&%U`2s0=Xj7vWXp6y6% zw-6*l0~DlqaAtk;OV$&%=sobsQ+f?(MM-5QjT)H)8!m;v&kdXIbm8!gP#{FL^LrVf5WXIz5p?Zlg%+?X92CzR*pzs>iH?Fn@q%}G?3L%g2fKsom2IyOZ% zUhfuo|Em7I&9r2l6V$v|wb&#@;Dr+Z$m$;W8P)Uu^+2gn_^Q5}gk1!2Y$A+k9QWst zT!2C8olyWW70evnt5}w)=-P-5oNS@fM+gXxxr%E=nsMAIuH;x}QIhBtEVet`chMK6 z`ppHhy#*_<3SIx;16zejA|0t)X!VxCyRirY!3W~l2;&uyZd_DsmDZ{?`;58sZspQ> zM${>|4IgMhu+vO=y!T195C^Sq&2n)e!Y@A#$d%eSLxz}j58B43JD+_5q!7+o_HR0`k-<)D_8MW zEf$19;07;(zA=m2yxcP+r#(w8KmYcA*lhSy?DN=TjKiWCj!EzV%k5M$_z z*q$%3&>q}cB3*XW4~VjEcrb5)-1WkitBS-24<8t>*0d-Xk@qG<{jZ7Q4!k$4N>5o@ z$ZAnI4*nlB_i18I!*MdBEuN24RsbIs$_+9sT3snmu=(~hJ6a4rbTF&ZAwvqL+;dc= zp9g;IcgXaywK6j{lmqsw3~w%S??Q>Q!J|B3%u$SpKoD7Q5Iy=sMzVEEHHZ z9LuN4R$GQC)cL9N_e%GS09UwJT5#32Io$Ik6ZjxRwP4hlp;)CPr@vYOk5yUNcQ^*T zhWifthM0b8hm6jHMH1p=QtjX!#$zqTrbjtQ^(_=2+!v|(rb!kMhSI%M7X z?6d+X6c|ZzxB&})*MJ_5R(o?7Oan}Jq9kSBgY8+@y)Ko-f1d`Izn=z16xU@E)}9?q z9VaKEaYfj~hajFb8{R}j3=aY|ON`=L;4&2<*$QD1nexpPf7*_nY>wf2hVeT4WuVmY z8LuudmxGA!bf`yxzO2r!h?TKNz0|lteGP1S@NbOmy}sPWBU8fcDs!ZcFRT&{tz6(g zRW6}m+rf%ReIaJ(UItHVf2`SzCPdp6R)LN{$t8xgd4!8fOmekmfX@RIiyrrmQRIa( zz3!4Qf6hY^q`F5ranOpU05*6SC@h`JLAq>PUv5+?%)OMD%7RCQH#n<8%8x?33!=1x zAjmf-5V82)z{4YSJp$Omb~>t@ zz4ka>-N&6zk0h-m!GbR`l&HJY6wWNJuzGKKyhX}o-bgnT8Sfj8fqLV1&*GSj5EOfM zbDyiZMrRo(sZ;Xe)%}l-;^2|-6jLs`Gg7UXb0Nt91RrFhV8iKVe;p7hp$dH}f=Yhx2OIQ1Olhz$5D;<<_RP3=6qV`JE)+AVYjtFZp}UWWnZJn> zg=ia83?M>E;6py?Yo5XQ0w3(b7@e-^r1s%>HXjDx#!z7c)b?tUV2*HR24EsZ%EgfSxD}H+A z{C>74EiP(v@wHYf&#hEe-5#kw91UkHUZol*l5-GuVzdKx!i-v!P6~O#r>PWa4k;Hg z=JcGnw2$qqA6D6>20o|ClQLx!2vm){9qORhD+b`M;zt6f8h5Q=?7o_+rO))!;7aoh zqV3(&Dr88km058V4)sd(1aPc;f}G=wKcf3_m~j5>;*%fD+MR0SQ)}Nv}*xb(NCh8h!%U9*5Od6 z&!c)@eV%()L@}1Na1jcLRic?oayt0et^tqtaJdTzXd7_BEkMFd3h9XBNE^GLxN5Mk z4F(-C>>p$B1`71Vdj+20p`=G-R41nmj-J$b;|T=8u1AE2F%}N39}`XdB5T_>A_Dfo zpsK7EJoWq*1wXeuXgkLEetz=hv&dyTWt>X=`8-J)k{ti3qVvbbad+QBhYz1g3#4oD-zr(9uLA>)!W*XK$AM34LhcX6^eNf-5PSy0}O74VDq^Pd%0N& zZ{v+Xlu@PI(xVrfoSk~x(hxGJ`zdtX_Oy~`DP=yq$-3QtXyXW%)Oem&KUt}RonwHG zHOCa|&R4OCL;`{f1@ zZ;!d;kwBX2FP|6Xt1u@=l=t+sIe?6@92G*2$4JZ_rlna@tmw`tYk3M@oz>N{QH=t* zSMT0E5YT-~wmW=)nBV-%JvhXUgl1*|q*FyO6uMa*U4VAM#79GzE}P0gY(z~2MWHe4 z)-lW7f0@ny;^b}LWQAR0kiKZ++vE5oyzkNL01Rim)hM)pH4CmZtk$5GKfEkclbJClU<$?i+kqqAzHg6y zY;cyMUg(y^lbHL$oB`y)20<&PAdt#`sv)Q``)p6)U40Ge?r#+}UZI3Py-zz17ia_C zY(}p^<_T>_aU$C8YTo9Cxr?ctbG5a+D!~B6r;< zKxD>Rr01QH8`tbTh)Jm%ohagb%9gvAXrfSmh@Sz19_?euHe;`+6Ek`^2J+!PFXJXY z0rM^vgf4FZ8odh83D*;JpeGyz-*^ZjelN4a?*!h6!!P$0*N2^jTz?NA6zJoB;Dgwek3#Q-4%T&+hRqQlUcV)!%(N_8Zl^EvwQi^ASW+uw+I|Ut2DY+Yr zAwwXXO1rV3rS=QX&J-lqEknbXaG)DjWKL$eU9W*|IFQw1LjR(;-bBAhFr)DGt9>;7 z5qoCA3sLBSeAP4$uHZpbv(^&}SzaFYc7iIclxXggjm%F$#|JkoSY1;3pMI|tt+mmM z{YpdzPS$$Lo|~X^6uL}8Bl~F9B2seJiHpi#Je{) z>zPn$82FHx5Q&CP`6PCu)vby{eSlgzadNz8mzqVQ`H~xfd%`5@k5QJ&ASb~yv z4mR$@>O23|#NwHzDuZ7R!cCDb`rlcP{;vVY)DU&(mH}^?ga5bt-8xFDE%l3F=`c;o z7S|f0qfLJg@;I{Cx@z$YbKTidh6y$S@C9|iP;(tNhU44I+!$@|II!YtE|400A*>=Z%B@tKyNfm$p!kgQFL>)qLB zP5Py=nmMm<7gY_;911|`;c=4Pp$x(8NWZ|XvGuyk<9ry*J>c8p&PsR0kny` ztbx-_Opl{ar$t3q&~cK8%0jvOBLOQR62wtw4_KhWbI{K|Pxjsgit}6NyR`i>YCJAl zNY=IJv>V6og>MzokjD)zJ%sH4@95E?GCY3CI|^Vp{08=Amqun=2v=;+we8GULu}W_ z*$Ah<97oeVXv|J`N%3hv1G)Drol1b_>gd~$2I!%Oj1rNlM(ak;ej``UaJt8Ajxb$7 zo$cM8moeERl@OtFi$Sswjdnv+_C>alQ>)_#zJ z`3k#q8+4&1-<>qoq4@%DfVSHcuJkq8P{#Ff3-?ON1k(w?V+JPlNzJ3EtTjFK{WN-WCD5?+AGHY2`XS#y`+td@Tp>o;a7>6N08ifS2 zLv9s1kcRyer0?C*!P=i^;Taw{ZLkwNZ;0SiV1JYj^h|a8%h_{A;l(dQWK>!B^p7=3 z=#RqBclryquFe0V+U`A!7Kd8MxsR)TJvo=mx}N=Zg#~L3W{nLaH$cN**m+KR6hh3R z@P+rV3N;}fhbL-|qOB`)oX(eX^cx^V=k${aEqeSlPuS5bHJ`+nAyP>?hf!mXL0F{>d4qntB63JG zn0qqFn{lp?*dfTm;T61v=dUJ=aXzK};`jI)bX^mP+Vb41@ADo&oOj^Ky~uc`Pq`-V zS|>X*^S3NGajzWS1Uj6zLhd~jpRPg(-)g;5?8WYfr*}a^XjYgdg;;2>&n5TZ?sxrm z^P2T*P@;Vc!YprZRtOF>6y+jXz+`+Y77HWa!wOh+s?3=}FYO#f3t(p9&VIH}Csa87 zKqS5W*Qke9Ln$y7aNI+%kxTp0opr0pF%*Pvs>1ZQUfZdglmbYE90HXji`$xj;#uf> zvb<}a4;5K0WSa73B_&4qgxS9vGG1zZG@_AiEog z0feC&7axW^dXgaIp8E$H^L8Jla4APu7$zV@jOiKS)QhadvsQ41E(K!_k_Lkq<#m3R zWSSZQj>j!_362yd`^1A^)hZ(JK`Fz246p8K#N{;1m)O+-H-6pdR7txhuLN7xD)zSK z-oT@<1_AaEzTHGhr1pUwzj_1?NQPeL{p)k`cM9~-;o5nCx2=+`#n3XagIfVDUtn}t zZyLt25@hatOwWfd>3hCRl@r}+;OGE-;2yw+s{|+h1)8@0L^_gLpPcn)vx(Q=gYkEX z+mcl(cpd=ON}xSC3wKGkfYf+pNDH6m!k*VGIb>t9T(r##lKOGl$F z9dWFNf?RTcM*o!5ouqc~5xtZJ5VDExHs#?j-iWjg+&~TJ7y~!kkA}Qz_Qmoz+aI_t z#U%W7`#R7H7mgW16u!+)+M-+o65yeV$cgha5F1WYa$>6_gQeL!@R0J20D}pjPKZTU$xXk4pjQ@TOt)ieHYZOZnQ)2^_`Y{lA$v5r&JFI( z<4d8ZL_yX#9(ohZnwuSFmtkV?Y~wA6oWtbJM8XxN#J*CCizZ4zhTIEWVqb^(B4>=e zD6Ro#DqOq#+zu!aiotTEoZ}2NwKT>-Tpt-3;VtNe5IJR~gSuJhZ)&`J;6C=BDvB#5 z-9XI1aiU$e8-KvtZ)U*@u|Y@o0cbY13d&E{G{hV@BY-jD_-TcHM47-RE$bY#?`=L_ z0x8E8J%K-X_8vX(hD*9l?*MG58x7@yFFyl9ZxgA&z9!1TYxOc{mQ8VM39w-eK+=z5 z0s2}3#VXu+e1s-2oyB%J7Q+8RQ>@R&=HU(C;`b$8TD}HQXXd5ICy#BROwqB5xi6nKj%HDCG%(gDyYv<__`5z zvlqG;LM>tEU8g8T63*oHZE{L?*dgi~Tx039~qJBwc3c%G!0oZp++1pd!iixfpn~X$& zdw}Fe{V{#P&43%vrQ%yZ=cdKuQs64_{T&7h&%a?$-bMyD?lireq zC9VeU7x=DzPi)0oD+i!&SH_&6*~8zZi%u!!;h z^CSQxt}2{sCZ)BYbwMOV`E%jtbAkp(p!JXN))u887OnzUa!8bt#_97fvJHV?K2eR3 znhN*MhUax z0{Yn+7n-BlptRUqK%*ZaMd?2&T`I>R7pwiJ5`D}*cV%f+l<(b%RK^8j!_rLoQ+p4shC31NXR7@5rQS!F;;cc*v2JkXb`3KS z(8JE=|JY>k8^^lk#Bsk78D31m-wqib{o!D?0y2(%$bO&7sXTg!mPQX|rW#ki%s=i3 zu4jVza#xUW0^T#1ve?zORdsk*i++vZk)b|B`R}(Z7iBY=(lP_mu|fFis$Ly0iwHoI z@pjq06bR!nnuH(d8*=|M2bbU_)zYNhAndwxuW~6U`&END%mampV?1&*icFb(UvFgJ zVQzP*j2`}2jTd7lwFkTWy5&KG27PfI6V})!xOT5xi=3?my8$dk@U6fb*mp7Xop28> zb?MU+ef}B1)hl^elYb(2{Yw)u8mE_f2G%6_Z$Cxf@N{owe*BQp3hL=vgpJ9B->R8*!Ja*DjRU3AyDR8#F^uh5VHZ8nSf z0lU`kzLDlfNNF)t4?FbJ4YXXr^N^LaoXYZ2Z!+m%n!$_w)vrw9ll$X@_z-ytXV-KB}A^)v695@<)fpi8Eh%M|AQ;TVH zneYF(8cAN5dy0(W6_fbYeXXxjaYL}DEyp*2A4@6uA{GGc)XX-MvCTP`H{>UAN6_Yw80x1Vq&XvAzuMO zaH3$@jEet}>nmq|x6x7|6ROuI8)MnLD-gk1qi-yrKZR^BK+5$av66kiW&-W|i3B?3 z;A)`iz1dV!L|bC+*g0|#DV=|T`MQNM$UBkil^ApEL04xA-L9egcV9es6EPRxr|1t} zDODX;?NPmXZdr}|IJ%L>8%|0N?;97Zu&~VdV0}y>vXj<02!v{7sPp=mncGWbnYJJ& z>IJ1kA{DHB3t#VBv4hMi3Y;+>C@qC!2^ft3cL?}Q_}OO)jw6&lAwID6mVQEcMp^Tr z{lro+>c=eLe@k5G1qW>;+^r@iT(<dd!0)?h^2WdE3QT6ebg|*3SOdw5x z(B6Sr&UYaC?jTvVS|-E{xDqNeUaPL00vXkeKXXD2_M?qt4^tvY92?HXh=Js@S`l;; zQkJzS#x?On7>;fFDZO!h^b6VGWfj4Q_jc`VbyQjifqLqA>0VaQzqI|Ezsi$i0xG1L z%%E9MR`a}l0fAU28;o~@GsPL?mue3L13w0%0e6XRb3nL@E^}2A? z5h6^fb|NnFWAKUhH-mRW2owMOW_G9CJT5B$Dq*h$=+6-^Etw-Oc52OX4JqI)t-RDs z=uj~pK$FfjF}Em@JAFvP9IxzU>A~l5s1V#y_A7 zxJwgYAS?4=1!G?$dj|5`mcDL)tL+i45_ba-FC@&BU;R=DQ-Cv9mN-R5&)Yc9RvC>q z($}wEDTKt!#7~Hqo=+tt^=7mtrl$eq3ZEKDhtDusongm_vE!S1JE_|}&7Bp)94cLG zlFRe1&1-0qb-!>eHH^RD=s37Ua#j6X-v3rx-Z|`ew2=QW4d?Nsi`ZKM@uFyZVX*7p z-vdBb(H?P1V4xBmIIx^JQway$m?{}zbp%Wmc8>XsZYLW`A(O6G=f9SdGKRQ-?7KTr zT%12Kcbo*dI$7<>M0MH1CEYEM1IkP<+#4)znYdhknLi+A^o4fv=*dr&r)N@)RUr+- zLR^i5r5La(a9p3dg#$|B56ieO0nr_dzrkq}MF_y9nLS!phZkLRv@Q#gQ8 zH~yk#ny*kR?>OwIBuLi!wmqusft^bC7p8p<{^)lA+H8s;b&P?EH)1}+Lzw+j24;N>$DtC)Clb^ftHUUSL%gn~AyNX|#oPmbnQaLbnq#RZ92 z3t%KE3*zRBOQnX4E#@@eGdEBqC=>ywYOw#FQu;rNlz_eU0|xLvFyduW%UU=|8H=+C zQP37e%w>8Z>qvLm3iAdDM!SXAJ(qo`7#Af@~Kv5IShe`1p49!EEYgP=;t) zg;itA`2s@BnX+k8;5_#ZY#;C8(;0${V=uwujfJ^Ee<-Ys!KfXfelld5W#wZH;PS0T z*tAqM>l3Ze+lYQ8teR6t7@6s#i>{~UGt(?`9#6_y1D8%ALb`m9DHbiep5fdfd(^b) z0DxAp+B@;Tb}9iOS`ef5e-!JG4hWeVvqI)#d zFcgTMMoz{0dR0LN+>p>luE_JGcgl<%PejQ+0l#4Bd}<{F9S51_>2YNz_H9%qZ)77NG{%$KoHc$EyR zo@Dpn?&6P;sf`fCt{wg zMi{8sFTyCRuqh(1?pJ)}7;oYs8fJo2R#!?f@7h!7ou>^rY=%`Fkcw-1pDPf*(*)Cp zHQ@9St@Rq5Xy#a_n9`S}H-@=#Bwt=pXKKCRW}$zHQN;WXz}aAzEOGgx^D|#Gs-13~ z235wOUKqyEZ-`G$hfQ?k^CKBe$t94s{g%dJUy(PvCteS;v$z}nwDIb}boN(y3#m9} z$=`-w#x%SJeiSkN4dcNZ*o{K%WV7xkRSvc@%C?CFvZR zBW4QV%Z?{26)KIuo)&2deHb}$L`}u%LqMnYv6I_k??%X@K{fk;Gf<-T^ZGF*Ly$Y= zLZcFxU5l%;5RO|)y2UDQ8xCRo0^u8a8h*a8XLNn~h%MZ`a)2W^{ zV*f(kMZcPZV9WJSIE|FC6pC<%yasRI_HuL^L&#%;GjW3M02^%uoT2+jBn2TsRc!no zdkGg^11u=Z^+~W2t@%!IoE!H1)4m25=Y#OcR-I>#Sq5yixpxpxj#J{<9%wuoM@_pQ zjq)G4wqFX)rg3ZRN|ayyh(`fCH4{E@F|1|kx)`q8IB~fa~qoog@K%kw0=XB4=hGl&h*GoIeo+EuUW}Za35NkV(ok%rMw3i z+X(8inH93f>yjQFDu=van263G>>Hx0c|DI;=GP~N@Zk3MjqHX?3lO6NsT-~I`GLpH zYLHu!zTwyqT!PrhSQ0ZFw52=LQP3LO)VIf@clG_J7Cj>!v3j$lF?R^ZF{>w3<6m8m z#pIVwvWys-gCZS)QNzfBJ?xj*=LPNnBpgT+L$}Y=M6-{0StSmX_PT=_tqLQFj(*uH zN%d(Jz-2ctPtB8mzK~AIH;Q$Hg*IQkS2Z!E%D-?fpTf!y&Zj#&zom^49!*wW(3FrC zz;;QpON%JLjwc1#$8&%)j*u0By9Hk43G&!sLjFHFK+lt}6uv}{vuB$R>D>YK02q3a z<{vrl`xpxZ-FoMDIL`|^{8DunjLYZYvFq$wr_dkPr+e$4d3GSwKop{CbaT(`WKAZ7 zenza;1^gbZNWU_pQzVIAZQQafOe<#Uaw6r69zU}e*|rMP>(8elb-7rF2&NKb%(tUyNeN-}Gq3m6(?WX<#=q+FZ|z_G4~` zqg+9@>v2r9&nHw3sIMw&m_b@HV)3t@A)gF7u6}RiAVuNdCybWyWbFqWdzJ-gQM~kb z0PXzKqB5&QOM-MZUD+{OzUrN2E#2;ipxHs>FAS6%U(Xh#B=Gs(so`jd7+1m-j}szx z!l(2u1%vJJt%dJZW<={vyb7V?1AIV-d%Hn?b{mn~0M5_}xV0tFu&dU}vCj}OQ>Z&) z!1@m6+)Ul94hTiKSwNbT(i}nDkFmk2VI>i}Qs z@8;7C9PiU2zT@2E?BkR@Ya{+!UEj(^+p=w9*#Ba1I8*5C&v2D0PcSpsIq#1nRjr1+ z3U98%bv_EjVW_};ojOQ19KC){?Jf&K+-(oY_QYW?0;tgiA2t-owBjer34c20cT`S1p+1^#v3PF zKv%Z}_<8EcGq6j8Cz`CaEi z?}d{yg=>s{7BsKyM~0LNuq^}iyBe0vl-JSwH826l_Ts&}2>h_Smw-z$%6n%+(A|s2gqED=LfZ6$yIxx>gxIoJ z-PR)R99{eeaE7=<7Nr>{w4gJEyiI#6u#02?+49;W!C^*J-B@#qNJ5&q@}s zQ*lJRHP11lSF>g_Wj}i!kgV^WHN+iGF=y%v-gm>v5H$a5&ZVZfD>1KW-aK;F7gRO5 zkKsmPC?2{3lD0oN1mdUi>bY<5?_dr^~HI*PI&Oq47w+Q0@Q~+#cb! zesL%{Mc~l9LvE19_#YI>n(HsDO`8`b_S6^-%l4fCWc19+_u1c5`l2Cu6BXy)d@;sX zZV0N{2=6k%Fii4-+zd8<<01TfAD2B^)D_nb2lyX^_zJ-vXa{47Gv^}mZ{O3Gl1Qd5 z3nRv^wM0VPP7p~X-`yY?BM9#f01gO_I~7ivVi$ zml@hM&r-yoH}%PB_r@p*sl+R{Tg&uNo9WKh06Pn^{210jvrJ(-Xc5ZTfJkd2MH1bq zUgci-QHOL`^qdu!v@RAspFez2E!O5XA;I*z1VAic4tS%6FbbY=#o3wOgX}xo{;AZU zZ(gIM07(8>AndM_H>;N2eyukNPdT0$sT^ zF3jhP^b4xf3LC!ni|0}9h@GI4<7w>4Mhy6#J{M7b7r^XCxYVm01uDjFa}XahN)Yax zo3(OE36Qpy?mCiOZ2b+O!icLF{TzMn5g!YW8E)OpXRRzGbb0|4vq;8Zr2KCg!059L zubp6%>jC>r=h`{qgBn}Xv~{c^Pb`-4!DbsE*DfDuH;F(rWvDbbD#Cb_`IeV0%qzsv zH(td%awY7d38ZQ39@+tX9J7{e#kNK@ej6mb0Ve{|Kw8q(kN=h3b}2;P!cw;9Q~i!5kB8S@_;;! zB_074{c{}0^xIy>Jy#P!bI7_(fBwL`iqMz^+VCGNhLL{-1w9IFvP9<`yN25#UjdCiLf`-NQyoX~Jn%^5R#@h(^JYxFc9l7*Lj!j3ZMxDb5Ta@bFZ;L;s zEkqD4RSK=A(#Y|vd!o#XV*m0!{_&(C-rPPib>^m2dq2`ai-V@ zWI2xHemjczh2{%*Hq+vpF$lu#sCNlU!_~~=$SI5X%C64MSNFJcT)Jy z+XD4c0?usQ-$FRorhvOxy|1vhTU(+01<|O(08nl(bN#j z`|@Zc5Bz8DpNsYMv$N|eLC_gmpJ|JK?S)78`zt6Nv|blRjM>>tKb5B^!>O>)&Ri_V zsnN__m=V53Mn*!RY7)ISeLnt5xoWvQucdGDAF~?CypI`*+xLGtcl^nOxRPYAHShIP zufMMj&w1<9kg3A2dyFXb-kr*&#sNOeU)k?b!1*+5z_GI%JeRs` zO^Zw|)c#ousShb8KD`P!WD#8iiho^-G!JC1!s!4nZF&K&@8t3@jyh(p6_hF&$W?to zSKZpt_-i>{37I}SW9$P1)b+VtrI(NV1KaF3K{tUsSNlNld7l*~v6M|jpAk|1%9zD; zA;`2qYVhW>c_xaSs4`A|x(1<(51sn21wRM2#5P)?w)mIBi!{%cQj`PfES*D%mo6mT}F;3GCpJC^a<&d(D*%~oH&xeN)hIW==$7YdU7 zRovYL#*KY4N;%TS$|n>SRT!#X_30lvihQ7--;ji1<{Mo`LwP4H z|3FGgQukg5z@W1DZ>MEG;vM_ggbnJkltRT9U9kQV4;?x~aiMG!I-y%KZeXCb7jbK& z7x*sI?Dz!Im>+QJ6m64y<4I$mDc6O#djFWM_tzc94D!#Rn8@rI_YiSznZ*$7{mwob zcg{DP=KIT0zYg$$X%FXOUIoG;mT&Icm@S3f7Fhq2x6s3LF7SUntZZ_Jwx_Yk&jYz0 zopL1W`w3WtG@H-PlKWC%IfuIF(n#jsO7_mY8cOEladGS5w$Xpu2L6CIHUR=Ye;3=P z<<*MEE`5awDzoWH6RWd!jj1Ia@+f;H(4dYW-@yO;`bOQC*WrK?%o3%xK>Wk@%pM!h zywQ~V0(JCE*r5u#4|PC5itR2%`Dn-KNEy#+6~~kIC@!5|$Gt7?x)#tKX>h;c3l%Q5 z{xATD_Q&-_irT~mP7*G5^^SD+zA0?wH}27tS%=_vB48mRY+&ZKxrJ_|z11c+muvj; zi+RB*k{?-N!h=G6DHrd7$hea_8OPY*7%Wb;^m2>xZh+|yxkj0u>fkguQA!>i3qHaA zy|fbqHa>!hogVjlXCr9z%Aar&kNfvNHRC#h+2LZqr1^j*&uLo{)BrC$)E{5s^8p5| z`aURwUw|F?+s^D=DdDpn9DB0@)0E(Y+O1GBs>vwP3Ajhbx3~naFuh(g*KZPEaC8%y zjhA2NmESIhKH3e1D!rS`*+yy&v)BMjQ@Zzh#mIB;Qxz96@pUw*vZ}QH8RB@d>6d-U zz>7;}1CKb!{W+#(x7L~!;Wz*NHQh~Gi%#NU;tJ=_QI>V_?GJy(^uGAFno9J|&}Vob zC$k)S3kn%JN80_eBQ?9f?)|CyA%&6gfS*X}g)f_!HJ-r>(PYcI&E89}s@ogiF(iw6 z=kSY|!Nso#(0MoX(X>asUE8$6_$c{yiSFXMES1*?CA6EVJQhIP| zz$R6QGBjL~d_TnAd*vDXbB~})Vqe}#U1`0SmA$7z`*_Y```EA_MQ^-3>DE8)f<2CJ zWKBK zj&ga7;ctZMe$>wom+_pse)ynlR4`W+i~aYbM1JG(6!n%v@{F{E+Ee%g1St(m15U1| zSnMq)=2S$NAi)ToAL{n7=3Ld7VT_BziBb+I(}go5`+KeoCnzGFUJbzvRroOV;k!l_ zyKxS_MC`(Z=oLVZMhN8KR0XzG0dZl35Mpf*;ay6O{<@`J%c!OIQ6QYnLCrjEyr7Ch80S@*d^>V zeAT%#ws?EIG^uhY4J&=u2m8-p1jd87;og0RaEpz-51Spv`M~oTddnnT|aP>2}^4emTU#M(6c3?A3%lV)% zRK>ZOocKQvEqOT`i5RA;!~Yahb`4jg4Cd%qB&7BUGJ)i$tP4b>-FIz^OX?KsT^C^N z+7;V<`OhCj6>zBq2@sKOCQQ4+-Tg%TJJUJxft_#L-=V7&*OF3>clvFFe12I&zE7SP zuRD4<>r3YT&eY7K6H3h;ZeRO+Z$1%k2VN@i1+cFd6sdpvOdmU1J1fz_TG-=rDmVuy zIq`})8gF!a8tCuJsQKh^e)?{d_0ICS)G2*eIjW=|KPisG9c$N{6?468&*z6TUFTpj z3kFQ2O>n3C3T-z{_e_(=p~z&^&_<{otDcL`jE?}P(gG#5@0MZYr!JOL&WC@UQ#Q;v zB{g6jR}B4aLLFW2!}>=iG84c`chj*4Gu08D;dX*9qAmr^p_FSQdu#6%s(&7@hNrRT z#t7le7HER38C57%1#ymf2W59f>4=0x!X*s3|34?VenlskTy%eE`dDDOYVMQ6V_H!je{40TmV<@6c$R|fIl!qY zjS_=qe(|04+_Q(jgc~&K&ntq*^)0yQ>zp_@tF6`yGm4VD20t%sz@90PhET+H;-~Rv z#~!l>UwTi6uo7i{eX=*DkqCCFAm5i6xmz+|W4zJSUh;ksG+{QX)oV!?3FX~;kChgK zPTg%*d-J^wkermJlTok}XR>QN;LYG8w@x&&3N8L{vEj$7fqCx>+Tq^x$qVpr zKHJzdcw}`B+IkCR{1bDJnR$AXe9TqKi{TC7eS3TBHLkB8deD%iYt+{~`p4&zj~3Pc zeQ^DibZvrW|E21)M_J#q|o)S5_o{{GsI^)(W`+ZLxaR(rCZgIw=saB+ ze=Th;q=~!&zO(1^vuoQU`%2lF(22KM7ET@|&3XiPKk_@VqTFAD z+pXbFx;;mdu^?kz3EuuC>EEweDMMq)V?$E6q_<6O=R9BDFEi5>{XljL?77?aLFTperxO`dv%h}5(gt&ZyXVd$_8ku8qWFUQ zRbrsRom4*sbDXQviLpWt<;jDQpqh)!_rJ3k@|%2Tlpx973nw86L4&%L@v(}IXyT6> zKr!dMmW7)!=UG9&57k)x*jHENdeIw#R;|b_ihKzL`a1xx1FO+PEmA{w;`Y6pIfJb^ zf2ba1lQ?f;Oxl8!rR&4zK74^$RC-ks;Py}R%NjdRvBjeZsq;W&ikMs&xWN(u10tF8(h*9cC#m@ncUY< z{C&4rcQEXQR7ZF^!M5URSq-aT*t8t^7E4+n#k){f;>N_|=Typowl*=j_E64RJ71@H zknqxk{X!+alAb65=bTfS0W(!p>uI&$leUJPJMCEy9W^`ge&J2YApd(Rh={s&S0p?Y z8iewcx)=i|vp@|%7RFd4Ib^DY_+2lk_+i({tEJasf}AOl8t~6vXw2VR#vGY1cdbsm z%|n30{_G2w@t+2X;ax(*HvDNfG}tb%uTGNn=s{rOQrcj2EiLz3ZMQOLQ$z^vkj$nT zcKRe#bTxz{JN`|>>Mvx3kb~5#qT1Y)YHWON08RX%EQ6BzxPZd}_mF+(g3g=DUOJpj z8q-jUzmXZ;3ImphpKoTdM}Df6xkK?uxna5ST^avo|M9(Qh%|bktF(y?!zZMI(on$+ zq{9*Z-Fsy3wfUl6OIx*c)G2O3q}e6ga|TE%iR+g4qknjR&Ocwk^vVL&S%goIPUd)# zaadu{bT#H9JEy)7C-7Ff>FT~-?@ru30r!&bzhAc+6~3ov$*1i z=(LXBdHSgM)9f%HOc`c*5xaK;a^I>kka+wqK)nc0@Ho`*3&s*{21>dOCIKN$rtK# zpA_Kh28-YetsR;;hO2i9)Ca*$Zcu1cUzsfKx$V5>7Y>qtdg|?~G$KRkdSOpU>&BPw zlRY)viKig_q9ZkcrPK>K_x$md(^pJxJ#X}KAgM&U<3j)zw@fqjjPte*<)z*qG;2Yy zwHq^^DI$sXzjfCIrz`4|f1BZU;h0<9WgYW7(|t1e(mmA?RTaPmPEFDO`I_g;x$~Ne z#PFUoDqjD}<11mJ$fgJ*ns?Y<)E`L@$ahP?LFRKf^5J5G_j?9N){ftu;%%bmTt58P zAyvT(*wcnB4Rm_16)8lD+x+_sD~0kd|L^ty5A_f&>UDxx@f&UVU&Xfo9?(JjFkB{# zp(1sO_-uX>R2aR&X=Y(K`Vh%p7i5|a%UL1j?80E3e#Q7kg5XUq4yOfVph}Zl1HG8N z=K@H)(*m#Ju95lE%#ZI}>DpbBOiR39qQB$h@zdiB`3_LslVV@Ymon$h{8Ixuq33x) zsJB%!KB4Ezi6Z__><`w{tqRS2q<@!}`K99-z1nlqK*dh@Q=WFYzSP!;TI z*}&^cQpS2(a1WpJTDOkVd9qHh^nlOm!G^~XRiTjGV%tVqR@2po_48d8y+s@ObxPZ$Nax^J&v zypA8M^3a&I@)B#hcRdKE^5@wn_zoH;Pe^k7U*BDyEGjFcwRG4)6Uq7M*7aVF6I7Ff zlK5vow5$9vOjru?o-{QM&C>z~l*dX>9WzC9IyxWHP{Cj@?6>@pbmaLXO?+=ts(Dl{ zx`@EcK0kPV1zRi7keb;wipIN;WnEE|%>#RzJznm4SlnaH%mzQQI=96jIFaDAb0yh( zoUQ2|u^lVQ#hTz0E2D3$?}B7nr|Cy-gl**3JQLc4v8}Pchnw~OXH{86@oVg^Vx@Nn zWvseK>$xOHU{z01Z#i}6t*VPUH}z&;&0c~sa?;zlAP>Y#(M8u(`;r#SrO|-fAIu#W z;tQjV;%ZkRF}kg;_x8Mnhh0;hY{Wm8m?syF7Iz1OkQgBOD{SCHGy_GgbK!N+Lje+L zJq8ji?ct;6GN(kD$Q~!D@BaQ)yR_>Fx>c?v zYtcz_r)<3|W&KF$C)yjZIs1GX`~FY0z9wB89jVjC*Xrq-SLsg_o0!B|M3Bh8oQ#6E zwWaM@8Irw5T-oOi)}4Q-Z^0Kg9qb9bRTgg3_P>Sg^KNc&mnIcZ2j;=+e;`9k(iDao zu%&Z2_Yoepub}#;_-*tl_{L~gdcupFB1ju7#v1-9fq*LHb z6I=$`jXjt7Chk=ahZ1-bXMhW!ZzG zE>-=)J8|SwNr&8=gf`4eRB#XGGiC?anZx%fs6gK~ydX#JW)hrWJ6BxX7-Qd08gYe$ zIf?2Q3T>cg-du&5PoU<7AY!0R1rPNy(}dN=;!mog4mrDzAdBp8apjzjy7>tP+r=Qh z7fG1DH?TM4{6wxIrgd)0e|?HTGS?vT^^Occ=%8O1vzx5`94|#Mdu(L8sSYS`!u#L(+2h8sAKe$^g(|{+)$H%d9-f1ioNO_5 z=c}IUhbKQuoIy`vcXyQTZRAOGJu=Y7x2H{sETfr9Yk$mPuT#MC1b!8pzE0gfnOl z;G%OBoAEO=w|W`)e8cQ|vrU~JLF0YLD62}M!_GqUisw}6@U=8AE~py_F{;>^g4N2v zvu?&xY7oqJ@63v5Ojo`8!6##nWRD1nn4@Sq5qG9tx7d;y@O;>bj&oS#2N1%(30zoJ z7k`c$6V_9@OT(*Fs6R?iYWT;@fh7nKD(3-!e4@ot39xCdX@Q zKE3-W+{4J1rD1-oN`b(^H8z!N4NwSQTzS>cyNXTfk-WG2g(Bh>iXGR0h0s`mM(y8Q ze@%bU^pC>(uaD4LGO_L`OOvdPN#{LCTsTn5usp^U$=10XjP#0~p?@g;%O0F6k#W`q zPl;t`K&G}l$Q+oiWIXW^h!qCv&jwkJDMdRFaR~OcPE`Q!1XQ|-AjAZi8nx_QTR24l z?HBZ9+DdoK#7Y*622-3ld`U`Q08qS+XD%eKtZJ9y-_y&k5y3Dh0PrCq++7CoE%vdG zUPs_*kplm-zLA?8R$N|ABI|Wioz5^p(6MCD(mVWPR=S%`o^etvcA*-$VhKghz8G-i z<2nGp^yS^_M{D$3nY$pfp8K?qmmZq^jk0cYt~IiK23>g$_wp_Aay}V`NGLgz4E6!U zW)xRRbF~|2bdh#)n{nDzg(YT72sVMZc*?{J4z<5yMj*%7W9V$ou|e&L%~kolbqrt3 ztAh_zfVdW^D?3^Q+JN7X-0{iaQ^{a0={?*+naTVY8eNM0uYOv~GBsGT+(zz5(6|8_ ze97z2rCdmHg3TE7$$3I`7da1^i`%fg}9b z#13~3Hb{S5SLFTG0&tvi1>ee~&wBK)&>Ru2eM86g+?zLHlK2F*7MEZS?!(f=+`RRC z%;09Jmc`dQA8|A3mRaU&pi@^atq_j!j1k7l`DVhza0VPoyo5e{nRbuez$LLSSO~u} zk=Fl?Vg)SdWLL|d(${`?&a?{^m02`)+TkKC0#I<=G2S<%S6iU2r$OWduPB+S>NhBS zVZUH3;p%|2%d*D_1x!48hSPw0<+NG9wb%IEFLN2(JaOlT>Ba}DhnpB?mWE*lVFiV^ z&fxxDRG7h6Va12lQ&JrK2qK0%-E$|Ou*7z1RjVx?v zGCjL?a`O>Yb*ud=cL%=pe0~}4?tqU2ABoKx4uALLd4!rZ&kWBO~I(3p`g3j87oyw-w*DA(Zks}fL<%GQTv@6 zOF0S%4NETp=6*u$u9yVS0kZ(-Z~C(lXfBSF%5oz*@c6Ix?L%~YfN7PZ(t@IGhs$onf9UIiScD=uyRX}=3*GKQ3%g<&R!OAYkhceug%Io9r zhKsKOm8a>gsCxru$Ja`n|C->Ah%1_FSX^WZQcm&4E8qKL^stx9!U<|3i_XE2oQ&%- zB~UAnKQqCW#}VwNEkmNB&VNE;N#^)Gz>7gUsfn2W8DVTvYS=RR*!t9Awr>tQc2H3<*z;AVzZ>|E3w4~@17?9 zaFLeMOukVYLBiSy&hc@%DDU8!-=!zlLRWi{o0MNKj4DUeddxNPv9lx9n88n~iv8hi zx476VkM)|YmYcrsT>b#1&y9oSsk^qmZaBZ(fjG|FZw`av6iao=iZnsK4OajPFOLp8 zqz!F@*-fa|2?Y>uG=Dw0nMH+E(Pul82HLG1;M@LGO)PvY6m}cJjul{ZT-kfUH4EhK z&$!JxKR4*IYgh1>R3#}? zliIDY<{-}4xou6>gNOM`09@;#fX%^kUIgh~T`)bIPB^U0C!Xx5UBAHFgx$x-3WfzS zUC7_*8u4?V1rQ-7z#hlKiiBhMzCQ_&H%y&nJ}%qjd^YJuC?j7-NKFR}f2Ep)VmlsI z*^ZmmFbw=(S`NKMb?f;R0L+^vJQu++{F$?DQ+ZOHZ7=fe2T6sH1E2+mJyJp=HhOV` z2=A)D5E1efI`&;48dX6EAI57$DXMGf`pO*#Jyam}%FB-L&iMX2os(FF(o^Zb)0?s zmThS}yax-mqN;;a&t~PUnAR#JV%;jVg}?U`-0UN40jP<$OZB8qHDR8^xR*6&nJ-C? zeav*zL@YxQbzJKqwcwhQQYS_Xa_Tz#kwZ4{+qYsrQ9+ z`A~n}VB%jopp2LAp{ZMxgQ1kCj9Hs`=xXR!;cf%03`CTL)Y#I_OBXOgn3B8^q@Cv8 zqo1Q;E(0sg9&Z7?>{O>-+e6~loI77W34N7>|0wxBVw;&qXucq4cAyFx0-)~AQGvts za;#teC}kCU(wiOZG!yOf>nqIBX`{i(e97dY_Gx?*Qv^x4iK7NU_&p z0sGB6QIEEA%k-&^`N<5~BK)>|ynPBtxGasw(Gg~&GSYL1n+F0u^riF_#yE;?-hg+@ z4KJyB5YUC}RQg@HGQnW1Eg*iv0~{SWe_)vON|9%JY#i<+n9%%FYYnjwryk(}5NkSx zqH&qBT8`8KA~W-qcQ! zVjZ<*e0=x9$Py?q@4x*;T_2;~(}@z}OpE@LbjYxp!AHi(g+cIN^VF(l4f>Uo%)p=; zuQ*8&L?2AgzmW7tFlN90l>FT7DX31(PkLfh<8P%Hz z&d+D0l2Se7+4xp2pX+%I9FOHu;e<;-)%tYybX|w!>=ayr!i|5WrbIW@aZpzZu-3|$ zRfTnf9o4j8U&}U8xk{h)A7Fk(=XEL=tk!77EPu9mlTCK-%VYJCkM`x257UaYNp7eS z;H0Eg5lnE&i;c7jHvx=(5S>^;(MnzhyKatFPWm%Bl#!1Od^&2Jqi22hOg?@2x!22> zpz|>$D0oy|$F7|nV{y44g@`|*QE93f5tQ2Dx^)|MBKn|s?WtdSo<@QlC(mmm96~nU zUAtF1Qjn=-)7fe++O7xut{)EsQ)yQpiCqZ5&Uog+Y5pHf9df5R4ht^tAx4GPQoGSz z-?|lS@nCKejPNOL0y-aSyrt+~d25R4#>hUAg7?6v_($jes^j2!RWbH5y}7?aSLCOR za^^utoOa(6yGn?e93U6_=xTn4@C#?oH5rsyc5X2X7F7;QkQ8P ze|;wG<2u?{-exm(tVMt2cPiB)0t``IbL90;A=JlSgK7ESfFMT>E)5#M=C><@aX* z#~gIonfC{&b2QGqHK!UPD;oVro~Oa^{ypraSU?{B4}?xPjaF9k)(#o0622${Q=`c! z8>WM`x|ry=p(E0swy-#h74(g$4}mK)zFk->+;`g6D|x(z(CM|X zu)nY({Qz^Xg-cyH%)?%i-f;p9sryXg<_Zp=Qp4m}D6atbtvji_%G4;UI1!qG?3~)J zjf79*n-}YON_ZXHNPz`%YCxS19aC40o`!_}9xU$Gmsl@Fn&!8ex85>}S?D0FuvW#K zxA9tNBvX!ZPUzE>g>V-HSncVrRQk0Dl{k-OumoFme04G;w)3Zbo+t?GeU`7e&>N>P zzi)w$ZKWG$^73mhn7alZUJN}Vxw0$RB5W19Qz}Te3xHSjB+RO~>QhN^qO=bUMKcg! zj>mh;&TNq9bm(f0R@a~&LxpzEELY~6*DFHTrZfT{NnT-M9o zeIcPm;Ld$KT`)CG|6ajEq8R6AkONKsF7?ZgcQO8%O`v%OY!DYxR<%1cw@9CQNN{7eko`K0#|!S}SU> zcMcmVr;dEJIEH@>%Z53_#GZry%!Lj=Vwi%1vhYiGR$k!VaUa(GCCD7a@L=v03^@*o zY@rIUG9nOz;H-Dnx#u|wEslWT&@hFq9G|^v$R+61A58umZ)*gmLmJUd$*(#bt0lM7 zl;ZITnlJX;$<@BcV0~vufY;(4Z3+;sYB5uI+ylu;7aUHf4+i;pkvX1f}-p zMK56BLqqmSIOwpD7m%=4_5UEo*Pwf$zI9VfQEbx*^d6en^?(&NpNBp;y*7AF-TZPj z-Os)x(n3WY=XpQivp~lkv$6UQpkY1-!>^O(DdaERvRR1u`!bu66PZ-;BM z>x&+*0(ad{CrLN0jL{-z5r%ggz4Jmoj`ItMlX4Pv9}T~ONZZbS0P(&`y}3&VM$M@h zTvQb(P^Aww&JK(}vdfNBTjy4~H^;b_R@bE~%XgsbA38;&9olb8GyLJ0F-v=?#<<{v zpE3y!T#4325{tTJ1gpA8tIww!60B!>O@{@bw0xOHfLTD7+`6;2{+%mw-fO#_ku+qz z?4}tP_8S&VJI1(qp##S>^ysW?2$&+PByqgEu@ktrf6`qM^83C%26)BAx%K%G`j|~S z$+Aoej`dEzj?gpx36z2{<$Gw1kM zKAE%N(Ma_B4BD~HUj(LIEHdZ)nf(L26g`VZ3q=~Y5wt9+sPoAg6Bib1l)pur2~`#U z{-4o#P&@O}ygqn3t90v@ZJ`|v+w>)@`7wB9ctWB>>uCaOmS+iGefzbx1Bh@1pvBw4 zBkZorSRSQN6E}fH$@UXAzKDo-aZXCE%`fgLeLWLn*9ouk+qFqF&&dmYqVuT6S?5lH z3PD1ea*!{rrq-6UlELZphOX|8Tj*{iuXugY1*E1ygxAJx;jTgUB>Fd+}<{KLt22BR$ajI%R^WNiU@neyEsTgb{CX;=P zB<#Yq>tfx|Ps)UlE}4RWsI0VNN_71q7E zOT<@KRzLzap89Xl#~OP0m$bAg2d#zYQokHPuj|{v8IJ0yj~mo2x0&VdE4@|67o4&{ zdPP791?Te4jf<3m-km>ex9pti=F^RJnjkItn`5h&{YwOUfPMDWh&>U*%|d3Lp`zwz ztYAD)$q>?3&k5hbm%dx1CMdKRC0Yjipv@j_Ww*&VrfOOnynfuuQgB}K(Dx+vzP`&` zqeJIXpRD7b(e`3w{~Nki$b1G^N}(*EH3-$eCc^?AjpS+Pn;q>PLg>^PpwVdF1mI?c zcyEVxb>^SZ#Y^g@_kRIQm>XQ4$Nv>p>K1w9o!tCB_$%VoZ(y(*X9@Q%s(w?q1CB`< zNZf=+^WKhlBIx5THih`)1-?nehE5O+^3vo$+E(Z#uc#eS-pb1RA_Fw5!|U(B{IcHK z@U!we5Qc_;dL6xS^Gz_f?ex;)w?rmDk(UKGj1BzzFgBHKzRIZ=Ae2vS+C1Y7h31>8 zYG&;6p*E88)g3^Db{n@e;(X`3B*Acg2KJPzP8j&zvbWWD8zlZaf(NRUe{q%r_&5n^ zfY(GKrb{L94zu7w8ZDS^0q#wO8l^mSG1SCSBh!W7x#oK6mGFd>p(Nog;dB(>8x{|S zP*?kD_k}tc#}W8e%I;_V>6aQh2EXWT*}Ak8YSvlIXzP6TOE1uE4abEz_085gu+=aJ z824(lJD5wl-a+%buUJGETofGKcK=aCAd&+dCYXx?6podi6}@QP z%dRIeSYB3N+m^Hp0H=~$7|19$z7rNWMBJ3c#G` z%C{8unX!ppj0(`6DC=AB;WYvSK)Ad;1bZ_dmMGs{H5C*Hl(LgP>GYJIdF_uvn;$#D z&e*+9T5fwq?Jz2pmPS>~oz*$?3-a`W7xDcZ=9^!DdrI!4>tH}0w?^B8iCPLIa(WDV zi3zK zYbMB4bRc7h@gI){ba$59X2--U+g4_!TMv}LV z%W1bKEX#Y#HXc+L1JASI2)1u<^0_=1Lz2-Yj4LmETsU9(`U2ml3H*wq;Q-wr5+?P1 z;S<2f4m!ZL=05d)9T-n~oy0un-a)!kF39ZhUM?~VtyL{N#uWta4O1U9_=BgdX0#j6 zL9K&yAholGHBU`=?V~m?@m*-Xsw(gpKcbW%hCM!6@NRu{}+(Ey+E@oF}zbS?_w_z8O79zh8cdx%Ldi z)XLZ`N0*7~*((M_#(U#uLxqoNu1_QDTWpieuGe-}jSfaA3q4LR%symdK5s)UUI4c=SS-ZmgMH~0q^ zc^>=^!>qg4TK@Or4t)^JED@|!7?boE(29}$#pf=CeZD2WPbph8ZAh>2$4G7^16X1X zgbI1cAE=v^%wg+JZ#a809E%a<-M;4_ig27IVj+JpC~f1j`|%t>f`_T55PBV?5iApQ zS%V~Pu}ed6(spdfLxUZA7V+4Yb!;vmx_Aj`gV~eaC2{P;{Grnq+G+KdDUPj$d@eWr z6jD)(o)?x!$vdVv{Wh01dNAMA=vOBb_F5*Y?fn5D*C~7Wc7YM3uXWvbxTVtHCt13_ zl_NeV3wC|u_JiaA+vJh6(B0e0Cv`4jyA!mRepT-S$kn>6%3gkaoMbR&(e4zXQGVj$ ze>caSrO#9u!=(~KF$Fv>6!!Ym^G)f@rNV~bG3YYV>?chP<}Gv}eF@I|zdO14f`+n|aq*}Nf3FO%JEo>s`4b-e|Gh`;(!(;Nf>kPi{m?5C>GyYQ_0#U^#D zx`WDD*E--fE$>MylOCW?d6Xa|@1C5oPNyj6!Rnd1;Qq~0?E0*Z?AGYWy5l5HD^6`& zCuCkVnlSRb!7SD)Jep{mfblJ;IjDQ1RA}cmaoGLa&?dQY+`@tyfW-Ij2Jto)w5cKo z9?+%Z3P8Roy-%XBua{^E^BxKf10VTod8-t=g3@^qTKuF3@Vz70XRv%l|8ETaO~&Hw zN4uKfkNY2)2l|=!w_*meC0BR@)zBzOsGlX!owmB5&$~p@phv+s)vYu359Gq%j7285 ztQExXX6nr*O8B=k%1LXPH{vuvds;UuL~-aC9c`SN>^Pyzlpnyka#(rptgNIZi>-8* zv;iVY+x9kZZ8Gp$Pdm#_b@J+vFxuCya}dixGDNLhlwJ}{QFG)a@fC^k?-(`;uEOCT zGMu$<>%dYpH!EF&x@wwJ;7;fyz7aoDi_f|rhnN6}8bX_QeR*1i-3 zL9?vS){dIERirjC11h5%_XLx#brj6EgIR+yv(Few8M+zx3D^A~gZg_eEG{SYLoP8C zRc^Sk=;pm)Hn@c@c$&whCQi`2LBxub`$f&4LU-ez7TRgJr;_=l3z7Xp8V46;ZT}7D zASPKq7sJ|ypbtDR#VQfvb%NF}aDu1G*QtG35m@pfI=w-)ZcmoXEM_AlW+iDQFHV6G z?`^`9CK>IiB!9lzilf*Q1@FMI$cK)>jPYIbF&|q?c0v7C4j3y10Uv8P?PiJY zLTarnubSoe^x5_xUUBAm)`q>a06w#{C1IXH{f3+@FK`#2-xUt|5+TNvZb?+XzE_5vzr)}E)}eu$^$3dT&Rid7jmCYm)Z>xJg}VN$%O2HAHpQkYU@>Jc8<9L( z=29Fuo}+9436*R)o@wsL_xPB#?;Va_f_eLXN`nAlKQ6dUY`i$17SUmC5{$M$KgZS3 z|7}uMW%0)C0n+bBC?6ru7Z0Ts2r1-&OQz2LARl)x0E21|_ltrJF}uCLy;ZP;MA+Tv z>DeHPjq%cwO32~KC!Q!LT*0hJ1my2rc7{0y@z;tnvb#Xl6S&@#$D~zCJ@0c;3|Uzg zL-mdb?i3ul6rU5dCLIwx1cPV*`=^RaKtB95RE^N>{x)0nSF7K4kbxI?rv&X9LVf)H z_?+czPO?&Oh73`Y@F=BM%md0!T;5n~{cF`LR!OHIKNXG@;fx<{J2u*)=1CQz9Z#V- z%~}+a9JyV0XW4%(2fa#{c`GF*dRIzTiv8#3KyT%S@Ytq9T#`#jxY)6{SMCg_(D$%& zhJOdX(lXcQFgNUVpS>by`FqQozixeI6QG+#gtDW}XBd}C>dS0K;*!;cp=Wly4 z&GLLUl^YtJz=-iY;Z2cxo2VEkNAMMEo(Jgs#!C7N)VH~tTsfDdH+WXOB}?`p(^1G( zDiD9CQh^}I-1!-D{v6&2`l1eeotv+nfDOx}MTyw)*?MxF3ncs>KjB2J*F4vwUU5@T z#_mxtUk|=P=x;NU(frrlCJzX>8BpE3NLb&{-4Y4CdhXG{0at2GFX0B5wOCi^w=Bg~L z1`MFi-N&wdbBT3>68D$vio`i5t*Ui%HwB>6^^6spvO7i!9H~OB(ywDwlovnQ{x{VP ztDC8m_Fe__qZwHDp(MeK2txe*$E;Az=4-0dZ2C#@5K`Z+9SuTzg+| z8kxjlKXq7Eb&@hqr30#P@da=DjZ!&r~Qie zpZUc#|KDW@ojcI4I%-bjEWvL$PB+AbZhjk5s!^K)f0;GlNh*}t(Q2=bC{U4LLJOhp#{nA0itaT+Gz`RJXO zHXoDco%3h+u#jt@lQ;#=w3)Te1E8>*R7)b6%muUkk^pk(B))VKyI}6>DUBSn19DdX zT4u0SP4kQ0W^BIp$ECNJDGyJ<8`)zXRV$}G@-CA8$BTqUGZh-Ia3rxDA=)!%Q5d;->RTqGjx>BE-P~ZJtwN5|Jv-16f5W)z{g(xN4+MaSm&F8ZA= z472oJ3nx{r1Z)*&`#3kLPWjh6o`C$`rWV5`7m^U~@wOUO_|&8{bHP!_74Y}_hPpFw z5to9doXsIuJ+U^deyp~l;GLD1qOqc8D)=OHgKupJr5=--~a;z!){lV{S%#7e? z%}p8oV_uDKDWHAw;wMAQTOW6h==v*Yo@72Y5FuN@Bp#OX(MypZQ;@Gn8GJzQ@sACb z2R*MI>^j7dJM)6aia1wk3*nRSe2B}TWl5SJOk0ta#pzyjV^9N#fU$l@F<{qiA$`>T z6z1Fb!EVe3&_~G=iId!Pw4lZxL6;stK|SZvbgp{_jjK&RYKDA?Lqq;O@+T4h+ovFb z(RCWOn~pO%*+Umd^)Ue3-|6s!1GF-u++YKgK}$noSw2rtQ_Uqw0PKW>$98G9b(j=b zW}TqygoABKmgwd!5Af!%B{W?a%TIT<1de41%zCXPlEe`gl44e=di)SXd*;L2p5d9Y zA}HkDa8O?PPYVjGwB-39L}IcRa!j7vP{prlcd~yfozS)J?0XV;5+@uq@WC}h7)R{& zkANs`vYJq6)Yhb0^k5spICh?jgm9c@5aXev3%;V?RbZLKNvE;Y^t?`oQ@H@O0wEP1 z3PMMPq*iz&ZchAfw#vD`C!2rqq{I3K=ydSP@Qhzo#6F0JT|g02&IVjx&rab__CFaD z7LS7Ne&$WxZJ=_2UAy6(ks6gn7`~AFDvvQiF8>{=s9>hTGiKoTLhXRc0hs1Z2MhKH z>1Lnwun%o}76TLe8o+LS@_q2iDKP1pgQs+Rc;TNp`Hw6NcwDb(8l|TNltkL zeaO1G^p>I0xQus96Ula&N^j*H_$BNKgp~t?({Fe#=yyQKrf3W^MiJ22!u~2h64ZP>7jFIU@2{(RygO-!t2a^Jc* z1MP0FT=;JP9LfO(T@(UX%e<&|S^6++Z3r@FCwvB1Ma86Y5otKF z)B`{+n*%?=j-n4c@cjhYr3ilsYcR>}gOox_I|?Fw1B>;uWegb6 z_+SC$;9AwBbq_*$DRtoEr2bNA0im)S*>(*RPNpPr%LWcPcZ*Ka_1BdS>1j~6qBRZj;1%rQbk>Fv z;pMYxA;Y72oUzyqGktsdtw&}y!LeDG*2O({1D}X6dfr``qFpUE!>&y5_wGpRcqR@T zOKoQ`bnoy6AC3CihW>RTAf?MW`L=0St^WT>@yWYi27ymJW+=bvM#NixK`4CXJY#-4 zxh+eDe0b{>L4IHB@DzA@qoAb2=2vFpSq0SD(CgdKnW$;$1exZ5qn@o0tishik+d8c zJO}`e^ezNbOC4e=-=%J-Hux!%(gRGrN_st0FG)MZ69wgUhQQiBX$8%cb$j4q7$1)+ z{}kJeBcXF6TkK%Eh- z*C(OI%VfDk@N^zcX{S}2`4Sf6K8il$gGodJ6L$CtJNx{sG^}f>rqHPkkqzANEJDSQ zUF&_CQorw&{C|8EJ>mZWGXLK{t#fNW$8mcU`uz9-s;ehcZX5!5-^ckf*=-$pA!*Qw z8#y@vVO=Vm0z6=aV~B8oM2{hmF^p9Mwu5AoLns*9S}$_SG8HL4e?B(k5+#TWR*T z*REeFntmeCpww|p*#R<@YjUqT8HyM(u9fkTL#9p5udK%Od-^u|=U3p=T=wQw`gruH z4TUt_12qU)5bIT+D8&M$Jxoa^!AXI(X-5rQ*=94IOoBPXesbxI_?|;?{z#537i03# zA5fc;D;XiMN_ikt1?+PBUPA0 zY;Csz6WtpbLy?xjKeTXLuu}RS{$4EewjpTDaB>6Z_Yf2{xb7&l0U3k7ZKG~#yP_v6 z4arzNS4ztE((O_Y*>s=#-OWBWeE6CXfNj}nqGl&4&D z(hI1b51`?-Z!5KQ2Fh1=242lfaHWXT!DUx>JdOYl zy#Ckd9~yBp5*D>dy9GD{Gdw60nP^$|^KW6)Y!{ba^lY z#h2OF?Qb^7EoSMkbmDl)=^8D?Kc%+o+yN~t>}R&Ud=jTg{SNH~0Zk++7hq88--%=G zeX0A1C|qvNVWiKcQqO|Wx3p61QD0!xD$q@g9yjo zRbWNL9|?K3scS~9*J5-jWU$j3c(RcTIgVYoSU4(_dymO1DOJpS_}5b}w$fqr=Nba07`#{4=!V2@3pAuLLwZ=>}mCQ8fSN zpCoRDW!TS}v*~mMMb}^)#m+_yKwbX7SQPl~RjIa(Y1$f}L-TYo6oZYQ4hy;u*L56x zz?TZ;$G3o4e|#@|Ut8fvOGIc)#iuEJ{AY0^AD64jE?!^hu|zGbOB#p{ylVb31wcam zX{v*h0Kh*(Ku%7W-iGVgwruW7JXF8MEUj(KcF=qt&=DG0$b1#gx3|P>!z@4t;oHf zP@9T)ZxOZ9U&v#+X*z+ZIMU;+uQHC;Gzn`mpMm8-7O@g`rU9Ym%i+=2gxHtKZ$8{} zbD}(Od(%kM8(*Y*GRZw#doJ1Z_}yFSz~aFySkw@A%ga6YpljdsEwk#d0QS4J0K}CO z4`4C&d;5EP*%Vm~G5rD3lR3~^eiE`mJt^1Q5p>XP0%_O$&N=y9`aZPQz<%A*JR=mN zgUf-Z0v|p95%5ue!mr0r8MEf=SGFoeN-D2& z9&F24Q!D==F(eHj4ZeYNpE&#YK>OSta40 zDYdR}hb}IC=KpDWaO9)EFOh@t*o}1Taj(vj6!PS5c(J*3LCHkp^0#7kkuWDs?zH@1 zW9OP*PN?NT(6a{m6LP5L$nZa&~&rCoKuJ4vZ9$=m9%as{ED&QJc{z+~+#m-{YMKFq2z z4(?}uzjp5Ez%Ubf3sRlvf~yQkmciB9+E%yaNf*Gm_m{LQ)y#=|(U0rLkM+#91gmxQEJ4Klyl z@iXdY`$TPDg&}9#du3RMw|xr`(Ud-k+~sXzMc6!%;InkAJwubWIvb!=RjH1JTR^HpU=L-Gj8#u^JT*l zE@Be<+~!+}1I6iFQJx&xKXcc znecSBdidZja_6*O2bx$&%+Z;PWgg9`Wx=B0nGw8sBshW-`V)p5v1%{dvyDMOmoFv7 zu^&RnT5qGp-Oi$X_57dfHM~~mt9vI2^{x?LRg#U`K(>xNreGFR(5*6@MC%%DKdlzt z82+gt2rE=ru|89u)vObkEJ(c^$Tt<{n;5o=W1A|!l45RqO)QN&P56fX4mk#uhW9%% zQ+Ifs9dHfRqJvg6CC_MupX;|F! zUv7|^S>g-yjzPa1@oiA2&J%}wxakhF81 zGlPQygv=Q|4nd(5Ci}osaJH^^dsvjtKm(URs1#~U7shS{&RV`($p*t*X4s(SrS@3$+8-$jy9&(g!jH;LiL*BtnYssi~{7AokFv5ING2?Fp2%ZlQ z4%|cAR2U35*om#A{AAcAF&^G!$u8PwF~3iFN3K`DY zsJQa3xdQmCuU};(bRW6Iw-~Z1?3P>8H9@Sq%t;1B+A=JxL zg(M-iXS)gXO|tGnwJ!YYwV9OIts#Q zVE8C|ikncgO?+)OEUO;Vbkl{$4M39#Kc{&3`cGU>D+uv^Zg=qwr_O%n zgg=$a>pypj2igdtw?QWpr1mYY;P=g^{_H;aZZH^*s|DBBNQTN4!uMQus=+c$GWjm77T}@H zTprUB^a509*+zAhyuiOV_E6-1*ibX_DOat9^n<>HovgzL8jo_17?(F-rr+%)_)oKA z_IHw9vu4N`wzh0Z%M5Ft`d)%h+EW)}b;p@cb&b9fAY_^2s#>`b(XdDR_nci%^Rh(o?MNATso zve2#pd4RG^M1okxFvMrqZe}#$Uv~@6t1bM|1tYkXyv>6HA%Nvd*{hTvL1MilAi$Q6 zj6*r9U~~F-v=Ym2^QjjY#9!U>2s|1$#4m22}xVl{URjYmt}M1J!furr*}ayLkURy+=n&u`Ue+ z2o8t~g0qu(Iq>0rc}n55aQ*v5VC>$r#aXQ=oZ~=}_nLK*3*pQ-y z!3<<-SJofD^URGMyBbCwtns8dYh0-F&IOR6Gt*uss_1BDTNoDS1*3f2S%Qf87NfrB zS0^qrHRJxU*aMU!|FtJTxmF_#^+unp>(=aPM{$~h+ul)CHy7h~fbV*BGcYCIml0}F zbEdTj75l`N*q;Lf~CSUcB=i(5_NQ=qS;bO%A zk9~s*t^gHI?NOYOS~1irvRR>iZ&6(h!2h#N+w5--KvH83M8bbAb#C}mig}|kj55QY zcQ57RNVbee?yKC3tkv`PQbwpp;AOuNC2`Ssg?QEdM%p&cH8}J&N-T-_aj(@!>;=dM z2AZ9QxgdhXxo7cle#0@l)XB_6A`&ulPWy^$Qj2J^Las|-P z_3Y_vNwrv(pcKI9`?jYp$CbtR2Yl4KU9m*^nNlRQgVnEhbl~`_!3qLoM)BSI)t)=< zGd&B5>!W_@kLFKTA<7XUWTX%p8kA6*7{6D$ms@Ans5<#$PhrxCeOgUgz_=xB=c|tY zKe}EJIl4mo&*lI^;0v4@Ua ztkNDd&F)csE9!9iM@ge7G?p_E=^WG#^&BUn4Q-`2Uz)hC9ISw!AbEZn~k z^iHY3^?23O7++R40dU#0cOKrrnnyJnyU){SFL);4+fS9I+!tN^_)cfEPaGvOYgz#3BSVtmK~MI3dbQ(yz%cY=>?6L? zHI7EwQTpHMJtHk9IUOUwNd~oK;Uz^ZFtT7G0qu*?S8&XnK}55t^(*r)aUCb+cDOC( zrV-|0nW1dOjo;5M!c}ro-PTQtWd=|zgx_A+95S*$V0utx79cz}*3<7t#Q*R(J6WnW zmj;9gHBWMhoZjlm*Bh5c*_B;(Qt1OkFrab}KK{>Z1YwE**jN%(zWgKPorfp7%3ULb z{?5I%vY&R(hC)%&*vc#Nj&`ITb2${~W+b*n2qun&tjQ!!9`1MCZkQ0O%5QRy*U zPpnWD20RMgQN_foQ1LJ1J9v2GzGYM$fv4|Il)MwDHR&m`)@8g}2wD-S!6svcS#Rhc z&?K{+g`5LULDW7xi_-&GWy*F* zm!6{UN>|H{K?IGlk9_vIk;|X^KJufRkhfQ!neo}zQYIfnmcUbagxNt1TgdASe;;%@ zISJDst`8;e6B1d{UtdEzv~*HK#?l8=%#+;7y2IUD-$V~&7l;)hcf85I*QxhZQng`I zJr_jT{;BY05qn21DbUw4?2x*$4aLCibn7wZr5z~Gl$TtAE@tV7es)AZUtS|BSn|oo zRrh{gBydDYmc`H_)7o#Jsk`<)zkx6*SLnYGAI?aaz7!)~>r$+m(E% zgG}x@hM1hZD^~@rYa#j}iyxgYBKK!x&6^KdrjMnh-Cx9@xvO)yPjX_t4i%+oBJS=t z+(yNtyKm=kANFRV{YO1xOmyEZRV+PHe?V{H{ns>1r3{Z)1h@f6-Xrn3n%+|wy)=() z&myp`)>EeoxMdcqdoh;W70=kl?4yDn+@z6{)KUQqyl^jx|BV2*@ z_qrW&8nDPVVaK2Ea=o|qo${~2wjOtPX;{iEuVx%g_DUG+p0gF z$_fj1JYfkkN9$oMO%e9X>EFCWgf|VGn3tt6%lI+fA3hoXpmfW;D_a!3s~wp8;ma-a zDZWm*7%L&ov&9kxwCjFELe7|Hh)MBC5T0a~)N(2VUY2%it%GXp-ydyNs=Hh5ZTy|S zzxIeG>Vd?TrO`5y^RXtez_2 zhr+zgTcUN^_g7xp7C(iPCJ*I8S>V%3Emz&~*brAJJY(&G<0Q@?GNq5>bx7J)S>jI{ z9rKZkp|c4fSb?-2aQ%GN4Gdq3)gC=kZ#q+5Fs)^i(v?_!6$>_Aa+I_apz-gUYW*6} zNg=?L+b2#YttO=!uMxj-NoLg#2>#Cij-_0D@1T=wupnqnPIrikP@@t3x}{l){>g22 z&-%Pl`K?;y!i)X&rb9Z&G~wLIEYEWr>8kJlw?k!_oAxUXei)_{wBI|;+xgBe zb~yXVO=2uk(e=qmUyH8O(Mp~o$1M&6+ndW7tetpEUhCH!uvr5$FF)-PJM6jF18%>V zYxTSNzuavxMFnCE@H&7EC)=@?_w-fu)cbEt++CWO3HtNv2kF{90d>>2Yd2vZ!}GMC zqQ+IQgtxLzr>m-Hba9y_F2#}ex88p^(MZw=@&cZ_bYnvkaGd^oSKMG^95`-R=i(R- z2P_Sz2~M@JnxSc1;g`K7T}V_}Yxn=*>aC-qV57EQz(EN?Lg_}jr8}f0lx`42x{>Zi z!hoS$8Y$^+P>>oL=^hXe7`o0q&-~>y2 zJAMex@a4Huwnxid-W!!-FLCl9Z9IKLZFijbq`1J5IWOi}HA z#UyNmxTBj1w@}UO5p!-wr4N#vy;}V0%|_NhkXl&yM08b5!IQ)c~7t(V?j!ZUSfD) zeOKBugoGe1HZ>QYdZ?>|`)Ee=Uss6~b6p(Hvwo99A+5!oQTaEwMryHF;m(A!OYQ)z z?^~k*N&z#sTg805zpWzH!9fz1z)Lwumoez^!kSXnR8`vSi9cS~60$iPPLAG9e)~x{ z`ncIwV{Qho1OMQnrH`UtYU`EI1tE&g$Csr?3yyCx{damW9{@e$-HjkNs(pWAuV>cK zcE+YJ{OU5Y@X-HAhm3o3C$Yy)4Nw)&3*Dz$SR6F!rp-%_G@2cFKDZ+8Eic74rxGRZ z84G^(tHSTpHLeip!_@d>Lps6NCxTG(=l;!S z-QIYApRqrjvT6{7RwZ`I2KCEqUSmvR+OcFz!l`+$6x@cxA zNu6(fwDZ$NtLUR{gjl6l8~+Ikc=&dCBFZUf|7&!C;${f%raG@Bzmx^nE#yaC6`E0+ zup_?CCqo8D^OUkz{K$y`5x$;3mwzncO$c>J%akG}(^UGcK`JNB<~GMLp&kfbSKCBcL^8awJYct6`vBna2%?fzM*I7D z1|KSJo=V5QE)(#l|6wqAba{!fd@jaU~eyj>{Dyk{Op% z9mMpuEkL%jn71#m7k*ZDxF(OJe!TnA(f%@U*|awhJ=mHK4fWnNFd9{8!nuxDXN{)U zM%Ou`IAZJ&AXQ&cwIG!uO@Hy!T`Syf+3R0V$Ht`*-gmV;8CU+6Xs+b7D z=1d{>lHyh!s3RaI3B(G)s-JR|J!-(aufws_)u$uT8DNv6mc9>Fj24RC z3FX$!)Q~To@Ozl~=t~W{o6(5_(Mb43rGHA~7?&*kVRIEu@FKqx8;SfuxRf;(bm~wRsNF{vvajZ$8?W9oH zfN2q;Ct4%TZy}ND*6;7FljxA=nk2ipr7}IahR*hs%s!+TgcDQM8{p+(Nw$9pr0p6;l@fTh`BFPO~W?j3ft58<$Yy1&-dyMbkePFQ96sEgL2=q$P?X8RKhe49({4x%t-M0S^h<6#up(R z7P(bxkjJZ`F=Ub_LGD(z_ri>1KsV52v0&^CRGeibr?WG&Ar%l?q4CD0h1>j_P@3nt>7Du6 zVX4Cfvjoql&I$1dP)MGfYDb~xCu1J*BPOT_ph-)V_}r6^a0}_F>-RBUje;%X zp(Jg+xh2wD0wYA^kHsedrv$$qRcaAN=rtsSaPaj*sGLrp14}ruiWpCe*2>@8p1i1_go)eBu3+rgUv<* z3nk(Nu{mK{*kh^)Zxz(^xh_j2W9{&DpP~p&Eqk%3cGNL(fe2)r9#VtCntAixX9G1w z;LyaRbk>5pB6XW@sTyQ~c=%>y9B4Q1?TPsV~0(#KQv9n>FINif>`gS)_|YunLzzk59i_d^lYkV&{x?*ZN&m z=9zJGVNgQAKE2|=&M4D#BV24^oPX_>7gsWT*ddvWZ7%jfOW188tZiiGB>4Dsrb)w9 zhT*I7b!SsSAnU6IdE!<@x+j_OJ#{*F^XVQb+~X&)=qg5(O}R-vTE>OOzA?MMo64Lj z3Pu}ec9B?4)Bl{U|Mm38LQ|M|ylI8rY4pA`abww1Nm438%40rNU)Ae;E}qVBdDh)N z@Vr|4LbYusKRw6Ej`71Qn%lB3ru>P>`BhpeL$T4g*@5vuQt`?X=Z zS$Y|=qA1aTaf~iKrp|-8oQU$e>gT%vd`|vwv(S}fGYu<|dY8YzIV@6`P|UFW_7myPWRKQmA)>=POo300#mv?C!_pzo6z&#K+2bw3_BX5=nJpR zM0c*eMhM;|nIz0gbDMA*N#C4cA;!TB%?X6;3-Z6y56Gal@?-Cl@(M^mfR~q_LWNBkO z#uRNbB{s6dZbdf9c}$#!WX2AodUF!diL2@E_ju@vXt;peUNQfnoXgS}=rM#VLJ#^&E^nbB5?%HQQjA`u6PC3^2@2e~2Eru<+}_g$#KheX z6SARYJ8ZfISYr*IYaoCrr{Np*dYAz=Dqh}c5*i^)022%2oqLjVh|tTGke^0)-}B$@ zVT8CMea5&5yb8Cdl~$URKAvxqD`d_zwEfKHk_YY!+>jNa@uual7gw$w*zYm@>b6@T zVGBca_3$|6KmEKT()zV1Vd-CJSc!86UvQByHd^LlFyWg^9}=6fkC;P)yXhvY>X_=B zgrNL5sPdS9bwnK=`IGx6d#H)ChgjPDEqJtXK+o-1X0lNb|BzCl<^3wkxI`D^(f4}x z1uT(>@UW|gx0-G-WKlk1^oAI3tL1_(3e(i~tr$~Z6wn_i>W*}H&D(FG!atq(6`frJ zVNdo4XAz5P7I`Oy;Y=8VQvu@7fJQT7Ke1k?O?UQ10n_1k@8K-q>HSMLo#n=GTuSkZ z@PaS0KEk>z?dx4_GY6efY40tAwJnRLEccf98bUtk(Ru1bhBp&k!Hb8yqwivMInG$K zSq_gDXzUa;4{86ct0=5!r;4N~#$n8?6&6B*rdUd_p)4hA=s~LBpnrAt)i#l5`&ZlW zA#~tv`zOup?a05obMjH=jYI^ir1ZL+-*t$aMs>L^__r#)r}w54QSbd>8(4vChgogj z_o04{F~z?RjvDha?tix4>#B0ap%x6Cdzn$m!{Fk+De;?D_tPRcP=^MPoXi1ejVF3oVQT7+AOwVOk(!6lR#`f z3|Edc;AYz?`(LA`4@rVABOMixBfHO8Ci7oP5SoQy{D(CE_!=u&upfd6ii_?t%07}?OConJtw z*8`Z~VPJy1zYuHOmGlV<95Nqu1_>~ls8{=&V)ne4PuQ-{fg?8>b72|_1;E4y#b{08 zKQ!?u?43&EkUJ_1O%Fx>UqK`Dq>KoCFt1Id0hU+&L&uN|G$F#BY^1M8ekS^iZunb! zr;7xTaSAK;Ltn0_b}S|1kI@~MJ-vaNeZFQu>8Bl1m#(#yZtcwWtpcONhPf|lfgG7X zMm-C8-+6Wh>wo0WljP*=XN1INa6$0PChoQA@XAc^wVVlT)MjT)k~rWSvpz;nlQ(%T2gig2~5#T*MfO6Mpq9)NBo@GHFz;IJ9DF6mlCs{;cM`MjAQ~S2HZEu7^kN7 zqu1l@cz0JM^>}kG$d^o)w-u-@=T@79TO$(;Tq?@KFU4;^_Q{tku`Q;ul>A9(%b#8& zJ~d9YALOWLaLRRt#zy=1L`5GS zf@S`D*P|v1CTvOtpv(BT?f{$zo@ysPkLIm|m;Y_ANZ9F$|)h5(|!AF{8iLig^k)Z!`rMAQU zxBqSV{9%yG!+e)*5<&kHn4rx7zlX|oK#fxtd);p1_loj6oBA{Fb5PSt(Lypn6VxuE6>QEaN-nS7=gd_^RlQ5dPY7v?maAO1VMC zJRm6XqQ@2x!gBBZ5V41rn{8I_?^^cEnhxVIrotw~H^dKW-a!C?Jt4TnpH9|lS4Agc z!^cP#(bTt&!Tx4O+weG8K`s9D;Qe+>fghV=c*VCMqHQ9}FG1BMG>-fd7Ho+w7QPgB zY0aY)WS~hjOc9GYPA&ZcHD~WB!Z?cj3`kInnDS93EAU5)M`bCqiZI@beZsrgIc%L# z&yz-@pz}Bo3)6tA$w>bhk03Yzy7&QomCaPaoq#B#(>91jR!Q{q)PruO+w=f`FlZb+ zFkjm9lzEnihfNh@p~GM_)G0hcq8wNcXf*Ygvr&#s>Lr280{QM;d-R0fKm8I45r?B1 z&Fejhg|=2YKe3mT;fNWHt0@G_u!K+n?Q)^}*&d6kh?;U)dCi^mktw0MR)tZR6h$s2 zwRCoSI(_yG2MW}-wuUBlv-^F;06(-lf$*E}29;LK``bl22sTXt-;{?qmV2CEC$Xy%<*^yp0d_QI#95=yrgAmtyZ$VOt| zyRUBbK20#oPeGOW7v-|bM5t~F`5{;po*YI+;K1NkUviBu&Df}&pXp8MB&5wv^k-az zh?X*S1wnBab;K;D^1(!v7yjL`#;7hTI|dfgSQRAsQNl)=Hh zXcBdcc#~n&NRIbxmuntYG%Z>|+VGJMagtyimog#F@Q$aDrknmFkB-f!Mm0PmYPGQ$ z15}#T4uo27u7*rq?^y0jH*Q~m`Wcq~KK*b{WSxv`l!RXBeLSZuK|l3iUZtDQv zf41aF+J1as*h`f~9OVO~s##QG3GJv~o=U%vPUVrd5<+_fChb3Ml+yLKsG=eguh)LQ zdh8B@K(?=Xst1MQgWNzNNM+ZWuZCamb$3Ql8E6-WQkCDwA1PyR=R!r19v-kI#R=rQ z?yG-H^BIa%;PHK$2A5rDnI}Iq3lQ00^&>J9m#DwM-mT}??mT5NZtXF!nSROTpmFoa zzs@CSug_t$QEK|(=Im^Klh)vVSL*<9mSz88lCg9n>D4+=C>O@FU~%IBU^4oj3<@@56l1qq zh6z>hXmoo1f0egmukbD;fFI*WOxUwbicgKPdith7jT!e;Iz!3R98zL5B6)w4#%76L z(g;oYPJAJ7G$LKe@tuF&0RGtuSBW0x2^YsoaFnni z2vsX)fC@AjX^Cg2`)+b-NQ3LLk50{s4)|4;Fg07c5cHX)!3zVn@BW`A{Ty8QkhK&S zZV=L>gS+5rRUCd7bn+EZP3ba>_ZyFSoNG2aF&G+LS}!%ru_6;iW8Jr}7HE)KQPM#7 zOt)Zmbd-Psq|Y8FxF)@B(6x_LB@@jAieV|n^2 zCnLqzZ|tg7$F8f3qfq425kLyJ(dmlsWBXFMS#m#T@^n|Ins7DYEQaklK8g!puDcyk z5c=@C4avvWRAam`{kCm9aaoa=~0HG9q#B*UDi;UaSq0uxLxx0z5(8Z za=EIWQ@fO@9lJi!EkZs;Oe1^Z7U%FwxLzDrzYbyv;oG7&2))b&2xSo`=|BJ2Uv6xB z7wC9kk}@>%7zi~ZQ!00WF?+0@aw=N@{@2x9kS4O3B7L>UZ-%jeC3&jYN zwpmV^p##0A>9eU8=Ds5{AIco*qx{MiuURKbX9)gzXO;HOcCb9^H0YLyuNcfct2f9u z80iz%$+mLCyC4;XKZ^Y}=oT;RdV)5!X1Td=%I;Pl7IJsk5>tjGQJFIQ-`()qig0IG z71vFm80xqW@?`vn{S~?Xq&=-+lr~61sgTIpJxTG(h@Oz=bxIte_6{Jszv2mg0DGJz{U^aTJ%fgHXNAYY7M?8DZb81uvbn zE42rVE-(lhQJ*DCl}Xs451{WD$c$B*P*A{)wGrlb!@ zxbPY<3NKhzmJ-d{YiQV?qilc#=+?^rKx*dX{;jo|!@|p$5}0YOmM+WCh6>l%wIqw` z5T2Nz(#f$9yNsTEc_aJkK9R+O$}*ai+G5$XZnNK=%+;00N;E_kE$z{rZZ>R?@+MYq z&hhuVLs4<;jW8V-VY)LK5jyU%Bv*3{9g#I|^4QDY^06v@h0B|XL?0>x-`-pRVu=-y z274~0Zlj1<8M2#w$*fMvzFOEC?C+4I{;cL>Gw(hUTUmhl2uJaOCR2XycL43Yq7L)# z5AM7CL1rOkVYmJUtrIzTZfV4S>?2RB^_9Onpb_Faz{kmHVeUVKv;FT=1F|t2^xOEVM8&fkipa$Isnh;6~&5F!A@9hEf}vib$Gh%5(pkTB8-P$7JDzr z?DUx5nM}Amdo-~HT9y3Ayq_=CXNIhd%UmhYM`yCc*_j0+ZI8axf5jW8dvuM2*A=}i?{y)Y;@$&T>a9!kd0D#owQ+fO%ObQCXJGW?QtVKI`hV(q*l6(h= zx^u!g<(vd(v={R3G#5Es_*L{fyBy{fbY@S-%AQ_h{)S7QMqkO}J`ZscfG0N_n$fQG z$|-h6SXWM;13llKFv)XkMeCWw7^<#z8nywP4#IWp*B{P=G2OAIMTmk0D+pn9Zq%;g z!l?-P+>a|YW?52({}xl!K4+r5_SsnSG7X)_iy(Bg4qVWsqZ?7ok`qEW+rR?7I9IP& ze#AE0}V?Ea3sy&e(zn`C)6v$s3z`w+1D6IzCIBZRQ_sRhb*&n+nJ%QkJ4# z*Ci$nv0S17nIL?>Z9Dm=7a2TNl4+=8)(<`S~I~)(>;YxG*uJzJn>r( z-|ByhyuL0SwHT^%s{(o)yY#zSfw41<`mE{_GgFQLz6d$(42n4Ol79pirR(<%TD+?6 zzUSbtkyCgTA(s|A8_NRBr-UjQ&IT=cH4F!S_an9Nm+A3G^Z!I6idH>w)z`UR1ds`J zbs|n{OpCY749+{3K*^yj($Q7n}u@J^I?8JM-IWwIP~QU8Y@+^B&7|)>o_$yMJXIJ9pV%?;RuR zQgf-o3tJPD{=G?ZO4=5T44MEOOo}q2S2I$q5~zaGERxaMyM46MRi-OSRi^)nn@x!k z&wor*V%tv1jD7i+6%+n~27_sAN*^N$^D9;w0Y;Y#3w>B_NJSed-78e1;0=tdxGiM* z3+^tKgsUj#k?FF`pNjIQkZj;UBHt5^q+H{*kuM{DVv`*;jxd#;k@_s-{%S|&g09bX zOc1~M29USX2T%mip5>98s@*HUdq?j|=V*()g(mc!^a%k;$)Pv(sALMPtHZhjqv}cY zJ$wI`?gR@XO-C2$v2R{I4k7^A~>!x?j+Pj13cHO$|4Hhn8qtVV4_ZWSjjJ>`s3)i z>Otg+({xu&;YomxNm2B@)DE+=RS&Sdq@&Zy;dueE%KJAckVIDWU=2&>GEll!(HUY&Eo=4;yWuQ~BKJj9RVU!P*> zQUr6LCDC0Z$Y4=00r)*P=3S%Kq?@x8jlvZ>E-q+;u#5^7VN~%0@t^JL65*aRF8l>VNI#$1Y`h}J3RK-a1Gn8Xr4TG6k7J3)$-JY)=v)ns* zuir;M#fg4y^Kq6ph*aD@e|;=Q+gZu61|e~mkX_O+Ay{=||1nnHvhXML;APrR07*q6 zoV*t-f77+GbY*WJ7iI()c3&K?ggzOu5ILPOCm1n|`(3A}tgtXAfp11la1X84y%>P_ zllnLG8E;`2u9M9h=;*x-zcHHn!q@lTcVP0rXS)CAX|+i#`#F*H;lL{IH0v>0n~tKh zSIYu^>HXKMUN*b*f3~)+)({D^sR}P8mayT!Ub(SaPm2Owx5_toJKLb~lulU! zNsW5`k!Fk$DvSJ@z0ss_xpcmBRdu3Sv^p|$oTaQMAv()9krWMh1cpG=Sw6jOoVAqc zuAUIOa-AGs(ddR)Z*J8Rn%*ej1(6&C+>P?QQD*Z`c30_JR3|H3dag&1_yqqZ{e{%bbLM=@joXgisITxtl z;-?YF(vs;NXuO9k4TX(g;F|?1ur?#z&rNFh@*eNUgo>#rEpOwlDn?m2gJ7ftxp2*> zp6EnJ;4xYlQAQtC<=-(9OSd^Zb%GJOF8)>Z*Bj&O73?>V`*#iwgiT+zeTFXKF6z}l zD}?xhH^<6~wJ$Ph?djL6-__QiFseR91H&qpMeBE*&j!iq%w1VCBCK9h9>V}nbLowA z)nNF1{C}AS?m=(pmsG#C`>_;6R89m16BY&&4nrTt{;4xBpxNQLxw`I9i&1N`p5H%O zguTp`Nc`%3@;>(FVg9&u#?hnrY}~t}E}IE`0o4bO5WgWJk7!x0?P>0OLC1$2Js1hX z$l~q=R*Y$8420%jZ+#&R^669Qti8FbiOEA;E%)KI2k=)rJ)W&4>K0$?IKD>ejajP+ zJ-NCi9RT=fG#hEE{kyC6gtIC{6AZoIf14fchpUVD$~=$P1{MfCB2g?Um--UYm4mlY zgu(>PMI5Uam@c>?J2@F1P_yg@lSr>hxFGCa`xq#|3ILGy#qH{oz@H<=A$R+#6ZVgt z!CU-2{unStC--6XV!9VKz?6L(TnP8Q``U*4=XWFDxWY2$r;1ILry z2XKtV0lEve+h?nPk=CN?eWXoF^vr{(UqSYY2#0C>+xKOl>ld()l&QoKkQ z3&dx0yOUjB`oq&bM-=HL+c^0BPR8{PNx7F)Y%)rw71u{8Z>I<$&G=ZD!$p@hL`ph> zrRecnXRG?2CxKVaSKE>ID(Ze`vOaHrV#CYcm=+v8j8A?~E#_-reH;$^s>zj_l;%@H zMfe$zqMjVxn<71{Y z*)&ofZkMao&ei%)h6oc$B87uY0a7*wj@%I>F&&9YWhc?Xolj#O%RqH`GETi(eEjQe z6+5nT+urzToZS}EEb(`GCe>N~O%c-gG@1Q|aT)|4Wn7(ttIanZ_W9ANWIJD$DWFFU zT>TfPq8Ul}ct<^ItnQJGa6!qhG35j7Do7@fwinR`! z9R}Qyj4q}$>%7(+#k9R{U=&NgCLImk|Dvkr3|Lflb)w?lcfwU-hlinz_i|}wBQ+D9m{$8EFL6SeyJcI3^RM4& zswA0EUAfLXkK#-`{AhWX!D8jk-%)2b{m(sBwdnT}C0DZ*wrvZa17? zf9ekQ>HoF|buvv=^M%(U*2ah@kd;s|u$j?bbNX%5!9Um(bqKDW!_I0PvISBt6Zl3t zo!>nU@!6b2N`?bh#o?QeIA5*fl2I0K-VKba*?QpV67plt5_Hx*ZS=o_7rEJv0FX@w z9BF_kF-<4@hyT$f9Oxe1evq$%$9+a$q)~P=`SK`E5ytHe(gt_3EY?DB`K&A3j*i2{ z=^HqF(7K*k;ap!#WZxw|xI`a4?+t*^Um2F@qp#2ZFbnRX9;eO?@y&fq;D>+9^5pdI z4l>DEY;^SoT~HMJH0p%Z>gk7X9j-vGZM8~$RD$Bt)+q6ilG>EO0||O+8lHM&Bgr}d z@4qlofTEh4DI*&i|S+!(vWgw~AbO_nL|*c8>R3nY^Z+7~>Ka7H+geXDV` zAvAozDfB;J7Iq}LN{z5z{9U~8*3We9pVAIXcgOp+1BAZ$zLL#?F*mGofy1k9C#nLb zB9>j6Fp7lVfoEJ`b>~ zSQJM_n+(c3ut##*{wLb@TjO`Of zc3LVXk{Ja>K}mp&M)(|gDf9-$aaKK%%#cHeITHbDSDN3U*xoB@W^D(%iYX+6A3acD z&A+P^08~V z266}miV0&npAzw=I~T;-3X8U9qGL!6Y|p!Lxdmfxy#m?mLH1hT`ASzQzf; zk}bq_T)iTSiDdt3Q^K)kwChF$)t?-yt0h?PL?&8#=YE!Z(RO>uzT^8pB(Ari|5GrR zT_QPwO#dK3yEp^2AT8zHBjSO%EVI;3wSwC~%*TGG%apK&!#jriz`8~Gj(~}5gO+nA zO|nymtKIN&jUGYjqNDdqEvf@V?zn?tQpJ<1(&u!FtY-GGHiCqWULt?egpa*s0yaUR zXGe%_^&%Xq1sa@74|kuj>5un=zS);+skMXRW%<~|ZQMlGyx+Ait2S9TdcY{ysQU>r znqqmPgpg`2c9dtI?XYIjUI&|vk!*r#%WvscsEz@PsFbT$I>Mx^)lzKOY4T zpTvaQAdzV65DSOyQXda=Bm?M5koMJoEFckSv%VgSInc?;-~&LG0$?C-UBo5zM@Ow4 zw9{--!kK{j-Cp6xfe;Js!w44D<{QsHd~5}L=LFaJ;+{t0NI=)V2vNmzBTR^BS#_yC zP0bSW@kDkA4RYiN0C6x|9ST?l?U*x#$ckqe?37zI6cWDWioIonwSru(f>UZe$(Vb2 zf!aR*Q&GQzy*H*ss&_R?J{uDX$96h_gfB4I&piI)e9BtLh+z1TyK1y9avR>=!aX&w z{?$~vmNpKelP=semXhr8^&yi~u1V2~L42jex%kwYq=kHmif}u}kDqkY zf4P$`DqZaZKqk+$&{+gK--+j1&a@PQiDW6`m8?}99C-F-c1bXk@|)J|KOk+lQaVm< zcV)e&h9Gw8qzP{h-`dz?&QgC?|JBWQOPj(j*T`pCObV&Sm&%*0#oIN5=sa{YlKx>< z)gbzcC%I@z%H`)@m99Rhu1RXPG159YNj*;Ga_43|HFU=s@)z5>=JbiIUs(H96f%0G z0cW`B4t>!x5LqSpaS;LZ2758qk*WXio?@<@QLfYT!Z~0QI9bCszXR94XbcMG!5Pqb zEo6H%05<8k-k8ha3n`U(o3##Q{FP-1Wt-$09C=q#{!g1NAmp5yohBi?cXnBZ)?x$f z!_x7jXXmD)q+2`|zmdnnBrh_(28^La)*;*bk}UtH_xF6LuBbZSwkf7R1YnRGp$4FZ9^op}pRSY}94Yae$>%>6ZaZ#tA(+Y!&C~ zxIQ&n{s^KC8iA9sCY>79kUy*vmQVp?Cc-;I!{yE833vM-du!MNhXpQt2VIFn7vw;9 z_B#MIWl5^Z0YJy>x(ikn_PZmg-&B?Lj12oA-ff1$kN9!JSO{BIee8-QfS(SsxTec= zjBA1nD&boLJ2ZFMAb^l^kf=mr>#F@Zm=%oL^Dol?rRZ4b9=!a9EyJaxMYu-wk8{4nDt1CP(aGEO| zy_U2(gv)WM#DrRsYNeJ1!d$y#vQq%WTThXqX+4R( z7bhm0AV0|l#rEnF1+sz0_J6X#CP`%j8H?VA4EGk%Q0ig@muKaJc1-z;`uRpSZXP`j zsiBgIhs`pV2Wuo}3*7P?Tu@=L1RwhNZ{g|ajrBiR*6fc(6 z2;Yb>3iFDH!Yzs&8EhSYbOjh>S%DyM`Ggtm8EVu4Uh$-IrG~6sx%9u{f}G!^T-jf; z$d8TEHSPp_V{Np2?#s?6g3l>aknhb_?R63Skwn+hIFYp|dKjo_GvpMfoFnD|&2_*B zq?4p^wO`O-V>D7@6;lFdzN!hA8X1Lc)cdGA3{70nUUdh-W`*FNi9Kp$J#3pSxMQ4s z7W_9y(B+;@-r$?YOR^N*Vu^qAoeP2(^CZ+5I|RF|>r-M#S}4--ZDUbzvIx$versLe zdo3~If>;fqB>|*agRun(r^~{-zhybY(2q&JMxLGidHjwdvSzYBk>Jn&7;$N(A$GEp z2*iZC;N>MOB2lX^b6m1^`f~KvZfGrw4o&MJB2X4(BsB=89)lCxP*8b`gy$G9r0x15 zBT_R)_HrYs$n5-N*!2!u!3KdNyD4jDBOy^T_dV!U9Y+8huqhD$AWXk3SuzHFEB}q= zJvpDqQ_kB_j-1Qc=IJ-F%KUJwZn1#Gj~6{DF*W~EB1gKl5%>Noo z%m3vof<@-`JwF_CTsaHyOV1fte*U+Dc353iE) zd3;Dadjw2;YE>^Rzpdovm~o(nKl8X_tTT`va~k4k_^l@2-XohAc~sHMqZhZJvHNSS zQ7g6HVq@F0$c@vVb@=|z7n^ygrh#K*;z8h#^#Q)c#Bbs34?6svVrNu;G|y0ALMSl{ zA@$fJ7T`h|=`i#+4ijMLtI$3JkvrvHKet<-pncuUjYk<(PoP-Nm|JM}hYDrz$y(dS@R{SC9nR@C8a2XK0!| z0C0@pVwd9=JL`VW$IvPSu_cpGjM`c`=DZ34Vj9xB{eOt<xHsa3VLr|?dUF4!k%GYG|MzDFG1o|+4bReCd z<0MAgRX;gTd(h>&*MqkQzggv)!Zm<+j2DyL8}oT+T??o2Cf!lbh71=@vM6{+`&(^Kbm8oaSTU z9yE3lEpYVi;C)8QnOrXg0-?@I(Y!VY+m}XmQ zWcqtGwdLqB+`A_P^|p9>-iP2`Ur+AuK(0<;@#5J6Y;jG}TGvS3aRMC1kLOt(=8y?% z=s{V8VC;iDpmqOG$M%C7=CQU~JthqAIbIZ|t*bbGFAs~=kCx6;nV^B5%9YOuZN^`a z4aoQ)q$wxfjDRQXe124kDKk+3FtHgw4at^A3zXHCH35G0@ex*gh;{c7R`&rgHC+lp zw7yS1TX4WZ`z#v+O^;rySo^Darq+^`0&~~Qcfasp;Sg|ACZ|e)8CqDG+Fzw~sKVDr z6`Y&`Q((jAMTl)S4FlJ^#CE|uj<`cNVByFK^X}}#$W`h z8#>=;R6=Q5eVJbyuzBHL6DK}5cnbMI(YIRg;zITDw*^8}0!%z^*C1~YP0>HQjLh;3 zXGindjeWrywV*Y|yF+3$xnO4#TFQdf>4Qb*jy^v#{ZZ{B-nXmU`6FaB&|`e5xdst^ zlgg*XUg9k&0jJtT(n!o4e@6n1Opronq@Ec_RHEwH9B9YH!o-c@h*H`DP$716n%0u1 zRq&S>)2$8p=Fdgyojz#1&Zp4jp!LA7caDZVRFhmpzza;<5+#Ip6Zno#cqZ-zVr>;o zjgIAfoNCTtEqm?h5+W<#5X0ol`R5HjlKws#Co)Qp1D(CnY}!)|Hn-MOYK7zf`0rp; zWS?099MWjsh(UbFa2H@OmfR_->PKHoD-Od8dB@M2o#YnujdAUuN`?$q0^0^*%mt6V zvX8a(Ik7hR4K0P8N|xN^c40YtUMCZYOV`~_%h8e4LN?)uS;El`i3PphwFj0R7^Agr z{j&WvcV~dcyMf3cDlabUf7!3qPcoS4!}h^gAp-zX=9Ohu(B9xBj}^|(C@W_Qfk1>4 zbsN7jmdzB!5n=03n1i*E{qDO`C65XmDk|)_1-2sAYhWw<3QdgtzWqr=@9<{fp0P!K zo(dWEhzD1+bnnlj#&U$d*FW=*s?Kry%IFGSJipJ^k>MPEPh4noLFjf$@;B-R{ZZv| zX!aUyP;K%q)xb6MP9&!5bH1K9xFPLIV$C|vpHxnrjZF_81l-5kvQC?oz{ zN9<5@oF^#;0<4bx()tR;!?(Fls;96eL66->Op=tC@cz;`knR9aA0Ju92dIKPZfVJl zlTk@x%HNWqIVMQ=vuhKQz)yx0K}P__X3Z+-O53NrPqQKG2N9e%_uX6pM==oqSzWmb z?rvK@hsokMIIq~NWqSYsb^Kx;85wZy4Mby~PW_iY#c(zkzg_7J#`%v^7AOfI`zKb1 z;BC@BgM|1-3=91Eesq6**b&$Ra5I1YfoC;ey8vJ>M1ViFz6IB?y`KZ9jcrpv*-M7Z z`{QZ1K$0U;0GgHz9D7TD>yFyu3w%UDqR>EdKxO-t?YiC6q0O!sh>NPYF_9b+R^jan zint6+A(LnZ?QWNuo&7{{g}_4%Y`=2@%|E{<;{03d`?geZDoql|A|zTB*Uz~?&4+`m zy?a1X?!v`9vRQOERG98Ke=!dhhUBy`5eP^V>lc28?DfHgWzKl?wq%v8|dV>4{j%ii>34SnJRE33e<*K)R_+4fdXxN z`ISB(u}qLL0?R?f+n$I`3s2l|+LsYPOaVSAkeCLhUjQ0^d<8P><{R&)6LY~w*>Y5e zWW&sqgSAo9cY-nB55BjFe*l=<@fJ)(iZ4C)Gp>)oZ^DPLoCb}Ig*$&Rx7c4A03gT- zZg_se){pqXD}8-WWPaDeBk;j8TKMUR9s_IUwn!C#nSDCaKlK9C4f_iKid%37wX6Vp z^G=?(so;Wh56R)lJUGh#a07~`AO(mW!~v{H>f<})d(<}b9~u$RRsPs-a}7t zN{&=&Q|Xp_G-eFQU~^3V13$9$?W#DDV~W>)v?aPjidhLJ+56Uj{(gtG4@@J6l!4<% zlB;Y)c)q_sr}b)+fJv4 zmXRwi?t}4yslUf*A$3WwxHA``$(gbU6q?mbx>w%-F*YxkXz=S^`%k*%Q(BO0rMjS>SlF&UZ&}+08u$JDLVq#}8b2j(L8PM%_-46m zsS?iTny)W>9)J|;cbrVfAl3t2B>T{a3JFqsFX{QK2M4D^tStBKaED)ms_?)IoaOtY zuQnKR>*Y8R&GInrd`V_ zlGb8T^y0lSpy;`!7pWwk)lF_6H-U%0;C%-IbyrF_ImE^GbkgWFMJ?N)X?fShY_lop za2Awac3BDSy%z&+|A0Do%ozYwH_xd7am8B_2{b;bbB}9l2Lus8PAtv3x?IN7!u zkJyygO%LAB%phkOIN(z=54Z&-|L}c-4SB4>(ESrITDzf=9I^vsXU_l!koafqw+~S5 zzt?4Nb-ee39^n2woH&1mWG_d6CaPVmOMvDA$k@gSeTXxdesqY;RB;AR*!ZbPWS~To z_&s=kOw9&NHWQaq`XV7%ms$5f$wp~m3U-gFL=sZ%e&4b1U^D_?ALmF$Eljel^P-Py zv{wZ?E>!~_GLOcTQyLP3pt_EY6F;!j$*-`HeDfagT1y__xjN4A%%MsXbXlH6cVmE_ zau#zTB)6EAm)|VLKgd@bKg)w6!nR9=faR$b{XQeLX?W2wPlP3lz=HlTz zBmaXz!iU^qt=pcc&4&RDSV`Zk3?72%e`1B4|4*mnB^GvtqtPQFc|9f8x=KXhN=}b) z$ixGyh_#3T{P1@Pf(XR^3`T5fg{apzbIwoS?Rp9}q6XVT~?1}Rj}4j2}sSSMDL z4F@*}ChlLqXA=W?sb=cG>$-We`dVD(A5aG8-PlxSs2j^Yq3P4 zXKS7%K2u{D#M7BDejTS6*IwX|Bw!p_-MdM=~ z|I~-TAd70AVBeodP*H{f?iuAjV-)AD8L(p33Hce%i-u5Go#4XPKXe~P{k5oKV`6my z9sSphi07kqOBVB{S<*wr(_VN9?_q))PsQc}6MxoGL-zc_pq5)d{pKyRWp!hbi(GkO zzq&53ACM6g+yIRIChdjAyUW#o4PXM zU|KU^Hihk6wI2Uw(3P|SQ6uQL->*G>(niKYZL69W>fZl_>;Lv`tO)<@iBmJu{`CS^Ro#@bEUHoc_~WP#_0UdfAV1^)I- z5llrQ14Vc5w5MBg0{(r^X**)?DVTJVRnNEIkFjou!&H`kGW!2;^_D?VzwiGxEQ>B6 zv9vUcbPK}LA>Ab)9U>h|cZ)Pimvjh7N_Q+Rji5+(cS-)=e!jn%d**(`K4XTtxb`~Z zI9^&5)$r-&zKT~V`UmY>gnqSK?TarfF6?ag8UKWH$BM?hc4;%Au<#$@Q3agsaeSS3 zHPtPMW=plRo_}2oyaHbDC!+uPYnmm*RXSCw&VcW)5ee$NprPf^K@r$9eRgmUxC{a= zkhRANmM95DFG!!$(M+`?34ev512*#~;bI1L0|rB`ry1ZEifT3NOX^jsK~;y#btzP% zVwTk9O?L0*5gIpL(dO-!58KgUF-n5)LX1a`mZEgF!i|8_g(dB`!i56u*^>+%syo5t z?ecr0zK-7eX>sIZs(PC+uBx>0M2?X?P&Iv^qUXxh(A7+L9f@xRy&m^(Rx8O+380CE zbDD&bkK%K&mlQ0t^oH3cUhkW>w{n+rFqtGxUJwwWlQZZXp%GikEaB?*8k2{49PC$+ zZUpR?*1&58EtJbqicD-3ySs7@Ai{FSjOaQppiVur@OE%eaH4Uf_OFsYtN3PsB%qUupB>Tso0xlUT2f%54Gf+5*R^;F8ib9DL zPIiuhOMoeaIY)7qRlzY2gVRz(v+-Z1LRvZvJ@yC_S!XtP?xF!zw&zoUr^zx9krTeYeffMrw++9ky}}G z+c|Wu;$M~Dq2h#fAN}(1m83B9pdp>4#F0+>g5t%8@o@q2IPKz(_Sn0s^nKQI6O)X! z=ojtH*bFMkEX~Kj*mzdy>YJ(!I}$$>dZP#vKOjA6+1v4MqROhQCHHrX0P4aRuLwQ; zTeg{LUBfgsv(BN}VUId@yBNUhD)!g+=g~vp=|S^XvE3GKRkaSQhJWPhJUfDOEv1>W*-*{%V)6`v8%0{jZ#l-cm7hAOxExI?`csD_L1XO~ zOiB&c>p3AfLu0!YUcfaI!rd%g$C&9PdH6UorMpfA+%teI=>MqQ-DqhNL*A!1;)FD$ zvb^+o>`dxX{~G2}HWSI>Dfdto!v12L(htTzour@?_;Q47FW%9rFsq1dct)uG8>Xh; zR@qbvmAEgFMTN~&&V9*OF!t(e&;J6-F#G+80XhnJS@>PsK(y_AX8VzV`InvxE{n88 zQtCAgLy0>x>=WHUsc%~&KZZMWf+&Ry)vEjRsnHb?L!2^2$}D=GpUmG{v948xkIz-K zLceYJK>Wdb_r}YBuEXyi=F4t??Ob+~qdrwNrv12eL` z0Igh060RPBRf3U7SW>rqH~uZ*vr6B#!tzP%Ql9$Jd1KYeRYs|`0Xg33d8u}B7bqC8 zm?(hHBc9eSA(cT%U|K1;2Nk?w_Hu|D`VlqIF)~PL(tFcW9x)J_8WP@Fw;rBDwZjT2 zjB>%ASQ7LAjh<-~i3K zRY4^ytBf!VuMcMi+cj3hA2-41AVFi_voAb5oe{DDOJ8#zT~O|vTyOu=Sq$L-It${9 zx`)kz+M}Z@_lxG*6_#``vSPAz-yR6IkAA%}VRM`Msce zk_k!fr!&^Wu*DvtPvMo5*aSnErY&PkM{|}IiUOL{wb(Zz2Ru(XHe{&R+S(IHCmt@+ zZct&&X0xl922yMf6&g*{CH(#Lfa8>614Y7O>*L+|PfN$b6UGc$ zzoTOELV+1LFE-g#%LfjpxW0^lGS>lRX6#3+cizi4JX66LUsAHNJbTW0+h+653aO(# zl)YExLM9_VE~ZwrZ6j-E4?BioRA!7D5yLTp`$lAC)A%Uf9o%IdwofCZlUz8wq;d`D za=+O)-e;4u@DIJwF?2&Rn&|!WZ82mytR~7?>98h zXjjP|vHo#g!_NC^v_#lpR_^xqv`gTT32E@Pc8F9T|o1p+gO}5E?n5Lb*+_K6V>OOV) zjQy{@RQ-P<=V@+`Fp?@5KiCJfK%c~#E3O#pX}|?u)APoyCdz%|!!QLt2NR*+2>3uC z$%&t7{GsQ(Cw~la{6D~AOQi5-kk&3ggwL$H7KR-QYxldC+8#z4nA;v46wXE;7HlVP zwO@K*y_JisH{VWSHguY>*!dFoWK+v%zEQ~vb2Ldgoj5iwl=wl_U{E<)F-qKN!$+VV zB1j;fI1Ay2(1DF27+97Z(c6=*+BG|);2#oFeAY#iuQ2Qg)SPDM2-zxID)?Bh?w4MC zKVnr8d~hstMJI68?h6O+C+H5axE*nq>@n()iz$vT6x5>x`Ds&iC6ExZm=eUMXeSw$U6umP#JNG)bzrm)@tZ^&sfB-M+7Za$97qt_XC=*@ zY`?KiR73sX~ zSS&bpz9{jnUwh3+odTJSmLLj?apqK{CQ(<`5r0G_=W)QstS$YAY;iKw6mD#FC@R(! zdlaofF))pI6_t1Xw(xG}2;-{(>&6r)N{^64yk8bx=0Hdr-Mo87ET4Enl1r>EqSGV? zO>_QByXxUs@LtHSE-|)+r*N$FrJWdJVrHlODTf>nTdPsJU$4kiapi+ho98gM^?=V< zVfNv1fO%^};mP*XvBhL6QI`eY!DlYTO~i)uZ4XGwxBJ?^wVCsWQma2#i?dH#ud!_? zFKF@k#Wo_Ziy-zGr;%9M(tPuC5Q&u*3eNtjQ@t+ufWN{Y-8qx~ZK0UG@D|A1ME#9H z?NQ?B$Ij<_*#oPYCU}(EFdKI-Zg$q9mR0|Lv_!$uiXIdhesy8+Q-1;% zdPy2kaZwu`X2XQmJaa_C}M;(Y5uJ zp|7GsHa6v1TN1Ose$U8N+=IXp?$g5F6hnS&QZA;axXOgh#TKVCb*nP38+9h(ip;Vo za!Q(%PA}{<`3g?HA^i)Z>1tVE1ZKnp$Du^vqTUZ-C~7Rj_}gG;-n3Ic;NK^ed}@8! zILw!7%Ugw_oDipbP^&r*OVR?*7m=0$`pp>vM&i`Q*$i_@}Ay*7O>*` zd8hdbQ=sXcwFeOKIm->sk`f$Us)p_*&eoY`V%Hh>3Y67E|J`ZFJF*qKh}pO}r9xG| zN?@9NEVSZnDqmpCJn_ot_`9Qrp9AekI&Xd`+Hc&F^1PJIEdI9LAC+3I(W?8GjARjT zWog+3{Mgxt+zbFB^g z`j4*-)?1=pr=M>88WKfMi&$+cVEzbX-@G^4SNm<8Gnq89bc6C{?nP9 zF2~uP1wGl%P(0s}k(7^v+vumvoz0GM0b{X&sL1K%7)psXLKNRi15dT`=znjBN z{=*$3Hdwo}@kdpTy3I)^-FtKbmN|1g|K_&nN9R#dRvEc(WC$cI zme0lctUutnIKM>y{E}a|+iD9PCo$A*=o?=rskGPWUl?J9((_U_79Dzf2WEmkG4zA{ zms%QnDVM)}ewrQ>)aYd>Uv=)r}8cXaAw;8X&FZ6dcib8Yg{_DD^`&x0@a zvz%szGAZip7>|lA7cno#H{xPX6-mS{eNBC5A5U_%t%b1xyQm#@Ro$+F z+;z(~5?1esdFvhn$%t4?C)0On)v9Q6zOsO5#Gp;vx_zh8RJio0mERs!#gpWkcp3-smpaJ^9&hw@o0sYtjF{g;TWt5`$iEgG-zqJ59re^E$tv)DGeXxUeh3F>CM_nieNRF+r@H1|W1i z4D1L78v%8u`o4I@nft_n;#0!Q6x^6k0}2lh7Q5A;}Y7x*zLRSuW@quD}-o} z`JWy0c1bQ_G=(j|=jhAmpG5P}#0d2_?(9AKe~E3`Y2>w9-ZuZ}K5_pdw1WQ0#xw1h z8Y3z85sA)`zctL^@+{1&8%5&*b2hoy-=y7GE@}|GwwOm7#QJX+eJgK9q@!v2+~}$t zh9Zg^vx!inZX`Q(cC-rbpiRFR4IVWrO3_u1MJ>M9un|chpmp0<;jjpgL|b!IEXIPI zijDX;!EQ+xNnA+88xD%&h0zl2fNEeqXkq&1;#IA&J`_B2^VYwT5QlGLPWNw%OUd2N z#n9}~a+UVYaoPl^^tbje^JrV1 zKaoD~QI~I37k;szn)H1AY>oVcJ4xawlI7pl6$a?waei!!H4e(y^>L4RHnqN=qSA9x z^BcQcLJ(W>S~akdF3qTG5)&Pl;{D zbLrTm>)*dVlMcZn$H#t^Ivdz49Ti)mnTgvAo-5u!{EXiIkWf>8(TK!Xd?!)(&~sEF zt0O+W*&0ss1q=Gp)B}27|AJ;*6psRLatxRS{`D3j0llyY9)KQ3Rm0WsyI6ywoR{a5 z5^PTV6dN6~Mj+}KLkj^LzeG+bWaZ|_8r1I{Wcz2b#HOF$dm0m`e&x@iJ|`ane6BhE z<6Ac0r@74;*JSN=G|e}19_5j(P3};vvb_VDW4sBttF)q?GBCJ&0U=Pq)mp@%!Hz3?+4| zs#^S4wd3e1c||-FD%Wud0jtd`8}O(9lDCSVsptd;g3=7S!O<<4vylYh;$J(sO@6_`8@2Zq%snEc0mIoY*lNdTS}jX8pN23OFrHtQYY+yLp-m91O6{RHVNG>{~)7;O@=7+MRfZJohTQxalbCX z)pz#diW26qN^j*i(`jaEASeiqBM*XylJ3@dmu9(S&>9g%lh`rl;NQ_O(eW{~t&+CT4?>R6P_y~eTR`?WDFPMcp(2Hq%W_|rXtQdJ z4?GK*Ms4X|y{HE9vu^~tpq@vd|lCOglp9TSVIRn{N)v`fqM?n4c8>8{+g- zJWm!CU0vht>Lw^~G`eSq@q8ym2H)vS)HB87?iyo|d(A->udVCw!IuIV1BTtm-ZMiJ zd{*jUPuw0M&kfP;^Jc?q(Y@z;U=-{}v;EK<1ojIm+DKUYSK>JQvFp~`Qg%8)fV>k! zS4Kz0@NTsJ{qb^9wC*73c70yuG26!VvXSmTtNu9iwQ8aCL>DHydplx^I|n@t$qqNRo>CZVN{q zSGURX`JA_$9WS`|wn(cC_4@a5XpN$_B2^yk zS7G$mP7lNxcq@YLpjWqhENqu6IlH&O#C_e@w*q@2m)o@N*78->cLUXaMbG7C0Y*uM z1DTD+UY?kTcoUVDG72ZnpV0+JQNSxBb+57#@p%4f;Z?nMa?D%3HTW<6i80nO z|K`Jyh~5FAY1FUb zCAcPDC}drJSW9CZ^Dv2b4oMt4EE>)gT^TM9c8e@rJy&|Y;j2t!fF(Q3;yJYhEEQZ+hRkWSl>j%*n*d6wsHl#D3`o7rC^Zvd} zD2%(hhbvc2gRM^~Ge}Zm@9f^)SVhH6{@wbLE$v}Y3brXoK#bDh5g=(_(1xzRkbZYW zmT2z4!L{K6-V)u?dsCcW8M>TRB_;l8F9pSNyak`1kxC91Ipf#_z^>zkl47VMox?(sjkH(TqAj z8+sza0wtKpH)oJjYY5*hlYTiWomTlValg)}QswD_md*B%GWoJ&QudYJ#n`U0;a2C@ zJKy_}fpcK9sOYEatswRQN8%F3H^<+8k-QfMtOe5bPe$L?INWh)DX za5G=EptoNvOYiK_Qcts$Z5Y8l4k}Jd44^iL02|-bR-)3sX;h-WTaV7t8>68w703#y z{N@ipc}*P7{WD<%zjyYgl~>;c+n9C5%jk)yKm5e7caZl`UM`zwDIO{s!z;!&f&NDL zt&Peuef`E_*{*ntT+vTssAW)~8>JiFn3MUoY2a5`uS;#N9_v>|J%=s%da1-v`(v%V zwC*M;h64n*_Tn)6W}U)N%Id_r?`QdlOB9R#|C!hGL4Z8OY+v zp48qA2-<9aJzsQOR7|iFmQQ~dGSOYD_e>6Ll5kD=GjWsa=kv)Z&JA0xK7W~*p;$+d zDBL{GqQpXbdS*j|=aaCz(wkb?E!6 zqkQK0_lno5waa=r2QeAWxv1K3AmT@SHS&EC!yE%8scnV2J@Wx^O!4+v^FJiuR$QvM zjrNmE_K*yX!gT-Vn${wF7=%EVqkAuyFGYOXr&b?yGFJvrEdp4c7%Pe7_R00~zb93o zeF8XU0u~AjtgvB?zPem+pH%Mi0$mc`C%y{Is%Nbn-i3D2V$`<)n~O_n!N0%%BkG)n;7-@$D@t z=cS)2%(&pJLkoEwigVRzEb})(794eTQsoj?W=gqV094Ut#u)G6&E-9irKQ$Gx|BMd z$FN%e5dJXGn6O-FcjI{fxmpo=2W@cocrhAmh(!v9 ztAT**LoGpqU}0%IrdP_U7~SFQg|ROT z$~Np~b!b)Szp^;ttvJYd&MclMfoA!-1~kHw6t7z04)|+*XFVQxlTJbi`|xteZ@8_z zxq=niDkn?`#~$m*Rngn_xE7qnzegldtmAPFhE?v+7#t7O>R)|)9#`HnJQplkM zoF`=gpy6dd@tRpwWA$&xKZ|n(iC9WnWW83A{YuE9Z4@=+t(o~^f@~JMWKAHX`KT8? zVITz(%9TJzZJO`iz=MbeC*3?l_1LkEpc7yj1-6{L47&Xyn5tN(a6O*h$jpAqfN|Hl zIL7Hp>dROyX(+6>hu-8rkX4dB;(d4`^6^q;A#pD5Sk-IhP-f`IV#M?wn7pr-*yxoHv#xwoX2rYIi1Zjb+*w+<72)&~1oE>L5Wpoz6v;O?W! z*p-c*Wj}s-L^$?GVx0Sb3vHJpk$?l~9~FT1M1|Lq?C~RG5tQ?Ae#I||h~y8I$jke~ z<*f{&OhC=p1O74{FyEkumcnIi8d8y)%#?HUN-_n=P^62}3>SqD$lvS#eHf}UD}T$c zz1U-2g8#_5r0P1EXwtO=H~R$+tLpE#l1mA2`b)|YXuNo4LFT`8%=-XaD-I%frerL3 z>vnT`$T@Y56|?m1+HpKk!n)U5N6B`iN;_Y-guXS-JS7J0E#i{NOgu=1S-ea6D+Cl_ z)EMISG`8&J8wXX5A@K{53VOJWiisAx3`?b#@o#G*YZ_1H`t8B7Q7EGX3v+xiSE;l0hHMz(QZt7a@q_w;Qq%j`RV zjpOgfv8m|<*b4J>#jz7 zU_pDIpduj2iEXOiTjd$hk*jqGimGNtIN6dA{&$SVh5dYz8UHJ-b3&r|r&LN-GU6s@ zEAQJEZb=0cXxzlf{@y1{`4}6eF@6{W)CHOG91w3IZ34_%mj&+M3+c<*CU%+s^w+?5OCUUm!*yAN}Rp zoe9P7>8by}{;BxUK2pM3E!{T0X)>GmPV*y3S@gDt`hm+4to*639s(-FVONQ88F{6X zPcyEa*4I=ync4XLRV9%PhDNFJ+Bw6g0Yp4RZn;TgeM)b_c-*^oA#(1)Z>2{kRrnV}@G8cXB(s>^Wri!U6Y65O1$UgGjenER=d`L3N zYRRu13+@9CXI}ps7~FXrq#QBW0LQmnnwd@%4Rz-fAkd{Vb-+ROdJbNch^sThy1Bt2 zKm0m`KWl}(2>YCKxq(Zb>Q!nK8#Jyar(ECk15r&B3{k*42c9(e{2th$^}YA4$iMan zk~@Vs0{do$KJM*YCz2dE83$p}tJAIUu=E>9@9QX@>qOL)?oT`K*emer?gs7|ye08| zeOv0MfzuR*kL$9I>AfjxRf+Kk@2LQcEKQFbCF3EB{XpX-;fv$HEn`<8Z>bo7VFiIT zi^?Wck}hgXey6mgQ5{TMEcBwZ_vu-p)6E~~P665>bLw^3Be8+5@GlZ>BYoEi=`(nm z5U|iv$F1FfqDYLf#uLR0um0ajLi~r3-p5yo1D=3#-}}+u)=0$;MeFGXU!A$*L5ZES zT1dq;K3o z!R#kL2P!8y;tt{+ypM{exk_oVNq@Odbj3}^O`?mn(2NL={3t0~aiCYzl?u{;gd7)Y z;K_9ogD`HXI#Yl5icc*=mo!djLJbzz#u>(VzL zm6d;1{7F#xG)b-P$xn&6Hhrrkb4|ZIN*kO|eBLqtBOLXDJ9tP+Ok)^hlt0D2GV^so zfunwBES}cV*u_}eR;wJ%P@!6rHIC#ZA$`^R5h@(H0cn0&fJMvfpwyAe!J09GcH+}%lt6bFk`hc?J*wM+{fMD+L50#DT}oM|I=&^mcDVKksRReoYl;A@`I)?BI4pJEG`b+56(p!6YoI zJd z{1q=I=wC$louGt_Jjp&|kclyFIQm75C0)=x?Aiw?#$3iT2Ff&!``?ro)+qSC7$G-Z ztn|MqJO4PJ>+6dTkm%*8G`+_00&-!Grv7!z}mmH1Glt>B`X?OfUhELGAJ z6EnaBE`OPSzcoPk(M6tq;kzG^B2Z3T(wvNZN||5anR4k>T2f@=yYToAi(qS|i^W@K zM7|iHTW8VVc&uxqK>IU!h{#!k_nv$gToB$LPE9}lTHwVPoIsVnX9&e4o-ir&tZI5} z=v!$lJ88|KaLFO!bu(bh@-!o^_o|?Ar9WOP${R!A97eTEo45hQ+9;~dYScf=L6nt5 zs@uPG7u52b?gj0I3oqR&39ZHfSkya&&_tZS;^W(hy@LmM?B%7!A$eE!t!)cH8M|~C zD$A$E6x}%8t}1PwAq6F_io!N<9CH8IR<;c;N*yAdnxqW|F&>*lAdKc&G1g#@fWN27%LffoTc!dPW_qsx-wQYt+oPz zo3!#et)frDHOsU5zL;k4I^8{=iqjlQ*Z{Jbq;aww0gOiAzNqte7`a1gvYt(eD=-_~ zNb~~yg-jBk>I?XYqGbwDaP+Wp!{t|dEscc@t51n`Y8p5cx7xiOytm3cPM7+hbE%Mh zdQuQJ{i*%l*hl!Mr)J^E``>K$?#W93@PQP|%+f^^5sd@z~quGYc&$0BD81yDe2Rm4(DTs*`BJAzo zo_j@6UIPFAY~WRtfs38wV%cc={ox(Ij^|m6?fzG_k0X}F{G#$Zzl5F?G>B3rO$HuG z0m(B3u8(E;=z)DI!GpV}0L+oFFb>`>1Sg9|k`Bp?p99Cuf|iEXd|V*$yeet61DL!r zVD*Iq4eB=z3SMbuk<97yB&gK6AEd$M(!U9{wrF(OnZ6M||Hq4X?Xw@NKuR+eSvMO$ z;!=zDZQU*6OIepgaq4B1bdA2(^&TJ*1ci9p_CQK<%tZ`jJP*??Xn7a-k{L2(hr2e9hK2&jzZs4el-GFyMp#a0 zS})UhWKampcAI&t?-vsii}jdDwDIZJbYnkH1>v&9kxUD16sjpB>N3FX&pLRFX34b3 zr%Lb3o?8m5tlQl={xF|F>B@efoBuNxTmMh&HxleN8>g0N{w|=~rSM_lmmuJH<{~pc z{1@@bNj%8_n8O0BF9m4-dqiCl09#o9ed2rRlqWC=789m@T;#Hmvbo-knI1oOBja)k z<~6x{I~f>cj$6&Q0)qeEz-!k%O-&%AT71=uz?spp#=@Hs*yYybVUs(D;I*tKygK0!?hO4#> zYaY$jDKgkFn}7UHop5`C$d|JE+2mq5=ppF7&m;+Ba8I?%zFToPbKLa#q0IltDa+#J z^YZ)V&&?vMtZ%12SxSA;j%GiQV-GL0spS>p=_NY@zHyV|JfErtt&Id66*|^%0-J#) ziN4aUQQw~zGJH|QZ6e0qIwp8Cs2;Eq>3p29hE(0E*sJH~{?J*hnoXQbe3Bd?c&d4- zwbi}pcZV0n-KF|Na^RKM={u-xFJb1oE;t0`(-{G!QV|_W^p1ekb;KU(su?xqJtP6L>LxKI00I=Dv1NV2FF!kvtWHy|gGlE!dzIx2$U2#A5i599VEWu?^#rRCx0r82-zbwYZo z7cI<5^2zmT(MH4X7VGW*ywd=$VDLXlBQ>pw&Dd3HZ38Y;2@g#}43YU4_68=BBw8q6 zk>F5-5|wf)m&AMq1wVbu;JRvxF%<&UGI#f9*>F#tH4>tNHxN1k;GOIN=Bq>cc;Pug zFC*GPL70+QRDqsIdo&Q^kPWPAAdxu%o*|IZIa#O}6)2+)L(7eASRPBtZU=sAA>~SU zr>cM4*o$YY>{7Mxuoc0u!018Oex9**tB1j>`0&U5jz^3(L2bGByF?9}Ki_9(B*#3s zKti+zV|Mg;%KtiyySlLGVPrf`UthCj)A1%S*yFJnMa7z=1Mq4FJqY!Imr3) zV`;-<@5J)VYfZX9)?$I=6q4T>DR`VQz+W*?W8E4zs*eM?!IqNXsPIj^(8 z(5+$T{Tw|J2A4z2P`kxvZ4fhBv zz~a{(M+b3jX1+1!sYr=IP!P^*0^oY_j#aM*9AA<=&e&>#JH$6=U}H6Y7q(>gtZ{&0 z-%Atx)RVC;ujN$47o=`<8OZYBeQor2#Xv(!v8^!ZBV_8_B^6Xir0z}a^rClU z;HSTO_9R?h<+wlOQhqf0Q`!mkM=|FcB&qpp)D#k~KK!UJw=PVt{YTnF8os_(mxLZx zfBN1AV3kGh2IJ#BR@o|p@b&U% z3b@G3Vc_`Qy~su}Xs}{T+}N_5UTsX+&(^^apYjuNA z5shxXa!p*VBJlzZSYke`D&6xDAUTKVDz@M(q^x+2UQzR_Xu!aFchQSvD`pE?O84#c zxgvF^MK3v{c;`jJ<$*KToG47ykz3$#i^q^$JSQ@NW~^mQ;(8ob}UuCWK!2$3GsOrFMgaG70SBl_`Xby5gAhk6RSfm$OM_-5M z;{3e?fMtt$caEV*e1$5LkX@|#Jt{7f!1=Y<{Ts>uZo{Sj?-YhcKott=Y-d#*Fg0#a zoX*7Y29}y8Mq?!B?OGWpi0G?LL8%x^XistE1{oCwxPM3M(-UlZoo&V>EC)td5;d|+ zNDRtQgaM#FT?c%Ddm`dHDef#a9-Dwfj>``a5_d6Jd_J+&Fdg{IW8P%4jtwA%%wSu) zVO8iUjD1+`8Py-2=E02ZL+~33SQmpk0HFbR|zuhsC`APU z(FOZQG-7_vCb;`NOq=IqVF)b{n4n%O?w~Nm3xna)jUf#Q5ny_qo@_BkygSuwQA4Q$ zBw4I_PZ+i`O^-WFrZecNtQ^>j!i7;h-=LNt%DG*jBWQmzL^qitQdIWOd;Fx!*nCWo z$SF%7O{jCUgo;xjSD1Ua8UepJI8Y@qoHP}Y{IDO&o%pw4L5NY3zuhyg2lABJ64#e% zEx#dwxZ})l^x!!v)WLr^g_B<~nGO2UkmAJ-0W{{wm+}60%NRbV6Np1SFLXrJ5nEnBIT!;GP&}2mDzATMt*g7)It8;xsbcX{rOY@#*nL5 zdM^j$7OE%)RFAMZ2yeeN_;OuD<+#D;%E7DMX{EbJCWZ{3q*SY9H9|A;h<4FAV0ouF zJ9#grP%$O4rQ(#@AYsDMs+f!}NexZHsXvyIUdQnJ`*m|?Iy>pdtNVLXC^&^2KjCLFxJvbXrsbqBdA+Xilwc~2X6rqFAzqu})2$zAJQDS& zsJPt_Mo58O4J+E)TuJmenop06p~Fe>p3D9lqda*XfbBv(%hGJ(izOAt&lw81I;`e3 z{GV$q62jb?-xEtIgtY&Nk&U`WoY8c)nejV6oA7hquq_@+xo)+j)Fw1&xm7J!QbVxx z{jkyIab@3h%!e+*KmG6zsk{wKLT}g#$hO?8u$veCU*5Ar?U! zuJK&xx=p{qp#~+wB}ShbCO@?2JO&Qp#PJC~g+8AQAf3HdnIp&(orBU-|D_U#bo*Gj zs7T@3iQU_rZ%@2mYWH(y5B`;Ve?bD6kaR7#*kALBM~&cV9H%rfv%D1@zkbbolnxLtiY@;akP z_;@WYgSyg?Cx)Cqx%~sY8Kb)s1?BT8aH|Rji}e|;qQf?U$8SUrHI@awSyzZN9TKrB z%AJKtytuKD^w?FW)9(8hDWRz@iE8!=XP>RpEEg~8$uv|;{VrrQfK|aN|KE47B))PW zq4WvAPKCkeK~su1c+sIAH|DUkLC$%eRL|IW(2L zmxy;OLv2BxsrIaT<^vYVdJCyyrd+hW_;e1KL#fjT>j4jmTBx+(h5RxaVT!*-hIyqk z-(n>Ok%T$F%2i^Mqyewl@psUrzGfTf2@?M_=q)AwIY{&6C{*nJTr-oBeXs-%pH55i z6aV`kq=+Yx81pY(wt`M#Q$zF9>CF40VFjhe9qq-&Pvg(tOIi3M_99AuRC=(PYEb9m z+CQ^wGI2dN5k^Fjz=Zk}iwh07?1@k*Zz-$_VPAZxar=ly+3%ksf*NiqVfqGX23a5E zKH>jfw~3ZtcU^af8-XgNfAzNWFwo>lu4|$|mq9)pJsYHe@c09F_7Y+?L_nCXj5tZolo>ny{@|_>5 zIk8`$a}75oNFn#e;zuF7O|rozlwH&U zud2~axy-~EZ(fU2MCKU;biqTo5>MiP#eKKUX+gauaDGpmyPR5jpe4WS)Yc0^t@y3m z*(FJ5e-*hZ=K7$oE=f*=!V-xeZv`q~QlJr!U}wlf42UZcJ!}r7@mRid#=gQILeqRN zuZ~a7V9?;W#F4PJm?;)uq_9n^W$}`$h|4S77KOkr5+B-#vvSvuG?prq2*I9fX;7qz zRa7#2i3p<^`$Nw~t35zx)oDG5G3ZHS(rtmU5>F8Src`TClUPIExA9d^XvCFQcUSB@ zih3GQQ&6j5Mx!={BJM-Cw@Qk$BC8UGX5T_?Jt;vnQo=y7_Zj%F;Yh4itmt7Hi3~A$ zNAq6t9ULe=5g8G<(L%l?)#wdeQtT9ej+;_gSN5pj<*0d#r+hcqd0#`G;zk}rxQTDO zEj474?=L)zBftLO+(|!C6$r1M{6jRp|WSPaE$A)&Sypt+1 zWOx~3efpAv-pOmMvg3i}AhQ}nmi_25N-ZwFyVg%Og~RaOk4{tEYEi!+bSiQ_JG==z zKwW}$DjWLo{^o*!7I#&84yxjRZmC1Xad%1AiA?%DnGYd?{;l$ZtJ9eve^BNLepmw>EU!8YTHZT&Z9Y$+%_?+31Sn+i zm4{!Og9K2cbntGWth%j|OQv=kq=H@4+%z2AzrW0;=4e_#L*z1lsV+{{+w1fA-+8*- zM?I0+o#&)Yxp2GFN)!)D9enk4R=3uLg0n}b38+y|CjL4~W7q?QCzFC)9>%9UrXWxS zx&2%%l<^fq7tGmcd%o#=YplF8Ln|!ZNhdKhcv3Vmpc@0E9>NcybjnKOGL?*G{L+Lm z`i?WZm}w=~mv)tmf*|!;H4<+YiYh2UgPZ9V=v)lE$sDq7n_Zdwh`5Op%2cevc+kzU zf)&B&+{#eM zm6(M(L?bxGuM#MzIPdD>v;)5F#-eA^TC zl*+j{0u&r_KBWrAfjCkz&n%Z_k0YbsAH@k!oDC1LC2i-~5SiysXw8EK&uiee{W#g- zj}*zN5lYWvYq;qt7Ql$LR zcpz-~4Teue_zv=2EJ>bI#a7ZbZR{%H|0CRt?|B;L`&Y_GPJ1d*wDBF>(P*Fq~ zsjPD-BYU4?%MoQoq}~;gI3n|yiN?FkjAJExWRKr{-k(2ye|-Px>bi90jOXiq-uGkO zW(!>!8u~_eu{rH%^WlcSBE1NLhNpBKhvM0THR5#0!ilR8qAG|6eAGuQx~+D?qHr+kUK?Y&E{ zZ7i-ZjNg4JIXucjcGl#aWSXFRnQ%*2SFrhUXN|i;5g&5(V#LFT1apK9bXPuu9#vbr zJ4h@4qjdcOH%z@F8ptwdvX0@>enFf6z4(I35GE|K8cEra+d~K5yKxuq>DWYE z?5W;X)5+&sM4UWx_g}*SHAk(XeTs;;j<(^;tK_h3H_8b*1_=gdtsvRDxC@URV2{WY zA8xOCuZJ-Cu=AvSv3U;0^!)4imoJ{Ee8SyZ@Wm79^1Z}W67_~lm@udp43&fQ3n6RZ<{dg|%FD5h_zrX6)Npjwgo7@;le5}w|OwnRr>krwx zn9^A~$L;jOXDRU&P0A3*h}=aA4J{3g5k}`yBW$AHjM~)pj2}&AJV=%~NdDwY_T@|G z^Et6_NI^hkCI7XnWK!gEc=p5cnX%~RIF7m3*WMeKd?K;8pSiZ#(iB&)$(?g>g@|CJ zeF~7oi)DbXa2ci{r{D)!($*z?9Ad_OBKmQCCK+=2+aJVC9`#k+`94tY@@arm!u;eP zl~eg`5Z>+N+MO+RFjC`J>hbHt`--oybF$}FcXt0&Pu@r!03W%%twhI`xc=dfff9Yb z(v6=o6`khHRDU^Fx%WHj)c zUQZeWY|tGBBQHi4o*NnR4gx8?qCh58zQ6n9;e0SqaP#u@yBza@=aU6wOY;<+Vy3Gt zo}KU5Ul^=fjOnE&)~&+}NLW_USZNnsFR5854?WoPt0Jb2yPRz?VRV3P7 zQ0r5=v@7s^QoQ4pp1 zz3X%R-=RGIw6F1%wa@Fpxg4~!_LowV=RzR7s%#&%p0RGYD|`Jz1?*(<^017=MUU6R zM``nM5pc(KNU=;`Pd(#yg;2wc^oh&?n5LiZ@R2@S&uabc86Y7g#%(q;+snoq51xst zlwPK^PJYUmC*j7OgG8?Q{r;ju>8$pdKFL0MKqlUw{n?+axoz0G4{g~1L~xsRtKpsn zZY)$@uko$C^ZmJ!C-upvFjea%q0|Z&PntaHN;AN$kM0l}tGy@7A%nF>y^Y7B%JVv} zUcX9-{t<3D_wR*9PH7SsT&WVFH#1_F_u8)7vMvy=d_~P9ROFJCOvSI|@ivq0N2e~I%96EJ=`R5& z`%KqtU+jawe>yf4uN0Z*3=BgSTJE9)wCB6su0$!TsnF%e_3Zq22h&fvcp0TO2|U=o zWBX2kR-K&NiYlyOL zp^!GFQ2HrLIP#5kSpn*3C1LTFLl_Ru(Ldg`md{P4+5)~68mZ1%ZLWR_2{;(84-F-> zEetb`EB2&?Mro-aJs8K`O6@<+!3HAXL7m;3yGdq2a`v^PV4$L!)ZwcT9(;XOIZM&$ z{2kW`w+eYLw5t0o(D4#wN&9+yA`V)yo~rYN`LF2*?1h7P> zxnUgn-TWze;dU{K`NC}8=4ee)2ljP$&N&H1jt%xCc2C`GQHMN1hwxY2a_7-(H4j}B zrB>G)83pksoJDHaXFOXuhU{@kyjmfKM<@w9;@>DP1P!O(doJUD+y!H5q(x-5y`6!O* z!$-Lia9OJ{>!wD7TdUJ1woM+X>xCE~rFgFdF)pWWnwKPJiIgRgk|UjT-!l#!Za#;E z5ANRt{&PQBc$F|isGM`cIObUNHcv0B`h~|jtu~HI-OnMbq1%A5)HR4hJc`u5 ztU)s8wAqc1cN-5ioC*H^+$hK|riRqMhs;>M!;WaC?fkSgi$1rY z0JvH6>)mC8)sFB(Q!R{wr<-eyJ^bt|ySfIdzu%L*K0y4q=j*fCba?gW&o|HE;kfmk z^Frpa1Fhj-Y9X~osi)G_Liawna}MGodDU2!lOKMWm?Lcj1M^Q|YpWaMFl9UKF>o3e z(^SMkDw)XD-&vn8A}i0!?cO7vyMmI)Fj+|(kFt8Z;ro_#qBdJ1w^d7_2HH9ipM zgtJ4@bR6oFAE3|E%gWRUtn7d1ntZk5cIr^^vM+%wmW6H$`Kq~PUwN3@%c1(%_Mz+( zcj}3z;#yBNzR9JNbOgut`FnA8s#3-Z%^G0_g29(UDF2$gPM8S>2!P{%*I(Pn5e#7Q zp--iSj_EUFu$P5Y%(7HuJ9~4^-Z!@Evq|6I-&vFxSeG&q9KvG<{GookcW0}4Vec&+ zMxQjzRA`*edqpo#x_{}POGZQIu+JCA|R@wbk>_V=3CH!9B?X{WphVVm11M_qlYT5qSXN@|NR?khn zS+E5!?W)W9Pv1@f1no1coK5%<^9#pMT}laV;Fo{iYm}wx#buof4t1HXt=2@gSRuOy zP0h2OHS;RxAXnAKLsZV3bdiEN(?MZXO&QP0hY5Re;TgNsh%|c2)vN zhkz^Snx4<>*@0xLImna04bbAu9o03b)?fIcGipib`*4$7uuqmo28goV$AvqM+r1L- zAEm`{n*FJTI4jBtF2Ul5aJyP|^CsOwm$j1ltt{vcw~C@<37^*v4=llolZmQ%T!|OD zAXg*s3Tlf>_S(t8Hd51K5)@UVy71MMaVT*dM+xy0sDzFnt|SjT(bcWB!0aP99_Iw7 zJlpqo#kzxnRI4TAeBly%gp)d3th+J#fWca;ZZPoxn!mS+C(e|gar;Re!IknUIpa~Q z9cdErv-~~dC))a|0lvgB_#{PozP|eYZn}Eg`~9!a3^aDmxpWc_>}zf%k`Bgx#vT&t z`CGfFnH(wD9s2jk@p37zy8hgG$c`KQk{?;?8ImS`b7=nx#H_RSjMKFHNQ+`k|N6Fz zxk|84@?h)QwQ_t!+a8X01|Rjp4kg|`drFB>yFV#iy1CYOb7_pS(5|*|3leg@bDjP) zaSziX7!B*Z06NZ{#!5OL^hr$1{YKHK!9pPhkECh1>+bU57ivXmEf^08 zg^Id1=-6099H$&|LX30tI-c{LTiOtpisNAYujM!M4n2xE{y(1Sz<;i+&G|=APp*cG z%Q?9-$W&!l^Q!^FWljdTp~fPHUjF+77b!ueY@U&FC`iWchSqLEsDXWZS#vbKZxQLct-mADX;1bj*e0QuV8g|3w zDuU$W^_&ABs4bHbt8+)u=4jnzq1bW%(IfbCLi0>j66>*hLcaR!F)j zWh@jCIb3LzM(&txiatuIh@MNt z#X`yX>a|X%oLD`5$QE{%xZ=ob@9%b$jb3XzC*Qb-s=DB))T`C~2I1PY#1^wq4bRo3 zN@T|ITp#o3k>HISQtt|iefmLL<|k3Vg`x6bJEyX}*`IIHHYnmuq!DCQ_95Z%Gp51w zXRL~XwiI>-n%zuqgl_JAk7WEjkQbu##+axe7_^bok#Z{irNz@QHNUO$>Gv)^Q>SMv zpP!yhMkyu-{0eOM8}xX7CHlzCy2wR|{j!{Fc5gFp(aL$KfD}{P`jFr>c?Zqp8i9Zt zL8I@`)??RW2`wZwrKEtWXV7mOg|y=0W$jj#Dj!U1&+&~X5K+i{dOF0tfCSUTZ^yB)I;dlS> zsx$_R=2E~g#1+sZh)G)z+Ge&o_1UGVVdr_dD*h;!jE#_(zoZ5EWSO)c=T%-g*|s7K zBj-gbi4smLa@6=h$nYsW7pMDB?X7}10(TUDS@cE(jL?iO63G6GO&rTa4nN8I=FEmj zBlR1)PrThq?kS{Ao9c>Qs-DgbRFBXOQ9|-tE4g%@97nKg^TaZB5hn4xrex6p@5zV& zh13%-Tp|&+!64Jj4Tc~84qMI`|556o)z2s%FEzrQkm3blsGOGODIxf$QqOmqoDt)6 zoJ*!m)#V?uUB&B=Rl-UHrX*?qqcjKGv-0oUdgYMYuncrif1!z9J+ICA9OrBWFFBLB z-xt9x;;k*yRyLNcdgmJ%lIEl>Bfew^VSoR4m7)Io9mIVSn7Y~*(YZ`UeF9`RCXVq_ zr^nyHEiEm^D%IHKe0qfc)R!w)(R%w44H6~uvE#|NANJ^C^aBkpVVF%ZQq0WNye`#k ziG19%ik#tWWsm*eIJSJD!JTkavbKDbnUErNF)Ea;GWFrIyQrf#z1?upfK*P0%@Qyw zouVR=jmFhCxCDjV&oAL$5P1GPEqvwo*ouB+tTgd@(DVuQ=K;uSS{KKT`(b6cmbl|9 zd&tHSUR5cVu4+lkLcGDhd$5uy{!0Xoo%W>SlhyVzoMY8u{Z2QJJng7i$HT|Fyvi|K zNj3YS4#~R*?|U0pr$2jHmp*YXtvj*2yvlJ{w=RMAvzB#9W=R6KO zAmc6GSLFB;~tL7551B%t$XpiCP5oRgTNR`GjUj8<G%+8WwqUk?hy! zq)KM4-}1yKw@eE|vGaoVDX++at!@itlE!ZvBbrn^1~Oq@wih*0W&RrP{ynSo9#$-$XUx{kd{ z(=H9My?jGS@T*wcBM%+=@Fg}2`Un=)pQH5Ti8UwFU;z{r-J@)v8rD=`m*? z1%2GX^%=g^aA*ecP#AS{fne8|T1EqjSw z;&Rk*!cDm<_S4z%(x(9{YPHK=Muu~aBcy1n_54-Qv9p}`3M4bfIClEvEhVnM3%>?e z)tFgFnt9qt$g6Wp-J-Rt0+oLs*?OiPSiiY;x%CiZlM+1+hpXD@y_Por$hK=&+)QNn z`N4s?!IOy&vzE^E&%IiECj$`GCvZtEaZD5v7e=TfM5s$pDsp_J9moH}Y zMc2k?NaAf-5kwl@)`pQ2#8Khphosv-_iiHZMeAkR?6E!|~UR+XM5YbtYIfAh!mFiI=Ljy?k5 z{6|Lao*&w-R1`(AdD6u(>jFadkibaC+UY9Hg)2&Rloq&1JyyEhWF}JK?Z+?4;hKqQ z66|E5Zi`MhO9s+IeTW0$^L`Q90=VPqis6gbOL&kR3qI!V8;}Ry?x(bD7=(+^uFK=_ zXQmZVp`75%b3e3`{El_76Qk-_8a2!is+}iVI$EpTA1^7QQeYBQ!z7KJX-2l&;xP%u zd!xs6YH+0n*omkRaQT?YMWnC^(^A+q(>k^RX+AHdu3w@5*d>aeNryv^93vDN+?2y> zE!8QejEu<=C<$6lbRZtbOoS^7a(bdaeFT8&W;Pz7E|g79&tM$s!8LWTD++ao5vy3( zr+L3J6x|JAb!p@@&gNpFVjcrSfJKeV(%k#vNysUwP?(Obs>@ks?}rIUdy+ zWfg>iqJ^g548|Q#M$$wV*qo8WcHzaC4mPzEAF0f^Syx6yts4c{NrX7mh|(c4ra3jhi4lYE+Qyf?ChoDM#p0vfUDxe* z{6=>JwgRRP9DI(q6OB4)t-I3N3JEvOzrO%xq4L@p-e&|Crc4_dodD-Wm1w<7{vxyQ z*6#Re)|N7UjDDb~RwwfXUm`2iaB}1x$@ds<1pyDcQulT=LfIEFzgaz)tBhANwPS+l z!WDv#=AU9qt~> z+@F7?00tJMB4PA?%a#S=fUb!MozQqtLHzZs3nd~O()P;*8a9f0%WuGZiWT8?wX8P>RP%;uJGHhzv=ZOi8W#fOi%aY2v z6O$&QX6^noXS~5^r}Z)-R&yu;KDk>{pR@e*cy(KCF+6y7o13N zJXE*h;+r?N8V9ZiTN*89s*mp;$Uktis3mQ+T~pqTm-ifc9=fl{{V~d0H}2T2Q4{%& z0u~8p-wi};3S0`l%>3b?#>_|7iS;YKkFjxXRd(F1C)ubIWf#XAwsy zMnVtXv+}7_03=a0-IKSmF(s)u3JB&p?18C*Pqz$)rs^qIcn$n!$w480FyNX^6 z3l$l_4Nn7b&>0|j<}Pv9T*jfwGiTTS*?HEjtU%|_Pk#J-W7`W``N(ip6t8DEge+Hx z?e9a;Z*j|meP04Q&@0)7Hq}u(%XJ9*FW*|3e78E?lkEGt7CRQfPt{50j%$ZLQT57& zmvlF~Dl$aX?WfEj3FkDER^qkt4zSkswVCg@{kcM>Hfflay#+Yp03z-ODC1(cPMWyc z8~{#~y~n+!4pn!)6_z=*B_-Yum4Y+v@$>a#)_ad+t~ye;x9@<$(EwJ09yIFjj2y!FT>t&ySZ@Z6HVZ(vrPq z#;k9v$$lt=fp@NUJQRD!SL0W8z{2ZD1(&TPE_fbw>2w}^bjn5I=Nq@#k^3373tOG( zZ}^qStG};R&V>$Mdi#{$;nkzySDx1gUj+pO25zsdM^1g#DE$;T=uv6kU#{x@9jb9r zPP(Lp?s{xly>>WVB`ASbs)4mwuU!Wg|Ka=uih6%NlqLnq!UL-Ua(~ca9Qt9T=-A87vzu9DPM7G&m&>>4M!2CJMtMxax ztbktY|L}@7X#b_BW_g+)J^IUCUW?B;1pmGK7zJzjrZswytE8(v^aZ8S*Nwl089k12 z?j%Yn5ehuyDsGCTsCNY_nK5gIZ?`7$xxCi7M~-^Q83MkU>q^Wfp(7syt1e(rLFYHi zKJ9n`tW++0t>OhagSro7cqHQz8b^r=o=7!N7b%33(X#dKk-URkQ#PZ3zcyJ-KknFa zwvYIb7vNw>SD^^KxnozmBT~XQ$kv7B{>zSA*#Np-4UJSdY@s|DDS7krlQYP==K$7; zbm?giez@<3tls8m{Ye!Wi*IfTbTbb|eTnF(1$i4op+cjeLdR7Sc8vZw&1yf)l!!+5 zrj&fW*jA$#bDMB}CWAct-U?q?+<{qVBG|3B}SrawbrigD4uGB7qbfO%%k#}l7 zQ$!n^GDrO#V1o!>KH1J4Hb@po?=!1CX)f}`w%WVs0)1E*4e}=6VB=r)h%(wk3{kxC z&p2p&XTG((8;uxmAT=H!fAsI|=)aDoS$cF#YA(Mxuky^%V{h+R6~68Fs&1)+1xxFB zjgievGy$d_Um6}w_ML>)aiUY79(`teVe>WjPw!$VT>}fR`$t3i^))Mu7x^?j0l#^x zD-###&#uV7(-N|(y699NyyJ_k7Zt~_Y{DMGfB{{2r`VZqVpoGAMw4KBdTO2!eZtIN zcYoTaZcg|jUafuut_xH-!A<*d`Y^kmx2!U6M^W$IRJ_z4hbyqsvdFmnGyV%KIb;v@ zvNY7qrl3&ge7i=n3M6liKFRg}6mgF7q(IW>5S8QnBF=lTIT(G>;#iBIn5CqHVRf9X z*T)|tS}7iQXvf~W3kiurhH-*cn$I?u{#YO z(V_-PhW)2I4=?-lmR#p>Xn!x|YV4l>TK-_eg?EYnoNs1ly0pnlJ!5y5j)(enqQp<< zIo^Rw#B+ONQGW7~gn724OSaRI=|rV+I1y=W+zvrE>kjq~hq6#OL=n_j)s# zIZbz}eLfci?{o>u*N$e%pOkaya5Sy*JlJ!nrtKto^XuK2x%K(UW9?|WB>!dbx@J-N zDqiJV?R&y4p}h?gc0e$mN!HpY)vFp<6xwaWPFD9ARzC6G-+&6G&7RV?c*yX7%30s< z;g2=2nbfbVE_lZ?n`SA3xelb39nRuuUjQoqyE_jQ^J%K~R^mb~ar$vW$e)+RU2vUo z-jOG2bJ3^($A(d3;>vug8Mxt5daunBDl_hmkKh=~q^Pd5(L}6JyIOU%M0mbv2%Rj2@5t7-R4>&YpwLOV|cf zwV(USoXp@36%E#Cn}!$QT>?DxDJ^iv*{X$Rr|Cu?F&b`o&&jEmT?#i!z;H5CbT(z7 zW>E#uAES!F*rgeO+eJ1B@=(MS-q=>D3|4um!u75gPSch)|L1#gvgtZqLu)Q8begRPc2BIAq*-%S(+L>f+L5zRPGhn>MFO8}r{Z3taA(XaEXoLkN zLUeUMURh_sk;|f%(@Npz6<#C5bH8e=z4tN!Td6lRSM{DS{0=A>CmyR2u~Z6Q>8-B? z`kITPM*5ouf%&BlA0J$f3bmVlxg@_PG^KpL)V8X7x6CP4ZMm8K)>prgEpr+s{8iQRwm~2-2UGoS_kpxFiCXs(BF|?&RYdCNRZ#vU`&**kA z#)j|whDC1D^F}S9MtMNox4^ffFQ6@>lRYKNC;0 zPeqUy{}~%S5w5_}DDJ4;tt#ipM3cjl!u+RDCc9`6J{zNT{@B77nDV-a@%W{5rzCA+ zHot{HS_#y%`1QTDM!<;L{+x6D{6uV8@#1Pw)M*)Qoa2e(2ho#M_?(BZ$v!4%zQlCk zJ=Ha{Xl6xW?p-7GigdNkubaxo9Qhv~KFi9c6A0CLry!sFOq7!wSO>eyjh(=N=-M_#|ng zIBhRQ9JX)6kh0dM#T7*4#CbArW3(F++n}=8h(AYOQ&4*orGhSjxXTzN;g%@0i>Orp zCu1Gs$t}9$G%<47f#M~zKVC^tEXCGt%;|bL40=0^Uh-U+m!&(LfF-0%K(#S=_SO<1~+;A(h9D@$kcZdUU(<4SVsC^#J%%MCkuAPF$V1MEn75B#8-$ z?8CWB*3Y*7OC3lejt-zbesPmjx;B(jxzji0)tQ`efZf0=Qd=F16*M+)_f7T0uU~u<Gxg1)?W{vSe>NC}Yxj@+n$WK+WjM3mRx4;ICqaHz+(h^l9me(H+6! zY*>pX-dp>-Ta=Xu8b%2@`r|`U35L6fADF_2;1#Fs#8Ix0Pog;~6}+A2y`2ySaec(B z_#@O4VQM4tK<6HjXxB?5=>=S}`-9+tkJl#qDdNP~AA_Nrx*`sBK@|FSA7okRL5R=p zCJre_OZNfCm~j zfGgqHv-w|8Tz4^>qtXKvcSM`cclJt%C%EEqi1#8dFqw@!aZAZgPoO`&kQD??zDrpP zY|OkF!^VHgu>*uet*7$hPf5gknHI?iIS#^YoJke@b@xG2i#vRC#3tw)b+EjEKb&@i zDXQPATi&r@47W28_*dOAI>9 z-Nxv8E__qLOs_xC5b`YxCnY{n{!(DB)EIC0h>4JoE7;3L7!Copx3dWO3* zCM7C{`!qUpQn(z#nIiV)z_o~;7j8E(M0ZyRT2E!DkWXH_*Cd0v$HaiE!8C+B2^I*n z+77rni)apLRiALlX?))t#bNo~9LqupKdK;NOMgurD?A>Eoc>_h2-2FPD3&N23}vgOl_Fl2;xM{wQK)6ynPYnWS*@{QzCL) z)TNKWPJDL0>-)z*KVDA4yfIcMfgDf;!@S70Q|j?aE-6|qs=xZGvaf<~YBKh^;4e}O zT0jg>Yg>8x)`q9kBYD-Sf%lnS3Y0+x)&!|*r>7Pz=omWn#(%$u>7}}@S>(|1ON?^l zdkfK6{=%e9W5Mo0#lqy?5dT1`}qBbyBA12zU;;guoFVu68q|@%%d#SC6JbI zW%3lv@pCeKWkwqQ#a_7ETasfcG(IsdJ|KxSWIlhT)M`JOaN8I$rVuX8$oU76wg^or zx<_b#V(PTqH6|2xR}DKFc0p5+)*Nuj!Z%X+w7A%nZ}?hlpw&kGmvGBcQ!E(NCZ)p( zo>3tSNNWp8$NSm$v1fHQA?>{Es2?l2iw%RrSN5?@XGYfWc88OME}ls19rZmQ)buj8 zg99~*c)1zK;*2u*jrTdU)3Lt%y}C`25NUICSww`EUTayZh;RL61KnHF~Nvit%i0#5X&v^Q4*f`iK{^Z zPBMy01)KOR(UOSZo%Qt9*^=vbxC#6hq{b3%990xr9wOLg^Q6oltqe-tHyhMZnC*<- zIf~I?@`{Cyy*rhxxZ;;2<-vy&-+Evw6svbT{%L|`N;uu*6!t8JSPK{xPke0JDfHck zoSe3|nI`WNT>!h^u1vIs^iZO;>uCR{T52R{4XR|aYI-MNN@WyJDezIyI}nKPaf z4xRXbKg<>PFy-Ri6UFxi__{ZlqOM9lmo&cpbaf<-W8lRhkl0eoL`wK(a>wCp?M#}a zKMaa#%|jE7hw1b6L9EghMtg`npV+Yjl!md?jUk%HuWy4a8=ZuWWGZ7&O^ftUvL^h( z$T;#w$uT)1?y4b93UT~R-x0jcJo=?sjW`xlK&dZeQp?vkoMcJF zOFSxVlWmBFM(3Qa0?PBFz5?+=VQntw0d0wg*^|@AGu%AIc~kdWwf^xoA z=`Q6cHzXnw`7oNPwZE=!PMR%@*+MD#VGmJMyq;Ix|7{P7f%jc|Bo<(6Hp# z2=nPq?AZ4Cn#3+b|3arjv&f4vV0tmbHfx!{BVp(@N-V`@#m< z!aboCN-h0al);KarC?c-mW07=tBNr|KurQ$aj8!6_~g2uFhcW$aygz)(%K4ss@?U% z{^JLxXZTn7GW&Y)NIdCldY{d?A1&WfLeF51HIwpd_1{lMXM}W+8vb&|3xxF|dI`VK z@gf2eKdJE%^jZ~x6g4NA@gw6bYMk}sKM8m(`_cUv1Pe~ED4Z%t)vxX`i#mu3MRz_o zna+xQw#ia88ih)>WB1b<$nvx23sGb+?;>yC;PFa7NKd)tE-}*kZNXSKyyoMi zTFNy$YI{LM&@qBOjd*b!bhS?XuXd@`<4WBoM7jDFTX)>!3_dzJ+cqu1@l=3s`k4M1j{Qspr*VDNVZJRIjSfc@}TT{+=l$s z;64F)x!l$Ps8yUz06Yaioc9*XNjVs;e{^RmHp^YBXn!PkePDg&yF{mA75qx2=P*it zf#&q5=U}B7<+ih3t^d~&nEgPE{0&Ymd8#{S&^~jjo|vc`Odk+vF83P*J95$%*GQw zp4F3FSt9yJs4!rS%O|d^FHYY6RMIFo-pLnQF&L1p**?{#JqO|%p3w7-+I(PZ=_v}G z=*e^F_W5vc#vNMEc`(=)UO%h^AkJIWU-!~-)C0;{PokfbtpHP9i)7ctFK-Fe-3L65 z;mDel;|bj9FN1oz)N#1aH81#z<5Bkg9v|Zy6b&wLY4pQHe7Ph)L*}YT?}gzF&V&6O zuPqqe%xB(#1geTkMF6i*Io_K14qn_!t+@JxB^VAXvs65cqdr>F<-or(2?75iE(>(j z)fdKtgG=aD!S?V_aqr{C@ao2MNuv}1GzNiB*jcS)G6uGWwA%|e110@9k$Me7aZ>$C%tK?Bsb#tgBz3F3r0MB76$g4r#_Jg`#&9hRZe3 zV`Hd^PLb6o0M5oW^SN9KAnj$I^D9{srl>6VxLfHaHlmMO9Xaz)k83@;5`D6@azYkE zwBDral=R-kJt;hW53Ya8^(k(Hl1<`Pq7;(f3ss1n2?iRb=sL}0IjcX}e zh;cpx_RtcLYI8m-p)>Wd(l9ajC^5Lv;)H?W_Oal2H0Rw>1yKLlD8th=legwZx$Kyj zVLX93rYzO=IWs}D&gU!n{c*-%Z(8Gh&{JH2ZHgfxY~1qpLusyvS5njGZhv{IkQe`o z&pfX-dDBqfUBK!soK?%?%|n>;Sf}bS{7Wb2bv)#7Lt9le(qm^`tInVw@xxC0M zbWw_5`3l-s{6^HjUiEw8T9;{fP6#!rfl!{P9q%=BTWmSM-pan$cF91^(ve2YPb%+I zX5@=D2S+yYJ*c0x(|*SON{Wk7J_!~?4PBv4$l#8Do5-vxzE;1pa85aR``(3q+s=>& z88?fZ&nzeRO^>c-`n%9+m48de@A@m`$G=5{bGc+tsb?{H{vg4kRH@X@g<2w=OHO~F zmB%#b&1hpnImJy4iG-0C6!o3xi*fV$D4e_YS|(LSZ_>X-*Lhn>C+SO!cgeEUs>w@7 zZ{g6tT2YUfW?>|r2oTVbib#d(=}(dIpey5cxjd7+pZj}!2idryjW@b#+Dc27Thr+5 zv!r|@&?5Uc1GB=7ETg)}hbpBmK4nFC{Z`F(7(nal54eG9N;HT)fN!3s@nOBr@2E|A zums-%`HirIzuw!Ks8I5z{l^D{C5WN1=E$4vEse)NDLX#KzeiB)Ue)0cd#8)kUhBSh3-wSBDHI>C&1hB&<6iBh4gt5fW#Cxx031W zui2ygU!0U7(>WdrAl96Bw39H{hLHqw`wv%ON>(}61#B>u3mJ;qMkidtsw*vzIs6*Y zJKbf|^jEA}M(aNej`{k%pI81jcjIsBMi6G<1a}tdx{om^a}F_`sFld2EsM>%@!G05 z>7{K|Nx)>fwYqA_uUX<~li6u($j8I->d8mhA~?m1u|nE?k(o{0oR)YQ?ZaV4c|bIF zM5#784;iI5#QN94jEy_mpcZBm_66@BX2NftkN*v39BZVvFzS3Qr=htyDQ--g$KEiO zi5Yi{PFsAEstuzkV5AzHH9a*v9||BCg&r9=|JJT;ayG_L{E`GCdPDZM35JZ}f(2n9 zGX7L3=XAQ;8?>+wal~G1EmBrQ$=UX|JpM3m@?)}&cJxK0s{BwrUE|+q9G#9>QcPL2 zZ>0ZeVQzNp5EAadoLML5po6^)%Dqq32AMHf&SL&<4M+b_!a;VHm`C_B2M%AAc_c%3 zdzfm%6zsb|e@JHF253F~kE%RAwkAP!>X4E2Z)GHP8p8Twb~%boRxWlQg050!Kf>2+ zNRQ>%?JsgOK8v-hNxOnKIqF5_bni{Did;!@5h5K3JBnA1bsGgHy}6Cf1o9~XjaQNr zZpUnPF5g&Aj62{Ebd)IBz|W!g6B@z#^9Ywan}sjAGYH^;r!h(O>~Ft>Uk&#;rirtK zK$H+{6}A`@xvOrpu7I)r35*pcp1K11q53Q)4%)YqzDrjhcVgSaFtcL+y;VClq`V-k znRoX7Kf8%4`kKZy&MdLe5p+gyO&7l2xDg>pZl2iuI{8l=2S2Fn-VGJI;ArV?mN;G7 zEv8;tN4QzxPvJJG7Oni8TQ33MJGKdYxLC=XtMA0GEY{qcc?dUPpa*c`^Kkpk!A&{2 z1rXc-ysW{w{&$1IdNFi%2mEew4^!o~)0qxu8Cp=%o7yJ|e@{rAsh+X4);?Q>J!J0`|A zRzLYznE)E?ITK%jfz`~=@Am>o0ZZz2mZANl}4`@wR)Z6xt%h-Hb z|NT|8%MG}}yAA=95XLnU8kjrI6CK*!=mT9=1vS*l1AaOO59nQZ4?a6Pi}eN{G-{{8 z^Y?zdExC%SmWSxIhdwDXSCzJm1g}AhK+Hp$9y@iZef`f5>BjnLxPVl^xaA8tBvQb~ z`!STMcEzdey0vd6>mZR*xp;#QVq0zw78-E^eR@4`q8%BqUz`_G4hr$q$__Uw`%$_D zV4!+HAH1<5uf_g%ZD~E#m4dewG+*0RnQxm7*9J@mf#}zMy9a*TJbY#x!C4Fd&kt&Q zq9nmlBFK?ZZ2FjED#$!bEVFRir#}00OXk(#)mQp-Yt2GYPPsP=8=jAnx?j86Pp^$jE0a5P>U3SKe zomcdN6Ow>O(CA5c0P@2a6g+D=C@s%>tuBg;5={dxgmSm(pl;dC+%P^g?rl+GrzS-xq-O-h#_?j6?Bu)u zz7Sq8Krh#VreNy#*JqR~jXhLDrbNlHKX9Rr-j0zzo^(m>yyQNk!4qoEQ?*p*HY~8q zptQEAHATnwCG)jF(}uVcFnEJ;TFrW@C;jvV@WdzJ(67+zFmAA+&_c^!)Sg>5?ZOvI zxxsB==WBSy9{5(Ukd4ok9$%JomM=I7#(_qG8AmFLaTqA!HQCaSb=e3I4!cOW=2q$EBYlVxQ4DZqOLfVZ!tkC3#1iMQXj)z`MlbB+Rm6uR?GZ{P;zK=T%>Isy$|)!=!oZpOM8lr_$n!%N_iZ68pTo|E1r*_ z<(PIneBwUQ5(P|n+Lso0G zq>m+EN>bL6nm$pNeRf=m^CR)vEhTD}o5-4D(4-m|43qJ!{#qh>er!@Mned3)%!>~4 zSxDKFF~rOwmQzjSc6)ByKE}#)9-TYmQ85qiqTJ}OquOAEGD*TDHR&Ffm|8lsu>Ry+ z+k`%o5t0^%y54>4N0dE*L(CM!Q5Zuyrf;{cP+%4OVB~3#U9>ALBFg1WQi;Py4<+y< z2*uQkV)S{YWZTz&1ei%8}j_sBB?c7j%ehyd5Z=BqW?;G7nnwLp3+BVOYVXU7B`9WkLq%9SyPre+Z_iOpx^ z(~hUe%N4=&q3X3JFAlb*^QNdxSg(kw3-VYshvEZJiR5}W3=6f2$kl^2OWbR?wtO_v z=d&NyteIq5avy9WMoA4erIL!_-gS7It5JlvdF$h?w@TWmk&7aiycN0Runtqr>{`Ub zETG&O%0o}Y@5mVc)(#T#d~1`qQ!x?BoX!a`14I8C5>L@wIwp4VE4`rwu~412DbX=1 z47ilU)z3nnr*Ma!@O|@iZLe1M-xi!q)ltk&hDU1zDq4b|cTpXX|H1Rqjav>u;bzwd~psUFeD!B&x zKLpECIpaL~-s*@qtFdQuOK>&ocMi_WAzJ+K{RlVVD=f#bW4g{^@9geT9?%~){a57m zdH043j&caw9HEr5C+K)RzNQD{KBk?5xG__@z@v1@C^eDL=729bPOS%ELdR^Y4YSn^ zkD^*Dg<={K#e)QI)rSoURVtzs`3g>FKg9Z)81{7^m%h?o4bh^RXh)%J(b$g1%Ed-3 zn;~_aW#@Lfcsl)!N8(QzP~MwPeLW8_@O;4Vj>d$m%!dZyc4pembJP5de@x^*o}5M? z-Yf-}%84e775g-@aFOh%{l8fwioN-h`GiXFc-lLwb@#Hw{93QFTU-}HNmm}$5uq!3 z@sxFR-%Kv{BEs5>Y&_vlXn`}`;*wYvyLkz;aA}tsC$ZEFr$7I`EFT{)I%axW3q0{~;3Yfk!$y zQ`t2My{_cj>MNYg@gQYdSbGuDH<*6D96&M!`~ztx@zj_m{P^MtGL)$OQTTH8cK;g% z9-e?&kjAqC0-}~J<>3djvbLao3Iun3j}JB3)B^z1z2DE0CpLi19|UH75acl5Zw~(l znK{j-M~#ALGd&N+-U?8Cy{{Vbj{i9GJZlabwA+x3YZeHStH8g1ekd%CRfFJn$DI%2 z&0LgSIw#)sSkc9UzQ-^N0ubWsRmDz%!|ekKQX35b9hw~gHPK~C2n3kAgDrdxA`|DR z8Xf4|yV*(Ch1w(GfAD6!6 z2i&7#q|H|VTKVc?J^Tg*+f#~P+kYJJ1zQ||a<<(*F)X}uu-pFbNZ_JIUPUj6;QFcE zG(d7Tq0MU4Cxai2y-`v6tI8`6l?*MDp^RCsdiC02in${e=wsV*XCpOV$d|1$N~d;m zxf+4S*|qbPgL7c7ZMKt^s*Cim@)%U1x^o7pWPYpIfIlRF&4Ik;4gh5wQ+=!3Ah804 zOq=m*C`CE7xw|i*|MP8%V)li%T~=pa+d(&E92fvnpL;TprE>oNmObMJU8^-*>8K>?+-_ zB54#-{Z=N70`}p%Sy}ylLF@Rk4YZ8Z3<}4dY&FpW9kI6(!VC~q0WGN<-C?pGxNwOb zt2GNBOvE#LUti_C)zp-+v}Jl;+9;VCj|k1=HA>P$1%&_-U^P3P(xrW%%?uE)M7sZY zVWB79uIf4DADN;GSudiFrWnU(PzB-*dA?qQvB8-`E1!~Dj|Nqe2e44tHQ;OP{jZTP zYZKtqiR4@qcE9_zAR2!hG2Awlt#n1y^7qd-S*DUTJtx;8>ieC=5#7g8fO(Z?Gh#S^ z@Znw-(p8DlVA>Qn&*mwfm8gvNFlK^nWal2U=mF6fH9iy7j>nV(zIp(9y}VF)&b0~6 zF`b}jo0cr_N0OhLKK`cM!RJtx!^uhNfqTl!eX8qmGgB$Lm#TXDoGzU)T@Bi@<~rDb za#OQ;OmlX=YNQg-+xOvYgEc_TQJXSk;J0qI1FGrQ_k^vY$7axBTt>ZwO)`iYcA`_1 z&mxc@C;7oCPnFKuetd90K+Ew3=!sAE`9kn~>3VM9Lh7P{O!}qhP`oa3-=!-EV4Kq3?FRE$9X^It&Z_FvG-HIr!^sisb69Ou@dQVGGL`80XO7?F@GL~>JL zkc5P29-pEkhPXIZXAE!NSzT{553E}?x4#x(`mVK%U`wFdOfG)DNS6t)ZKorm6;p+< z1$lw^|2LEe+6Inx73o=>K-T?6N#=1237ntMKHy}HqJ<(0# z*d;p7D{QfTf1BSQX5>UEWupBy{~ulN8P(L5Ge^NAiWa{2&e=>YG@IWqJoOj zn-mEsMS7D&5ClR;nqb)~iXsF>nxU#7sGHtG5RqP_mou09d}EyNea9K&`Sa|p;!f7O z?`vLd_HsUf_pjVIQ%PgXxM63w$o#3fG{MW4(N21Mc(v5-<8A`CgM?s#XyxJh8t`ew z334*dKC#wg6vka@>!E|OOo_b_8)?Of;^P(RVBgg;2Fy36iLow@w`Q(dD{DzMSKgZP z)%jD}SzH%r{Wao^xf&stneE%v7vr&WPzXWYyQIk64{zaHWDJe3Nhf3*ISM`V*1y}j zMyyFvz!va$@gl{4MzS~uHU`xFL_w9dH|G>jw^O2!nQwhh`FPsO>>n0wH+*7v> zeVzoMxC?P^uV20y0A{_r-N_Dq0Bd>>W6BWE<=0vg!D@P|qyQBSoZohH15bhk&0lQE z<@MJ}?HdE{E<|V8gswSdEXEEWn19SPZW^6ZM-%xSQsVX)oBw*(9ltuA1JReUVvRD7 z*I)o0+oHIy^IB{7aM|nL42h?p2Ql|UWX4A??_xN_RaAZ8qeP_c=lIpTqdEIn+^{A- zn>^d%^o}6I>ZmFd>o?#Mf^d^`2I_ZY0IgbR^Ce!O_Chj{NXhK_HYA{I6FjfC0VwX7 zLl&9`z9+o{GGfjTpyZ`2((Zt{l5>&^!A6grvzfE9>yg~ZNLHGjUOb6jemn1i8M(Xg zKdliwD$x4DD+U5IgN#we{fAR#!BlG?$>Ad1c(Exu&f?{0QSUwQ?$$y-_?U6npZy{A z948|So?DwYl5D+`?R-AJ7qVaV9mVZpA9)wkHw@@+YO(#oCWmxU%hQaT7ie7ef(hdG z{r_BecK6q()Dm5fvm_^G^$4l!asODm;l#8Y_S%{6lU1Vbqg)j4XJEd{X5=8TPxpvc z=9O{pSY4i`dkatE&k|oVI!)E7wx)Vs?<{KJlz7{$MGa38W|XI{noJD~ZOJ{0lSDV2 zc;|=u<}))mo|s%~j2q3TYuVyd`?@Kl5$l$dqyPSVrc}eSXWtw}j&_kRb@(9&%7}A+ zr857XFPJ<~sIg=wRp?W7fh(_uZK6v1eC#eB#kiM!G8;pXeV?!-vaQNn3x0?pQkY+V zkiY0FY;5CTPiVd`zF-~D^u9Z-6%b?5$GT)+dcQfLhw3!`rd=b>Ovvf={*f1&69{lQ z`*8Gu|6tN$08~sH>RrU15kK_kp4gEkJ;6;XKUl zm!?pC!HT9nmePdUd2)vSV4>XLkNrH%lHTJYTCaYN{+~vtulg+EP^l`FwF|VHL#BQS z0V~k;-?;H6mE7PJVj<%Cp5;MK0LH2m|}Fi zu^Is06`SGZsMn!FVM0kC7KNjih_l4FK`&vplc-WDDeSO#yj@js^zrEi?ZG?uTeJo1 z3329qZF)Qg4RdX}B?HXQl>RT*RKyQID5$)zN-}X1Q%!eD-Xk+$CQq zYRWQi45gI{%F$V0MTmsUy%z|IF?z!BNl=53+@Jx5=)vHSc^I5-Cs zxb*OymD*)+}vKFuIWLkq!C#-q6J#EfP=6u+r+DoNWK*yp)eChoQyNXKYAOBgi_ z-%ks^BgR}{1LQUC*SMA|ZpzO7qc)}nFk@@9M*X4I$4VWu)hZH^+QjH%+Xb;A$-c(@ zXXISCh5F=@nz5VBl8MCHK6V*cRa++)CfMaS))t}mlfq#6#I$bIkB_%|he8fZbjuvd z2!FD#^r=GAsT{huB=r&(lmiCoW!&{;l}{y4>Tf3e`m8Fuku^82Qpmzj@$`}R=GQSM zy%Ca6_2N+(RJe;i`(F5h! zcYK{A-S>(l!mfFZ(r;IlJJXu)1?0Z2A;*osrMlDhcOAXFY|4(SY6`}M z#?KxJW$0DuGAIk{^?|9W*!V=HVyb|BiY~@TbGh^4W~#ef1XJaSwjc2kSlVy<>w0Fi zzoU?AN_<#6m`8~7K-*?RiBJX{Gorw9P3uY&&of;v$&{@Pg9o!Q)>2-4KCpJ`T-ki|bHw*3}O? zp5_N-r9%-{-_Nmho0HHQp^VtG;L|(-2Iibfz-YWvYH|B8_F&X?f!I#E?NEV~2&B`G zol~EWzEo--^YrTb@){M{VG2;|JpfbIkQ7WQKy_sN$cBd|3*dV5q8y}>YNb9eq6_-!nG<_prG9V z^16a0!f^%+4vS0Q&Yh7@g0T+k`4J`+WB4)BUbkSZY@Cggb73En0e$TToDB-fx0hTk zU@&N36k35)nql6^A7rz~U#7qiKJ`4oMnc60x~rgy7g=!!+yLbAHIOSlxvy>&r(a7B zp!(H=Lhu=85qbvnI^c3ggYVD&fcziQGgSm|npt@%6{&O+nL0ea0Z?2yQGJ1^?y3Ni zMw+!siKjyKni}EQA#f>3i~_KWb@ql!}-rZ9Qr;y!7t)YnOKU`R3Ej9FcBQmOAN{HX%Q%mV4ckhjsv8J%UHn8BEbW zLoxFY0RYJW!c68!N=FiYK5wGiSb=LSU4i#N1qSweH7a`ZymVM@SCO{CN*^CwIR}Cv z?e2g4!3~x|;50SA?&pD%@*t&Z#8tae+J=m;g2{c8T6%Z?G~^Z0E3!hj<=n=40w_hvY&~o%hBFO80^tgi>Xv5l{9z_1A6Z**z}yj zhmHh9#c{Ub+up{b6R3u*k7e!zUBwM)laLIisCYDSGu)OuD3>o&5~M6jv}{V?vkD%^DHhFp;GQ|ncjN<1O;ISqLk2x(Ins!5fk}-DgQN z-&$!bqUR-$5O?EHZBo<^LdlIJUE1X{JwA9d*9T>1*+C=zXY&PbW%-N^f1gkbDx}(-e1BPrd@ymGgw*pPSJ2-Gf+x zhO(ik8LjibZc~Z=9GPXaLtib$e1`Q^ibXi~$=QOWBcDRzl8MOhcqDXe?1r_Q(1Tw_ z0Xc>#q}wtBa+=N2p1RlX@L0O$0Q)ZNUDAjlgQ^y%n0ga3&fm<;zKXG1ruP(_K ze^UI8uhV1(n*oJdGzFkgX5Nr#LB9tGG&*QG;28d|00cH*rCw!{){16R6*R zrg|)BRA31t#?UB}fG`=ImtcK0tSaaiZHggIRb7Wq!Dc95qdp&kFX>qUF{M z1^uUw9je+mQi!7sfTc{{Q=@R2wfAOSBug<)vEFh)f|`!{@UP7jxZ&{E&Hp(T>}6;Z z1kqx3or}Fn_9oG)Y$8NoaHic~7-NfY@DYj?SrDdHkq`LDib7hk-t+fzJ!X*F^#F?j+>qMd7V$!F7P zIh{jH2|f70`$vOX0*h1P!@GIJH4<;ULK*Kmi^HIDySk)P@PNGn?I+N2(mJv}4A;^@ z@I$fsaJFWM5F;<^k@hz3%sF7U;xe$%#Ju((w29wH{*~J|nf6Jm=I|%EIdbrf_550a@NTnYmDa~jBp2KFO7%wfizH6T{!4n2%qwSHnM zjcy}rO08;MI zj(^i{WM2dJ7I3I*!h{9nbT7GRoU^`>q0i#wFQkdnF&-34o|82eIpO+Mi;7S3jLWt? zJsmSyxGLhVA;{1Z&CZM49O=*H={we<$MqTrLpM?4Pb+Ng5Muok5Y3r% z6ss+@+dzeMJeEMK2Z<`!GtCGaZ}W09lIF&L{Bif$6;|8-76b6uWr8rr`k zE|2tgUL%eIQs8;qZc7KEP$K+ReGM>xG6ExcQTz?6J`x*5+Yv^GV}ygQVMknTtNcx> zP=B1P+gvw@+aO;b-KrmBitk~|3lwQGz1HN%W5831R%XPMAI5uFLBD93)B4^@j<}2c z5~mJ4HGXjF!n#o4@wMmgo2Gnrm(&P2R35M-6UBbM4&R&ZBz-(XGpw5aBmTwh8|Tf) z(f|A4Ib=*LJtbVqQesj)3~e^3yZDUFI_c-Y?dFbGuH9SQ-IsJ;Hjarwr6Asrqv`0Z zIoWtsIkSB&6DmUsJ-E3}#J@L=l&hN#Pm(@!fbeH;OvqK}NTggF@z&iKBOsiJm@DvU zuYHDw2%rDllKoZ3es?+u2xIk^+Vt8)ZUgq~xwROw}o#P;VS(q%oaE1jpKQ-de|)coTbwwhUT z{Sg?E;!`_Dm{Zy0QPhC2w3^W<6%_jyt9`>c99R2CtHe5)WhEL?cdN9|IdPIA1||N{ zLcdwtW4}Mn(tGWu$!TI!bFr$7kOFP+iP^)V`0K{`S4Zyuj_w^fW3nNLyLSX#kVk90 z8^AImL@Tvr8Ye8rP>3Jp9PVj;deg+$e_ql@@>c0?ZFJYA_>W~58m(~;mM&;faeWPy zpBoM}?&@_oKc0T_Q_#dHeTlp?7L;@BeyAx-=4yx>EOPET4KICDtmdJo+PM9?2@GzI z1&kbaNOWeDF|M!q8KJUBG(e%GDADxtzy%HBuWO{jfT&~HCm%_9W<=SKh>gk=20lmu zQd#`J3V1Ii82jLV_~!fIELnsdjhWDZorN?>0ZdmJ%*%u(-1ePIw)HMyU^MyJBAa&{ ze!)r543vP`ISCEa$G}8!5(%4Dg3w_MV-Ia>08jM}9)WvS8A9bskj{TRegnE16d~4o z44eTcAVzFLo<^$lHW8j3J+?uP9zjkC4J1pFRn!Q?+GjvuH=y0z>n^a>1hCLJJA=>c zC;Sah0Ki0UJw>=VPr{_A1edxByrhdkLcSpnx@T75cYcXrVwDvuw+t=NTO>jfVB=dC8azOPgRC6f8 zPd|Zpe$@S8G|7OUmklFeCOCRKK0`Y+tsMc$t2%J1k8M;X3JyWG)g}eZhV8y(${Is_ z4&;}1JFb#bLvU$0A(m&0GFP*(8)<=1!u$pCFayY+P)$tIzOoGf{0od&XCbfe<*EzL zta?>zc+pe?7mCK$kQg`ox7qaajn+aj>{)o>&Vo??4S!h!eitZwYAa<{o+|%y`PThP$WuVPK7=eDHBqSyl zYiwLRjTp{4O{~@SFn8x6F)kozvyeP2kk(l+c4mSq)XvNiuPuD)=KaMwtOgiSE4Rf= ziqB^M%PdJ>xbW;^YQR1bm5b;bq}j4ABtl&&874j}Yr^Yd6EuBdaln5l6DI7|Ab39Q zK|1opryUU(S?Np=kX<#trkfK4-IbqVPH_6&^-^Izyt^8P$iD;Bvx`T4q1!@guEUfZ z9f3`P=8wf%Chq20>h&2S8V~W;6)$6|xyWIdEywTTLGjsxErA^yL;0Jq{57S#xXtq&tf^B|nsZ&S^`2#io zv@P|}O-Qm^ta~_arD!DTviFfbadW9tUeXK^z=Ih*lc~ga1H*}Uu?SlQ{jwXs@u_$G z(NxtZU?3Oq*A$wOLpA%h?e~DWo+hIP*0pob$Nx}{z&CaguW!!CDckU?^&V^T#)b1G zR+R1zli&Zom?WIoOWtl-3xg-ge(83viSfWhVUTcG(;An*aaSU|pALxOp39B$SnuM` z^cC|gUX{x^hd*dWfe**9LHgeOr>+3CKO+}oEQ$|z#D3dPi12LA)2yL5r5?Rqm%o$jTEa&tqnrBIx1#qRm%bQ>d?- zy=Pj86IfJ^;2B2;@qKLc z<;2A!rOZv5tsS&bzJXQVU*6jTisJ`?&%UTq)p&0NDtD3=ahvwm-lKtF@F~9e)ZKu5 zwDJ6&(DotjbyhR=0ciCM-qU@wm zEHFIxC!t8D%d58xlT>ky-I?N|n>!+uky^x5IZs4MN-2ySjGPn!Du=4|Kc^D8i#WS} z;(|Q;#9^MaO47|Hq_%~Z1glZ*53OCp@5~1Wh&RBY6jFV*pcbM4^_y))4al(t;@Ht* zqTD3uYot;V+2}2aT$(s*vDyFQORB3<_KC^$t<+-6;jvU#%JV%W= z1h|Peh~`g>mE$!L(lRubZyK^*bCpp>F}-)-+xCrm(Qd#jErtrCMn75hhj^vLwgYPS z^xX_2bv+M!{~sBNf(Mgf#P=UQonJ>+M-h@1)m_?z&V?FPp6S&uwQsv8wVme}3!69tp39_-gLl#C%T0{`z{R;9WU)`Q{?8tc_~yq* zNcSs;97L0E|ECxlz0`>P3mNXBCFLyjD-YsvmFN@Ik;z!HUJ&pEU*J|0AA1NlqKtHh zoF-BRjX7<^-T>?lzUR1QLRx1X`B&l1e6%k%lsxJI8t}N4dBRH=(9It$!1VDmhVR<_ z@Ix>ZuD?+S@D#r z^rYN51NPH2l+&DC(ix$mcuRZQRgvU{L^9VOjcW4Q$NfsuCo!V>J?C4;&Hv$+)6^Ge z0}B~qGtB@F@XRHp))(gHsUa*~HJFjWscywUZ*@5*qfEb*Ev*R*p5hEPwgkbZBz_ZB z&B2cu+U)fp>opvQa1fHDsQ#wiVtS3WWbgG=rRs?Dzm-mP?|{IW4QAbzbG;nJ+)Txy zrnxETc(PMb&UwdD_1ES_W~o*`-vpSNWcg9xdB;Q??5JK`D?5yLuxL!5zcbBGQsq9=E5E7{@y-#Q6-$RNTTrVrTH4R;Oy@l7TyH0&hY8Yw)Dd{1p5|wT>&cT z(WDi{PZi!J1n(~HXlZh_q#E0+Ny{J#Y#`_8G&mB*x;wd8IS)F5j4B`IyOp?*Oz)YY ztp8qJP$e%w#ZF@JlJXX(D=QFY$r@Vn24PSk*f*x&>h9r?B%vquFSMX*_l|}x)b+RJra%2BX?9A(~IriTAl4O}4-(~10_UCe(U|3^{V zEcsAb5Z@J&u=QbhhOVu164HWm)Z;d905DS8eS1aC$DvVu9lfHqPrCf;cJq5{k$h%N zx;d58CmD{gY@jc*_hHOegWe!lv>yBZ%@k+>o?>K?V!5-99@}O4XLQ&^U_>e7gAWQ)3oVEEN)L38z+-1>(oOj@0 zoy@@A$yspYz=^UojnJ0~Q9^Z6?&mOt=Pfv>ntGmQM z_I#&QgPkO-tkOQTGAT#Ziuq zkbcePg)C=c?cZ%N;5SNzmkxJv4T6DbB1*_zNEeg$;QUB`P!n3H4vJ|;34e-~WCI_# zD*&awpHH#TKS5e`_k7G^f(3d_nn3JgQKN_^U+K^oWg7cPF#F@@(KwJgim%y4Qz@+o z+u2?QyGI(V=qm6FVPq9pa26T}KI_<)H?qOo79M|^l89`Lx5Ed??q0e=LpdC5;;JyY z5!-JoCZnpT$Yr3}-$2x(@4~VNrcd}$s?THtGhoP{uHVSkI16{*oj~ru-EHMqMp>4} zCg8%RItrCdsKH5DstzSM`v_suL*Dn5Eujo_fzgM>hYAzUI^k1l5u^M!I+ZSnpQ~T{ zSdi&1xbUI5#08!}^ufQKQ~w_ows12Mphb%#nm3?&cgG&5&sQQC(oB5u5KA)?PWb$9hc=G7{Q?xau^PaH>OL9Ppr*;NW z4#lubF{Ua3duJ|n*+i6WNpJ>ySZU~Ya0LBrCPai7;~7b3tz9frkE3>0CcDnz+)U>5 z0zIiJBcB)~xF~SO+>qliQB`I>Vj>rjAKuwU-P5`uQS0N>`!SAz$3PrUus3BEjrcAf z%wjJs6YOR&@ZO&jirWZBX;8YM3BM%T@L zwpzDFOw;JWskd8jh@NI#23Xb$^H6k8SCO&fMr`d%Fd#}WFYQ)TWc0{y=Se5k99f6X z9O#k8FsqSkr7iD0KdaY-G!8`$$ehiJ4$R$dT5V8#_<%R=5|&rP?@jn_*c2o_)^o|0 z*X%i$0^L}Sl3t$?Z5uJ|J9<$^r^=y5^;-NEn@ptkDqrfW1z3&X^Wr-+2u++Blx8Fq z#2c8{w%ppkMY0ky+v~SQ&Jpa$f1fKcSZtV79}4edZrA&hI#&wmZ}#j;HLZWY;{h%c z>JIS*Ed3b|%vGXMLvsC#!$}?14!nz2{8~ehdD7~WSh@P)_FE7%NRlw1@^xs$Nm3H< zzq>e~!TjX^WE}O_IU;$e{xJLoMuxTn`tt;hrM}-P7Eyd;7IR_R3s4il>_j|acr4%M z37%zYw4a`lbx5-VYH{LwD;o(;d0#MfZ zQQiN*B2!xRXum$s6&hnRJ%ULaJ#*RkS32Nzd+B;j**&=DWsq(<#+zj zGH%Y(^jb7w6WuQqRqW>28x&9A8`lmARW71O|MDiNC%H9E7dH3DM{Bm_SmN;XeZ=Rg zB_lEavUL%SxH5j52IPARa z-*Yv_Ji&d6Ux768bD4jYG)8SVk>2wm(gk86X=N}^FWy;vm(JJb+Q1Ztn8Ql523Gg( zVyqM2t6K1p`-Y_CSeXSs@I^fv zuzJbN9p7%f=*`(;kIQ)gQrPCbzZ*||Q)51j5s9w_>hYpyku(Xf$NS`iU>j8d3gZN%e-$AUt^)LK zZs7FWE;|X7zc!KiW}!ZvH5#=VExwb%f;r1fc}=jmIE7b{sm? zQn7^9IXk!w1s8!~!UqkOdu9u$`8|IMyu{bHrLeju3oPLH zf}t7EnMy?cgqIVsyek34l(MyZ5XoZ)4hpM10drz-8~n?&;4P%fmM-5@89WA%UKw&- zD;}(2P>t3%wgU#;cFt0$7^N?~foI(r{t#z)CS{(MLcA5hW~yyWyZ0i=+GD^P9FJ&* zzmPGoW}o3tISZ=D=n0drv98Jps8lVKAwYU=ES`Y6T4SEKE2-ax; zPS5K=(K`QQ`O?cIR~@ra&tG}{$Dy7ZP4ND^i3HM7utD`y&$;TupsT%pscs#{#!@dj z4&&%0d$cDVK;_mK7*!Ka+rJO5R?8&*_sp@iY)VC!t{S1bn$^ls@3-pb_@^#KSqbowJ~0pzr&O zE0&?Kkl^K*^-ZYwvR^}x$xA}OipBQqWbiv^s_bk>I&ddmg1uS=iD6U2S9RpS!tt~A z8CWI!wOT7f8xxSw*rl-L@dbl5LpQ&LRSXQ22j!(BrUzt-er{D-j~Ek_suKiNOnO-q z@2({C&Ykkk)7uc&4+=~B7@|p7h+q}D&)Rhro-AcVS4VD>@wa76jp~ib;OP!rrxZ%* z_4ChQ!K3d67T8O#Y$KME08g9yIHV6zw)IQC0(U}EgHJSR9O(f-NXRv}b7ZJ%CTJ$i zYq5*)>$dbE{fw2uU3BZA|K6@u-v86ME~hl|k<(iyK?I(JW4uvpzVvj;eHIGS9-`bqV|s#8e(KQvVgrT`_q3 z8M`0QBT|u^)X)SVwz2_kX56S=YeeP}oGkGTDp4$a9jGbkP^F|6DJhAg(Gp$@#PLkJ zD6AY>gZ5lpZA@)A>1^}`VnN|Sj{YK-fK?CsTjq>OS7rx4=t)J035)YbvfW6+iPcrQ zB)tpvzFBacwnvL^NDes<+%(L_@(x zVUV}fU6+nK4MiJ=$D?NR!PPLrBjuHFB+EFkbXgL!J|<4*94=|YVSF8J6JhnjLJqr&q`Cwq9AYB~FYVKRW%ElkEjJKsn#Jj{3CHW*- zk&qXYyup8AYutPV3la;{H05vvZi;y6z26IR{K1nRR*@l10Qich1})B=mL9qV3R5ra z(mB$Z97?v!f%a(f*h6M#C~Yr3l6AP_;pR(6OK>H5f-htmQpr<@6A5v-k5$X1l*2(= z<7orWuP3~#TgzMc;kTA}jCpd(>pMswwJQE~EcwMlj}v2(SD&`o#&+v##>+LD`F()7 z79Au^<}56mM~Hi5=OTu+VG>ybH>N_$BU{3+NUq9Nx__f;UcaoE)W5RvzQ{NK6`Y)y ziVR>$;ZX0+mzzGA?YY;cwIlV-Vq+>fm`0NINIi6+i2OK8aT&4><)AVw1 zbkYi+OJ zy=@t}YVsATPTD6ivW9L>t$7ya*`t|ARZA`u5#Zi?QrDi~QHSwQwA2gx%LUUfKDV-i zkoOFx#YFVs)Jeq?u*Sm3#)7=6Q{8%E9&W774;cJD9&V6{sh6knRF*I}#C--K z?^1%|FCjx_Q7gQ5TL~rQfXh%I-zu;XGzkkeMPS242h-LlMpDvs9#w!CX^nKk4RoSCAT=uIks!mw@s%wBy6sZ)h7q@(5TW9pRrr_QrEBY`5iw0 zJD7RH>_Yl4&}fUQ6r74NfjQs}f#Rh}0TsEfN?6Ng0sXF+v+Pi~k55&COBy;X%MCFt zzw$p=)GHU*+FY%4w?qffs3dc*v}!ZhPqwCNSI_(gVw1`@2GuPfh1OpEMijt*lF##( zuyCsd3OcE>tzPK&a>|H8nhouAdaGMh!vx_`c|wAD6Ch_}v{TDyr;I8$*lCk|Vo%YE<3w^m2LzPO?iXnG(`k?d1P zCKXGGjrC7FgW!FVQdilPUWKt?;dt%M7vL1kT{aBG>(M4MI~2#CuGAn@f+D)`&Nf0QdsU}p9>CHkWG7JW zxPP0#c${KvwJGdaP<=epe_w$xbr>3rfus$9>&ko~-Mj|&&z<;N7=A!1z3{tOyEe=P zTa+%Oj*^1cr04Fgf#cR_U7|~>KX&+b5wL=21yVMh6AZ5DKK=1dWV0@xT)cgKx8Y}( z98*S)#_J^~V1O5}0AEk#Pgxa<|2Rz?vJd{R9UwZws0I$5Pq?c94Zi?6g2q|ZyC`W3 z?Pudh&?IjJk-a+?4zEmz;D4gKts0G)-Z9dqo@XN>Bf12qEZUyNBVL^CZR~M=7rzjt zn!c`9Uy#8T{?evKUIHt->acLIzzkk)y?u*-`|b|Ug06qhl$r0yCg4NFU@TG~TBu3A z9X|IMCK)BS=FkN#-2SVWzWR=yxQS!-t7w$dL zqMn0NxNf{&&0DsLwl{`5THQgDyUi0eCOR?ZdFn02u5LkIkylZYV>ge7com!m301M% z$Dv=pMX|q|s<;X>3NHL3^APx+4iS%+jXtIR?RftmKsla0S=o@Scs~bS9j=8J~g?l;(jw=1cnu*Si zZLE=a{J|OeddozNKb|LuCtBj)n{#14A|6~7;DE_!AM&eP*3fhU{C3KMe{5R)W+D{OH9mp{k5<7-bem}KTm(5X`#VXx$TD3KXK2?hT!=urXP_m$0%Z9MXBML0E>kCH9#%Eiijjjv&bxT0L)Be zbo9~>+n7+D{(`;YV@EJe{y?z>;rT2?$jNk=U`rtznrOMV@CKBSG$AE)8Uw6jHKij6 zW4vs9X$&UKz9KehcO+Zeb1pyen?7J9`RVI0Q$bLuCbbDJ)I%>xPrg9kgEf8>Qo5#% zyw^sz-gT2%il>Sd>~{G3tTE?R(mufIJalaTirGvBz&7*S-x|cWO-LrRE4YC4*}ER1 z1B=ucIO_uNev8*y`^}wGeO|yST9a2V;Gj(ocn8E(`((-~MN$mR`LDsyku-|Cvkq-klU8mLR=l*V%Y9l(btsaBgFZ`Uc(fOxVP*rl`;6VD zpw%E?ou?Ff{0Hw_DZwbyQq!Z^iZal@=`?G9`G5k3+%7rub;ylxus8w}cXo4LBN1BK zUwz3|Nmr^vT#uN;XWe{g){ae4<02x-wSRFHwx?R_f|*5c;Rs9!w%Y$oy;gJpSmt9Pq-bj&X=?`$ z`ANiK2_6f(?Z$gSI4{Uw?o*6HACM6paMXv1!4rI9o-j{topcKrYuzv4i;$-2v)mUl zJp3YSp0wRlDHFgc5$_;fEZ~7!5$r`IO*`l_lpNnzw=1O&nb^Bz%PHS2UnR2Lg~dDy zA;qvXJvRi$e2>DY$gHD;ONK}6&%}!F6wlQc0OCTq{~hIb6>HVm`!Udw*2O-Qj3%}b z=Rs6EFn=_p`(EbKnMTH5AE?NIl>|=32!S!G5}YtOzNrpvvQ_1zc0)GB!}U@)<)!^M zh}uA7a4ia@JR;`zGu}bQ_)@Wn@E%eK$i_sf zs7muhx*UK?tlI?i(vf%OQ&?5shxyeqANW{Tw`1CgZp{)i_E5E_@DI!=v#00gzT`M`>#m7)PL zEL5NuSeMJs)SXx*~fG$bDlcN+1&!?KG{e1TWQtOS5NC<6+P zvZ43sU!hYs4HGPY;~P7%EteU*zT}1kKhCJ)XU+Za^;#2GTQ@t-fyGGl=M6GrQCUAS zt&b_en<($3iMeX01;T0g0N6f zqSBJsoZk8PoWlGlux4{)lSemY9Tp(EfPqb=z*cH$JOgg@_34?Bs~X484_hZeFLCBP zd@R>G^{=}9)Vfn`&=S<`&Uzo(77AjkHv!}m`I`Kii7j3+4%5=$wRS?HDocw%H#TorN!7wqDoK4t z=7{R>>E>*em+Bcp(QpiYT7h){k^dlwedz9iqrXwiXm?^AoQx>#d|nolJdLZ@f?y)J zgJSk6iM*t~pBHNh#{ikIXJiI)AySV6L5Xn;#sjg-e*Tv)JZ4Fu`)!g4jygjb!$*Y{ z5A2AG3}Yo$eW%$J=KyGY0g>SMrJK4{xVaf9>a%&Tp3Lsu_6_M-DZJ?8&FqbOAlNme zpD5ya5aB3?g0dqSmPI>QbPQ-mx}>J~HgtkVcTf)$*0DO82?~K^wV%ic6w7OOsy@-F zz=A9$Y=1a7n3|L}LD)14mq8R=fcczl9ryf@=~ZWlmZmh_!Xd5M7R-wZgw4-t!~k-K1%Mrs*RkGkG}`2$wDiE5^O9 ztDj4VG$pc*r({ISxx-W-u^YFKxO%q>{m^Rf2y=x0z%9$<#7psK;xEB7%FB8#noLw- zG81Z0m3S$>5)5}N?L_FPsnM0Qu62_2?b8cdau0|IeK2oa3PYs3){Gz;l|AeR{%hSD60k#Hs^sPd_|-fh zR){p%Oo2M#2^^KKn;>vqMPKfVM{U7xRDXFI?9;GGAs^6>b4GiflGEL?ROEc{1(B@+ zDpc>+uqX+o!}Z?_Xr~uQ);`F@^da(A?`2@}Jiuq~0jvqqmNNw`Ia6pD`4^%L9JMUT zd0|yrIQ{K$BGN9SE_!K)O$I*m9h-MITew8jyF=kjErXuH30G3*NIe5+7Gz)reV~dhF)S1xD}_Mp>mSsIpqsN<}|{3Lw$Ej(da=>qz35q z5X=K*@WF96S8qc@QV(#Cy&xw_x8==4+_xn(c}TUt@?N{@&krLG97vhsGJKoloi_tz zO>ph@AXg#SB07L0=zuCj&Cf1ZDc*Hl&^iguTNPuGkuRYB(Om#ocmf8Jl9hEn4e}|f zI(M4%JLe+oE%M0*FV+%l{Cwt#_p|_@!dRe=>iB1CJBc+nykOoR`TuK<-luJ|u@OBpR}mlzH4O`T5VL7g6SqDfeE5V5g<@ zyw&ZUlx9LHYRD=iyM7+R{<_Q}pulK3$da0aVNp!`p-sPAx36*S&f;(Dr~U2FZIcbp z@Ll(IWH0@*?}YTaKZ!mW&zCphjiIYjKt(=XybWL7&$ZxQ4la$7_Ti$KEBm+PO>ITJ z7alTWXPl@E7hlngmw@)lf=VA^UmKOg+n^W`;wU;8Fv^LsjDME&Zkk!NWV-VwL3ykL zMsbX9TcESLgv{<|k_R`&@&31GnRXtNRZOmw+2mB5y7gO1o&r3yB7%UCWCy$z2^88< zC|+5-)~hkfm=K6%eOH>Tq2$oGcY;HxJ^B!Hgad!^TeuTOTCRYsabf{a7WLDlr8aTyMp3{fw9?Hf~; z_%%eW2f*Fx@^yK1PifNR?q!sLBYw&JcGh$)1M0DMc}!T3F|w*K#UD*!x*rA;YM;fyzis{dq@T=J zFq$E&1%K^fgJ+Tw@xB|#2QSgvzY1_yFYQ1mBxpNvu@TJK)M-}BTA)q>w(q!e$-9hL z&g?F9H@2og)~4w++qhQaAW+*I{TOxtqDh9!qOt}w5eGT>1b|j$Skcjh*z94%3~ypU^|%(h zc(|mQf`hW=E~7>UlHwG^_sikjNZ%@Yz$?fY11k)_gHZ_E7RXidfLnb|D`VXIHK3A5 zXAQj>f&pjNtFOSOT%-5CYr9o-Ks8ct5=^g$bN63guo1tNIjeL2kBiK!qk85{`wdK{_$+Cqm-Sgi<+$_FUbe zt$v&JX7HIIf~`w~DzYF;6CYjBZ{}_`XcmNnEgAj4EMFuw#5zuX?ofE7 zlmOb0Z#L8dp{fHl6XlpkkcQ$L0XOnFaP~}*C>gcO5MhjDlR1tGf#L&8oI{QvKL4GM z$94`ILJT_T=&y;Q9wg4Si+kA>3KcNb=R!iMIl3~NY_Oy~(KnYj(zXU8tBjL!%Ps4^ z$3;^1I?-?7=sD74NDOlH2V&)P&X&fCzDDtIVCVO1riD3OU8Ab%|%KpI(0Z z526!q4vg`6(Q+2Pvz_=5^NFs^cF^r*$#K;+wZdxPPvrIc@R~(SYP^4t#+Ox55o#aPR)B7HS1m$*=a&wGa>DfTNSv`Gtez>V&C2qgEmNuwufuMS6P|A^NMLMEL zR)Bsv|5s|2V*B4ulBltaas<5fhiZa%U^LR(MKr7xl-cfy6=k zGi)8>%`&b;Rfm6cE_v$$>0o~`&q;A5gJHa2ZE14GGA!pF5L>29mb_QjnbW#cDhJCF z{Gcl$cig)Nw-if>!=BAG({1K@lkRM*Ej9*? z5Y4CC#2QHVZn;yz4v|5u+)8+!?MEG@07z40oY*AcDzR=+I@Q; zp`(ds7NHGGLlx%l`9}Tf>3HjINs1~Zc;ncj!iPN18H>+&Z#L_?9){xTKfxxeez8}? z5{WtfS2x|dUlq_#4C)9`V*pauP?k@va^b4mz8rsae}$J<)tMMcxF~IDKhNE+=r`PG z2>WHKKPj%NMRov3Jz>wN$L>QU&_l5WzAr|Fkvjdt%f{jE%7F}(cjb4P?vutm{976( zwc^ii{})p2lV0VA9Sv(xr+608mjG{{h0_`RX9Mtqn-A1QA_gvmvRQW);yfG{jO>mrUsPmRsPL&gYjEiFP&73t*70Q*1|&hfWnQ*woB>XcKPDTnEHWYp|LHxu7iAZqvF0hAA;m-|tV%knCiqGvLp2 zzQ7Xu0?f<;%Rm+)dLh9?z;v0&&F}yHp9`PV;g|h{`o~8=Z0F9NhInP=Xo8wCjKPRE z5ZSx*`DjJIJuFR^o!|fnn_f-;O~eBJ!p!cX$Pmy2Crb|)6V+F}LU+dV!i-_+a1?|D zrUPPYMS5Qlt*)lx!v90pmq$~%hHq0_NZ80svCWw!wqzbMk0nAxhB8x`LZ-~~HkA?? zDj`E5^PIU<<_z1EOqnwCyWexpx4yN$-}=__$62*HYuoSpJokNH*L7c4>oEc`jx2(^ zhYjMb?e^4I*LN3Kh90;Yw1L)~{QxSt>RqT!IfukdUOt{`X z@SKI+_MsT2eAKN+LPTa6{(OQi?|CS4-LFAS>4EG}_@ats| zXuG}vQy>z$*nb4X$*`bluiRQ77WO=t7A!CR!d4@2kFOIBF|DUVjRhX6Mi!kXNMvIolQNbp!lzJ2=9*5M>2I z&mg-R$c8M-vz9s?uxY%_<^qe6&vs!~R0~`yIOkxy5<;bO!L?l}w!2nyg*njrwL4a1hUaJs}c!2?n-{h|Xok|)HmrmQc`WVqy-<^laToP33k_ZqDFQx>d7|Dt$RuNk< zJ^&gN=wUgkWwtvr)hl)T&I`d;U|5pfl_?=&(r}gES3c;>Ipahe$QvYva)mZFqs6Di zxO^XAR82W0^b<9a_>cgqK>2-`P$dze=@Fvj)_i0P5=}m^2dFtkNPdWHWr`JH+Oq4} z22{|$LS$Gt=*i5^Lzr;Irc8?mfXmwV6$D3RK)C>$1D96V2JB3qH_%XRARyJ61MoQ1 z&FHIQu^iNM3~Vja88jRbQ6#URqe_|FSN2u9CJx{`vV%?|z=nDdB=0Xq$3~}uy?VxW zNq*96cim=}nd~ywWyTG_)eVvpV3o~qcCfRY9pxD98E$=7w>++;I{?;>Ijku$s9yZ zcf%ESr8w6-F$svL)-p??F~NJDE5_Z;{%g1V`*rTNlN{K8+tjZxCo!gyrLm}zSo1t8 z;Eh~mlVBTRC!S#nGFGp9#hcXtQmk$OcY5HF+pL}0Mq4Fv@E!|la7r>tIHt|i! zIBf(|Pv`$@J9@TNa+0$dbuP(w%vjSAAQO8~0?1IQi0lr-bnkrxJ886QC>@7N+7nh( z++peRcks_58eg|CMY=RZ#F8$+O*RptktzQ@Oq0u56H6$%79&r4LwJuY_R>4~t1Wn= z%;}rKG;Bq3l}l{bWc&{*D}B6!(WiNMocE?#LcS1-qECh3#;QgXNE% zJ5d}Q){ght1{7cRU1D^;-}@sWEliC%RZn^P0Blw~sdm{oJ7IC2McBo&B;<)#_eXqo zrv!?FM3c(+vI1b8nFN6xPPh&|ZgnaTnu%TMuKlIA?Vt#y34j1@6mZ@ zdh}|YfekB%wuQ9Fz9HFIzLlO$8x~orV!xfKu&;IW>;&_n8FX&)igEj*gn{Qo7eTsD zmuj_l8ETis0b2VA_?JzHv6ivOU6skW#3n;oQ5usc-r=!*UqRjEp{p}`ltiFdz8 z(()@CcL$wDQAcKTlA}*>cv-ETAJpDlgSL4eHt4t-+3lL8G8|rl&(LRv&dQEU1W}|_ zI{o`53C&igi}*jwA;eYH)x@Ew6lBF9^#6-H?ug#|&KvOtPRIK|xbA3{U=7$Byr)>W zdqEZ5E&(9MLwNcA!v4yOc_hk=xf?0_67f|?5DTa$oJ7_Uz!97wu6otzzPNIiNBij= zps?-hAq%f>qQY_53bq37LY;5|R++C4pN8XgmVgudq?h60G2a!R{gMoD5TZ$u{iF zA_ybmNt$|e3sTQap{9TVFlKij{t9vT%GFgWy!pWqn5QMsEppW(PU}b+p72b_sYW0k`LWJG_3tOS=z3l2JOro1eYfCP0wOJ#7m3X|DD$^n4QN+wTxI z_s+8gUC9tg0_t-KU}!zc$a!m zceoB_xgqJ*ns10G1h$e&`(w?7rt4CjcAyAcaf-=YNf5Kq*aytK>ry))iyYlBJ)7DB z(B=Z&pfiX$T%hOj%v^~BKA7y#XW*U5-;bltNe&e2Ct*`kuF2(^au|T3^|JT|&Ycu@U*>)&M8FogMeoCRXJwi#!gIoU_ zB;CR;nVJ8U8*d9AIla8u054%swVFtAn(daPGk;)oz4;sb$(5_l$=KOLuSwx7y*kpHfKOC}@A2zE7Tx!axk#m?TMAyWS@Be7Cv3Vt*6B7N*X2APv;P{GY#I!z(E?3Hs8r^sh2e@(-cKd zXACO^rp7fhrx_+KJ9bn98kQ+|R5iYN0()~SuFHmPQlkr>9r5ZmM2NRuPnCEYe+~3K zvHY=~qJ&q^cZy6mkYF?LEuYiQ(PB?cv#2?TZk(4=G24Y^F}FoR$B%_STsMnhJSvG( z&RouB-&L7a)GA~~9*K7`?$vd*30)X%(Hd0kh&bmpNw~1TDKmddeO%>eg}m71%gaC( z!@r@ALdT*Kvu^IF>IYGd$?|dZR!;9p461@NE@ES5_7~D3F;(=|{L`G?s&E_03=%c| z)_Jby>O!>bylzxfjEx1c+4{CE67vi<<^?3+;-B{kPekJx{yR;?`N!Mjv5ZZ6EeQFF`SkL8wp@i|ogQ_fK^aNMiDZD+P=y4p&}Zi%QX-?c zj)y3UF-O>L%C|8%{S}ooG?sQA)}Rn4bS=0eR78SYNgLyW-R~oIJ-FK_ly61_vfsYJ zr2Iz9v3f(D&mqK9%hs@;i4fzICb8mBLlmI(h2sv=BjUtz&vHtB8FuNMXCuf7Xf1Ea z%2p;SNw1q4$vpY>Gk6+yBVJ$u`2uffMz|#q;j$=|D53p6yl{zPW0N65;o2{Je)A;( z-V{Lwd+uiygsrLj*iYq%%ebA?Kkeragb_yX>f_eB{^Q!v`$d^VrN%#5Q`1fp5N7$q z!k6-Qq_ynZC{hM(Ow($GTx>I$a19&21mtz;Ij3_+sCwB6ltWa8eOg{4jzI_&P_B8@ zSJ_b6n-&gLoe3j8B9v>-c#MGG^Ws@Vp85*)xA)O8dgoF~a8ACk(d3Md+Z8*ns#O6x zRlcgTtSyuy7s*gV+~b2VX~(e%mAXG9iJ&zNUxw=3#uV;ld2-x9Rx<|M0QJ6HYayz3g zC~FoeM(YdHEYo*h2V1TqzVog8EmX0F@5jUbF_}?`pg;P^_Rj|Uy})<8k$B&Kf(B<^ z`297hcWwuKr}+Ruq%_svgU)vZi3xnM3M^M4RHC%`Ao5Pl6!15)>>?;L$61lJ^+y0O z6ThATWu_FNno95EXve@S9=9~@>7s$-Ww)Wajim7Tf2oe1fLYrSx>{g0cr(>ZR5VUq z=3V^;1W>ihL>+2Eu5-Ss)ECD9klL)G%ZYOACZ8e4b{7sir(-gKp?Ce zpPjb)<-IWepBlr15ZyHbky}^WumQ9DI10OJn5=n5wfTlaJ|82yzg2%ghxy7+km~^4 z3(xJ!t+4@{{}(=NLfsLxBNBitC4O5!9%?FqB)7sD4B)401`?7by`*kE^fphVRLk?h zLt_Lahh25ZEL|iQ-Zws>aMU(o{|Z-q1Z?5-;UU}>XW)pJ0dJNf`?JVgdbwERGZIc- zCHV&^uTdDrMxfK_gKwZ8?0Yp<2$B3J_hMKi{ajnA7wVSjD=_AX-&=%h``;0={=bqo zow=h<0?k(trP0iE_cRMPawAPVrXi-##)Z8Scwe7|Vi^4nNkV+2OGX6Kd#NzPyKyvD z2{L3|6Ie08Wwp9->pidKWew-2%RLoLnt_4Nij&LBt*!AnxW9pKtJ>XuP-bYVzlC;4 zlf}+8spX9=z(J*Z8S5#aSfY~TYN(~OJ3sQm<41x1t0#2)=H-IoKa?Lalu1HZkCE1t8rWgw8hXmx`Yn@c?nVaQQx7D{Jq_M2Qd zKt>*b?U)jed_}5rKk(E_A@&2&v{#CrtB%`Ek6e@8s(@qvxL}_7v-6S}&V0g}$63)b zI+rR>uP2EWMhrU-)3v#DE+e5sW~zLYOPY4-o!9ULODq8#CvTjOC9FEt9{4v@>6UWF zVFk1frL%fD}!|Mz>S{3yx;rhU;#Mi_xs=6!Uld?lDLz5i8cse7MvEH>l_xCBO zlTs)-x6?TSuCIHY&~jMW$}1lAab{s-h5$Q!|JNN35rk`~Ws}B3uhXP`N)iN3+<|<2 zPd@i%js`WvJ#Dg8r;mHnJ%yR7U-Z^H*V!pG3ilP1$Ly40{dD znAdJa*?^CLil>b4>SnHr1=H%||LNSxRA?+|)dLJ+!wR zRfg|$vU9YYh^35^r}@RECf}|8=CAxHs8#<~!VXy+TfA6>z^TcMZ|4yy+u$V2)sTYl z59pIHgxQ>@nI6KZ<-{30Os%^JGl?ORKD?=EMRXX51#Kh-fgQzcyLr7?LN|6fX#&)MUL=HrPG(lPpzG2Tjw_^&DpeA?cfdJ zT%x2f)VeZd7EEwDOgBUVYrv+AtRG*orr7V!F@H2*z3!iZl6s+adXLPCsz`B>4+A;OSKdq(t}Z`3hXHV~T?VHy1pVmb{#WYUnxXUM(4&!HNP9+Vn^J63vz zg=78xa_Gkd5RotnyY;lHq#mi9zXu7{=_0p-u)m~kn<$1GQT@7TBzEhfKS!OCJe`H> z@tw7k6g>%z+b5z(T{&_nIfBkmHr;Ls)EWaRrK~DmZVzqs6z1i~McyjJ;X)<4qbfqP zd-h_4HAE4eb>r}6J%O@fS}DwsQ-0FIwY}H!Waytrl_OixQ+`{m^cFZ4@>G4)+3*-- z3C>%5IpGS^4K;8Gp|?Wq_9N@Mezf@)i=2Yjp6csUpEfH2>X(ho(RJ14ie0zLfh4p| zRTK@o5^ti8hX$cjRPk|1*cZKU^zTl{TGPa(aAX8;{3q4)E|O}Rz4HR}-J?+5Mgi^_ zmA3*RA|gIP2GqZR6-pSVgWmX`)GN4<9NEg;rd1hTkZAamp)d!J!az9!Gv0`V{g;MY zRqk9(gM}9LkH7#F( zh8Tu_sIl(&HGF+yd z7P0m)~EFRWVMvbElubJ7{<|K~ zYYG&^>=OeGxI=_niw3-AgZ|1 zh}<5cO8*G;zfw0KIU)b_n2CS%nuyz90fb@P`F5Aa;Fi(VdHAfI6{Rn~z#)0d%=4E%Vg1}EATiY;H44@pY7JU~{-eN_Do652Gf?#e(qDC*s zbsq~D1I|D9SOyphe0Rw7jrT!|cCZfKBDw@>tIbXAJu?^>a>i;rEgoPi5MK5z&*_C=624n#7+JR4puiHr2hyYka1^?0kv_2TzNW3%Q_hr zHHfEgkyR?_+otq8*Tj~jmM~Yyp2NBVq0-MYsvy^TH|%e;HQ$P>aP6i+`EJ)lJ*)WN zy=Ec1OnQgZp=^hPNJ0+`(^_;*sTW@oMg5%U-%XzaS zWG8UgdFIP=K_f9Zt^L6uP*zO$~V<#P^#7@gl5MDqUQ1(3tSA_t7ey%XtB#gUz)G1w2_`l>0ZXtD37dDo7vpY^#bb4m#S2ZU1y)o&Qh@swn^by5g`3^-mNyGFNZ0YZovaO z3-x#>LtGk(%Yrn(gH%(Oaz&`3If>8&aiGjbpo2DS=K!>cns{@stY_6f@ecYTxk*&T zdWke&BjwoJ498QAqu8E00XvaNau+QpI>*h0%_nKj$?SNm(nVM>pay~ z0EAq}2Vyek6k!XYZJD6wf5=$i{&NB2t(o-5b(nOula?k8HLvOcZOKf6-XEE@2a8HO;mlKrA;BpM zmS1J?=!Ot8kVp?Y8pF+i7QRMKCby>4&sKDJ36v=48pPmUr)?y`v-#_uLGQ7-E4~b2 z8=g4JZ`6HdXEGS`4goz#o*-+AqLOcdMwy%};aOv%4Io4Jf%0P=bh!N@eENj?snfx~ z7~qj9WGpajGagg5u5DL7zQ~fai0DOCP}r0G^EIsYMVb2p8KwpUoSY_49VPinacc*? zPG;N(5rxtFBpc|XuXL}vK2%aF7KKd4^)2Ra=1Rj{FUpPvI*#P*=;d(yphx!L{u}wGXrCzSXi^?1KsJ^zC9F1 zZ}6>cAr<+uO4fSk>#K^W%M_2hNB>U>NlSphBfOU@OXWo1$!h57s73#mP(%F++O9++ zHSuQn$rFeq766$MHBwscV_pjudr5<;sjeA;f;u-{lKYjSQOvA17yXEmO0|wWzCCLP zOck~rIWI}JKPS@z?9I>M6i=4M-rk-EmF(obaFIZ3YWk8_*)0_=7&Z1@!=l8}6fHd> zGBf(gywJ}~RQlI~%vc)H!Dx@MMe0}4S7;VUo@Ov~PUP0P-foVGN&Ji;3Z<_=FBmsq zeragR%+M#ruf0cYtxpOI=J4%Y@xQ12H zOLI_`vMJm(Fgvci)hzRT(V~w6t#WF&(pZ;C|-!(1~i!Zq+7vO#SW!iENFbXj$zx2Jt-;6;9ds-vc+RW@7 zTT9}GBLAeC`2c-^8H(afh5Us|5+bBqGC@Dajw(=e?4#c&td<%Ft^0Hyv$?cxQB6_z zDn%oL4EhAlpl@K0{p}1SawDdr?%K^IIf6uQy8v2~m{F;0m{yJTy}Wihs}xeQPPX4| zIhetQ_nVMBHWiLK4q|j?pu6y%Bz2L*-#s%dBWm%YyO2BG`ekB8Iy&o+M5U5{2P#K> zVtH^1pf)GWf+Xz9cy|ei)p1?|T#I8;(;k{?UG5`eo9^FuPz~<+Cgm)VCdG`Q5gSR; zQ)ra_TZTprM`bSDUymTU&QX1eCmxeyKp2RmFa$lTjAziX9CwXQC-4HeNtx{>Zv;`5 zxXn-KEig8`e9LraFe2RfeAAIi3qbj5!QPWHZ}6z0vY%wO>~d7;&yrgIDo{P$!JMg} z3}_Nv?9YwTQWkT&I;NAv9Ye~6J;t4Deh~UGXNQ=Mhtl%D$s{R;E=mE5$f3S{n~ z)hIM}u`gFYxle?XP@xP`sNIC|HuD5(6YVx>^BKSBzVf)m^(}p`sbMraTr`#cyT>%dIdZ31Sz*Gqzd@(_M>OdGMnofS01d1{CO@ws%3n0qmqzqXd zGt3siTFLvr6;U9)?hobY8zl3U0gr=VWyrkFmsP~8F?O4(8AKSZU$M~H-Y!yybzOnp zmd#6aq-;i%;x)zTu=*rS-K_pB)H?cuS)5y6)Gm_-v&ZwcW0USi(T14R!BPU!tUBbT zmHOW|?IT`FwJL!Og0!E?|26rKjI&T2Gf+BopJ;naSwp+zdf(k{<3T$qc_fwbvyn;Ok(M}@m$9DBW_-C zCTNE!>mlzt5bx@v!=D}$;7~@?nXt&AzAx=M*+8DnAL2TbG37x)$Hg|@oP3&{emY-r zCVxiwk%ZJ|D8>HG+wT0dYlG2ien)Y&`;QX~UysY0Jq|zph?+}Nk5Ga0HD`xfZ(thjce|wI@G!5GdMLV0#G4j;TWk16cI}Kxr@w$!l|)59?!l_t<{N}wR7VyUaWkZ z|Nds=`hKBjzM;gUB8w9ZwDZ~vpTZ13-7Ut=y&LOKm5J}~t=G95A!Yb!KaQ`k3}4Zo zC(ZJe?;uGnm1Lfzb0O|a2{yr9gtmC(e)ES|wGRdUQmDtZVb5k@5iw125`9R0?(9{M zXCjdd@k&V!lQ*eO`jETbLr355{@G&0QcZ&E#ZE`-MkEKb*^i}d!i$v;Dw28Qw%Yus zq2z@4^{l5n_rv;Y2Lv}M5u?{4j`WU0%qkVqqkf@8v7(RU{L{CGBx{0*T?OQ%XTg zCo8z5F-JkaW^se-vCLJy4(-{|iKB-?we!A+ubTIuCsk$5-tPi$9&BKOyI&9WF;zJd zvF2Ujt^SgdC-(C1*N=3c12DpVM0SdZH2=Y%xnvYGE)Mr-#P*rf&6@}L(Kv(H5a!%f zb^;7b;+=aB)-q)iCY7!HUMKpDxk?q^a%-hEi7%R%$x|JgD0)}>cVsv@L4=oqi8J^^ zmrtz2^|j2LveLql#R~=R5<|h(B$ALb1za+|KazCl8nkP$fZ5+eKyRzQj`>Bjmt|HRV?R^6P z@rAjw6B@sH)$6SjnsX>*t%*!{W-+_R_4Ktoy=TmwQp#v?=Iy|qn;9K$mlsoWzg>S^j$ez5=v?dC<^a5#A&Z zV;!JliWm^Mso{L)Bh61%&#?p=e$b3s3r$Hth)+VAg>}rO((24aAMjGNrxU-KAvF7l zDX${>;eS{XL*%rJVE*o#TGGras zvtn2HyW6DmfLeF|O*A%DG0rFUR-w^I^!IgSPvLH$4 zGGC@#(OqTH#QS@F4?~%=4eqo_kak+Snt)xMyL;Np3h8{?!OtJ?OZj(1=;aU7vDdEL zM91;!@-zy~eS%9^y6Y4@P!*HGlx^I=G}39KGq5ojfyy(g{Kqw;(a%Gbhe}YJ>PA!{qk5sMTSI3+&~|> zZ3QPTwG87=_PHr>j$BvtDru$bDqgEOYMF4Z+nw93`2l_K08O1pu|&feIs|8C!GP zsFs7)q~gG~5RSGH$NGfAm+=q+5t5*foF`twA7v@+@DUc6MTBZeKMqq0QWD#F-%O!t z>R6&ecje4n(_7YWW>>@IZeDjZd@wB9dvk1-pwaxQyGg%csaaFHZ)AYvMzz|cw4KVY z`TRST4t!HGkgZ|c&TPXhvm|?7C&C2Jjqd=AQ;-XdNEwATDk2;n;kQJUwl&=tNSgcmO z()RTWcM@hqKfCV~dA7wo_b(pq}P^IL3a zacZh(tB%#nA5DgSNgYOJ#6+U4GT>RhbWuK%CK-9wcV>$aIqmSX9EwWoKc`{E$HA8{ z5?PHaK>M@6qE6M>!u1PdmI6%_PY6`g&#s7%eY|OY5Z3o-?xGacZ+$w4=k>Pds+F%~ z=~C@^qf^~quMe9AlAPo$C%s-da`twEYip7BcC7hEf-BimqABJndO~F5>qV=uisQG) z*tFQ>oxWOK``)!EX;q8;%ypk^=@qLnagvhc;Nrn!am_0Ngl%qa!#1fsn1;rtN~J#? zwfBO_B|Zn~Qbb;_eDm94{;5OJ_g)4~P?N@)6}?bW=j0=%FZ#Tqk9jw7^tWPnLc+nm zIAd*0a!=6pUO_es_G`-eI~9T9UluhT4M(h8>mw;TT*Fk&UPb+3;l}ogQoH-8 zQ^kYJXCn&^S?%iad4`m3PCrVzyuUq3UL^a}?rpSpkDF-ji}t!hQXo4wrJ zFp+w1rAVGAnR$KJznTjyigYSN{YI~J*|a?x)f3t!{@|grOmkb95p~iHNu6YC z@qn`)L$BpU90jexm9N+O{L}9#j7EUaEhe=;re&Yq$UYJDNe@kNN$t zD#OX4C%as4gQ&bmM>J!G(^P8x67wt_X$>cXDIr;J?IkL33b)VM>9gan;-+#=FvgdM zlf%V6o$;%JKsP;K2`x!eE_&dpk>2x>nXCO5BwzX2?|T={RUGF06+ zzh1Qq6FO1Th<+@ci4sumXE7`O^!x377!CY24#FUbhPU4Ny(V=9Cgiq8sk;T~sq;-o zT|(6YwV=NC=4b%DK)PlJ6=Br3F(u_s8U6*X7`nJUKNr5@Sxn7WRpyx4#O>raZT`#8 zR`WIo>jT!kj+^&ZtM)wGu!l1HgSewrVZK7qfWyILgBDG}57+8=3Mg0Jbsi{+{mi31 zG5#j+>4kPus2lmM~p_X5&&iD}Xs4T}3Bs0JI*jN=#W39U;6Bx4o1lpA+Ct+LU zPAnN{EVl)MBGA%+9BRBca{L^re>|MnYoci~`DmB5ow|svl;c6bVv$CmT zAK0)g#&;4_+=J2!&e-t<(U7H|oRT}%?hsqHyZ3S4wFG0vp;)5i!#jzxSsR#!#EQ?P zy^YGGQ^))D$IM+nb-iz+&0PO-V73gO{q9|`<+N1Dj89-5We;N!`yNIUEnnG7^@aK( z6?b`dwI&2;-c_eoH;5Ruu;@H^NR(wxHB3E8<*)gc>V&)3hOu#bbbhs&8m1Q*ztOS~RC%DRQ8(a{GJS|MeBqR0V$1kj>7Hig zICQmYIDXwX-DbDno8xX^vAL<^2Q$aj?=t#}3Lfn}DCo=VZ@iHs{(A|>{anOGve5@u z+H9BU_mEC_z^Yj#5bcwE-Kaw-4=>?tzW2b7KJaE%LI0c*-#LaN*L#<^U6+s#_oDCi z^+~-@ksqpbPRWlMGHiX_l~>>5T%i#WjhCuki_r^vng4>r9XXF>qT9wrB?GF_8!WGr zbL6H%X!_4w?2do<^T8mC@cm15lFXT!@s({%4l}zWAgE51#H77)s+@Wh1ua&bJKhFY9*_ADnn~tsF z&Hbr?m$UJYXv=@*{7K*==HMGW%_+!G2;V6VcVN4%a-jN$yn}Zot3`QFZTmK#uFVJ0DAK2%s>+B^_{?5AQy;yLEowC3Zp}m+ax*Ov&G%tqI?~4uiek z8wQ`|7jQ{ztB8^#oiq8FGZeg4D|NJ* zL_NWe`|@x=m0gZ|^}{XqbpCZA^^tR5Eq6y>%u%-l%*t&2RQTdpDMz#KW?sRrV8(#2 zXJcTBW^Q8;4VOB>V{#(E!BC@b6nna;Jy`w0yE28(pQ0aR06WGZ9qP_sPTKgWXRnpc z)G>iIvX%D&Q(CYq9nz8ia|v6AzrOI_s3gW&x^#yd|DHcB-ntUk2zk=0$GPy5h((Fx z_V9CST^2{BeX}-lN4grG2U59lN6-6BkG1ZW3P*e2qW-ea=d}Bw*sqXpqR|eq+#Oz9 z0Isl4PSabOtRzH`x-%qpOG92_BuiQ9&Bb0UN0b+drV%&*FU2yJtHCHD{=XWL=DL?S0z~qxh<8kLjTQI=WW<6Il8XbLPNM) z?Lj$xLM{H?DxcbWDkcwAr#!Nx61@fU!`q&UHGzs}m6v*Keqh_&^b|{YqCH!b+g2>k zSnM>>yJI}S2C=ha2+R!pUsJvjtb`?g_Y4DHxeMg6!?w=^Q@got>1#X-wwrqWDz;Ou zl@Xj*b?F*DRXC{{`)&Q$INmy`XH?0iPHa;wpNH)@Bj#78EM)2%?YFR%8^;pX;ax3H_VU-`ukrAfnJCs=qg76w@bDsk zN*VUMi0w1y@9({vwIiHs?|TG)9-3#hG+8-Wr}}5aXTRXTgWjY+VVK(t0=DC^fL|Q+ z#+HFuvhUdJ9YEvRQ?vWEvhj9b8>eXg{`V&+y!;Ou?q`mr3eWQyQxC*5&jxpcoO`&C zK{?V&Y$a>#2Yd-5HE%l2dcD*{>^Ht9Y6?l&x3m27dWiIs5?cQIrikRACC#8hS7j6> zaw(r{CJLhJRqwobp}xtyP0`VU&iuT$ck~YBw#>8sNRQZE$y7$NY_5o(B%EZ)W^Ya( zVHeahOv69Ko1p?unqXIoMO3}DF%8fXm-Q)jK5Pg&0#Ai;zMCXLsxMLB225R^AMFj+ z&mBdh9bb2Aj3Ic4(tL9bw^5D2}hx@}%{&QlA?f%Gh`Si9N301scgtXr&0@4S)FbG6N@k9fRuEVxjd z)Gj$M5pTfW!&~0ED?!wDW=))*xZe98ZDiUdJUL3Dc{8ZyZtk;?`^LoeFzNnas)UmL z>w}b4ZmRZ(U~6-W=boel5rsa}bVE9>#?$tgst&i~e zwfQc2YVG~L#>ZNFSEJtVz82$zYO~<{^H|1GX})&sVSHx5@&1H#eQI6QkZ%7WluvE& z*m1AZ{kckX!WKNVnJ3Z>Y&%#tZxLA<)ChMy41uFi93wKSlM=0nyQ*M~pB%8fWrkND$68N^f zczig4li1VNI6m;|K3>r49pTO0p77^Nb>nw7^OFKMhRDgj;OQu$o6ZI;{^uT=N`88m zqhh~e7CYQ~U+5BDHtAjLRab^Zm%Eby8ieiZ;qAj%AAa7x;6|2Tl~p52%7UeGSG{24 zzr`3MuwmNjIVed@zHolaoTWMAq}8(%gqPS6^RA3}a^=dgpW%T|3H32kl9IgH?W#>& z+7?Sb9*<-;x-af8PhQni6!3wuTzr$^>WQMPHPg}SvZBB0(JBJ1ZvY4_JXHU4BXlPw zyf}RKUV#6CrUg^{=NR8n@ML+uPge4_&U!S4PV*IArPQS)zPe*Qrhv#@*{zxlL*>A8 zE&hmm`4Ou^W@Vgo#)jg-yrOZlXGON8i32kESANF6#$<(XEX>xy-)mMFU+1<2ZL2r=73FRNrYBm<+=SQ=wdr z(FMJvdsb0-G(7VjKzlpM&N^obcw)QZ^OD1NlCDU8t(Svx>|J!{8&^U-`Q_kH|E3zX z8g>aWNnWnN2x_oo*hB{2IfmxdCrNWaBjJ-cId=1o#w)>v~E|#Nan!|&rfa(f%mX= zJpJ5Cj#MR}-6_uWI@JM{12#WK?Q^Pu@DJ-h0c4+8v~iu+I!&xLz;2<#`6k_?2%UkO z4uyp0mC&feut}v%<(4LsxNooB4GOQ#rT(h=YU5up2Cz|8CT4Sb=$?AZJdFdDmFv4N zE_9K<@Gb%Srb4VE-EI*gUw7HAILNZm@ zeN`tl9Uaw^9`%;T5&~4Mr0on~)1!zLzC2|pmby>Sl;HHvx6ro^5k;>v4Stni3T>3kwlWm zPzi3*=Tav7Tr(O}oRXh1D{Z0H-0afsn4sl}S^2Zim1-vT^Wmt|t_uk#n5`$bx^yz_ zo9H^a;h*#U+`Oi7ylbH>yMpEGxzrQzP1xvM#R{fi9((Z`Q2>i8XD#W`BZ;ZV4aqP4 z(JlUvV_>YK<%4V&--RfbuBP<21n*h$6ZMtjLLUE^&l=0AFCn`^64V$L|Kzb{#m|Rb zD{?$9ysT~lV0-gzxA2C!HtE{vKYqg4Y;`(k7m;i{QLv%j%v;mkDooWJ_^ z`BN6jTE;SVH*=N0$2{HO-SF*K=dqc;p%_1&lD~S|<^mUEmlypbCcH!maaOKa|MC;+ z^6R1&g$;eR^L4^QzvL~AbjNO-3zo6Fp_tm7JCyJxvO#ZHrl}rZ#4#u3Q{U6i_^j?b z^@#=_<8`jNf=?)S^7}FJSM+F!sBhD3MoeV{-@I+<{mb;U@|_Ra4H&waIi}ve%xIZj znfw*#zAm;e<9C!OWyHyDRb@IDws?2)6#QrWz3aD5fn z*KSM${N3Bf=%M*$GBB3B@y|4DZ+B390X@rB=HZgv)E+&mnV@6`@S>FS!ESv-S+8#^Ec`g~cEhWM5w+YVYqPKo1s*0h{!53($b~NYFW5F$Y=y8W$j|vS zC=_LuEA4VeZa3lhls0SJQ0u;M;~M2`6bavx6IKa8eqH8?sKUE>7`Pku7yk8w~ha+#wz8lNb)VEkt?d|gMaVof!qz*ODd*8n<8yAfF`m!B1l;u*qzOMXH zO=UT!j#GJnC+T>oZfxUr%HXXC$y=*xumcd=rWp&x-TPf6$IvZSzn5p5yt{llD6DGk zDgSnQh(L?mq~6<1%us)T$1S`vmH{t^VeJh=T?~njk&gfi(ufu*8EP4cY+ZH(!V)XJ z^G>GK0|OBRSNnJD-tnAS?5*vqHDo(VjdP?%pl3d56hn9c>HGf@Qmh#Z#67ss-dhp|V)w`F2Q3{pcY4sdLpy2j6!Mzc@x6kMt9q>Z z%?CULoI`rIa!!9`3T%>RA<*0{d(qkX<1&HK8jB}?#Fh5Wn2xnrxrOe9rU}oSfWzsn zO?+*=&T5_5<(~TGA9vrn6lFZTg~{czD-=GhPaau)y>yyKaYeXSNva}o zTjkdcjaEjQDKpcWSuK3Nhq3m-0RB+mH?Xd?CXSf9YMZaGF(!NkMQ?@Em6 z133PSv(QBN1r>qk(2dex_u#hgSiXy8`^e_Js555w=&cZk4iJ<-Q|7pi3flM!pR8Jy zg~&#J(FpkP854CUUycGOz`P9)kY3yJTvvBHT-@XL=cx7GtuP%Rd|%;udG@|BEzxf> z!~^xfycMH@=9M^@ldK=kU5qz)tkGu_8aO-AX_eaFI}%#=#)#q9)HvhYwXAZoIG^lK z)Y~It%~gF;RAJk5GEtN79lyApi{KjLdGYNplKFR~Sg+{ku~Rq(ORG!c@Dp}Bt1?7* zxNL%bIgS=7nskG1SjqcIyS!IC3VD@`BYz4h9qbz zqD1w;khS7ks0g=l!TVU7E0VI|Tki-P=Pp>MWABPcJ|u!0XDi~s6J0Kupnm$_H|r(^ zS&TASh7dNz*my~ZN=<~FaL}G90nL5}_pZ$TrUv2V@v!5qW$|eg>q0&2bPi)(wf85t z@7ES)iTiZFb=SIo+8^FK(SUFJdgBH~Z=l97?bl3{tUy2Yp1Li41%1asonB(P*#~Sm zuT5U`#x+CjWFj<5PUAW4e7dD$=Lb$Pj3TDU8<5@7v_#FPC=t7Ma9nuwn(`8ZE$J=i zfDly3$q{`|#qq`q8=7}6GT8W6XLFWr2FHe}dB2L0=)?%x6v%IC3A{N|>svAmP&3(J z_>k*M0Is5|T+zjv4eINXdu9%%ZF4Vuql-t-fw4z^O{6?5zm+Bi8LDIbCOI-EQjW zH#K=VyXojK|5xFkt9q}i1ctP>1hx2rFOU993B0#c(EFZObgK(vgQrhArRZm8{P`p= zug8BzAg-?M?RApv%Dy9bfjSf=Ph4iUDW9j__MD}#Kf^aM!7!gj`nsiGX6i6<#|?(& z-na|ONh`&7^U}Fp2&ncWGD!~~*)gl)u6?(Sc{BE?n*ZC7Y0D{P)^kTkfZi<%&@S!o z9zxxI)_SguZ&{YXAHCuJ3opMgPD>n`T(xxm?NlH@bi#|g#g3@npVWh08RdR>=kq}jk>@wV>13a5`l5*b6o5=L+H&4vW%gXs{93TBU+}xSn&!InG!|S)X zV(~2`sSjs+>rt2ZsJq;Pme#HE;d~lgZz$*QUteFzZAs@EbFSm2k`6X&{dh>P7DaW& zT{kz+AS0{GbxhkXuPn&P*|1K<-sYHRSP4Wu?q#QESGUA7sq?5Cq1##j#wgyav zEmBXg_wnUtB+?Z5E`PXTs9eyiZBgiZe#)C4H|KOVW1-S1(vPIK#Wh2+H4VIL zyv*q@`MotrhbhhY;ZwS(ks5~PNv)yD#+7c$_w_omSPYjw@BUW`Dqui*o6(c!HY0eZcIj>Mn z0wa*N$|qVUA-|cwy7;^D11r~qR)^Zdq7Tb4&)5cytWN~`1pWyc`m*L${L^bXrfmNX z)va)jpO3-`ssX2Jc^nehTd>}md(AbV{hg(&TPF42dsm@Ycs{gov9TLqBiU2^ zar+?~`e?Y)isS5!5ra@A7XDcA8yK|slc(11xwNJc!cLF$>yTB!KBR#Tvb6vA?wUeo zC8T{S7l6X=Ntftqo0wq^y5z;W-jIPHn`B$;HMJ8$fN@Br7lq`8>NxWP#N=>v*ln1z zneS=nv!A(jt!AC0IXj1_XhV}ObWG+eYT4ihDZI=j}E{3-rXaT`2A>0?)XQ- zinQ&I&5C>%O^c(IxrJkGIbEOWh>1KoGw}6WtoM$m zy8r+9B{PyyQTED=ME1yDA!L)Hj0nff&WIx%lD#P-duBUXM_I?XLN*7-KAFcpzt_30 z&-Zux-EP1Cx?R)N^?JWv&*$U$c-)^nyeMM!+^PcxOR zoVcGHt`E|_rCD^#bq@^7UgR&jfsW|ZEP%fji+)fd1IhVrq3Zq}dJ@B0za-D`&6`&k zGqcXvBg6C%2&5MQ@&|e<#^Vkv?be(oS;FkinSNq6dVr{};IBN(MC+ID@I8JR_!ZIcY8 zrH$oJ;3xLJ1GSD9C}ylEo#()Qn04IY6z2T+<9W*;W0@Ca=%O^&`xdP--zC?P%)x;^ z10qi(7sF3v@cIIC@NpNbH2zoT=YXYg`3(~exEovwa4`3XIXtgu*#ZAnaEtaz2WPjS zv;C!W&bD2HGjh(((F*h6Ew%TY0qrd_Sc>P>i`PDL6o5h`gWtvr189$W6rf&hqM``q)r?>1nbwV4Y3^Q6JwoCyQE z4|_}x8^54DTcU?g?gD!f8YR6|)#V=Z9rVLqnI1z@%;4y}a=8i$TCB9OC8XzEq8()~ zzn=!f57^_l@%|+^d<;Crqq{4@!A+=^`3sj`MN;NOh5j?C=ja_^f&5uH4K5xT@JLjm zJ$%9Mp-)*g;%?Y&SNv8-sppTdslZgW@0Dej?&vP)4p#7bgL6fyqY#nn4^l>#vhW8% zOm07}Fyp`wB;qt4e3pd31!>)T1Dx|9TwvP%v)(cw?ux`I17M5CC0z11L(^7G|0=^b zH_&K!;|DyM~n(me~$FINqFnJfw+qmAouM`ww`rf~&! z9m(IRsEak$%AypY)5!Ua-(DA`dy-k0hB-SqnP7zr#ft8{b4)JqUOR7r^sZ}Io2~M! z|DLx_SUo*H6oi}tWJX!M)fosX;Z@yVde?H^D z=HaaeC%(FLnck9cN#Q<9cMEca(3l4(&A);k)KHWgX z+!SqFX1kh!s4x%J-mbQ12e&)+S6@RzmUxvwj3>D)RFms)&=gHbU0 zNbh9LcsC+-e)k7qwsCVg+3$Q?h5An_n*PYHH_p!_i%*}d9e|HDsISdaa&g9E=ZM#h zcQo>5(PLOaPo7>z1yG$nd$1mS&)RGO(z09!@$@dF{C3z0W$!OOg8{#uTPCka-|Buq z+|UhXBCaPzF(*#1Mwn(=NG(T&G?n3_d5)mULJC25(0(gHoBGdt4+Em_fB(5sGWfO- zfJ3&nfZft)q6vS1J?<<31@L|xyqzxP;B|_XcrS5}NON~an_R@)(!S(J|5R)$MUp`W zV6MKoyuf=zvaXnzI~K?yNW!l2RDjn(0*P+?=#(;ljF5;ptpZ1ymdR$2_%!UYrBP9U z8~Ixg*M{$TQ%rVx$HSimJy>-H>Yp$3lX;r}JP2|O?=057`aglHT$v1%|NnLZ$&r#u z`SE|9!3x%aUj_U?F3062swcS_=J(qat1JSjVJf{YH?1O+(@}k^kZVfY75)hZ7cH2W zV-ybb&KJ>Ce)4ea+%X|dUTSW=y*8*B^}~0}mfks~@N~7$aRwP69{6{4-!W8JH$#5E zNu*#N!OT-292AsUH(gj;h+#<|jTSzDZ)JAZtGsyoOH)%Vlonp8?b@(wxPK4*4_mS1z6Dtc38ST*GD;K+zj`J-2`cS6xc~Pt64UEY|l^Ag^{Y zNjZ5(xxX%)w@H_JHORU5A>2x_@e7V!=^gmO-M?8CV47(asRik-P(@VrH7=ggaGwm! z?cwjU%fvMe@`^4hnKF;_JCtPP`R5oO-dkG36IPCMz$*1+|4_>_7)&!ZZtmR&gSH(0 zK_{krcdz*cUr)^BJ~iw!npte6odleejg$7B>nav113UKvNne`3omon!{YZ0#wqp)F zDuJ|eSgy`JnZTy*X5_q6W!tDm=uf>&LmQSxg^z5*U0(QH*gj@P0JNRGkNc--yQ4hF zNqWp|ytaGVc)a0Yac3>r@I6YXs} zP3O$z-@2bj5eGHmuo39nsb_m5u=W zza()7ttz5CF?fA4y736qt3%i{=Z!mKKG@)$;NQp%rm;p;;V*luhjRX#)$14VOFkXh zZJr@l?w6967H~bDEivm;WMrH6jFfkjmK(|EugPRswpZcHk9IYD+qwDz?UE`IK4dp+ zGT~qC%O`}7Lm4%TayN-8m+xbRqgOL+u1&#+zNz{Qy|}#`mb);w%z)owjy?lb%uv5g znBB*5DDWZ7#L0vIoq}52=cp&+B|@+84^vGvamXx?C$foIPL;7Ks2zTGdDD3`7$)fg zK*~^P%3Q#`js<;n<|M1YgO!=9DZu(7Hu*M=;OVpzX}~+ z6DPZ;al3oH)M{c5CR{JlFqv8P^labt?KmW0MZo$_Y2f6uCD8-Tf~*skDN)5p-)FTw zJ@PsJ^^t=H6)X6mVb6O@+E~_AO>hizoPSH&NapDP*Mq#2?r;!T*0%V(=_QHcgL4sa z=$+HrKM7R(p_uu80TOVcA``<5LOjdzm zTmjg9B`3qGdG|0fVcBq1g|OY!{wb04#wO>S-j5Plx(<_^IU>vFu1sGsFAhuz zGM=}bR$x@-`UBPVLlqVse5uw`%6X?`J!fH3t7a1;Rv3Ge^l^pxp-SNIoacrQvXe(! z!)>OX{cb|)?KE0NnRT-aF-KNky1a1kse@ApHL_9Q@P%1`Zj#)}B+t-#X}m@&7F6_- z4Q~ng;`}avv_z9)8t;(_(TSRDADwc%y)@P_Q{uN92eeYnp6296}y+>-)tseG=vRX4ZknNDe!7UXCANLyFB6!1S zgyj~IAeGNISb0yb_LgeY$AKb{hH%={@UIl2aVm9Mjj7;Ew1!0tThK&Ml=6&dHs?Ji zK}&T=bfo*IrE46ts483cOQ;_7%B*cy)7IhByz_?>3UA~6SAh^j%dyYqz&S9|EqoDm z%b8?Fw%j#BCm-(*eV+2bo`(rLXT!aJ0(iJz$mjn%Yitf;BAowc9Jzj5Tq;E4k}tL% zR0xMBa*}q5#CjZZ3fv*uW-qx=`mU_4{lP@?fvc zX<6k#5o2%X{Q}7}UYzQ%DTM@wh6}#`J2}j(21L0K!H@dV1Njx0g~gdu7p5E9cWk-8 za%pj|1{8r_u9+|NK1RUT$ct0(#;+kiBzDE8+}J?hQ9)C$LYe3~ZQV>z$&m8Z`(6_N zI4Ja8gG?$mkxV&r@%Z1U=3<{i1|8J~2tNk}o^2ENqvio&NGy_(>NO~!PI<^7p@J9U zq;jDYotjIf`1UvYTMKQ}!7c8#s4%E%-PsatLHTCn!N|^4h1s)Hn?NU@MxRzSrJPBP zwEHVNk=OEH9hd|tq&ChG{R0l?%6x^%E%ITGRgd6X`qsWflJfD@aa9&gE)$6k_rsBG z@MPMtQ|?aoi@Z$_;Hb9`F%2eCW}0o>g8aEf0pUflncjfKY6~^J@(vSsp)u2hVk76S z5%dUJnt*ilish;mZhB}BTniHsl3bR>Lc-&k_wg&qqwsAI}jusRGlm{bZ`0j3ql7K z0Gw5aviSVf7X5q=)R^wpjt4XodZLzlh8%^bL*9iUhEO%6e7V9jfP%i-v{r1?rdnem){Hp{NL7`W- z6}i!5gdZO~RjNod75pWoDW+*g70g7)ZQW>_6#iv)Bq2gYwA%_?055_x>U`r^G1$$- zQNH!cFO_v=B(z_&;9z9*gC&1 z6eEzQqB2G)$mL-Gp;U#ghtuF*@Cvdd^77k(Q9*ct zQ(sSIi-A>U`oYx-3Yy5?r!t&01hi#q844(a|ZKtf2?EXVeO72mixB8SQ(NgaBJ?{`kul>l$wC^lVVMbVK*c3_f+K<>_H*N1s z^sRF3-^wZ7a^a&ZE2pF6zh$XMV0sHG#<)*|O(r!_!ur!(rCn!i7^LWit{NIm?6Vbs z?pw5%Y$*;fO=KIwjHlOb5-B>pa2C7>dx#Y`TJsrHF0)!wF55SiSmNauzjqG)`u!Se z3kBynTF8I8TgTs*nXoy#0dQ#5sAqJZJini4Oz((qZ5G40Dwav{g433RzP9FFkLL+b z?#lUj20gFIq08QTX&ETl;kLu3VsNVBs{jg?PdQe|ZZj=7-*n$DdAB4{F#K#5QxhLO zt!APWTF`Lf)qMDs6?Qn&hzb_c5j)&+M5s3CiVA%{G}ZhO9DMxTZ*?kgRN>Ms=u$`p zoMEZwgoK*1w&^Ol-8uV@Ta{Buq2#ZW`~^%jx!CGxJKIEaoo9w(icwt? zZDpgFkdPWnZNzA>8c!CTVc$p?6zZ+BrT$lG!3`8jUxC)sxc)k*Vd_okOa0Xb87Ko( zjI4~T=U{LcP3K5m=&m?=W9{n4FhlEMR_ZjG=mT|vSFP+0#X6Ilt_S2yfszOs-ouHv zWg`ssO#a)Z!w!}y*;@O_yYv-~zrR(^A&t{95L0#%?p4-`r763`)=WUakqUwYB}(#; zJTx8xcivTLYpp5B6VA-)C=`?vwq_je^knskAh{69@QzhW$cvbX%9PQ1Id)xrzj16O z!n|Xc)4SSHIlwS{HoRw*$i^Ac5Y&7A19!N-ksW=gbF=a^J zxZUuYkcu%4?4ae;=JSJu@BKiuaRf{tV!&9=4cMcrE*$!b)6=PXi}xO@0iEe6^zXg(tLib#gRFjEU$@8lD1v1!ojMjEBfn{Pzjj-gO-aw@A< z6Y4N!`xvi+4e%k%t#H#5kaJ`ap`Nim-RB?}iQ9}LubHI}zgy1n(JLs{E8#t?98T?i z95fqsRy33~mEIr=g|<{^DeNT*fWRg1SL>pKs|F+h3#bIX%$Croi) z#EvfYu1Qm%yWm761Z8Na-^z1Ys~_H|^XvJ=l~1MU=&RPQSseYV3FZTk?oU&GG^bH7 zrLMRqiCI5DR+DQ85?qv3Lts*?KXI-}591JKyLtNsIe&u#;b)&1hBGVX5E-AyBK;WW zWAaYxfM(5Zi3??0yCu#>8#4XsrB&IBz@@q|-F^?MeH}Q}4JG-(qF;WRV)Ym!iFdF$h(-ov-RqPf+;W()UV z(Y_JXCMZ&@o^HmTDWb7{o>Kx`QRd-OE-P<*M%uHW6-bp-8Xn1N7ugA z$AalYpXSCAfztWU*zm_ndu1{sG2ttCH3{xdQ_sK}&09rwwP}Wrc#Mwedm=Mu3sSckBmVhDt7e`Zed?NSrgkmGVW{I81!=MQZGGsFy6>WF2w`nwHl|jn( z)MZLoKl%Gc5b-BoAEsYcq0!zE`)SJ*FIm(LqwZp#1K%3$l*3h8negUJ;>g-sWf~nf zHtw3?BJCIJXLuXt4C^{Fz@*brsOVG%hpF7(GPBS6&6mhPw!_yM4XSTW9>DIGwCns~ z9J=tnco}GHNWy~(1f9)ZNou9>LT}XfW}+VQ>g?jm^XW;s(Y~;=%c*-JTpd`qb}WfI zmE<`ME1yVjNQ|=J$UI2g&r8WuCIT`zx6I_^*5fDJBcFeo$u{CuWN&mMSHE`DpAe<+ zpT5IqN4GhII~BIOtLs1VO0LQ6c3k zKz7;5UkeG}Rnw|$mtIBpvKFa)wRf=-;vd4G>TfZ=p<9xe=qpSsdCvp9tu5|5<5ZFi z(dCDSD_B*P9o(wKD(i}m_-@oMeC@ZWy$lb_ZHr3!@_&snTU7u3FvEl#%T%_eo-AmU zhE1CQdlKAz86BS>b!714t#G0Y{+du8->cSr_v zpv5~$mAG8$ftk6LsYgh^k|||IJ9MB%uojq@%K3)jr-bcQOU?+&bnRv3d<9Hy6X~?=)1A*{;Ou8GafA+CQC0i8xfQ#JYKZ16c~E0XN}& zi+D10^5iW9Im`k-2$Cbv*LLw-L5w@3e8Fyt~%HR=;C%5Q>m*@=6M~DTTWgr>x&Ha{1k|-BcLV zi6O1<2v*JR5lOQ6di+h6Cs_hP4VNL=eUB7#btG1LEPi>srftIS2nhH?Jc3PgX=PLuYP!@n{c)3s`m z(kUjYo_74eCR6_9U0F=`qT+Inmi!0%kNCFIhkZ`+?d&p>!YRx}d5)zAS7H#b>@(Y4-6V z@K+HfYNB$zDB*64(;NE~)m@-d&9Y^@#p)dJNP_=@{Zq9Ub4J$`#8CI&)7PQFtwjLr z-^t;`AokfY%t8KUvAX3IWi>HcN;4Bot$9)o4%v=NdCU`*+rUh?CRdLGI$V-SbUB*R zo~V7C?A}g`39J6;yZ4I+{b3^Zs7dm|w)v5v`dyxuOFnGNAqU@m(G0HfBHT_pT6$EZ zq2OQ<-usI?q?fUXvs@A_x$cB(mcs`}*FS>ojogcFAh2D4=dcK$@^fy^;MD>%wx8=& z##`g_M4oa1B=oElfak$hB;j_Y%tWox2r-A}y?7%!s^Iy#*$W1IAsha5{?rEiCTgZ^ zX?|0VMJqLx-I{~a5qUNs=I|@ZPB*DLxE%#DIhmj9`>sTHiBG-=+hWi>R+F7zt#jn~ zd?|V7XvOuELyW6t^H=QC6Wjb(y+|)D)*eV+Lui+uQrFZ&I8z{(SA>7se8pe6S#1Ov zI$_dyzPOu1oozmi?LEPZTnBjg@4iZj5+XN6>-E%(kfVZfFO&2MOsTdqVzMMvFEswI za+5EP=Q7&h>s95JXC-4Kq=a#w!oR-)9J!jtC#=Fp0ErU*1Ul^?SqvE#TXhDL{`H@n zaRacTwvJ?+v5WBo!W+a>*@UEjX<1#$F!Jyb^1@h0%M-#&tXL=k|k)#e0|!GdAM)1!TRcl@mJ5mF7n&xFmKM`|R`e9z}`7uL70g#3tGC?LD! z3L>#Mx4DvBOV9HWDG2fOJFT>}yeP~OE0AkX8Ksn4hR+8m6mYs|IvzOLURFN)OVf|L zUk;yZK55b9O2MeCp#t1?p6=|uze@EppKyp_1v|qfNcbg9h^0cJ;r>o^x4J5m#<8(h z0))FPnfl0;DkhAZcSI=ZlrzyYb1K$*QqU*Xyg@PgZ+DvI&3dZ|?T6l9cfrAW6~d~Y zF8>K>gumZG?_KV2 z7GUb^F>+5Mm2*b4exWxmo)NtdCnstP=7npjgf7zd~=c0QDA z>QNj}l9?hR#Z%FX6JR?@5`v%a2@-JW^4#5%nhJ+R#5YJA(>#0E){e|n#%aG=eph-? ziDKKqPx(i6WwsMP7|!+juqT!)%~S-4gb-902Zg0}`20I_^X1K#pZ_B=@ttR)j(r+FdX%>N*Itx{5_xQX5D9= z&)6mRWvai$iXd*;Ci{nl@w_becfu=(d$o-@7o#fYzjJNy` za1I5&&%ymU%)o(TCfe4)Pmmq7IS7E`m|-fRr0+e8|5o*%Lp6^5CUkbc3!Rk|o917< z8wzvtO!H|H5r2mg%_-#0=WYXz*ecs%rbPk{aZPn&Ef82z1QT<&0L7@|5&KDh<6waykO`7=B2hv&n;6A$`8-d)u zBCblN5rE31{*tt=UrXN^O~)A-$1%VZMV;+#yZD1+QJ_Ph`seFkQf}pp>tDzFj@y}* zx!wU@np-D%ldPeSQrAxS2ckE$(<({b;Zrn4nk($lxm7ZXHZ)JLJtI|SuRou0iv2Us zr&EfYz@^meB4~%KPp{iB=HFSe-Gv9K*W@gGtcnvTs!1QFhurvwm3n2}B8vDRPesXc zkBprQ2~8Vd=UTT0Y3VKT;`!2R%Z(!&hIOvR*&XerZpkOYG3iP3%>lsFxs{|mUCGL;FLW% zFr%%GZv%zb^Na0zVBI}7hJ>@1xpADPqx2dx5;DmYYUAf+2NE+miOGkb9g@FngK=Y` zwbKlZ|K=tdjHm+?7+hz1GuLKZ4=wWpBF@_Q2?Q&e!o9`0?tBhNo}4D3LFxZt;1cKR zEdNN@A4XQO5x*UTHQ#4KIm_jhL(FA!Zw4MR1nSv5zOnlrlJa6w1Rnr0i=So8mRw2n z93iIv$~qwDlfE9@iL+KXcRO87GC4YK5CwJ5dQ+Cq<#H4Rq3Nn43rWYM+K$f81&9V$ z0$P>dFp<;}>C}%AwqX=lMLrm4 zC-kyHg8Q!~vH` zaBktDii3*hdaI_N$F#$3*oSw8eMEFm;(fl-7nN@)c^Xl#6=75*Njj7KUWcDq6t03v z@!(Lfy!tPrPCgg5*EDU<6H2&vTRdvE1YRo!aYf@6q<=pb(0m=|9ZHwwtsbCSwaT(x zl9~NoUj<^-X2J=0A>3kHdcLo)`X=zr=;3%WEgP-ikt{c8DvTkIY?Q2vLiMTE(}g?* z_Kzs`8%{LBjsKs>H>6tK<4Tlytbk-9;6M?6n>MKX$t4W>lq2W!ODVO9 z52^88Y2m@Hi^fsjE%u~Wu@z1|-#)OtZp_WX%d2JwMYA;TrlD-NJ@v$8Iu?RXe(41z z%#s9Fc&K+z&>v8UYeVCpp=2)Ue3!~?uL7*yoR?%p;xAQ$X^G_Yr#v0~5vm#1lBak2 z>w+sqR?|~x_R?x0zqv>_`4?ripBgYCZ`tz+g@*qy!kVIJ*;(kl2_M_mVg*wtfFb0n zF{}8aRIJggQ|zKDwZn6Q-q&H8uG$~ZU$lj;x+G9ud^_8 zj-K9(yY>|BXnKrRbZC-~z|t9UXY9|T4C(KU8zo{m&#{8?_QUca^u3api!>Na?2p3b zCvSits6&9U{{Ev>>cBUQOr)g{O-_*UU?;k@`H%ekM35}ml+kcGd>pq9FZ-}=J4kWf zdN8W(5xm_l1c|(aQL7Aa9{q1}sV4sarr-TkX%x-e1f$~;L}}GCXSwVX^*)<^ije|d z!ZCbbuS!qE7EYaa~`>a#q4f1E}BfwpCe5@Gzw?;|L2-DZ?oK{B@xO4~kF_~!W!Mckkrog3;ur4mvtKi&GR&`UTs|P) zj&ay*M8N<}Mbr1+v!IB};IC zrch`gt~7k3ja!wu84wY)1w`3=F4>V}I7D1b z?b)Iy*Wz4CP_zZzr=Ks9IGlMbg)6+YmZxs&3&guVs6Qqy#8L%QCS%mQ z9yxhn20eETy`@yp4(m{96i;ZZ>><>0j22GczB>zjrLgPq2eJ83ZxkjN*K!(kf{*(SKLX80aP#>r9`{}i5O!WMz_`tfXQ1pMLHpT= z`q!Hc2bd)ou(j5p@LkE0x6p&&O0ek&WvF6q!*GU^MmqmqvkW-){gPHVjZ1 zt5E>xuoEx~@)r}kNtFQwD4-s12J8UK^wwVBSwG;0jY8J)BE7}Z@w>%PSU4`Qw=(!* z6NZnMGXu7kbMHTfdRfSpUhp6ci-7T(w=<}%{<96^Kec8I_yH$82Oe}$G9%^BoG)>J z{PSnGM>we378oSAOu?U)0r9$Q7``F>zU2>Qj|xBEHnp}3)S=WGR$d(M4J+SR`7XB8 zi1OZQ-mGYnJG@oB0fqu87}vL!XP0M44i&5rooj8sld6tzj;G?Ew?(z2N-Tw&;W;5=~LFa*T<|a+~(Pfhm>05@GKn^ z*tLjh1Z#Jsj{q*>TsklwDI5pTm{JPCeSAfp@;)Gi7zyGm2sRb_R(`tE)N6wk$ zC9JfpM(bZQdG9+9W2DUG6p~KD894cwfqY@r3j#wa=rdNS$>7nlP4J_@R<(gTFqroqviECN z!{fo^S1#8e;~g_P3X1{Hw(vyrtb90W)Gn%Zv|cUu3}* z(3u{4P6HQAC`=Hxg=JcoI)(^n$*nNZELEd`D-;u;%X-+wdRc`6y&L9uH!e8y3=8&~ zu1GCk6DW&6BM5ZC-xTuy_4fZpLGX!QkFo-KlX~-_+8U>0aHIGOZ6opu6USFndOv7I zaS1)py13ma<|ecBlz2x`OV~YgVHr`~L-mTvS*uqEY$v~dp_@r5xd`E0PVX)+G#e5c z%3_}6$?`Pt&NE1^`SVW@{cE=Eqt#9_STroU%jS0!rh}AqK$jJ)WraZ|kSB|+Mtw(K zD?cY011gS2El7W~|Im*POIE+-^87b#C(G1rlQKWI8@m^MC-@|e2jj9|ekNPWLv*}M z{P(Zr_>hFJ{RQ6Ged41P>3GI6WYuK-vD7B-2-opb?QHS52#y+hW?}GM!fj)5{6}C> z;>ilp#Kc25XULMD^gWCW;!$zqdv}E4_l6&Vm6Csdcd`%revr@a0|U3|^{t{hJ2`Z1 zNyc*%n9>SEtdqstdZQiJXl+g(W~w0g`HHYi@65*8@0N;{i&G_E*8*75X^FbERU{cH0em4{O^c1bJZMGwA9-n(E(>BB2{aUX1) zj+xw)k62(`_RYfGGE)a2)SRZhdqm`;P>C&Gnrs@5o?uRqTEBWjHXi->w+Gtew%Mys zTi1rXQc$cCvVmRr!74K$o@^o8urFcLL_8lLdS7bniDM-3ZH?a9V6ZJSKf16|Pee5c zUTHFd10d$X`-5ZP(oRE>fytOaueD6} zW=kvL&~r$tYcr=unp>Av1}r|3wzl=SHIEF~#bX0;XtDvmxij$XuiIL27OVr0FeV_j zVbUf#K&VF;+=iy!cPobWOWuZ-vKCdhFPx`G&Vc}sBM4a_=MMq4@U6H1BXtkCQeL{j zdNamxR(H3RqM*6*|<|#C#CWBG7R*_!ThS$X@}b- z#lIbt180PJ2xzSy-0Y@;f=78yDu&5>@+C8{s0Yu<4Wxzmccy@2vc>ZB_zyBD**dI7 zJ0~N7`8*R>0@Gn4JOU!{IR;#Yjke$_+w`<{h=?ZlA-D+iiuB}M*y_A+fRR2+NslGt=G@|!n}K%LJY(Fq5ff)zuTr^3_d03xUjg(BTyLZ z{7don$PCUDfXT^aSp;%mGw|`G6IXm5vN{L}u?P2X=@}N!MDlLnqk4~M^rLzobgDo) zYF?ypW1{x7d5NI75@_4@h|?!7%1rXt`UPvBc>gW->XO>~$=T~puuSl5hK%%D(POar z_DDiZ>E9ll&v~~Lbs`0Oi+G@0XMH-FvbTu?_wDjLWc6?gpO`DNb#vZv z0`6{`RWqFk1D{U2#|_s3;JoV%drd!6!gW4}NL>g1@@IcI&UUk-J6+LnwU?f`Mr7Y8LE?crcaF$ljYX1+7V|w zz*02?MeNh4hWWAj>SuMR099|OTGzL{alR6kdY3@&cOK45sXuOYc%gnk`tLWqk|1^Q zs^CMD3i%Gvq)^R=(doO&*9z1Ti*;S8682oF>B@@FFoBSx$X3mVK;4#A=?l)y7#=J; z9d}gz*8ReRN*GkY0qym+GJo6XNk4-n4?;3@;6N+r(1Sbc6#qTjfl6wtVyP|kQ>=H- zhY#B0_)2xwp#H;B=O{DoxL2X3^ja^|#RGMji$3s`r_Qb&ByE#SFxo0h1@A}*DP*JW z^*2Rx+N__=^zQUjNNyB=83jMg=PZ{-JGaKg_zt5(G-c)|`$*V3Hi z^U~h|^8UtmU`@wso&vyHmuXqK+uztrd2ebBBs|kG`=dGTbST0ZR!OmF4@ol!Y>9eB ze(A4Fs@T-^Nx2=l`Yg6$G;e9(vtD)x0*_Dzc?(T|jhhC~yI<&DmB@SO?4XURzb4vp!#$%tVgq$vx6J zSd6^hq~;WKvFX@%m*@8`f>|PPTvG zn>S+}clsV&3NNhe@yo)GMQ))~d%3Z`&_zibNH z9+xefQ}ZPeB@mt9CH2p4_2_R61)Ew+kYeKZR_uR@+XSLNC|vHwHC@o2-Xg0^)D+@S z+|Fhj_Y&q{=D4n@j4n%@p9b&i{)OT)CwnDjS`7@8X6T{>la8N?glg-qzg$8su*R-C zNxb{hk4{Z)P-ijLg1Bwb4E1j{waH*&L zL0nybln)<;^9|l1GJ0c6j*}3&{fRlR()$3kj*oD2n2)L5saN*9_z`rS4-0~0MOJTJ zT8HC%DeEbGh_q)FF|xs=w-v@ASQdHQ%A1w`0I6pkW@QRiwdVHfD&F&pa~40PPG~`p*d^1eM-t9&Fu@ge;onk z2Oqe-H?E-ve1!LN&EH5gB#P_H<$xwu5skYTDuh>5?e@vmi&N1?Ce53C^RZmISzYHn zF@~iGU4&g`Ec}khamQ>rRW>etZ1q(p_o+Jzc=&HJFW2h-JQ5vbdHe^ZHZ;#UB2ovO zKq>oOaITgb$qr)-eHFh7mHaI z(cRm4Mkn3XZXeqI9`+xw*DexBzVkn_0Yh;H2wCQ|sa5_Hn{n@trJ-&uR&udC+)@W8hwti>{ zlqY^r9dyHyN8HvG0U4aY+t8*V%fb?+QNP9<=m7M~VT(#LlOCDs^vHT;smC)FFiPB2 zVTp?oQBkxc;I5J*E1aL~M*>>tfaxz32r)`htjFB2bcr$C zf!HXbh$PsMG@~?whg@pKN(65M4%4PSz_IeD6rrc)2bFSC1hj&)AT`}INb~3f-X8Iy z%T(V>-NGh{doOihJ3cjx6ADR_`3$LQpeCTz64%aUjbSczKrvzKIZba>bg;A^V_Zq3xfmAl0xYm3Bs^Yw2Oy!_8&`+9JhjCQDNj|7i5WM6h ztxoVTv1w#mqhd4~SakluK_C`!^W6WRVtuo7HH{)`wg=y~OV2L=8l~3Zk6L9(sjQC` zil#%(Ue2~W^w`T|$xi7oWIEl() z_n|Lwg{+nkRdet$Xn#4H62Jx{o}(+XMV(Dh?nZTM{*6>Birq?x+ZdkYDzi#~z6d4A zn>OUPHu?H|NOe+m;R{<;YY79qJZ3}g^hTT@@$h<}yP5xgwL927fFE$SoEBQ(XIwKpO`l8tDA7sM0peECYvr9^(gMF?z)nS$Thpb5p*9yx3uj$;gC zzG~1gP^|AGblMJ=aP- zJ-1l@;SOJv&MN~Ik8+YLuzj;kchGTMXjym;WqSO&PiUmX*~x_dAPLPNnGsM)G#W|v z?|)P(Z8#aLr=smJT~Yy6oIkV0-oQQ!Ec51&n#pSXoH{U1Z40p*MsTHFSOxc+!=9A{ zQiLSbEF*Z7u2N<9K$1{p@_k{Y_9if4t0a4#*0TE&z4}Gzbrl?Ugg-sEBr0VPbko28Zrp+idVse0#TyRmVlD@*Vb%I>M)B)q*q& zPe&-P=#4DhR%V&$MZ-GfHEx&CGY zPPR9(7S*tv8RDeG`-DF@c)4O+yW8gI0#9TaTMlA(3O2B`T}26e=6g|ywv3}Md+o?U`N^$v7d0JwE+d~`ZrPXyx3*w z4zNR3ehLlefpVU^2_@z_e?PAL@pc#uaoZ3$v}7bB2#5n=&!Dn-8R2Yv4^b-sC1O~N z^?vm-?L}1MO*!tWD5^;FXT!I;-{HBlMGSGG_Zlh_9`K`=0eoFUxb?4+Hvzk3!h6(r zBk$h=>Z+z@UOMh`P}@MY!vO8<4+6-akLOE-QB{xEwzAm-cS_o{4QO+z?YBV?Rce=i zU01L#PqaJOR{6aJuaZ|_gGhwaeYA|Naff6?$Km*LqTJ%jmi-AUg>KV04olWb#%l&N2$^-5OFsqWMSJo6IdjFb^N>LiUjTd;X2jgD6Qalzo zqCRs!E&X^5#T}g3yx7m?xLwvm!m%4qyY&B%b=FZ)hHbY8Bt?N4N~KFWMHr+*x{(Gc z5fG44x&)LNX&3~hk&+IPp=$u?l9WbTKuQ|UJ-+X^&RO4C%fDDImy4O_ey;o4d;d0G zz=wY6Gr9m{w-3k0vwtVkZCZSBu7P}oWRblif`c0O0pfvB$M*gv@#4EM>eZv_wf5^0yjS5zcmX~> zDEwJj`%T)U{ZYIvn$9oNVl^Jtp>q1MFKp6p6E7OkMpDeQ136V=F48fe^zYL!m{Om; zB+LKwDamF%bQb&X*R3M9yt>GcIUxaQeuOqrxPcqk!)TIIqs%eP>0kqiy^+z;zSLj` zX*79z@ukdedoM2rINM-LX0*Rz#890cFCD;i#*;?wM*c03by|Vho4VcNZlWz%o zr?Rt(`599t@`wI_!8~g>W*fwNZ2H(p+(_;|2~Fn>oFc^q)a+KHWT1)zq57Ofg z)6o52_QE}gdn|HTFw{CXp*~F5VK?ASaP(-#-vue=(yG?b<#|i^Grx#)!&;jZ6~ah3 zoKO+}{olfv`y4Z1=j%SDHekLqZbI-Sjui`c7y~N-VMouO5>mITQ4j3RBU7wrz&`gu zS6=lJPe{vB@I)e3?B@pEr6oq^X_)ycg~$L!#m9czCCfJPW0r8&Qg@N!Q&YFEw<&Rd zqu~mz*7hFhii;<{=RP8Rr%$6zGZgHf(+}O zdg^z^s|2&JE&OiS2oi(=v&<7}61HGeuMa;$o(Lj`OB_Y}7WIKMZCz}4?UGFgaHVCr zyMOJcKQ>e5SbojcZ9GG4ip@s>(7QUCo+?i#=gPrHSgXQh!5|;KvsPL_*9mZ1yiYf*vo3jX(!fBgeU^H40c& z*fyT1(vjn-xI@k<&&0$=EJPnDd6AW%B=3i0(QdD)m3dU)X zg077_wc8Lm!`YkXp;x*N=%%l?iCpCHariUJTp$E@dTDNZ(FLSRN#Bt`jY6@xwi^H} z`q-$_AkzNEyQXmagp_T-AWiOal^ZtT$gP7smgC79lKq8XeTZ+??|V3_v_vacT)HE=tmBr=e9B`MZUvI1{*ErX01mgxv16b|hG=*M{ z-peL2my-ugEzVe4M@XCM>R%mH@4qIIW@VL!sq)xhFHQryNt0cRF>>*$wINocoJjB5vT1D>b&9+3ci0nV?86VHH4 zjuA{WHDBWieo!Fjy0O%pu6pMo@q{MxJ4bm=^PkFID$dHrW(fN3`x8$;{$h4tQe6}4 z(n;ODn8j4Q;5oz#v+YfASr4|pV@W>OagQt@2ty7~9%q%BJt;)Fq#4#?Ak_ZDP-mmYZ%xa?T-7hVZ~mUserN4>e!ie>`?~>{ z?@fDJfs9(y*OgmrS7iif(EE~Gb5XCOEd|W{A{MmjStM3qs@{speR#&Hs@jHWDQ7eu zn#-9eg!06F)`76VPvIZLT-0Pwf_~_{@DN$M^qS_(y>?zA-u!&q?NJFYH7#yCT|l-5 zWa*LMZGyEoPK?|ErPXi2J0mZv>mIlTe3gp3CJFg_ANODDAOs6fcIf?j!g~)3N!Ekk zFV}|tf&!_vrpVB=XW3y~;aCxV)g&x4RKH^lOS?mAM@n&npdHZ8g?Kp`kOn-f%0^4$q-#YhZqZA+WC#yK{(3DdImAP(nMAK^Yh7bGbBzOBE|IvEfn%Tf*W{XIELYDs-x$y`ID(u~s`3xl zjU}qPwt)n5{EjuL{Dj6&{r5T~L?BW$yM)n*N>gm-V8TxV_5A<(H6vZzNS*Z$nG}ju z$?!u-lNv@f#d*8@rknS|xIe>M8Z+lvkf*Jrfw8kfreky;j0~WrzZs*4)0>VPcOM=~ z{nF-r$wa6lG;;s$rH5qeU+p&i6!K4dxyBTtJQ*GRJcRhkyE^2bIgxc5P! zK5kER;+5Q==V+^n-z8=pD_X`LX6Slst&*F-suzCGR**;-5p_@HBMCBxc1_w@t=58% z9=eh03xh(ktalraHG$>9(i4x>nhB|^8u3#}YvpEWXXk^SQG;2W%U`kh+qouEC<(&Y zcj94zVZ9)bHEvWIWS%uYs+idITa!>(*+_Ln8w>aU3Q;K=)%1mG|Z53 ziJduJw<)10d#hCV1$Ua`OQ$oX7-pH0$Mt)SUvoc@2^?Z6-M=KLpjz}2IDyL}dsx$% zc1CvrWbKj5;XmIN&;!J7T^R68O|XWyd^z8*Dwzs0x0_O?KgJ zfPlLOz_IuRYWh44!Ldzbl|BZGoZp3Q#>$+!14L$17_H~R*II-*xm1;lh*+|4=gr$V zlj*ULf_>K>PI8zkmuqS~>^|8OsZzMsyL$){xj|sIDdE(VhPuZep@T5e{xn!-R>|yd z7L^SwuVRGNYkq_hMJ1-XK}oq=bmtXD2jRPXj2fk^-a*PPyOEN2j(vcP&r`TT!|SGn z+Ri9Ru-mZ%?i%u3>RK$Km7nPGTU~(GS`qOH*J}(`zpA|K&<|vu_mEdIKUvrHR8z~7 z%Mr?o*Y!aDT$$ivK>T%Ak;j_+nr|Ls^FdU+mcaV3=;_u*Jm^wK1y-Y~!TRx$qO=ub0N?g4cq)L`?dl zu`+Chg}f~4W;h{G<`&F{pJD(-)shm@5`>6|0YlYu?1!*C=)|TC!g0pt%;7S4e?Dvq zeD)Q{CRyp;s1M$gK1VYu>}g1~R1g~Ydg^0?@%VhifEFGnet)T}yt|uhX^8uUm(ieZ)N5Q~3{>LaGIgRlI z!@Aomzb%AT7)X)&tnb!`ng00_rk%dBvBgGN{B*7{AC=}OJexM0{PCR6aTKrO0d+An z=_u^9%xFCC4f9Rm&i6l^IFjwsecY!Om~Va^E?tzH6rES!5N)=io0W!S1`gYV-qwAQ zb^06>-0fbYs8ak)$c5L2?H=ApDR#Q~ZNR485u>R5*SYe4Qz<2gXN#EiF$3)@)?2*4 zCUn!2kl#>)Oa+u-!L(lrL!@o}tgN)|J|$8^H0!1(*vGVM`kVwAb`!OwB^sD;2CXrN zvHn;Z@dO=~&nr}if?z(7OLdW{XU6bupZ5vYMY5>{QDkfnm#?bi&4kiWgGQVcohphS zja?sm+#=@vs!dhtiv4R-9yUogy$Kq|(t8gePuT{XX$1f?6A7Qu;W*YDE-M@Wfb~s0?U>59+Zgk4=}Q4f(Uxn5kaYn4u4~+9@>~d%i)-pduvH z!+%`e@aP7}2FV$=JPt(_Cc>=gJJmvhZ1T@@6ML0@qCU@*-AP{1zdQZ%@%0V+BoQ`O z_NISOQMVBHD<>m++e2&-0a4Q%6t|Z6^qc>gwuj_`vjQ%qJ)}536-RmSAhZU z2j@*zbn(rzBf5SLA1MkpoujF+p|c;EjZD6^m^vBzsL|5BCqeD6-9W=Mt)m&_9D;+1 zvhZ&F>b!drD^H?=Dd3H67xR9vlX7HCo090bM&EgAB4>)QT9z-WYQ?8{Ms1p+j(>yg z8eNszQOklaThw+Gl%M9Q3f^DNp4O{o-PJELjdrW7zJQU#X{ahN6CF_P|402n|Bq(x z!Mwcs-RIZWh!h{^y4*gW`zbuRZ>dxrnoc_JX;p)?Ik>3aRY;E;t9q8m#~sv6P)*ol=NZF{%MUspna?+&2Ti3gT!Z z1m#*w=u!k|iF?=1o9dgyOjU*dd#ga~xayj%(LoI___&qfW zdreYMPDHjooPX!<(L@(2rFp+6IVk9&V!=DIm!Yfq{gsD2W=S(0`ftiQ_?RUX4Bo=v2Q(xg)q1U;hGHE{q|+P8 zXXj~BX-gc*JDN)v%H=xo!{94%f``7Kep5~`uY|pyj9K_%9N`$oB~^vINwPTKvT(EY z%e$gkU`$Sa>lBtl`^RM1!46ZgT~u24!t=F*NOiWzb~FuUUHyr=JaN?w@S!S$TP3rc zKm1+48d4O)78~b|krd&*oOYy$w1HX$$TnxvZo32~jC^v8<|LLtuhSsu*GQDs$N9)? zAfkS*IIJ8C&ogm-obOt(MG=~12K?Y=nMqs7z4?Y|*x@s1yW8K4-U121KAb26zA7>3 zkf$oA-!armOKh!_DC-L-YIzawzqawfPzMe|q}nsMlY7 z+e)I^hL{mI`KXhRq4^`fX?4ZCJ#M|EqBS-I&cRneNw9kpEBNkY7gIS`4!O>{$9_9+ zi_y@O?MKw8U=vhg=WIpDk#NCT@*pBdq1mmi%x%+e{15`~F`g&{I88>JXT zo{qi8spoOoImJdw#Y6?j3RITAnS_B?H|bix(^7L~w5X9$k>K&tz`W)b)qjjR+v6@z+iN>7 zm+XQTHNV^DPbtn-BSfzGS1iOXfr5?a!&DFJ`SJexkO0Grp7xA-II<5gqEg~>-VPU6 z-^}O7mPgd|fD`QOVlB*Gfjr*3iNG-K4eJ_)YJCX2R$>vPA%ZKxM*+C_Jx{m=pCxg= z$vG%N4`WQn9U)Jv0IhV5u3&}~{)kWv{ut2+BZS_AcCQB!U8B^gE;3NsI5u&Qsk#wJ z6WQYPh|xFSx?lI(DX&s3dcN^UB(REh8>rYI#ViiB0+a$I_e!qPwze?0$X@O7`ivu9 zsh=-@^7}6mi|xswMoNGD)$i1~?7(;)-%9NCGgG~mA}UW*ViTZO0dj5Cw-=@yDV!m1 zmLHLu*B&D-BHyZ>PpdQEZ2(U3za|$1rTJ${HZSjnhvRI^2Yo5#p>D!l$6ZqG^G>wp zWpa4kG+qrjYhTxcRpUy94NQ;%M<$@KwjZn-esJ2~3^C~Z6yh_0$)r+&MlzlcR5nt; zU#D@deh_#W*)-LV!P4NTD9x@|@q7T3=6aif-~b8Q(B59FEoy-#!>CJ zN~N(k`(~_Jf&jDiLgX{626|dQ60u*gQgjo}HM1WcGe?u#u^V@4_jC#kUo)Z z>P)>hI{+=h4#oS`=rSrtbBkQvcl(oD2r^z;@^N<_$NN25JK&yRBgsx=FpwXZ>l;|K zHYIky?`;3;Xr6QaC$6aW;cP%RKSuo)@{|cUdqDJP4VkGvMc0kKl1o)+k=HgDROzbz zl1{pE4>9!((5MEWHUV#8Q`H3%UCO`DU&_CgN~L*n#024b^JV@OKjaGX{)B!i#(@n*m4{P=qQcQ)DJjjG$uGC#BG_9_Ks!)skJi zyNOXR?GCF;6GxikH%lWN)n$Z%?Jf`C=*45Ynom0T-Bait*pdU3m~R9)a_gQI%fU&` z_;xBkww%Z@%5juli>@|+Vy_JlEBPKEAB1OlMz>T0hA!#bcr%ZVY&yMg?3QQ+Wgp-< zpXp@enz6T5ixCftRD2Ut`b^uZScydjrdvnPxF6S_s&HFfTWC#dUsWWb;@g}2u7OSK z#hKlfY0rI1K}0p4;|()2XEfAeGh;>%Yy-`xCdgi=i2G{ta7gVGO&UwQ*jbZ0I<8(8 zvUVZ~8SiWuq%~}K_VV*m*b64`t46=0aBTk1c_-^9psCac>MZT$dB)vrD+)T_+$U7z zg04fiLG1b99%n9VG2Xf+%&}=M2F9Wv%2|(L}YbH z?rxvsm&iJ#m`xLw6G|nPtn@5@@<>F1U*ag}i$46){F<~61NEo~FM9SlzR&Zi-(dQ* zs@Puw27iI1Pn(WJTZ%Hb)P5VJ@sSZ=x(aO4@-c7fW3~aiH#YYx#`J-Ow+SS2?$bqy z3rtu?i|K;;fT!1pbK`l#L85B@lcumFs>3ZrcTcrjH0&W|*P}L39AVq8!vwTLKvun! z;=Ck9{h1m~34u=S`R(a~oNZ7c9N*y=okWxQ?Mdfn4bfTQBp;UNubNcvS_Ku6u6|P` zRJNA{?#(q%;~f=ir{;Q3?OZU=O8p5)W0Z3H7Q#EB~~zX&ns?;<#P{bKu)Ntp!;-K z%i}v^EX%-s;d=;VVB^OCub_qEU+J%$(XzP>R-6fRulhmwCe8dQ;U&BQQF7=I7Cd0b z0$NJ-D?>B?J}}}FvJH(1964Sb-=wFD#Px;TgI+g+^tcc0tEULga2tgBOB5|_ufL;! z;Bz-_QKbjZI|Ar#vA@5O(Jx>P6BH4>%JS@>UWT6*t%MSNaHf5;mud3IXvWB8j_BaV z0p-s4l8sxL)L_HdF)aZ0MGJ1}-xDw})pN5TJrW}d@$58dSEO-9+T8I7qA4)NzRd6c z7+o}nkJ(~a{(}7L-IUV7`ezgrur>yHo2o77aT=xzLhqN%Ov@t14@t9igx0M_3Pq#I z6#}bwY@{zYv<@^4RobSHi!hVXqYo!B1w$m)AV9*z{)O<_?~A10JaQyuH3j!|oSAK~ zXWhu2K6x9J8^&nIq@o*S_onITUAYK%s%c)78Xs51^RDLEt3dv}b=uQ8RbuioG6_yR zW9|^9-&_>3a0RS4@+$abRo=5;nJ~31cJp4Sh=szd_=(bwe_LdWi&!K5WZK@+B>q*` zzL#UBIrcd-pq@d(uA)9OU{Io8*kJ%%lR!ccFm8nxuN4e$bOuQHzETA*ecg`Q3UO2q zXV8Q4nCLaE{! zo;e*eTctInSLsnUFF(@f-O?O-O3A03=Z<1?y`G+E`jAodl=`w1T`_T&9K~S}Ghwvs zOOcg;7K+PqD{VRLKxv;{?%zElYikLqK!|4ve*Q+A>b{ICC%=OA@X1N3Sv~5ns{$*| ztJ_~`P9wpoe*k@eW_4^wo(2SP^zR-UBy0rRXlO%>2=CS1CjM2`Zx_ zoj&^ZI32naAlFYu8)PpwypG6N+VQ`FYDG>L`lU*)z)FNdv7@=Xw9{;^=l18bYcAW% z&*=%7Hrt!Kfa4~KzQlCHJeB{-#~kq|2_n?iC89U+x`iu563Y(Ie z(+m_J8XI*v+@@^t!1ljh!L<6#p(&|Ng9)u`eddlTa`Xx_w? zn5KHsTLJY`<>Myc)p-G#*uwC*jO+Atr*|CM^p<4n*9mVCnK%xoS5rDGs*GZK`@}bd ziI3moN+t;s`Oddrnx9K1s*ep2If+$69zPP{Gs9!X$Dw=DJM|Y|4w_4vfBC2V>$bjO zE@wc>5uF1;7M60{P>Hm-WgJ8x=%ro^S1rxS%>*L3Yms&bl7 zgmQF?aj&(B6*p>Ly$g;|zAIH!liNw$q48B@_%CL-7s=su(38raR)S@eQu9nE?P^1b z&p6ovdJgo%Wtc^Rig?NDHU?9}xmIX7s}u{A*7Gh({aWuVnkg&1XpfFrsPzqmub|ou z7^)F?$Fb1*9hS9vuFfaAQJE>)V2W1es9t2AEC(9saf8Bw)Xt0h za!LC=b<|rC$GZ&6b0qIr#<2*?`mc|=&&&jy#k`6#W1wp$)D?)|ATic`nOvLgmd$~< zFo81!T%lg0B0gXf>pF^3R;`sfAGE<0lFv&G6j*0U3vJDadP7>@X0|>wXc|3Yc4yq@R1P6~`$81` zX_``&!U}hB5VQ{_yfwkqFD?33*vR>s`|k47r61Zm?8hH-ZdMS#DOh7GW%D}2sfc~% z%}d*#+31*oD;!q7qjww|pS#1It;ek2^;Ff`0!WEdvg?>`Sxo^k>ZeNO>t2lS*?z6u z+eDqWgEz72r!$WXwR4^(Z{O>nuJeUn{(Qfu{(>dPQ7$6Qx{LX+OzabZbVoz5NO7q*{sbnj6pY>OY z__O0cw)7|vrweRmn?_6ex7b<_+2Y};3JnHRQ<&Fh(yLc#MPyTucTiEN!mFBcEi=8+ z6vxL3W?}E9jjLxJV$eZh;k24x*)QRPEO0(%n}Az!70WyThx-!KsnRBK$*;Ph>Fj|i zN}QOUuOE-kYpVK|eO;KXB`gAqQB{9I9<3Bqz>r|cs?MtXD6iyVv#vOzj-9&26D?{`7bNC%_W)n*>+_ir`VRj1A7>ufRLeQZ zeaXV9f{M4Qe}3p!$H-;$Th7xrLl)si)A)=5$P>evYfu6uF*q82MqdpruRwi=LcqlKmGM%Nfx^>u_^+QePf?q^MvEUt+o=zsd$wIPZJGk1>O0G0@kWYpX z!#9=Ovng4!!&}28-ctdufL0gzaL|Qq=6IZ~+*SvGG>)orT( zag}JUuUeaGc7k$Da5gt9*d=){H{9W`_>rg`TkwT2xp3uPt%w^D^LRlnT=Ay16_fsvmubOe?*?-|U_6#M$|IrsyGFBH^OVFU% zR>x|EBpxF<3sLYkBzvW@>gqW<4*v>=u=XTY-d~8l!yKmnH_H3gz~iwFC1!*`|1J?# z8o@E;Fb}q+Gw08_n`(I%GixKfAe7TtlvQ&D2PP6poWjpC8^}G-J>_PqfYwk+6cODlr!ZSrzmOrE9VZO(Ab^=NV~yLK_#*b!!u5tTidhVvc+NXmQR*y2~oanJ}jjl z{DtxV0mtIHhlvIf=G_FpC^hb7inBhNEmQEG4$Km_GeJ!4pfyyhp(o?-GgBkD6rBD9 z)YW?_2@U8#I7&d)pw@*|*;DGPe48=z2u{9Ez>fBZKQvCM)Gt$J6Co}lEB7{nHW6$v zzei0Y*VQRlvErXjV*kW^4|BY^__j&Cd1P}fB!xwEyXi2)n#u+^Kj+5+OmSC2-xx(4 zWL%}33@YASCbi?9w=395R2;de&X4lw(Fd zu$GSLWYbx*&stO|L2Kgk8~y{nVS(sm9un#d18xbj0&;~-aj|C}N?%2+J&?^0!Yek~ z){werHUpA93$jD{<7^G@C506ASwq|HGW`mxv3uLv1JeHnEzpL}gyH=GnJY!+854F8 zz(U!|QrN{*rZlkgyyW!i#x7^aPQdd9_fa)-*-XQZXk+3L)xY#0Y&umD!EIa}c6%=? ztccZ#GU6vyxvFu8?zgy;FMmB=EZ$QVmgiwJ*5>|Qj?x^`H|>c#A(c#|srRV2K9AGIbzOJv9pP^^9#5R~oc&)XTWFl&5izEoK;F8tkh(F+MD8#?> z;a7>@cSo2n#L1xrUrNsTcEoT5QO#nf4mC}o ze^sAwXIT`yzlOyi`jv$FWE{eq*ZpRW9|_W zB9^$-8Hd!%kW&3((N;GS2x_!X-k*?8-`>O1v8*n3wiw1oco%jDY%9_r30dunR;q*t?p=?@V_kkYdFhvzj~_UP8VbolVlFeXr;JDn4+dUN7a{| zJhm9oV~{kn$HQhsV|TiT3^sLY$_~ANbHh%4qS*#kvb!E?H4B-MB}I7kDnj9iqkysg zcbJ-`os^@*RVUzJ@Onzabg?YADo)coJF)uB+CuO{vgwR%lgXLhfoV!N3Q3MPHA9}; z8k%WWtT&yS*%o%*d!|+tam_dYJrMhEg|Fo^auQ&s0@|%2St7_aXeN>6iW2Li9cS7J z&tPdsxJ<-4=5E-ns_Ng$wk4A^dsLFRrSvoAJ(R`D1K?{;+o-V)3{dIQt+Wt6RJjj`_Ln^F;ya~<~2{F z0^SYNv)Q}PlNa>{#YJ}1hYYuB9GMOip1Eqd_3K8{&CJhe&ESeX3*lxI%t0$~cB#9v zxTz3MQ77S$gwvkDK9gP45k!Pq86N(iRx7NVU`5uxy(c;ovx4dgc-hB<6m6<|X(rG1 z5+t}HsSE-x2s z&BH&=bwjTb*)TKV85-@#v7}*w!|blJqi4343H=7%MMg3DFqEPdSI=r@+C>dc-?uzxN-df8N= zRghryn_Kv-RW+44HoHyeez-DLxsQo((T5gMQo_&t`40#LDZN}T^Vb@mM%wcIYV5l_ z%sBJfZQU3=|5yek`$TFILzXWlom$o5GWVJC>?t_zhDck7oz` ze7!x`|BhxdT$ZH&MuuowDHXB@t;>G-14bO2gD2Hgd6$>An-Gb-SE6LtEg?QF376qf zB?mq7ydeJWQ_&+QTJx>YvI|EfDT~=)@jhW&T6$P0nkKcKCzX6%IgF}8!|hk4_naPQ zSNe=46_7kGV8H5gKw`Cm&9sxO0PUmIW4jD`^Bz0J#z3fKb!`cC>0UoC6WafxjM-%iQWj>v%b z@{#GYt$KHf5vfht%qq}9=f5BDLIE;Ou_$+R_R5gT&{{V`VPWV!GCs30pvmlpN~|wg zTN;p-rar!{H+u6q!4DA|jTL)vKQ0xWt571Mj$RUzdo=LT93i}ARm>6noK_sna^cAa zr@OvSI_i&xqFD_QvPZmEgMxA2ssY zg6v8XWO0qx?Ghs53!pje*b`dC&bL_U7f%$7G%UqIKJV3ejafS36-u{$VD2*)Ap_6V zep2(Z8a~^Cj)k4u0UTZ~Bz4uL^X+K{5Uh})F&NKFK@tx>5|Eud@AdEe6#lJ*w)6hSeir-g)ESx9P6afJtD@F{zkKwVzdJJUW25$H+;ZB3;qbe z{zr2mM0kb}l05H-`oc|^2DczgtAl=j_4ctn@f4cD^OM?d{R$4=FG^v!I8wy+`dLIw znF^L}lg#%3+Shcy&Fg5Ah_}U|!2jFv8kY9fJ$+s+BgXGc_bQ1$2=rvv9LL`J5Ozoh zmny8^ZDq@Y>#B0n$%S*xjPXnxO6#@V*1<>lOn%guQ9Nu0uli+DgfdK zEw&%TRqZe@HuICq5AnPPXKqkoKZNdY(hGNkY(*O8uX~aK-v)Kx=fMh9{-S~kkH>6c zBtN7B)(4MoIov$fzRb48mSpSV5|h^w0k^(a&mP;KE&`^!*Cy)v=$)w46-;AFDULTQ z%wt)K{en@T^w?aCYlEPXq1B!j&C-EKIwsU)zUYe_DL*4!O7V3L`JB%B+)Z(7$K=(K zxN~{YF<&zSA=<2iu7Vp$T@qfA%ThR@0=KV$m63&3IPOMVJ1y)IW)w<0AS_*D^BH-edBGVtd8N7b-8dD-Mmx1vN`wHqDD8}#FYWELMreqh#iRM(_Q z3c$vG^6b{qx&}&V=J%(&^Rr${wAM3~M49imiufN&*@t#^XQ4W$n~cCY|?0dod;M@)8H5KI$5c9^-QVYsMwavfQN z#`uxqwD@k_mmP{W^PI93GZ1p2&Ojx-Rhn9@Dv7EB9jWA@ zHq|X?nJe$XBjQzC!Ho4mlAsk0gg>Dd3dc7sZT|@OK3We~J9QDRj!gX})qy?iVb=D$ z@Hh=axZ-*Am3Y#Rsv;cC)+JATL^X=K2_@mo=zAM{B1>dK{0EmT{#w>1u3(|A0}Pi6E`*SW$3r}IdE1X(nIaS3LOUKQH}&YQd-Z|QW5~} zT#b@44b?LQAfKO(*SK5ATRx$xs3)JoU}^_7MdN2nBLcf5zx;MeTuR^j%y7w(#8<+O zb+O~s{4;-9ALm1|hBW?!HP|+5V9*3qw$yL(f!33?%lYz)IU=%mcT=+L_KW2+Zrkjv zu&*NPRle@ddaHwUD3}Z=*py6`lOA@<;WCB4g?$1HR zX+e;Hq^QJB!2@a>=>V}~lN8bp^VQrl<0a1nB2t=QOrVJ8jGSOSqHv&$7P~)9G5Z8O z2BFCc%~m^3sb8NDB{=#Q+4T3O{>4zLE&;Or--#;pKOvXNj(FV0z9Q_nSo|Xa zEB4NNVoS+ZI#v#Zo8|EI7TagUFI2ga|KDS_FGQNWXn$xbRW(~FkD2lJ!T^_uMO-+p z)m)5nta1T2Aq>g$gesIgQz#8r2--y}1e4?ZsK}#;*5>sy4l|-Pgxw}9B|BGs4%KsK zX4za+WZYBNo_fD?qy4VROHIAhT|%uuV0ajRy~o87poF#hFpRU2(ytU)SEr^_+n)X7 zejpXRs*gjD8T(kW8BN%@e$dmzIdS3KYkLcL#3J)b=(jsW^J(_&jxcOayaHZTGETSO zQjCg6F5OHx4>WC|iq#Yqlxw$$Sa((Ihv>ra(rm+sIBRG1dv2CVY!z?(R$|bwNVNCX?9rv()^Q*i@cdcNPd<4Vqv>#bfML8^px zR|62)3_rt=NK{)b+roB?GJ?#=q0?RS(0Rs?=sQZ23Z_N5C)oNfhhFC+F6|q|Ebh39 ztM6WWb8~9an_|reVz~TgaueEq!wlqR^{XYUas_X<5F$N~6H-2V_A|xWAO*8^ya#C2bhAENg2xX?S%d@^MX`>IzYo!&MWcwtJHZHi@2XZ#`;ebruY@{Bk0hcCRWqXuLy52eSDIOgfDV@H}AM6`UtmxJs}C(TzU{Lz02z$<$JjPn_>^Rp~To< zuzsv1<2q7889}dSh}nGU9w^C+PuI#&+SP4}xnJNGhfxf8XyM2ZcT@E~P@p=Vmmc4Z zF%LWyo`Wstcrf_!1OR+p{_cQ)e4S5%#)!LJ#%#Wa3{LHyU{?+}H_bf@n1@(*SVZ=( zeVI)|G>HVen{?~Kv0}9kFw)zO=s>PtI-^p``mUVx@H&QXcD*fm=!TY>;f#=HLZ!Ql zGh4rsgx{cTJ}`ehx2gK9IO;`4JUKJ~?Is2O6_lJ@EL@4^mr)lT`e@?5352bX$b=9J zQ9)FY_>dcAhu|#AO*)U*%jf4KQ7A{}PJcKk3qXk?aY*YFuT}jYf6dW&hxLaX4w=d5 zL@w=5IUPc5Zzw`2w~ozd0xTfYXT~!r;c9Jq%`G}(cQlPOW*q%l_7`@{UT4roQ!L(r z)HgN5$lE7nDeNEID7<`L#P-9Scu8Rb9{iSk2UL|MEbmW4lUbq+D6s09I|w_41>YMz zB2+B=la4i1hezOjKzm8b-UxVNytfVe@FWZGtcm5M{6yt<)X&TT3f z(lme{2@;>bXYrw2W-KMKKVvZnlr3A$k6f9dARxpD-)m;Uf=Lauvs(PSq2y%qQ@ zesLd^HRM8KBhF_nnRJ*JD}YP+IbZ;=zDBgcPg$+u_3%6-YvRyK@j0aQJ)9?ES7+A}kbQK8Ca$o>CY%c!0Yy+R<4PUy2Nq5>3omk$2{!t+4 zB)uH5%s!-Ee1I)TAVZ`n_hQLb&a_PC>sM*O$j@-nOWul%3oE%;gmD1d}LC z?I1C|8GD5@S>&@wIza!?nEPWh!$L?A9{r4=1AiQapd|!<+UWUbW3pTMryOs}?{vJ=4YA_uV7YzZl=5`mXDzKk zOc--CeEi?V4<$FKxp!=%TI8y8#w^)KLbGI(R29 ztSy1~1pCWqb1?}A7S&)6b><^MmM^drK@puM;95ZsVR*8_NdknbCPty!RrbV8z5gz{T}9FhUx_QSMX}X|v_7_uGo{Sul9S>~zbbj+ZgKtwJpSAupcSOS5OAoI zv@KJtM7w2I&-R*t{N*!RHkhwU4uNEQz&fTSru(?nDP=`!uS(*gd8{YFK!*!cDcX-P zPEjIEgw?yBWAHR4XOlFIr*B{p#9WK>7)A_XEPP;>ka;!~Z8qbEa0{A{gy?n`)MyoUuIx1zOOdF)%)dQ+0kKdT-*lgdwqYC*0s(n5H5#M6fsH0Bz zwfu@Q`eG{e=giMX2ADgv5aPm%?5pVi4GfwPBUExlek<}4Z8Wv%D|CN1lA%9!rJMvl z^Quu=>;+)z5dRfXfNA2TYTk9zT9CkPIJG5vd^X>{JQ5HgWVor3ltMo2i{B{38FoVgHuo%o{V>b?o2J2X7d>*qyl32 zjI=o@v5*ho;C*|Q?46>VvalO1zN7qEF{($-Zzrhd>)Vsv1i>^JcT6GtO4@9YHS1;3 zZEW=J*aQjHOmOW64*-7}rz$7&)|S4iQmRK>3m`Qk8&^Q|qq{T?oDjX*460K>dh9*qPmC1##^Bn5?EuuuJ~`F{`{>}+_$3y; zZIQq5-S%c?dx~jjzNxhy&6ShfxX4e3tEH=@Atx4001NZ6>=P1zA#yr?5*vbB67jeI z^vW?O@nanSk21<$>a1=`sa^6L>R?p z%Big2y-yZghd8?e`e|=lIe*Y;ud!JI$Nq&tQhX%J9A1w|S`KtQ@1lt#LwOB%lG_St)X`*`p-O=dhar(OknI@=^Trdv^s4h|=UB z`q65CieCy(83D#cX~!QY%Xv)NmwJY}Cgn-cqTinHEAYc@%Fn#eWr&DV^jR&^ts7r4x{*5PJuL= zv}Y5p*+p+p04#qqZ2`Z}S#Bu8mY3KCe96P*U|qP#b(`Q$)156cKs~ce2pwA>=-I!LQe4TD?A|pS`$ZmK?cMJMV$MM0XHeB*p8pCkLc^NUy$I$@G^2tJa3qZCLcx(}_Fr#Bhuax+}JvSn(?3F2lRX$U5+A-HA;n4{W80EF6P zP|EBhWyk%kF?RVnY)_Uv6z}hXN;2Z7L8{frs7eYBFahlA*K;(?w>5``H+(Q)eECzm z+UmplugOx6)0@70#;AkAXG%o<>H{d=G>5W85ZF=oIgD$HiQ$NCOR|r;u@}U;Cup>I zVa8J7$`;!t&7|EC*cRLoI9&OhnQ+OZcbs>c%_6PBDElho$689J9>d{~XjWv*#t>l7 zR`mE!yrG7$_^2oNSi6NRGuGKXfBIKVu2xph6jqEp)uf&rS8WW8?&zyin5_kc=F2}c zWjo$F3b(AEYQLAACv@# zmtDbW*x14Gukp70a%A|w;U>#bMB5lto44&`u)-wcIXyLAFBM3M4?yb z?C%||VHOPf@orW!_4$G>*%$7+tRb;2>CeC9{fmt4ZsV8i^NpmWW($R7BBgl#(oV?m+^5$K@Cz=nOO|5i(Y?UI4cXkt0l z5_D0%9KCz!rcR)bG3okBf7?j$y`aK0Kow#{3DGsZa+y%pu&wqXD1~^}{fpvg20-XF z(CE;k@Bwky{K~}w!1TR38k_M zC{W>_^nmz(k*KTayiK7?1})M6)N2X?7C;-lWnc-)G8U=7t(B&+x=@uL<;ID}ZMX{`wEW*w_!1^YwpR#25(dGj*J25{ASWKPA?;*vg)bZ|t~$3EY+~YjHqF&p4_7!=j0c zCA$Yl$ADH{Wxrj!uZ|IS5*gR`1SwV=mo2=<=lEMlRyVd*l^ePpxiFhG~c zwPM!1`R&bWel$tQT8IUJ%`9cAL~SG%uEp0^=^A}8pIt!cbqA@`@3RJ6vL1zUh>4Zt z4LvSCBSEyi@Li+*u@fq=lh5;me_nQBU{HnSt;RPRmu6_~dWwhQdyTCa2q`j3HhyM; z5s#s`QY&!=v#kNIX^a0nX=WwBTVcn}srRsgG(N|0&7+)(!PO7C=+SA-{3;TpKbHwa zDXtX;x`e|`YF)<6!%)5~PAFl)Gnh+D&T@FCSav>xF>N=sJody`; z8OUtA-%PG{vhBO=Eiowfv$4*Wm!bz|4@IET_;}pOC!PUoO_@sa&0K?~eZvqy6BtQk zefZ525bj!T{nD@eNCpX2IB>)|*@I*WWJvAe)r$mQeXvP<>|mWZ;#wzR^n7K4nvJ!z z;bB84=HY(7|K)zHk6(?Pz&C)>thD3z=36Y}Em`SjJ3blxG4bB~^|Rl#7`4Ia$2~N3 zM83QU%mgP#U2U|s<3DzwJUGdMb5Qou*Qtwh`+~<-Tv07gJ%;Vd-)kJ z&-m%R0mV_~JqudAla%-=X4JDlgPyEYhM;cINj zGS1%Vc{%)&Nvi;P*~nS%+oGkB*`2H-j}^K`6cKzo3j}+jY8Qp>Qx7(S$9o!j-cTM|I$-nT7a0v`X z(IrJU=Vgn;{`HNJor4JejCM9ml#x^ZysYnu+_w3=XS=NtXepuGccEwDnoN4d4I|l| z*>T4bK&5boJsZJ`XQk`Af2)(zvw(vhx=UT(cw4g5o@E`1Xc;({7&KNX-+3Ul>_t)S ze^fKmOL}Tl4CN_rBM$D1|LaoyuO(tc@jY_LFeq^ty_e5{P2i%1fKtNJw>DsN(xt7yyPe_=F5m-@ zykXNw|LK#>yj!C824T=W_EJ}$!T`%%UII^y|2$5gzPhX$o+skLQ$|zIr6jjEOC+LW zS^Ls(CO9A52?QFdP zk3c4_3jakEDTsinf?*(7n3jeN^IV?&p&?dRQ>%dR3XLJ zF7t?uaUj$6$y+cn?A?6|#`DudlQx4Rp2jA>v(1$0NYFyfkyX_t?#L{KIH+jD6$!Hx zYrB4%z%){E6_hy%XZ6!XjPbJhJtXz6GUw<796-tz828G-DlXaK986xr!lztKVdit< z8JIDkNRzuC)2)KqF?mNAh+ap5R;m!#7Lv>GaBz>hs#5pk})+c*)K28!otWB=ge|OY~ME19P0IxGBfa=@whrMh|_iF0- zZN|uPOXRoTnucjtf0D=sg#7wlzTXYwyDLbu)<0(DaGRU=!m0Ll7=;1~{!3JRA?&zV zrVw#-KSdw<8qU^r@x>Y~tMM-@+xJbe`=?1=xp__Kc+OF?YxgBO536wP8R6A1Q zg#9123h@>5AE-71Tua_3*Kt##B^nl$_~T+$>}^Skm$e|HLGwZ&Y6cnJHKs17c6!6I zyEMWhxaOxBS60`GI1Se#r$P~6ozIPKaLGM4#(@^vbN=z^d>TV0ojh8=^TI(68nqko zb~BL(F;4bsD1`fpp;`O9T_iG?0H4TF9p`aSeo~9S2Ou8z4uJ~15Z3_e6PVnp?Qz~a z`|YPI`l@o!&#U`dedxxbf;)^_K!m>&_t3pk+y>IQ;B> z^#ORo(nkw7>kb~#q=g?BZ==E{zzzBJc&NyS3r4VhdgC%5W2tn`GcxA0-@AX8GMHDV zBTv_K?c_3AGb1|UN*oAgnJ%&WEZ7$Sr%-F@aXi8L?8_J4xvO3c#*puA9$y}e%KmW! z`6h?uAg>@7^kaE_CKI${ZFATi{yXWMDK_O2U)kB@6(%y27MALipefq9&$l35d3XN? zL$^awM3d3Q%ujaAwB3i8vZ|4LD(I_I%w4h-&Gi2j*{Mw0?6&m37re=(E{_)s=)}fB z`(3CC2FXDlF$^e}n>Y7vXgBA58cc)*S>fujG?8-A6O4$HIe>Hka8TNGUDX4mLjUfk z?!B`7g+~)_;Db0{DO^E<(PQ`I8~&3Ui-0cwbNpv6mGfnnmIuLEvCqp zLuqj_a}Ye#%k@5S^k;H4h4@h~jj!m0HncX`ZT+%ZpVv^({3Mv=Jd3NFkKBwM77!C| zrzbI#pmmQgMT9JkED)>Fnxh@PXQJ-G|4Zv*1r*L@`?T*}R~-L3@aWjuwu{dffuW|- zNtStm4`9O)8*NA=2rdHrGVTC=p2hpnCpGPxhP|2Zm5t``BP)SO}tE43pppr`||S>9{CTj zOp1rF6y)Q+eTYYX0br92584a!G?>k2g9sC9hIDlW=tpY?R13NdMXmG^dh7uzL#}2-6~#f2>5&VF1BS>Hk8I5 zPd&(AU1**zyh5F_eO%I2q`CrW_sgzddJ!Sxuq+b3nO^eLW{qFdFToVM&FJq%?_Z}S z+t7=?T{Kkh0X!mQ90h-^1Tp|JW4M%7rf)XJ(l=r~WB}O?&HrdtqJz?ZJs{y{Pzg-C z0XvEmRd|OCo)*44=(U>5g}!pspHypF&EHh`24NfLk%h&YCc+z5M<(f_Cg8fx zz9bY3Jj5#n@KhkapL|qSL`PV-AOVr*3h1AIC!aE2v-kgb&yrQ|YXtOz%3lM79`(l< zD<9iFK1L6pZJP+J>dIaa1n>+hN{RXoRE5g2{Vc1X@O@))z&^&N_ z!lPFQ?R7JO6Wc&)whG-__2@3{N>D@4PSC75D@qqS-uFBOxX1`DBF{4WJAdYaCdloeY zfPOf1-3<@eld!JcpE(sYf-pIrz-WSpC`nb+j`?ANm3TitefVH|J6n9ZopaD zg0M}JChjzWOhppZ+7dODeZPD!?Dqp46G=j^o5v4n;yuj8KlJi42)$c)E;@*$BspZe z)>yLeuZV4kvuAn8iP_4J3ij(qvhaYiph#LKbB50@6x;H8|5v-}i-kJyAj=r4OWS<< zm)o*R^@B@w=Zqj%HphSQM3j)ZWg;FP03JjbUXCAEd_CwpTV&eWOuMt#fJ7Yu2~&Fd z#jvI(rQZek|8_c=!0e1Jp+}rylm?uo!=RMw9gT^{T$qoRG`2iB8zZRrG;mm*nJPqI zt9^HNZCBSt#kC;B4ob36#6;X~0(+ow-7Kz#&taI!4Fx8X1=>kl@4BEeq1vK<^RD@~!7n(+71KztJEC zPX3AwHF^XU;u$>j2JN9AA$$`2_r&^K=g~lwmDJ+at!CoeR-;dI&_r$g>_J}aFLFW- ziCX9S>m_tuXr6F?*Isy8(-7eS8OIzgInk}4ak5XqXvi77Qm=XftKPf4T4JLv|6wF~f~O?tJ%(&dtjH88&Uu@5I0-%Aez`*S?>5TSubx;mjc5r}uk~2Ui29fcOIH#&Z}zye9vICrQn(U6eF) z96TCJes33okk>}TK*O38(HE$6+-M?UfqgFDO&+}q4g51iu%L?VNjtPe;$NMh4Uj9? zjd=nDx<6Ecq+%J0>=n=kL?L+ifRJmZKVr3g)Fd1NY+y$yAGqxR4*|`vopNo}AyNfFy)(+@sB;nD~PG@`x80)Yd+Kz;tQ7Fmffh z<~>7X1&t;K{0hi%Hh0J!s=jk(6Z3> z9|}nMm+5u;T!8t%yC%rI9ZU=fBY@J&kkWm+2(_s`f0e9n5g~B?IPx`b{9|K|xQxn% z2M3>?kcMYIXU}AKSWSvc&GX{us7spmPsCLfDLJoe^JBs)azrXcsM^Q78t38hXnmJf zYFRG#!`V~hdB@4?VH%MKE_IxEoMs%%2j9K6HA+U|dNLNV5C;}Tnut9OWTYW%e8vI3 z^Xo;&LR_WP#09>*g*j3+W%YobetKZQ_~?)%h62m=j03$q#l5Cc;&7i;h8u6>=34uL z$sgG+P~h4w+o$#<$f`&y#vQdG_=~gJenb9v`zfWvb+^a`mRGD!34Sv=d|v%-&VB#@ zd{wjp09QpCe{L>XlcD89mm-6#^3W@yphhcb#1dLnZ=0;;!UM^wfM=&_h?rL7OR}3p;RVnqT^_Y z9-l@vlNd0{q3mogfPQq>48Ng>)vN}D9_`txlh*w0x^!*Nr$*dS-^fK~huU}ER%pmZ z5j}jQx3**oW?}=o4?c06JwTxvJE7;gE@5#`W+jY+GF#y2u62CUFMHSo^(XoFBsmNa zWgkW$7*4;GAfdoZ{%Z^K9#?)%q9``L|1>1)Zc&7Hk|J-ZyYp(F#1j@2)NbsTdvJuj z2JH#cFt2`1#BoYKTUCA4&$;JLDj`O1Yp*n?NYbv-BwG|8GGj#Gs4(yYt_Yn{F90+4 z%KM^~SX7X%Ir!3ix>3R*aoFVs3LwGd7;a=viw0=sA>Pl1Q2Qo$A3Y1cnX6Fj!PQRt;5=E@d@jl{UY@(z{(W#Z63aH# zJghbXs;#2C{GTo-urq-;cLXI!|3K7y@NdHF69fvvTE0e=0v=)tFuhhSe*)W_3Gs_6 znh@rq_Dm4)c>t^>IcnT*IC-wozw}jS55#3*Ba+9KhaIsgAe|nAP&0j*cgoEo8so+} z{`MM7WZXtH8qcPIi~h{uV;gk|3YZjZQ^LTp&yixi4D$pO>EgGBag60C5K=O_cMrm$ zw!2NBf`Xvb6HRw5NX;4sLi(NeEz&frLTXuL&=dG5xrtF zQqF&&@w^NUGCbRQ$f~o*ozfY`o>=`rz+yra>rzXqU=(;11QPJPzGXBqiqn*k2AH8fxNaIY90cyk2 z70$spNzBeI#2?}n)AnA5jalSP=mj`ErK1)h0mA5cJOU9@D`P#F+TjdXZ4Ib%%l+#; zD8W>cf^8P+KJC^PrNF5HPO;IGuVL!vJmx{{m(8FyIrCaX27+K;ps0ovWH>r$Et5ZU zwU{5^i4fYIe+3968!s@r{PEKoZ`YA29x)iI(0O_as+aq>NEyXdCM;wIH4{Vs$hKIA zFi<$f_sFlyF>0!QAV$@lrKj^&wn3v7(SZ1uk*!UEE1oW3@Bfj+q@rQEeF0Uu3Shlt zsd#T!n8fyF(LML|uTjc}%mDTZzGAMRM#N45q*eW7UGK+UQfb>+iisCrFG#{Rc=4Os zgk`=ya9E&nDO-7RMe7^*y-5$VVU6fCmdLro=~J_XUdYYbDj`3>n|M(%w+MwYV5obp zJ6bGgIWs%Iv+iy1k$+>Rfa9j8;Jz+t(c|Sd_?!Ljte5kLCa9@gj1UM4b|rHi_pa%! z{x3?#*jFt zfNMTWSV_Gv--1l>8f<@N7t`wBU1d*OZeC@AM)$HEWK#eX1W})n=^VmWZFNmP>{cjD zQ&Gv$)pX6YD5|f1f&JVqV;i)E((ng0dUU`iD!pj!=K7*uqE4F1f!Sx7&4CnqD z{HXLMRZdvIg-R2KA!8_}rIACE@!pinmFx3-LM-FkTa4-mf9LCoW310s4;m*U^{ZokNxp`>?Z?H3p}ZDEwRvGxaMea+quF8{k8s9DNtS= zX+B1VKcN7(E0^oIN$DWa=ZEvF>og-c2iK0Kj+1xFQAUfN1=84V*|M=4vby&0UN9%_?Ie0Pd2kUZ6V!<|&S# z&=LcwM@kVaInM|b6W{Ee(3}e%7>;chv#w_ald2O5l*mDOKzlf4rGJ53%c9}YFxO{a z_1lHn4mO2brRB63_JSIObKMo+Jli}3c;`79Rq+;850$H~0hZ8*=BC=zwZicDI^coP z61wgM98gP->cE-*Y)e)Y`~?|zHl2I~bH)fT1o-GWK(MU{h;kEh3b~Wr{X)jPrfTQb zQ4M0a_g)T~KDZ5{r^H~>`{SvIt3xQ7f}OQ4<(q`OEm>^|YK|@zEf&9?b%TR7;~GVXeNi3$U<+8VN-_>h zEayCZ{6)_qK(3q|BMzyX?%IiPdoGbwPPE$tI<=ioiz3>ypz=6FgE5fR7K)p4GBqMj z+E0{PDQnRAM6Emy(qto6VF(622))pCfheqRX^ecjGSUef-HW==37wU{ojmeuJ=q|;@6t7 zg)}S}gzDOan}|j&#o4np5MAc&sXcY=W3rFlu016YVH(7JH4_I<`3y>)c>rHwV(^g) zChsO3E<95W&aFM8fDaxmZu0pB)?+>T)YpE1z_ycD7Ow$`dqYw$z1<~m<(xKXcf=e_ zC>r2bbpmFql!@oY;EFKg{EyRD_zzcMKLqc|!rY^BAZ4$#WbO%<+KtI_x>bGV#m?v4 zk>h<|0*soRl8fVc{f?M{*8>AW&P2O0sMvhM0T4pqzZ~jM5U|JU#Bs|5sGVOGGapr| z_Yyy;TK>8Wl!!avO0{io)TI)ED57zK*oO~XGq8eJAH|30C#w!sa9eN=u>NuLtNr#a zpQDltM|)e{pj4 ziub9@>0tpQI6~lklya^hFZ#&gC?~>_C-a_oXQ02>kyY zz5>-BZ9C(bX?=$ss)v$s=JiV?o_(=0LF0Ob(P7}3L?1-<0nyqSv>u10%}4%0bWT!z z&o$(ykdL!v9#T5n4~@mZfGeId@sq~TAx@cJ)S7q6&Jrj5_ZTr1thaTl>HKW=l*OL$L=nBa*_kqd4>JvN0bHY6T@!8va1!;>PfB?G_K-LpsA&kHD^y;_YE znl(wu&fI;~?vPb#u`Hb9db*y&4y%(1SmFGqn+poF02>3-5a2Zvw`F%ts!(`^141#l zA5>mzg)@8Ey$gPESL_1Hu}x+zd4j;wmVmY)zE~mbPkI|qbn@ixLKCpr@&9{%SjNAh zae-*ljRvTv4KP+Qyj6D%rk0!BfcTKp57LfFJWaV+xXuO3D8mz#PM|c^6eoM#rkS(n zw^zHkN^T-*Twt?LUjT;w?#4N>=u+(q9$`L(25{C1rI1d6OM3|7!~5z_Ang?-B^PAy z?mAnj3I!U^?bjwtl96{jd90Zf#?WOYxdr$K)MqkleY6O?ClQ;6ktA$c25^f0nM(dh z5yp!H(~Qf5#*C})r;=K{_C?h;TFXbtL$;`uIv@g-MNI>x?~M$=z($vEcGjUD5Qrtg ztzX(v=KJgTZJhfks!eevonc*7p{4;CE>bl5+!okig|0yPvMJ>a*Ky=E!eV%})yik& z9pS5TZ-V;h+5Br>5oXZ3nA(_H4>X@oP^7+d&qA#zqsAzHbG@KzZN)MxMyF`vyRs?5 zf2_c6*n<38WKL_@2)ToUfKXsapy;6Q9FeKr#H;7Dz>Jjn5poznmV;6PPVh|VDF4%G zsc-%_1FYVrvGRwaLT?qRhXCLAE+PcQ&i<2i-VSE8Y$Qgs9Fi`xFy+>-dA42ePlHE( zO@Gy~jhSs*0z}f+ zSjA4}PHIxEBEClXx}(E4pmj%AXi^%Y&aj6-h~RkQ`fmY>s^ao_t-8siE>^`UmOe%gWUc&e}2Ip&z@9G zxf>#9VCwkf9?rq>N!D89@CLNtBlK8y2xO04b_LXf?$l~y{$Jn0AsT&1Zygx%r1}Rh zUxezVXxJY-w0ncchZu5}YhZj`Egl7pSqEV2WU=%LQly0D+REps7Vw)H(v2L9=CW#m zgK9<7)|dJ!X?MuT`9q9oSNbiezg@rvp*UGk0)Em;MF2EK`2wedCSV*~FqN&}fxp|L zh^nDiVwGVTE*hjy`!CZDP^>(grF-D+h7jo;;`i)0c-B4WV)6KEy^R*4*^{8;b;uT5 zRoV$4!wjr=#021V_Jllx5`XC$3i6<(16?Or)L|T7T%O2z-Q^t{w5V!=Byp^76 zP|S7PjM9C2@@Hd%YCVdv8V)US|2&F0LF;wJE8;N7Cv5P9SL7>TWpcnyuVhN3;8OBa z>P{AgBm|Z_SvJ{R=6;K(C1;`t6RE1G`nQy_FBv}}XX8}3#%CtK<2eI|5kokZM3%<^ z*Rw9Jq^iQiS2z3DkE-h^SijX&t#8$AYXPmvlxCdLlA^QPiKBC~I7{jr0dBiuI$N5VTC$J$se z_$-YOcPMp;dU$jgp;p}e+yv!&4<`qxe%WJ@ znN|6Y9{7F3hXJyiDp|N5AplHm5`W!D{$rAY=G43k{VoNB01HdoAiG$BO(Ef`|M!~)4e2`n^RXM}R7vri{DyHk z@j1M6JbZi#R(zcAm6Gi^1bMCbo(kl|awT0VgxXagBY6wsX_U^I&P}&J%~UUIxoyAo z-tKw3x$jrk);m>wd*;Ni|0rW6W5rFTADFJ4iPnAE+F}@{x29{11!jF+Y86XTwfb&V zX)^(X=N5QV`w`@^9iRg_OCHw^?|^kmt|eU3%$@3nZjbtH?f2W@OX5n+|D@zrDd(2U z;r*XTHX&nHY_k#61>c#*dx!JmUH&T?%T-H0rQhFQ+UtFP@l4|z$Csu+Smj-Hoh#s) z>rF7^Q#->Y6>m_NSkXnRQjpQIo(9c^@La%sRXgLkjPC`Br&$Rrh;NY~2hiCGCo*$h z9DlP~+^SqMF5i}BZWB1n>X%tXB;n*b?on1UioTlttY}CxNQ;%5kQMKN6DZg>TpCFb ziZE~k_o9KCnJ8-sAIzL)DR5kz6M2WN&B{cp=V_^h(qz?0mCFLo$p)lgGU6FlJhu)~ zw79n{kH&Q&{W$$tJFpZjLhwm$L@{+8`i9d`+DD(#ilR|{K2m%k2n9G>{OiTSB(8t| zB&5m+NxN%rv$Ttd(Y8=+VMfv?E?SzW@Ao@7w6IoFe~Nu!qvsP&%G84mcfs0zHK;`U zMuTW6?9+qHcb_a<`nSZJj+b#RR5bP|qcE7wFWfVt$GVU2rXg<;p@1+4q^bFI%4cpiLPA& z#(#FeA6(AQ>Xz}zC?@RRLF<-wX29v_QcM{ksKm#TwGz~B=n?y@^BfBj|)m&`y`yY68ZiP6UD2pvccx) z7Y}bE&L0WIx4r6Edu%2S;X6NBoXp*5rAN50^oavI2zUq<5`G*@-8!z`H- zg_??h@Y=c+qn5y3ovWEXA<=4Zcf4^4k4I5`e$FR&pHt1@R4oLPJqwQvzAfZmo&(MV z*~j4wUzHQd5lr3u9}knwArR58C^&ig3_bV+FP@D|4`ERxBd&vqpXGHf@KvlnK+ zR>@K_ZD|wk`h4pXg1r(UTSkCasW-Jko{UGd70)FWfO6@}khtE|&>BTMxs4+H=p$?) zcf~5C9-exA<)P@Akn#6BkCUJW)fv1uqwrCT0*jDsh~k=@0z6K#6nD#XI9K!Q+XnG& z^l`u$6IY469vlLDNk%w==Ivn4c9>A*?WlkXxp3n79X;S{1$%Tu#S zj@grH3h8?*nSO?JYK7IlJ5qe8`o?_QBPIGA&_>Hmp_3F_CUNiZGp2(y(5~f2`lngRr0DO?^Dm|5636Tk%|nk~>U+CAx~% z#r=E3Sj*UWo%gF7p3&>3{Eil8#5_V~30M~1ZLrfTU;~z&6fv9r{&HD>=wQ8^q-A=c zE#_;P$H7S=6}L@R$er!CLKcJi4c~Dw(FZK>hr^pSnP4_vzIOsDFj~$~A&5Q$;u!H) zm**$nsz2HGzgwmdKz_Wqw>1P{`Zs;L6g`+*9@Z`*eWR8Y;WE3o)V=wtAOS{%)P7gf66d1;8s8wv=2tnkb|HqRezn(7U{0%7)m6>>%!}uA^60$|Y zAX;Abj`R4n#B!?9gL(PQKbfj_6Ar!fp-Pxr!&e^<57!61L_3jg@FsYafu5!auQ z!t^!It}Y?NZ#_l@$5T^;1bC#3tH2tWI)gd=J!-BiYErhm5g`~ z`JWM3`@m`NDGTS@DR_Jb1`&sRH5hU7Qeh_nG`5uEAJ^wl#BR8L zU@A_#z9=2J=`D1ua zyg|SG4&8SxmjQWvgXjo1-t>f@rr?ybcz<4rSc`!LD4@%c*s%zOMPgr0NxzlebXx)& z_14Jah3+%$?+6jb_rCQjK)pfWSB;7Yk7W_6!+j}|@fixCv=ilk@qC`+i zi**tY#P5dQGn<=@P>o%WPq(Kh&5f;PQB$14JCQ``g-JRr)y6B3htdOR+dgt$J+)*Tmz=tw)+Oq-JxB}$&3H0Lp#h4g(c=J=7 z5Mr#HTzFQv@?QvCLRD@2t}b3N++JIG!*I(M?7Ovmd!%+cFu4|<{pR(r+Z|1zzU_`}2&Qyo&H&&V^a#KM8k<%LuL0C1T20yna zD(sct%T_9g&`_fg@29qbMXSf4L-AI`5eN3WbZOOEnnC)g}4`QUML_ISQ>E=`iR^BPs@y59A+{*(|p8|hvUm~ zL9r4jf_4c<+VDqQA>7&jtk2ZfPnKCn9oE4AuHmEhl+IQ1M2jRua7ORt!vMo4j_>8- zTkX13aKO~0mnE%DA^vMZT|U@S>yy@7qa5`lqk9SrEf;jzo2+1CRZ*99_eGA4T; zZ8^HRh~{$=GD_~lM2}BAZq~$b_!S0CZTT3bELgpg7ms0vq*HG`aO>Tap^;UsGR8l5`q$jk6}3nX}A2 zbuxG05|NvfFRyf4(X!Wwt`sNK#>9m#sdl##Gu`_M3rOJBEZa-z#8E3JWx6-^pv&%P zb8-~Pw;M8~Bu@57Ax%_~V4jegAK81?3_$piFa(3^CVB90;H~B6ji4#NF@ddRJ9zJ} z6|MckP?NNhVRvDT&38pf1x_)G7C7aowoS@Mv77<7#};+0a>tR)3>PnTw|xCP+j%yR zwKxyIJjt{0l~z!Re>qiLRi8@%pGB2g7O*x(x-oT*KfzH^fqB9u$n)L-+;m;&4*DpZ zguzBA2`x{4DYDEi)6d79Wjv6{z5&kv0tRWX@@dMu_9H#NJOqutt)!h{+}`xDJ5F)& z@x*i_`l-R=^aoaMC(r8kF=A42$vsRMSCpPNv?(rc7i53!j1uS6k^2eH^x0GEY4e*O zHcOFPUZ{$}E!9JqW#LZ5-jsnjM33MoISqK_63q zU%AH=gyq*%k+0yqdwLpoJ-H=UZ9#(` zC+I(cIM>a0>L1;kOXrXwW0dl2){u+zIoV2O#oR9^Tr*IsZ zui&R~okxXD@9s2!x1-o6Y{2FGQ%+j{f3-xwj>DtW!(TrZGsjYr)(2X??thNsveMV zJFK$5lLh-A(+z>Rl+R^2EcyW?HJbe9C}{EnIPrSfgk;};0t>*ur&jazinnZf)0T$h zvFJ!ejn9G3%MD-5VCCj;vi(5jhS;h!(`L1_iDOrCJ-l8(REiNZZwjgNYkyS-_7@7( zvD5vk+pnkZr?W4Qxn$cU5NiE&@LN1Tb?c$0+9f(r>j38h$G$(dl9M zz!$m9Selzc>G0Q_G8CbJ4Emq&#>AnuNhYceeWmY16+uGOwn4?S`=FDit9}_qdI$aq z;n(|4dh%D^<97GEk4^T#?$})y0;0F#JW7gYOH5&Vd#|c~vN<($@(#W-aGt6f%y3kV zooi~VcOln!vcefpjHcvMMCPfqFpH}z?Rz}a5LaXCkSF#6*GD?XEP#>@omaIe;7l{T zO4Paj^F`npF71POu?(`LXZ;3?A>N#%wD3%q3VErB)nfDJFm1k0V?-?P$L-wLeNLo` z>=81x&xUjV%26p(#Cel{B16`9?!Enri_KGX2k_g$_M=5_x!QczCZ06ioMfB-I6c2{ z1U_>^ij-TfM%^HUYLfAMj|dajLN(5W-?@%tnncbk#;40X2RCN&eOd)hp_XlNta)ZF zsm3X`LB@EcgT_1zNst4L>5Pf^ULsfKS@!Ie7n6btq7JGH^Qarub+3(&*&TJta1WWay zs?O!V9zjEf0v(!NAJ!75IA6aQK!HhIYQ#p2R;%tf-2h=BS(_#{+6nQ3=wAV?x)hSt z)K{gb`;Tbl*~l1|QEwGIn%HHd$f~jD=%Pk~@krF|c3HL_3kq#MylOx-SFjL9rNx^a~==G=U^#Y zvG=b_xPBy<;Joan4|$&`m-B$bQ*qoaW1d&z(*NqnzsTULjT%?Tf+XvF+o8w}7n%j^ zdKMXOCl*ReJ!eSTz5b3EQ;^gfvY{>bb zGrII1UZVa7ExZn{O>-I_nWNWQC;`a9^wvl4y%}ECI}iWBkS=<9xNh4dtWNN0zPfwe zxAD7162FdvUyltFBgJ@Px3cO8?dOjHtOyllMyiNSuor)S5*D2LZl;twjv@J`snaOe zgbO3XFd{v~kk;;Zt!J*vn_JdRG9dGngWEdhmPv^S-ur6iP`X=m8Faz*S76Fw`Rf^R z^$!^FK_esdui$tAkeTKf_E3%!UjT>0$86=piNj>%^i#sdnOef+G?mA74g<#NsD6HGP zI9WN_^1|iFc(5}ND0Wshgdl*WRkLnmORqg*D00hns#M6%`5 zGB0;)kmuBA=IwnCa>f-iz>RDH_j2iv8^ue15(wIyU>LZ#%M&)wK9AsTqI6M@oiw|| zl4WV10y*#O!kw#w8T3QG^|rbSr|El1C~D83sw8(P+M@OBVF*H^p)T?`gs%4G`Up)s zha51t94+|Tv3LDqMKG4Cl~}f8mQT?MhId$P*l1ciQ$1~TapV{e-{?_J3g6@kYu(N8 zXb$ech;~d|D|K2M%5h}=;jud(J&LHAO}t;wWIu)#tdAk#lxW1mpBG>xln5)c?w*)x zboPP&xQS|Ctl5#MO@2vj#snkh!W=m~kuNwJF?8NMJc2i-j_x`$qXnhmi!P>|BMWzZ zWUgL|$G&7~F+=l@Biv5cKBe=iyM^Dkvqzkwn+DEr8aE+B``v~;b18dY6`n% z*2{iC?;@zb-eewitJeWF`-32CyLYCPk3>&%3s;7tSZn7;p-77LMY1Mb{CzXKYx?36af(9%8MWfCxcnmRP zhqswn0~Nj5^E!Od$8>SGt+n~YlUYjG9T5JuI}NIHpK4@i^T%-7vP%{!GZgItU+L^qK)U*J=gc7jVA&s{}SxfbbpJxIx~eFbHTb!D^J>^#;q_nKm&@x8(F6ukPl?>rs9og^{X+NrOC zb!6#6-*nDL*i_{>ln$dQ3qL}9pPTBiKW0FBwAhcwBha*$R$O8;MbPA*hVoW`!;OVnzNRSw(Z-vZ^lC zoW;nXFS?R$*xFMWc`r*j$SD=j5!w^>5P6cBMD397nv_J{o0poP;EIcI%zF}GUrQ^q zclAUKtH^ri?)=2)7oBcUf1zD;+d>K!`PH`n_qs>bWr6k1z4_y*rc&2w^2=RckZ8kC zsq9)D^6goXh#U77xrJazIl7YE9y(~*HQ|6+px*;{tqjLmHWb001SqV^i*xWuaKQ0F zQVV)P1FPLuY|bw;{VyXH1|#gs05Fj|*;~T>^+kthW32Q;gKYi%H@5i6|$6w~Tzuds_ zT8e`A$>)bzfb$N7?0GwYG;8132iTpe3RpI9z}i*S+eyfFvICYjtPf0?Plfy*q^qke z_h+(*gViFO!#}@>Hh_ZiJ3Ij~z`bg!o-FXp5lS2-I@q3(-2t>H{-Y$m$GNbPVpEpC zul(-&1OF>7{-V1G6cxN_JAKB`eNu=vO_b$j1S8yEqDArr4r6>1j9Uj)$% zVnVT7sJCk@kOj8^?6s160HMqBufdcCwCw-?v2@+>RR7=K3|aRgl6_qxGZfd}TULES zWUtJ7Q${uy_h#P|vXwMsmac3rA|o1R#>9kpOZb(@-KRrFtD;D?lj6sruG`QqjMs3i+81gl;!*Dg?~5s81&eqd(H7 zP?Cw#V!!d)Sn}@T&!D@=)5I*eetImeXaLn!^7$%W9q{ABi|B6P!@0eA3VKtIw*`RQ zQ9%x=@4DZ=l`V5??Op{fn&_4`*O@fw3+j0GqA%#qJ*&ciR7n1~Ff9Bh>7DOreUcXe z1C0eX>CtK7oc4IS%`0?^r(x2hI?H=+g$e%9NPi{Ur0T&8$mdvgD zRjb1lb_#ini7nCMgipLq!Rg?~p8@leCo8d0mqi)=`Q^3pl;u!lKX5K({Fph?9Q_Gg z7K7UtT=iP$Hs^}m9EZH_u1{Q#@iv5v?OJX@AEmY!x3~x$3Qy3 zgUOO}>mHjiD^R&IKepl}+pqzrNLJo1d_iJ*8|ETSXEuduQ1|;dLO~Bv^8hSH{si)OOMYJQrcWFJ6d7qOF$ir-MaJ@Y z@R4#DZ9nLQ7gul%UO?!i@G6g(NT4i;-Nv_rOmxd6@VT>nP?k+3MiuU+ZXTA!`xJz` za#g-Uq-x1$1$5m*@6pn+bf0lhMY}`dl^&$j>WieBQQ)rL#5REB5O<)rvx4cx&3qA3*f{q@mm6 z+{~XR#I9ufcQF-?ooZNI1)|kTWlR&PtGbY(JN5PDwK}yMCy#^s5A=V}5PzL1iT^3T=PrS7f62Qr8Uw%YtQ=Ypp>u`R} zo8Ey-b9rm9Gs4i3rzxs?ipsEWYFhP(8O0xvd~$#s1jx4UMsmrPoJ>ks!e23m*4+6s zLo-M=LhcoS7L0yWJx4W|ccdBQZ9>gRzG454v)3??ds<9Ze1axthxo$|9S%lPmd>-U zoMnppkwb;**Gl1~W7NreSu`$IM?hm$ov>l#Ldj1lz}N~L-Sj8oy8SaSv(mdvFl7_e zpNIM`oVG#tH+R-2^QtM@ondcH*|xLPo>efGp~OW9@pn{KC`5vd1_k9^+PUX+>O2Q3 z2#`foDRc6H^v$=`bRLgy)6qkfPw5@@)H}*;;pJ@HI7xVHec()hs{roi${FKy26j=~ zhL2cwv74uD$|aGO&m{_IGBdN>g}Kr68FwZnZ&Xx=(^&=AZr{rKtOM7-E!lkqeXS*> zX^fgdtNSb1W+)=Mspuvo@9qOl*v;ElO-k6R>NaAW)$%Wy z5CqW14g#)vgn<4A*L!cyv*((^PV8&ljk`%Hu@!b^g=*s_IaIDly|VFkUkEA;dJ_Th ztU2@eo2OuFjnwN_eWoN^DO{`m3r?0LsT5!OF39IFnB9ym;5)n8D@uNUTo3sznDxvo zP(1(e^sx2x6M|FEw_gsL=pn)~e}%t=y@omNy>ljyuX^E8ccNW^jiNA{ZjCl(A9cxr zG^>0E|L$xb#Ub0rHZ|P&_ts@5oavX!-I-JGjE&FH##h+6)An>OCmfnrge08h1mo4C z#qgRE)hSVmbWFB|0A z8!k)ZhEY1$-3+X9%S61M&%Jyb*U$=ho_cA-b+b2AODp?zPjuMSn!P6SQVmDnL-$1zl9K6M!BS5b{M%NV%2YI7 z40ghJ2GtK-G`{n>W7H%l4GbR<1?oFP4W%CFJ|UZFJW7N4FV1(O?zjb=cjZ$Q!4TSp zc2|7u1Uhd2Xx!$MBXr`_t z>GAg3(K+{@0K(G0kW;#&z=lwSN#6IXWF3v$%eunz{fQ3WZtW9Q8r7^jsi8AKdOP%w z5dQhOWXBQVTJJY5|7o67)TKfjRDncSUZaUF2g>M92`Tq`4*#&}eG!yR6u`YeC97m3 zOy47@o(k=_X@`JzZ3Cnj)ZTg%wZ&kgrN;pm6rnJa#-B(zS}SI{OEBhS!mrtl6@bxI z+Gy#X%_UdL;5SalcG~*JP|#Ebj8@*_PF}Q=Cj5BrqnDF?8 z*!=RHwFNO3v;uW6%w)%!3TLf@*>YW^N|+ZI%z(eN{cY&}K#-miW(++^4cC9AV|N9| z2DiU6|1-BA;9C{49YeH?oVLUiIMb+ofP6Up`j_K9&8VYL_9Zs1S^C&`$K8z|SJ#Ge ziax?T^Ie)KFj1auF_e{{@02MhaawG;3}*XE=}}o(ndUI;Md&!JzhkZ|`42S1dK!un zHFmek+-7}z*IP8U}BPzST{3_NAg5$$5# zGD;eYer||@@f42}#AH8Akp+n_=(?~pjM)Nbv!OZ4uy+mw9E^UKur1QjI{-URy$++A z&Lp{hXQ{n&x^yMWOvHde4E|~57}_wLNSbg&S$Hz14Wzd7C_yL^*)|j);>5A5egcE- zvYc+0bX16~`3|AE*>gUI49l}_BLrpFUkFZIbiI4Z8M-l2gXPo7Cu>6tTom(xdf_%Yi3e$)}c|iJbdWnQrrs znNRY$_YXXSE5m)DH)}q&-2Nh}6trX(WS}!;xRMS4qe&fZb5DL;gH&+MM-gk*{5Ydh zSaC^{Ib4wcHc(j{-}=e&E8n>!Kf#c5&knNVVI=Os_TiewYuX=xH_fZFZ^G#UUG{6~ zBUt{z3@5?eE^G`kP!J0g^C4Dxh%u)WH+ za1cg)eVT4y_Tc=*;n|kO18Y~#a#P|tJx(7H@>~2Y!2w}|cnNEJMXDJv~DzymFS<3nghNpuU zbbroQHg43ulO$?5ljyc2vFjKduB0=yRde^EdkW~f8>JWc86kg3&uXj zP44~jyAqmcFM)ZQ#&2&N8b)06KW|cu7pzVZXB778uv{GslEMjp%bmyatx9wf%slcs z+avYz`<0pB7e4uN#Wje>*Q-5!ZFU!P8D+qFa&p~tmKPbAR3D@mOUp>RA5AD*sV%W2 z10Er83XXrs2c^-Uc|t<+1=sVzZ)!sms2PlJ5|pLR3$eIoo^_$X?o^oEz%0-S@ralq zO?1tm447Tp?Hz{WwcjvpoHB;S7O^qaP$zf0BN$w>_R^QF7evW+=Z)z4#K` zx(lLaInE5UY{GEKh3lEk;t9T=D#O`K9hr;{v9y>|?`v5Co}-!~xzI!*6BnyIJ+^ha z_X@$y%ZYkY4Z8Mv2%U~J8as)Oup&9P#7FG?2Q?d}^ZPUO>B-pT(SNqs zXM0261tL6d1a;|EB#Y;b_`u~+%k)?8cJWkdV#U!^_%Nar?w9N6l-A6dEXSUbY??dT z+jdcFor~vUmC}UiGf^%gCFTIdI{3A_lm^h;qF4=f${XjXSJe zE!`6p4a~@^sC&o|o>k0M=L+TO5}(dQX7UR2+Ele+sdEywN%&VFu8GtBOOJKwcy>_g z75c-RMk^L2-V`i7F5;!*cPU#7?}@iB-`tkFQM*zMXck2!IvT(07uxs=uhM6YdGN)` zjWRNfAKeF5@W~lRut{hsW}usP={n-&981o*evf^gCDA6$RjPa?*XxSnLby*11Y3lN zLQ?yWYVg$rGu!4dCY;Zicj@F3!5t^6eAkCyw?cT8^59`Cv9O>yq~J}r&i2<;Ek3(E zn_cfb)4KLunyI-EoB0AwgRyN)TRi{4$0EAUoH609!~O)2XKyIqsz{U4?v<*!F_b^6 z^y?H=;i|=Z4#F+=<{N3s?GcIlEF_vrF&;NWbpO3SXV+8z$~u_rZ#aZ}SHka%$3k$U z!V&J&?7mg~@Aixj-I%4GAfs{_XL06@#KSssEhb06!w1s(iWNjhGon;)SX}~zTQinC@}26TTauIt{u+ zS{9X`#lUT#1{uSn++z84U$r%W$T==*5tA%>j*Hgt&p_+b1{$KL2i)LSemCad9!KjE zeG2UTH|!p4Jc!CzZR_>#3 z$w&kErRYG}IKQcDssgkRyKS@W@zg-4#TWtpC-%mho3w?X$7^;}iat4N1MnZjh(pnD z4C4Lc!@DjiuY!9wWfbr%)fDK2~KsYG<+s*rPactztV`=-^hymbVaNl|O}BWGVw-k566NB<$ggk*G)c9+^MDMSUM<-m<2>^UiSl+$m!&s#mKpiSa7Fb zwk$I_XaC;WZ0Bp`tx5h8|92Ke8nIxW>H1Fp;GCrA<`*zpnkmyPT>^-f*VvU50EN*? z+^F!5js}hJ8FF;B7HE~$1LO8VxubsP^R3oxAtb_vRgTM7zW?FTZiW5($~SZ1W|qH% zA`-MVr<Si}Rm_Uhb-`(MW*w#Ts!dc%~dP zk4of_A(ynwowmOoGF|x++o~h{WI3+Zz>_QM4k(ACHxO9!KShkEzzKUGv=pMlaT%X% z$q#+K4SeC6TN=E8?BmMfY7Z*|ANoc;b+&-R>DWH6L)4?%3Pio-18O>HUgH>~rMcHj z^(E9B?#<^GMFAeUwefs^@vr6<9v3`iWrEh(C7~RjMu=4^u9fbH{2uc#@3oyV zk1tuT3D1|yy+x#@^*{m@?ez~p$iKFSq=D?m_SMjNQpID3{sCBzC5edC!Cv@v))79V;^gX>v1Z{(|x&US9G^Hb)? zv0MbIw1N6Tw43mRqKrEJOJbUI%0t3cL@oV$n{kyXKZFHdtdH^r<||dwGB6jnH3MTH zXShP;u)u?#+E|CFVicjXAx*xFzy?#$5P9-()j5mrxepx+Mom1k-(s^AJE;`Ve}bC0 zUETm-+ewnLwnOiP%iC+6`9nakJOl`Hu~(atu=ss}NUbP7t^`PL`akCVrU%!*HsMYL zF~92;T9!}c?xoDGYL`y3b?5Px3MZ8v#OLdaOhWW+8umyUt}KdD{{+f0?Y_rUw4fWFbx12|BBB0v4;AP^pT_*WMbqNUI<>xJ`n^d*;BJd)ri$t?NT z`Y!GNA-*jGR7C?IeI#Z!uQHer%*L^&M{<_(*>1&ZavouLI>kRDL{0RitnzXuw#9M?D~j)Yo)N{h(zBE)gy^uOg$v7> zIPZKnf;|1v3aRn#iYv_Tz`O5*@b|>f)O|m#;>c@0$+fj9##xoPJy``wo65TYw!93M zww#06Z3y>eSrrbXzn^ldNsP+S_zN7w@-DZLI#0G9jv%vAAMOPPLR7wV$8YWOi)0<& zj+se(QNSU{X@!o9OZw(j%9Sh8SmDHV2V8Ne+x24MV+?leB%;}?YJITy1* z2~pARKAFLZhM;o)3U@bVl95v>q6#TnZI`_-z(bFDgnffKgmk_48y_(tamqSQnNS7! zV_!q>A>T9%`hC?h;{gebpn6TcNIs1L8=PkT4VkbgZ^^R%p{28Y-)%WSHZ0#?uv{_5 zce<%T`pkT2cL%JLO%|WAC##MChMlWZXhw=SDb7cAar&O<8-Yz*270RRQ4++!CyM?) zm9Yr3T2($9b%*{vHF~i>+CT3C!_)`c_%V7prjDn;RyWuTj+iL=zr%E9j15xs5O}NK zXqHA!fheNyqDDuH|50G_te+wMp=zX$=EYmU|DGc$TFOK7db9PkrNM4EB#uigA*eb< z6yws6L}sXshnot^^vCK64 z0~v9~*fHMRvzQdso_J%gWa==YL@w^MJNsCc(lO_31qajc?Vm2`WZ^gC1(pbU_}(sH zGhF9=uxui(QGW2&m0e_oaDcOv2Q|a7h#Zy77fg#bkI7C9Cf~Qtt%oIOfv|Fiv@{SL z0I`+(xCeGXI(`lx2eu^V?DF5JGO^H z8qQ{(BtAL(!Qh(E^HMfSo-7^xp!QWxzZV|;J9(dxHg436=IaE%BNn<4#R7eK8@Qnzm+z;M5hYfdBR41V{{OH9}MpeV%h45>$06 zZuQ}d#K#YSjK6`rFXrMW9hi6fy);}vz7pGQ`U}vgI{_k04`kooCKzTp${68WAy|bQ z$eC*r{7Mh+CbeX^H(MaS(5Zo4wgFqjF41b?k~Kb_Shxb#hww0^ju1@m<0fsk)6;#N zJjs;S0B^}P6&@)j6pzKXa?*>eFk-uO*?%1sj?STt?EfAd4BrDcE%2 z!tF#26MMF9t0m#fB?3n(Cct%7-H!8?5A(3mqgV<<;X*c8f{`~w3ayQ-?o zjw4EWv{%6Wym_#*o;P>YQ>vIeuNHb5il-VLyqGl5p&pB!^#dp~|1B)%CTzrKxEF*|^@UT+x;Jon485r#hI=o@xhyU&f z?73Su= zw4+xQxse6xzxMf;J&tR1CX->k+Af3OU21UzdCZy*R-*!x%>$g%hvKl%7PRh60 zX<~ccCPx(_3%Ih0gZ{g+&3#ko9Faymp+~xcx!O2YSpe1t8s=$c0gb7tv5V!&h^olL z9nt5mET6h{rsnBbc)fW>rXxsK?OBz7y?DBod9Ghc?CKMDUsSuRCZV$72ZW0e8R99^ z6QNpl+jUUcAF?F?GXc2pmf?P&&B4DVw&2zE@&tWM$ zR4Z9Mg2zkDZ~L&p#%rA0sU)wV8E=4Y@97=h?Gm_~(a*g`GI}mkZ-ubTDhqAd?}x75ZXEdI{Z90nGO}b?W4R}OxD#MnQ+HY3kExM zJ?J8W9oUcAPDGxsdP-}&Ut~8vo5_OWG&Fm*{!A64Vkh0UVp1GnC)D`xNU+F zGxWmXUFtJTM)paIYu`D%b+h(89DDX%%#(Ztg1B9!mYyPH=C7xd`15F?lz-aZv5pnD zHznn)lWlZ>HoQ_JC{pqIzt^4{(e(SsN~T*u#p=Sm?j#RbRj1G$c$Am<6RxqnFtBCy zbzdAr2M+0rX3U)SerHaG-C$Tjp_Je0`o?Gp$D`%lyBUIsNaJxm$GaS~bgq(m&kzc8 z91xa?vxAJ|kIHpv62$vdpDjN2es75O$XeF!*T?+?KC$X&7(z6bHVud0Kbko`E>dQh zJ!`N(xyHuA$R+c(2xI+}vIE{HhmyTs<)}U%=CB5a3nf(<6YV+Im@k|RMF6x^dOAQn ziTT85Y~1I*JW2~O6enb0Wjx!v)M{LmAiOnK9~Re2x(3wF>59GY*62${4; zVN*chElo^%oGtAgk-su;o|y}HWs{?9i}NE9Ca@DcFTYNB4JbMM{F%n4S9md*s*ziLwfRAtZEQhIM*p$b783F zr2U94sSON~PkaS=x*&%M^o&rnqaQFv5x_P!LoIEzTYeC>Lm*a=XE&P2=bwv%CVtYwLVhYwIBIdID?>~3B<`! zpb`jVT#@=b`r2klF9B>_sW}9;Sa}*o+DGEWDKN%eUiO~&IyN1VOuS%#5apNF=xBDI z8x^+0eHSxB84}=342ht-ke4V*Wv5wBT*$S^8Lo`HZJM75p~e}N>apu6IZZH#F%YWM z((`Br(fItu_cK=s1jx)ov}7b@uPizPa}(bKF@`yo5Q>9{xGbyL>@kgXCe~E>%8(vMM*(P7`F0UOVs5mF&925 z$26{pYyh0w6-nqx2`Xwin+tS~fnI?XS>Y1V-cT5tC_hUEA;LUA=s2WZc%DZ!iZw6(73A*NADh9^#1vES~?9yM6E%$FLdsUC*;>0%)%_; zcY1@E;NJY^SQ}BBVBi;Drx=~AE9fiowh_#u-wJ^6g1bte9uqzb1OdK_fyy$jME8WC z#GlaesHK*-HAq*jsnBtz?wf3BGs6?b|5RH-rAa0fjKHd9C&(y-i~an^2V-UHOjt?k zGQhQEt!jPjpz;C^1TzXqFWAQek+;&wz+I8bPYQa)Absxw6M&7Icb+KMWn_5>@h_`S zh`C8_7+igF89TleIMeb&PX<$E3&uRE_ZJ^wOf-P>ByjLK+#l(uM~``!!}Zvz@`+-i zk?2jqou|?IpO;L1VV8=p&K)eb4^y_=0~ukz3vQHlcL0bPO8JyL9wIl+CXD`>)#wn3 z!;OQqkV;c`#ApjaR!37W4UZDM0c#gwW33zlU&f<3DkGhotCT>ea@$NZyM{W6ANLMU zdGTd|gv{j{!me^mXd$Wl%7Ozdlq#PRG|N#zX3|bA5o4{XO56Sj1uOIPc@7w7^-G#z z^*jm)>c#e3$O`RCNyP%FVcmvy*en<%1>f|=$=cNth{z?K{#brlOsW!;=+2vn+ zZWpo@kobTEC6|cZd>GU`$!-7HLn9=SeP-im5xC%mx937J6rs zXE2W;e|~^C9=o%35X!{(u1#RFo`fkcUcacR*QiI6;Ksw)1@Whom`>NfADkzApnJIn zm}^YW8XaZlXT*eol;StCx<+xI({NX(*OPYi!jnCDI#yV>1ojB*9wk7%=q5s^ju*&q z*7bNA~^*uPh1i@=eT@9@ND!Q z_q}uHc4OJi2KPPVAOiCnQbAQVGzenLaw7SYKO(A#Z%wA;yasuLepy)~13Q$7_l4wu z!svUqeD{?Ng#!V?d-@4kV0SkoYM#EwQXShb4;Dxpo9D5^I3bgB2-9&>!io-Nn=13X z+(p!t4fiZJ^_6E2&DI{Vv~UvW@Q>?OHUOa-1R@QMMlh!lE7PA>7nTi6${q_j>nL+!<>j>H1QaooG(y?ga@aPG~)H7aDk1eiZW=nkT}hhh~4V!v06XL zTy0A)?+}{4H39Ts_D!AL7p9Z$H2}o{o-A*6b((Mo;HiVeba;O*)R1_l3IV)tpl}+u z0n?4pNGb^EfB22=5V*Oq-QZa%oHPR%vkkXv~VFS`vC82RG?;Fe&= zgWv{g0Lx1Jo_`V)&a+HxarWkNycV}J%KgqAHcSyNY+{bOz=f? zB1RVcSPSPVJSr9-fM-DZd#e^;*r|Z*k{P6dKGo8Q21H~m@N`T~*Z~Za8k};b3P8O? zjRHua4YY;+Lq7oG8w)T!I&dD?5wkJWRAjY&^AfO&oIL{mdSqo0l*W75eMFI2At3~5Kn%4#s$E#te5@9F8u~5HBIo^7<99fy56d$yp}VK--+M{|S84)Lwg* zVP^`2TR`yui=+k)^4`4^(3OoJ0uV#q?c@p>Rwbj)fKI79Em8}+Qw&B3;QD5t zv^+^NeJsUrcVkMK4E3r$26Ghc1n?>DfpfsFA;S)?4XuBjwDSLi=y1qd+Ky_;^a6lz3%cvNNf_{S^^g$JSh4q%iY=wCK*1SJ-Uc#DesM2+V$3Nag zmF?!h_}+igb4a0Tb)+nLKozMfTG<57$eUL&PSI@)zX1qC{&EJiex4B;BxMPHutM;n;%TW$J5cFXq`Y+^wMpmsP+gZ7EG+4lCn-;z z5eQ$C%VV_0QY+o>7Mx~eQ~q}*fC6Xu)j!B94(k-7Z_Rn%_!Supzu}11A0f*h;apH! z>oZ9>9Q+6zFgrmaH1obciyXTMQoIUXefe^4+-I5XFbgSD*-Syh7k7at%pThdK#&ih zooWQ6d(WDJzH1Cc>Pf1+h1Q={kooiuZdp+*{UwR>qBVi$OjfYY@8yU8Wj!vX5sDK# zDPn7*KX-aKb9yrlaPr2FEla=34rQv9R$SVQ72E-#xeSN7TKiuO1tPx!m1l_Den1L4 zhRs5C{j#aJb>AX!bTHqQm z&13n3wTUeYUwOrb)H6(?x@K6JWL}Yap4OwB%WBX|e?&M!!4p$BVqT#UvWBF`a z(O_pO05=BR0{Dx6YLc8H|6UkWtXW3yQN^j#lm`5HjbY znEal2@Wt=5#_8%Mk{$02xw4cgFK|O%<~>ts1Me_Q@jZNGy%p&1ng74hXJf*xGjd8H z-`spxd#e{yWOPAy$ zf8F3_HgX+KIzV%UdNCZ>;;z39pZezg5YBI`NamWp2MRws1be#NPB%-K9}-Gu4BUCn z78zQvgKBg+Nqm~8LuBI59f9WKoynyaM)HjBnFvjY=j7s)F9rGU!Pgi)$zJPx3TXZT zGwptCaNO&&{&dUouIvuN`a3j?yXWi1zG}~)fSPl{GtClzBZ^5KT*2#Nk(QS$U9=hM zQSaUA&a$X=*i9`IWI&T_-rW552;d&*I*bTJ2s71*NcsE}yuP{lh2ViRn4=K=a2 ziMEx1_!G@HRYX>})rrj{;gbgn`-O=KMO;GP84IHiLlgFC+$Mpp+NDM)PQ&5+N**!z_-tHIE)1jT;Q%bXn?`Q(b~b!G`Tqkpktdjgo)@I<)SG}PZ@7UH88H;&P z&nw~h7pA+RG}Cj)*4|#}+z{KUy%z$iZ0;D^x*H=-Mw5)?He}Js!&1Z2Y}7ac{<+>Y z_|-{KhGb#JQono|{lU;V{>3$MYV(;GNH)#oU3l4A?E#NPt^ZGQ9jj>G{`F0AItd36 zw4J@rE?Hx>{OqB*ypZCCUJ4&!1Gf9Qm6=}+@s#%|M2BKaNp1t&H|}L#<9fzYyvboY zQqG+$GC%yfb-#9t4u$soLVVXC^()kKLt+K;C@(%WZHlXtCI#{Ch4KYmMrRYSM`^xo z&vhJ_ayMt6^*HcTs!?f79gacTpL_?9z8@))CcVOccu2wX;9UYpa{KIhamhMg%rTkg ziaFLH@V7^lZr5LWIw&QvJ0)JqmnkYJoBZ~Ih>HgxGJ*UD6#O-=dCk#_3ojeZAXSgU z1P+%bG#m*=ZGAjm4wl=&Q3bP*CNPp7;p>5)bU%OjRSy{LyG*NT8|8e2OmBlPF513v6RAmpaJF zdb!29){!d@Hb z&0u<8icr7%^YaUYZr|IV+6C?ZRSk^J_$qprXJ&D(!T4Szx*4X_`vk)Xo^ZUG40s?$kbHbE|>C z-hT{%{t4-KDg+krkWOZ$v3ukkxT_8y6U7w0_IEuuI{*G-86hz6ARq%bZ-JK=UVRA( zQVqvhBF2vxg^08;XpuN!Ag%>_>nlbd$>fsxXnAa%ybWhEPMoM2>`YQCg-%h}>79eM z3VyafG$_l7GQj#q-8mGfFDJaD^MbQ2BAAE~TCiBX7)Z=D>UB!G2bSW0zXF%WE+8Co zNz^Q?w2$^&F7W*tO9-Ov;Kx}Z{u4AKK&icw!TJfgFTTb%G9gd(#)03lDATr+J05Kh z=7@?T8%L9vJAP_#Ca$^Sbt?n*-7FwWnKXI*P>^dl!5Y7PD}PyG5Fz|@Xtr=UtZ!-9 ztIV1^0L_GXdeQLeY4(O-<=?^T>8?Fsj=7{Q=*9^?x)S68L}1o&z(L%u&x29uEQ?+k zeLv)R9dsFN&U$z6aZ?OFy>*Def$k!fhan5^Q9xJzo09qr9vqb`E(h{UwiqbZ=4gq{ zWFKh4r^-kYh&y|!T-trD*^*&QY|Lzl^f zm2IIbZ3QLx1DNN2knQG6e(kogtF)yhmbDX~dTNZ1#5%UXB$8Lh&sF9^U`Lj_njr*e>xnO+6S%RiFR5ZbJ=$y@a=*W3)&YSfgW(s zq?=4DRsu^-z`^#)P6!BFz)ENMP+o`gz@3pny4!j$uhBrj?&yb&ASqg&jZTLGD>PvW z?4+!V#uq&vB*S%-^B+O7anJe!osNgYz-o3Q|y5nyDHTN#7m|Q*g=lBPU**UgXC;T)hq3% zn#)hZm;#~*wD{wDDGpuNXbm9c^*$8K6K7Y_M#pO;KKN>E_3u&8XLA34 zS9$il>;!(T_EUc|6^gOUEC$XQC(fx0J*vs*E4{>64u_yV=vc~(36*~_F!bFC*UilM9ynCkRcuBwHXe!M^%>T#$Wd@4aplGlsq7mTC z!)#{oLdXa+w>-SF1ZI6QzLhswvu*X>quVOrQ^nbU!#LlmK_~uT)$DsAs+=>+^^qYj zC*_;blYbU-14e(@ILvPPb4P#j3X2t>Y6C_wkBgi-NAZocJu91(2N5`DaG%N3G1CXP zX+ao3St)q5#0C?CbngYnGjh9X>b>%lYWtQjvPux9f2h?lGS#j=betB%?5asr$>)qE zD0NWlZQ@z1SkmDt8_Dz#veN5@T28;EBfS-Mso_E8-A<<=e)ao!0BdwBB9Q4}HsYG* z`--qXbTEFxNy;I(`p)^u`vPg&-`2EGr{kACm5R1>f~5+G9@bnkOuh$>gx#RaFDLCw7759^xK z3-$e#3&DXou0xq^r3Ja+&YT_mMGF^z@Alp3?1{iK(}q)8?lYc_Gi>fzxP{|AY$$p& zah6gp8#31>mxJ>Mcy~>0E8NSN05dB))z3%oaR>>5D7AN1->>Si?80{y7`9dJ{lb$+ zQeyo>3ytx<*lbCgLA?!nV#~>aFFPHMzURNBtp}|ZU3Y#&I1MuL*o`o67AvEOdLh6S zXnR{1>~5dY+`!LQ(7;>+Go#a#m(GuZytUOY`1c@k?&>q1r9Wr$e8K)H+MqcPVUePH zAOP7T>-NxDhwkyOb)b`Xh!(9m0RgS+7cP4{qqy@zWm@)JZ7i!9&?f94z@_#IvulgI zN8eaOTc)BUL`;5@Y${zlMJe?hr-vrCMuL?BV2Q+`Q(n5@LT7I}KIs={j8?`_IGB*k zILNxk*Z2Q1LTCuB)~`30|D6fA;2iG@$lks6iEn)cmQ*6Pcs-pK03I&UEEbd)@e{vy zQr!)pk%NU)YpDa&&MciAm~t2i4gZ7rwnYw95#{efB_%{UocYty#+skUVL-9B=(>Dx z6}eFrK~Dj~>rs8w*si>O(?Q{Tq1W z%do_*SoEJR_!s1MCoQL!cp)7wpoyy^aGG^XN`@D_9!(8?f@~Zx4qR(`e3S+0s;Mg6EeM#?exB)g*u&bQ_W?qI*==tvGXk!P}a=b=Cj=mmU_f^IFpVJwH zV04Cx2TuXmgTEVZUFVnOOrq|%GS&UEEheMrU9PvbnPv0+d+Zk#M9KCa#hrySu4jlT zmY6FD$Em*%1$i$m=TLyDP9`c5RTcALAKf-mCFN!^2MqiQ-Hx$zZr2fF;f|fBby%8Z z4MIB5v|gqZE=nlo+x2!8n4(0T_yUl$etr_5o&lxW#H&k77(CPfX8unc5AtW|-XQ*s zm4uuhjUkgd;=Nk94UmiW-d&BACI(Ku`C(ON5_*+tobi$Pd$wQV9Ws9Wu;6O(tJZ=O z1fQPppIg?R8StL~{p=KFBpMF{4PwW`=dHC~>bEHET3v#l6SvX}GsxV__}P&ePxBvq zF}g1Pndq_1dK`MpSggQZ$4Bowi12>VELy$F`hGEwbjx|wBJ3zjy|nd~WFa#42hXh% z6Iu7HErU>_72i!y9r@Jd{Qx*6bPYyaaMsLn; z=uH+oZAV_&1|vr|0{i|cU67Qf=aOD&O0Eu^$}gi-vx6B7a{8P}&)K(W35!7BP&)tx zh+n-%DX3994wvv3=cg~c49(k%v26x&(xrN{2;Ko^~SVl9%T?Q2?>Fdx$g!u1nu?cLB&1ied)`DCfMIJI$H zhP!&2IXzAMR&S`t0y`^?cCIpcMnC9r>gz-2wnb>RV1Dx-d(KMl;nJm0&L_of zA~EQQ@mi0oQiin@Ar!JQ2~Pt;0#;d;r}Jx;XVf+#!z@;23{T4oUJvij%)GIEzYKaW z)zQ<)WuM^SjWNZ+|Dr!OIBu%Ece7b?dmY-nC~BfdkpRX+I5+WA9ZYZT6xxn^+a`BW z3F(xHG#n!e&Bgr|dHsy4s>^?%hzsZB_z}v)!obT;C9TKHE4CXT?x0EIiBZQ_+Bk-l zVVl_A-Mzd{!*zzuS@}_`gtyV9MH`Br>=E#qP)!pnp-O|8R6Gk;r9Ua}$zI@cW$O=8 zpmK<#5LTio-hZXI^5j6~Ma}bQP z;u>})eEm_mwa81}p9M$X-o9r4)q^hTl1VpLQ$`%$Nqf3&j3r$XW$?GUOGD;IAa-gz zF4QqC+r9H>pLEr)8U(kDHieN=Ml*N?p|PL70RN*;FFzYCK%0xO-_(Yt)~2)%Rc)Sj z6h@Q0qgsNp3pN~{`h+`vXBae!u_^}@4CAh zjuT3*YJJC+iu7~rr=nXRxoCc4y17y03i4TBsy7wtO~~7`!KbR^5HfPi`RHnc5=ysN zY6+}~@dgWb=*giHxr3j`XwO-R|XTXd?oPw}DGYDaZz=Um*-?uOIbz-~s9+d|tWM5x!4E$1X@L1I0*CJrtc zha@uR+y3+gye7|PRVD{|IwU5i-~^3U2`Io!LmmWzi=^AW`z~+jh*c<>1oclnuk@ps zdA0-H7CVO4$QeoT^K3z`gGwScXK&w+z0aCiMT%!_a zQ&O!l*|`d|L+QDyf*Yg5;TUhPzAD&H9TYe4U;pc|XI*mD zHL*2U?tbA7(sJc*VJzzO1&cMQ5BYeUG4bM7LuW24-V5VW75r{syS!YGMcI9vW_wm> z7ErM3s)_uvM2-9tNbeSRKF`v%h!CPQ%}oDpZZc4Cl#9OT3`-xdL3AWmGJm!ptK}3u zXMY>^4<%|V-cj2bbE|KF7-}ELDSoSAY4fVVW+@MXRo)(3f>kap7e2^g!ell-c_mF= z<}gJJ0{$=I&4ae*|I6MK(z|QP;7q=tG2-$r9W)_e^Lmaj!0h$-;YGG;hWK`(C@b!d z)CutjEuP^nm?kH+a05J=!4<-f6Y1eyn)=U6HRM!$x$n^!Y10|9n_4hGRrX(j zr2Wy%@^aPK{Q1xyVT0-oJv6;P?zZ!zW@pp$4_!-wme1VALp0|QR&}0N52N!b#4i#; z4At6?so`ZtOjexYUzOz=(W<+UQcYYl9EIG_#c;8pfzrUT0gn2%cZkU7OzPDQz zO~B-mXUNgxQ>7*vm><06^crA}3~2@1bC_1>HQ}R9+C+i`F#y*C zlEnuX#Ib_8baCDXj{GqB;LT}&9s7fA&{s_pRW`hMIh2>Tw^9P9>M%l(v}i!^i?+D? zne>c2rPoIm=(VLFG|KP9zoZ#_O<*HS3k@$JsH~|FBeht7QggA*5SuWFY|_<;_!x|B z|Ijen$Oh6YG~#xo15dW($>gSzX65Na${mBO5n)0I6D->3IX)pTQ$1ER#iaORSs@QE!vm;h;7YFF1LVq7O{!~lZ z^Gl8WZ*nK^M9_1^p2Y0Bkf@KTNxH7$-vc0CK~ngWtsjtOAqbkR9&m{0Y#6a9Q2C}8 zNl%-5O$fH2CKvJx%7xTWGv{XAWATu0m*AEGbGXubKjj8 z&Kcd=d#!JIp3f65Zi9%taB@Es?9J{CnFWX}ZV{hl#tYHRqv~m10ybyIcUY=J*7j?J zeRcUoQ~6^@^cY-ZuVg_)QYFx2>(uEMB>ET|?`X5!BWt4|qw^pjyw-@{RJLCFy0G#s zlnv=Ev@nJl8asr`ciZ=K-9p&D(y#RS@?f@yr=G}A;L2#*Q z`0R!7?1qNG%H1?x>Qkxu2mOWNaCMn?H#Ic2sH+CWkl{mKaK6M*b=WE_P!hUR!7qIW z_ULs+pY(*SnNX$R-3CVoYrRjBe+&;TzKDIPNZJ8WmCaaxT=w)BIvIWe^T73Q4gljg?AeuxoDlq7@)DmAo`&a-87Xt2#W+v7lg z$7!rBd2W(LHDJ`EG+{hmhoPS|HjY>=wD!a0dUKhVu>}Yq0(pZOeJ0saMl*IB6BIbW zy_Z#uZgcw+C&_I?Ct79>Y2_IHY+(K^9;&beTtQymYlg+$M5U_SQW6al{pfY5 zWwH#k3HCkyUKmfXfjL7E#>@+HL%7w&KP5%*`AJ1 zo2R#v2)oOZ)N&tY#D&O#`g- zS*aLno}F-m>dc?-j<-r>zMyWR^=yJ@FU(?(f-{~dYtuRqVq<-bX%}?$nyVf-_5i+Y zBJ+|s&^?jP;$+!bvsFvk&76h>RvP~qKSTP{Y)Gn>8cf!580)UJtZA&Tilkme2Uk7C z8BdSAZGti|GBDU+OivtwB{{G0ARl56g3{_&V1oqXU5X*fFCI1;lk~{QTf+=XGvcFC zC%=tUKIdujrNH0W?2u2WTBSnouZUo2efoMaq4OKD$KZzK6{0F`)Te}9oul}W>hH;6 zXG#7TXJu+ag0&EAr`&}VF4AZ0PUt@RK7*_6R8%i)K^ncj8mU(2GVe2?<37UM&g#JVvIq=_bkM%)~~8zS?hv_Ms2tKBM8a?fR&qxyTXo3J4ubhhVa9b8J?7;M7YV399g;{j705EH>Adk7MsQ#Y8j9f4`jr+hm9M8qk#; z{890GpQbkq`B*4f=mHpGQp;3ql8QX^3$a{$U}n&|Qq#_b)KuXyLe5E;;R?7M`DlE! z`pVFs563uFY;Ntc7Q-M%8%a{By>fH&`c=HvL)T+aD2~qa_}3BN)K;RC%F>T@HH1r_ zE0I9lUt@1*SnggfJUryO-}`#rXSPSbyDEDuG>~>}_A+QTx)poe&#a%vKb-BK=vmtN zUS-2vpcM7_!E9;mP?hG@Yo#AKd-len4VjwwQ@`Dv3^qZNKKYE*MK}zx5Z{xN;Qq)n zDJRkw?L6+JOk*{_rjNILN$?RvsGuiE)(Qo79&$=pr_LE<=Og#@FiUy6rrf#*KqwEx z!yPrKp;%6FSD0Bc6@KQuu&Ij5t#e#NTz0nv`W+x+_*e5}y%o+y%C^efT1(sLcy7Q8 z<~vCw0^A+Z)LQhFlVRSNBr_)$*YX>shl_->Aor^#62+85I1|fL)*TBKK<%DyuWX%f zV=&R!$g?U%JF2C}sE#WBwm5#2vha;`KR1n!EphZtkyvTP&RMO3sdsKlr>{x!?9hPU zw`*tIV|KNMV*}sEYCQH6CpqV5ru`ajwF^L&R>tvUb+Q@e5hQsR$HSW>yzd*_qrhk{ z=CKbC#HL=GbPx3WB*d$QoWOMak%Xhxg|P~6_0Iio+A(F#AWuJ!L1#%S*R)Y1cEz$B zZ{%ThqkH0a=L?v(l_92R=GYOY(-$}EH+}B1b|@MLZA|p+@#6wJ4$UgEPM;XupQaX` zEl}bIe&M1kA78o2Dz69fj3%hbk&{q|+ftGt)1$D!t+i7V4Ka5J@#gl9<5Uwj2TAlg zya`!WbmX`Ohre09rtc;EzKJqxR=}fpjR?^t*&)+d|Cm0}S)F**44wF?uZ_%%7G(@& zbQEboQ#UUx7eBVDKW;?R!CjadYbb4avfLEhS9LU!Tqn=M{ji3#kd58;sbs4MtoV>bQG-mm$0 zZe-2Mx)JA8PgA1R#2FFAt5lQkPp6R6l)3XFe)LR*S^lSjnYF~$E$vO|S!#9zPoNkX zin6Z(7lY>A2A&3;1|$udpm-DW3 z&9xWx1&dau8Fikcj!c}}@O=b7DP49CdRR;CLW0?=kCwd4-ZXd0B9Vj>;St>C$oK*K z{z)4yybhh^nPZ9WkKN_+biGLObUH;dI;afD-w<;%V-HT})pnA7(3&9L{~gGEuI{N$ z!t$zyAsC+TQG!Eha)(9v#z5_^_RaW+VNz@uf+<> zJj~>W_(VG=QkW1~?7<0~Y%)f0^;#e{lpSIWX|4yEqPgeVnj%7yH;ejsuAhhapToBK zt=55rrB@_pLny)8+IjeEm0|UtWbt=aWMSKkgOhJ}33-IZ=lAsP7Aze7T7|q*u<#x9 zedo6dPpuRy9vHQ$_xIS;(Ng#qv)ZqZ?}lfbzUU^Mc{D?|3xDL{BUmZdw<9zElDDn>+4r8JI%fi3@tUAxmn^eFR~Lf8|gktjZ#CfFS?H!3dG~z z`468_E1G66ImskeE>fC|Ho=cR#JsijkWRE>q>wW&@{1)AI>= zavgghif3l-t2~ex_O|)xTp9?4f1KD!5>ueL*?JIEw=w#T_jP~8&2x#J6VZl8;~bB3 zt1f#Out5BvRpu=U#U4nZM@O{PA?m7|%Icgls_@mdgZpu$Yq3Tm>XPfx&O{~LU~2|9 zQeqveh4f*2gZ%BWpL>^_H&_P0?Vytp;KR8GGyr>FTgPiSetbhq&>1W?{A+A;Rb=_-Ezwbq3$-AKN2h4aE0hGz8Njb+34KYXWoibnP9fSP7v& z@Us&pHdV+%`G?#z@dOyuR1nojCx_XltbK5KW4NNCvPga2rlY;oX2?`0ovasXkDu+4 zU!guf&}3iK{92Xx<#(1&?beA|M}-CIm!kz@x>wS0Wfx>-XHme)G*(Ok(Tt*6kmf~F$7w$QZSo=>x;-9B4$N2(Lud4*o1KL9#3Mw zHIaE*#k?is0hN4fy0tNGO0?tUcpcxSJhl=yW;Wg$T=MRXs_smhF#g1;Wq7Xm98)+} z<1Ld_y=-v4|LKoaKeY8Xm*sl6BO6+7U%cBeGirivj~hI;oINGOlSUpyop=h!Aa07; z4UR&vGqn4b#~x^OpL<1;&)&`4&)mJo14R$1#4dIeIQLTqCoLPPj7BN2nlTlMkZ+w7+NMt*3%3I@whm%#m<(L~Z z50T8()fonvknm+U;&r&IKacDH%M6ynA7J1=@TlWly_~GiB%`_(Ub{FXzk#G`=3ZAD zXZXhRI1}Ma{67=t%$1v4`5{#)jE%5$&6STYvJOWjpVcxuhkasR&$}As82BwkTiohr ztL9AD26GX@>yc_N`$|p9R>pSv%J*+v4Kr#|=50**HEwYTAwMklYuUz|2XrEw?zND| zxiQz7Pz`A{OOy}@~oS<9O<)X&@Do%=mMs@l|lc8L9kvcUHu)CQ~g4)Dv% zb_M=Y$3_mVc6zqlI_s4X9!nvIx}dMeeiYecd+ZDUg5smYU`Ta|JQDXiL>br|RH5h& zQzode4kSEd^msnO_S&5kGwZl^W_4~GFXe4imwS=Dtr*OP@N2mMPf$ z7L}%>CC4)~R@K?2TN(D4uyAm#bj!0xP+^K%EErz@dsdL@-*Z=C9+enkZ)~!rImDv& zP9RJf9ErXCt$6K{y-#)cJo6NrgBTCFlb{;?RBKa@p-J?skZ|Ysxm|_hsl>kdO0p_l zSGd4$F%=eLCcm)_MP6J<$!;(-t?!-TpSNWR>~5Uh>p0vz}B&`r7c zAJjsMs*c5tN(I&Z$p@A=2W6qfLo&sjc}L|BliJzw$zw2P{m|tjav>`(6fqwfu<844 z)nAjE&akW=QHi091Z1r_{-PU7u4H+c3#`Q1A;da|xXkhg03+yoSxZFQQ2P$F93^Il zyDwepQyLQ{xq4`wQ|lExibq5Z@d^Q-vlG>X4b$ggUr!N#ef!h89^kktcE6$+xD4Mj zlD3bkYlzL@Owf@njf47?H{fWoi*yFeI>*e$hFlRs&u3j=9ju_OhVv7)f8^^D77aD7 z=-pz>CuqswBDWp$L*tX62D#?^+3_42&5i#|G;X%5b~OX_e|hZ#IY+PCao*EoT{1bs zJ0ThXLzv7Rc8=a*0f|Y}|0EvmRs$matTK;bU14qNLLcE(W$88*X)JC)yOTJv(dt!h zZGemZ_*}U_wM3Mw)J@Z`hif;ou}nmYqlp{4wMM%q*s;nQM+R`TWp*fojrdP~VSTJ~ z>E4P$;O6IKY{Idg+E40#!l`GYdZh)Z4Dj6qj(syXy%pwAlU2>dF{*yn3yK4~l{!`0 zI#K%aD#|)ups|UI5(+JWDQ9d=$dxi?5dg1s?%w9lriSrC=xacm?BQf;aJIVTfvaqP z{?7Zt>@K`zASLsMYy`&{uV*LgC8QD2;ep_vAwx0U&l(y2OOVQpyD4~(Tqniz&3 zTA=e_yy6s5QHMud4KBSikUxi z7}h8rk5!Cu7)XOC@nU{J8Aac2NwB+R62+g^3m-3nglL$?N-)X?CPR}ie$Nl(d;0R! z>mZ=aFY}-N=$+i2YYdPJpK#;%E{HkJSl$b{?6o4 z<4~$K58mblyA1rumV?ndc1qMc=~nGlGh<2Avs3z{!^9BS7Gj(|af>0_V|mGWP#Jkl zB0eHO2uR7#4UK)0lfE|@Og87Yas-41tt8kaf0CN9hrvd%&W;8xd?(lor}g7!=&Ml3 zRkW!ZF*^M^i_FBl7-^lP4*%uL(iVSQYTexgv= z9eT8ufXpN0WLt2kqsL_G5wE7+norzBF!*RnEl7&1t}1z>1~a-D1Gu_6Uei&2^o~t* z7m^7OeSk*CIw&IUBtI`uBZh?{gE%|RVKkI&CyNvFAl0*O4=?!XH*v&U82|(rqLLRb zECRB=q`WMKk({eK3=hEK=J$OdnhseQ)zy5`=2EljD$3O0k&`)2OM<0CIJ|5iDpYME z3k;H3!|pJ3Bkb^WWv#s0)-0e~EgePISo0-tFke^sd{^^sV^P*Zs=388@5In;1U&H* zYZHnu3_WI@lJTgq|6*&3XyA0`-I=-BmVBZY%n^kV`ycnC7N7Qv?Bo!Bz0eQs zdEO(a|GDbqLcZA1jw+d#`3obhRr&{hj%&?)vp=ZwRL>-x!HNk<#>JoPJ$vuJR*{_a zUAs3hyH)dcs@Jkd|CH#_CCJ2a+a|-jJAK(>gr!(J zzoe$wi4S0b>2%u7Z+z6`Vb5&5Qq1kLf^x1TA-?>ZY|9osnoJgamBityQ*Qq#)hXGu zj1v$+E4FR_m_4+sPe|rzI=bwH$-`Ds@1+X&U^sN%PrT|d6zO3}Uxhw3ZY`!~hV5nE z{aBcPfMRx)*@@bza&8P$jENJVIgjL#%)vsjdpbvltWwuEZ%(WP=qyV5|^-*R?rOww7e<{yxD-&B{a7g~;?+)H$AuaVEn-_anedHkvD|f>Byq{2S%#uB z&(zX4Eh$sRdApkV{vNORj*x5tm#n)HYGtkZu;h{aJkxQ}178`LRo2vbkrTx8=vrN?^RZsOc ze;)3MIP$T|uT7^iu!N8#fM0&c(esPkU6uIH!QOYU2HtEmnf<_xFCBYkI9=AO*HMM! zy}l~-XX&@nE%S-CZx0CPALNBNv8$&h@2)?8`k)gw+j=YC)5YvW!6(_4yI5?&(717AJbuVlrUf4>cy;Wpq zBj4nY@N@6bcb=MxW7*ppc)jHoa?$@9oB>X{S8{-FDH=pl-W!jH#Tr9Y_jQFbzk{Sf zFX8xTNj^I$1H3jJDo~6#4JZvVI@iZ{EJ)H|Q8pS@BEwpNdcYH{Yf3tQUQt9&9pZ6Q zm`}&RdJZ7yj<~Lnr2TZ-Ot9hBR3%S|SPxixr42Q1TjYNNr*KYW&sbhv$l3Z^ z4tZm<(b6N0M_oTe{C1E)GLoD-1*Lyxn)9WP_^ztU=dIG_dG5&0L_|C2GQ1j~xVZAktXsx`YR58^beIYj64>rleR_=2DH04rP}u-aXgNgOPf{Os9J~tqQSlc;V~ow@1${56ZdQze`m^Y?%S`L8i z`QITB>e9c206tw(H~rSD$`cx2MEAoB_+gE{j0 zf}KGGFz?Rv*(jXul(_S!3Ji`)j&)}5if9vYr7`HD=-rx|+iRk+4IcQ1wrUow)GC4l z_O?8vGWGO&Z|eDxd*9^rHaCTqU&z-??g!R4U;fZ^(ip$HcxPwNDDWC_41dxbk&NSZ zH7V2){1)fU-QhL72h^=s9$)ZQ*EaPbhD+oL4V8**v3&8;SY| z-y=3tL1URBDAQ|S-TW+SAu}Knr5U`~(B1h{z$D&$kAG(8dD>Ps9imRpr_47fMp9Ga z-TlY#-)FT+u?#rlSswWr9wYD6@0CBxRYtrP=$>7=V`4{USldj=HqCB|Z~vy@TD!C? zrujMt9@yExcdER{AR$e(wgGTNTvC+t`M zc=7TTS2YZUpQ$15sy}UBTA>pF)Z@C{yB3BP1s%#I{PjS@VYBIj_7z;6{B_ueey*IMR#t{@oEp`a+4aMZAXQ|;rinnjj8y%X?*=YKpB6p471VZ zG%VtH_MKs7c0b=cBoo)-@KiDTCc9a7IloazFIS;Q$NgBQO^FpAYZ?(R<&x_pzRF+O za5{zv0h}051kDrEZWk%0`IA|P6rVNlb& zA6UqID|dY?lC5xYK(N)Qlj*o*PQ?_E>p!GZ25*-@M+PK%dWXuryO*v4um8+elG<$} z!>o+rfVs@thn)qEj2m9Ap`K9~r z$JkBB0pi8Cm*5yNFTXq;3#0Wtb#@dn^(fOxXImDE#?d3szT1hk_nrtjQ4LlCBLG10 z8iF%@8$Rh5xXY_eZb-dr?JE68iGpFQJYQ~yE#gnAir`h`pDeMLw7v)G$IsNI$h}{# z)hlqOW5os%Ew8ET&;#I{omHv-6GS)wKuc`hnDziSTM81y@>Qs_3=Um;2pXehV8p3l zqtz|;@E03XOo$pFQfY$8u;*F=H`CJxH(roR<=OLX$A2cx+ zrT9D8euli$DO|Jp#U%e3FdsX#xnky~kl9f8O2GG~&CXYVY)ZXj^=#MNv11`{ve95I!-!ayW3dqHUz-d?8_Z#kk=6ECVPje@9Lj z?dl5;E&W!w8LR&c>sNV@(S2v1+IH+_@*FtL`CbCtGY%x0UIV-H@DmVR$Im?l)8x0} z>%9B75qgJ~5;iUK`JS7wWUQCBN%}v2e_Zrl6|nOBp=f{`1Fk)x9lS6JLQyu;D$cKWXD>+rkGb@@!w|Yz<4t zol9PyUr`b_M2QK6SPdGvn;wBUJl8$JMLly4^IU^sm-WyzznS(6Xi2f) zNS=%!qHK_j)&q?FW55UL-vQ4=5chGnic>BqHjtB>nN&EaR->LWqvP#KTMhcoT_CL$ zf~L+Ii6(@*8N6ZMT zUUeV?TkZScWZB17p3+{BKz_}*&GV0Me(@0{aO~hm7&pDW3?x%VQV0}NfP1>NIq_JA zTvVaJ!uUb;OA510-W8&QFxbX9e#dIh+)$iV#_Tt+40G<|woA_YXhKz@y2^=++Xu0U zzr-j}0k77?PE;_%$9oF&-~KTq9R8P9mI0MNIE=YLzX?!>T^P{u?MgtU7DBhQg##20 z7TDw6!718(G%-`%7Dl21%u;<0Yz81_%Gc7N?_ql`dMYPBvSoy|u(M@IlfH(L7pEcY zl2}HY6RYDnyoMXjc6`@O5i*?oj5`ukMsqv%^#%t%dH)os8di4#b1M#p>63&t(z!Yy z?98hju-3Y^7r^S<+= zh(H;SGqzrk+z19aNEKnTfM)cT?=7^q4pe(tf)lcwbVHcB6Bt6 zX5rYSc3^z1L_cedI}LZ}xTy{g3>&(}7+m4}_vqzD<`~*?0NF?e|*DGe?0;TzCUdMT3^;MxHpmqUgnVh_MVa`3Jt{9E=PWzSWVzKR$QBAd;a}yh?w8{aZ!36c{rxjeclU zw{-pk%{~%;K1<&*F|!5r!TDauP?_f`lt_^UxIbPQ`~+yJNe*F^MZN-nbL(}Tr_?`D0o-7ieDwWWwk z%e{w0FIXP*hFt?J6tYiJx5UO-;Ic^@DM={|%CT1-BAUB}VD3}!0n5d`maukK4%)E? zZQUui^-~_$-Ra{-d~N|-5%%T+YfwvHm0YTSW1$CMfYPV;bf=53oU2-FvMnM05j zHDvNLT?){au9oTpj29uRF2mXqH#8O5B$yt~S*a|(01NK_&9_=-y0{4{-tT{yHmg9n z(RR(7VY7p7*){8+-jlY9PyL7rG|Z~A3n4b+%rFLe*XEr4mA=I!D|JM5MgW(W%6x0V z3E$n{OYf26z&i0hN8wx1BW0fG0Fj4NT6>H=Z4?N_FsRCbOWynj0Gj9a{i)kse#`e+ zCw8YwVvpq@?c$;AGGN?1d!T^Pi#`5C_>TiHd3?3Qac#!dC#!srFJcMK^0wM?I(E_G-zB(sh$a@Q?=e9`)wk}4GAar~Jx(iO0AxJ*4jU6t9Ro~1Ae=zL)IK@OVkOc|W87EjJlFvj{%M*}wi@+2Uy+XzYKETHL_vzX0!9j_PhdZ= zOKt-CaE`xM;4Z&-O0uwOV5+}(ctx^>=vnw&4Pf*y12#~5`Jz(l&PU0yq# z-*8G#cvbwd=y7%}dYINCa^8lCQw^bu_2KpulGm+hquBrwwWmmedPj*}}HtufwA#4uJW)uLy13{Fz zO@?(R`xCbf>ADkYJSIeQeB_3sDAerE;|+XBu@zrz5zQp?2UI*dN9lw>yHk%v**Je_ zC6G6M0RLje)G=!`3JgaHz-9cTim3v)}tYFYUNQ92a|9A?2C9D5(>W|XB^ytbTcDX5L|MDjFd$Q74(a>B-CTgWE4 zC*x0da794GNI2F9T37CqoVFr~zBne#qCB7972<-$D>Hi#X!P?cu;Xj}hP}atjs%wi z&Y5V0lg8CkaMaV=!smW!2md%xO^3?eL2kVS{`dji*?wNaA}Cuwgo8?Fed+XH1x&`= ze_l=~Tk&DrG?&pCpgVt8;cVu^mU<$KXt|a27BB)J?9gvGK6r-tbDtiGWn+LRc3_8l zsG;}q`Wws9=pkGZh8TxPXS*VMvThUbg{i9bfB3#0O~>eiGBrB|kzPnwLV%JWJsjBl zM;h6r#8=)R__Dws8;Fkv0VeO)-T<&+Fu3uaz68fq4Aq!81JV~%2m=eC8>|M+H3yc< zZ2p|B%WpuRaf<34n>b}ny^|t?n?Dbm!W}*rwHM5v;>(sA1kT|gP%EpMGCwx3@EQPg zlfi%dUB!%H1!$$LM(T&)m+X%6yC0bcmD!#6gfUGUa#>my&@f=*z27e0zYT&`JZRnY zX1-OTO8eFcMj+_qSKaZhF#w1@`)7+5Q5^=xjg7FuIUrNWZ6?qBg^XCU{Rf*JUje91 zp`bgj0z-^EO)eWrWQC%x^>Z~$6p_~&a_oaZrEw-2?SL5-(ZM|=U4lJL4{-3cF1sFT zvQlQs?!Lm4lfomG(Xg=&>V43$SzpKOc=GaGo#<3ObjsKWjsDHf~+m*Mu!druXC#a zcuGZMO(+f>KkDG@=s^YM+t2*Kpf(p0ORR>C-f(@4YclDyTn5h?9wkYN1mV&4H#7Mw zrS=U0Rk8Bsb`U@3gg{~(Kgosn_}qy)p$=A5K>RM5DHYJ_C{g4xkdQk(Y#CWZouo$% z%0yj~%G!JUy7eWu^Y84)m|Yr3C+PhY-j|4n*U<5{^ch4&v~>}PzzL}xyFM#H_|?Hf zX(b-a8P9p&`R1ZBLSx8}2I(taUam+ErX4fN)1uVkR}yf|@g3U(B{ubp6qPCBL=C4d z&r32+(@3KY@dWX}@$t|-ofvK==#6jWMp*`WlSRB{`k(1qSqX17)kg978c8F|EKKX_ z=ptC0c?U)j*+lel*&hJDZUmHucaM=WF){P(D$&qD`Bl=V;~!$?0Q25P57U8O2FLSV z7ez8~H7U3@Wmcr=7zYBs^P61`D@j|~qz|lXA!<=>8;?YO-$tiQ= z90|}-66o2++me&oD9;Ro%M9NZ{Pi!WXWpXY-X90|dw5?S6PR?`Cw1-QaXc6E%4g^e$e+FWWNJ$rO z&t{5Z{#l>x4F##)Jzr{XiTQzzRv~o5HcLL^`KvNEZ8dBp?B4h|J5d?v3Iq7J*6LJi ze#VkI{+w>yZp+AAw@3XV$vr6ZZ`>v9!}ALOKvcBQv{=xkn8=$Sm03sBs)|b0`ytO? z0}jc~{Q`cX5&lo}(i`xD$|}AB!4h^5T*KM=$l9vyDK^_7>1Q9)?s%9s?tOb`%B&5N zTeX2Tj$g%x&CH9Yzr(gXI39i+&6ai6SDIlD_kw-Yf@WS_LeaqsPcoJ>#-6x)O^C#i zckFcU!|t_*-26$X*!4gfpuF2|cl+y*CI`A&C6+y@b$^{k1Kj`l=(7kix?RO;$0gY6>Bnvz@cVv86<{N_6Sey{JiyNOID^Dr%zg;N6( zr8A-tiu&qf)WE!YJ_BWe{m}44UCRa$=EGm8Mf=-Tx&N)VWUH>A{+`Bb49U~rWvQsp z2D8lPAdrX43&saQ+u$H2HPUA2{JYj)X$&%}=WjOnPJ^#VZSXKfiWnA805;oq?7g^u z9#UkMPm%BUzd@eS2lMcye56kv$lPNe%!~oIishHbFM);Kvn7fSc+LAs8Vmz^0Xf1Z zJ<@_ir~6!CV(5|fvIA$VdM1`~G9fZ{JOGnM22!oN4t_33VcaUjPluhg#CXmHIa23u+ax z`BK=O;ZgOVJpP)tRlCl2KngQEzXg83`z7k@U+IBJSivGOuSl)uYEdnuHHm27yfCJiObLcmi@PSEIZ{|}nXTyjCP*MT(Y?7xvAL`3EjnonK2Me z?&vTixeQCmT(A*8enANDR~*ABIqo6K4TB=Wo_>xfjv0a{IojTE0zu5nm5V0vAHfkf z3x4<&fUZ5|(WdBS4r-9sSB`b+(}8GF0T>v2 z6MOckzsMh-I1Y7Xvq;(i*!z&LO@ZPggkDC{sq$fx+JXN*VBqUK!E_qrnY1&x5jP-s zR^JKhA5mb#{hp{Yz=pB>yXyOe&OP?xgo4sa_$LSLDzMs9A5D_0U@R9h(-s$_H>LzX zxNb7_0su*MnA*lg0JG^mYs{;}Ntx;L%U@qzLN$e%cVP2taodXWZ7QAN>s2}rky|By zw0k_!yl@AUWRr{#OcFWMOuDt+=1-r=+PDtOF2|5r@J3F0^Jv0FG^5Qy)2y@QX|ya= zta9|mOI>ZI!F05qiUujikGh-&M>Xky9$wTF1?u}7 z@868ohF7u|;OC~Qw+2R0+l{vc+rHD|iognUNJfcrAKF6l!~`MwpAgx=ChZ8L;wrnk zL0^Y;!W7}xcpPJ=~^@lk|E-&g!jA?tsROuVZLR5&}P_pz|ZV{t=~eF z-J+ATjTuu#oB;vGUZrU)jK0yj!cb{oM!yVZ9KCKGHjtPNVf#DqJvtYIYHFi+?9jbI znth@NjIIAwLwUgGXD(k)DM*I_4$!lD8w9yDD^wEH(p8!?wM1xop$@HI2zT{S*E!VP z7`YCI^CE}g@Fnr2lRFH{F&GB*!+StCj3UyrMCAueu`PSQ0eyN%MD-Y3d=wbnTmvl* z!1Me==;);PY-0)Prch*T+XNVKUx4n@FMzx-*sP}3y2n1~%!|ULE;p&)*tiJj2ZT^C zJH7v@iWcy<05kl*Z5HN+`jz1$N`xc=zwgAgv8P5Lo#P0c7bSs_Am17Z`gr(M&&#k? z+NzO3M%sccAJ;4=AfPc?ESsvCcX$*AU=ZB|Xc3GlGvE~w=gD5Ls z@+#n>4IqCP#)Pwz&PftKCj<6(4VVO<;t*l8$`^-UWYzaP78KI=(DW2fBw%Kh zn#QqyWd%9hVxijd!)%VNP~j4m+1R1E?DLVN@LaoA{~k@$+0G*bCm*(tZuGW}bPdix zW0F6{3y=ef!xt-VdC&pim0m3zo8WGv>^ftNv;^U7l)x8x zp3YKoRT)jn?Mo5Y9mszVXQ;@KKUCTd4o^VxjQyJ_M_=R*@UfVfJ>n&+O|Y7?TZxZn zR^7~LuexewZO-Qbs$AJ((}!{2rKXwhme~PmkvmATK2=MEo5(%%bWZa_wP?@+_Bd6)?aKLZWN5 zKL5j~&Nz7toL~-r=AO;~xcDRX+8RXP0SMT9wNrkxENI$RX+=L|@$`3r=t=jGr9-Py zzLR*CM*#*ZK3UQ&S5zcX4p`3IdbL(OSHBmHLOQh{3Zgu9IhMUT0MYZZ3=f{k;*aa| zV~+#Q_wF^-egXlG+Mqq*Cy_qKYb?C$1_PC^%Z)zqVFEEqSI(m4h)wV!l(;ZTRqQIU zob*o|SZFs&iRJSc{A>X4>i{*mYvp!#}{G}1aKm5Pyl6gkXMLNAjSKCFX^r5ZY zt=PCJ_UX?s41Me|Giq_^JRcL(Scb>W!Dw&exZS$_UP#m3DIUFwme$(U^FWpRIthpFvc%sS8s}eZLme+ihE*N_d2t_}-yM9N& zOi)4ew9M|9o`b0fK(zOKW17_w3BLhIq9tA$iymFost2QkU6;$ZW%y zcJ>p42s*uVHAX37Bt^lcdyn+;%DW-Z^^=a%Dc*yi^$_L-JBTgbL3_xtESVk>7*~9t z6XZbVXDgP=;fbw=PI2AG-tg6Taj> z<&6nzzbObxHRV&6>$f3f5L@g4XsL6>HbG|US@8uKT~Gw8Uf6d^ISn^%f^G4@sM|b|W7BGP1JIN>nX%Iux0+ZYG`odsI@V*fBi@vCK2PJ+$Gu!I93Ooo}@X6W} z=;#1@r*4=0U(%Fke3GQTuqE*C?80s58HT^Vg3wud_eq2Lu2*+9|B-;290z%C1Vj@F z^-e%vhW}MPp$z^?2)~AmH}j z(CiHZyvr+KR$C3u#A><1o5!voTGfId**|j%q*+^{F%G>mnVVph z@5VlI!tiQ;U|x;fvPNU9$pL@k!>1sX*7GBKw!(4Q$1B45qVzb&VqM$Cj3cGMmU4oB zFALEo2=kK?-;g&A2iH)Jh^ElHi~UWds>QJvG??^Qs}((s~}(3q2}Y3LZ&db4R0C=Vu0?GUZHW4Vb9Sz_J6_ z%`!yIPErM6d$%PGhj*5Mm2M0Zg+9)!JCzF-hn80qCpY0Mt*5(7D8ddinhL z(+f~0{F)igA@^9}76y0EJ(EYSjg|XQ&c&r1?^K1pNvD(Y^S1NjK+YkP2oGS2@YC@` z1it84cGLvbDL)Z;fj*U~2A7HVP64c(2Hm1(@!b~FK2t4c)9pkREn!*qBaX0fADSxe z1_MDavr%wgw7COTLn-2+J8IwCG4Yu(Uj}4Wq)5iA188!np$(g^llVmR@-!Z(k^J|N zom}ENeItZkL!n+!`#O2o|1HOP{`0Y3jDZ!P7Cf*j-tB3gX4|&HyJpDJPrDNtKzn`T6G*hM%HwCG)zFc*j;1VtgDDu~7;CSN0d7L> z0}16S?3HYLdDM>T`CIdy&7ICfrk9g zSFaVtYd@|5g}@A*Lg3GwjSV6xoqR!m?|kR!ja6;v;!r;TKD++!p+Wxh(0-U|Y=MI6 zosWLUrjIShEyKm(e?Dd^L3M4?gSZtYQ@%?*&O*-#xHV?6TFHx}aI7Byd1^Ak`Vz0B z73efCB_d#(x)fh%N(};L^_I@#rJk7SDG*yRcU;)@1NsB-UA{S8j+zYCdB?)ZyjQQF zDc&2e++^9h2M(LOx5zycu*3x!(tpKx8a@BykNKBYwR#BvsqHkGewCM+>Chg4dqQ1z z2FP0e=FG%rl^cYPMee@7yK6b*G{0g^$(U?Qt6Y0CI^w2&Zb!qrl`FJIca}^a$qr*G z`pP`bH+zi_PM;O(NDGy=Xy}?@&CpvMt^MAeud68yJSkvnd7Wxi`|&(zp{Led8R)pN zQjk=*49>|=kjs&|<@C4dHv7NRW7I!kzy#><$NZ8=2+1E$_CV&NpXa*9NIIIJ2XOr+ z@jI)nR&X0!UE^)bM;LyE_q+o{5ObVA={!6beW3DF4xs& z#&6xEz^!tsrDBb#`zMyGJWPLXg7^H}Oe&Zu9J#b}<8N7w`8SY-j?4WUZFnrnC}M{U zlwc3b=4 zc9J>Pc=rxa7_h^zoxscp*OC2HH(+Sy?{B}G%im=GC2 zQxjk_1k{H^^xiH1RLwd^sweaghGuSD4|I6;;CfvFUH#F?VDOu6oNF?Pl)OHbp_@7l zC2%9ng6ViQrBMBRJiLWROiTGmTL{?Q zd;nA458zugc(Ib)$K%9|e)4i@W%u6S zXh8*=D38#~=&Pd!uH{}W;Ie3E?ff3zC{-@&ADi{iFMt;FvCyk~Yjf$#3xIZ9S?{%!EODVC#N!0IKoBrs~Ui>J)E4CpiGOmz#lfm;Rz)UxNs7QZk0c-c4 z?##^Jl<{hC9&7-$X>JJu0p)ge%*iazI`fE2g(+yb5!_>by>d!A%XC-zZ^Mi0zMWa+ zL9N6oJ20=G52h187r@c&4+;(Yv`b(mI%7+Os+Ab1+F2T`&9!fT^DE5VBJJK2LGo={ z*`*;tfd<`4%w@Y2u zrW`7Yz=Ydsiss+>{YMq@|695y)H{d_Xs4Z#6|22F45MDg))BC?*Py}hiX^2*$a&uX zr1US(Kv)qJcO~KO%Mm{za-&9rStn5Ui0cm7s*~4UF1cq!Ibh>@*O-8LSVtpFHYv8t zasGWOA5p*9S!=M&;vLeN3<0#*LMbn8M)plgTQ@IiST+?~vIkVZriTExV@UAZ`R9}k zLo>d*V(Y7830dw^DeYZC7)n&qn`86;MU+_UcS&P%abW;{R3&M z5Drhns&!uAAMeEzn`Nw%X`Zmvg{$i__qT5NNGkxgfkewK#?cF=%}t5e)DJqICQ3DZ zrXTyltV&z?7d2pEx1L;@9n^@CcnP%AHGm&5(9{S>!e);3A-p~}bMrKguFoYi9Z8(H zPBx7?Y5-%#_>wwSjJ8a<*Wk7P`eY?U4A!;$V|8$CCH?RD80NxWfkUk{HZPVBUNnJ# zzRW^RV?&Heg(GtoBnzPUmD6ljzAhe2KM7Mo#n9QD(Fr(3BaV8_si4Y~~(j-GV29KkRW&!`ApI3HU6XND>E_VdRJ|5mx`m$?f+iU*xdzG}}l zZ}V2~@u62wzI{gJw9TslZbp1=tQ+LRyPax#Bauei(#3)~oAcbb!#23?eNwekuhr;p zu%^7GGp!MAGWACXb64~C7x1#Y8$&kCYb7S@`Tl29;1`Zu(vkCRO+)b~%medV4@au) z00KkUW2K)T|GO)V|BINOmJIXJxbB>>RTix;;B$AIs0Dxadsy&FEe;fTkXvXlVLUu- zHaROV0sg-F2okrZ!%3~Smg9sgJz@Iw1uQohKZJs7hhzrT5eC&FCzsw`l^Y_uf4{8w z?qWBQ3o)Ti1QM{PNksA>H`%Ggd4j!2yEOHAIO=!KM*$pNe{ z!-xduuyG4nhiM>w=5Fv7Uwc;6sz&w?h)zlU+Eiiv7Ay`#R0oys?4jQNd6teUD*i0Y=ZVq1lfCE%a?3HL|`JCTXwWWnb9nm1@5k zPkad5#vIu}ikF_}JKi82iu57}*X(KDi?`!5z7(5T7pXp}DiifUbT_I6~WoygesA3=_WiDa9Ve({!9%jpc5bQyh`@e{C>+-aBR4I$9UBkiNcKMV{c%mqn2V&SX$M1dZZ=qe z`!eVCcTnXfAVA9&kde7ySwX_JZP|_oUpQC;vmlc4Mq&J?`hGc8sEi0rBH;rVDjiWTnv1D8#;_#A@zb> zeNC%%<0AOmzn&()gY4OZLSKIwi=B_;5&vH_})lgS!| zOdA0I?}@?{LU70ahfPSxSq4Scdx1^13~dt0NuOZPR$&MWHJi+pNJyKWL5E|0hj}GR z)AUQ7w<~dBDWDlXSF80WrannS&JhDg-2hn0=tw-FmDxy3H}N~W*^_GN1SIE+K+=gWe#tVE@8lG{{jA>w<7^XXSy&z+gegEaJyx7o$-&zx-lO%JwEHS*I; zj_hTm5m(co{x6)H3b3acWc%W?qNX1`p7=g6BBSO((HfbokRKGRG$Asa_6wsm88!^B z=T%kAXq7`}LRxG6D^9Ae2GaHgAP`|;moVer@H30xz)wwsq{HkW6@ezeoOo1`YZd{1 z^c6lyH9**dW4;Sg^h8q=m^}e-WO+gZvI!i&^ZUKFH!3T`5GvyjJ!2!1$^vY7#_U{b zrym_r6mAI=jHD+(&i&yx4O}BKVM>kj%pXH;0J5;)7&}dkpXv-_YL+Y#_)u{)gK*~7 z{mLv=h%Sl-B|_!C2={TmHO zC3s!tu;+|ny>#z|Vy)f3nnV-)U-QnU!*d*1wf+RUyra8HH6w;c9(`{nja#IKG@cG+ zwU^e4$dG*WYfhl__wNJ;k@KNVVbXr1p_o#u4B*x0c4r_2S3)pMC2%Sv4zkqd3m{1} z_vJ6JC3hmX;-#DGL?T$+6L{_~sh^_F)8oIApO@;=b3dttg6V=dnaD3E-K#KQ-t8B+ z57{r_MME-%*VS4VHN0D9TA{%ZiZ z-!Kd$6Mza4DD0Mis)8P^K|Z;G1{Xzx-?BA{%fX9xV!v=h`*L0?d!G85)L0uNkX3xI zM%@qp%wHRfzUr#0qamPr1s66~r|p()%Jt_)6Xucp-MIFkbdwe(D)pn@?D!XxjTeVY zO?%lqHGj8VBI@tPa)6(s#lMyc_2s|9-f3C$<~_4JOKt-1FG4UK$#|!tc&7*#|i|UhgtinmNyJd(X*Q34Y)1(E8)*+u@&2y9)is#lQN$ zh&8lKSXYE900EG!!lzkmwhV79z`g2^>;dGqxiX6FJB@{z`~FONcAmCKJ0;Nu3u1!} zc$)l3I9tO%gu?{2Vf%R$QM z%Nuk2Ye&%UMp7@NsM8K$odBJ?`0)Ak@+^CFxL~F@ z@@FX{bh?_440&WQy2Zud2&CJ0IgoKtnuBZ$l@4@7FX5CG&N)HgK9B(A`XR<@sRuM1%bB z5E8P6`h;LdJ-h}zP)&jCdDoGucHI{UfN2p&9aGudMW9wprXN{v51K!Z4+2CrPo`Ch zRd352JkfAJ_vdYk273pO1|J5~WPN(J1Y&u4CSxAa8{J{il4nbm4INP2%_GNmRBa*( zYbUtcQef|{`XX6!3W9{OFe|K7-&-=FTfWa612}}+-1!dWkS%spiz2w4-`9mKI*s`q zK(`wpKz4jDd4t2hL;K@NzT)SG<6W<{?d_VA^0t=4hTxN{R3i+cITeJcTv}Nsgsu9} z)^F5q_$F)%D?z=rgTrWI$U&U8k|aAz=Hvgdf|b7@Y8urpvCcu6t;91wD)aYZ!A&vpuXz?2G2ZTABlkvwsRQUa1rPq8tCy zAe+JUV=LAz&uqx~RgDAlBLnA_I)lh}?u@sk;r`$|9 zA?YI(8d;Bo{T8&Rr=0T z8_2ZyXV8ANxFfQc8s6=D(PVkq)A00t5e-LdNE7g+?JIFf_qhqQ*0;0-AK2LCyfj&O zT#qrh)4<>!|2?eE6J+o?(;QbnAzQV{7@mIw6*NjP*`fgXPa1z@L=n?PQZix~V{tWx zX9>tP(q=Mt&Xo=j7IAzCK@%J)8&dGx6wtzSGIFb;iLWUB%{b22pf4eBCJTqoh=}X* zw1?-f@O!i_m_Lz$-$tCOwfO?_U}FX}#spoi6ACl`VL(lFQX`>UI{rgotiwC6ks^zcZg| zZ-4t_khGi-cD7w{b`aK!H=ClpYsi$t)|WW0weKZp6KG8#aU(?Zn7=dzc)gJ+j&JnipYubvE#LVLtot9W+6+ha zn`c8F!n*ubzpqo3-+GlB*dO=%xX(RGSnsViipXAc7qQlgNdS;*?Tln~XW)TNSOo}e7hC|c9Nx2}Z~ z*|dM47TDSSusS3A|B;-~0?hOO(R>EVh;+~t2z7_|B~V#h#pHRa zqO?g-87cLjKCGI!XMZ7_VdKfgJD&m6Aj{AXkuCc`&6RXkvGGLQ65KD5z0nSvLxGL@ zQ0;AX%n&llRMyH4ab2FXp}&}LcTz|EdnO;VO{c({cu5Bc=$!yV0fS%HURsFK<=lVX zEaB9XeV(A5eQsrC^!2JQCUK8_+B-&|pr#QBhVQ?50ju{hUyVvok1WFSv?e%)>0FXV z==cX{8q1qE)3+0U30m4jo1X2EMc=J$+??yR7MzmE{L!E?v+BMoy(pHyWD`sHII!@E zkLIqw`;zqHq2V&--g29|N;vi{v{i%Pi8hVi7)?Xmlz za>JosZO66y&N6PLtQ*0A{%e=kub1SBb-Rr{KX&-O&rv&Aq z4#k68(lVS2&&!1+*c_b??j2YWEpZ3GzirpGJ|Y0mgVG-W7sg-J|JV$`tFxj5qVC0c zK!tBGe23V>*5Lg zT^y#A$EJ=!+(X543ieObY(AeP!eP)OeXzU6J_2K4I7cUpXg3xW8WEMQ<128OynVg( zc;~gmMdqF#@LZI?Z3DV7vHTkPCWaB!Z8QnzPaSX393c+8!TOsaUOJY^8e8O)p-Utct%v4<8@7_NoA@I*bk-6?E&IL^Y z8YE};7CxnzW(y=1pD$RgP@=>$(9F!-!n z*Z^gBK_@_aHx=H(KUF|@MhJXv*Pi2^z^!*k2K1dpXz?oE#NtkNTXQBKE*nFJ6Wc)K zdk$D9P}2*U2~@#}s60_&MJy#|gPFOh_Cg$Cu^@pfhXumefajc;({}*UnF7F+Q*we8 zo^41WqOifW!ni3ig#!@pv;yFjfq#3so5_;oWZbdL!%qL1zykkc&r(-_c;Il0O`FA7 z<6lLd*cH9?rdYnq^)4Ytb#ul`d-T=WgB^SQYSp*N^-sNz z!@ru=vq*u%M!#IiBZN=vQ(RPjwjfHc5as9reSd~AW7^gTHx9v%8N}@ro>JZyiU22A zWoX@`7GDE7wH{%Q1VdB0FsWM*-)WhARuKyd)}1qi-tqnnPo{cv_*>T>GI=&Xy&>du zn(A(bLRSM7e{F!Opk3ac8V79I@ATXixcPp+G&$F?7=uB<|4cypDbBautGC4YeCPMq|^`pFj3{)Jzi7xb*G$_;QH-Nqpea ztP@)|$5r>K?X#LV|7(0lYuHK~>4y?8cj`|b2Vi`b{f-V_mHZJ1(gP+oiC zh)Z5Zj2h0h_#gRp7^JU z?J-!a(Q=Wi)}2+F&#$mVRZ zxn``zev_*H&l0yH`PxU%M&2LYqvP@h|JMr%jS;sBrUgt{BV7G{Exh~IHIHtndu~bF zk{g`jK2v0Nw&WPKx#`i*s(gHxhCKsjB3CEPRy|0ETSH(tNe`?du!NY+2R&; z_$jq>y2+sTz@}~6&C?44_3tw?>91WuYF343T~?GBW{RQ-5D&PN5DDrfdkWL^`1P-X zxk&9WAx(2He^YmwgfdGp|AQ)ahwUmr~y3gH!iAznv>#|Km#VE zA)QmY`4{zNYu}ZTYQPSbn>9sDrS`8>jA8f7KAyLV zQW~h%d|iQQo;i7T@etq&4}uYmu;qL)-s$d1BfdP^wS5S10d{oV7p*Rdv9z0!varAQcArl-cq}p!=GPYDuFt%u+zJ) zZH0LDXH9Dbpk1g_$tYHi6c|q2c%u736%q&* zeG3RR-ho;TiqH5h+F4Hz?%%T~^bMq3$^L?RTBwr=KzDcAKDa@d;>$jqj-Nvcx+$%VKZ`}XV~(cA=jju>jq5RjR?n0g+lAyjSdQ* zdXo0J8qy+;^J|C`Mqa9?w8jR;auu%1Hxe?B)bupiP}ue9JJBf|G5pwE48E*8nr%i& z{+qvCQMAw8WKHOUN8=uBSfsAbmQROFAJ*h>(U1?j*96)b>Qq06 zUsyOR2fB5L1>J=OFB_g_%d1uo^*@J2!4wjB+ZuWPUdr7SwE)QO$j=f;V}>fMhnv9( zU=1FTpHojlb@iitejk0i$d{|)tw*!}2H<_x3pX&IC2`vYxcTLJ&EM^3s92RJ;Zze0 zP(bmlN{lI&3!rKG2h>9o5}^h9RT!Y?ne7UVYHsN0DRJJ?yQ+NRUK{ZyrZ{TKT7^50G#@i)h zS|dPnbk)>w|LV_(NW_@o_Ab+I4(&k$;S2?VN?%2s;?09!Q}_SCY)ItGv$-_v^-66p zF?R?^y0>|E)z~crcy)FB*}nWbqrC9F;+WZ0- zdjTR;qh83eb`$n3Y}v}T*7MzD>O4a7t`I+nv{(6_VmkZ29bAml4@i1-c*d-2U1ktz zi+(Tz__%rB)LLx0HjPbqxN|Tx+P$OjAb%eFBD3EXm+12f_uJ;9_qEoEP4Kv1weKGi zZPC(Zrb@3LY8-0V?A$qESGzh^!cY5Fd-m)){res=ji^7oGyUvtV~y)K{Y7gI*ehRM zYkrGs)^>F{m+`ENxB`Z6FQ#JHE^mFk#hiPj(EpZ0BT%;cb$D1J0p`RDhtS*fGrD~c zuY%zV!^N*kzANtH&5A5!CydIrAJ&KM3l#W(In>P~_Eri84~iM~uPkqAa1vrBhK~Y# zV1Hi682+La$bp+m`p9F2)q%EN?Ex|^V+dwog;s|qBwq#Q+_N`()Sh-Kt}0t3r~t$; zs~N;X3;kg!1pF#}f)BzWnXg_V>Aka5=3P*^e}kd?_0GVklUiD_Q?2L0R2*??($x`-G$;h7)m zPfieeh)F5pvNs*n&D=Jkr=vW!1wnn1#})oGeJ?FPKV*%*!GKc*(#5L6G%e%rPd&Ip z+9x3jr$bKTc5X68wzB~2yBHOYeo%E-fIAwTb1J76CC=gXJz)?%Flj5ge9s*BJasHJ zGG}H;OKx}BZ!vnMR46ajEmZ#P{f9oR{qOo3231hAgW>f7AU@3yaZD275FP|i8V-2zg75nX>D@!4m*v>X~nm>V>j-K^wz zn(jr-gTt%XhHrV!Gza#+L*{%~byU(hAxGhb#82m-I^Nk7WF;A4n~n;Ghysn*?Fj}V zvLCjT$o7^b?~4+s&SHS-Wr@{`^(9*Tpime83)SzCZRxx4DQ7|D6LbG%dK>;FADZVi zIhy~rK~S-S2KE1W{7S@ZMS~RkM^P7-PTakiE-9T%aBvyKKGNPu!9%nppUo4xcc2Be zb|mq1sE2K41^p6?8xs<}Y)-SPM4=hCg>33K?A8pyIeUivYDBj*nQA@GvsR^CPc7?0 zVTRG15@YI&?HeAvPb_2C4NJzozG)PJbkh5l+mtmub`>4OcXb$M#}Ac?@TTe6Y9s*eZA!-$pq@95G{r znk5YG;eBZ1IGm<&-<>Gz$o6~}p6m+ef=bxsg08>MZJa9Wf8APKXqmUWwuIf*d)!#_ z{j652LE~fAnokWlhy=PRxALWa#$|ER<|meYN>0Z2vCrb!HS84rVhHxAb@8Lz@N(o^ z+fj!=bT9%6Y}4x;X&q|5ARsgSCF%0EOAh0pXd{VbqB)#^8JW>^=1vr6R()TjJmX^P zl>()mNis+1_njo@hGTaZnh`4Wz^1$sDUI0dnM$r*y8h%^^2!FZ%?JGBGbKN~)HOL* zy9+nN0@PM7qaors;j|koV(D7|VXuA&p{E3W>}>(c&zZPgt6U~+Ib6w3I>!&P*n&%ZRYJ95UcXwXkD&=C|qS0Tkso*?T z>(31*t+Knnbr&aXS8Y;{^W-ZrK35+H6|=tC&h-~sqGDZpUJ_@g8M z7B`3;MOEmz1l5a}k+8G~yFr3_vzfF6&-CSRqww9upzUvw0=GZ}xO1lKx-8$U0A?B( zWMYi|T+GGyxC+!2qF-O&X4ROi7x8Y1b!s?4bZ-;;j9$dy^!p~voeZaJ~3nrVhc-Bp-Xa5N3Mu=9;$GhHcB_RpicmDNgVay(*T zEv;QeiFE^(nyr_Qx|ij$kj>6X{wDhVJ5>I3eX`e&w^Haowa;OQ%hsOU^>9t-h`Lmt zQTzW|1?K`4m(wgzQ3wGn5T~1}3gDGULsdJ0qr<|*ux&h@Q?!h;_S#LH?>KXkpMHWQ zQpec4Hts0GS!ocxq-7~_plLPUL?dYz`n|!}_Q{T4xyWjz zPrCeczJplRfYKUJwlCoG7^Y(mP+OS-#vNmvj`HZzKe=`&%(Mx{GHip+i_Ym%$3#Gw zk4*3zCg%7*c>EX9{uz4Rs-l);adRS->-7!X+*%4z**GvVyQrG)e_u1>(^tg^)t;M< zMh91kK4OltwYK~LQhD9NxGCqOzc6|CM|pMY)AgH9EXNW~6zj2Jk4IE6EC0fkevO`2 z%k8{&0HmL4*;K#yjpV6hz(QuVG@e;GF(73fBmR$M;c{4tJRe5_cX6^?0-vLOvbsV8 zBMFIaE_>duhsRWrM|X2;FElR`&!3f=%8*Qm_k`}r^)|1ch?82)-6NjxQ?mDsFK32O z8B-+X0gXZH@(1_SX2QZg+~t_j*Uq`jc#H3@&nVs$11Vr}!XmOnq$8ZZ)3d%G+V_F` zvO~~i{SEl$M>{w<4>~25hpyU7J(Sisswc9d8QROV zB$1p()YDF#ObYR;V~=FR`$k&%CT3rpzkV02F9QMB`gBYkB=`)>cexF9HKXv%J!0_b0hHY5DUgmySO~Dm$<<}M)fqGgq83|2I zjIe{i7C&C`kvR9eY&v2Z&WVYnF`0V8b$0jJRwGnX70W!(E#Fv@4s#L}!^*)2TmT-E zTMF97$`X6w^Ag`queavrocH~0su@zKf2rdb*v*#8%+x%1`fk6THf;>pJ5PDgY;)F8 zh*j&2dSL}(&k0Hy-Z$@h(3KV@&%ygWn8g>DPgZtCVN>JoHBCe1cuHedB(;?pvv|@(9OV+$)AbnSACVl0%yzbiN?2br?|8OfDvO*92JQoFwBc* zp7J7{_qd$EO!Hha&R-eA6ZTx=uDyittxnzY4 z7RBA*={o0w^5*1xU${ZcWP?(-ais>^>Q{^Y!+-SiWFN}wt=M4ZA>YzIy_B4vpPdz~9&PU@#f4tA z^)=rEnaA85leKGgfGRmtw$W-v)!D-u*TRB32ThDcLw{IOZ%@m4G;Q|OQ_=M}D!cI7 z4H2=EzWA-h{1*_0q(xsMyoUFY6iPt(q8nZU6(XNf{hNUz*6@86-QwVi05+PWMUO0yz@2`1fE>UJ*Bd5|U#2J4z+>lD zdfSCV&qZWB-{Nm1-lZA*BpowLCwAUK!=H9#?@(jTgAeDJ-6(Dw45*x+5z1nn4BGzu z)z6cBStePqZZOoAOIv3n@w`{$3k|Xq{ZCh3uG63RZZ*H5J^9$J6hWbDd4-(KGl{&6 z?#tzLi*~dfSszMQaj7`n5fvWB$>e~dQkcb@b5w~gOv)Iv%iQRL>q17IV))%His=p& zGNlUEhH!(iowce?s?F>Vns#6tSVK{E_!vCbCFrl{nW+WCF4pQu2EPS3ItptACN3#L zU)UnW8&_)TakIXqJfCr4MTw9h>?+`AZUBsAi@YU*WBva(qa~!RWI3*`e zZ5nZ<%x!=IlqtD&?HimmPwD2S^#h$WvvZUIf7T}CshUjo%Sx#YQH9KM-Z#os)L&lG zE&JBDl_bB0x!RBHg^Ku%P1v70@*ffi6(ExO>M;&w@+YoU?IaTC-vG_Em(k74;@ibf zOl3H!zjGQ+nG5o6WzZK)1rV-U(3M$V*!bv`ILGSH1}p%vlS9CAPl4G=oanXJZjZ@v zG|XnJM0lkq!-eByTq^UoN%i+Uw#vq18m_P#@z1o{m|2!|^U92!Gv!M05ic_skRErH z_@tQWe!?o2A^3>Ub2xSE-ZOB#$V!_-`9^`zP6YjFdMtK9~GY?%P|x1v72L*LIpWs zoy2r}6*yow_#(V0oASUmXa)#_cfJ-;k>uaj(b`ytl_E9x33yT}dJ`)!u=6lHyvW&; zsKOuy*MO|7{`(ssIf-{DHEYnsap0NFrHy?v9mS-4hm$)4MozRZ+c!Lf&V1=l`B9$h zR(EY_%6JG<*Ka2M#FtAI^DOAB5eN7!v-?4Xiq21H;!^Pzo2sle$X-t%UFJP{_) z0ZI3iwgJKGxlYg3QluW!Gk`JkHXy^%ELejlZYTWpEG>Wl1h{Kg#I|dZGfPQ}Du zxV2UOx!Pn%PhZkdZzB=Ke{7hcgbk1)Qj z8~`i5URB#NiZ6Yq%~Fdhc-`JG6NxS0aSmyI4>0b|>eDE_WV{7S=$^mw)=SA2yV!y< zhMy#Oa?xiYs!YOFedG?P9!q=uO#;ZGKvd2Zt#>ABqMs}jw|yo1rb@xyRP09&7Dm}X zqewK)yIQ6&NVZSIxG;OVquUHs zQp3@!NzlEb<#O)yiCEMnasy-Yw7S+6b=fJxOuW*vkBi-eRI;3P{LjmlfNjU1tQ8UW z&PJb4N@FkCX&#n*rVqkNanFBCG6l>6=owp4E;pPDg$#k=SOb3ZBFD~f+am3NLED6; z=n{3NuFGm#OJSy&T;8Sgo;`TvLy|5fL*F+vWs8(a()K$7hs>{@1_@KBt7LCm4G*u` zlP9xN;9q`5*wlArM56BV6BEh`tV@AryeCO83-hxyt1@Oweduc%Era9BY!jb!k&u;LZW?$3FzQL)C+)Fdv0owHWmLCLFCamD)^dN_>)WQ?R`B) zg6TgEQ1@nJ&Qdk+jLF@TgPb**6JhFQEVNP9XGqwTLxRe&-6zrKIWwnB@Zx>sce({p z+L_L33TEyGs}Z-4N9o1gztsAc1n#bRvGX%qaeT}{jUp}6%b1rA1EUBNeZ(-&lVcgb zU|m)WhB|Qz<)?2Hx#mFGU?P!mXTyyB^V@zDUobQpb4oD-@hjG3245EZfrgk6uF?^+ zcJ(`R)!EmTJ`Qsr-eCy!W@`dltJ%dfV!G3oy770!>}Cm&7oCBmx3y&U7M_ub@fMMG z*;zx@7j+#&QxEMP+?EA3s+#F0jD=m|4df?YCGx77@Y4#D;Oc4Z()v1~B&M5NT;sL4 zUsPjs=kPLFimF41iD+h4X>FEp9sV@@9fB4kPqqx)E%o2LQX1Q&{e7dsy>YcpG8hYJ z9($w(+L2rXRm_Rf8HH}LC`S~P< z^VeloH?zf8TA2<1D!4#l^dS`{|_&w`g>mZ5;3R+iMBjP%TQ$HCx36O9Oj zFGexS!X26jFZbQOwA>xwDelQFm%o<&!=o#NqGYCXf7(YcIzfBV`su<)G<;xEb-7Mc zH4}d0-9nPx=ynaObCT31jfz93h1QKnF@KZ7u?J*?7L2{u2m*g>DUcgfOTwzqM!ht&x$1y8T2pq18)mr~Yqy3O*~1H2)Vw{uy! zVnlX~0kDb3mvFBYdv5g;`hGhr_LROsiz*S<^2L`Gbynq{cHw>>-d{Gx-vc=nMznP3 z{EIfN>GXJ-ul_1*k(Sgh6#doPu)ZdfnYd@#v?u&#&tQbZh`3;G8T?03ovYN!N1l}A zbdy=9idMy^!cDjy`aU+KvKje6OmP9jAmZ{wdaj#^VedE-TJ@ zZgq+qTE3x&J;2h@E>G};kC!QE&jWb%GhiP^20(KXVFTKaxqcsf<~pFYbdv4eC@3x~ zwB>P|dQsetw+Vh1Z0lDdyU_VA6}}5O&OKqK)m$3t3~ZgDzA=9jPC4s|RBOn>WYP%~ z`7`StA~VXUm8T}O71gjFVc;`(L~kubYcYQmaY_%?Lswi4v|O_0ysME~;B@m{G?nIK zsO+0T$=Mc^ z_B4$g6QzD&%%7BUTDUH|n0ADuI!QTPDO39K275l|w>`|Qb9DxHzvU|i_S^}PU#oY* zE|Bliklbo6Cybx@h8)mjIkR=+6Y#$v0UudDBZGBMCfagy${-@SsZ!(pkok7JiV^phZjC6 zvp7xyZ*M&m*I2~=REL{WMdfyBNmg8D`HQj3*$&m+j1-CN;iJfHW07AJ%&mHjq=ftq zd(cLEwVSZ$Q}U88R;fSA4gUUi-C;S+j>nUIf2rhQ&&D{=*_a=lA$S3-8ZXMV>K3mr zq|3v|ts40n$~^_JrLSR=`O#dmyS$XCV|J!AxxK}{8Pg~S3szV9tctgj?=Iq54O8Mt zQ<=%mJrS?7Ps*g@(8?ZY340)qsk6y&TcnT)pN$oaV{>hEw(iBLq*e%+Wi z{nR5$vu|~oMp)PvFuW9_sV&qMkNid?^C%9?ht8e2zQ^NiZv`Hvd>&ZUdEth>e@V;4 zW9H)g@dl*(oFri`u@Frnm2%zQomdZ$n$Q<%T~o%I33nW$>L(Z^3GRz{5PV~Mx}1jJ zcF_FmrGnYPybq_Uk5E2M%B)(|hjjj4BhI0t7k@qkqrWv2M(VyW)7Sg`Qd5zEV&Kwp zxom}rZ*gBJNY3xM`hVWNWL9;vxi`Su60p(g=kCz3cS;^pu@cdqcrFu0{|z{(aqmn1Kiz@e-}$$sf#$i9KF zp-vfvS=5sUl&T_XdS*CluWp8Tzl{Rjn%V(LJj+J>m~_KSf>c-&#U#e8+QG*#w5pk^ zjwJg~mr?uJJl9+UF!PM?9TVT%U?O}P=zjMowTzmVKvPc^6}Nj?HhViO+7syob>E|l zkYGL|S6TkztzmU)Mf%P#B13Xj6v=NuO>PgV{Ad=blQ~K1iCXN~NhE+?4) za+pFkpLLJ;OiXAT3-2Y#Enrs7n6as5jFB8>l3XIa*MC8<1IrnC5_e=|a0fc$#&^>z zQEv~0bz$T=Es2Olt+cK82VN&$cA>QwxAKFwK3Hxh>(-fl zl!q>QPU2OzC)I%5sqF|>2kNm=nv)SIqn)>M-543cy3^=?Asz`5WleX zjkpgb!6|-ttmlIB1Xo!4m`B+{FP_+jBW_@^d{2-U5kIt8qih_9i zr46U^{3eg)TY73Zc(OG!?OR%(n7CH6FPjGrT@L*7i)KJlHs34!#*PHqu{1&s;sS=Y zzw1I#68i@R5r(D3rSYqn?8Bt|whH)dJwF;in(0#h;A^&orPi-xMt92ZU%x&auy zW8F(FjvmY=$z1-1*ydWhg#cvh6=pl6ZW$hTqn7RGi2hKW+Np-2pMIK+m(@7YsxLDB zKqJ+CUmcag+TPY^gM0`B^i4C4OY;{z@v$SdWm(oeNW~<_9`XL1imWiEOzCe||BK z6nfh^X$-EzqfcyCF5?>Hz700=u?((R*KXxR=PT%xd4^HlPN^(~R^X#!$)zL-i{>&r zDW;BVlt&1JZ3CJfiQ1oSZXraK`JguXsxpmK?8R|t@T{R}8Ps;l39a>6*d`OrBcB~& z>ff#dKbe4bB6B=bJr#3T5GhJ1=rE_arT&fuH;}v;FQT*`mQIPD;8WZ6H_a`Za|HGR ztImU$qgU6#_2e{AaP2DI&gNgZsf#5wzMXQXpp4DR-BeE2d_Py#%h3hMC?f!u>Fxfk zJuga9>(UC{rQ=95u=`Fc%H8S8#4#_-$g?HMVcYz9p67Y%22paU4F1T!e%(oq3Ax`^ zy^gGf+)40w8F;UR6|+<;p3m-RBOnyLTk*!iMgPT?ioAhZs2Sfpg{zS67u|UL!XUy| zY2QaSHshtO(G|Bz>;HV!i+Q#N6f&x(mlNZ{-ONv$$7P4sMz6wJs~$kYP8*-kLxbt& zM&si^n6o^?c^|}-PJeTOT;1(M+8_90(!yAH_}xXvE=)lGUw~2{QhgehvU0AW9&?Nr zbxf(S?0D~M>m?Zf+p$(*3Xtdy;94>uQw%ejkL>c{Z=jTS#oekEEzx|?vTdi9gYJFd z*9`CB&^LJ@!xbh=KJ-Vjt{;3qh_iffC&!&o39r2zn8?@|P1;7+w%(e0A8e*=V1D8f z^HJK&mCV~KbsU^pSpm8CQn!9IW0~52Uv{l(LIKQcH~o(a;`z0b*jON40+oF2qv%_k zqqRk7;U5_;q4d8O-m)EofcNczIm8rT%G! zC_@<~&OA8KY2vBxg>c$_e+18|`Yb)(B@{mH_SQBVCK@NQ4QN7>!ap9gTuz(jSd>89 z{6@&)^mWkAk1+1TkScj}RsH8@<+998P5Jg$;6c`Xo}@?*Mv#l0Kx*fp0;vnaPV8aq z%-iM@9E3LA9t{;jJpb_4eNm59ZZkiK*@;G`Cn$F<76rNIsmjCT&qe60fQ5Ba8vz9x zq`XpV@r%Gy^aL=t$EO%d0fgn;P_|8&QLc3xmxgyjN`mdfqJ8Y|o+Zmvp?DvTBCkul z=cfa~_o&xLdu)*I1hEyGm547CUDS-m{lfv5stF2=2R))m5d$G&SB}h6hE32uO1rxnCd3l{6ycP7kmf#cV$ZX*3U$2g1D)LHVt!=v{uj}H_ zFOk0*=X9!fpG!Tut1mUr6ftAkJfttvK}yJyH}cWjg$U`G&^*2L0ceX%pHKvli;4Dq7d4y234|^1 z%9(rL!8;~O!ikhu%fFCpt%`Z4&MPfcr3lZW`qDHku-OSOp{o#}@BDzmHhOKMF$VTc z$`-%%GMnzuIWP+;{*WqTt$F1zU7!*+)A~+Jif=)_LLYRX_4OzBmVbzz;K28v5|Fs7 zlwMWI`l4SC|1L8P_rgugpI<WYa~)Yf&4`c1z6^jb z%ysi9rK}p7@xY~Hn<|y;tZim7_vyUo4US1DzyU3)gV&Ib`};kH#ka5_5TvRzvPG++ zfm50pB4;zjeEsR0QCd9_n&&YnPB&_ni^l_@Cv=^tpbw%t2A|=cW8C#wS$A=sq$mC9 zf}x{>3Top@HNYR-QYYZS5g;?OuhOQ;rx2vEvZu;6(z zQkJG`S6f+L3Uc^!U>x+UpD+wf6yOmrQlni?rXh7*sQFw%zGrp)F8*N4Gp2Ai^9kZ zc|;W@Gz-^+5y+mz+ePXf98=ewD^O!8 z4Mg$k=hO70{}f-;B?@v$*4I2QG)23S10DC72Q~C+zd(s^BaH>x1no>)g42@?cyNO5nxtTN^x z6pcfKJugGPrsXj1NSRaOtCU%Ks}de+??{@N-JHNeQ9zhjj(?3iw96XcIbDj5kdvla z@eUMMT3OsbxdBsJEKUh}UZ?3~3hfuLOSNpdI+NY5v;xeQ*aC?IXzT~m#gJnybAnp0 zBXj|=H((>nznOK-aW5Hv?V#=9H#4DnU_Ez&E|AswVFgUcGtiL7+G|@UUN)(ILd?_N z3Q(@l3iM-M*WZ>B5tHGWq;>@#CCn7UN>IiIZoO&(v0f*FjXQZRIy!fC-AhkdpK7#$ zxn~B{>Qw*sh7BmPdEjS#zB;q*ZKn|snHB6i1FWF9#UOng=!NMP0ARm#pZzl?E*>rR z;y{Z*2bI80RNu{L-8D_}0u80AT!wR`cWYK5r>+hC%!M@p1Zln7J5oO^&tbue!Rzrk z?QFGMqjMyS6K0%dL+n8B@S4)k9Rs#}eb2x!J$w|_NCn>w$C^l8iWnq1A=9KwS=fGd zhsnXAjD(J7f!}S#oUJ|}{r@m^-SJTW@!#(3Lvlq{M$RUCpJeYlJ2QoB31vGYGQP@| zQRboSh{DOpj>rmURtU+;`n^B>et-P_>kl4uKA-pd`FgIGUrfDMsmBpe3t0}t>qSfb z6aLJGC2H*nlL<#haYY5v&03I=wjic{ks zaS?jROK{&B-Xb1-^)xp8=aygZ?pIQEE!;MRdBKSu*x6lTUWRGGhhA!MW7-e}7{bEI zlZTIHVR)nHCo4Mem`z!72ZZ-Mcqm9`4YOjoZqxyy?xT*fzt5S5^Jn0A5v0(gT*QSs zi`H_bXg1srWt`NWQ6#1vO5OtT7>O|5J(Yb1pb49vs5rEPq+u-3x|ABp@3#FH=}e|9 z`{o?LE+;`Pq}oc%APt!rd)hiMxyN|}7Q9P(kWBbKw{R&c|Gd)9RYlWf59m)%(=;d* zO{HpTJMN7SMT14s*iO(7GBha+Pbw~>*RscNzsAkT&0eSg_-b_I6@ zZ-?!JIhAsr^cR@N$3qfS(5Y6mJT?H=QS3|a@so9Jao3Jf- zE?@QSUeXpUdzleRD%G(&xZs;oS`qAEWHHN4INFvLZ01loKdGVRkinZlYOd?J5MGjI z*)Q~C&=df3m(>d!en3nB*BC^=*={=!z1?vPQw?+i7nR7^S%!U2rnnO-L*%yOHj14;O&(Qq|ikKOgd7l7E7C(VCotpCNX)@1H_$eSMn zjs*F}i6W%EI2n>JMWyVcam0)TVv2r9q67H|pQ}+H~X0D<4cgi6bcYC|VHrhyi(E zt93O+iWr#mNPHae07&0-UAl*EaIilHg$@!Y{Mwjy&SOwg&Zd5~*@KIklG*MYEcAK# z`cP-@HpP9)RHGNsoOGLV333*udNAwHXBqK%=>C_ZtP#Q}o44N{TCC4oshtG_hxPp}4gaXVkPW63B&jbQIEcMsA)NO>1s^SydvDBF zD*6wM2#nC^pdvh{niL6F{Ur)v6y+;Mc|IOg?+F0xc|UH{g!ytX;~^BUE`wgFdUCPM z{VB03suXaCHZ)~*AB5{iP&ExgX*xmY!AW<%U27U5za4Xag{ASn^4gf$3Fs^F`u@rI zD!0~v+)doJPJ$iD9OP&imjN?DXOj}s$&vyBU_kIWqI0jzLrAB5q7_Vl4zCiWsrrTL z^ePuqC}{65QM*tiAdEIf3e{<(#mbp4W=xDMkYScDiIj?iT7`eRbBR>DI8a1wv+Qh zkExLpgob#hMC%59YgQn2DtV7uq{;q7hUE?;JJkBDNT&sTqVdn>7qwEq++-Me#SABH zKR+4{!-M3n@zPqZm;iX77^{3-uzfCG^L z@DOb@f~e>vb6R;kWseQ=4a1ef->hjCF7E}LYivjI4glRr38`5QRiKz6=HImmz)j6K zAB(5a=VYooAa5*s&aGCFuS0&d$mD=R0TcjL|02*bI`(0~@G|MiWF&ChX#Ybtl zub4~8rN8f+`ap9eDEk$FZfIYZbh=O+;Qr<3pT;}V0_-fLW=}rnr*>OG(@*!2zRSSbQ1usq65mu z8{*ehHSR`QgC(F;)*cO*s8)_~rJ+ydBi(Y!1f!wBH_fZr&@j+V?Kk@FnUc)C7Z9`J zG~+tmpYhi4CH`uMv&c_ErXRR;x{;BVmG`lecOU*TOhbuWTFlgN@p+~%{p8K+o?o#6^T3N1xU&M7X@uy=9S(oc`h*4Y0j`kW z4m{V1;SeVxNp!vZdJsv`t<4?|^}u!Ezmn10dtaaK>$l_!zFW%?#YSJEif9x`5K5JS z_m0n_pT6`R02~Mc5U!0#Lz2=9HrkEw<{e# zpdhsa3AM?I_i(X6(A<>3^}9sbLU&yXDbN7o7G`HN0DxW%H*bcS>|DkcT*NdZcc-F_ zG^v1ixpTXOBbO+n$Jo7B)>^%i^lV=Sut=dCU++=t>_f27{1Z?<$HI!j2D zED+$ZSg?#q%2xGeV2%-`nktTX_1ErX+saJO&gIB<EYcC4B1YX44Yt{+ zTucR@kgS>Is}~X-`?xDIo;H+Ldp!tgUPR;guX9s8}D>0(9_2 z>;E&vZqGj)i(pIh=?JfqOURG=6mFWTMd8Bh@4bw_$p=IAMqaW<|FY-IoJhckyN(ul zgZa59p4-OKfH?x3Y%>4g{(?^G7co#07K_-=0=5bo^NT3!ZxEM7K|r*+;N)g#a^6Xxdr&8*i6gtvwDBYb>!^LnHcI!rC9l#Kj%3 zlK3N>6LSrcQJO?wa`UY130y=ue*ifxEVzfGf!d_(Mc(ewIK|iae7U(ysLLmIFP@04 zLycr;W2~IV{4y3kC1a9x0vf{TfXVV!YZyqdJatg@MB^)euBF9PgSd7q2;(Tn9O2~O zgUQj@{QxZWtG4pEFkD~M&OtySZ;CW6L>5P=AV2?p5gQK*1vVI>!pT(28FBcJ%Fn3D zzAuXbNZY+2a_qg|L3wP34CQ9J|C*-(B`BJ_ zS!iVxWR&`)z-7EAoHH$}tl%cBTHM_D4Bj0$@3x5LA!`CZC1LBV3g9RiA`tfG1tL{CmVBU?g%U#2M6*}BZk>E>q|YY z1PF}8l`~%NKq+rA{JoP^T@?UcQ{y3(ar(xiFB1EJ?(+oTgLkFTv(y80P}PR`sk9l+ zZ^C~q&u0J3gRV%PmD>Mf0NrlL($KTB;d8vq&gHVDs8!y&Fub$%)t%;Ds zS$$k!#VD7t)k6BfzBu4+T9`?B%KvjTN{QDdQ-+biM_isl9!i8Kw-Ji9t^~WS1Ey>| z0JxVS`x0=$@qa8xKwE-Z5}V2mb@Deq3vhf@R+I&+jc~q;&q+{d@>f#d0bRz{89v+8 z)H$ru<<|2ZZeAF)b?D!atai#ZZ)^N$df!q`xbv&CceN17mTulDA0?& zfBXH+SPGj!ovff4#hrYevKI-dWu7@WQcpm6B;q2kR<%&>V5ICbkf9#{(85q{RzIE0 zn@YEgVcVU`v*au9~aBJls5I%U5q!7sDJZ)b&L%nO#ln%h=k{u!b$QIX}tB||u`zLV~k2*5ZZ+9{5k&YWnG=6iBi&iMq(e+Faz>InEj^I%N*W%Vp)O_wp4Gk{$dof)d5+~NUx2tDpLToD9xZty zLQ5p^JtaYhblg?)H;@jxh;@*}<9B;gepG(%UYB+Q8i^nv$=yG556G-n79NG2vz`wZ z*gQH9uF-1|{-9@TA3=@>1Jva=LTl7_a4g0wx% zH}{?xbpw{wW~GfcSK}}l7X~cpccYV`b<0lP@qX_C+1M?{K#W4hnrtQ_Uw{zx(?U|^ zYXCLTj|ZE(ZQQ+drYjuo%0Z0}3k2%1(_zxKo&1o|U{VN2@*90{X(#5BgF$sC%6|`F zR%(EaylA+gy0@C&!X3VN(cl&wAb})>vucd? z9AX_(`y@B5m9$MhTL7;j@Tue7fyUzenyT<6oK(4ch^{D>Fmu_E}H_uM|tk&%)yxqzXUXppS1uK8-VNrK! zWFb+R0IUwwy21@;n@f;kpJrAnX8$J5zIbA#9Uwwa@a_GG{<`#E*N4Rt0((LyXb-E{MIW7@FK+4FV8`2q9tA4Wk z3r9f&Xx+KV-^mk6m9gWL#Qwi#<=B9zv2%-8X6VTD@n^uiUW;Lvd<#bvOe4lJMeB=7 zq943dMU3{Es~1?(p|Vf2MMiwFTf&IJ@LY>5&sVe7Bs?nADetn+_XYogxMX2P3W zpuPC}4*EyzxxBNEi|Laf>(NTf%p2bJuF;yW|ME9!yF~O|mb$8iD+{r}7&XNIG@`T% zHXVp|wQf8?zQ9q`>nnWK-tyLdSk7RafK*ffhM1%591h zz?~O|-*RTy{|3A@i-}aO4K**AL<)YwWhVS0?Z_%&q$WOzR8eGfCKztqvtqH#>`PYI zJm7AsnLhqU5Do%}6Y2m?$Heh{16cw#aL9mH9%nQf9{^tF972$bjDEt*w5MF(?vC7Z z)???AC}d^j8!)Pe(Tr>drGz|iW0}oFu84b(1q5!o~R=%d=37ZMS)xqiMZqzJ2 z##3qOHRx1#p_!->hahhP9SeE&yv}A$vuK0OS_=y@(id1<0D_TdeQuo^50B!9a1`6D zK^YN>nH)(s5+l`s)M;Cy?rZpJt8kW2OciMbHg+eOb4psM?Y;lgauM%T-3s~9=j$)& z3fq;7r5X)Js3ps-W?oaKCzWZn^{}^(c7u~mfa)8T3La4DR5IX%n0-lgmHD@eLRVXP zpjsRWKv)KBh!wde-@KoKmaQyvOr*BxvH~Q0{3@bg@awIr2ifle=r@N{RNRAxl^h0S z=AXYPQHw&&><&>c@fp%t|JmZ;c)O-f-!)I0FUGZT(oX8|U%x1Q)sT{mQ1H|-Pc_;|ZM1zeWvZ0?18juw4DLe1($k61$4eqG^M|Ew$bb=lle8oBOe`?OYKD54} zjU1*^*nl7GqA^N9i9|WIE7zw85}Ei!@3NtIu>~%}cMlC4E)&_f6h=GVZ|mb+t_S2< zx5sPQqH_Nxt7bT&EBFt?xkm9ExY5V?Y~?;qUP(uX~@- zOvpusQkgawbNWdR=eMp|_ zT}WG;3NtNC8Kx&I;4{p#5q#6XTWZ!DJi#42yl=^%tXX8llh2$v40w)^N|Ig;_uwIk zlhWz#djS(~0I(KP1m$VKn2`N}{!^Fui>+1FL(xr{skchNhU)-&ZugX5Ku2^D-kHcK zHU0)srj-CM_E*{8_DwLL#tU!Nw!I2*Z(O;W#sZ@@DNp3IXms{QDa?TiNB%RY#)b|E z%>k{&jl49Ew!Nkc#4`hd*&r5Z9pV(fT>MO!TIr$$$tFbr*Ncb`1PA8g<6+u+JG_Eh z(GiALcAsBoROSfRU4>$QIq1A)~+m95_plPO1l3jg|2088Awk-Uj1aP(* zte%J=i-2$2b8qKk{5@NQgR_}(k01a1QvKswKJ?dMmLQO%UL0K!%^77;1K)VX2C z&e^*w01Qs_KPV6V9Fx9lw;xr>M0W0?+5C}FcL46~6lQ3Vy&Ht`36@^2!)(pHU+Qu` ziWF^#_{z84)2#5Oe~lVv!8o*3C!(e{fw8h?`o8KXobQDc)R)O;393SG<_+VpPDgCd zLTsGjhc#Dnev;-V9<@FKiQjH&(sA#m@YKz`1VPARTaj7fcL@Ab*V(;HVQ}ouQC{T3 zcIZ*$!B{=vVJ-wL)f2DpOT&&g?ha%goKa zLwjxLg|75m;F3;TJ|OA3zXk$l_~LmO*f^UCguINbyCCpba|bx+uKS$>KL_jiKKOZ} z@3(-z=6V)DX}X}M(99QjPcr6IKqukhWZjT_#UJH4mV+uV4Do`1xWM~!$R%>10$xW+ zgRz#a^yj%D4_oy?`Xp5j{6RF{d{r&P6Ep^Xqx1in+G9Q ziGwXb`S?tMKy6R)!A=wCpXxe#4xOJnXMihsZg2teKn8~G*QBC343zf1G@V1TFzW+( z$fhNG6|^aaYI7X|B0$Fzr0WCOvVj76A9o7>2@XTEv1Ylkf2Kh_<#kHRg*c@gS(&@LddbIWu{d2dZE$)qrjVdQ^$zQtt;BzV< zRr%QG4*>O>%3>Q>xC~6uNj)RLe=8Mw-f<2&c%g~@{~YZ^%*Tgs(HoTzu8QjmM(_S} z#GKCq3&lFsmup^lH3v^-1=X zNgJmNrN*jQ%G>{dsYYhx&5oO0 zd2@%`&i39&oZmA_n=rB@n?;EA(Gq!|)5~o>`fr9RfpeCGTF7YHvkC9o=PD|zySwU8 znET`7JwPN61^;RmJB*^o(}$fHuLh_%pQ-pix?cf$Ex)+PF*x2)zO!R%AzdkXRAgqM z7<1_Z<(N1)L(}Yy5^nc$n*}In`*2R|9ajvWmAYI0g_~&0L}C>ZY&HWK45aOZT+mAJ<<=p zpQAGZt3?U8y==4h*qxt`teT8sSv?Y)W!J&`o|sPyDfbdAe!NhsO0kjdvIGw}dIW6$ z+~iCNrz^ag8b1s)4`3lVed%+;R#Le(wUO==A z_pU?ZHIN|U3!Of!bAIpXs^1Wt45$`$RKb&9w+ZeKkOkB1V|ByEf5QS12pko0YZN3$ zJO$Sue<)=x?mQwaAIgpb_WCJ?gi?FOY^VGOOKSN$4!Z}ySsfq5p&s{|Z+I|cmgeI! zb%S%-0eN81f#EvLI?B~i?C||T2`yczYaeA(gWG4vn2{M3)6$s4tq%%%0DXCn%CBRK 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ⅈ19wMv891*%rkziVpS?~gy8qd`qs1@ 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 Kwp`jQ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/5/solid-calculix/adapter-config.json b/examples/5/solid-calculix/adapter-config.json deleted file mode 100644 index abafcc0..0000000 --- a/examples/5/solid-calculix/adapter-config.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "participant_name": "Solid", - "precice_config_file_name": "../precice-config.xml", - "interfaces": [ - { - "mesh_name": "Solid-Mesh", - "patches": [ - "interface" - ], - "write_data_names": [ - "HeatTransfer" - ], - "read_data_names": [ - "Temperature" - ] - } - ] -} diff --git a/examples/expert/4/README.md b/examples/expert/4/README.md deleted file mode 100644 index 34a1bed..0000000 --- a/examples/expert/4/README.md +++ /dev/null @@ -1,8 +0,0 @@ -This is a first 'Expert' example, which contains more complex acceleration definitions. It is a identical example to example 4, hence name "4". - -This accelerations implements a filter which has a type and a limit. - -Inspired by: https://github.com/precice/tutorials/tree/develop/partitioned-heat-conduction-complex - -![](config_graph.png) -![](image.png) diff --git a/examples/expert/4/config_graph.png b/examples/expert/4/config_graph.png deleted file mode 100644 index e9bb65d1449068e9a2d6477e5d81f3231ba4e43f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262023 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≻8{a(Z!eF>e^x4xW@t`vz> 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%0A?rQ!>xWFSjDVTfWMZ1K|l?Mx=q+`E%Dc% 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%0AtV{twm&#s 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

Ng|A=5cuUMZ> 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 z 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