From a1a09209d5f007aae7b6619e0bee48e6ca39ad49 Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 19 Jul 2023 10:21:32 +0100 Subject: [PATCH 001/105] Add initial recoordination dialog window --- tactool/recoordinate_dialog.py | 120 +++++++++++++++++++++++++++++++++ tactool/window.py | 74 +++++++++++++++----- 2 files changed, 178 insertions(+), 16 deletions(-) create mode 100644 tactool/recoordinate_dialog.py diff --git a/tactool/recoordinate_dialog.py b/tactool/recoordinate_dialog.py new file mode 100644 index 0000000..6579f06 --- /dev/null +++ b/tactool/recoordinate_dialog.py @@ -0,0 +1,120 @@ +""" +The Recoordinate Dialog is used for allowing the user to provide a CSV to be recoordinated. +""" + +from PyQt5.QtCore import ( + pyqtSignal, + Qt, +) +from PyQt5.QtWidgets import ( + QDialog, + QFileDialog, + QLabel, + QLineEdit, + QPushButton, + QVBoxLayout, +) + + +class RecoordinateDialog(QDialog): + """ + PyQt QDialog class for creating the recoordination dialog box. + """ + # Tracks when the recoordinate button is clicked + recoordinate_clicked = pyqtSignal(str, str) + # Tracks when the Recoordinate Dialog Box is closed + closed_recoordinate_dialog = pyqtSignal() + # Tracks when invalid input is supplied + invalid_path_entry = pyqtSignal(str, str, str) + + def __init__(self, testing_mode: bool) -> None: + super().__init__() + self.testing_mode = testing_mode + + # Setting the Dialog Box settings + self.setWindowTitle("Recoordination") + self.setMinimumSize(300, 200) + self.setWindowFlags( + Qt.Window | Qt.WindowCloseButtonHint | Qt.WindowStaysOnTopHint + ) + self.setup_ui_elements() + self.connect_signals_and_slots() + + if not self.testing_mode: + self.show() + + + def setup_ui_elements(self) -> None: + """ + Function to create the elements of the Set Scale dialog box User Interface. + Also sets the layout for the dialog box. + """ + # Create the UI elements + input_csv_label = QLabel("Select Input CSV") + self.input_csv_button = QPushButton("Import CSV", self) + self.input_csv_filepath_label = QLineEdit("") + self.input_csv_filepath_label.setDisabled(True) + output_csv_label = QLabel("Select Output CSV") + self.recoordinate_button = QPushButton("Recoordinate and Export CSV") + + # Arrange and set the layout + layout = QVBoxLayout() + layout.addWidget(input_csv_label) + layout.addWidget(self.input_csv_button) + layout.addWidget(self.input_csv_filepath_label) + layout.addWidget(output_csv_label) + layout.addWidget(self.recoordinate_button) + self.setLayout(layout) + + + def connect_signals_and_slots(self) -> None: + """ + Function for connecting signals and slots of buttons and input boxes. + """ + self.input_csv_button.clicked.connect(self.get_input_csv) + self.recoordinate_button.clicked.connect(self.get_export_and_recoordinate) + + + def get_input_csv(self) -> None: + """ + Get the input CSV file for recoordination from the user. + """ + pyqt_open_dialog = QFileDialog.getOpenFileName( + self, + "Import Recoordination CSV", + filter="*.csv", + ) + input_csv = pyqt_open_dialog[0] + self.input_csv_filepath_label.setText(input_csv) + + + def get_export_and_recoordinate(self) -> None: + """ + Get the export CSV file and emit the recoordinate signal back to the main class. + """ + input_csv = self.input_csv_filepath_label.text() + if input_csv != "": + pyqt_save_dialog = QFileDialog.getSaveFileName( + parent=self, + caption="Export Recoordinated CSV", + directory=input_csv, + filter="*.csv", + ) + output_csv = pyqt_save_dialog[0] + if output_csv != "": + self.recoordinate_clicked.emit(input_csv, output_csv) + self.closeEvent() + else: + # Create a message informing the user that their input value is invalid + self.invalid_path_entry.emit( + "Invalid Path", + "Please import a CSV to recoordinate first.", + "warning", + ) + + + def closeEvent(self, event=None) -> None: + """ + Function which is run by PyQt when the application is closed. + """ + self.closed_recoordinate_dialog.emit() diff --git a/tactool/window.py b/tactool/window.py index 38e52bd..3819dbf 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -28,6 +28,7 @@ ) from tactool.graphics_view import GraphicsView +from tactool.recoordinate_dialog import RecoordinateDialog from tactool.set_scale_dialog import SetScaleDialog from tactool.table_model import AnalysisPoint from tactool.table_view import TableView @@ -76,6 +77,7 @@ def __init__(self, testing_mode: bool) -> None: self.table_model = self.graphics_view.graphics_scene.table_model self.table_view = TableView(self.table_model) self.set_scale_dialog: Optional[SetScaleDialog] = None + self.recoordinate_dialog: Optional[RecoordinateDialog] = None self.setup_ui_elements() self.connect_signals_and_slots() self.toggle_status_bar_messages() @@ -108,6 +110,8 @@ def setup_ui_elements(self) -> None: self.menu_bar_file.addSeparator() self.file_menu_bar_import_tactool_csv = self.menu_bar_file.addAction("Import TACtool CSV") self.file_menu_bar_export_tactool_csv = self.menu_bar_file.addAction("Export TACtool CSV") + self.menu_bar_file.addSeparator() + self.menu_bar_recoordinate_csv = self.menu_bar_file.addAction("Recoordinate CSV") # Create the status bar self.status_bar = QStatusBar(self) @@ -228,6 +232,7 @@ def connect_signals_and_slots(self) -> None: self.menu_bar_file_export_image.triggered.connect(self.export_image_get_path) self.file_menu_bar_import_tactool_csv.triggered.connect(self.import_tactool_csv_get_path) self.file_menu_bar_export_tactool_csv.triggered.connect(self.export_tactool_csv_get_path) + self.menu_bar_recoordinate_csv.triggered.connect(self.toggle_recoordinate_dialog) # Connect button clicks to handlers self.clear_points_button.clicked.connect(self.clear_analysis_points) @@ -236,7 +241,7 @@ def connect_signals_and_slots(self) -> None: self.colour_button.clicked.connect(self.set_point_colour) self.set_scale_button.clicked.connect(self.toggle_scaling_mode) - # Connect Graphics View interactinos to handlers + # Connect Graphics View interactions to handlers self.graphics_view.left_click.connect(self.add_analysis_point) self.graphics_view.right_click.connect(self.remove_analysis_point) @@ -314,8 +319,8 @@ def import_image_get_path(self) -> None: Function to create a PyQt File Dialog, allowing the user to visually select an image file to import. """ pyqt_open_dialog = QFileDialog.getOpenFileName( - self, - "Import Image", + parent=self, + directory="Import Image", filter=self.default_settings["image_format"], ) path = pyqt_open_dialog[0] @@ -335,10 +340,10 @@ def export_image_get_path(self) -> None: if self.validate_current_data(validate_image=True): filepath = self.image_filepath if self.image_filepath else "" pyqt_save_dialog = QFileDialog.getSaveFileName( - self, - "Export Image", - filepath, - self.default_settings["image_format"], + parent=self, + caption="Export Image", + directory=filepath, + filter=self.default_settings["image_format"], ) path = pyqt_save_dialog[0] if path: @@ -353,8 +358,8 @@ def import_tactool_csv_get_path(self) -> None: Function to create a PyQt File Dialog, allowing the user to visually select a TACtool CSV file to import. """ pyqt_open_dialog = QFileDialog.getOpenFileName( - self, - "Import TACtool CSV", + parent=self, + caption="Import TACtool CSV", filter=self.default_settings["csv_format"], ) path = pyqt_open_dialog[0] @@ -468,10 +473,10 @@ def export_tactool_csv_get_path(self) -> None: if self.validate_current_data(): filepath = self.csv_filepath if self.csv_filepath else "" pyqt_save_dialog = QFileDialog.getSaveFileName( - self, - "Export as TACtool CSV", - filepath, - self.default_settings["csv_format"], + parent=self, + caption="Export as TACtool CSV", + directory=filepath, + filter=self.default_settings["csv_format"], ) path = pyqt_save_dialog[0] if path: @@ -819,6 +824,38 @@ def update_point_settings( self.set_colour_button_style() + def toggle_recoordinate_dialog(self) -> None: + """ + Toggle the recoordination dialog window. + """ + # If the program is not in recoordination mode + if self.recoordinate_dialog is None: + # Create the Set Scale Dialog box + self.recoordinate_dialog = RecoordinateDialog(self.testing_mode) + # Disable main window input widgets + self.toggle_main_input_widgets(False) + # Move the Set Scale Dialog box to be at the top left corner of the main window + main_window_pos = self.pos() + self.recoordinate_dialog.move(main_window_pos.x() + 50, main_window_pos.y() + 50) + + # Connect the Set Scale dialog buttons + self.recoordinate_dialog.recoordinate_clicked.connect(self.recoordinate_points) + self.recoordinate_dialog.closed_recoordinate_dialog.connect(self.toggle_recoordinate_dialog) + self.recoordinate_dialog.invalid_path_entry.connect(self.show_message) + + # Else when the program is in recoordination mode, reset the Recoordination Dialog value + else: + self.recoordinate_dialog = None + # Enable main window widgets + self.toggle_main_input_widgets(True) + + + def recoordinate_points(self, input_csv: str, output_csv: str): + print("RECOORDINATE") + print(input_csv) + print(output_csv) + + def data_error_message(self, error: Exception) -> None: """ Function to show an error message to the user in the event that @@ -862,6 +899,11 @@ def closeEvent(self, event=None) -> None: """ Function which is run by PyQt when the application is closed. """ - # If the Set Scale dialog box is open then close it - if self.set_scale_dialog is not None: - self.set_scale_dialog.close() + # Close any open dialogs + dialogs = [ + self.recoordinate_dialog, + self.set_scale_dialog, + ] + for dialog in dialogs: + if dialog is not None: + dialog.close() From d1c365ac4477ae185239323c23c184158db79de3 Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 19 Jul 2023 12:25:08 +0100 Subject: [PATCH 002/105] Remove old files --- pytest.ini | 2 -- requirements.txt | 18 ------------------ 2 files changed, 20 deletions(-) delete mode 100644 pytest.ini delete mode 100644 requirements.txt diff --git a/pytest.ini b/pytest.ini deleted file mode 100644 index e382d57..0000000 --- a/pytest.ini +++ /dev/null @@ -1,2 +0,0 @@ -[pytest] -addopts = --pdbcls=IPython.terminal.debugger:Pdb \ No newline at end of file diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index a6e17af..0000000 --- a/requirements.txt +++ /dev/null @@ -1,18 +0,0 @@ -altgraph==0.17.3 -attrs==22.2.0 -colorama==0.4.6 -flake8==6.0.0 -iniconfig==2.0.0 -mccabe==0.7.0 -packaging==23.0 -pefile==2023.2.7 -pluggy==1.0.0 -pycodestyle==2.10.0 -pyflakes==3.0.1 -pyinstaller==5.7.0 -pyinstaller-hooks-contrib==2023.1 -pyqt5==5.15.7 -pyqt5-qt5==5.15.2 -pyqt5-sip==12.11.1 -pytest==7.2.1 -pywin32-ctypes==0.2.0 \ No newline at end of file From fe616a67a9be0bc0054cf3279fd4442227cca5ea Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 19 Jul 2023 12:25:35 +0100 Subject: [PATCH 003/105] Updating point id incrementing to use max current id --- tactool/graphics_scene.py | 12 ++++++++---- test/test_integration.py | 7 ++----- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/tactool/graphics_scene.py b/tactool/graphics_scene.py index a8d5bc7..5ed0aa3 100644 --- a/tactool/graphics_scene.py +++ b/tactool/graphics_scene.py @@ -34,8 +34,6 @@ class GraphicsScene(QGraphicsScene): """ def __init__(self) -> None: super().__init__() - # _maximum_point_id is used to track the next incremental ID value available - self._maximum_point_id = 0 # Defining variables used in the Graphics Scene for scaling mode self.scaling_rect: Optional[QGraphicsRectItem] = None @@ -181,8 +179,14 @@ def next_point_id(self) -> int: """ Function to iterate and return the maximum Analysis Point ID value. """ - self._maximum_point_id += 1 - return self._maximum_point_id + ids = [ + analysis_point.id + for analysis_point in self.table_model.analysis_points + ] + if len(ids) == 0: + return 1 + else: + return max(ids) + 1 def toggle_transparent_window(self, graphics_view_image: QGraphicsPixmapItem) -> None: diff --git a/test/test_integration.py b/test/test_integration.py index 3ca279e..fd0098c 100644 --- a/test/test_integration.py +++ b/test/test_integration.py @@ -80,14 +80,13 @@ def test_add_and_remove_points(tactool: TACtool) -> None: # Adjust the settings for the 4th Analysis Point to match those of the 2nd Analysis Point # This is done by emitting a signal from the PyQt Table View of the selected Analysis Point tactool.window.table_view.selected_analysis_point.emit(expected_data[1], 0) - # The 4th Analysis Point ID value should be 4 because it is still incrementing from the 3rd Analysis Point - # The maximum ID value also does not change when Analysis Points are deleted + # The 4th Analysis Point ID value should be 3 tactool.window.graphics_view.left_click.emit(404, 404) expected_data = [ AnalysisPoint(1, "RefMark", 101, 101, 10, 1.0, "#ffff00", "", "", "", "", None, None, None), AnalysisPoint(2, "Spot", 202, 202, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", "", None, None, None), - AnalysisPoint(4, "Spot", 404, 404, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", "", None, None, None), + AnalysisPoint(3, "Spot", 404, 404, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", "", None, None, None), ] # Iterate through each actual Analysis Point and compare to expected Analysis Point for index, analysis_point in enumerate(tactool.window.table_model.analysis_points): @@ -355,14 +354,12 @@ def test_import_tactool_csv(tactool: TACtool, filepath: str, expected_points: li for loaded_point, expected_point in zip(tactool.window.table_model.analysis_points, expected_points): # Using list slicing to compare just the public attributes of the Analysis Points, i.e. up to the last 3 assert expected_point.aslist()[:PUBLIC_INDEX] == loaded_point.aslist()[:PUBLIC_INDEX] - assert tactool.window.graphics_scene._maximum_point_id == len(tactool.window.table_model.analysis_points) # Click new points tactool.window.graphics_view.left_click.emit(111, 111) # Check that the ID values continue from the maximum ID value in the CSV file assert len(tactool.window.table_model.analysis_points) == 6 - assert tactool.window.graphics_scene._maximum_point_id == len(tactool.window.table_model.analysis_points) def test_export_tactool_csv(tactool: TACtool, tmp_path: WindowsPath) -> None: From 867b051b31e637a6b87af81d2293ca23d42bfafa Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Mon, 24 Jul 2023 10:10:40 +0100 Subject: [PATCH 004/105] Change reload_analysis_points to take a transform function --- tactool/transform.py | 9 ++++++ tactool/window.py | 68 +++++++++++++++----------------------------- 2 files changed, 32 insertions(+), 45 deletions(-) create mode 100644 tactool/transform.py diff --git a/tactool/transform.py b/tactool/transform.py new file mode 100644 index 0000000..a1f0c93 --- /dev/null +++ b/tactool/transform.py @@ -0,0 +1,9 @@ +from tactool.table_model import AnalysisPoint + + +def reset_id(analysis_point: AnalysisPoint) -> AnalysisPoint: + """ + Resed the ID value of a given Analysis Point. + """ + analysis_point.id = None + return analysis_point diff --git a/tactool/window.py b/tactool/window.py index 3819dbf..5234ef0 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -7,7 +7,10 @@ from csv import DictReader from textwrap import dedent -from typing import Optional +from typing import ( + Callable, + Optional, +) from PyQt5.QtCore import QModelIndex from PyQt5.QtGui import QFont @@ -32,6 +35,9 @@ from tactool.set_scale_dialog import SetScaleDialog from tactool.table_model import AnalysisPoint from tactool.table_view import TableView +from tactool.transform import ( + reset_id, +) logger = logging.getLogger("tactool") logger.setLevel(logging.DEBUG) @@ -236,7 +242,7 @@ def connect_signals_and_slots(self) -> None: # Connect button clicks to handlers self.clear_points_button.clicked.connect(self.clear_analysis_points) - self.reset_ids_button.clicked.connect(self.reset_analysis_points) + self.reset_ids_button.clicked.connect(lambda: self.reload_analysis_points(transform=reset_id)) self.reset_settings_button.clicked.connect(self.reset_settings) self.colour_button.clicked.connect(self.set_point_colour) self.set_scale_button.clicked.connect(self.toggle_scaling_mode) @@ -248,7 +254,7 @@ def connect_signals_and_slots(self) -> None: # Connect Table interaction clicks to handlers self.table_view.selected_analysis_point.connect(self.get_point_settings) self.table_model.invalid_label_entry.connect(self.show_message) - self.table_model.updated_analysis_points.connect(self.update_analysis_points) + self.table_model.updated_analysis_points.connect(self.reload_analysis_points) def create_status_bar_messages(self): @@ -603,15 +609,22 @@ def remove_analysis_point(self, x: int = None, y: int = None, apid: int = None) self.table_view.model().layoutChanged.emit() - def reload_analysis_points(self) -> None: + def reload_analysis_points( + self, + index: Optional[QModelIndex] = None, + transform: Optional[Callable[[AnalysisPoint], AnalysisPoint]] = None, + ) -> None: """ Function to reload all of the existing Analysis Points. + Takes an index which indicates if the TableView should be automatically scrolled to a specific point. + Also takes a transform function to transform the existing Analysis Points before replacing them. """ # Save the existing Points before clearing them current_analysis_points = self.table_model.analysis_points self.clear_analysis_points() # Iterate through each previously existing Point and recreate it for analysis_point in current_analysis_points: + analysis_point = transform(analysis_point) self.add_analysis_point( apid=analysis_point.id, x=analysis_point.x, @@ -627,31 +640,12 @@ def reload_analysis_points(self) -> None: from_click=False ) - - def reset_analysis_points(self) -> None: - """ - Function to reset the ID values of all existing Analysis Points. - """ - # Save the existing Points before clearing them - current_analysis_points = self.table_model.analysis_points - self.clear_analysis_points() - self.graphics_scene._maximum_point_id = 0 - # Iterate through each previously existing Point and recreate it without the existing ID - # This forces it to automatically increment from 0 - for analysis_point in current_analysis_points: - self.add_analysis_point( - x=analysis_point.x, - y=analysis_point.y, - label=analysis_point.label, - diameter=analysis_point.diameter, - scale=analysis_point.scale, - colour=analysis_point.colour, - sample_name=analysis_point.sample_name, - mount_name=analysis_point.mount_name, - material=analysis_point.material, - notes=analysis_point.notes, - from_click=False - ) + # Index is given when the user edits a cell in the PyQt Table View + # It represents the index of the modified cell + if index is not None: + # When the Analysis Points are reloaded, the scroll position in the PyQt Table View resets + # Therefore, we scroll back to where the user was previously scrolled + self.table_view.scrollTo(index) def clear_analysis_points(self) -> None: @@ -662,22 +656,6 @@ def clear_analysis_points(self) -> None: for point in self.table_model.analysis_points: self.remove_analysis_point(apid=point.id) - # Reset the maximum Analysis Point ID value - self.graphics_scene._maximum_point_id = 0 - - - def update_analysis_points(self, index: QModelIndex = None) -> None: - """ - Function to reload the Analysis Points currently in the application and optionally scroll to a given index. - """ - self.reload_analysis_points() - # Index is given when the user edits a cell in the PyQt Table View - # It represents the index of the modified cell - if index: - # When the Analysis Points are reloaded, the scroll position in the PyQt Table View resets - # Therefore, we scroll back to where the user was previously scrolled - self.table_view.scrollTo(index) - def set_point_colour(self) -> None: """ From 3da1a5b5f0bde8409478a2af423b7c0f3e1caf81 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Mon, 24 Jul 2023 10:19:04 +0100 Subject: [PATCH 005/105] Move TableView formatting into table_view file --- tactool/table_view.py | 18 +++++++++++++----- tactool/window.py | 7 ------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/tactool/table_view.py b/tactool/table_view.py index 341b416..afa3efb 100644 --- a/tactool/table_view.py +++ b/tactool/table_view.py @@ -29,19 +29,27 @@ def __init__(self, table_model: TableModel) -> None: self.horizontalHeader().setStretchLastSection(True) self.verticalHeader().setVisible(False) self.setAlternatingRowColors(True) - self.set_column_sizes() + self.format_columns() - def set_column_sizes(self) -> None: + def format_columns(self) -> None: """ - Function to set the sizing of specific columns in the Table View. + Format the columns in the TableView. + This includes sizing specific columns and hiding private fields. """ - headers = TableModel().headers - resize_columns = ["id", "x", "y", "label", "diameter", "scale", "colour"] + headers: list[str] = self.model().headers + # Resize the first 7 columns to be smaller + resize_columns = ["id", "x", "y", "label", "diameter", "scale", "colour"] for column_name in resize_columns: self.setColumnWidth(headers.index(column_name), 100) + # Hide private fields + for idx, column in enumerate(headers): + # Columns beginning with an _ store the PyQt Graphics elements corresponding to the Analysis Points + if column.startswith("_"): + self.hideColumn(idx) + def mousePressEvent(self, event: QMouseEvent) -> None: """ diff --git a/tactool/window.py b/tactool/window.py index 5234ef0..f1b1e59 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -160,13 +160,6 @@ def setup_ui_elements(self) -> None: self.reset_ids_button = QPushButton("Reset IDs", self) self.reset_settings_button = QPushButton("Reset Settings", self) - # Iterate through each header in the PyQt Table Model - for idx, column in enumerate(self.graphics_view.graphics_scene.table_model.headers): - # Hide any columns which start with an "_" in the PyQt Table View - # These columns store the PyQt Graphics elements corresponding to the Analysis Points - if column.startswith("_"): - self.table_view.hideColumn(idx) - # Arrange the layout of the user interface sidebar = QVBoxLayout() From 56da59e8ae26997bb0a80fb454bfa748a040d06a Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Mon, 24 Jul 2023 10:33:34 +0100 Subject: [PATCH 006/105] Update formatting for table elements --- tactool/table_model.py | 83 ++++++++++++++++++++---------------------- tactool/table_view.py | 6 +-- 2 files changed, 41 insertions(+), 48 deletions(-) diff --git a/tactool/table_model.py b/tactool/table_model.py index 3669e06..1c71440 100644 --- a/tactool/table_model.py +++ b/tactool/table_model.py @@ -1,10 +1,3 @@ -""" -The Analysis Point class stores Analysis Point data. - -The Table Model acts as a central storage for Analysis Points -and Graphics Scene items. -""" - import dataclasses from csv import writer from pathlib import Path @@ -51,7 +44,7 @@ class AnalysisPoint: @classmethod def field_names(cls) -> list[str]: """ - Function to get the field names of the class object. + Get the field names of the class object. """ return [field.name for field in dataclasses.fields(cls)] @@ -73,7 +66,7 @@ def aslist(self) -> list[ QGraphicsTextItem, ]: """ - Function to get the attributes of an Analysis Point object as a list. + Get the attributes of an Analysis Point object as a list. """ attributes_list = [ self.id, @@ -120,7 +113,7 @@ def __init__(self) -> None: def headerData(self, section: int, orientation: Qt.Orientation, role: int) -> str: """ - Function to set and return the header values from the QAbstractTableModel. + Set and return the header values from the QAbstractTableModel. """ if role == Qt.DisplayRole: if orientation == Qt.Horizontal: @@ -131,22 +124,25 @@ def headerData(self, section: int, orientation: Qt.Orientation, role: int) -> st def columnCount(self, *args) -> int: """ - Function to return the number of columns in the QAbstractTableModel. + Return the number of columns in the QAbstractTableModel. + Internal method for PyQt. """ return len(self.headers) def rowCount(self, *args) -> int: """ - Function to return the number of rows in the QAbstractTableModel. + Return the number of rows in the QAbstractTableModel. + Internal method for PyQt. """ return len(self._data) def data(self, index: QModelIndex, role: int) -> Optional[str]: """ - Function to format the data to be displayed in the QAbstractTableModel. + Format the data to be displayed in the QAbstractTableModel. It is called when displaying values in the cells, also called when editing (doubleclick). + Internal method for PyQt. """ if role == Qt.DisplayRole or role == Qt.EditRole: @@ -161,8 +157,9 @@ def data(self, index: QModelIndex, role: int) -> Optional[str]: def setData(self, index: QModelIndex, value: str, role: Qt.ItemDataRole = Qt.EditRole) -> bool: """ - Function to update the value in a cell of the QAbstractTableModel. + Update the value in a cell of the QAbstractTableModel. It is called when editing a value in an editable cell. + Internal method for PyQt. """ if index.isValid(): row = index.row() @@ -201,46 +198,47 @@ def setData(self, index: QModelIndex, value: str, role: Qt.ItemDataRole = Qt.Edi def flags(self, index: QModelIndex) -> Qt.ItemFlag: """ - Function to set the flags of the cells within the QAbstractTableModel. + Set the flags of the cells within the QAbstractTableModel. + Internal method for PyQt. """ - # If the given column should be an editable column, set it to be editable # Set all columns to be selectable and enabled + default_flags = Qt.ItemIsSelectable | Qt.ItemIsEnabled + # If the given column should be an editable column, set it to be editable if index.column() in self.editable_columns: - return Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsEditable + return default_flags | Qt.ItemIsEditable else: - return Qt.ItemIsSelectable | Qt.ItemIsEnabled + return default_flags def add_point(self, analysis_point: AnalysisPoint) -> None: """ - Function to add an Analysis Point object as a row. + Add an Analysis Point object as a row. """ self._data.append(analysis_point.aslist()) def remove_point(self, target_id: int) -> None: """ - Function to remove an Analysis Point object using it's ID value. + Remove an Analysis Point object using it's ID value. """ for index, analysis_point in enumerate(self.analysis_points): - # If the target ID is equal to the current ID, remove it from the table if target_id == analysis_point.id: self._data.pop(index) + break def get_point_by_ellipse(self, target_ellipse: QGraphicsEllipseItem) -> AnalysisPoint: """ - Function to get the data of an Analysis Point object. + Get the data of an Analysis Point object using its ellipse object. """ for analysis_point in self.analysis_points: - # If the target ellipse is equal to either the current outer or inner ellipse if target_ellipse in [analysis_point._outer_ellipse, analysis_point._inner_ellipse]: return analysis_point def get_point_by_apid(self, target_id: int) -> AnalysisPoint: """ - Function to get an Analysis Point using its ID value. + Get an Analysis Point using its ID value. """ for analysis_point in self.analysis_points: if int(target_id) == analysis_point.id: @@ -248,22 +246,20 @@ def get_point_by_apid(self, target_id: int) -> AnalysisPoint: @property - def reference_points(self) -> list[AnalysisPoint]: + def analysis_points(self) -> list[AnalysisPoint]: """ - Function to return Analysis Points which are a RefMark point. + Return all of the Analysis Points. """ - # Using list comprehension to get Analysis Points if their label attribute is equal to RefMark - label_index = AnalysisPoint.field_names().index("label") - return [AnalysisPoint(*item) for item in self._data if item[label_index] == "RefMark"] + return [AnalysisPoint(*item) for item in self._data] @property - def analysis_points(self) -> list[AnalysisPoint]: + def reference_points(self) -> list[AnalysisPoint]: """ - Function to return all of the Analysis Points. + Return Analysis Points which are RefMarks point. """ - # Using list comprehension to get all Analysis Points and unpack their values into Analysis Point objects - return [AnalysisPoint(*item) for item in self._data] + label_index = AnalysisPoint.field_names().index("label") + return [AnalysisPoint(*item) for item in self._data if item[label_index] == "RefMark"] def export_csv(self, filepath: Path) -> None: @@ -272,11 +268,11 @@ def export_csv(self, filepath: Path) -> None: """ # Do not save the last 3 columns as they contain PyQt graphics data with open(filepath, "w", newline="") as csvfile: - csvwriter = writer(csvfile) + csvwriter = writer(csvfile) # Modify and write the header data new_headers = self.convert_export_headers() csvwriter.writerow(new_headers) - # Iterate through each existing analysis point and write it's data + for analysis_point in self.analysis_points: csv_row = self.convert_export_point(analysis_point) csvwriter.writerow(csv_row) @@ -284,7 +280,8 @@ def export_csv(self, filepath: Path) -> None: def convert_export_headers(self) -> list[str]: """ - Function to convert the header data formatting for a CSV export. + Convert the header data for a CSV export. + This will rename some headers, remove sample_name, and add a Z field. """ header_conversions = { "id": "Name", @@ -295,7 +292,7 @@ def convert_export_headers(self) -> list[str]: headers = self.headers[:len(self.headers) - 3] for old_header, new_header in zip(header_conversions, header_conversions.values()): headers[headers.index(old_header)] = new_header - # Remove the sample_name field + # Remove the sample_name field, it is concatenated with ID headers.pop(headers.index("sample_name")) # Insert a new Z column after the Y column for the laser formatting @@ -306,18 +303,18 @@ def convert_export_headers(self) -> list[str]: def convert_export_point(self, analysis_point: AnalysisPoint) -> list: """ - Function to convert an Analysis Point formatting for a CSV export. + Convert an Analysis Point for a CSV export. + This will concatenate the ID and sample_name into a single field, + and add a Z field. """ headers = self.headers[:len(self.headers) - 3] - id_idx, sample_name_idx = headers.index("id"), headers.index("sample_name") analysis_point_row = analysis_point.aslist()[:len(self.headers) - 3] # Concat the sample_name and id into 1 column # Also pads zeros on id column value - analysis_point_row[id_idx] = f"{analysis_point.sample_name}_#{analysis_point.id:03d}" - analysis_point_row.pop(sample_name_idx) + analysis_point_row[headers.index("id")] = f"{analysis_point.sample_name}_#{analysis_point.id:03d}" + analysis_point_row.pop(headers.index("sample_name")) # Insert a new Z column after the Y column for the laser formatting - z_index = headers.index("y") + 1 - analysis_point_row.insert(z_index, 0) + analysis_point_row.insert(headers.index("y") + 1, 0) return analysis_point_row diff --git a/tactool/table_view.py b/tactool/table_view.py index afa3efb..a8bb357 100644 --- a/tactool/table_view.py +++ b/tactool/table_view.py @@ -1,7 +1,3 @@ -""" -The Table View manages how the data which is stored in the Table Model is displayed in the User Interface. -""" - from PyQt5.QtCore import ( pyqtSignal, Qt, @@ -53,7 +49,7 @@ def format_columns(self) -> None: def mousePressEvent(self, event: QMouseEvent) -> None: """ - Function to handle mouse clicks on the Table View. + Handler for mouse clicks on the Table View. Since we are only adding functionality to mousePressEvent, we pass the event to the parent PyQt class, QTableView, at the end of the function to handle From 41f1a87a9c082399f2435b502a7b14d10f459805 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Mon, 24 Jul 2023 10:50:38 +0100 Subject: [PATCH 007/105] Move some scaling logic out of window --- tactool/graphics_view.py | 9 ++++---- tactool/set_scale_dialog.py | 43 ++++++++++++++++++++----------------- tactool/window.py | 14 +----------- 3 files changed, 28 insertions(+), 38 deletions(-) diff --git a/tactool/graphics_view.py b/tactool/graphics_view.py index 805022b..da04a23 100644 --- a/tactool/graphics_view.py +++ b/tactool/graphics_view.py @@ -291,15 +291,14 @@ def toggle_scaling_mode(self) -> None: self.setCursor(Qt.CrossCursor) # Else when the program is not currently in Scaling mode else: - # Reset the scaling mode attributes to normal - self.graphics_scene.remove_scale_items() - self.reset_scale_line_points() + self.reset_scaling_elements() self.setCursor(Qt.ArrowCursor) - def reset_scale_line_points(self) -> None: + def reset_scaling_elements(self) -> None: """ - Function to reset the scaling line points to be blank QPointF objects. + Reset the scaling elements back to their default values. """ self.scale_start_point = QPointF() self.scale_end_point = QPointF() + self.graphics_scene.remove_scale_items() diff --git a/tactool/set_scale_dialog.py b/tactool/set_scale_dialog.py index 82f02a8..7e36f50 100644 --- a/tactool/set_scale_dialog.py +++ b/tactool/set_scale_dialog.py @@ -1,8 +1,3 @@ -""" -The Scale Dialog is used for allowing the user to see the new scale values. -They can then either reset the values, cancel them or continue with them. -""" - from PyQt5.QtCore import ( pyqtSignal, Qt, @@ -22,9 +17,10 @@ class SetScaleDialog(QDialog): """ PyQt QDialog class for creating the set scale dialog box when in scaling mode. + This dialog allows the user to set the scale values visually. """ # Tracks when the Clear button is clicked - clear_scale = pyqtSignal() + clear_scale_clicked = pyqtSignal() # Tracks when the Set Scale button is clicked set_scale_clicked = pyqtSignal(float) # Tracks when the Set Scale Dialog Box is closed @@ -34,7 +30,6 @@ def __init__(self, testing_mode: bool) -> None: super().__init__() self.testing_mode = testing_mode - # Setting default input value self.pixel_input_default = "Not Set" # Setting the Dialog Box settings @@ -52,7 +47,7 @@ def __init__(self, testing_mode: bool) -> None: def setup_ui_elements(self) -> None: """ - Function to create the elements of the Set Scale dialog box User Interface. + Create the elements of the Set Scale dialog box User Interface. Also sets the layout for the dialog box. """ # Main buttons @@ -102,11 +97,11 @@ def setup_ui_elements(self) -> None: def connect_signals_and_slots(self) -> None: """ - Function for connecting signals and slots of buttons and input boxes. + Connecting signals and slots of buttons and input boxes. """ # Connect signals and slots for buttons self.set_scale_button.clicked.connect(self.set_scale) - self.clear_scale_button.clicked.connect(self.clear_scale.emit) + self.clear_scale_button.clicked.connect(self.clear_scale) self.cancel_button.clicked.connect(self.closeEvent) # Connect signals and slots for input boxes @@ -114,35 +109,33 @@ def connect_signals_and_slots(self) -> None: self.pixel_input.textChanged.connect(self.update_scale) - def update_scale(self) -> tuple[float, float]: + def update_scale(self) -> None: """ - Function to update the scale value in the Set Scale dialog box. + Update the scale value in the Set Scale dialog box. """ pixels = self.pixel_input.text() distance = float(self.distance_input.value()) if self.distance_input.value() else 0.0 - scale = "" - # If the pixels value is not the default value and the distance is greater than 0 + if pixels != self.pixel_input_default and distance > 0: pixels = float(pixels) # Calculate the ratio difference as the new scale value # Scale value then represents the number of pixels per micron scale = round(pixels / distance, 2) - # Update the scale value in the Set Scale Dialog box - self.scale_value.setText(str(scale)) - return pixels, distance + # Update the scale value in the Set Scale Dialog box + self.scale_value.setText(str(scale)) def scale_move_event_handler(self, pixel_distance: float) -> None: """ - Function to handle the change of a scale point on the PyQt Graphics Scene when in scaling mode. + Handler for mouse movement on the PyQt Graphics Scene. + Updates the pixel value in the dialog. """ - # Set the pixel distance value in the Set Scale Dialog box self.pixel_input.setText(str(pixel_distance)) def set_scale(self) -> None: """ - Function to update the scalue value in in the scale input box of the main window. + Update the scalue value in in the scale input box of the main window. """ # If a scale value has been entered if self.scale_value.text(): @@ -152,6 +145,16 @@ def set_scale(self) -> None: self.closeEvent() + def clear_scale(self) -> None: + """ + Clear the current scaling values and elements. + """ + self.distance_input.setValue(0) + self.pixel_input.setText(self.pixel_input_default) + self.scale_value.setText("") + self.clear_scale_clicked.emit() + + def closeEvent(self, event=None) -> None: """ Function which is run by PyQt when the application is closed. diff --git a/tactool/window.py b/tactool/window.py index f1b1e59..59831d9 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -673,9 +673,7 @@ def toggle_scaling_mode(self) -> None: # If the program is not in scaling mode if self.set_scale_dialog is None: - # Create the Set Scale Dialog box self.set_scale_dialog = SetScaleDialog(self.testing_mode) - # Disable main window input widgets self.toggle_main_input_widgets(False) # Move the Set Scale Dialog box to be at the top left corner of the main window main_window_pos = self.pos() @@ -683,7 +681,7 @@ def toggle_scaling_mode(self) -> None: # Connect the Set Scale dialog buttons self.set_scale_dialog.set_scale_clicked.connect(self.set_scale) - self.set_scale_dialog.clear_scale.connect(self.clear_scale_clicked) + self.set_scale_dialog.clear_scale_clicked.connect(self.graphics_view.reset_scaling_elements) self.set_scale_dialog.closed_set_scale_dialog.connect(self.toggle_scaling_mode) self.graphics_view.scale_move_event.connect(self.set_scale_dialog.scale_move_event_handler) @@ -702,16 +700,6 @@ def toggle_main_input_widgets(self, enable: bool) -> None: widget.setEnabled(enable) - def clear_scale_clicked(self) -> None: - """ - Function to clear the scaling mode when the Clear button is clicked in the Set Scale dialog box. - """ - self.graphics_scene.remove_scale_items() - self.graphics_view.reset_scale_line_points() - self.set_scale_dialog.pixel_input.setText(self.set_scale_dialog.pixel_input_default) - self.set_scale_dialog.distance_input.setValue(0) - - def set_scale(self, scale: float) -> None: """ Function to set the scale of the program given when the Set scale button is clicked in the Set Scale dialog box. From bd0c809a13fc0c36e4b4509a23e7b4f7ed9cdaa9 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Mon, 24 Jul 2023 11:05:19 +0100 Subject: [PATCH 008/105] Update formatting for the graphics elements --- tactool/graphics_scene.py | 78 ++++++++++++++++++--------------------- tactool/graphics_view.py | 39 ++++++++------------ 2 files changed, 52 insertions(+), 65 deletions(-) diff --git a/tactool/graphics_scene.py b/tactool/graphics_scene.py index 5ed0aa3..ba5958f 100644 --- a/tactool/graphics_scene.py +++ b/tactool/graphics_scene.py @@ -1,7 +1,3 @@ -""" -The Graphics Scene manages elements which are painted onto images. -""" - from typing import Optional from PyQt5.QtCore import ( @@ -31,6 +27,7 @@ class GraphicsScene(QGraphicsScene): """ PyQt QGraphicsScene with convenience functions for Analysis Point data. + Manages elements which are painted onto images. """ def __init__(self) -> None: super().__init__() @@ -58,7 +55,7 @@ def add_analysis_point( material: str = "", ) -> AnalysisPoint: """ - Function to draw an Analysis Point onto the Graphics Scene and + Draw an Analysis Point onto the Graphics Scene and add it's data to the Table Model. """ # Set the drawing colours to use the given colour @@ -89,12 +86,8 @@ def add_analysis_point( ) # If no analysis point ID is given, assign it the next ID available - # Else, the next available ID requires incrementing anyway due to - # the additional point being added if not apid: apid = self.next_point_id - else: - _ = self.next_point_id # Set the label text of the point # Use the given label if there is one, else use the point ID @@ -109,29 +102,29 @@ def add_analysis_point( # Place the new point data into an Analysis Point object point_data = AnalysisPoint( - apid, - label, - x, - y, - diameter, - scale, - colour, - sample_name, - mount_name, - material, - notes, - outer_ellipse, - inner_ellipse, - label_text_item, + id=apid, + label=label, + x=x, + y=y, + diameter=diameter, + scale=scale, + colour=colour, + sample_name=sample_name, + mount_name=mount_name, + material=material, + notes=notes, + _outer_ellipse=outer_ellipse, + _inner_ellipse=inner_ellipse, + _label_text_item=label_text_item, ) - # Add the Analysis Point to the Table Model self.table_model.add_point(point_data) return point_data def remove_analysis_point(self, x: int, y: int, apid: int) -> Optional[int]: """ - Function to remove an Analysis Point from the Graphics Scene based on it's coordinates. + Remove an Analysis Point from the Graphics Scene, + using either it's coordinates or it's ID value. """ analysis_point = None # If a target ID is provided, get the Analysis Point using it's ID @@ -158,16 +151,18 @@ def remove_analysis_point(self, x: int, y: int, apid: int) -> Optional[int]: def get_ellipse_at(self, x: int, y: int) -> Optional[QGraphicsEllipseItem]: """ - Function to get an Ellipse Item from the Graphics Scene at the given coordinates. + Get an Ellipse Item from the Graphics Scene at the given coordinates. """ - # Using list comprehension to iterate through the existing Analysis Points # Using PyQt QGraphicsScene selection functions to find the Analysis Points at the given coordinates # Only adding it to the list if it is an Ellipse item ellipse_items = [ - item for item in self.items(QRectF(x, y, 2, 2), - Qt.ItemSelectionMode(Qt.IntersectsItemShape), - Qt.SortOrder(Qt.DescendingOrder)) - if type(item) is QGraphicsEllipseItem + item + for item in self.items( + QRectF(x, y, 2, 2), + Qt.ItemSelectionMode(Qt.IntersectsItemShape), + Qt.SortOrder(Qt.DescendingOrder), + ) + if isinstance(item, QGraphicsEllipseItem) ] # If there are items in the list, return the first as it will be the target ellipse @@ -177,7 +172,7 @@ def get_ellipse_at(self, x: int, y: int) -> Optional[QGraphicsEllipseItem]: @property def next_point_id(self) -> int: """ - Function to iterate and return the maximum Analysis Point ID value. + Return the current maximum Analysis Point ID value + 1. """ ids = [ analysis_point.id @@ -191,9 +186,13 @@ def next_point_id(self) -> int: def toggle_transparent_window(self, graphics_view_image: QGraphicsPixmapItem) -> None: """ - Function to toggle a transparent grey overlay ontop of the image when entering scaling mode. + Toggle a transparent grey overlay ontop of the image for scaling mode. """ - if not self.scaling_rect: + if self.scaling_rect is not None: + # Remove the PyQt Rect from the PyQt Item Group and reset the scaling_rect variable + self.removeItem(self.scaling_rect) + self.scaling_rect = None + else: # Convert the current image to a pixmap image_pixmap = graphics_view_image.pixmap() image_width, image_height = image_pixmap.width(), image_pixmap.height() @@ -206,16 +205,11 @@ def toggle_transparent_window(self, graphics_view_image: QGraphicsPixmapItem) -> # Creating a PyQt Item Group to store all Graphics Scene scaling items within one variable self.scaling_group = self.createItemGroup([]) self.scaling_group.addToGroup(self.scaling_rect) - # Else there is currently a transparent PyQt Rect - else: - # Remove the PyQt Rect from the PyQt Item Group and reset the scaling_rect variable - self.removeItem(self.scaling_rect) - self.scaling_rect = None def draw_scale_line(self, start_point: float, end_point: float) -> None: """ - Function to draw or redraw the scale line when in scaling mode. + Draw or redraw the scale line when in scaling mode. """ # If there is current a line, then remove it from the PyQt Item Group and # reset the scaling_line variable @@ -238,7 +232,7 @@ def draw_scale_line(self, start_point: float, end_point: float) -> None: def draw_scale_point(self, x: int, y: int) -> None: """ - Function to draw an ellipse at the given coordinates. + Draw an ellipse at the given coordinates. Used for drawing small ellipse' at both ends of the scaling line. """ # Set the drawing mode to use a PyQt Pen in red @@ -252,7 +246,7 @@ def draw_scale_point(self, x: int, y: int) -> None: def remove_scale_items(self) -> None: """ - Function to remove all items from the Graphics Scene associated with the scaling mode. + Remove all items from the Graphics Scene associated with the scaling mode. """ # If there are items in the PyQt Item Group for scaling items if self.scaling_group: diff --git a/tactool/graphics_view.py b/tactool/graphics_view.py index da04a23..d771dfa 100644 --- a/tactool/graphics_view.py +++ b/tactool/graphics_view.py @@ -1,8 +1,3 @@ -""" -The Graphics View is the user interface element in charge of image interaction. -It can load and save images and is responsible for capturing mouse events. -""" - import math from PyQt5.QtCore import ( @@ -52,7 +47,7 @@ def __init__(self) -> None: self._image = QGraphicsPixmapItem() self.navigation_mode = False # Setting scaling variables - self.set_scale_mode = False + self.scaling_mode = False self.scale_start_point = QPointF() self.scale_end_point = QPointF() @@ -66,7 +61,7 @@ def __init__(self) -> None: def mousePressEvent(self, event: QMouseEvent) -> None: """ - Function to handle mouse clicking interaction events with the Graphics View. + Handler for mouse clicking interaction events with the Graphics View. Since we are only adding functionality to mousePressEvent, we pass the event to the parent PyQt class, QGraphicsView, at the end of the function to handle @@ -76,7 +71,7 @@ def mousePressEvent(self, event: QMouseEvent) -> None: if self._image.isUnderMouse(): clicked_point = self.mapToScene(event.pos()).toPoint() - if self.set_scale_mode: + if self.scaling_mode: # If there is no current start point of a scaling line if self.scale_start_point.isNull(): # Set the start point of the scaling line to be the clicked point @@ -104,13 +99,13 @@ def mousePressEvent(self, event: QMouseEvent) -> None: def mouseMoveEvent(self, event: QMouseEvent) -> None: """ - Function to handle mouse movement interaction events with the Graphics View. + Handler for mouse movement interaction events with the Graphics View. Since we are only adding functionality to mouseMoveEvent, we pass the event to the parent PyQt class, QGraphicsView, at the end of the function to handle all other event occurences. """ - if self.set_scale_mode: + if self.scaling_mode: # If there is a current start point but not an end point of a scaling line if not self.scale_start_point.isNull() and self.scale_end_point.isNull(): # Emit a signal that the mouse has been moved @@ -124,7 +119,7 @@ def mouseMoveEvent(self, event: QMouseEvent) -> None: def wheelEvent(self, event: QWheelEvent) -> None: """ - Function to handle mouse scroll wheel interaction events with the Graphics View. + Handler for mouse scroll wheel interaction events with the Graphics View. The function does not pass the event back to the parent class PyQt QGraphicsView because the default wheelEvent triggers the scrolling of the Graphics View. @@ -159,7 +154,7 @@ def wheelEvent(self, event: QWheelEvent) -> None: def keyPressEvent(self, event: QKeyEvent) -> None: """ - Function to handle keyboard press events. + Handler for keyboard press events. Since we are only adding functionality to keyPressEvent, we pass the event to the parent PyQt class, QGraphicsView, at the end of the function to handle @@ -177,7 +172,7 @@ def keyPressEvent(self, event: QKeyEvent) -> None: def keyReleaseEvent(self, event: QKeyEvent) -> None: """ - Function to handle keyboard release events. + Handler for keyboard release events. Since we are only adding functionality to keyReleaseEvent, we pass the event to the parent PyQt class, QGraphicsView, at the end of the function to handle @@ -193,7 +188,7 @@ def keyReleaseEvent(self, event: QKeyEvent) -> None: def configure_frame(self) -> None: """ - Function to configure the settings of the Graphics View. + Configure the settings of the Graphics View. """ # Sets the Graphics View to anchor it's centre to the current position of the mouse # This applies when zooming into the image @@ -210,7 +205,7 @@ def configure_frame(self) -> None: def load_image(self, filepath: str) -> None: """ - Fuction to load an image from a given path into the Graphics View as a PyQt Pixmap. + Load an image from a given path into the Graphics View as a PyQt Pixmap. """ # Load the image into a PyQt Pixmap pixmap = QPixmap(filepath) @@ -231,7 +226,7 @@ def load_image(self, filepath: str) -> None: def save_image(self, filepath: str) -> None: """ - Function to get the current Graphics Scene state and save it to a given file. + Get the current Graphics Scene state and save it to a given file. """ # If you get the size of the Graphics Scene rather than the Graphics View, # then the saved image includes points which go over the border of the imported image @@ -252,9 +247,9 @@ def save_image(self, filepath: str) -> None: def show_entire_image(self) -> None: """ - Function to show the entirety of the current image in the Graphics View. + Show the entirety of the current image in the Graphics View. """ - # Get a rectf of the current image + # Get a QRectF of the current image rect = QRectF(self._image.pixmap().rect()) # If a rectf object was successfully created if not rect.isNull(): @@ -280,16 +275,14 @@ def show_entire_image(self) -> None: def toggle_scaling_mode(self) -> None: """ - Function to toggle the scaling mode Graphics Scene settings. + Toggle the scaling mode Graphics Scene settings. """ - self.set_scale_mode = not self.set_scale_mode + self.scaling_mode = not self.scaling_mode self.graphics_scene.toggle_transparent_window(self._image) - # If the program is currently in Scaling mode - if self.set_scale_mode: + if self.scaling_mode: # Set the Graphics View cursor to a crosshair self.setCursor(Qt.CrossCursor) - # Else when the program is not currently in Scaling mode else: self.reset_scaling_elements() self.setCursor(Qt.ArrowCursor) From c06ffc48b5db830563df79218860ed1e810138cb Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Mon, 24 Jul 2023 11:24:00 +0100 Subject: [PATCH 009/105] Move CSV parsing functions into transformation.py --- tactool/transform.py | 9 --- tactool/transformation.py | 88 +++++++++++++++++++++++++++ tactool/window.py | 125 ++++++++------------------------------ test/test_integration.py | 2 +- 4 files changed, 116 insertions(+), 108 deletions(-) delete mode 100644 tactool/transform.py create mode 100644 tactool/transformation.py diff --git a/tactool/transform.py b/tactool/transform.py deleted file mode 100644 index a1f0c93..0000000 --- a/tactool/transform.py +++ /dev/null @@ -1,9 +0,0 @@ -from tactool.table_model import AnalysisPoint - - -def reset_id(analysis_point: AnalysisPoint) -> AnalysisPoint: - """ - Resed the ID value of a given Analysis Point. - """ - analysis_point.id = None - return analysis_point diff --git a/tactool/transformation.py b/tactool/transformation.py new file mode 100644 index 0000000..60634f2 --- /dev/null +++ b/tactool/transformation.py @@ -0,0 +1,88 @@ +""" +Functions for parsing TACtool CSV data and transformation existing Analysis Points. +""" + +from csv import DictReader +from typing import Any + +from tactool.table_model import AnalysisPoint + + +def parse_tactool_csv(filepath: str, default_settings = dict[str, Any]) -> list[dict[str, Any]]: + """ + Parse the data in a given TACtool CSV file. + """ + default_values = { + "Name": 0, + "X": 0, + "Y": 0, + "diameter": default_settings["diameter"], + "scale": float(default_settings["scale"]), + "colour": default_settings["colour"], + } + + analysis_point_rows = [] + with open(filepath) as csv_file: + reader = DictReader(csv_file) + # Iterate through each line in the CSV file + for id, item in enumerate(reader): + + # Split the id and sample_name value from the Name column + if "_#" in item["Name"]: + item["sample_name"], item["Name"] = item["Name"].rsplit("_#", maxsplit=1) + + # The default ID value is incremented with the row number + default_values["Name"] = id + 1 + # If there is a Z column which is requried for the laser, then remove it + try: + item.pop("Z") + except KeyError: + pass + + item = parse_row_data(item, default_values) + + # Rename specific fields to match function arguments + header_changes = { + "Name": "apid", + "X": "x", + "Y": "y", + "Type": "label", + } + for old_header, new_header in zip(header_changes, list(header_changes.values())): + item[new_header] = item.pop(old_header) + + analysis_point_rows.append(item) + return analysis_point_rows + + +def parse_row_data(item: dict, default_values: dict) -> dict: + """ + Parse the data of an Analysis Point row item in a CSV file. + """ + # Define the field names and their type conversions in Python + fields = ["Name", "X", "Y", "diameter", "scale", "colour"] + pre_processes = [int, int, int, int, float, None] + + # Iterate through each field, it's type conversion and it's default value + for field, pre_process in zip(fields, pre_processes): + try: + # If a value has been given + if item[field]: + # If the value requires preprocessing + if pre_process: + item[field] = pre_process(item[field]) + # Else when no value is given + else: + item[field] = default_values[field] + # In the event of a KeyError, throw away the value which caused the error + except KeyError: + item[field] = default_values[field] + return item + + +def reset_id(analysis_point: AnalysisPoint) -> AnalysisPoint: + """ + Resed the ID value of a given Analysis Point. + """ + analysis_point.id = None + return analysis_point diff --git a/tactool/window.py b/tactool/window.py index 59831d9..7105127 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -4,8 +4,6 @@ """ import logging - -from csv import DictReader from textwrap import dedent from typing import ( Callable, @@ -35,7 +33,8 @@ from tactool.set_scale_dialog import SetScaleDialog from tactool.table_model import AnalysisPoint from tactool.table_view import TableView -from tactool.transform import ( +from tactool.transformation import ( + parse_tactool_csv, reset_id, ) @@ -372,10 +371,16 @@ def import_tactool_csv_get_path(self) -> None: def load_tactool_csv_data(self, filepath: str) -> None: """ - Get all the analysis points from a csv and display them in model and scene. + Load the Analysis Point data from a given CSV file and add it into the program. """ try: - self.process_tactool_csv(filepath) + analysis_points = parse_tactool_csv(filepath, self.default_settings) + self.clear_analysis_points() + self.reset_settings() + for analysis_point in analysis_points: + self.add_analysis_point(**analysis_point, from_click=False) + self.table_view.scrollToTop() + # A KeyError and UnicodeError usually occur with an incorrectly formatted CSV file except (KeyError, UnicodeError): # Show a message to the user informing them of which headers should be in the CSV file @@ -389,81 +394,6 @@ def load_tactool_csv_data(self, filepath: str) -> None: self.show_message("Error loading data", message, "warning") - def process_tactool_csv(self, filepath: str) -> None: - """ - Function to process the data in a given TACtool CSV file - and create the required Analysis Points. - """ - # Clear existing points and settings first - self.clear_analysis_points() - self.reset_settings() - - default_values = { - "Name": 0, - "X": 0, - "Y": 0, - "diameter": self.default_settings["diameter"], - "scale": float(self.default_settings["scale"]), - "colour": self.default_settings["colour"], - } - - with open(filepath) as csv_file: - reader = DictReader(csv_file) - # Iterate through each line in the CSV file - for id, item in enumerate(reader): - - # Split the id and sample_name value from the Name column - if "_#" in item["Name"]: - item["sample_name"], item["Name"] = item["Name"].rsplit("_#", maxsplit=1) - - # The default ID value is incremented with the row number - default_values["Name"] = id + 1 - # If there is a Z column which is requried for the laser, then remove it - try: - item.pop("Z") - except KeyError: - pass - - item = self.parse_row_data(item, default_values) - - # Rename specific fields to match function arguments - header_changes = { - "Name": "apid", - "X": "x", - "Y": "y", - "Type": "label", - } - for old_header, new_header in zip(header_changes, list(header_changes.values())): - item[new_header] = item.pop(old_header) - self.add_analysis_point(**item, from_click=False) - self.table_view.scrollToTop() - - - def parse_row_data(self, item: dict, default_values: dict) -> dict: - """ - Function to parse the data of an Analysis Point row item in a CSV file. - """ - # Define the field names and their type conversions in Python - fields = ["Name", "X", "Y", "diameter", "scale", "colour"] - pre_processes = [int, int, int, int, float, None] - - # Iterate through each field, it's type conversion and it's default value - for field, pre_process in zip(fields, pre_processes): - try: - # If a value has been given - if item[field]: - # If the value requires preprocessing - if pre_process: - item[field] = pre_process(item[field]) - # Else when no value is given - else: - item[field] = default_values[field] - # In the event of a KeyError, throw away the value which caused the error - except KeyError: - item[field] = default_values[field] - return item - - def export_tactool_csv_get_path(self) -> None: """ Function to create a PyQt File Dialog, @@ -487,7 +417,7 @@ def export_tactool_csv_get_path(self) -> None: def validate_current_data(self, validate_image: bool = False) -> bool: """ - Function to check if the current data of the Analysis Points is valid. + Check if the current data of the Analysis Points is valid. Used when exporting data to a file. Each validation step contains a return statement which is used when the validation fails, thus preventing the remaining validation. @@ -587,21 +517,6 @@ def add_analysis_point( self.table_view.model().layoutChanged.emit() - def remove_analysis_point(self, x: int = None, y: int = None, apid: int = None) -> None: - """ - Function to remove an Analysis Point from the PyQt Graphics Scene. - The Point is specified using it's coordinates or it's ID value. - """ - deletion_result = self.graphics_scene.remove_analysis_point(x=x, y=y, apid=apid) - # If the deletion returned a value, it is the Analysis Point ID and so is outputted - if deletion_result: - logger.debug("Deleted Analysis Point: %s", deletion_result) - - # Update the status bar messages and PyQt Table View - self.toggle_status_bar_messages() - self.table_view.model().layoutChanged.emit() - - def reload_analysis_points( self, index: Optional[QModelIndex] = None, @@ -643,13 +558,27 @@ def reload_analysis_points( def clear_analysis_points(self) -> None: """ - Function to delete all existing Analysis Points. + Clear all existing Analysis Points. """ - # Iterate through existing Analysis Points and delete them for point in self.table_model.analysis_points: self.remove_analysis_point(apid=point.id) + def remove_analysis_point(self, x: int = None, y: int = None, apid: int = None) -> None: + """ + Remove an Analysis Point from the PyQt Graphics Scene. + The Point is specified using it's coordinates or it's ID value. + """ + deletion_result = self.graphics_scene.remove_analysis_point(x=x, y=y, apid=apid) + # If the deletion returned a value, it is the Analysis Point ID and so is outputted + if deletion_result: + logger.debug("Deleted Analysis Point: %s", deletion_result) + + # Update the status bar messages and PyQt TableView + self.toggle_status_bar_messages() + self.table_view.model().layoutChanged.emit() + + def set_point_colour(self) -> None: """ Function to update the selected colour in the user interface. diff --git a/test/test_integration.py b/test/test_integration.py index fd0098c..5c9b347 100644 --- a/test/test_integration.py +++ b/test/test_integration.py @@ -347,7 +347,7 @@ def test_import_tactool_csv(tactool: TACtool, filepath: str, expected_points: li ) # Import the data from the given TACtool CSV file - tactool.window.process_tactool_csv(filepath) + tactool.window.load_tactool_csv_data(filepath) # Iterate through the actual Analysis Points created from the CSV file # and the calculated Analysis Points in this test From 4d8f876d5c8dec56a13b73bc8dc03ac1b55278bb Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Mon, 24 Jul 2023 11:28:33 +0100 Subject: [PATCH 010/105] Move automated ID incrementing function to table_model --- tactool/graphics_scene.py | 21 +-------------------- tactool/table_model.py | 15 +++++++++++++++ tactool/window.py | 16 ++++++++++------ 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/tactool/graphics_scene.py b/tactool/graphics_scene.py index ba5958f..c77cc13 100644 --- a/tactool/graphics_scene.py +++ b/tactool/graphics_scene.py @@ -42,6 +42,7 @@ def __init__(self) -> None: def add_analysis_point( self, + apid: int, x: int, y: int, label: str, @@ -49,7 +50,6 @@ def add_analysis_point( colour: str, scale: float, notes: str = "", - apid: int = None, sample_name: str = "", mount_name: str = "", material: str = "", @@ -85,10 +85,6 @@ def add_analysis_point( pen, ) - # If no analysis point ID is given, assign it the next ID available - if not apid: - apid = self.next_point_id - # Set the label text of the point # Use the given label if there is one, else use the point ID label_text = f"{apid}_{label}" if label else str(apid) @@ -169,21 +165,6 @@ def get_ellipse_at(self, x: int, y: int) -> Optional[QGraphicsEllipseItem]: return ellipse_items[0] if ellipse_items else None - @property - def next_point_id(self) -> int: - """ - Return the current maximum Analysis Point ID value + 1. - """ - ids = [ - analysis_point.id - for analysis_point in self.table_model.analysis_points - ] - if len(ids) == 0: - return 1 - else: - return max(ids) + 1 - - def toggle_transparent_window(self, graphics_view_image: QGraphicsPixmapItem) -> None: """ Toggle a transparent grey overlay ontop of the image for scaling mode. diff --git a/tactool/table_model.py b/tactool/table_model.py index 1c71440..06842c7 100644 --- a/tactool/table_model.py +++ b/tactool/table_model.py @@ -262,6 +262,21 @@ def reference_points(self) -> list[AnalysisPoint]: return [AnalysisPoint(*item) for item in self._data if item[label_index] == "RefMark"] + @property + def next_point_id(self) -> int: + """ + Return the current maximum Analysis Point ID value + 1. + """ + ids = [ + analysis_point.id + for analysis_point in self.analysis_points + ] + if len(ids) == 0: + return 1 + else: + return max(ids) + 1 + + def export_csv(self, filepath: Path) -> None: """ Get all the existing Analysis Points and write them to as a CSV file. diff --git a/tactool/window.py b/tactool/window.py index 7105127..0619967 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -468,12 +468,12 @@ def add_analysis_point( self, x: int, y: int, - label: str = None, - diameter: int = None, - scale: float = None, - colour: str = None, + label: Optional[str] = None, + diameter: Optional[int] = None, + scale: Optional[float] = None, + colour: Optional[str] = None, notes: str = "", - apid: int = None, + apid: Optional[int] = None, sample_name: str = "", mount_name: str = "", material: str = "", @@ -497,7 +497,12 @@ def add_analysis_point( mount_name = self.mount_name_input.text() material = self.material_input.text() + # If no analysis point ID is given, assign it the next ID available + if not apid: + apid = self.table_model.next_point_id + analysis_point = self.graphics_scene.add_analysis_point( + apid=apid, x=x, y=y, label=label, @@ -505,7 +510,6 @@ def add_analysis_point( scale=scale, colour=colour, notes=notes, - apid=apid, sample_name=sample_name, mount_name=mount_name, material=material, From 795e6865c28ae30c0ba131d80011bb7a37bcec91 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Mon, 24 Jul 2023 12:00:20 +0100 Subject: [PATCH 011/105] Add disable_analysis_points option to the GraphicsView --- tactool/graphics_view.py | 3 +- tactool/window.py | 132 +++++++++++++++++++-------------------- test/test_integration.py | 3 + 3 files changed, 70 insertions(+), 68 deletions(-) diff --git a/tactool/graphics_view.py b/tactool/graphics_view.py index d771dfa..581097d 100644 --- a/tactool/graphics_view.py +++ b/tactool/graphics_view.py @@ -45,6 +45,7 @@ def __init__(self) -> None: self._empty = True # This stores the current image of the PyQt Graphics View as a PyQt Pixmap Item self._image = QGraphicsPixmapItem() + self.disable_analysis_points = False self.navigation_mode = False # Setting scaling variables self.scaling_mode = False @@ -86,7 +87,7 @@ def mousePressEvent(self, event: QMouseEvent) -> None: # Call the Graphics Scene function to draw the point self.graphics_scene.draw_scale_point(clicked_point.x(), clicked_point.y()) - elif not self.navigation_mode: + elif not self.navigation_mode and not self.disable_analysis_points: clicked_button = event.button() if clicked_button == Qt.LeftButton: diff --git a/tactool/window.py b/tactool/window.py index 0619967..70a44be 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -1,8 +1,3 @@ -""" -The Window manages the user interface layout and interaction with -buttons and input boxes. -""" - import logging from textwrap import dedent from typing import ( @@ -15,6 +10,7 @@ from PyQt5.QtWidgets import ( QColorDialog, QComboBox, + QDialog, QFileDialog, QHBoxLayout, QLabel, @@ -72,7 +68,6 @@ def __init__(self, testing_mode: bool) -> None: # point_colour is stored as a class vairable because it requires formatting # this variable is the formatted version ready to use for other functions self.point_colour: str = self.default_settings["colour"] - self.status_bar_messages = self.create_status_bar_messages() # Setup the User Interface self.setWindowTitle("TACtool") @@ -85,8 +80,9 @@ def __init__(self, testing_mode: bool) -> None: self.recoordinate_dialog: Optional[RecoordinateDialog] = None self.setup_ui_elements() self.connect_signals_and_slots() + self.status_bar_messages = self.create_status_bar_messages() self.toggle_status_bar_messages() - self.main_input_widgets = [ + self.main_input_widgets: list[QWidget] = [ self.menu_bar_file, self.sample_name_input, self.mount_name_input, @@ -94,16 +90,21 @@ def __init__(self, testing_mode: bool) -> None: self.label_input, self.colour_button, self.diameter_input, + self.set_scale_button, self.reset_ids_button, self.reset_settings_button, self.clear_points_button, self.table_view, ] + self.dialogs: list[QDialog] = [ + self.set_scale_dialog, + self.recoordinate_dialog, + ] def setup_ui_elements(self) -> None: """ - Function to setup the User Interface elements. + Setup the User Interface elements. """ # Create the menu bar self.menu_bar = self.menuBar() @@ -207,7 +208,7 @@ def setup_ui_elements(self) -> None: def set_colour_button_style(self) -> None: """ - Function to set the CSS stylesheet of the Colour Button in the User Interface. + Set the CSS stylesheet of the Colour Button in the User Interface. """ colour_button_stylesheet = """ QToolTip { @@ -223,7 +224,7 @@ def set_colour_button_style(self) -> None: def connect_signals_and_slots(self) -> None: """ - Function for connecting signals and slots of User Interface interactions. + Connect signals and slots to User Interface interactions. """ # Connect menu bar clicks to handlers self.menu_bar_file_import_image.triggered.connect(self.import_image_get_path) @@ -251,7 +252,7 @@ def connect_signals_and_slots(self) -> None: def create_status_bar_messages(self): """ - Function to create the status bar message functions. + Create the status bar message functions. """ # Each of these functions contains the condition for the status message and the message itself # These must be functions so that the conditional statement is dynamic @@ -285,7 +286,7 @@ def set_scale(self: Window): def toggle_status_bar_messages(self) -> None: """ - Function to toggle all of the status bar messages. + Toggle all of the status bar messages. """ for status_name in self.status_bar_messages: # Get the status, condition result and message from the dictionary @@ -436,7 +437,7 @@ def validate_current_data(self, validate_image: bool = False) -> bool: return False # If there are less than 3 reference points - if self.status_bar_messages["ref_points"]["status"]: + if len(self.table_model.reference_points) < 3: default_label = self.default_settings["label"] message = dedent(f""" Missing reference points. @@ -597,45 +598,9 @@ def set_point_colour(self) -> None: self.set_colour_button_style() - def toggle_scaling_mode(self) -> None: - """ - Function to toggle the program's scaling mode functionality. - """ - # Toggle the scaling mode for the Graphics View - self.graphics_view.toggle_scaling_mode() - - # If the program is not in scaling mode - if self.set_scale_dialog is None: - self.set_scale_dialog = SetScaleDialog(self.testing_mode) - self.toggle_main_input_widgets(False) - # Move the Set Scale Dialog box to be at the top left corner of the main window - main_window_pos = self.pos() - self.set_scale_dialog.move(main_window_pos.x() + 50, main_window_pos.y() + 50) - - # Connect the Set Scale dialog buttons - self.set_scale_dialog.set_scale_clicked.connect(self.set_scale) - self.set_scale_dialog.clear_scale_clicked.connect(self.graphics_view.reset_scaling_elements) - self.set_scale_dialog.closed_set_scale_dialog.connect(self.toggle_scaling_mode) - self.graphics_view.scale_move_event.connect(self.set_scale_dialog.scale_move_event_handler) - - # Else when the program is in scaling mode, reset the Set Scaling Dialog value - else: - self.set_scale_dialog = None - # Enable main window widgets - self.toggle_main_input_widgets(True) - - - def toggle_main_input_widgets(self, enable: bool) -> None: - """ - Toggle each of the input widgets in the main window to be enabled or disabled. - """ - for widget in self.main_input_widgets: - widget.setEnabled(enable) - - def set_scale(self, scale: float) -> None: """ - Function to set the scale of the program given when the Set scale button is clicked in the Set Scale dialog box. + Set the scale of the program given when the Set scale button is clicked in the Set Scale dialog box. """ self.scale_value_input.setText(str(scale)) self.toggle_status_bar_messages() @@ -643,7 +608,7 @@ def set_scale(self, scale: float) -> None: def get_point_settings(self, analysis_point: AnalysisPoint, clicked_column_index: int) -> None: """ - Function to get the settings of an Analysis Point which has been selected in the PyQt Table View. + Get the settings of an Analysis Point which has been selected in the PyQt Table View. These settings are then updated to be the current settings. """ logger.debug("Selected Analysis Point: %s", analysis_point) @@ -663,7 +628,7 @@ def get_point_settings(self, analysis_point: AnalysisPoint, clicked_column_index def reset_settings(self) -> None: """ - Function to reset input fields and general Analysis Point settings to default. + Reset input fields and general Analysis Point settings to default. """ self.update_point_settings( sample_name=self.default_settings["metadata"], @@ -678,16 +643,16 @@ def reset_settings(self) -> None: def update_point_settings( self, - sample_name: str = None, - mount_name: str = None, - material: str = None, - label: str = None, - diameter: int = None, - scale: str | float = None, - colour: str = None, + sample_name: Optional[str] = None, + mount_name: Optional[str] = None, + material: Optional[str] = None, + label: Optional[str] = None, + diameter: Optional[int] = None, + scale: Optional[str | float] = None, + colour: Optional[str] = None, ) -> None: """ - Function to update the Analysis Point settings to be the given settings. + Update the Analysis Point settings to be the given settings. If a value is given for a field, then the value and any corresponding User Interface elements are updated. """ @@ -716,6 +681,43 @@ def update_point_settings( self.set_colour_button_style() + def toggle_main_input_widgets(self, enable: bool) -> None: + """ + Toggle each of the input widgets in the main window to be enabled or disabled. + """ + for widget in self.main_input_widgets: + widget.setEnabled(enable) + self.graphics_view.disable_analysis_points = not enable + + + def toggle_scaling_mode(self) -> None: + """ + Function to toggle the program's scaling mode functionality. + """ + # Toggle the scaling mode for the Graphics View + self.graphics_view.toggle_scaling_mode() + + # If the program is not in scaling mode + if self.set_scale_dialog is None: + self.set_scale_dialog = SetScaleDialog(self.testing_mode) + self.toggle_main_input_widgets(False) + # Move the Set Scale Dialog box to be at the top left corner of the main window + main_window_pos = self.pos() + self.set_scale_dialog.move(main_window_pos.x() + 50, main_window_pos.y() + 50) + + # Connect the Set Scale dialog buttons + self.set_scale_dialog.set_scale_clicked.connect(self.set_scale) + self.set_scale_dialog.clear_scale_clicked.connect(self.graphics_view.reset_scaling_elements) + self.set_scale_dialog.closed_set_scale_dialog.connect(self.toggle_scaling_mode) + self.graphics_view.scale_move_event.connect(self.set_scale_dialog.scale_move_event_handler) + + # Else when the program is in scaling mode, reset the Set Scaling Dialog value + else: + self.set_scale_dialog = None + # Enable main window widgets + self.toggle_main_input_widgets(True) + + def toggle_recoordinate_dialog(self) -> None: """ Toggle the recoordination dialog window. @@ -750,7 +752,7 @@ def recoordinate_points(self, input_csv: str, output_csv: str): def data_error_message(self, error: Exception) -> None: """ - Function to show an error message to the user in the event that + Show an error message to the user in the event that an error occurs when loading in data. """ self.show_message( @@ -762,7 +764,7 @@ def data_error_message(self, error: Exception) -> None: def show_message(self, title: str, message: str, type: str) -> bool: """ - Function to show a given message to the user in a PyQt QMessageBox. + Show a given message to the user in a PyQt QMessageBox. """ # Creating the PyQt Message box and formatting it widget = QMessageBox() @@ -792,10 +794,6 @@ def closeEvent(self, event=None) -> None: Function which is run by PyQt when the application is closed. """ # Close any open dialogs - dialogs = [ - self.recoordinate_dialog, - self.set_scale_dialog, - ] - for dialog in dialogs: + for dialog in self.dialogs: if dialog is not None: dialog.close() diff --git a/test/test_integration.py b/test/test_integration.py index 5c9b347..9fce56b 100644 --- a/test/test_integration.py +++ b/test/test_integration.py @@ -213,6 +213,7 @@ def test_toggle_scaling_mode(tactool: TACtool) -> None: # Check that the main input widgets are enabled for widget in tactool.window.main_input_widgets: assert widget.isEnabled() is True + assert tactool.window.graphics_view.disable_analysis_points is False # Start the scaling mode tactool.window.toggle_scaling_mode() @@ -224,6 +225,7 @@ def test_toggle_scaling_mode(tactool: TACtool) -> None: # Check that the main input widgets are disabled for widget in tactool.window.main_input_widgets: assert widget.isEnabled() is False + assert tactool.window.graphics_view.disable_analysis_points is True # Set the scale, following the same steps as the user would tactool.window.set_scale_dialog.scale_value.setText(str(2.0)) @@ -236,6 +238,7 @@ def test_toggle_scaling_mode(tactool: TACtool) -> None: # Check that the main input widgets are enabled for widget in tactool.window.main_input_widgets: assert widget.isEnabled() is True + assert tactool.window.graphics_view.disable_analysis_points is False def test_set_scale(tactool: TACtool) -> None: From 12f75fa4e39afcba446b2148a6704c0d112f9b86 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Mon, 24 Jul 2023 12:15:41 +0100 Subject: [PATCH 012/105] Add convenience property methods to the main class --- tactool/main.py | 43 +++++++++++-- test/test_integration.py | 136 +++++++++++++++++++-------------------- 2 files changed, 104 insertions(+), 75 deletions(-) diff --git a/tactool/main.py b/tactool/main.py index 10e9579..7deb31d 100644 --- a/tactool/main.py +++ b/tactool/main.py @@ -1,19 +1,23 @@ -""" -Main TACtool application class definition. -""" - import argparse import sys from PyQt5 import QtGui from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication + +from tactool.graphics_scene import GraphicsScene +from tactool.graphics_view import GraphicsView +from tactool.recoordinate_dialog import RecoordinateDialog +from tactool.set_scale_dialog import SetScaleDialog +from tactool.table_model import TableModel +from tactool.table_view import TableView from tactool.window import Window class TACtool(QApplication): """ PyQt QApplication class with references to high-level components. + Includes some convenience property methods to aid with testing. """ def __init__( self, @@ -39,15 +43,40 @@ def __init__( def developer_mode(self) -> None: """ - Function to start the program in developer mode. + Start the program in developer mode. """ # Preload an image into the program path = "test/data/test_cl_montage.png" self.window.image_filepath = path self.window.setWindowTitle(f"TACtool: {self.window.image_filepath}") - self.window.graphics_view.load_image(path) + self.graphics_view.load_image(path) # This shows the entirety of a preloaded image in the Graphics View during initialisation - self.window.graphics_view.setTransform(QtGui.QTransform()) + self.graphics_view.setTransform(QtGui.QTransform()) + + + @property + def graphics_view(self) -> GraphicsView: + return self.window.graphics_view + + @property + def graphics_scene(self) -> GraphicsScene: + return self.window.graphics_scene + + @property + def table_model(self) -> TableModel: + return self.window.table_model + + @property + def table_view(self) -> TableView: + return self.window.table_view + + @property + def set_scale_dialog(self) -> SetScaleDialog: + return self.window.set_scale_dialog + + @property + def recoordinate_dialog(self) -> RecoordinateDialog: + return self.window.recoordinate_dialog if __name__ == "__main__": diff --git a/test/test_integration.py b/test/test_integration.py index 9fce56b..9ddd1c6 100644 --- a/test/test_integration.py +++ b/test/test_integration.py @@ -22,14 +22,14 @@ def test_add_and_remove_points(tactool: TACtool) -> None: Function to test the functionality of adding and removing Analysis Points via mouse clicks. """ # Test for empty model (ensures no leakage between apc fixtures) - assert tactool.window.table_model.analysis_points == [] + assert tactool.table_model.analysis_points == [] # This is the width of the pen used to create the _outer_ellipse item to be added to the # diameter to assert if the ellipse was created to the correct size as the bounding box includes pen width offset = 4 # The 1st Analysis Point has default settings - tactool.window.graphics_view.left_click.emit(101, 101) + tactool.graphics_view.left_click.emit(101, 101) # Adjust the settings for the 2nd Analysis Point tactool.window.update_point_settings( @@ -41,7 +41,7 @@ def test_add_and_remove_points(tactool: TACtool) -> None: scale=2.0, colour="#222222", ) - tactool.window.graphics_view.left_click.emit(202, 202) + tactool.graphics_view.left_click.emit(202, 202) # Adjust the settings for the 3rd Analysis Point # Purposefully making it overlap the 2nd Analysis Point @@ -52,7 +52,7 @@ def test_add_and_remove_points(tactool: TACtool) -> None: label="RefMark", colour="#333333", ) - tactool.window.graphics_view.left_click.emit(240, 240) + tactool.graphics_view.left_click.emit(240, 240) expected_data = [ AnalysisPoint(1, "RefMark", 101, 101, 10, 1.0, "#ffff00", "", "", "", "", None, None, None), @@ -61,7 +61,7 @@ def test_add_and_remove_points(tactool: TACtool) -> None: "duck", "", None, None, None), ] # Iterate through each actual Analysis Point and compare to expected Analysis Point - for index, analysis_point in enumerate(tactool.window.table_model.analysis_points): + for index, analysis_point in enumerate(tactool.table_model.analysis_points): # Using list slicing to compare just the public attributes of the Analysis Points, i.e. up to the last 3 assert analysis_point.aslist()[:PUBLIC_INDEX] == expected_data[index].aslist()[:PUBLIC_INDEX] # Compare the size of the actual ellipse to the mathematically expected size @@ -71,17 +71,17 @@ def test_add_and_remove_points(tactool: TACtool) -> None: # Remove the Analysis Point with an ID value of 3 # Purposefully clicking between the 2nd and 3rd point to ensure the 3rd one is still deleted # It should work like a stack when deleting overlapping points - tactool.window.graphics_view.right_click.emit(221, 221) + tactool.graphics_view.right_click.emit(221, 221) # Right click on an empty part of the PyQt Graphics View # Nothing should change - tactool.window.graphics_view.right_click.emit(0, 0) + tactool.graphics_view.right_click.emit(0, 0) # Adjust the settings for the 4th Analysis Point to match those of the 2nd Analysis Point # This is done by emitting a signal from the PyQt Table View of the selected Analysis Point - tactool.window.table_view.selected_analysis_point.emit(expected_data[1], 0) + tactool.table_view.selected_analysis_point.emit(expected_data[1], 0) # The 4th Analysis Point ID value should be 3 - tactool.window.graphics_view.left_click.emit(404, 404) + tactool.graphics_view.left_click.emit(404, 404) expected_data = [ AnalysisPoint(1, "RefMark", 101, 101, 10, 1.0, "#ffff00", "", "", "", "", None, None, None), @@ -89,7 +89,7 @@ def test_add_and_remove_points(tactool: TACtool) -> None: AnalysisPoint(3, "Spot", 404, 404, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", "", None, None, None), ] # Iterate through each actual Analysis Point and compare to expected Analysis Point - for index, analysis_point in enumerate(tactool.window.table_model.analysis_points): + for index, analysis_point in enumerate(tactool.table_model.analysis_points): # Using list slicing to compare just the public attributes of the Analysis Points, i.e. up to the last 3 assert analysis_point.aslist()[:PUBLIC_INDEX] == expected_data[index].aslist()[:PUBLIC_INDEX] # Compare the size of the actual ellipse to the mathematically expected size @@ -103,12 +103,12 @@ def test_clear_points(tactool: TACtool) -> None: Some points are purposefully overlapping for the test. """ # Check that the PyQt Table Model data is empty - assert tactool.window.table_model.analysis_points == [] + assert tactool.table_model.analysis_points == [] # Add some Analysis Points - tactool.window.graphics_view.left_click.emit(101, 101) - tactool.window.graphics_view.left_click.emit(202, 202) - tactool.window.graphics_view.left_click.emit(303, 303) + tactool.graphics_view.left_click.emit(101, 101) + tactool.graphics_view.left_click.emit(202, 202) + tactool.graphics_view.left_click.emit(303, 303) # The 5th point partially overlaps the 4th point # This is intentional as this used to cause issues tactool.window.update_point_settings( @@ -119,14 +119,14 @@ def test_clear_points(tactool: TACtool) -> None: diameter=100, colour="#ff0000", ) - tactool.window.graphics_view.left_click.emit(404, 404) - tactool.window.graphics_view.left_click.emit(440, 440) + tactool.graphics_view.left_click.emit(404, 404) + tactool.graphics_view.left_click.emit(440, 440) # Simulate a button click of the Clear Points button tactool.window.clear_points_button.click() # Check that all Analysis Points have been removed - assert tactool.window.table_model.analysis_points == [] + assert tactool.table_model.analysis_points == [] def test_reset_id_values(tactool: TACtool) -> None: @@ -134,22 +134,22 @@ def test_reset_id_values(tactool: TACtool) -> None: Function to test the functionality of the Reset IDs button. """ # Add some Analysis Points - tactool.window.graphics_view.left_click.emit(101, 101) - tactool.window.graphics_view.left_click.emit(202, 202) - tactool.window.graphics_view.left_click.emit(303, 303) - tactool.window.graphics_view.left_click.emit(404, 404) - tactool.window.graphics_view.left_click.emit(505, 505) + tactool.graphics_view.left_click.emit(101, 101) + tactool.graphics_view.left_click.emit(202, 202) + tactool.graphics_view.left_click.emit(303, 303) + tactool.graphics_view.left_click.emit(404, 404) + tactool.graphics_view.left_click.emit(505, 505) # Remove the 1st and 4th Analysis Points # This will make the ID values go 2, 3, 5 - tactool.window.graphics_view.right_click.emit(101, 101) - tactool.window.graphics_view.right_click.emit(404, 404) + tactool.graphics_view.right_click.emit(101, 101) + tactool.graphics_view.right_click.emit(404, 404) # Simulate a button click of the Reset IDs button tactool.window.reset_ids_button.click() # Iterate through each actual Analysis Point - for current_id, analysis_point in enumerate(tactool.window.table_model.analysis_points): + for current_id, analysis_point in enumerate(tactool.table_model.analysis_points): # Check that the ID value is equal to expected # We calculate expected ID value using the index of the Analysis Point in the Table Model assert analysis_point.id == current_id + 1 @@ -174,9 +174,9 @@ def test_reset_settings(tactool: TACtool) -> None: tactool.window.reset_settings_button.click() # Add some points, these should now have the default settings and metadata - tactool.window.graphics_view.left_click.emit(101, 101) - tactool.window.graphics_view.left_click.emit(202, 202) - tactool.window.graphics_view.left_click.emit(303, 303) + tactool.graphics_view.left_click.emit(101, 101) + tactool.graphics_view.left_click.emit(202, 202) + tactool.graphics_view.left_click.emit(303, 303) expected_settings = [ tactool.window.default_settings["label"], @@ -189,7 +189,7 @@ def test_reset_settings(tactool: TACtool) -> None: ] # Iterate through each actual Analysis Point - for analysis_point in tactool.window.table_model.analysis_points: + for analysis_point in tactool.table_model.analysis_points: actual_settings = [ analysis_point.label, analysis_point.diameter, @@ -209,11 +209,11 @@ def test_toggle_scaling_mode(tactool: TACtool) -> None: # Check that the SetScaleDialog and the transparent rectangle # on the PyQt Graphics Scene do not exist assert tactool.window.set_scale_dialog is None - assert tactool.window.graphics_scene.scaling_rect is None + assert tactool.graphics_scene.scaling_rect is None # Check that the main input widgets are enabled for widget in tactool.window.main_input_widgets: assert widget.isEnabled() is True - assert tactool.window.graphics_view.disable_analysis_points is False + assert tactool.graphics_view.disable_analysis_points is False # Start the scaling mode tactool.window.toggle_scaling_mode() @@ -221,11 +221,11 @@ def test_toggle_scaling_mode(tactool: TACtool) -> None: # Check that the SetScaleDialog and the transparent rectangle # on the PyQt Graphics Scene exist and are the correct type assert tactool.window.set_scale_dialog is not None - assert tactool.window.graphics_scene.scaling_rect is not None + assert tactool.graphics_scene.scaling_rect is not None # Check that the main input widgets are disabled for widget in tactool.window.main_input_widgets: assert widget.isEnabled() is False - assert tactool.window.graphics_view.disable_analysis_points is True + assert tactool.graphics_view.disable_analysis_points is True # Set the scale, following the same steps as the user would tactool.window.set_scale_dialog.scale_value.setText(str(2.0)) @@ -234,11 +234,11 @@ def test_toggle_scaling_mode(tactool: TACtool) -> None: # Check that the SetScaleDialog and the transparent rectangle # on the PyQt Graphics Scene do not exist assert tactool.window.set_scale_dialog is None - assert tactool.window.graphics_scene.scaling_rect is None + assert tactool.graphics_scene.scaling_rect is None # Check that the main input widgets are enabled for widget in tactool.window.main_input_widgets: assert widget.isEnabled() is True - assert tactool.window.graphics_view.disable_analysis_points is False + assert tactool.graphics_view.disable_analysis_points is False def test_set_scale(tactool: TACtool) -> None: @@ -248,16 +248,16 @@ def test_set_scale(tactool: TACtool) -> None: # Set the scale, following the same steps as the user would scale = 2.0 tactool.window.toggle_scaling_mode() - tactool.window.set_scale_dialog.scale_value.setText(str(scale)) - tactool.window.set_scale_dialog.set_scale() + tactool.set_scale_dialog.scale_value.setText(str(scale)) + tactool.set_scale_dialog.set_scale() # Add some points, these should now have the new scale - tactool.window.graphics_view.left_click.emit(101, 101) - tactool.window.graphics_view.left_click.emit(202, 202) - tactool.window.graphics_view.left_click.emit(303, 303) + tactool.graphics_view.left_click.emit(101, 101) + tactool.graphics_view.left_click.emit(202, 202) + tactool.graphics_view.left_click.emit(303, 303) # Iterate through each actual Analysis Point - for analysis_point in tactool.window.table_model.analysis_points: + for analysis_point in tactool.table_model.analysis_points: # Check that the scale value is equal to expected assert analysis_point.scale == scale @@ -269,9 +269,9 @@ def test_export_image(tactool: TACtool, tmp_path: WindowsPath) -> None: tmp_image_path = tmp_path / "exported_image.png" # Add some Analysis Points - tactool.window.graphics_view.left_click.emit(101, 101) - tactool.window.graphics_view.left_click.emit(202, 202) - tactool.window.graphics_view.left_click.emit(303, 303) + tactool.graphics_view.left_click.emit(101, 101) + tactool.graphics_view.left_click.emit(202, 202) + tactool.graphics_view.left_click.emit(303, 303) tactool.window.update_point_settings( sample_name="sample_x83", mount_name="mount_x81", @@ -280,17 +280,17 @@ def test_export_image(tactool: TACtool, tmp_path: WindowsPath) -> None: diameter=100, colour="#ff0000", ) - tactool.window.graphics_view.left_click.emit(404, 404) + tactool.graphics_view.left_click.emit(404, 404) # The 5th point purposefully goes over the imported image border - tactool.window.graphics_view.left_click.emit(555, 555) + tactool.graphics_view.left_click.emit(555, 555) # Zoom in on the PyQt Graphics View factor = 1.25 - tactool.window.graphics_view._zoom += 1 - tactool.window.graphics_view.scale(factor, factor) + tactool.graphics_view._zoom += 1 + tactool.graphics_view.scale(factor, factor) # Save the image to the given filepath - tactool.window.graphics_view.save_image(str(tmp_image_path)) + tactool.graphics_view.save_image(str(tmp_image_path)) # Check that the filepath and the newly saved file exist assert tmp_image_path.exists() @@ -336,7 +336,7 @@ def test_import_tactool_csv(tactool: TACtool, filepath: str, expected_points: li Function to test the functionality of importing a TACtool CSV file. """ # Check that the PyQt Table Model data is empty - assert tactool.window.table_model.analysis_points == [] + assert tactool.table_model.analysis_points == [] # Set Analysis Point settings that are used where data is missing tactool.window.update_point_settings( @@ -354,15 +354,15 @@ def test_import_tactool_csv(tactool: TACtool, filepath: str, expected_points: li # Iterate through the actual Analysis Points created from the CSV file # and the calculated Analysis Points in this test - for loaded_point, expected_point in zip(tactool.window.table_model.analysis_points, expected_points): + for loaded_point, expected_point in zip(tactool.table_model.analysis_points, expected_points): # Using list slicing to compare just the public attributes of the Analysis Points, i.e. up to the last 3 assert expected_point.aslist()[:PUBLIC_INDEX] == loaded_point.aslist()[:PUBLIC_INDEX] # Click new points - tactool.window.graphics_view.left_click.emit(111, 111) + tactool.graphics_view.left_click.emit(111, 111) # Check that the ID values continue from the maximum ID value in the CSV file - assert len(tactool.window.table_model.analysis_points) == 6 + assert len(tactool.table_model.analysis_points) == 6 def test_export_tactool_csv(tactool: TACtool, tmp_path: WindowsPath) -> None: @@ -370,7 +370,7 @@ def test_export_tactool_csv(tactool: TACtool, tmp_path: WindowsPath) -> None: Function to test the functionality of exporting a TACtool CSV file. """ # Check that the PyQt Table Model data is empty - assert tactool.window.table_model.analysis_points == [] + assert tactool.table_model.analysis_points == [] csv_path = tmp_path / "test.csv" expected_headers = ["Name", "Type", "X", "Y", "Z", "diameter", "scale", "colour", @@ -382,8 +382,8 @@ def test_export_tactool_csv(tactool: TACtool, tmp_path: WindowsPath) -> None: ] # Add 2 Analysis Points - tactool.window.graphics_view.left_click.emit(101, 101) - tactool.window.graphics_view.left_click.emit(202, 202) + tactool.graphics_view.left_click.emit(101, 101) + tactool.graphics_view.left_click.emit(202, 202) # Adjust the settings for the 3rd Analysis Point tactool.window.update_point_settings( @@ -395,10 +395,10 @@ def test_export_tactool_csv(tactool: TACtool, tmp_path: WindowsPath) -> None: scale=1.5, colour="#444444", ) - tactool.window.graphics_view.left_click.emit(303, 303) + tactool.graphics_view.left_click.emit(303, 303) # Save the data to the given CSV file path - tactool.window.table_model.export_csv(csv_path) + tactool.table_model.export_csv(csv_path) assert_csv_data(csv_path, expected_headers, expected_data) @@ -437,9 +437,9 @@ def test_reference_point_hint(tactool: TACtool) -> None: # Add 3 analysis points with the label 'RefMark' tactool.window.label_input.setCurrentText("RefMark") - tactool.window.graphics_view.left_click.emit(100, 100) - tactool.window.graphics_view.left_click.emit(150, 150) - tactool.window.graphics_view.left_click.emit(200, 200) + tactool.graphics_view.left_click.emit(100, 100) + tactool.graphics_view.left_click.emit(150, 150) + tactool.graphics_view.left_click.emit(200, 200) # Check reference Points hint not is visible ref_points_status = tactool.window.status_bar_messages["ref_points"]["status"] @@ -447,7 +447,7 @@ def test_reference_point_hint(tactool: TACtool) -> None: assert ref_points_status not in tactool.window.status_bar.children() # Remove 1 Analysis Point with label 'RefMark', bringing the total to 2 reference Points - tactool.window.graphics_view.right_click.emit(100, 100) + tactool.graphics_view.right_click.emit(100, 100) # Check reference Points hint is visible ref_points_status = tactool.window.status_bar_messages["ref_points"]["status"] @@ -456,7 +456,7 @@ def test_reference_point_hint(tactool: TACtool) -> None: # Add 1 Analysis Point with label 'Spot', keeping the total at 2 reference Points tactool.window.label_input.setCurrentText("Spot") - tactool.window.graphics_view.left_click.emit(100, 100) + tactool.graphics_view.left_click.emit(100, 100) # Check reference Points hint is visible ref_points_status = tactool.window.status_bar_messages["ref_points"]["status"] @@ -474,9 +474,9 @@ def test_scale_hint(tactool: TACtool) -> None: assert set_scale_status not in tactool.window.status_bar.children() # Add some points by clicking - tactool.window.graphics_view.left_click.emit(101, 101) - tactool.window.graphics_view.left_click.emit(202, 202) - tactool.window.graphics_view.left_click.emit(303, 303) + tactool.graphics_view.left_click.emit(101, 101) + tactool.graphics_view.left_click.emit(202, 202) + tactool.graphics_view.left_click.emit(303, 303) # Check Set Scale hint is visible set_scale_status = tactool.window.status_bar_messages["set_scale"]["status"] @@ -485,8 +485,8 @@ def test_scale_hint(tactool: TACtool) -> None: # Set the scale, following the same steps as the user would tactool.window.toggle_scaling_mode() - tactool.window.set_scale_dialog.scale_value.setText(str(2.0)) - tactool.window.set_scale_dialog.set_scale() + tactool.set_scale_dialog.scale_value.setText(str(2.0)) + tactool.set_scale_dialog.set_scale() # Check Set Scale hint is not visible set_scale_status = tactool.window.status_bar_messages["set_scale"]["status"] From b761aa057b5dbaa3b3697344d3b452c0dcc20a58 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Mon, 24 Jul 2023 12:17:19 +0100 Subject: [PATCH 013/105] Flake8 fixes --- tactool/main.py | 2 +- tactool/table_model.py | 2 +- tactool/transformation.py | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tactool/main.py b/tactool/main.py index 7deb31d..934a4ce 100644 --- a/tactool/main.py +++ b/tactool/main.py @@ -73,7 +73,7 @@ def table_view(self) -> TableView: @property def set_scale_dialog(self) -> SetScaleDialog: return self.window.set_scale_dialog - + @property def recoordinate_dialog(self) -> RecoordinateDialog: return self.window.recoordinate_dialog diff --git a/tactool/table_model.py b/tactool/table_model.py index 06842c7..d20fc8f 100644 --- a/tactool/table_model.py +++ b/tactool/table_model.py @@ -283,7 +283,7 @@ def export_csv(self, filepath: Path) -> None: """ # Do not save the last 3 columns as they contain PyQt graphics data with open(filepath, "w", newline="") as csvfile: - csvwriter = writer(csvfile) + csvwriter = writer(csvfile) # Modify and write the header data new_headers = self.convert_export_headers() csvwriter.writerow(new_headers) diff --git a/tactool/transformation.py b/tactool/transformation.py index 60634f2..a8219f8 100644 --- a/tactool/transformation.py +++ b/tactool/transformation.py @@ -8,7 +8,7 @@ from tactool.table_model import AnalysisPoint -def parse_tactool_csv(filepath: str, default_settings = dict[str, Any]) -> list[dict[str, Any]]: +def parse_tactool_csv(filepath: str, default_settings: dict[str, Any]) -> list[dict[str, Any]]: """ Parse the data in a given TACtool CSV file. """ @@ -50,7 +50,7 @@ def parse_tactool_csv(filepath: str, default_settings = dict[str, Any]) -> list[ } for old_header, new_header in zip(header_changes, list(header_changes.values())): item[new_header] = item.pop(old_header) - + analysis_point_rows.append(item) return analysis_point_rows From 9f070a341917e057baa3451b4fa54d241127017b Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Mon, 24 Jul 2023 13:15:48 +0100 Subject: [PATCH 014/105] Add joint logger setup across all classes --- tactool/graphics_scene.py | 32 +++++++++++--------- tactool/graphics_view.py | 8 ++++- tactool/main.py | 19 ++++++++++-- tactool/recoordinate_dialog.py | 53 +++++++++++++++++++++++----------- tactool/set_scale_dialog.py | 8 ++++- tactool/table_model.py | 6 +++- tactool/utils.py | 26 +++++++++++++++++ tactool/window.py | 33 +++++++++++++-------- test/conftest.py | 2 +- 9 files changed, 139 insertions(+), 48 deletions(-) diff --git a/tactool/graphics_scene.py b/tactool/graphics_scene.py index c77cc13..b75387f 100644 --- a/tactool/graphics_scene.py +++ b/tactool/graphics_scene.py @@ -22,9 +22,10 @@ ) from tactool.table_model import AnalysisPoint, TableModel +from tactool.utils import LoggerMixin -class GraphicsScene(QGraphicsScene): +class GraphicsScene(QGraphicsScene, LoggerMixin): """ PyQt QGraphicsScene with convenience functions for Analysis Point data. Manages elements which are painted onto images. @@ -41,23 +42,24 @@ def __init__(self) -> None: def add_analysis_point( - self, - apid: int, - x: int, - y: int, - label: str, - diameter: int, - colour: str, - scale: float, - notes: str = "", - sample_name: str = "", - mount_name: str = "", - material: str = "", + self, + apid: int, + x: int, + y: int, + label: str, + diameter: int, + colour: str, + scale: float, + notes: str = "", + sample_name: str = "", + mount_name: str = "", + material: str = "", ) -> AnalysisPoint: """ Draw an Analysis Point onto the Graphics Scene and add it's data to the Table Model. """ + self.logger.debug("Adding new Analysis Point") # Set the drawing colours to use the given colour # pen just provides an outline of an object # brush also fills the object @@ -122,6 +124,7 @@ def remove_analysis_point(self, x: int, y: int, apid: int) -> Optional[int]: Remove an Analysis Point from the Graphics Scene, using either it's coordinates or it's ID value. """ + self.logger.debug("Removing existing Analysis Point") analysis_point = None # If a target ID is provided, get the Analysis Point using it's ID if apid: @@ -170,10 +173,12 @@ def toggle_transparent_window(self, graphics_view_image: QGraphicsPixmapItem) -> Toggle a transparent grey overlay ontop of the image for scaling mode. """ if self.scaling_rect is not None: + self.logger.debug("Removing transparent window") # Remove the PyQt Rect from the PyQt Item Group and reset the scaling_rect variable self.removeItem(self.scaling_rect) self.scaling_rect = None else: + self.logger.debug("Adding transparent window") # Convert the current image to a pixmap image_pixmap = graphics_view_image.pixmap() image_width, image_height = image_pixmap.width(), image_pixmap.height() @@ -229,6 +234,7 @@ def remove_scale_items(self) -> None: """ Remove all items from the Graphics Scene associated with the scaling mode. """ + self.logger.debug("Removing scaling items") # If there are items in the PyQt Item Group for scaling items if self.scaling_group: # Iterate through the items and remove them if they are not diff --git a/tactool/graphics_view.py b/tactool/graphics_view.py index 581097d..a800969 100644 --- a/tactool/graphics_view.py +++ b/tactool/graphics_view.py @@ -22,9 +22,10 @@ ) from tactool.graphics_scene import GraphicsScene +from tactool.utils import LoggerMixin -class GraphicsView(QGraphicsView): +class GraphicsView(QGraphicsView, LoggerMixin): """ PyQt QGraphicsView with convenience functions for modifications. Also includes functions for user interaction with the Graphics View. @@ -208,6 +209,7 @@ def load_image(self, filepath: str) -> None: """ Load an image from a given path into the Graphics View as a PyQt Pixmap. """ + self.logger.info("Loading image: %s", filepath) # Load the image into a PyQt Pixmap pixmap = QPixmap(filepath) # Reset the zoom value @@ -229,6 +231,7 @@ def save_image(self, filepath: str) -> None: """ Get the current Graphics Scene state and save it to a given file. """ + self.logger.info("Saving current graphics state to: %s", filepath) # If you get the size of the Graphics Scene rather than the Graphics View, # then the saved image includes points which go over the border of the imported image rect = self.sceneRect().toRect() @@ -282,9 +285,11 @@ def toggle_scaling_mode(self) -> None: self.graphics_scene.toggle_transparent_window(self._image) if self.scaling_mode: + self.logger.debug("Activating scaling mode") # Set the Graphics View cursor to a crosshair self.setCursor(Qt.CrossCursor) else: + self.logger.debug("Deactivating scaling mode") self.reset_scaling_elements() self.setCursor(Qt.ArrowCursor) @@ -293,6 +298,7 @@ def reset_scaling_elements(self) -> None: """ Reset the scaling elements back to their default values. """ + self.logger.debug("Reset scaling elements") self.scale_start_point = QPointF() self.scale_end_point = QPointF() self.graphics_scene.remove_scale_items() diff --git a/tactool/main.py b/tactool/main.py index 934a4ce..76bc337 100644 --- a/tactool/main.py +++ b/tactool/main.py @@ -1,4 +1,5 @@ import argparse +import logging import sys from PyQt5 import QtGui @@ -11,10 +12,11 @@ from tactool.set_scale_dialog import SetScaleDialog from tactool.table_model import TableModel from tactool.table_view import TableView +from tactool.utils import LoggerMixin from tactool.window import Window -class TACtool(QApplication): +class TACtool(QApplication, LoggerMixin): """ PyQt QApplication class with references to high-level components. Includes some convenience property methods to aid with testing. @@ -23,9 +25,15 @@ def __init__( self, args, developer_mode: bool = False, + debug_mode: bool = False, testing_mode: bool = False, ) -> None: super().__init__(args) + + if debug_mode: + LoggerMixin._set_logger_levels(logging.DEBUG) + + self.logger.info("Initialising TACtool application") self.testing_mode = testing_mode self.window = Window(self.testing_mode) @@ -47,6 +55,7 @@ def developer_mode(self) -> None: """ # Preload an image into the program path = "test/data/test_cl_montage.png" + self.logger.debug("Starting developer mode with image: %s", path) self.window.image_filepath = path self.window.setWindowTitle(f"TACtool: {self.window.image_filepath}") self.graphics_view.load_image(path) @@ -87,6 +96,12 @@ def recoordinate_dialog(self) -> RecoordinateDialog: action="store_true", help="Developer mode", ) + parser.add_argument( + "--debug", + default=False, + action="store_true", + help="Debug mode", + ) args = parser.parse_args() - tactool_application = TACtool(sys.argv, args.dev) + tactool_application = TACtool(sys.argv, developer_mode=args.dev, debug_mode=args.debug) diff --git a/tactool/recoordinate_dialog.py b/tactool/recoordinate_dialog.py index 6579f06..e037ee7 100644 --- a/tactool/recoordinate_dialog.py +++ b/tactool/recoordinate_dialog.py @@ -15,8 +15,10 @@ QVBoxLayout, ) +from tactool.utils import LoggerMixin -class RecoordinateDialog(QDialog): + +class RecoordinateDialog(QDialog, LoggerMixin): """ PyQt QDialog class for creating the recoordination dialog box. """ @@ -49,12 +51,16 @@ def setup_ui_elements(self) -> None: Function to create the elements of the Set Scale dialog box User Interface. Also sets the layout for the dialog box. """ + self.logger.debug("Setting up UI elements") # Create the UI elements - input_csv_label = QLabel("Select Input CSV") - self.input_csv_button = QPushButton("Import CSV", self) + input_csv_label = QLabel("Input CSV") + self.input_csv_button = QPushButton("Select Input CSV", self) self.input_csv_filepath_label = QLineEdit("") self.input_csv_filepath_label.setDisabled(True) - output_csv_label = QLabel("Select Output CSV") + output_csv_label = QLabel("Output CSV") + self.output_csv_button = QPushButton("Select Output CSV", self) + self.output_csv_filepath_label = QLineEdit("") + self.output_csv_filepath_label.setDisabled(True) self.recoordinate_button = QPushButton("Recoordinate and Export CSV") # Arrange and set the layout @@ -63,6 +69,8 @@ def setup_ui_elements(self) -> None: layout.addWidget(self.input_csv_button) layout.addWidget(self.input_csv_filepath_label) layout.addWidget(output_csv_label) + layout.addWidget(self.output_csv_button) + layout.addWidget(self.output_csv_filepath_label) layout.addWidget(self.recoordinate_button) self.setLayout(layout) @@ -71,7 +79,9 @@ def connect_signals_and_slots(self) -> None: """ Function for connecting signals and slots of buttons and input boxes. """ + self.logger.debug("Connecting signals and slots") self.input_csv_button.clicked.connect(self.get_input_csv) + self.output_csv_button.clicked.connect(self.set_output_csv) self.recoordinate_button.clicked.connect(self.get_export_and_recoordinate) @@ -86,6 +96,22 @@ def get_input_csv(self) -> None: ) input_csv = pyqt_open_dialog[0] self.input_csv_filepath_label.setText(input_csv) + self.logger.info("Selected input CSV: %s", input_csv) + + + def set_output_csv(self) -> None: + """ + Set the output CSV file for the recoordination results. + """ + pyqt_save_dialog = QFileDialog.getSaveFileName( + parent=self, + caption="Export Recoordinated CSV", + directory=self.input_csv_filepath_label.text(), + filter="*.csv", + ) + output_csv = pyqt_save_dialog[0] + self.output_csv_filepath_label.setText(output_csv) + self.logger.info("Selected output CSV: %s", output_csv) def get_export_and_recoordinate(self) -> None: @@ -93,22 +119,15 @@ def get_export_and_recoordinate(self) -> None: Get the export CSV file and emit the recoordinate signal back to the main class. """ input_csv = self.input_csv_filepath_label.text() - if input_csv != "": - pyqt_save_dialog = QFileDialog.getSaveFileName( - parent=self, - caption="Export Recoordinated CSV", - directory=input_csv, - filter="*.csv", - ) - output_csv = pyqt_save_dialog[0] - if output_csv != "": - self.recoordinate_clicked.emit(input_csv, output_csv) - self.closeEvent() + output_csv = self.output_csv_filepath_label.text() + if input_csv != "" and output_csv != "": + self.recoordinate_clicked.emit(input_csv, output_csv) + self.closeEvent() else: # Create a message informing the user that their input value is invalid self.invalid_path_entry.emit( - "Invalid Path", - "Please import a CSV to recoordinate first.", + "Invalid Paths", + "Please select an input and output CSV first.", "warning", ) diff --git a/tactool/set_scale_dialog.py b/tactool/set_scale_dialog.py index 7e36f50..ea6c606 100644 --- a/tactool/set_scale_dialog.py +++ b/tactool/set_scale_dialog.py @@ -13,8 +13,10 @@ QVBoxLayout, ) +from tactool.utils import LoggerMixin -class SetScaleDialog(QDialog): + +class SetScaleDialog(QDialog, LoggerMixin): """ PyQt QDialog class for creating the set scale dialog box when in scaling mode. This dialog allows the user to set the scale values visually. @@ -50,6 +52,7 @@ def setup_ui_elements(self) -> None: Create the elements of the Set Scale dialog box User Interface. Also sets the layout for the dialog box. """ + self.logger.debug("Setting up UI elements") # Main buttons self.set_scale_button = QPushButton("OK", self) self.clear_scale_button = QPushButton("Clear", self) @@ -99,6 +102,7 @@ def connect_signals_and_slots(self) -> None: """ Connecting signals and slots of buttons and input boxes. """ + self.logger.debug("Connecting signals and slots") # Connect signals and slots for buttons self.set_scale_button.clicked.connect(self.set_scale) self.clear_scale_button.clicked.connect(self.clear_scale) @@ -139,6 +143,7 @@ def set_scale(self) -> None: """ # If a scale value has been entered if self.scale_value.text(): + self.logger.info("Set scale: %s", self.scale_value.text()) # Emit a signal that the set scale button has been clicked # passing the input value as a float self.set_scale_clicked.emit(float(self.scale_value.text())) @@ -149,6 +154,7 @@ def clear_scale(self) -> None: """ Clear the current scaling values and elements. """ + self.logger.debug("Cleared current scale") self.distance_input.setValue(0) self.pixel_input.setText(self.pixel_input_default) self.scale_value.setText("") diff --git a/tactool/table_model.py b/tactool/table_model.py index d20fc8f..d53cea5 100644 --- a/tactool/table_model.py +++ b/tactool/table_model.py @@ -18,6 +18,8 @@ QGraphicsTextItem, ) +from tactool.utils import LoggerMixin + @dataclasses.dataclass class AnalysisPoint: @@ -87,7 +89,7 @@ def aslist(self) -> list[ return attributes_list -class TableModel(QAbstractTableModel): +class TableModel(QAbstractTableModel, LoggerMixin): """ PyQt QAbstractTableModel for storing AnalysisPoints. """ @@ -281,9 +283,11 @@ def export_csv(self, filepath: Path) -> None: """ Get all the existing Analysis Points and write them to as a CSV file. """ + self.logger.info("Exporting TACtool CSV: %s", filepath) # Do not save the last 3 columns as they contain PyQt graphics data with open(filepath, "w", newline="") as csvfile: csvwriter = writer(csvfile) + self.logger.debug("Converting data for CSV export") # Modify and write the header data new_headers = self.convert_export_headers() csvwriter.writerow(new_headers) diff --git a/tactool/utils.py b/tactool/utils.py index 90fb6ad..b5c8636 100644 --- a/tactool/utils.py +++ b/tactool/utils.py @@ -5,6 +5,32 @@ from PyQt5.QtCore import pyqtRemoveInputHook +logging.basicConfig( + level=logging.INFO, + format="%(levelname)s: %(asctime)s %(name)s: %(message)s", + datefmt="{%Y-%m-%d %H:%M:%S}", +) + + +class LoggerMixin: + """ + Logger class to give each class of the TACtool application a built-in logger. + """ + def __init__(self): + self.logger = logging.getLogger(self.__class__.__name__) + + + @staticmethod + def _set_logger_levels(level: int) -> None: + """ + Set the logger levels across all classes in the TACtool application. + """ + top_level = LoggerMixin + children = [top_level] + top_level.__subclasses__() + for child in children: + logger = logging.getLogger(child.__name__) + logger.setLevel(level) + def ipdb_breakpoint(): """ diff --git a/tactool/window.py b/tactool/window.py index 70a44be..986e3e4 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -33,23 +33,16 @@ parse_tactool_csv, reset_id, ) - -logger = logging.getLogger("tactool") -logger.setLevel(logging.DEBUG) -logging.basicConfig( - level=logging.DEBUG, - format="%(asctime)s %(name)s %(message)s", -) +from tactool.utils import LoggerMixin -class Window(QMainWindow): +class Window(QMainWindow, LoggerMixin): """ PyQt QMainWindow class which displays the application's interface and manages user interaction with it. """ def __init__(self, testing_mode: bool) -> None: super().__init__() - logger.info("Initialising TACtool application") self.testing_mode = testing_mode self.default_settings = { @@ -106,6 +99,7 @@ def setup_ui_elements(self) -> None: """ Setup the User Interface elements. """ + self.logger.debug("Setting up UI elements") # Create the menu bar self.menu_bar = self.menuBar() # Create the file drop down @@ -226,6 +220,7 @@ def connect_signals_and_slots(self) -> None: """ Connect signals and slots to User Interface interactions. """ + self.logger.debug("Connecting signals and slots") # Connect menu bar clicks to handlers self.menu_bar_file_import_image.triggered.connect(self.import_image_get_path) self.menu_bar_file_export_image.triggered.connect(self.export_image_get_path) @@ -288,6 +283,7 @@ def toggle_status_bar_messages(self) -> None: """ Toggle all of the status bar messages. """ + self.logger.debug("Toggling %s status bar messages", len(self.status_bar_messages)) for status_name in self.status_bar_messages: # Get the status, condition result and message from the dictionary status = self.status_bar_messages[status_name]["status"] @@ -375,6 +371,7 @@ def load_tactool_csv_data(self, filepath: str) -> None: Load the Analysis Point data from a given CSV file and add it into the program. """ try: + self.logger.info("Loading TACtool CSV file: %s", filepath) analysis_points = parse_tactool_csv(filepath, self.default_settings) self.clear_analysis_points() self.reset_settings() @@ -515,7 +512,10 @@ def add_analysis_point( mount_name=mount_name, material=material, ) - logger.debug("Created Analysis Point: %s", analysis_point) + if self.logger.level == logging.DEBUG: + self.logger.debug("Created Analysis Point: %s", analysis_point) + else: + self.logger.info("Creating Analyss Point with ID: %s", analysis_point.id) # Update the status bar messages and PyQt Table View self.toggle_status_bar_messages() @@ -532,6 +532,7 @@ def reload_analysis_points( Takes an index which indicates if the TableView should be automatically scrolled to a specific point. Also takes a transform function to transform the existing Analysis Points before replacing them. """ + self.logger.debug("Reloading Analysis Points with transform: %s", transform) # Save the existing Points before clearing them current_analysis_points = self.table_model.analysis_points self.clear_analysis_points() @@ -577,7 +578,7 @@ def remove_analysis_point(self, x: int = None, y: int = None, apid: int = None) deletion_result = self.graphics_scene.remove_analysis_point(x=x, y=y, apid=apid) # If the deletion returned a value, it is the Analysis Point ID and so is outputted if deletion_result: - logger.debug("Deleted Analysis Point: %s", deletion_result) + self.logger.info("Deleted Analysis Point: %s", deletion_result) # Update the status bar messages and PyQt TableView self.toggle_status_bar_messages() @@ -611,7 +612,7 @@ def get_point_settings(self, analysis_point: AnalysisPoint, clicked_column_index Get the settings of an Analysis Point which has been selected in the PyQt Table View. These settings are then updated to be the current settings. """ - logger.debug("Selected Analysis Point: %s", analysis_point) + self.logger.info("Selected Analysis Point with ID: %s", analysis_point.id) # If the column of the cell the user clicked is the id if clicked_column_index == self.table_model.headers.index("id"): # Update the Analysis Point settings to be the same as the Point settings of the Point selected in the table @@ -656,6 +657,13 @@ def update_point_settings( If a value is given for a field, then the value and any corresponding User Interface elements are updated. """ + self.logger.debug( + ( + "Updating Analysis Point settings: sample_name='%s', mount_name='%s', " + "material='%s', label='%s' diamter='%s', scale='%s', colour='%s'" + ), + sample_name, mount_name, material, label, diameter, scale, colour, + ) if sample_name is not None: self.sample_name_input.setText(sample_name) @@ -685,6 +693,7 @@ def toggle_main_input_widgets(self, enable: bool) -> None: """ Toggle each of the input widgets in the main window to be enabled or disabled. """ + self.logger.debug("Toggling main widgets to state: %s", enable) for widget in self.main_input_widgets: widget.setEnabled(enable) self.graphics_view.disable_analysis_points = not enable diff --git a/test/conftest.py b/test/conftest.py index 7f8af1d..662be97 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -13,7 +13,7 @@ def tactool(): running QApplication instance to allow Qt commands to work. """ # Create an instance of the application in developer mode and testing mode - tactool_application = TACtool([], developer_mode=True, testing_mode=True) + tactool_application = TACtool([], developer_mode=True, debug_mode=False, testing_mode=True) yield tactool_application # Delete the application instance before restarting a new one From 597957072a86b93477845168632ebd534504d8e3 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Mon, 24 Jul 2023 13:50:38 +0100 Subject: [PATCH 015/105] Add John's affine experimenation files --- tactool/transformation.py | 50 ++++++++++++++++++++++++++++++++ test/test_transformation.py | 57 +++++++++++++++++++++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 test/test_transformation.py diff --git a/tactool/transformation.py b/tactool/transformation.py index a8219f8..0dc588f 100644 --- a/tactool/transformation.py +++ b/tactool/transformation.py @@ -1,6 +1,7 @@ """ Functions for parsing TACtool CSV data and transformation existing Analysis Points. """ +import numpy as np from csv import DictReader from typing import Any @@ -86,3 +87,52 @@ def reset_id(analysis_point: AnalysisPoint) -> AnalysisPoint: """ analysis_point.id = None return analysis_point + + +""" +Notes on affine transformation: +An affine transformation converts one set of points into another via rotation, +skewing, scaling and translation. It can be achieved mathematically by matrix +multiplication of a point vector by a transformation matrix. It is slightly +complicated by the fact that a 2D transformation requires "homogeneous" +coordinates with 3 dimensions. The transformation matrix can be calculated by +solving a linear equation involving the source and destination coordinate sets. +The following articles are helpful: ++ https://junfengzhang.com/2023/01/17/affine-transformation-why-3d-matrix-for-a-2d-transformation/ ++ https://medium.com/hipster-color-science/computing-2d-affine-transformations-using-only-matrix-multiplication-2ccb31b52181 # noqa +""" + + +def affine_transform_matrix( + source: list[tuple[float, float]], + dest: list[tuple[float, float]], +) -> np.ndarray: + # Convert the source and destination points to NumPy arrays + source_array = np.array(source) + dest_array = np.array(dest) + + # Add a column of ones to make the points homogeneous coordinates + ones_column = np.ones((source_array.shape[0], 1)) + source_homogeneous = np.hstack((source_array, ones_column)) + dest_homogeneous = np.hstack((dest_array, ones_column)) + + # Perform linear least squares regression to find the affine transformation matrix + matrix, _, _, _ = np.linalg.lstsq(source_homogeneous, dest_homogeneous, rcond=None) + + return matrix.T + + +def affine_transform_point( + matrix: np.ndarray, + point: tuple[float, float], +) -> tuple[int, int]: + """Apply an affine transformation to a 2D point""" + # Convert the source point to 3D NumPy array + # Adding z=1 makes point "homogeneous" + src = np.array([*point, 1]) + + # Apply the affine transformation + dest = matrix @ src + dest = (int(dest[0]), int(dest[1])) # to 2D integer coordinate + + return dest diff --git a/test/test_transformation.py b/test/test_transformation.py new file mode 100644 index 0000000..d016c01 --- /dev/null +++ b/test/test_transformation.py @@ -0,0 +1,57 @@ +""" +Tests for functions in the utils module +""" +import numpy as np +import pytest + +from tactool.transformation import ( + affine_transform_point, + affine_transform_matrix, +) + +X_PLUS_10 = np.array([[1, 0, 10], + [0, 1, 0], + [0, 0, 1]]) + +Y_PLUS_10 = np.array([[1, 0, 0], + [0, 1, 10], + [0, 0, 1]]) + +SCALE_BY_2ish = np.array([[2.1, 0, 0], + [0, 2.1, 0], + [0, 0, 1]]) + + +@pytest.mark.parametrize('matrix, src, expected', [ + (X_PLUS_10, (1, 1), (11, 1)), + (X_PLUS_10, (1, 0), (11, 0)), + (X_PLUS_10, (0, 1), (10, 1)), + (Y_PLUS_10, (1, 1), (1, 11)), + (Y_PLUS_10, (1, 0), (1, 10)), + (Y_PLUS_10, (0, 1), (0, 11)), + (SCALE_BY_2ish, (1, 1), (2, 2)), # should round to nearest int + (SCALE_BY_2ish, (10, 10), (21, 21)), # no rounding required +]) +def test_affine_transform_point(matrix, src, expected): + # Act + transformed = affine_transform_point(matrix, src) + + # Assert + assert transformed == expected + + +def test_affine_transform_matrix(): + # Arrange + src = [(0, 0), (1, 0), (1, 1), (0, 1)] + dest = [(2, 2), (3, 2), (3, 3), (2, 3)] + expected = np.array([ + [1, 0, 2], + [0, 1, 2], + [0, 0, 1] + ]) + + # Act + matrix = affine_transform_matrix(src, dest) + + # Assert + np.testing.assert_array_almost_equal(matrix, expected, decimal=10) From 34f75ffd7963e01686cfb5bba02cab366dd6d66a Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Mon, 24 Jul 2023 14:21:16 +0100 Subject: [PATCH 016/105] Update docstring --- test/test_transformation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_transformation.py b/test/test_transformation.py index d016c01..3b04fcf 100644 --- a/test/test_transformation.py +++ b/test/test_transformation.py @@ -1,5 +1,5 @@ """ -Tests for functions in the utils module +Tests for functions in the transformation module """ import numpy as np import pytest From 754b1a77f584f57bd436cd4242c031173240f017 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Mon, 24 Jul 2023 14:21:26 +0100 Subject: [PATCH 017/105] Add numpy to environments --- environments/macos-environment.yml | 17 ++++++++++++++--- environments/windows-environment.yml | 16 +++++++++++++--- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/environments/macos-environment.yml b/environments/macos-environment.yml index 76ac584..7b8bf2f 100644 --- a/environments/macos-environment.yml +++ b/environments/macos-environment.yml @@ -2,16 +2,26 @@ name: tactool-macos channels: - defaults dependencies: + - blas=1.0=mkl - bzip2=1.0.8=h1de35cc_0 - ca-certificates=2023.05.30=hecd8cb5_0 + - intel-openmp=2023.1.0=ha357a0b_43547 + - libcxx=14.0.6=h9765a3e_0 - libffi=3.4.4=hecd8cb5_0 + - mkl=2023.1.0=h59209a4_43558 + - mkl-service=2.4.0=py311h6c40b1e_1 + - mkl_fft=1.3.6=py311hdb55bb0_1 + - mkl_random=1.2.2=py311hdb55bb0_1 - ncurses=6.4=hcec6c5f_0 + - numpy=1.25.0=py311h728a8a3_0 + - numpy-base=1.25.0=py311h53bf9ac_0 - openssl=3.0.9=hca72f7f_0 - pip=23.1.2=py311hecd8cb5_0 - - python=3.11.3=hf27a42d_1 + - python=3.11.4=hf27a42d_0 - readline=8.2=hca72f7f_0 - setuptools=67.8.0=py311hecd8cb5_0 - sqlite=3.41.2=h6c40b1e_0 + - tbb=2021.8.0=ha357a0b_0 - tk=8.6.12=h5d9f67b_0 - tzdata=2023c=h04d1e81_0 - wheel=0.38.4=py311hecd8cb5_0 @@ -28,8 +38,9 @@ dependencies: - pycodestyle==2.10.0 - pyflakes==3.0.1 - pyinstaller==5.13.0 - - pyinstaller-hooks-contrib==2023.4 + - pyinstaller-hooks-contrib==2023.6 - pyqt5==5.15.9 - pyqt5-qt5==5.15.2 - - pyqt5-sip==12.12.1 + - pyqt5-sip==12.12.2 - pytest==7.4.0 +prefix: /usr/local/miniconda/envs/tactool-macos diff --git a/environments/windows-environment.yml b/environments/windows-environment.yml index 8db7df5..42c028e 100644 --- a/environments/windows-environment.yml +++ b/environments/windows-environment.yml @@ -2,14 +2,23 @@ name: tactool-windows channels: - defaults dependencies: + - blas=1.0=mkl - bzip2=1.0.8=he774522_0 - ca-certificates=2023.05.30=haa95532_0 + - intel-openmp=2023.1.0=h59b6b97_46319 - libffi=3.4.4=hd77b12b_0 + - mkl=2023.1.0=h8bd8f75_46356 + - mkl-service=2.4.0=py311h2bbff1b_1 + - mkl_fft=1.3.6=py311hf62ec03_1 + - mkl_random=1.2.2=py311hf62ec03_1 + - numpy=1.25.0=py311hdab7c0b_0 + - numpy-base=1.25.0=py311hd01c5d8_0 - openssl=3.0.9=h2bbff1b_0 - pip=23.1.2=py311haa95532_0 - - python=3.11.3=he1021f5_1 + - python=3.11.4=he1021f5_0 - setuptools=67.8.0=py311haa95532_0 - sqlite=3.41.2=h2bbff1b_0 + - tbb=2021.8.0=h59b6b97_0 - tk=8.6.12=h2bbff1b_0 - tzdata=2023c=h04d1e81_0 - vc=14.2=h21ff451_1 @@ -29,9 +38,10 @@ dependencies: - pycodestyle==2.10.0 - pyflakes==3.0.1 - pyinstaller==5.13.0 - - pyinstaller-hooks-contrib==2023.4 + - pyinstaller-hooks-contrib==2023.6 - pyqt5==5.15.9 - pyqt5-qt5==5.15.2 - - pyqt5-sip==12.12.1 + - pyqt5-sip==12.12.2 - pytest==7.4.0 - pywin32-ctypes==0.2.2 +prefix: C:\Miniconda\envs\tactool-windows From 5fd1538a07cee41ab5d5f80f43d4996404bec09a Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Mon, 24 Jul 2023 14:25:45 +0100 Subject: [PATCH 018/105] Update default log messages during tests to be level DEBUG --- tactool/window.py | 2 +- test/conftest.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tactool/window.py b/tactool/window.py index 986e3e4..f0a871f 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -515,7 +515,7 @@ def add_analysis_point( if self.logger.level == logging.DEBUG: self.logger.debug("Created Analysis Point: %s", analysis_point) else: - self.logger.info("Creating Analyss Point with ID: %s", analysis_point.id) + self.logger.info("Creating Analysis Point with ID: %s", analysis_point.id) # Update the status bar messages and PyQt Table View self.toggle_status_bar_messages() diff --git a/test/conftest.py b/test/conftest.py index 662be97..5d808cb 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -13,7 +13,7 @@ def tactool(): running QApplication instance to allow Qt commands to work. """ # Create an instance of the application in developer mode and testing mode - tactool_application = TACtool([], developer_mode=True, debug_mode=False, testing_mode=True) + tactool_application = TACtool([], developer_mode=True, debug_mode=True, testing_mode=True) yield tactool_application # Delete the application instance before restarting a new one From c20e9696626a64f9af959f53c6564607d3c7d0d8 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Mon, 24 Jul 2023 17:51:40 +0100 Subject: [PATCH 019/105] Refactor export CSV functionality to new file --- tactool/analysis_point.py | 309 ++++++++++++++++++++++++++++++++++++ tactool/table_model.py | 145 ++--------------- tactool/transformation.py | 138 ---------------- tactool/window.py | 13 +- test/test_integration.py | 11 +- test/test_transformation.py | 2 +- 6 files changed, 337 insertions(+), 281 deletions(-) create mode 100644 tactool/analysis_point.py delete mode 100644 tactool/transformation.py diff --git a/tactool/analysis_point.py b/tactool/analysis_point.py new file mode 100644 index 0000000..3509b40 --- /dev/null +++ b/tactool/analysis_point.py @@ -0,0 +1,309 @@ +""" +Includes the Analysis Point data class, +functions for parsing TACtool CSV data ready for Analysis Points, +functions for exporting current Analysis Points into a CSV format, +and functions for transformation of existing Analysis Points. +""" + +import dataclasses + +import numpy as np + +from csv import ( + DictReader, + writer, +) +from pathlib import Path +from typing import Any + +from PyQt5.QtWidgets import ( + QGraphicsEllipseItem, + QGraphicsTextItem, +) + + +@dataclasses.dataclass +class AnalysisPoint: + """ + Container class for encapsulating Analysis point data. + """ + # Define the class variables for the Analysis Points + id: int + label: str + x: int + y: int + diameter: int + scale: float + colour: str + sample_name: str + mount_name: str + material: str + notes: str + _outer_ellipse: QGraphicsEllipseItem + _inner_ellipse: QGraphicsEllipseItem + _label_text_item: QGraphicsTextItem + + + @classmethod + def field_names(cls) -> list[str]: + """ + Get the field names of the class object. + """ + return [field.name for field in dataclasses.fields(cls)] + + + def aslist(self) -> list[ + int, + int, + int, + str, + int, + float, + str, + str, + str, + str, + str, + QGraphicsEllipseItem, + QGraphicsEllipseItem, + QGraphicsTextItem, + ]: + """ + Get the attributes of an Analysis Point object as a list. + """ + attributes_list = [ + self.id, + self.label, + self.x, + self.y, + self.diameter, + self.scale, + self.colour, + self.sample_name, + self.mount_name, + self.material, + self.notes, + self._outer_ellipse, + self._inner_ellipse, + self._label_text_item + ] + return attributes_list + + +def parse_tactool_csv(filepath: str, default_settings: dict[str, Any]) -> list[dict[str, Any]]: + """ + Parse the data in a given TACtool CSV file. + """ + # Defining all header name changes, datatypes and default values + fields = { + "Name": { + "new_header": "apid", + "type": int, + "default": 0, + }, + "sample_name": { + "new_header": "sample_name", + "type": str, + "default": "", + }, + "Type": { + "new_header": "label", + "type": str, + "default": "", + }, + "X": { + "new_header": "x", + "type": int, + "default": 0, + }, + "Y": { + "new_header": "y", + "type": int, + "default": 0, + }, + "diameter": { + "new_header": "diameter", + "type": int, + "default": default_settings["diameter"], + }, + "scale": { + "new_header": "scale", + "type": float, + "default": default_settings["scale"], + }, + "colour": { + "new_header": "colour", + "type": str, + "default": default_settings["colour"], + }, + "mount_name": { + "new_header": "mount_name", + "type": str, + "default": "", + }, + "material": { + "new_header": "material", + "type": str, + "default": "", + }, + "notes": { + "new_header": "notes", + "type": str, + "default": "", + }, + } + + ap_dicts = [] + with open(filepath) as csv_file: + reader = DictReader(csv_file) + # Iterate through each line in the CSV file + for id, item in enumerate(reader): + # The default ID value is incremented with the row number + fields["Name"]["default"] = id + 1 + ap_dict = parse_row_data(item, fields) + ap_dicts.append(ap_dict) + + return ap_dicts + + +def parse_row_data(item: dict[str, Any], fields: dict[str, dict[str, Any]]) -> dict[str, Any]: + """ + Parse the data of an Analysis Point row item in a CSV file. + Takes a 'fields' dictionary which contains data on column renaming, default values and datatypes. + """ + # Split the id and sample_name value from the Name column + if "_#" in item["Name"]: + item["sample_name"], item["Name"] = item["Name"].rsplit("_#", maxsplit=1) + + # If there is a Z column which is requried for the laser, then remove it + if "Z" in item: + item.pop("Z") + + ap_dict = {} + for field, field_data in fields.items(): + # If the field is found and it is not empty, use it + # Otherwise, use the default value + if field in item and item[field] != "": + new_value = item[field] + else: + new_value = field_data["default"] + + # Add the field value to the new dictionary + # using the new header and converting it to the correct type + ap_dict[field_data["new_header"]] = field_data["type"](new_value) + return ap_dict + + +def export_tactool_csv(filepath: Path, headers: list[str], analysis_points: list[AnalysisPoint]) -> None: + """ + Write the given header data and analysis points to the given filepath. + """ + with open(filepath, "w", newline="") as csvfile: + csvwriter = writer(csvfile) + # Modify and write the header data + new_headers = convert_export_headers(headers) + csvwriter.writerow(new_headers) + for analysis_point in analysis_points: + csv_row = convert_export_point(analysis_point, headers) + csvwriter.writerow(csv_row) + + +def convert_export_headers(headers: list[str]) -> list[str]: + """ + Convert the header data for a CSV export. + This will rename some headers, remove sample_name, and add a Z field. + """ + header_conversions = { + "id": "Name", + "label": "Type", + "x": "X", + "y": "Y", + } + new_headers = [ + header_conversions[old_header] + if old_header in header_conversions + else old_header + for old_header in headers + ] + # Remove the sample_name field, it is concatenated with ID + new_headers.pop(new_headers.index("sample_name")) + + # Insert a new Z column after the Y column for the laser formatting + z_index = new_headers.index("Y") + 1 + new_headers.insert(z_index, "Z") + return new_headers + + +def convert_export_point(analysis_point: AnalysisPoint, headers: list[str]) -> list: + """ + Convert an Analysis Point for a CSV export. + This will concatenate the ID and sample_name into a single field, + and add a Z field. + """ + analysis_point_row = analysis_point.aslist()[:len(headers)] + + # Concat the sample_name and id into 1 column + # Also pads zeros on id column value + analysis_point_row[headers.index("id")] = f"{analysis_point.sample_name}_#{analysis_point.id:03d}" + analysis_point_row.pop(headers.index("sample_name")) + + # Insert a new Z column after the Y column for the laser formatting + analysis_point_row.insert(headers.index("y") + 1, 0) + return analysis_point_row + + +def reset_id(analysis_point: AnalysisPoint) -> AnalysisPoint: + """ + Resed the ID value of a given Analysis Point. + """ + analysis_point.id = None + return analysis_point + + +""" +Notes on affine transformation: +An affine transformation converts one set of points into another via rotation, +skewing, scaling and translation. It can be achieved mathematically by matrix +multiplication of a point vector by a transformation matrix. It is slightly +complicated by the fact that a 2D transformation requires "homogeneous" +coordinates with 3 dimensions. The transformation matrix can be calculated by +solving a linear equation involving the source and destination coordinate sets. +The following articles are helpful: ++ https://junfengzhang.com/2023/01/17/affine-transformation-why-3d-matrix-for-a-2d-transformation/ ++ https://medium.com/hipster-color-science/computing-2d-affine-transformations-using-only-matrix-multiplication-2ccb31b52181 # noqa +""" + + +def affine_transform_matrix( + source: list[tuple[float, float]], + dest: list[tuple[float, float]], +) -> np.ndarray: + # Convert the source and destination points to NumPy arrays + source_array = np.array(source) + dest_array = np.array(dest) + + # Add a column of ones to make the points homogeneous coordinates + ones_column = np.ones((source_array.shape[0], 1)) + source_homogeneous = np.hstack((source_array, ones_column)) + dest_homogeneous = np.hstack((dest_array, ones_column)) + + # Perform linear least squares regression to find the affine transformation matrix + matrix, _, _, _ = np.linalg.lstsq(source_homogeneous, dest_homogeneous, rcond=None) + + return matrix.T + + +def affine_transform_point( + matrix: np.ndarray, + point: tuple[float, float], +) -> tuple[int, int]: + """Apply an affine transformation to a 2D point""" + # Convert the source point to 3D NumPy array + # Adding z=1 makes point "homogeneous" + src = np.array([*point, 1]) + + # Apply the affine transformation + dest = matrix @ src + dest = (int(dest[0]), int(dest[1])) # to 2D integer coordinate + + return dest diff --git a/tactool/table_model.py b/tactool/table_model.py index d53cea5..d844b5d 100644 --- a/tactool/table_model.py +++ b/tactool/table_model.py @@ -1,6 +1,3 @@ -import dataclasses -from csv import writer -from pathlib import Path from textwrap import dedent from typing import ( Any, @@ -13,82 +10,12 @@ QModelIndex, Qt, ) -from PyQt5.QtWidgets import ( - QGraphicsEllipseItem, - QGraphicsTextItem, -) +from PyQt5.QtWidgets import QGraphicsEllipseItem +from tactool.analysis_point import AnalysisPoint from tactool.utils import LoggerMixin -@dataclasses.dataclass -class AnalysisPoint: - """ - Container class for encapsulating Analysis point data. - """ - # Define the class variables for the Analysis Points - id: int - label: str - x: int - y: int - diameter: int - scale: float - colour: str - sample_name: str - mount_name: str - material: str - notes: str - _outer_ellipse: QGraphicsEllipseItem - _inner_ellipse: QGraphicsEllipseItem - _label_text_item: QGraphicsTextItem - - - @classmethod - def field_names(cls) -> list[str]: - """ - Get the field names of the class object. - """ - return [field.name for field in dataclasses.fields(cls)] - - - def aslist(self) -> list[ - int, - int, - int, - str, - int, - float, - str, - str, - str, - str, - str, - QGraphicsEllipseItem, - QGraphicsEllipseItem, - QGraphicsTextItem, - ]: - """ - Get the attributes of an Analysis Point object as a list. - """ - attributes_list = [ - self.id, - self.label, - self.x, - self.y, - self.diameter, - self.scale, - self.colour, - self.sample_name, - self.mount_name, - self.material, - self.notes, - self._outer_ellipse, - self._inner_ellipse, - self._label_text_item - ] - return attributes_list - - class TableModel(QAbstractTableModel, LoggerMixin): """ PyQt QAbstractTableModel for storing AnalysisPoints. @@ -247,6 +174,14 @@ def get_point_by_apid(self, target_id: int) -> AnalysisPoint: return analysis_point + @property + def public_headers(self) -> list[str]: + """ + Return just the public headers. + """ + return [header for header in self.headers if not header.startswith("_")] + + @property def analysis_points(self) -> list[AnalysisPoint]: """ @@ -277,63 +212,3 @@ def next_point_id(self) -> int: return 1 else: return max(ids) + 1 - - - def export_csv(self, filepath: Path) -> None: - """ - Get all the existing Analysis Points and write them to as a CSV file. - """ - self.logger.info("Exporting TACtool CSV: %s", filepath) - # Do not save the last 3 columns as they contain PyQt graphics data - with open(filepath, "w", newline="") as csvfile: - csvwriter = writer(csvfile) - self.logger.debug("Converting data for CSV export") - # Modify and write the header data - new_headers = self.convert_export_headers() - csvwriter.writerow(new_headers) - - for analysis_point in self.analysis_points: - csv_row = self.convert_export_point(analysis_point) - csvwriter.writerow(csv_row) - - - def convert_export_headers(self) -> list[str]: - """ - Convert the header data for a CSV export. - This will rename some headers, remove sample_name, and add a Z field. - """ - header_conversions = { - "id": "Name", - "label": "Type", - "x": "X", - "y": "Y", - } - headers = self.headers[:len(self.headers) - 3] - for old_header, new_header in zip(header_conversions, header_conversions.values()): - headers[headers.index(old_header)] = new_header - # Remove the sample_name field, it is concatenated with ID - headers.pop(headers.index("sample_name")) - - # Insert a new Z column after the Y column for the laser formatting - z_index = headers.index("Y") + 1 - headers.insert(z_index, "Z") - return headers - - - def convert_export_point(self, analysis_point: AnalysisPoint) -> list: - """ - Convert an Analysis Point for a CSV export. - This will concatenate the ID and sample_name into a single field, - and add a Z field. - """ - headers = self.headers[:len(self.headers) - 3] - analysis_point_row = analysis_point.aslist()[:len(self.headers) - 3] - - # Concat the sample_name and id into 1 column - # Also pads zeros on id column value - analysis_point_row[headers.index("id")] = f"{analysis_point.sample_name}_#{analysis_point.id:03d}" - analysis_point_row.pop(headers.index("sample_name")) - - # Insert a new Z column after the Y column for the laser formatting - analysis_point_row.insert(headers.index("y") + 1, 0) - return analysis_point_row diff --git a/tactool/transformation.py b/tactool/transformation.py deleted file mode 100644 index 0dc588f..0000000 --- a/tactool/transformation.py +++ /dev/null @@ -1,138 +0,0 @@ -""" -Functions for parsing TACtool CSV data and transformation existing Analysis Points. -""" -import numpy as np - -from csv import DictReader -from typing import Any - -from tactool.table_model import AnalysisPoint - - -def parse_tactool_csv(filepath: str, default_settings: dict[str, Any]) -> list[dict[str, Any]]: - """ - Parse the data in a given TACtool CSV file. - """ - default_values = { - "Name": 0, - "X": 0, - "Y": 0, - "diameter": default_settings["diameter"], - "scale": float(default_settings["scale"]), - "colour": default_settings["colour"], - } - - analysis_point_rows = [] - with open(filepath) as csv_file: - reader = DictReader(csv_file) - # Iterate through each line in the CSV file - for id, item in enumerate(reader): - - # Split the id and sample_name value from the Name column - if "_#" in item["Name"]: - item["sample_name"], item["Name"] = item["Name"].rsplit("_#", maxsplit=1) - - # The default ID value is incremented with the row number - default_values["Name"] = id + 1 - # If there is a Z column which is requried for the laser, then remove it - try: - item.pop("Z") - except KeyError: - pass - - item = parse_row_data(item, default_values) - - # Rename specific fields to match function arguments - header_changes = { - "Name": "apid", - "X": "x", - "Y": "y", - "Type": "label", - } - for old_header, new_header in zip(header_changes, list(header_changes.values())): - item[new_header] = item.pop(old_header) - - analysis_point_rows.append(item) - return analysis_point_rows - - -def parse_row_data(item: dict, default_values: dict) -> dict: - """ - Parse the data of an Analysis Point row item in a CSV file. - """ - # Define the field names and their type conversions in Python - fields = ["Name", "X", "Y", "diameter", "scale", "colour"] - pre_processes = [int, int, int, int, float, None] - - # Iterate through each field, it's type conversion and it's default value - for field, pre_process in zip(fields, pre_processes): - try: - # If a value has been given - if item[field]: - # If the value requires preprocessing - if pre_process: - item[field] = pre_process(item[field]) - # Else when no value is given - else: - item[field] = default_values[field] - # In the event of a KeyError, throw away the value which caused the error - except KeyError: - item[field] = default_values[field] - return item - - -def reset_id(analysis_point: AnalysisPoint) -> AnalysisPoint: - """ - Resed the ID value of a given Analysis Point. - """ - analysis_point.id = None - return analysis_point - - -""" -Notes on affine transformation: -An affine transformation converts one set of points into another via rotation, -skewing, scaling and translation. It can be achieved mathematically by matrix -multiplication of a point vector by a transformation matrix. It is slightly -complicated by the fact that a 2D transformation requires "homogeneous" -coordinates with 3 dimensions. The transformation matrix can be calculated by -solving a linear equation involving the source and destination coordinate sets. -The following articles are helpful: -+ https://junfengzhang.com/2023/01/17/affine-transformation-why-3d-matrix-for-a-2d-transformation/ -+ https://medium.com/hipster-color-science/computing-2d-affine-transformations-using-only-matrix-multiplication-2ccb31b52181 # noqa -""" - - -def affine_transform_matrix( - source: list[tuple[float, float]], - dest: list[tuple[float, float]], -) -> np.ndarray: - # Convert the source and destination points to NumPy arrays - source_array = np.array(source) - dest_array = np.array(dest) - - # Add a column of ones to make the points homogeneous coordinates - ones_column = np.ones((source_array.shape[0], 1)) - source_homogeneous = np.hstack((source_array, ones_column)) - dest_homogeneous = np.hstack((dest_array, ones_column)) - - # Perform linear least squares regression to find the affine transformation matrix - matrix, _, _, _ = np.linalg.lstsq(source_homogeneous, dest_homogeneous, rcond=None) - - return matrix.T - - -def affine_transform_point( - matrix: np.ndarray, - point: tuple[float, float], -) -> tuple[int, int]: - """Apply an affine transformation to a 2D point""" - # Convert the source point to 3D NumPy array - # Adding z=1 makes point "homogeneous" - src = np.array([*point, 1]) - - # Apply the affine transformation - dest = matrix @ src - dest = (int(dest[0]), int(dest[1])) # to 2D integer coordinate - - return dest diff --git a/tactool/window.py b/tactool/window.py index f0a871f..9faadaa 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -29,7 +29,8 @@ from tactool.set_scale_dialog import SetScaleDialog from tactool.table_model import AnalysisPoint from tactool.table_view import TableView -from tactool.transformation import ( +from tactool.analysis_point import ( + export_tactool_csv, parse_tactool_csv, reset_id, ) @@ -382,12 +383,10 @@ def load_tactool_csv_data(self, filepath: str) -> None: # A KeyError and UnicodeError usually occur with an incorrectly formatted CSV file except (KeyError, UnicodeError): # Show a message to the user informing them of which headers should be in the CSV file - public_headers = [header for header in self.table_model.headers - if not header.startswith("_")] message = dedent(f""" There was an error when loading data from CSV file: {filepath.split("/")[-1]}. - Must use csv with header {public_headers}. + Must use csv with header {self.table_model.public_headers}. """) self.show_message("Error loading data", message, "warning") @@ -408,7 +407,11 @@ def export_tactool_csv_get_path(self) -> None: path = pyqt_save_dialog[0] if path: try: - self.table_model.export_csv(path) + export_tactool_csv( + filepath=filepath, + headers=self.table_model.public_headers, + analysis_points=self.table_model.analysis_points, + ) except Exception as error: self.data_error_message(error) diff --git a/test/test_integration.py b/test/test_integration.py index 9ddd1c6..58e9389 100644 --- a/test/test_integration.py +++ b/test/test_integration.py @@ -11,7 +11,10 @@ import pytest from PyQt5.QtGui import QPixmap from tactool.main import TACtool -from tactool.table_model import AnalysisPoint +from tactool.analysis_point import ( + AnalysisPoint, + export_tactool_csv, +) PUBLIC_INDEX = len(TACtool([], testing_mode=True).window.table_model.headers) - 3 @@ -398,7 +401,11 @@ def test_export_tactool_csv(tactool: TACtool, tmp_path: WindowsPath) -> None: tactool.graphics_view.left_click.emit(303, 303) # Save the data to the given CSV file path - tactool.table_model.export_csv(csv_path) + export_tactool_csv( + filepath=csv_path, + headers=tactool.table_model.public_headers, + analysis_points=tactool.table_model.analysis_points, + ) assert_csv_data(csv_path, expected_headers, expected_data) diff --git a/test/test_transformation.py b/test/test_transformation.py index 3b04fcf..77116fb 100644 --- a/test/test_transformation.py +++ b/test/test_transformation.py @@ -4,7 +4,7 @@ import numpy as np import pytest -from tactool.transformation import ( +from tactool.analysis_point import ( affine_transform_point, affine_transform_matrix, ) From 78bf336601541e535d33bf749f9db0d4d530c303 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Mon, 24 Jul 2023 17:57:09 +0100 Subject: [PATCH 020/105] Move recoordination functionality out of window.py --- tactool/analysis_point.py | 2 +- tactool/recoordinate_dialog.py | 10 +++++++--- tactool/window.py | 15 ++++----------- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/tactool/analysis_point.py b/tactool/analysis_point.py index 3509b40..fa2b8c3 100644 --- a/tactool/analysis_point.py +++ b/tactool/analysis_point.py @@ -254,7 +254,7 @@ def convert_export_point(analysis_point: AnalysisPoint, headers: list[str]) -> l def reset_id(analysis_point: AnalysisPoint) -> AnalysisPoint: """ - Resed the ID value of a given Analysis Point. + Reset the ID value of a given Analysis Point. """ analysis_point.id = None return analysis_point diff --git a/tactool/recoordinate_dialog.py b/tactool/recoordinate_dialog.py index e037ee7..19559aa 100644 --- a/tactool/recoordinate_dialog.py +++ b/tactool/recoordinate_dialog.py @@ -22,8 +22,6 @@ class RecoordinateDialog(QDialog, LoggerMixin): """ PyQt QDialog class for creating the recoordination dialog box. """ - # Tracks when the recoordinate button is clicked - recoordinate_clicked = pyqtSignal(str, str) # Tracks when the Recoordinate Dialog Box is closed closed_recoordinate_dialog = pyqtSignal() # Tracks when invalid input is supplied @@ -121,7 +119,7 @@ def get_export_and_recoordinate(self) -> None: input_csv = self.input_csv_filepath_label.text() output_csv = self.output_csv_filepath_label.text() if input_csv != "" and output_csv != "": - self.recoordinate_clicked.emit(input_csv, output_csv) + self.recoordinate_points(input_csv, output_csv) self.closeEvent() else: # Create a message informing the user that their input value is invalid @@ -132,6 +130,12 @@ def get_export_and_recoordinate(self) -> None: ) + def recoordinate_points(self, input_csv: str, output_csv: str): + print("RECOORDINATE") + print(input_csv) + print(output_csv) + + def closeEvent(self, event=None) -> None: """ Function which is run by PyQt when the application is closed. diff --git a/tactool/window.py b/tactool/window.py index 9faadaa..943102f 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -713,7 +713,7 @@ def toggle_scaling_mode(self) -> None: if self.set_scale_dialog is None: self.set_scale_dialog = SetScaleDialog(self.testing_mode) self.toggle_main_input_widgets(False) - # Move the Set Scale Dialog box to be at the top left corner of the main window + # Move the Dialog box to be at the top left corner of the main window main_window_pos = self.pos() self.set_scale_dialog.move(main_window_pos.x() + 50, main_window_pos.y() + 50) @@ -736,16 +736,15 @@ def toggle_recoordinate_dialog(self) -> None: """ # If the program is not in recoordination mode if self.recoordinate_dialog is None: - # Create the Set Scale Dialog box + # Create the Recoordinate Dialog box self.recoordinate_dialog = RecoordinateDialog(self.testing_mode) # Disable main window input widgets self.toggle_main_input_widgets(False) - # Move the Set Scale Dialog box to be at the top left corner of the main window + # Move the Dialog box to be at the top left corner of the main window main_window_pos = self.pos() self.recoordinate_dialog.move(main_window_pos.x() + 50, main_window_pos.y() + 50) - # Connect the Set Scale dialog buttons - self.recoordinate_dialog.recoordinate_clicked.connect(self.recoordinate_points) + # Connect the Recoordinate dialog buttons self.recoordinate_dialog.closed_recoordinate_dialog.connect(self.toggle_recoordinate_dialog) self.recoordinate_dialog.invalid_path_entry.connect(self.show_message) @@ -756,12 +755,6 @@ def toggle_recoordinate_dialog(self) -> None: self.toggle_main_input_widgets(True) - def recoordinate_points(self, input_csv: str, output_csv: str): - print("RECOORDINATE") - print(input_csv) - print(output_csv) - - def data_error_message(self, error: Exception) -> None: """ Show an error message to the user in the event that From 045e4f5804a8674be7b7352be79172a3df23a85b Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 2 Aug 2023 10:28:49 +0100 Subject: [PATCH 021/105] Update dialogs to be a method property --- tactool/window.py | 50 +++++++++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/tactool/window.py b/tactool/window.py index 943102f..49200ba 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -90,10 +90,6 @@ def __init__(self, testing_mode: bool) -> None: self.clear_points_button, self.table_view, ] - self.dialogs: list[QDialog] = [ - self.set_scale_dialog, - self.recoordinate_dialog, - ] def setup_ui_elements(self) -> None: @@ -112,7 +108,7 @@ def setup_ui_elements(self) -> None: self.file_menu_bar_import_tactool_csv = self.menu_bar_file.addAction("Import TACtool CSV") self.file_menu_bar_export_tactool_csv = self.menu_bar_file.addAction("Export TACtool CSV") self.menu_bar_file.addSeparator() - self.menu_bar_recoordinate_csv = self.menu_bar_file.addAction("Recoordinate CSV") + self.menu_bar_recoordinate_csv = self.menu_bar_file.addAction("Recoordinate SEM CSV") # Create the status bar self.status_bar = QStatusBar(self) @@ -201,22 +197,6 @@ def setup_ui_elements(self) -> None: self.setCentralWidget(central_widget) - def set_colour_button_style(self) -> None: - """ - Set the CSS stylesheet of the Colour Button in the User Interface. - """ - colour_button_stylesheet = """ - QToolTip { - background-color: white; - color: black; - border: black solid 1px; - }; - background-color: #BTN_COLOUR; - border: none; - """.replace("#BTN_COLOUR", self.point_colour) - self.colour_button.setStyleSheet(colour_button_stylesheet) - - def connect_signals_and_slots(self) -> None: """ Connect signals and slots to User Interface interactions. @@ -246,6 +226,34 @@ def connect_signals_and_slots(self) -> None: self.table_model.updated_analysis_points.connect(self.reload_analysis_points) + @property + def dialogs(self) -> list[QDialog]: + """ + Return a list of the current dialog attributes. + """ + dialogs = [ + self.set_scale_dialog, + self.recoordinate_dialog, + ] + return dialogs + + + def set_colour_button_style(self) -> None: + """ + Set the CSS stylesheet of the Colour Button in the User Interface. + """ + colour_button_stylesheet = """ + QToolTip { + background-color: white; + color: black; + border: black solid 1px; + }; + background-color: #BTN_COLOUR; + border: none; + """.replace("#BTN_COLOUR", self.point_colour) + self.colour_button.setStyleSheet(colour_button_stylesheet) + + def create_status_bar_messages(self): """ Create the status bar message functions. From 2364a18212f84b9094bafdb7e026f1f8b7f0965f Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 2 Aug 2023 12:15:43 +0100 Subject: [PATCH 022/105] Add initial recoordination functionality to application with UI --- tactool/analysis_point.py | 43 +++++++++++++++++++++-- tactool/recoordinate_dialog.py | 64 +++++++++++++++++++++++++++++----- tactool/window.py | 46 ++++++++++++++---------- 3 files changed, 124 insertions(+), 29 deletions(-) diff --git a/tactool/analysis_point.py b/tactool/analysis_point.py index fa2b8c3..de03b28 100644 --- a/tactool/analysis_point.py +++ b/tactool/analysis_point.py @@ -13,7 +13,6 @@ DictReader, writer, ) -from pathlib import Path from typing import Any from PyQt5.QtWidgets import ( @@ -194,9 +193,10 @@ def parse_row_data(item: dict[str, Any], fields: dict[str, dict[str, Any]]) -> d return ap_dict -def export_tactool_csv(filepath: Path, headers: list[str], analysis_points: list[AnalysisPoint]) -> None: +def export_tactool_csv(filepath: str, headers: list[str], analysis_points: list[AnalysisPoint]) -> None: """ Write the given header data and analysis points to the given filepath. + This is specifically for TACtool Analysis Point data. """ with open(filepath, "w", newline="") as csvfile: csvwriter = writer(csvfile) @@ -252,6 +252,45 @@ def convert_export_point(analysis_point: AnalysisPoint, headers: list[str]) -> l return analysis_point_row +def parse_sem_csv(filepath: str, required_headers: list[str]) -> tuple[list[dict[str, Any]], list[str]]: + """ + Parse an SEM CSV file. + Returns a list of dictionary rows, and the list of headers in the same order they are in the current file. + """ + point_dicts = [] + with open(filepath) as csv_file: + reader = DictReader(csv_file) + + # Check that the given CSV file has the required headers + reader.fieldnames + for header in required_headers: + if header not in reader.fieldnames: + raise KeyError + + # Iterate through each line in the CSV file + for item in reader: + # Convert the required coordinate headers to floats + for header in required_headers: + item[header] = float(item[header]) + point_dicts.append(item) + + return point_dicts, reader.fieldnames + + +def export_sem_csv(filepath: str, headers: list[str], points: list[dict[str, Any]]) -> None: + """ + Write the given header data and point data to the given filepath. + This is specifically for SEM data. + """ + with open(filepath, "w", newline="") as csvfile: + csvwriter = writer(csvfile) + csvwriter.writerow(headers) + for point in points: + # Convert the dictionary to a list of values matching the header positions + csv_row = [point[header] for header in headers] + csvwriter.writerow(csv_row) + + def reset_id(analysis_point: AnalysisPoint) -> AnalysisPoint: """ Reset the ID value of a given Analysis Point. diff --git a/tactool/recoordinate_dialog.py b/tactool/recoordinate_dialog.py index 19559aa..30ac6f0 100644 --- a/tactool/recoordinate_dialog.py +++ b/tactool/recoordinate_dialog.py @@ -15,6 +15,13 @@ QVBoxLayout, ) +from tactool.analysis_point import ( + AnalysisPoint, + affine_transform_matrix, + affine_transform_point, + parse_sem_csv, + export_sem_csv, +) from tactool.utils import LoggerMixin @@ -24,12 +31,13 @@ class RecoordinateDialog(QDialog, LoggerMixin): """ # Tracks when the Recoordinate Dialog Box is closed closed_recoordinate_dialog = pyqtSignal() - # Tracks when invalid input is supplied - invalid_path_entry = pyqtSignal(str, str, str) + # Used for showing messages with methods from the main window + show_message = pyqtSignal(str, str, str) - def __init__(self, testing_mode: bool) -> None: + def __init__(self, testing_mode: bool, ref_points: list[AnalysisPoint]) -> None: super().__init__() self.testing_mode = testing_mode + self.ref_points = ref_points # Setting the Dialog Box settings self.setWindowTitle("Recoordination") @@ -119,21 +127,59 @@ def get_export_and_recoordinate(self) -> None: input_csv = self.input_csv_filepath_label.text() output_csv = self.output_csv_filepath_label.text() if input_csv != "" and output_csv != "": - self.recoordinate_points(input_csv, output_csv) + self.recoordinate_sem_points(input_csv, output_csv) self.closeEvent() else: # Create a message informing the user that their input value is invalid - self.invalid_path_entry.emit( + self.show_message.emit( "Invalid Paths", "Please select an input and output CSV first.", "warning", ) - def recoordinate_points(self, input_csv: str, output_csv: str): - print("RECOORDINATE") - print(input_csv) - print(output_csv) + def recoordinate_sem_points(self, input_csv: str, output_csv: str) -> None: + """ + Recoordinate the given input SEM CSV file points using the current Analysis Points as reference points. + Saves the resulting SEM data to the given output CSV file. + """ + # Parse the SEM CSV data + required_sem_headers = [ + "Laser Ablation Centre X", + "Laser Ablation Centre Y", + ] + try: + self.logger.info("Loading SEM CSV: %s", input_csv) + point_dicts, csv_headers = parse_sem_csv(filepath=input_csv, required_headers=required_sem_headers) + except KeyError: + self.show_message.emit( + "Invalid CSV File", + "\n".join(["The given file does not contain the required headers:"] + required_sem_headers), + "warning", + ) + + # Calculate the matrix + self.logger.debug("Calculating recoordination matrix") + # Format the source and dest points into lists of tuples of x and y values + source = [ + (item["Laser Ablation Centre X"], item["Laser Ablation Centre Y"]) + for item in point_dicts + if item["Mineral Classification"] == "Fiducial" + ] + dest = [(point.x, point.y) for point in self.ref_points] + matrix = affine_transform_matrix(source=source, dest=dest) + + # Apply the matrix + for idx, item in enumerate(point_dicts): + point = (item["Laser Ablation Centre X"], item["Laser Ablation Centre Y"]) + new_point = affine_transform_point(matrix=matrix, point=point) + point_dicts[idx]["Laser Ablation Centre X"], point_dicts[idx]["Laser Ablation Centre Y"] = new_point + self.logger.debug("Transformed point %s to %s", point, new_point) + self.logger.info("Transformed %s points", len(point_dicts)) + + # Export the new points to the output CSV + self.logger.info("Saving recoordination results to: %s", output_csv) + export_sem_csv(filepath=output_csv, headers=csv_headers, points=point_dicts) def closeEvent(self, event=None) -> None: diff --git a/tactool/window.py b/tactool/window.py index 49200ba..affe703 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -742,25 +742,35 @@ def toggle_recoordinate_dialog(self) -> None: """ Toggle the recoordination dialog window. """ - # If the program is not in recoordination mode - if self.recoordinate_dialog is None: - # Create the Recoordinate Dialog box - self.recoordinate_dialog = RecoordinateDialog(self.testing_mode) - # Disable main window input widgets - self.toggle_main_input_widgets(False) - # Move the Dialog box to be at the top left corner of the main window - main_window_pos = self.pos() - self.recoordinate_dialog.move(main_window_pos.x() + 50, main_window_pos.y() + 50) - - # Connect the Recoordinate dialog buttons - self.recoordinate_dialog.closed_recoordinate_dialog.connect(self.toggle_recoordinate_dialog) - self.recoordinate_dialog.invalid_path_entry.connect(self.show_message) - - # Else when the program is in recoordination mode, reset the Recoordination Dialog value + # If there are 3 reference points which can be used for recoordination + if len(self.table_model.reference_points) >= 3: + # If the program is not in recoordination mode + if self.recoordinate_dialog is None: + # Create the Recoordinate Dialog box + self.recoordinate_dialog = RecoordinateDialog(self.testing_mode, self.table_model.reference_points) + # Disable main window input widgets + self.toggle_main_input_widgets(False) + self.graphics_scene.toggle_transparent_window(self.graphics_view._image) + # Move the Dialog box to be at the top left corner of the main window + main_window_pos = self.pos() + self.recoordinate_dialog.move(main_window_pos.x() + 50, main_window_pos.y() + 50) + + # Connect the Recoordinate dialog buttons + self.recoordinate_dialog.closed_recoordinate_dialog.connect(self.toggle_recoordinate_dialog) + self.recoordinate_dialog.show_message.connect(self.show_message) + + # Else when the program is in recoordination mode, reset the Recoordination Dialog value + else: + self.recoordinate_dialog = None + # Enable main window widgets + self.toggle_main_input_widgets(True) + self.graphics_scene.toggle_transparent_window(self.graphics_view._image) else: - self.recoordinate_dialog = None - # Enable main window widgets - self.toggle_main_input_widgets(True) + self.show_message( + "Reference Points", + "3 Reference points are required to perform recoordination.", + "warning", + ) def data_error_message(self, error: Exception) -> None: From 8674878ceeb19541440793dac502a14f8d41f4fc Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 2 Aug 2023 12:24:39 +0100 Subject: [PATCH 023/105] Fix FileDialog path logic --- tactool/window.py | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/tactool/window.py b/tactool/window.py index affe703..f13c4ae 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -327,11 +327,11 @@ def import_image_get_path(self) -> None: directory="Import Image", filter=self.default_settings["image_format"], ) - path = pyqt_open_dialog[0] - if path: + filepath = pyqt_open_dialog[0] + if filepath: try: - self.graphics_view.load_image(path) - self.image_filepath = path + self.graphics_view.load_image(filepath) + self.image_filepath = filepath self.setWindowTitle(f"TACtool: {self.image_filepath}") except Exception as error: self.data_error_message(error) @@ -342,17 +342,17 @@ def export_image_get_path(self) -> None: Function to create a PyQt File Dialog, allowing the user to visually select a directory to export an image file. """ if self.validate_current_data(validate_image=True): - filepath = self.image_filepath if self.image_filepath else "" + current_filepath = self.image_filepath if self.image_filepath else "" pyqt_save_dialog = QFileDialog.getSaveFileName( parent=self, caption="Export Image", - directory=filepath, + directory=current_filepath, filter=self.default_settings["image_format"], ) - path = pyqt_save_dialog[0] - if path: + filepath = pyqt_save_dialog[0] + if filepath: try: - self.graphics_view.save_image(path) + self.graphics_view.save_image(filepath) except Exception as error: self.data_error_message(error) @@ -366,11 +366,11 @@ def import_tactool_csv_get_path(self) -> None: caption="Import TACtool CSV", filter=self.default_settings["csv_format"], ) - path = pyqt_open_dialog[0] - if path: + filepath = pyqt_open_dialog[0] + if filepath: try: - self.load_tactool_csv_data(path) - self.csv_filepath = path + self.load_tactool_csv_data(filepath) + self.csv_filepath = filepath except Exception as error: self.data_error_message(error) @@ -405,16 +405,17 @@ def export_tactool_csv_get_path(self) -> None: allowing the user to visually select a directory to save a TACtool CSV file. """ if self.validate_current_data(): - filepath = self.csv_filepath if self.csv_filepath else "" + current_filepath = self.csv_filepath if self.csv_filepath else "" pyqt_save_dialog = QFileDialog.getSaveFileName( parent=self, caption="Export as TACtool CSV", - directory=filepath, + directory=current_filepath, filter=self.default_settings["csv_format"], ) - path = pyqt_save_dialog[0] - if path: + filepath = pyqt_save_dialog[0] + if filepath: try: + self.logger.info("Exporting Analysis Points to: %s", filepath) export_tactool_csv( filepath=filepath, headers=self.table_model.public_headers, From 49983065463e8c9f342451e31700a18d02fa7b2a Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 2 Aug 2023 12:25:44 +0100 Subject: [PATCH 024/105] Flake8 fix --- tactool/recoordinate_dialog.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tactool/recoordinate_dialog.py b/tactool/recoordinate_dialog.py index 30ac6f0..113cf60 100644 --- a/tactool/recoordinate_dialog.py +++ b/tactool/recoordinate_dialog.py @@ -157,7 +157,7 @@ def recoordinate_sem_points(self, input_csv: str, output_csv: str) -> None: "\n".join(["The given file does not contain the required headers:"] + required_sem_headers), "warning", ) - + # Calculate the matrix self.logger.debug("Calculating recoordination matrix") # Format the source and dest points into lists of tuples of x and y values From b87f5d5a406734b67d41e0f5371849cbef03ec32 Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 2 Aug 2023 13:37:48 +0100 Subject: [PATCH 025/105] Update import tactool csv error message --- tactool/window.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/tactool/window.py b/tactool/window.py index f13c4ae..41efd27 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -391,11 +391,16 @@ def load_tactool_csv_data(self, filepath: str) -> None: # A KeyError and UnicodeError usually occur with an incorrectly formatted CSV file except (KeyError, UnicodeError): # Show a message to the user informing them of which headers should be in the CSV file - message = dedent(f""" - There was an error when loading data from CSV file: {filepath.split("/")[-1]}. - - Must use csv with header {self.table_model.public_headers}. - """) + required_headers = [ + " " + val + for val in ["Name", "Type", "X", "Y", "diameter", "scale", "colour", "mount_name", "material", "notes"] + ] + message = "\n".join([ + "There was an error when loading data from CSV file:", + " " + filepath.split('/')[-1] + "\n", + "Plese use a CSV file with the following headers:", + *required_headers, + ]) self.show_message("Error loading data", message, "warning") From 71b744d683f7df4e871a8f8bca481689b5e2c6b1 Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 2 Aug 2023 13:49:51 +0100 Subject: [PATCH 026/105] Add more argumnents to recoordinate_sem_points to allow differing CSV formats --- tactool/recoordinate_dialog.py | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/tactool/recoordinate_dialog.py b/tactool/recoordinate_dialog.py index 113cf60..69c0b33 100644 --- a/tactool/recoordinate_dialog.py +++ b/tactool/recoordinate_dialog.py @@ -138,16 +138,25 @@ def get_export_and_recoordinate(self) -> None: ) - def recoordinate_sem_points(self, input_csv: str, output_csv: str) -> None: + def recoordinate_sem_points( + self, + input_csv: str, + output_csv: str, + x_header: str = "Laser Ablation Centre X", + y_header: str = "Laser Ablation Centre Y", + ref_col: str = "Mineral Classification", + ref_label: str = "Fiducial", + ) -> None: """ Recoordinate the given input SEM CSV file points using the current Analysis Points as reference points. Saves the resulting SEM data to the given output CSV file. + The x_header, y_header, ref_col and ref_label values can be changed to allow recoordination + of CSV files with different headers and data. + For example, using the following values would allow recoordination for TACtool CSV files: + x_header="X", y_header="Y", ref_col="Type", ref_label="RefMark" """ # Parse the SEM CSV data - required_sem_headers = [ - "Laser Ablation Centre X", - "Laser Ablation Centre Y", - ] + required_sem_headers = [x_header, y_header] try: self.logger.info("Loading SEM CSV: %s", input_csv) point_dicts, csv_headers = parse_sem_csv(filepath=input_csv, required_headers=required_sem_headers) @@ -162,18 +171,18 @@ def recoordinate_sem_points(self, input_csv: str, output_csv: str) -> None: self.logger.debug("Calculating recoordination matrix") # Format the source and dest points into lists of tuples of x and y values source = [ - (item["Laser Ablation Centre X"], item["Laser Ablation Centre Y"]) + (item[x_header], item[y_header]) for item in point_dicts - if item["Mineral Classification"] == "Fiducial" + if item[ref_col] == ref_label ] dest = [(point.x, point.y) for point in self.ref_points] matrix = affine_transform_matrix(source=source, dest=dest) # Apply the matrix for idx, item in enumerate(point_dicts): - point = (item["Laser Ablation Centre X"], item["Laser Ablation Centre Y"]) + point = (item[x_header], item[y_header]) new_point = affine_transform_point(matrix=matrix, point=point) - point_dicts[idx]["Laser Ablation Centre X"], point_dicts[idx]["Laser Ablation Centre Y"] = new_point + point_dicts[idx][x_header], point_dicts[idx][y_header] = new_point self.logger.debug("Transformed point %s to %s", point, new_point) self.logger.info("Transformed %s points", len(point_dicts)) From 0d6ea5c3d4372b6e2e3382a04c131fa98505a635 Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 2 Aug 2023 14:17:31 +0100 Subject: [PATCH 027/105] Update path types --- test/test_integration.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/test_integration.py b/test/test_integration.py index 58e9389..ec5ddc7 100644 --- a/test/test_integration.py +++ b/test/test_integration.py @@ -6,7 +6,7 @@ tactool fixtures start a running QApplication for the context of the test. """ -from pathlib import WindowsPath +from pathlib import Path import pytest from PyQt5.QtGui import QPixmap @@ -265,7 +265,7 @@ def test_set_scale(tactool: TACtool) -> None: assert analysis_point.scale == scale -def test_export_image(tactool: TACtool, tmp_path: WindowsPath) -> None: +def test_export_image(tactool: TACtool, tmp_path: Path) -> None: """ Function to test the functionality of exporting an image. """ @@ -368,7 +368,7 @@ def test_import_tactool_csv(tactool: TACtool, filepath: str, expected_points: li assert len(tactool.table_model.analysis_points) == 6 -def test_export_tactool_csv(tactool: TACtool, tmp_path: WindowsPath) -> None: +def test_export_tactool_csv(tactool: TACtool, tmp_path: Path) -> None: """ Function to test the functionality of exporting a TACtool CSV file. """ From 3a1ae8626aabc9ef2519ef81278c8a41c9f23b6a Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 2 Aug 2023 14:17:49 +0100 Subject: [PATCH 028/105] Add recoordinate SEM CSV file test --- test/test_transformation.py | 51 ++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/test/test_transformation.py b/test/test_transformation.py index 77116fb..c389dcc 100644 --- a/test/test_transformation.py +++ b/test/test_transformation.py @@ -1,9 +1,14 @@ """ Tests for functions in the transformation module """ -import numpy as np import pytest +import numpy as np + +from csv import DictReader +from pathlib import Path + +from tactool.main import TACtool from tactool.analysis_point import ( affine_transform_point, affine_transform_matrix, @@ -55,3 +60,47 @@ def test_affine_transform_matrix(): # Assert np.testing.assert_array_almost_equal(matrix, expected, decimal=10) + + +def test_recoordinate_sem_points(tmp_path: Path, tactool: TACtool): + # Arrange + input_csv = "test/data/analysis_points_complete.csv" + output_csv = tmp_path / "analysis_points_complete.csv" + # Place 3 Analysis Points which will be used for recoordination + tactool.graphics_view.left_click.emit(336, 472) + tactool.graphics_view.left_click.emit(318, 394) + tactool.graphics_view.left_click.emit(268, 469) + # Toggle recoordinate dialog so that the recoordinate_dialog is callable + tactool.window.toggle_recoordinate_dialog() + expected_coordinates = [ + ("335", "472"), + ("317", "394"), + ("267", "469"), + ("339", "526"), + ("379", "362"), + ] + + # Act + tactool.recoordinate_dialog.recoordinate_sem_points( + input_csv, output_csv, + x_header="X", y_header="Y", ref_col="Type", ref_label="RefMark", + ) + + # Assert + with open(input_csv) as input_file, open(output_csv) as output_file: + input_reader = DictReader(input_file) + output_reader = DictReader(output_file) + + # Check that the headers remain the same + assert input_reader.fieldnames == output_reader.fieldnames + + non_coord_headers = ["Name", "Type", "diameter", "scale", "colour", "mount_name", "material", "notes"] + + # Iterate through CSV file lines + for input_item, output_item, (new_x, new_y) in zip(input_reader, output_reader, expected_coordinates): + # Check that the non coordinate fields remain the same + for header in non_coord_headers: + assert input_item[header] == output_item[header] + # Check that the coordinate fields are correct + assert output_item["X"] == new_x + assert output_item["Y"] == new_y From 710623ee30deebbcf3893369aa61e4b6d3321236 Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 2 Aug 2023 14:25:02 +0100 Subject: [PATCH 029/105] Update transform function to round rather than rely on int conversion --- tactool/analysis_point.py | 2 +- test/test_transformation.py | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tactool/analysis_point.py b/tactool/analysis_point.py index de03b28..8fbaacf 100644 --- a/tactool/analysis_point.py +++ b/tactool/analysis_point.py @@ -343,6 +343,6 @@ def affine_transform_point( # Apply the affine transformation dest = matrix @ src - dest = (int(dest[0]), int(dest[1])) # to 2D integer coordinate + dest = (round(dest[0]), round(dest[1])) # to 2D integer coordinate return dest diff --git a/test/test_transformation.py b/test/test_transformation.py index c389dcc..bb1107c 100644 --- a/test/test_transformation.py +++ b/test/test_transformation.py @@ -73,11 +73,11 @@ def test_recoordinate_sem_points(tmp_path: Path, tactool: TACtool): # Toggle recoordinate dialog so that the recoordinate_dialog is callable tactool.window.toggle_recoordinate_dialog() expected_coordinates = [ - ("335", "472"), - ("317", "394"), - ("267", "469"), - ("339", "526"), - ("379", "362"), + (336, 472), + (318, 394), + (268, 469), + (340, 527), + (380, 362), ] # Act @@ -102,5 +102,5 @@ def test_recoordinate_sem_points(tmp_path: Path, tactool: TACtool): for header in non_coord_headers: assert input_item[header] == output_item[header] # Check that the coordinate fields are correct - assert output_item["X"] == new_x - assert output_item["Y"] == new_y + assert int(output_item["X"]) == new_x + assert int(output_item["Y"]) == new_y From e0b4930e6cf6f4eca283fa42a024866d69a81d3a Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 2 Aug 2023 14:38:37 +0100 Subject: [PATCH 030/105] Updating error logging --- tactool/analysis_point.py | 2 +- tactool/recoordinate_dialog.py | 18 +++++++++++++----- tactool/window.py | 1 + 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/tactool/analysis_point.py b/tactool/analysis_point.py index 8fbaacf..e22a7e8 100644 --- a/tactool/analysis_point.py +++ b/tactool/analysis_point.py @@ -265,7 +265,7 @@ def parse_sem_csv(filepath: str, required_headers: list[str]) -> tuple[list[dict reader.fieldnames for header in required_headers: if header not in reader.fieldnames: - raise KeyError + raise KeyError(f"Missing required header: {header}") # Iterate through each line in the CSV file for item in reader: diff --git a/tactool/recoordinate_dialog.py b/tactool/recoordinate_dialog.py index 69c0b33..f748e7c 100644 --- a/tactool/recoordinate_dialog.py +++ b/tactool/recoordinate_dialog.py @@ -127,8 +127,9 @@ def get_export_and_recoordinate(self) -> None: input_csv = self.input_csv_filepath_label.text() output_csv = self.output_csv_filepath_label.text() if input_csv != "" and output_csv != "": - self.recoordinate_sem_points(input_csv, output_csv) - self.closeEvent() + result = self.recoordinate_sem_points(input_csv, output_csv) + if result: + self.closeEvent() else: # Create a message informing the user that their input value is invalid self.show_message.emit( @@ -146,10 +147,12 @@ def recoordinate_sem_points( y_header: str = "Laser Ablation Centre Y", ref_col: str = "Mineral Classification", ref_label: str = "Fiducial", - ) -> None: + ) -> bool: """ Recoordinate the given input SEM CSV file points using the current Analysis Points as reference points. Saves the resulting SEM data to the given output CSV file. + Returns a bool which signals if the recoordination successfully completed. + The x_header, y_header, ref_col and ref_label values can be changed to allow recoordination of CSV files with different headers and data. For example, using the following values would allow recoordination for TACtool CSV files: @@ -160,12 +163,16 @@ def recoordinate_sem_points( try: self.logger.info("Loading SEM CSV: %s", input_csv) point_dicts, csv_headers = parse_sem_csv(filepath=input_csv, required_headers=required_sem_headers) - except KeyError: + except KeyError as error: + self.logger.error(error) self.show_message.emit( "Invalid CSV File", - "\n".join(["The given file does not contain the required headers:"] + required_sem_headers), + "\n".join(["The given file does not contain the required headers:"] + [ + " " + header for header in required_sem_headers + ]), "warning", ) + return False # Calculate the matrix self.logger.debug("Calculating recoordination matrix") @@ -189,6 +196,7 @@ def recoordinate_sem_points( # Export the new points to the output CSV self.logger.info("Saving recoordination results to: %s", output_csv) export_sem_csv(filepath=output_csv, headers=csv_headers, points=point_dicts) + return True def closeEvent(self, event=None) -> None: diff --git a/tactool/window.py b/tactool/window.py index 41efd27..3251d0e 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -772,6 +772,7 @@ def toggle_recoordinate_dialog(self) -> None: self.toggle_main_input_widgets(True) self.graphics_scene.toggle_transparent_window(self.graphics_view._image) else: + self.logger.error("Missing 3 references points for recoordination") self.show_message( "Reference Points", "3 Reference points are required to perform recoordination.", From 08c1bdf4b1a5cae3c2c9d16b0f855c510eb86b2c Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 2 Aug 2023 14:38:44 +0100 Subject: [PATCH 031/105] Minor formatting --- test/test_transformation.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/test/test_transformation.py b/test/test_transformation.py index bb1107c..7868bd9 100644 --- a/test/test_transformation.py +++ b/test/test_transformation.py @@ -72,13 +72,7 @@ def test_recoordinate_sem_points(tmp_path: Path, tactool: TACtool): tactool.graphics_view.left_click.emit(268, 469) # Toggle recoordinate dialog so that the recoordinate_dialog is callable tactool.window.toggle_recoordinate_dialog() - expected_coordinates = [ - (336, 472), - (318, 394), - (268, 469), - (340, 527), - (380, 362), - ] + expected_coordinates = [(336, 472), (318, 394), (268, 469), (340, 527), (380, 362)] # Act tactool.recoordinate_dialog.recoordinate_sem_points( From 6ff375771c59424ed731dc178a0f9f59e79c98f8 Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 2 Aug 2023 15:12:30 +0100 Subject: [PATCH 032/105] Parameterise test_recoordinate_sem_points --- test/test_transformation.py | 41 ++++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/test/test_transformation.py b/test/test_transformation.py index 7868bd9..1550078 100644 --- a/test/test_transformation.py +++ b/test/test_transformation.py @@ -62,23 +62,42 @@ def test_affine_transform_matrix(): np.testing.assert_array_almost_equal(matrix, expected, decimal=10) -def test_recoordinate_sem_points(tmp_path: Path, tactool: TACtool): +@pytest.mark.parametrize( + ["input_csv", "expected_coordinates", "recoordinate_fields", "non_coord_headers"], + [ + ( + "test/data/analysis_points_complete.csv", + [(336, 472), (318, 394), (268, 469), (340, 527), (380, 362)], + {"x_header": "X", "y_header": "Y", "ref_col": "Type", "ref_label": "RefMark"}, + ["Name", "Type", "diameter", "scale", "colour", "mount_name", "material", "notes"], + ), + ( + "test/data/analysis_points_complete.csv", + [(336, 472), (318, 394), (268, 469), (340, 527), (380, 362)], + {"x_header": "X", "y_header": "Y", "ref_col": "Type", "ref_label": "RefMark"}, + ["Name", "Type", "diameter", "scale", "colour", "mount_name", "material", "notes"], + ), + ], +) +def test_recoordinate_sem_points( + tmp_path: Path, + tactool: TACtool, + input_csv: str, + expected_coordinates: list[tuple[int, int]], + recoordinate_fields: dict[str, str], + non_coord_headers: list[str], +): # Arrange - input_csv = "test/data/analysis_points_complete.csv" - output_csv = tmp_path / "analysis_points_complete.csv" + output_csv = tmp_path / "recoordinated_output.csv" # Place 3 Analysis Points which will be used for recoordination tactool.graphics_view.left_click.emit(336, 472) tactool.graphics_view.left_click.emit(318, 394) tactool.graphics_view.left_click.emit(268, 469) # Toggle recoordinate dialog so that the recoordinate_dialog is callable tactool.window.toggle_recoordinate_dialog() - expected_coordinates = [(336, 472), (318, 394), (268, 469), (340, 527), (380, 362)] # Act - tactool.recoordinate_dialog.recoordinate_sem_points( - input_csv, output_csv, - x_header="X", y_header="Y", ref_col="Type", ref_label="RefMark", - ) + tactool.recoordinate_dialog.recoordinate_sem_points(input_csv, output_csv, **recoordinate_fields) # Assert with open(input_csv) as input_file, open(output_csv) as output_file: @@ -88,13 +107,11 @@ def test_recoordinate_sem_points(tmp_path: Path, tactool: TACtool): # Check that the headers remain the same assert input_reader.fieldnames == output_reader.fieldnames - non_coord_headers = ["Name", "Type", "diameter", "scale", "colour", "mount_name", "material", "notes"] - # Iterate through CSV file lines for input_item, output_item, (new_x, new_y) in zip(input_reader, output_reader, expected_coordinates): # Check that the non coordinate fields remain the same for header in non_coord_headers: assert input_item[header] == output_item[header] # Check that the coordinate fields are correct - assert int(output_item["X"]) == new_x - assert int(output_item["Y"]) == new_y + assert int(output_item[recoordinate_fields["x_header"]]) == new_x + assert int(output_item[recoordinate_fields["y_header"]]) == new_y From 14c8e337cef6d006c406ae2623948ec56fbb411e Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 2 Aug 2023 15:30:37 +0100 Subject: [PATCH 033/105] Add test_recoordinate_sem_points case with dummy SEM CSV file --- test/data/SEM_co-ordinate_import_test_set.csv | 9 +++++ test/test_transformation.py | 40 +++++++++++-------- 2 files changed, 32 insertions(+), 17 deletions(-) create mode 100644 test/data/SEM_co-ordinate_import_test_set.csv diff --git a/test/data/SEM_co-ordinate_import_test_set.csv b/test/data/SEM_co-ordinate_import_test_set.csv new file mode 100644 index 0000000..b751410 --- /dev/null +++ b/test/data/SEM_co-ordinate_import_test_set.csv @@ -0,0 +1,9 @@ +Particle ID,Mineral Classification,Laser Ablation Centre X,Laser Ablation Centre Y,Effective Diameter �m,Feret Max Diameter �m,Feret Min Diameter �m,F (N),Cl (N) +A,Fiducial,91.576,67.762,,,,, +B,Fiducial,86.01,55.893,,,,, +C,Fiducial,98.138,49.417,,,,, +509,Apatite,96.764747,49.303754,56.85,70.99,52.98,,1.51 +577,Apatite,97.520798,55.785059,104.12,160.72,81.76,,1.32 +662,Apatite,93.746436,60.03264,49.1,59.89,42.98,,2.63 +705,Apatite,91.770031,62.312733,41.5,58.29,33.49,, +759,Apatite,92.415936,67.080603,44.62,63.02,37.54,,0.69 diff --git a/test/test_transformation.py b/test/test_transformation.py index 1550078..30e1b12 100644 --- a/test/test_transformation.py +++ b/test/test_transformation.py @@ -27,16 +27,19 @@ [0, 0, 1]]) -@pytest.mark.parametrize('matrix, src, expected', [ - (X_PLUS_10, (1, 1), (11, 1)), - (X_PLUS_10, (1, 0), (11, 0)), - (X_PLUS_10, (0, 1), (10, 1)), - (Y_PLUS_10, (1, 1), (1, 11)), - (Y_PLUS_10, (1, 0), (1, 10)), - (Y_PLUS_10, (0, 1), (0, 11)), - (SCALE_BY_2ish, (1, 1), (2, 2)), # should round to nearest int - (SCALE_BY_2ish, (10, 10), (21, 21)), # no rounding required -]) +@pytest.mark.parametrize( + ["matrix", "src", "expected"], + [ + (X_PLUS_10, (1, 1), (11, 1)), + (X_PLUS_10, (1, 0), (11, 0)), + (X_PLUS_10, (0, 1), (10, 1)), + (Y_PLUS_10, (1, 1), (1, 11)), + (Y_PLUS_10, (1, 0), (1, 10)), + (Y_PLUS_10, (0, 1), (0, 11)), + (SCALE_BY_2ish, (1, 1), (2, 2)), # should round to nearest int + (SCALE_BY_2ish, (10, 10), (21, 21)), # no rounding required + ] +) def test_affine_transform_point(matrix, src, expected): # Act transformed = affine_transform_point(matrix, src) @@ -72,10 +75,12 @@ def test_affine_transform_matrix(): ["Name", "Type", "diameter", "scale", "colour", "mount_name", "material", "notes"], ), ( - "test/data/analysis_points_complete.csv", - [(336, 472), (318, 394), (268, 469), (340, 527), (380, 362)], - {"x_header": "X", "y_header": "Y", "ref_col": "Type", "ref_label": "RefMark"}, - ["Name", "Type", "diameter", "scale", "colour", "mount_name", "material", "notes"], + "test/data/SEM_co-ordinate_import_test_set.csv", + [(336, 472), (318, 394), (268, 469), (271, 458), (287, 483), (309, 466), (320, 458), (332, 477)], + {"x_header": "Laser Ablation Centre X", "y_header": "Laser Ablation Centre Y", + "ref_col": "Mineral Classification", "ref_label": "Fiducial"}, + ["Particle ID", "Mineral Classification", "Effective Diameter �m", + "Feret Max Diameter �m", "Feret Min Diameter �m", "F (N)", "Cl (N)"], ), ], ) @@ -89,6 +94,7 @@ def test_recoordinate_sem_points( ): # Arrange output_csv = tmp_path / "recoordinated_output.csv" + print(output_csv) # Place 3 Analysis Points which will be used for recoordination tactool.graphics_view.left_click.emit(336, 472) tactool.graphics_view.left_click.emit(318, 394) @@ -108,10 +114,10 @@ def test_recoordinate_sem_points( assert input_reader.fieldnames == output_reader.fieldnames # Iterate through CSV file lines - for input_item, output_item, (new_x, new_y) in zip(input_reader, output_reader, expected_coordinates): + for input_item, output_item, (expect_x, expect_y) in zip(input_reader, output_reader, expected_coordinates): # Check that the non coordinate fields remain the same for header in non_coord_headers: assert input_item[header] == output_item[header] # Check that the coordinate fields are correct - assert int(output_item[recoordinate_fields["x_header"]]) == new_x - assert int(output_item[recoordinate_fields["y_header"]]) == new_y + assert int(output_item[recoordinate_fields["x_header"]]) == expect_x + assert int(output_item[recoordinate_fields["y_header"]]) == expect_y From 82792d5abc4684ac3655607104cc25af074da561 Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 2 Aug 2023 15:34:06 +0100 Subject: [PATCH 034/105] Remove special characters from headers --- test/data/SEM_co-ordinate_import_test_set.csv | 2 +- test/test_transformation.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/data/SEM_co-ordinate_import_test_set.csv b/test/data/SEM_co-ordinate_import_test_set.csv index b751410..5242113 100644 --- a/test/data/SEM_co-ordinate_import_test_set.csv +++ b/test/data/SEM_co-ordinate_import_test_set.csv @@ -1,4 +1,4 @@ -Particle ID,Mineral Classification,Laser Ablation Centre X,Laser Ablation Centre Y,Effective Diameter �m,Feret Max Diameter �m,Feret Min Diameter �m,F (N),Cl (N) +Particle ID,Mineral Classification,Laser Ablation Centre X,Laser Ablation Centre Y,Effective Diameter m,Feret Max Diameter m,Feret Min Diameter m,F (N),Cl (N) A,Fiducial,91.576,67.762,,,,, B,Fiducial,86.01,55.893,,,,, C,Fiducial,98.138,49.417,,,,, diff --git a/test/test_transformation.py b/test/test_transformation.py index 30e1b12..0fdaa33 100644 --- a/test/test_transformation.py +++ b/test/test_transformation.py @@ -79,8 +79,8 @@ def test_affine_transform_matrix(): [(336, 472), (318, 394), (268, 469), (271, 458), (287, 483), (309, 466), (320, 458), (332, 477)], {"x_header": "Laser Ablation Centre X", "y_header": "Laser Ablation Centre Y", "ref_col": "Mineral Classification", "ref_label": "Fiducial"}, - ["Particle ID", "Mineral Classification", "Effective Diameter �m", - "Feret Max Diameter �m", "Feret Min Diameter �m", "F (N)", "Cl (N)"], + ["Particle ID", "Mineral Classification", "Effective Diameter m", + "Feret Max Diameter m", "Feret Min Diameter m", "F (N)", "Cl (N)"], ), ], ) From 725721a1b546c88bdfef4607a65c527632468f0f Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 2 Aug 2023 15:37:02 +0100 Subject: [PATCH 035/105] Rename variable --- test/test_transformation.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/test_transformation.py b/test/test_transformation.py index 0fdaa33..799e940 100644 --- a/test/test_transformation.py +++ b/test/test_transformation.py @@ -66,7 +66,7 @@ def test_affine_transform_matrix(): @pytest.mark.parametrize( - ["input_csv", "expected_coordinates", "recoordinate_fields", "non_coord_headers"], + ["input_csv", "expected_coordinates", "recoordinate_args", "non_coord_headers"], [ ( "test/data/analysis_points_complete.csv", @@ -89,7 +89,7 @@ def test_recoordinate_sem_points( tactool: TACtool, input_csv: str, expected_coordinates: list[tuple[int, int]], - recoordinate_fields: dict[str, str], + recoordinate_args: dict[str, str], non_coord_headers: list[str], ): # Arrange @@ -103,7 +103,7 @@ def test_recoordinate_sem_points( tactool.window.toggle_recoordinate_dialog() # Act - tactool.recoordinate_dialog.recoordinate_sem_points(input_csv, output_csv, **recoordinate_fields) + tactool.recoordinate_dialog.recoordinate_sem_points(input_csv, output_csv, **recoordinate_args) # Assert with open(input_csv) as input_file, open(output_csv) as output_file: @@ -119,5 +119,5 @@ def test_recoordinate_sem_points( for header in non_coord_headers: assert input_item[header] == output_item[header] # Check that the coordinate fields are correct - assert int(output_item[recoordinate_fields["x_header"]]) == expect_x - assert int(output_item[recoordinate_fields["y_header"]]) == expect_y + assert int(output_item[recoordinate_args["x_header"]]) == expect_x + assert int(output_item[recoordinate_args["y_header"]]) == expect_y From 10b2479200c40dfb744e2f8c06f77523935da1aa Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Thu, 3 Aug 2023 11:01:23 +0100 Subject: [PATCH 036/105] Update test structure to split it over more files --- test/conftest.py | 18 +++ test/test_import_export.py | 182 +++++++++++++++++++++++ test/test_integration.py | 292 +------------------------------------ test/test_model.py | 18 +-- test/test_scaling.py | 99 +++++++++++++ 5 files changed, 316 insertions(+), 293 deletions(-) create mode 100644 test/test_import_export.py create mode 100644 test/test_scaling.py diff --git a/test/conftest.py b/test/conftest.py index 5d808cb..29bc3bd 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -2,6 +2,8 @@ Definitions for test fixtures used within other tests. """ import pytest + +from tactool.table_model import TableModel from tactool.main import TACtool @@ -18,3 +20,19 @@ def tactool(): yield tactool_application # Delete the application instance before restarting a new one del tactool_application + + +@pytest.fixture(scope="function") +def model(): + """ + An instance of the TableModel to be used in tests. + """ + return TableModel() + + +@pytest.fixture(scope="function") +def public_index(model: TableModel): + """ + The index in the list of headers where the public headers end. + """ + return len(model.public_headers) diff --git a/test/test_import_export.py b/test/test_import_export.py new file mode 100644 index 0000000..a9e45f1 --- /dev/null +++ b/test/test_import_export.py @@ -0,0 +1,182 @@ +from pathlib import Path + +import pytest +from PyQt5.QtGui import QPixmap +from tactool.main import TACtool +from tactool.analysis_point import ( + AnalysisPoint, + export_tactool_csv, +) + + +def test_export_image(tactool: TACtool, tmp_path: Path): + """ + Function to test the functionality of exporting an image. + """ + tmp_image_path = tmp_path / "exported_image.png" + + # Add some Analysis Points + tactool.graphics_view.left_click.emit(101, 101) + tactool.graphics_view.left_click.emit(202, 202) + tactool.graphics_view.left_click.emit(303, 303) + tactool.window.update_point_settings( + sample_name="sample_x83", + mount_name="mount_x81", + material="rock", + label="Spot", + diameter=100, + colour="#ff0000", + ) + tactool.graphics_view.left_click.emit(404, 404) + # The 5th point purposefully goes over the imported image border + tactool.graphics_view.left_click.emit(555, 555) + + # Zoom in on the PyQt Graphics View + factor = 1.25 + tactool.graphics_view._zoom += 1 + tactool.graphics_view.scale(factor, factor) + + # Save the image to the given filepath + tactool.graphics_view.save_image(str(tmp_image_path)) + + # Check that the filepath and the newly saved file exist + assert tmp_image_path.exists() + assert tmp_image_path.is_file() + + # Load the newly created file and the expected image file into a PyQt5 Pixmap + # This allows us to use already imported modules to compare the image sizes + actual_image = QPixmap(str(tmp_image_path)) + expected_image = QPixmap("test/data/exported_image.png") + assert actual_image.size() == expected_image.size() + + +@pytest.mark.parametrize("filepath, expected_points", [ + ("test/data/analysis_points_complete.csv", [ + AnalysisPoint(1, "RefMark", 472, 336, 10, 1.0, "#ffff00", "sample_x83", "mount_x81", "rock", + "this point has padded zeros in the id column", None, None, None), + AnalysisPoint(2, "RefMark", 394, 318, 10, 1.0, "#ffff00", "sample_x83", "mount_x81", + "rock", "", None, None, None), + AnalysisPoint(3, "RefMark", 469, 268, 10, 1.0, "#ffff00", "sample_x83", "mount_x81", + "rock", "point3", None, None, None), + AnalysisPoint(4, "Spot", 527, 340, 10, 1.0, "#204a87", "sample_x67", "mount_x15", "duck", + "point4 with whitespace, and comma", None, None, None), + AnalysisPoint(5, "Spot", 362, 380, 15, 1.0, "#204a87", "sample_x67", "mount_x15", "duck", + "point5 with whitespace", None, None, None), + ]), + ("test/data/id_x_y_partial.csv", [ + AnalysisPoint(1, "RefMark", 295, 276, 10, 1.0, "#ffff00", "", "", "", "", None, None, None), + AnalysisPoint(2, "RefMark", 386, 257, 10, 1.0, "#ffff00", "", "", "", "", None, None, None), + AnalysisPoint(3, "RefMark", 334, 282, 10, 1.0, "#ffff00", "", "", "", "", None, None, None), + AnalysisPoint(4, "RefMark", 357, 315, 10, 1.0, "#ffff00", "", "", "", "", None, None, None), + AnalysisPoint(5, "RefMark", 327, 334, 10, 1.0, "#ffff00", "", "", "", "", None, None, None), + ]), + ("test/data/x_y_partial.csv", [ + AnalysisPoint(1, "Spot", 295, 276, 10, 1.0, "#ffff00", "", "", "rock", "", None, None, None), + AnalysisPoint(2, "Spot", 386, 257, 10, 1.0, "#ffff00", "", "", "rock", "", None, None, None), + AnalysisPoint(3, "Spot", 334, 282, 10, 1.0, "#ffff00", "", "", "rock", "", None, None, None), + AnalysisPoint(4, "Spot", 357, 315, 10, 1.0, "#ffff00", "", "", "duck", "", None, None, None), + AnalysisPoint(5, "Spot", 327, 334, 10, 1.0, "#ffff00", "", "", "duck", "", None, None, None), + ]), +]) +def test_import_tactool_csv( + tactool: TACtool, + public_index: int, + filepath: str, + expected_points: list[AnalysisPoint], +): + """ + Function to test the functionality of importing a TACtool CSV file. + """ + # Check that the PyQt Table Model data is empty + assert tactool.table_model.analysis_points == [] + + # Set Analysis Point settings that are used where data is missing + tactool.window.update_point_settings( + sample_name="sample_x83", + mount_name="mount_x81", + material="rock", + label="Spot", + diameter=99, + scale=1.0, + colour="#999999", + ) + + # Import the data from the given TACtool CSV file + tactool.window.load_tactool_csv_data(filepath) + + # Iterate through the actual Analysis Points created from the CSV file + # and the calculated Analysis Points in this test + for loaded_point, expected_point in zip(tactool.table_model.analysis_points, expected_points): + # Using list slicing to compare just the public attributes of the Analysis Points, i.e. up to the last 3 + assert expected_point.aslist()[:public_index] == loaded_point.aslist()[:public_index] + + # Click new points + tactool.graphics_view.left_click.emit(111, 111) + + # Check that the ID values continue from the maximum ID value in the CSV file + assert len(tactool.table_model.analysis_points) == 6 + + +def test_export_tactool_csv(tactool: TACtool, tmp_path: Path): + """ + Function to test the functionality of exporting a TACtool CSV file. + """ + # Check that the PyQt Table Model data is empty + assert tactool.table_model.analysis_points == [] + + csv_path = tmp_path / "test.csv" + expected_headers = ["Name", "Type", "X", "Y", "Z", "diameter", "scale", "colour", + "mount_name", "material", "notes"] + expected_data = [ + ["_#001", "RefMark", 101, 101, 0, 10, 1.0, "#ffff00", "", "", ""], + ["_#002", "RefMark", 202, 202, 0, 10, 1.0, "#ffff00", "", "", ""], + ["sample_x83_#003", "Spot", 303, 303, 0, 100, 1.5, "#444444", "mount_x81", "duck", ""], + ] + + # Add 2 Analysis Points + tactool.graphics_view.left_click.emit(101, 101) + tactool.graphics_view.left_click.emit(202, 202) + + # Adjust the settings for the 3rd Analysis Point + tactool.window.update_point_settings( + sample_name="sample_x83", + mount_name="mount_x81", + material="duck", + label="Spot", + diameter=100, + scale=1.5, + colour="#444444", + ) + tactool.graphics_view.left_click.emit(303, 303) + + # Save the data to the given CSV file path + export_tactool_csv( + filepath=csv_path, + headers=tactool.table_model.public_headers, + analysis_points=tactool.table_model.analysis_points, + ) + assert_csv_data(csv_path, expected_headers, expected_data) + + +def assert_csv_data(csv_path: str, expected_headers: list[str], expected_data: list): + """ + Function to assert that the CSV data in the given file matches the given expected data. + """ + with open(csv_path) as csv_file: + # Check that the headers are correct + actual_headers = [item.strip() for item in csv_file.readline().split(",")] + assert actual_headers == expected_headers + + # Check that the Analysis Point data is correct + lines = csv_file.readlines() + # Iterate through the expected Analysis Point data + for index, item in enumerate(expected_data): + # Convert the CSV row into a list + csv_row_data = [item.strip() for item in lines[index].split(",")] + + # Iterate through the CSV Analysis Points + for item_attribute, csv_attribute in zip(item, csv_row_data): + # Check that the attributes match + # Attributes from the expected Analysis Point are converted to a string because + # the raw CSV data will all be a string type + assert csv_attribute == str(item_attribute) diff --git a/test/test_integration.py b/test/test_integration.py index ec5ddc7..7ac3980 100644 --- a/test/test_integration.py +++ b/test/test_integration.py @@ -6,21 +6,11 @@ tactool fixtures start a running QApplication for the context of the test. """ -from pathlib import Path - -import pytest -from PyQt5.QtGui import QPixmap from tactool.main import TACtool -from tactool.analysis_point import ( - AnalysisPoint, - export_tactool_csv, -) - - -PUBLIC_INDEX = len(TACtool([], testing_mode=True).window.table_model.headers) - 3 +from tactool.analysis_point import AnalysisPoint -def test_add_and_remove_points(tactool: TACtool) -> None: +def test_add_and_remove_points(tactool: TACtool, public_index: int): """ Function to test the functionality of adding and removing Analysis Points via mouse clicks. """ @@ -66,7 +56,7 @@ def test_add_and_remove_points(tactool: TACtool) -> None: # Iterate through each actual Analysis Point and compare to expected Analysis Point for index, analysis_point in enumerate(tactool.table_model.analysis_points): # Using list slicing to compare just the public attributes of the Analysis Points, i.e. up to the last 3 - assert analysis_point.aslist()[:PUBLIC_INDEX] == expected_data[index].aslist()[:PUBLIC_INDEX] + assert analysis_point.aslist()[:public_index] == expected_data[index].aslist()[:public_index] # Compare the size of the actual ellipse to the mathematically expected size expected_ellipse = (expected_data[index].diameter * expected_data[index].scale) + offset assert analysis_point._outer_ellipse.boundingRect().width() == expected_ellipse @@ -94,13 +84,13 @@ def test_add_and_remove_points(tactool: TACtool) -> None: # Iterate through each actual Analysis Point and compare to expected Analysis Point for index, analysis_point in enumerate(tactool.table_model.analysis_points): # Using list slicing to compare just the public attributes of the Analysis Points, i.e. up to the last 3 - assert analysis_point.aslist()[:PUBLIC_INDEX] == expected_data[index].aslist()[:PUBLIC_INDEX] + assert analysis_point.aslist()[:public_index] == expected_data[index].aslist()[:public_index] # Compare the size of the actual ellipse to the mathematically expected size expected_ellipse = (expected_data[index].diameter * expected_data[index].scale) + offset assert analysis_point._outer_ellipse.boundingRect().width() == expected_ellipse -def test_clear_points(tactool: TACtool) -> None: +def test_clear_points(tactool: TACtool): """ Function to test the functionality of the Clear Points button. Some points are purposefully overlapping for the test. @@ -132,7 +122,7 @@ def test_clear_points(tactool: TACtool) -> None: assert tactool.table_model.analysis_points == [] -def test_reset_id_values(tactool: TACtool) -> None: +def test_reset_id_values(tactool: TACtool): """ Function to test the functionality of the Reset IDs button. """ @@ -158,7 +148,7 @@ def test_reset_id_values(tactool: TACtool) -> None: assert analysis_point.id == current_id + 1 -def test_reset_settings(tactool: TACtool) -> None: +def test_reset_settings(tactool: TACtool): """ Function to test the functionality of the Reset Settings button. """ @@ -205,235 +195,7 @@ def test_reset_settings(tactool: TACtool) -> None: assert actual_settings == expected_settings -def test_toggle_scaling_mode(tactool: TACtool) -> None: - """ - Function to test the functionality of the scaling mode. - """ - # Check that the SetScaleDialog and the transparent rectangle - # on the PyQt Graphics Scene do not exist - assert tactool.window.set_scale_dialog is None - assert tactool.graphics_scene.scaling_rect is None - # Check that the main input widgets are enabled - for widget in tactool.window.main_input_widgets: - assert widget.isEnabled() is True - assert tactool.graphics_view.disable_analysis_points is False - - # Start the scaling mode - tactool.window.toggle_scaling_mode() - - # Check that the SetScaleDialog and the transparent rectangle - # on the PyQt Graphics Scene exist and are the correct type - assert tactool.window.set_scale_dialog is not None - assert tactool.graphics_scene.scaling_rect is not None - # Check that the main input widgets are disabled - for widget in tactool.window.main_input_widgets: - assert widget.isEnabled() is False - assert tactool.graphics_view.disable_analysis_points is True - - # Set the scale, following the same steps as the user would - tactool.window.set_scale_dialog.scale_value.setText(str(2.0)) - tactool.window.set_scale_dialog.set_scale() - - # Check that the SetScaleDialog and the transparent rectangle - # on the PyQt Graphics Scene do not exist - assert tactool.window.set_scale_dialog is None - assert tactool.graphics_scene.scaling_rect is None - # Check that the main input widgets are enabled - for widget in tactool.window.main_input_widgets: - assert widget.isEnabled() is True - assert tactool.graphics_view.disable_analysis_points is False - - -def test_set_scale(tactool: TACtool) -> None: - """ - Function to test the functionality of setting the scale. - """ - # Set the scale, following the same steps as the user would - scale = 2.0 - tactool.window.toggle_scaling_mode() - tactool.set_scale_dialog.scale_value.setText(str(scale)) - tactool.set_scale_dialog.set_scale() - - # Add some points, these should now have the new scale - tactool.graphics_view.left_click.emit(101, 101) - tactool.graphics_view.left_click.emit(202, 202) - tactool.graphics_view.left_click.emit(303, 303) - - # Iterate through each actual Analysis Point - for analysis_point in tactool.table_model.analysis_points: - # Check that the scale value is equal to expected - assert analysis_point.scale == scale - - -def test_export_image(tactool: TACtool, tmp_path: Path) -> None: - """ - Function to test the functionality of exporting an image. - """ - tmp_image_path = tmp_path / "exported_image.png" - - # Add some Analysis Points - tactool.graphics_view.left_click.emit(101, 101) - tactool.graphics_view.left_click.emit(202, 202) - tactool.graphics_view.left_click.emit(303, 303) - tactool.window.update_point_settings( - sample_name="sample_x83", - mount_name="mount_x81", - material="rock", - label="Spot", - diameter=100, - colour="#ff0000", - ) - tactool.graphics_view.left_click.emit(404, 404) - # The 5th point purposefully goes over the imported image border - tactool.graphics_view.left_click.emit(555, 555) - - # Zoom in on the PyQt Graphics View - factor = 1.25 - tactool.graphics_view._zoom += 1 - tactool.graphics_view.scale(factor, factor) - - # Save the image to the given filepath - tactool.graphics_view.save_image(str(tmp_image_path)) - - # Check that the filepath and the newly saved file exist - assert tmp_image_path.exists() - assert tmp_image_path.is_file() - - # Load the newly created file and the expected image file into a PyQt5 Pixmap - # This allows us to use already imported modules to compare the image sizes - actual_image = QPixmap(str(tmp_image_path)) - expected_image = QPixmap("test/data/exported_image.png") - assert actual_image.size() == expected_image.size() - - -@pytest.mark.parametrize("filepath, expected_points", [ - ("test/data/analysis_points_complete.csv", [ - AnalysisPoint(1, "RefMark", 472, 336, 10, 1.0, "#ffff00", "sample_x83", "mount_x81", "rock", - "this point has padded zeros in the id column", None, None, None), - AnalysisPoint(2, "RefMark", 394, 318, 10, 1.0, "#ffff00", "sample_x83", "mount_x81", - "rock", "", None, None, None), - AnalysisPoint(3, "RefMark", 469, 268, 10, 1.0, "#ffff00", "sample_x83", "mount_x81", - "rock", "point3", None, None, None), - AnalysisPoint(4, "Spot", 527, 340, 10, 1.0, "#204a87", "sample_x67", "mount_x15", "duck", - "point4 with whitespace, and comma", None, None, None), - AnalysisPoint(5, "Spot", 362, 380, 15, 1.0, "#204a87", "sample_x67", "mount_x15", "duck", - "point5 with whitespace", None, None, None), - ]), - ("test/data/id_x_y_partial.csv", [ - AnalysisPoint(1, "RefMark", 295, 276, 10, 1.0, "#ffff00", "", "", "", "", None, None, None), - AnalysisPoint(2, "RefMark", 386, 257, 10, 1.0, "#ffff00", "", "", "", "", None, None, None), - AnalysisPoint(3, "RefMark", 334, 282, 10, 1.0, "#ffff00", "", "", "", "", None, None, None), - AnalysisPoint(4, "RefMark", 357, 315, 10, 1.0, "#ffff00", "", "", "", "", None, None, None), - AnalysisPoint(5, "RefMark", 327, 334, 10, 1.0, "#ffff00", "", "", "", "", None, None, None), - ]), - ("test/data/x_y_partial.csv", [ - AnalysisPoint(1, "Spot", 295, 276, 10, 1.0, "#ffff00", "", "", "rock", "", None, None, None), - AnalysisPoint(2, "Spot", 386, 257, 10, 1.0, "#ffff00", "", "", "rock", "", None, None, None), - AnalysisPoint(3, "Spot", 334, 282, 10, 1.0, "#ffff00", "", "", "rock", "", None, None, None), - AnalysisPoint(4, "Spot", 357, 315, 10, 1.0, "#ffff00", "", "", "duck", "", None, None, None), - AnalysisPoint(5, "Spot", 327, 334, 10, 1.0, "#ffff00", "", "", "duck", "", None, None, None), - ]), -]) -def test_import_tactool_csv(tactool: TACtool, filepath: str, expected_points: list[AnalysisPoint]) -> None: - """ - Function to test the functionality of importing a TACtool CSV file. - """ - # Check that the PyQt Table Model data is empty - assert tactool.table_model.analysis_points == [] - - # Set Analysis Point settings that are used where data is missing - tactool.window.update_point_settings( - sample_name="sample_x83", - mount_name="mount_x81", - material="rock", - label="Spot", - diameter=99, - scale=1.0, - colour="#999999", - ) - - # Import the data from the given TACtool CSV file - tactool.window.load_tactool_csv_data(filepath) - - # Iterate through the actual Analysis Points created from the CSV file - # and the calculated Analysis Points in this test - for loaded_point, expected_point in zip(tactool.table_model.analysis_points, expected_points): - # Using list slicing to compare just the public attributes of the Analysis Points, i.e. up to the last 3 - assert expected_point.aslist()[:PUBLIC_INDEX] == loaded_point.aslist()[:PUBLIC_INDEX] - - # Click new points - tactool.graphics_view.left_click.emit(111, 111) - - # Check that the ID values continue from the maximum ID value in the CSV file - assert len(tactool.table_model.analysis_points) == 6 - - -def test_export_tactool_csv(tactool: TACtool, tmp_path: Path) -> None: - """ - Function to test the functionality of exporting a TACtool CSV file. - """ - # Check that the PyQt Table Model data is empty - assert tactool.table_model.analysis_points == [] - - csv_path = tmp_path / "test.csv" - expected_headers = ["Name", "Type", "X", "Y", "Z", "diameter", "scale", "colour", - "mount_name", "material", "notes"] - expected_data = [ - ["_#001", "RefMark", 101, 101, 0, 10, 1.0, "#ffff00", "", "", ""], - ["_#002", "RefMark", 202, 202, 0, 10, 1.0, "#ffff00", "", "", ""], - ["sample_x83_#003", "Spot", 303, 303, 0, 100, 1.5, "#444444", "mount_x81", "duck", ""], - ] - - # Add 2 Analysis Points - tactool.graphics_view.left_click.emit(101, 101) - tactool.graphics_view.left_click.emit(202, 202) - - # Adjust the settings for the 3rd Analysis Point - tactool.window.update_point_settings( - sample_name="sample_x83", - mount_name="mount_x81", - material="duck", - label="Spot", - diameter=100, - scale=1.5, - colour="#444444", - ) - tactool.graphics_view.left_click.emit(303, 303) - - # Save the data to the given CSV file path - export_tactool_csv( - filepath=csv_path, - headers=tactool.table_model.public_headers, - analysis_points=tactool.table_model.analysis_points, - ) - assert_csv_data(csv_path, expected_headers, expected_data) - - -def assert_csv_data(csv_path: str, expected_headers: list[str], expected_data: list) -> None: - """ - Function to assert that the CSV data in the given file matches the given expected data. - """ - with open(csv_path) as csv_file: - # Check that the headers are correct - actual_headers = [item.strip() for item in csv_file.readline().split(",")] - assert actual_headers == expected_headers - - # Check that the Analysis Point data is correct - lines = csv_file.readlines() - # Iterate through the expected Analysis Point data - for index, item in enumerate(expected_data): - # Convert the CSV row into a list - csv_row_data = [item.strip() for item in lines[index].split(",")] - - # Iterate through the CSV Analysis Points - for item_attribute, csv_attribute in zip(item, csv_row_data): - # Check that the attributes match - # Attributes from the expected Analysis Point are converted to a string because - # the raw CSV data will all be a string type - assert csv_attribute == str(item_attribute) - - -def test_reference_point_hint(tactool: TACtool) -> None: +def test_reference_point_hint(tactool: TACtool): """ Function to test the functionality of the RefMark Points reminder in the Status Bar. """ @@ -469,41 +231,3 @@ def test_reference_point_hint(tactool: TACtool) -> None: ref_points_status = tactool.window.status_bar_messages["ref_points"]["status"] assert ref_points_status is not None assert ref_points_status in tactool.window.status_bar.children() - - -def test_scale_hint(tactool: TACtool) -> None: - """ - Function to test the functionality of the Set Scale reminder in the Status Bar. - """ - # Check Set Scale hint is not visible - set_scale_status = tactool.window.status_bar_messages["set_scale"]["status"] - assert set_scale_status is None - assert set_scale_status not in tactool.window.status_bar.children() - - # Add some points by clicking - tactool.graphics_view.left_click.emit(101, 101) - tactool.graphics_view.left_click.emit(202, 202) - tactool.graphics_view.left_click.emit(303, 303) - - # Check Set Scale hint is visible - set_scale_status = tactool.window.status_bar_messages["set_scale"]["status"] - assert set_scale_status is not None - assert set_scale_status in tactool.window.status_bar.children() - - # Set the scale, following the same steps as the user would - tactool.window.toggle_scaling_mode() - tactool.set_scale_dialog.scale_value.setText(str(2.0)) - tactool.set_scale_dialog.set_scale() - - # Check Set Scale hint is not visible - set_scale_status = tactool.window.status_bar_messages["set_scale"]["status"] - assert set_scale_status is None - assert set_scale_status not in tactool.window.status_bar.children() - - # Reset the Scale value to the default value - tactool.window.reset_settings() - - # Check Set Scale hint is visible - set_scale_status = tactool.window.status_bar_messages["set_scale"]["status"] - assert set_scale_status is not None - assert set_scale_status in tactool.window.status_bar.children() diff --git a/test/test_model.py b/test/test_model.py index e5d1cc1..33375e5 100644 --- a/test/test_model.py +++ b/test/test_model.py @@ -5,11 +5,8 @@ """ import pytest -from tactool.main import TACtool -from tactool.table_model import TableModel, AnalysisPoint - - -PUBLIC_INDEX = len(TACtool([], testing_mode=True).window.table_model.headers) - 3 +from tactool.analysis_point import AnalysisPoint +from tactool.table_model import TableModel @pytest.mark.parametrize("expected_data, match_status", [ @@ -48,7 +45,11 @@ True), ] ) -def test_analysis_point_public_attributes_match(expected_data: AnalysisPoint, match_status: bool) -> None: +def test_analysis_point_public_attributes_match( + public_index: int, + expected_data: AnalysisPoint, + match_status: bool, +): """ Function to test the functionality of comparing Analysis Point public attributes. For this, only the public attributes must match the existing Analysis Point. @@ -56,10 +57,10 @@ def test_analysis_point_public_attributes_match(expected_data: AnalysisPoint, ma analysis_point = AnalysisPoint(1, "RefMark", 123, 456, 10, 1.0, "#ffff00", "sample_x67", "mount_x15", "duck", "note1", None, None, None) # Compare just the public attributes of the points, i.e. up to the last 3 - assert (analysis_point.aslist()[:PUBLIC_INDEX] == expected_data.aslist()[:PUBLIC_INDEX]) is match_status + assert (analysis_point.aslist()[:public_index] == expected_data.aslist()[:public_index]) is match_status -def test_model() -> None: +def test_model(model: TableModel): """ Function to test the functionality of the PyQt Table Model of TACtool. """ @@ -71,7 +72,6 @@ def test_model() -> None: [3, "Spot", 123, 456, 10, 1.0, "#ffff00", "sample_x67", "mount_x15", "duck", "note3", "outer_ellipse3", "inner_ellipse3", "label_item3"] ] - model = TableModel() # Check that the PyQt Table Model is empty with the correct headers assert model._data == [] diff --git a/test/test_scaling.py b/test/test_scaling.py new file mode 100644 index 0000000..9278ffe --- /dev/null +++ b/test/test_scaling.py @@ -0,0 +1,99 @@ +from tactool.main import TACtool + + +def test_toggle_scaling_mode(tactool: TACtool): + """ + Function to test the functionality of the scaling mode. + """ + # Check that the SetScaleDialog and the transparent rectangle + # on the PyQt Graphics Scene do not exist + assert tactool.window.set_scale_dialog is None + assert tactool.graphics_scene.scaling_rect is None + # Check that the main input widgets are enabled + for widget in tactool.window.main_input_widgets: + assert widget.isEnabled() is True + assert tactool.graphics_view.disable_analysis_points is False + + # Start the scaling mode + tactool.window.toggle_scaling_mode() + + # Check that the SetScaleDialog and the transparent rectangle + # on the PyQt Graphics Scene exist and are the correct type + assert tactool.window.set_scale_dialog is not None + assert tactool.graphics_scene.scaling_rect is not None + # Check that the main input widgets are disabled + for widget in tactool.window.main_input_widgets: + assert widget.isEnabled() is False + assert tactool.graphics_view.disable_analysis_points is True + + # Set the scale, following the same steps as the user would + tactool.window.set_scale_dialog.scale_value.setText(str(2.0)) + tactool.window.set_scale_dialog.set_scale() + + # Check that the SetScaleDialog and the transparent rectangle + # on the PyQt Graphics Scene do not exist + assert tactool.window.set_scale_dialog is None + assert tactool.graphics_scene.scaling_rect is None + # Check that the main input widgets are enabled + for widget in tactool.window.main_input_widgets: + assert widget.isEnabled() is True + assert tactool.graphics_view.disable_analysis_points is False + + +def test_set_scale(tactool: TACtool): + """ + Function to test the functionality of setting the scale. + """ + # Set the scale, following the same steps as the user would + scale = 2.0 + tactool.window.toggle_scaling_mode() + tactool.set_scale_dialog.scale_value.setText(str(scale)) + tactool.set_scale_dialog.set_scale() + + # Add some points, these should now have the new scale + tactool.graphics_view.left_click.emit(101, 101) + tactool.graphics_view.left_click.emit(202, 202) + tactool.graphics_view.left_click.emit(303, 303) + + # Iterate through each actual Analysis Point + for analysis_point in tactool.table_model.analysis_points: + # Check that the scale value is equal to expected + assert analysis_point.scale == scale + + +def test_scale_hint(tactool: TACtool): + """ + Function to test the functionality of the Set Scale reminder in the Status Bar. + """ + # Check Set Scale hint is not visible + set_scale_status = tactool.window.status_bar_messages["set_scale"]["status"] + assert set_scale_status is None + assert set_scale_status not in tactool.window.status_bar.children() + + # Add some points by clicking + tactool.graphics_view.left_click.emit(101, 101) + tactool.graphics_view.left_click.emit(202, 202) + tactool.graphics_view.left_click.emit(303, 303) + + # Check Set Scale hint is visible + set_scale_status = tactool.window.status_bar_messages["set_scale"]["status"] + assert set_scale_status is not None + assert set_scale_status in tactool.window.status_bar.children() + + # Set the scale, following the same steps as the user would + tactool.window.toggle_scaling_mode() + tactool.set_scale_dialog.scale_value.setText(str(2.0)) + tactool.set_scale_dialog.set_scale() + + # Check Set Scale hint is not visible + set_scale_status = tactool.window.status_bar_messages["set_scale"]["status"] + assert set_scale_status is None + assert set_scale_status not in tactool.window.status_bar.children() + + # Reset the Scale value to the default value + tactool.window.reset_settings() + + # Check Set Scale hint is visible + set_scale_status = tactool.window.status_bar_messages["set_scale"]["status"] + assert set_scale_status is not None + assert set_scale_status in tactool.window.status_bar.children() From 994d06ae10f82ab9029d4d5e1d201d90c6da4403 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Thu, 3 Aug 2023 16:16:34 +0100 Subject: [PATCH 037/105] Move rectangle toggling to disabling main widgets method --- tactool/graphics_view.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tactool/graphics_view.py b/tactool/graphics_view.py index a800969..d4e5b2d 100644 --- a/tactool/graphics_view.py +++ b/tactool/graphics_view.py @@ -282,7 +282,6 @@ def toggle_scaling_mode(self) -> None: Toggle the scaling mode Graphics Scene settings. """ self.scaling_mode = not self.scaling_mode - self.graphics_scene.toggle_transparent_window(self._image) if self.scaling_mode: self.logger.debug("Activating scaling mode") From 19f10ae0d81e5a3666996b0fdf878d5b9ca89e10 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Thu, 3 Aug 2023 16:21:37 +0100 Subject: [PATCH 038/105] Update show_message dialog to only open if not in testing_mode --- tactool/window.py | 47 +++++++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/tactool/window.py b/tactool/window.py index 3251d0e..8400e16 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -713,6 +713,7 @@ def toggle_main_input_widgets(self, enable: bool) -> None: self.logger.debug("Toggling main widgets to state: %s", enable) for widget in self.main_input_widgets: widget.setEnabled(enable) + self.graphics_scene.toggle_transparent_window(self.graphics_view._image) self.graphics_view.disable_analysis_points = not enable @@ -756,7 +757,6 @@ def toggle_recoordinate_dialog(self) -> None: self.recoordinate_dialog = RecoordinateDialog(self.testing_mode, self.table_model.reference_points) # Disable main window input widgets self.toggle_main_input_widgets(False) - self.graphics_scene.toggle_transparent_window(self.graphics_view._image) # Move the Dialog box to be at the top left corner of the main window main_window_pos = self.pos() self.recoordinate_dialog.move(main_window_pos.x() + 50, main_window_pos.y() + 50) @@ -770,7 +770,6 @@ def toggle_recoordinate_dialog(self) -> None: self.recoordinate_dialog = None # Enable main window widgets self.toggle_main_input_widgets(True) - self.graphics_scene.toggle_transparent_window(self.graphics_view._image) else: self.logger.error("Missing 3 references points for recoordination") self.show_message( @@ -796,26 +795,30 @@ def show_message(self, title: str, message: str, type: str) -> bool: """ Show a given message to the user in a PyQt QMessageBox. """ - # Creating the PyQt Message box and formatting it - widget = QMessageBox() - widget.setWindowTitle(title) - widget.setText(message) - widget.setStandardButtons(QMessageBox.Ok) - - # Setting the type of message - if type == "warning": - widget.setIcon(QMessageBox.Warning) - elif type == "information": - widget.setIcon(QMessageBox.Information) - elif type == "question": - widget.setIcon(QMessageBox.Question) - widget.setStandardButtons(QMessageBox.Yes | QMessageBox.Cancel) - - # Show the message box - message_box = widget.exec_() - # If the user presses the Cancel button on the message box - if message_box == QMessageBox.Cancel: - return False + # In testing mode, the user cannot select an option for the message dialog + if not self.testing_mode: + # Creating the PyQt Message box and formatting it + self.current_message = QMessageBox() + self.current_message.setWindowTitle(title) + self.current_message.setText(message) + self.current_message.setStandardButtons(QMessageBox.Ok) + + # Setting the type of message + if type == "warning": + self.current_message.setIcon(QMessageBox.Warning) + elif type == "information": + self.current_message.setIcon(QMessageBox.Information) + elif type == "question": + self.current_message.setIcon(QMessageBox.Question) + self.current_message.setStandardButtons(QMessageBox.Yes | QMessageBox.Cancel) + + # Show the message box + message_box = self.current_message.exec_() + + self.current_message = None + # If the user presses the Cancel button on the message box + if message_box == QMessageBox.Cancel: + return False return True From 6515ee4ebe33b86f635ddf21692dbecaa45422ab Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Thu, 3 Aug 2023 16:21:56 +0100 Subject: [PATCH 039/105] Update toggle scaling mode formatting --- test/test_scaling.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/test/test_scaling.py b/test/test_scaling.py index 9278ffe..d244b82 100644 --- a/test/test_scaling.py +++ b/test/test_scaling.py @@ -5,39 +5,36 @@ def test_toggle_scaling_mode(tactool: TACtool): """ Function to test the functionality of the scaling mode. """ - # Check that the SetScaleDialog and the transparent rectangle - # on the PyQt Graphics Scene do not exist + # Check that the SetScaleDialog does not exist assert tactool.window.set_scale_dialog is None - assert tactool.graphics_scene.scaling_rect is None # Check that the main input widgets are enabled for widget in tactool.window.main_input_widgets: assert widget.isEnabled() is True assert tactool.graphics_view.disable_analysis_points is False + assert tactool.graphics_scene.scaling_rect is None # Start the scaling mode tactool.window.toggle_scaling_mode() - # Check that the SetScaleDialog and the transparent rectangle - # on the PyQt Graphics Scene exist and are the correct type + # Check that the SetScaleDialog does exist assert tactool.window.set_scale_dialog is not None - assert tactool.graphics_scene.scaling_rect is not None # Check that the main input widgets are disabled for widget in tactool.window.main_input_widgets: assert widget.isEnabled() is False assert tactool.graphics_view.disable_analysis_points is True + assert tactool.graphics_scene.scaling_rect is not None # Set the scale, following the same steps as the user would tactool.window.set_scale_dialog.scale_value.setText(str(2.0)) tactool.window.set_scale_dialog.set_scale() - # Check that the SetScaleDialog and the transparent rectangle - # on the PyQt Graphics Scene do not exist + # Check that the SetScaleDialog does not exist assert tactool.window.set_scale_dialog is None - assert tactool.graphics_scene.scaling_rect is None # Check that the main input widgets are enabled for widget in tactool.window.main_input_widgets: assert widget.isEnabled() is True assert tactool.graphics_view.disable_analysis_points is False + assert tactool.graphics_scene.scaling_rect is None def test_set_scale(tactool: TACtool): From 10071f77d88430fae48c250481469526d41cfcda Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Thu, 3 Aug 2023 16:26:29 +0100 Subject: [PATCH 040/105] Add cancel button to recoordinate dialog --- tactool/recoordinate_dialog.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/tactool/recoordinate_dialog.py b/tactool/recoordinate_dialog.py index f748e7c..ea06d21 100644 --- a/tactool/recoordinate_dialog.py +++ b/tactool/recoordinate_dialog.py @@ -9,6 +9,7 @@ from PyQt5.QtWidgets import ( QDialog, QFileDialog, + QHBoxLayout, QLabel, QLineEdit, QPushButton, @@ -63,13 +64,16 @@ def setup_ui_elements(self) -> None: self.input_csv_button = QPushButton("Select Input CSV", self) self.input_csv_filepath_label = QLineEdit("") self.input_csv_filepath_label.setDisabled(True) + output_csv_label = QLabel("Output CSV") self.output_csv_button = QPushButton("Select Output CSV", self) self.output_csv_filepath_label = QLineEdit("") self.output_csv_filepath_label.setDisabled(True) - self.recoordinate_button = QPushButton("Recoordinate and Export CSV") - # Arrange and set the layout + self.recoordinate_button = QPushButton("Recoordinate and Export") + self.cancel_button = QPushButton("Cancel", self) + + # Arrange the main layout layout = QVBoxLayout() layout.addWidget(input_csv_label) layout.addWidget(self.input_csv_button) @@ -77,7 +81,14 @@ def setup_ui_elements(self) -> None: layout.addWidget(output_csv_label) layout.addWidget(self.output_csv_button) layout.addWidget(self.output_csv_filepath_label) - layout.addWidget(self.recoordinate_button) + + # Add the final 2 buttons alongside eachother + bottom_button_layout = QHBoxLayout() + bottom_button_layout.addWidget(self.recoordinate_button) + bottom_button_layout.addWidget(self.cancel_button) + layout.addLayout(bottom_button_layout) + + # Set the layout self.setLayout(layout) @@ -89,6 +100,7 @@ def connect_signals_and_slots(self) -> None: self.input_csv_button.clicked.connect(self.get_input_csv) self.output_csv_button.clicked.connect(self.set_output_csv) self.recoordinate_button.clicked.connect(self.get_export_and_recoordinate) + self.cancel_button.clicked.connect(self.closeEvent) def get_input_csv(self) -> None: From b109686ee09ccf959b49939f11613f4c50141963 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Thu, 3 Aug 2023 16:26:39 +0100 Subject: [PATCH 041/105] Add toggle recoordinate dialog test --- test/test_transformation.py | 55 +++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/test/test_transformation.py b/test/test_transformation.py index 799e940..0822bb8 100644 --- a/test/test_transformation.py +++ b/test/test_transformation.py @@ -65,6 +65,61 @@ def test_affine_transform_matrix(): np.testing.assert_array_almost_equal(matrix, expected, decimal=10) +def test_toggle_recoordinate_dialog(tactool: TACtool): + # close recoord window + # check that toggling off works, main widgets, grey rect, disable graphics scene points + + # Check that the RecoordinateDialog does not exist + assert tactool.window.recoordinate_dialog is None + # Check that the main input widgets are enabled + for widget in tactool.window.main_input_widgets: + assert widget.isEnabled() is True + assert tactool.graphics_view.disable_analysis_points is False + assert tactool.graphics_scene.scaling_rect is None + + # Add 2 RefMark points + tactool.graphics_view.left_click.emit(336, 472) + tactool.graphics_view.left_click.emit(318, 394) + + # Try to start the recoordination dialog + # This should not work because 3 RefMark points are needed + # and currently there are only 2 + tactool.window.toggle_recoordinate_dialog() + + # Check that the RecoordinateDialog does not exist + assert tactool.window.recoordinate_dialog is None + # Check that the main input widgets are enabled + for widget in tactool.window.main_input_widgets: + assert widget.isEnabled() is True + assert tactool.graphics_view.disable_analysis_points is False + assert tactool.graphics_scene.scaling_rect is None + + # Add the 3rd RefMark point + tactool.graphics_view.left_click.emit(268, 469) + + # Toggle the recoordinate dialog, this should now work + tactool.window.toggle_recoordinate_dialog() + + # Check that the RecoordinateDialog does exist + assert tactool.window.recoordinate_dialog is not None + # Check that the main input widgets are disabled + for widget in tactool.window.main_input_widgets: + assert widget.isEnabled() is False + assert tactool.graphics_view.disable_analysis_points is True + assert tactool.graphics_scene.scaling_rect is not None + + # Close the RecoordinateDialog + tactool.recoordinate_dialog.cancel_button.click() + + # Check that the RecoordinateDialog does not exist + assert tactool.window.recoordinate_dialog is None + # Check that the main input widgets are enabled + for widget in tactool.window.main_input_widgets: + assert widget.isEnabled() is True + assert tactool.graphics_view.disable_analysis_points is False + assert tactool.graphics_scene.scaling_rect is None + + @pytest.mark.parametrize( ["input_csv", "expected_coordinates", "recoordinate_args", "non_coord_headers"], [ From ddc7d9dde9f280dfcdd379a4a93ecdb002b6ae41 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Fri, 11 Aug 2023 10:45:16 +0100 Subject: [PATCH 042/105] Add typehint for logger to LoggerMixin --- tactool/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tactool/utils.py b/tactool/utils.py index b5c8636..77948e5 100644 --- a/tactool/utils.py +++ b/tactool/utils.py @@ -17,7 +17,7 @@ class LoggerMixin: Logger class to give each class of the TACtool application a built-in logger. """ def __init__(self): - self.logger = logging.getLogger(self.__class__.__name__) + self.logger: logging.Logger = logging.getLogger(self.__class__.__name__) @staticmethod From f5f8411f29e5586b2239ad057022e6ae97cdfe60 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Fri, 11 Aug 2023 12:10:34 +0100 Subject: [PATCH 043/105] Update recoordination process to invert x axis dest points for origin change --- tactool/recoordinate_dialog.py | 26 +++++++++++++++++++++++--- tactool/window.py | 6 +++++- test/test_transformation.py | 7 ++++--- 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/tactool/recoordinate_dialog.py b/tactool/recoordinate_dialog.py index ea06d21..eae285f 100644 --- a/tactool/recoordinate_dialog.py +++ b/tactool/recoordinate_dialog.py @@ -5,6 +5,7 @@ from PyQt5.QtCore import ( pyqtSignal, Qt, + QSize, ) from PyQt5.QtWidgets import ( QDialog, @@ -35,10 +36,16 @@ class RecoordinateDialog(QDialog, LoggerMixin): # Used for showing messages with methods from the main window show_message = pyqtSignal(str, str, str) - def __init__(self, testing_mode: bool, ref_points: list[AnalysisPoint]) -> None: + def __init__( + self, + testing_mode: bool, + ref_points: list[AnalysisPoint], + image_size: QSize, + ) -> None: super().__init__() self.testing_mode = testing_mode self.ref_points = ref_points + self.image_size = image_size # Setting the Dialog Box settings self.setWindowTitle("Recoordination") @@ -155,6 +162,7 @@ def recoordinate_sem_points( self, input_csv: str, output_csv: str, + invert_x_axis_dest: bool = True, x_header: str = "Laser Ablation Centre X", y_header: str = "Laser Ablation Centre Y", ref_col: str = "Mineral Classification", @@ -165,10 +173,17 @@ def recoordinate_sem_points( Saves the resulting SEM data to the given output CSV file. Returns a bool which signals if the recoordination successfully completed. + invert_x_axis_dest determines if the X axis coordinate values of the + destination coordinates should be inverted. + This is used because the origin of the PyQt GraphicsScene is at the top left, + but the origin of the SEM coordinates of at the top right. + Therefore, we use the size of the image to invert the X axis origin of the destination coordinates + to account for this difference. + The x_header, y_header, ref_col and ref_label values can be changed to allow recoordination of CSV files with different headers and data. For example, using the following values would allow recoordination for TACtool CSV files: - x_header="X", y_header="Y", ref_col="Type", ref_label="RefMark" + invert_x_axis_dest=False, x_header="X", y_header="Y", ref_col="Type", ref_label="RefMark" """ # Parse the SEM CSV data required_sem_headers = [x_header, y_header] @@ -194,7 +209,12 @@ def recoordinate_sem_points( for item in point_dicts if item[ref_col] == ref_label ] - dest = [(point.x, point.y) for point in self.ref_points] + # Check if the destination points (from TACtool) need the y axis inverted to change the origin + dest = [ + (self.image_size.width() - point.x, point.y) + if invert_x_axis_dest else (point.x, point.y) + for point in self.ref_points + ] matrix = affine_transform_matrix(source=source, dest=dest) # Apply the matrix diff --git a/tactool/window.py b/tactool/window.py index 8400e16..9af08db 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -754,7 +754,11 @@ def toggle_recoordinate_dialog(self) -> None: # If the program is not in recoordination mode if self.recoordinate_dialog is None: # Create the Recoordinate Dialog box - self.recoordinate_dialog = RecoordinateDialog(self.testing_mode, self.table_model.reference_points) + self.recoordinate_dialog = RecoordinateDialog( + testing_mode=self.testing_mode, + ref_points=self.table_model.reference_points, + image_size=self.graphics_view._image.pixmap().size(), + ) # Disable main window input widgets self.toggle_main_input_widgets(False) # Move the Dialog box to be at the top left corner of the main window diff --git a/test/test_transformation.py b/test/test_transformation.py index 0822bb8..54ef29a 100644 --- a/test/test_transformation.py +++ b/test/test_transformation.py @@ -126,13 +126,14 @@ def test_toggle_recoordinate_dialog(tactool: TACtool): ( "test/data/analysis_points_complete.csv", [(336, 472), (318, 394), (268, 469), (340, 527), (380, 362)], - {"x_header": "X", "y_header": "Y", "ref_col": "Type", "ref_label": "RefMark"}, + {"invert_x_axis_dest": False, "x_header": "X", "y_header": "Y", + "ref_col": "Type", "ref_label": "RefMark"}, ["Name", "Type", "diameter", "scale", "colour", "mount_name", "material", "notes"], ), ( "test/data/SEM_co-ordinate_import_test_set.csv", - [(336, 472), (318, 394), (268, 469), (271, 458), (287, 483), (309, 466), (320, 458), (332, 477)], - {"x_header": "Laser Ablation Centre X", "y_header": "Laser Ablation Centre Y", + [(460, 472), (478, 394), (528, 469), (525, 458), (509, 483), (487, 466), (476, 458), (464, 477)], + {"invert_x_axis_dest": True, "x_header": "Laser Ablation Centre X", "y_header": "Laser Ablation Centre Y", "ref_col": "Mineral Classification", "ref_label": "Fiducial"}, ["Particle ID", "Mineral Classification", "Effective Diameter m", "Feret Max Diameter m", "Feret Min Diameter m", "F (N)", "Cl (N)"], From 76cbd3d31236062fcc68e955f22e4528fa84e787 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Fri, 11 Aug 2023 14:07:04 +0100 Subject: [PATCH 044/105] Only pass the first 3 reference points to the recoordination dialog --- tactool/window.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tactool/window.py b/tactool/window.py index 9af08db..a2803fa 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -756,7 +756,8 @@ def toggle_recoordinate_dialog(self) -> None: # Create the Recoordinate Dialog box self.recoordinate_dialog = RecoordinateDialog( testing_mode=self.testing_mode, - ref_points=self.table_model.reference_points, + # Pass just the first 3 reference points + ref_points=self.table_model.reference_points[:3], image_size=self.graphics_view._image.pixmap().size(), ) # Disable main window input widgets From 25eee3b24f80f63c48bc04e63275a967fd0026e3 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Fri, 11 Aug 2023 14:08:29 +0100 Subject: [PATCH 045/105] Add current_message to window __init__ --- tactool/window.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tactool/window.py b/tactool/window.py index a2803fa..4118a29 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -72,6 +72,7 @@ def __init__(self, testing_mode: bool) -> None: self.table_view = TableView(self.table_model) self.set_scale_dialog: Optional[SetScaleDialog] = None self.recoordinate_dialog: Optional[RecoordinateDialog] = None + self.current_message: Optional[QMessageBox] = None self.setup_ui_elements() self.connect_signals_and_slots() self.status_bar_messages = self.create_status_bar_messages() From 7c1a0678b8cb1b75ea49954b27816036e620fda4 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Fri, 11 Aug 2023 14:10:30 +0100 Subject: [PATCH 046/105] Add warning message when recoordinated points extend the current image boundary --- tactool/recoordinate_dialog.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/tactool/recoordinate_dialog.py b/tactool/recoordinate_dialog.py index eae285f..cd3f456 100644 --- a/tactool/recoordinate_dialog.py +++ b/tactool/recoordinate_dialog.py @@ -218,16 +218,34 @@ def recoordinate_sem_points( matrix = affine_transform_matrix(source=source, dest=dest) # Apply the matrix + # Track if any of the new points extend the image boundary + extends_boundary = False for idx, item in enumerate(point_dicts): point = (item[x_header], item[y_header]) - new_point = affine_transform_point(matrix=matrix, point=point) - point_dicts[idx][x_header], point_dicts[idx][y_header] = new_point - self.logger.debug("Transformed point %s to %s", point, new_point) + new_x, new_y = affine_transform_point(matrix=matrix, point=point) + point_dicts[idx][x_header] = new_x + point_dicts[idx][y_header] = new_y + # Check if the new point extends the image boundary + if new_x > self.image_size.height() or new_x < 0 or new_y > self.image_size.width() or new_y < 0: + extends_boundary = True + + self.logger.debug("Transformed point %s to %s", point, (new_x, new_y)) self.logger.info("Transformed %s points", len(point_dicts)) # Export the new points to the output CSV self.logger.info("Saving recoordination results to: %s", output_csv) export_sem_csv(filepath=output_csv, headers=csv_headers, points=point_dicts) + + # Create a message informing the user that the recoordinated points extend the image boundary + if extends_boundary: + message = "At least 1 of the recoordinated points goes beyond the current image boundary" + self.logger.warning(message) + self.show_message.emit( + "Recoordination Warning", + message, + "warning", + ) + return True From d382163b6bc4a3dd0e81547d07c728f13b3af8a5 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Fri, 11 Aug 2023 14:13:33 +0100 Subject: [PATCH 047/105] Update show_message type checking process --- tactool/window.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/tactool/window.py b/tactool/window.py index 4118a29..90762ad 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -809,12 +809,14 @@ def show_message(self, title: str, message: str, type: str) -> bool: self.current_message.setText(message) self.current_message.setStandardButtons(QMessageBox.Ok) - # Setting the type of message - if type == "warning": - self.current_message.setIcon(QMessageBox.Warning) - elif type == "information": - self.current_message.setIcon(QMessageBox.Information) - elif type == "question": + # Set the type of message + type_dict = { + "warning": QMessageBox.Warning, + "information": QMessageBox.Information, + "question": QMessageBox.Question, + } + self.current_message.setIcon(type_dict[type]) + if type == "question": self.current_message.setIcon(QMessageBox.Question) self.current_message.setStandardButtons(QMessageBox.Yes | QMessageBox.Cancel) From 9234c70a4bb9cc9d60daa9fe112378eb945f771d Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Fri, 11 Aug 2023 14:20:17 +0100 Subject: [PATCH 048/105] Move only 3 ref points logic to recoordination dialog and apply to source and dest --- tactool/recoordinate_dialog.py | 5 +++-- tactool/window.py | 3 +-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tactool/recoordinate_dialog.py b/tactool/recoordinate_dialog.py index cd3f456..807e327 100644 --- a/tactool/recoordinate_dialog.py +++ b/tactool/recoordinate_dialog.py @@ -203,18 +203,19 @@ def recoordinate_sem_points( # Calculate the matrix self.logger.debug("Calculating recoordination matrix") + # For source and dest points, only use the first 3 reference points # Format the source and dest points into lists of tuples of x and y values source = [ (item[x_header], item[y_header]) for item in point_dicts if item[ref_col] == ref_label - ] + ][:3] # Check if the destination points (from TACtool) need the y axis inverted to change the origin dest = [ (self.image_size.width() - point.x, point.y) if invert_x_axis_dest else (point.x, point.y) for point in self.ref_points - ] + ][:3] matrix = affine_transform_matrix(source=source, dest=dest) # Apply the matrix diff --git a/tactool/window.py b/tactool/window.py index 90762ad..dae6cba 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -757,8 +757,7 @@ def toggle_recoordinate_dialog(self) -> None: # Create the Recoordinate Dialog box self.recoordinate_dialog = RecoordinateDialog( testing_mode=self.testing_mode, - # Pass just the first 3 reference points - ref_points=self.table_model.reference_points[:3], + ref_points=self.table_model.reference_points, image_size=self.graphics_view._image.pixmap().size(), ) # Disable main window input widgets From acfc75e4da99dbe923847cf158dc2db3f4a080ad Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Fri, 11 Aug 2023 14:20:57 +0100 Subject: [PATCH 049/105] Add new recoordination test cases with 4 ref points --- .../data/SEM_co-ordinate_import_test_set_4_refs.csv | 10 ++++++++++ test/test_transformation.py | 13 ++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 test/data/SEM_co-ordinate_import_test_set_4_refs.csv diff --git a/test/data/SEM_co-ordinate_import_test_set_4_refs.csv b/test/data/SEM_co-ordinate_import_test_set_4_refs.csv new file mode 100644 index 0000000..355c642 --- /dev/null +++ b/test/data/SEM_co-ordinate_import_test_set_4_refs.csv @@ -0,0 +1,10 @@ +Particle ID,Mineral Classification,Laser Ablation Centre X,Laser Ablation Centre Y,Effective Diameter m,Feret Max Diameter m,Feret Min Diameter m,F (N),Cl (N) +A,Fiducial,91.576,67.762,,,,, +B,Fiducial,86.01,55.893,,,,, +C,Fiducial,98.138,49.417,,,,, +D,Fiducial,90.432,62.384,,,,, +509,Apatite,96.764747,49.303754,56.85,70.99,52.98,,1.51 +577,Apatite,97.520798,55.785059,104.12,160.72,81.76,,1.32 +662,Apatite,93.746436,60.03264,49.1,59.89,42.98,,2.63 +705,Apatite,91.770031,62.312733,41.5,58.29,33.49,, +759,Apatite,92.415936,67.080603,44.62,63.02,37.54,,0.69 diff --git a/test/test_transformation.py b/test/test_transformation.py index 54ef29a..4b213f7 100644 --- a/test/test_transformation.py +++ b/test/test_transformation.py @@ -138,6 +138,15 @@ def test_toggle_recoordinate_dialog(tactool: TACtool): ["Particle ID", "Mineral Classification", "Effective Diameter m", "Feret Max Diameter m", "Feret Min Diameter m", "F (N)", "Cl (N)"], ), + ( + "test/data/SEM_co-ordinate_import_test_set_4_refs.csv", + [(460, 472), (478, 394), (528, 469), (472, 447), (525, 458), + (509, 483), (487, 466), (476, 458), (464, 477)], + {"invert_x_axis_dest": True, "x_header": "Laser Ablation Centre X", "y_header": "Laser Ablation Centre Y", + "ref_col": "Mineral Classification", "ref_label": "Fiducial"}, + ["Particle ID", "Mineral Classification", "Effective Diameter m", + "Feret Max Diameter m", "Feret Min Diameter m", "F (N)", "Cl (N)"], + ), ], ) def test_recoordinate_sem_points( @@ -151,10 +160,12 @@ def test_recoordinate_sem_points( # Arrange output_csv = tmp_path / "recoordinated_output.csv" print(output_csv) - # Place 3 Analysis Points which will be used for recoordination + # Place 4 Analysis Points which will be used for recoordination + # Only the first 3 should be used tactool.graphics_view.left_click.emit(336, 472) tactool.graphics_view.left_click.emit(318, 394) tactool.graphics_view.left_click.emit(268, 469) + tactool.graphics_view.left_click.emit(87, 392) # Toggle recoordinate dialog so that the recoordinate_dialog is callable tactool.window.toggle_recoordinate_dialog() From 82678f3924131f5a56271fd95fc5f75c7613499b Mon Sep 17 00:00:00 2001 From: leorud Date: Tue, 15 Aug 2023 11:32:07 +0100 Subject: [PATCH 050/105] Remove Qt.WindowStaysOnTopHint from dialogs --- tactool/recoordinate_dialog.py | 2 +- tactool/set_scale_dialog.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tactool/recoordinate_dialog.py b/tactool/recoordinate_dialog.py index 807e327..89aa7af 100644 --- a/tactool/recoordinate_dialog.py +++ b/tactool/recoordinate_dialog.py @@ -51,7 +51,7 @@ def __init__( self.setWindowTitle("Recoordination") self.setMinimumSize(300, 200) self.setWindowFlags( - Qt.Window | Qt.WindowCloseButtonHint | Qt.WindowStaysOnTopHint + Qt.Window | Qt.WindowCloseButtonHint ) self.setup_ui_elements() self.connect_signals_and_slots() diff --git a/tactool/set_scale_dialog.py b/tactool/set_scale_dialog.py index ea6c606..9f28f5b 100644 --- a/tactool/set_scale_dialog.py +++ b/tactool/set_scale_dialog.py @@ -38,7 +38,7 @@ def __init__(self, testing_mode: bool) -> None: self.setWindowTitle("Set Scale") self.setMinimumSize(100, 200) self.setWindowFlags( - Qt.Window | Qt.WindowCloseButtonHint | Qt.WindowStaysOnTopHint + Qt.Window | Qt.WindowCloseButtonHint ) self.setup_ui_elements() self.connect_signals_and_slots() From 4acbeeb535d3f0d9cbf4d6788786a70255f064a8 Mon Sep 17 00:00:00 2001 From: leorud Date: Tue, 15 Aug 2023 11:49:01 +0100 Subject: [PATCH 051/105] Update README list of tests --- README.md | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index fa07868..7c878cc 100644 --- a/README.md +++ b/README.md @@ -287,23 +287,33 @@ pytest -vv test/ #### List of Tests +**test_import_export.py** +- test_export_image +- test_import_tactool_csv +- test_export_tactool_csv + **test_integration.py** - test_add_and_remove_points - test_clear_points - test_reset_id_values - test_reset_settings -- test_toggle_scaling_mode -- test_set_scale -- test_export_image -- test_import_tactool_csv -- test_export_tactool_csv - test_reference_point_hint -- test_scale_hint **test_model.py** - test_analysis_point_public_attributes_match - test_model +**test_scaling.py** +- test_toggle_scaling_mode +- test_set_scale +- test_scale_hint + +**test_transformation.py** +- test_affine_transform_point +- test_affine_transform_matrix +- test_toggle_recoordinate_dialog +- test_recoordinate_sem_points + ### Create a standalone executable using PyInstaller ``` From 92932ddab7802f903bc968b6183a03f136b7fb5c Mon Sep 17 00:00:00 2001 From: leorud Date: Tue, 15 Aug 2023 12:21:39 +0100 Subject: [PATCH 052/105] Update instructions formatting --- instructions.md | 201 +++++++++++++++++++++++++----------------------- 1 file changed, 106 insertions(+), 95 deletions(-) diff --git a/instructions.md b/instructions.md index 9c4bf04..5dc34d1 100644 --- a/instructions.md +++ b/instructions.md @@ -1,154 +1,165 @@ -## Toolbar - File +## Analysis Points -To access file functionality, press the _File_ button in the toolbar, located at the top left of the application. +### Creating Analysis Points -### Import Image +With your analysis point settings already defined, you can `Left Click` anywhere on the currently loaded image to place an analysis point at that location. +Analysis points will be displayed in your selected `colour`, along with their assigned `id` value and selected `label`. -_Import an image into the application._ +### Removing Analysis Points -- Press the _Import Image_ button. -- Select a image file using the file picker. +You can `Right Click` anywhere within an existing analysis point circle to remove the analysis point. If you have multiple analysis point stacked on top of one another, the last analysis point placed will be the analysis point at the top of the stack. Therefore, when using `Right Click` on a stack of analysis point, the analysis point at the top of the stack will be removed first. -### Export Image +### Modifying Analysis Points Settings -_Export the current image with the current analysis points added to it._ +You can `Left Click` on the `id` value of an existing analysis point within the table data. Doing so will set all analysis point settings to the be the same as the settings of the selected and existing analysis point. -- Press the _Export Image_ button. -- Locate the directory you wish to export the image file to. -- Input the filename for the image file. +## Analysis Points Table Data -By default, the exported file will be a PNG file. However, you can add your own file extension to the filename if you wish to create a different file type. +### Displayed Data -### Import TACtool CSV +Data which is displayed within the table at the bottom of the window displays the list of analysis point currently on the image. This data includes the following: +- `id` + - The id value assigned to the analysis point. This is automatically incremented when new analysis points are added. +- `label` + - The label assigned to the analysis point. Either `RefMark` or `Spot`. +- `x` + - The x coordinate location of the analysis point on the image. +- `y` + - The y coordinate location of the analysis point on the image. +- `diameter` + - The diameter of the analysis point measured in `µm`. +- `scale` + - The scale of the analysis point measured in `Pixels per µm`. +- `colour` + - The colour of the analysis point, represented in a Hex Colour Code. +- `sample_name` + - The sample name assigned to the analysis point. +- `mount_name` + - The mount name assigned to the analysis point. +- `material` + - The material assigned to the analysis point. +- `notes` + - Any notes assigned to the analysis point. + +The following fields can be modified after placing an analysis point. To modify these values, `Left Click` twice on the cell containing the value you would like to modify. Once you have inputted your new value, press `Enter` to confirm the change. +- `label` +- `sample_name` +- `mount_name` +- `material` +- `notes` -_Import a CSV file of previously exported TACtool analysis point data._ +## Analysis Point Metadata and Settings -- Press the _Import TACtool CSV_ button. -- Select a CSV file using the file picker. +When creating a new analysis point, any current metadata field values and analysis point settings will be applied to that new analysis point. Therefore analysis point metadata fields and settings should be selected before an analysis point is created. -The selected CSV must be a file of previously saved coordinates, i.e. a TACtool CSV format. +### Metadata Fields -### Export TACtool CSV +To change a metadata field, `Left Click` on the input box of the metadata field you would like to change and type in your value. -_Export the current analysis point data to a TACtool CSV file._ +### Label -- Press the _Export TACtool CSV_ button. -- Locate the directory you wish to export the CSV file to. -- Input the filename for the CSV file. +To change the `label`, click on the drop-down menu next to `Label` and select your label. A `label` can be either `RefMark` or `Spot`. -By default, the exported file will be a CSV file. However, you can add your own file extension to the filename if you wish to create a different file type, though this is not recommended. +_Note: A `label` value can be changed after analysis point creation. Simply `Left Click` twice on the cell containing the value you would like to modify. Once you have inputted your new value, press `Enter` to confirm the change._ -Upon export, the **sample_name** and **id** columns will be concatenated into a single column labeled **Name**, using the character pattern **_#** to join them. +### Colour -## User Interface Buttons +To change the `colour`, click on the colour box next to `Colour` and use the colour picker to select a colour. -### Clear Points +### Diameter -_Clear all of the currently existing analysis points._ +To change the `diameter`, either use the up/down arrows next to the `Diameter` input box, or type in your own value. It must be a whole number. -### Reset IDs +_Note: The `Diameter` is measured in `µm`_ -_Reset the ID values of the currently existing analysis points. This will make the ID values increment sequentially, starting from 1._ +### Scale -### Reset Settings +To set the scale, complete the following steps: -_Reset the current analysis point settings to default._ -- _sample_name = None_ -- _mount_name = None_ -- _material = None_ -- _colour = yellow/#ffff00_ -- _diameter = 10_ -- _scale = 1.0_ +- Press the `Set Scale` button. A _Set Scale_ window will then open. +- The image on the main window will become slightly grey. This means you can now draw a line across the image. Start by clicking once to create the start of the line and clicking again to create the end of the line. Pressing the `Clear` button will remove any current lines. +- Now you can change the estimated distance in microns. To do this, either use the up/down arrows next to the `Distance` input box, or type in your own value. It must be a whole number. +- Pressing `OK` will confirm the new `scale` and close the _Set Scale_ window. -## Analysis Point Metadata and Settings +_Note: The `Scale` is measured in `Pixels per µm`_ -When creating a new analysis point, any current metadata field values and analysis point settings will be applied to that new analysis point. Therefore analysis point metadata fields and settings should be selected before an analysis point is created. +## Image Navigation -### Metadata Fields +To avoid issues image navigation issues, it is recommended to tab into the image viewer before attempting to navigate it. To do this, simply place your mouse over the current image, and press the `Middle Mouse Button`. -To change a metadata field, _Left Click_ on the input box of the metadata field you would like to change and type in your value. +To enable Image Navigation, hold down the `Ctrl` key. +Image Navigation mode will be automatically disabled when you stop holding the `Ctrl` key. -### Label +### Zooming -To change the label, click on the drop-down menu next to _Label_ and select your label. A label can be either "RefMark" or "Spot". +Whilst Image Navigation is enabled, simply use the mouse scroll wheel. Scrolling `down` will zoom out, whilst scrolling `up` will zoom in. -_A label value can be changed after analysis point creation. Simply Left Click twice on the cell containing the value you would like to modify. Once you have inputted your new value, press Enter to confirm the change._ +### Panning -### Colour +Whilst Image Navigation is enabled, hold down `Left Click` on the current image and move your mouse to pan the image. -To change the colour, click on the colour box next to _Colour_ and use the colour picker to select a colour. +**OR** -### Diameter +You can use the arrow keys to move across the image in the corresponding direction. -To change the diameter, either use the up/down arrows next to the _Diameter_ input box, or type in your own value. It must be a whole number. +## User Interface Buttons -_Note: The **Diameter** is measured in **µm**_ +### Clear Points -### Scale +_Clear all of the currently existing analysis points._ -To set the scale, complete the following steps: +### Reset IDs -- Press the _Set Scale_ button. A _Set Scale_ window will then open. -- The image on the main window will become slightly grey. This means you can now draw a line across the image. Start by clicking once to create the start of the line and clicking again to create the end of the line. Pressing the _Clear_ button will remove any current lines. -- Now you change the estimated distance in microns. To do this, either use the up/down arrows next to the _Distance_ input box, or type in your own value. It must be a whole number. -- Pressing _OK_ will confirm the new scale and close the _Set Scale_ window. +_Reset the `id` values of the currently existing analysis points. This will make the `id` values increment sequentially, starting from `1`._ -_Note: The **Scale** is measured in **Pixels per µm**_ +### Reset Settings -## Analysis Points +_Reset the current analysis point settings to default._ +- `sample_name` = `None` +- `mount_name` = `None` +- `material` = `None` +- `colour` = `yellow`/`#ffff00` +- `diameter` = `10` +- `scale` = `1.0` -### Creating Analysis Points +## Toolbar - File -With your analysis point settings already defined, you can _Left Click_ anywhere on the currently loaded image to place an analysis point at that location. -Analysis points will be displayed in your selected colour, along with their assigned ID value and selected label. +To access file functionality, press the `File` button in the toolbar, located at the top left of the application. -### Removing Analysis Points +### Import Image -You can _Right Click_ anywhere within an existing analysis point circle to remove the analysis point. If you have multiple analysis point stacked on top of one another, the last analysis point placed will be the analysis point at the top of the stack. Therefore, when using _Right Click_ on a stack of analysis point, the analysis point at the top of the stack will be removed first. +_Import an image into the application._ -### Modifying Analysis Points Settings +- Press the `Import Image` button. +- Select a image file using the file picker. -You can _Left Click_ on the _id_ value of an existing analysis point within the table data. Doing so will set all analysis point settings to the be the same as the settings of the selected and existing analysis point. +### Export Image -## Analysis Points Table Data +_Export the current image with the current analysis points added to it._ -### Displayed Data +- Press the `Export Image` button. +- Locate the directory you wish to export the image file to. +- Input the filename for the image file. -Data which is displayed within the table at the bottom of the window displays the list of analysis point currently on the image. This data includes the following: -- id _(The ID value assigned to the analysis point. This is automatically incremented when new analysis points are added.)_ -- label _(The label assigned to the analysis point. Either "RefMark" or "Spot".)_ -- x _(The x coordinate location of the analysis point on the image.)_ -- y _(The y coordinate location of the analysis point on the image.)_ -- diameter _(The diameter of the analysis point measured in **µm**.)_ -- scale _(The scale of the analysis point measured in **Pixels per µm**.)_ -- colour _(The colour of the analysis point, represented in a Hex Colour Code.)_ -- sample_name _(The sample name assigned to the analysis point.)_ -- mount_name _(The mount name assigned to the analysis point.)_ -- material _(The material assigned to the analysis point)_ -- notes _(Any notes assigned to the analysis point.)_ - -The following fields can be modified after placing an analysis point. To modify these values, _Left Click_ twice on the cell containing the value you would like to modify. Once you have inputted your new value, press _Enter_ to confirm the change. -- _label_ -- _sample_name_ -- _mount_name_ -- _material_ -- _notes_ +By default, the exported file will be a `PNG` file. However, you can add your own file extension to the filename if you wish to create a different file type. -## Image Navigation +### Import TACtool CSV -To avoid issues image navigation issues, it is recommended to tab into the image viewer before attempting to navigate it. To do this, simply place your mouse over the current image, and press the _Middle Mouse Button_. +_Import a `CSV` file of previously exported TACtool analysis point data._ -To enable Image Navigation, hold down the _Ctrl_ key. -Image Navigation mode will be automatically disabled when you stop holding the _Ctrl_ key. +- Press the `Import TACtool CSV` button. +- Select a `CSV` file using the file picker. -### Zooming +The selected `CSV` must be a file of previously saved coordinates, i.e. a TACtool CSV format. -Whilst Image Navigation is enabled, simply use the mouse scroll wheel. Scrolling _down_ will zoom out, whilst scrolling _up_ will zoom in. +### Export TACtool CSV -### Panning +_Export the current analysis point data to a TACtool CSV file._ -Whilst Image Navigation is enabled, hold down _Left Click_ on the current image and move your mouse to pan the image. +- Press the `Export TACtool CSV` button. +- Locate the directory you wish to export the `CSV` file to. +- Input the filename for the `CSV` file. -**OR** +By default, the exported file will be a `CSV` file. However, you can add your own file extension to the filename if you wish to create a different file type, though this is not recommended. -You can use the arrow keys to move across the image in the corresponding direction. +_Note: Upon export, the `sample_name` and `id` columns will be concatenated into a single column labeled `Name`, using the character pattern `_#` to join them._ From eea35f7e691989141165799c8cb35cceea1dedcb Mon Sep 17 00:00:00 2001 From: leorud Date: Tue, 15 Aug 2023 15:11:27 +0100 Subject: [PATCH 053/105] Add recoordination instructions --- instructions.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/instructions.md b/instructions.md index 5dc34d1..36c4f5b 100644 --- a/instructions.md +++ b/instructions.md @@ -163,3 +163,15 @@ _Export the current analysis point data to a TACtool CSV file._ By default, the exported file will be a `CSV` file. However, you can add your own file extension to the filename if you wish to create a different file type, though this is not recommended. _Note: Upon export, the `sample_name` and `id` columns will be concatenated into a single column labeled `Name`, using the character pattern `_#` to join them._ + +### Recoordinate SEM CSV + +_Recoordinate a given SEM CSV file, using the current reference points in TACtool._ + +- Ensure you currently have 3 analysis points with the label `RefMark` placed in TACtool. +- Press the `Recoordinate SEM CSV` button. +- Select an input `CSV` file by clicking on the `Select Input CSV` button and then use the file picker. +- Select an output `CSV` file by clicking on the `Select Output CSV` button and then use the file picker. +- Press the `Recoordinate and Export` button. + +_Note: If there are more than `3` analysis points with the label `RefMark` in TACtool, the recoordination process will only use the first `3` reference points from the Analysis Points Table Data._ \ No newline at end of file From 91f5de037476e99100047dbaf65d0ec9cc1c2547 Mon Sep 17 00:00:00 2001 From: leorud Date: Tue, 15 Aug 2023 15:24:41 +0100 Subject: [PATCH 054/105] Update menu_bar_file naming --- tactool/window.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tactool/window.py b/tactool/window.py index dae6cba..2dcf22e 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -106,8 +106,8 @@ def setup_ui_elements(self) -> None: self.menu_bar_file_import_image = self.menu_bar_file.addAction("Import Image") self.menu_bar_file_export_image = self.menu_bar_file.addAction("Export Image") self.menu_bar_file.addSeparator() - self.file_menu_bar_import_tactool_csv = self.menu_bar_file.addAction("Import TACtool CSV") - self.file_menu_bar_export_tactool_csv = self.menu_bar_file.addAction("Export TACtool CSV") + self.menu_bar_file_import_tactool_csv = self.menu_bar_file.addAction("Import TACtool CSV") + self.menu_bar_file_export_tactool_csv = self.menu_bar_file.addAction("Export TACtool CSV") self.menu_bar_file.addSeparator() self.menu_bar_recoordinate_csv = self.menu_bar_file.addAction("Recoordinate SEM CSV") @@ -206,8 +206,8 @@ def connect_signals_and_slots(self) -> None: # Connect menu bar clicks to handlers self.menu_bar_file_import_image.triggered.connect(self.import_image_get_path) self.menu_bar_file_export_image.triggered.connect(self.export_image_get_path) - self.file_menu_bar_import_tactool_csv.triggered.connect(self.import_tactool_csv_get_path) - self.file_menu_bar_export_tactool_csv.triggered.connect(self.export_tactool_csv_get_path) + self.menu_bar_file_import_tactool_csv.triggered.connect(self.import_tactool_csv_get_path) + self.menu_bar_file_export_tactool_csv.triggered.connect(self.export_tactool_csv_get_path) self.menu_bar_recoordinate_csv.triggered.connect(self.toggle_recoordinate_dialog) # Connect button clicks to handlers From 82740b5a4bb0236693df3e4851968c6d52939755 Mon Sep 17 00:00:00 2001 From: leorud Date: Tue, 15 Aug 2023 15:32:48 +0100 Subject: [PATCH 055/105] Move method down in file --- tactool/window.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tactool/window.py b/tactool/window.py index 2dcf22e..d1cd12a 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -617,14 +617,6 @@ def set_point_colour(self) -> None: self.set_colour_button_style() - def set_scale(self, scale: float) -> None: - """ - Set the scale of the program given when the Set scale button is clicked in the Set Scale dialog box. - """ - self.scale_value_input.setText(str(scale)) - self.toggle_status_bar_messages() - - def get_point_settings(self, analysis_point: AnalysisPoint, clicked_column_index: int) -> None: """ Get the settings of an Analysis Point which has been selected in the PyQt Table View. @@ -718,6 +710,14 @@ def toggle_main_input_widgets(self, enable: bool) -> None: self.graphics_view.disable_analysis_points = not enable + def set_scale(self, scale: float) -> None: + """ + Set the scale of the program given when the Set scale button is clicked in the Set Scale dialog box. + """ + self.scale_value_input.setText(str(scale)) + self.toggle_status_bar_messages() + + def toggle_scaling_mode(self) -> None: """ Function to toggle the program's scaling mode functionality. From 77da597b6ef145548e7bbbf504424e13d90e6583 Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 16 Aug 2023 10:30:31 +0100 Subject: [PATCH 056/105] Rename some variables for consistency --- tactool/recoordinate_dialog.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tactool/recoordinate_dialog.py b/tactool/recoordinate_dialog.py index 89aa7af..20fdaae 100644 --- a/tactool/recoordinate_dialog.py +++ b/tactool/recoordinate_dialog.py @@ -31,10 +31,10 @@ class RecoordinateDialog(QDialog, LoggerMixin): """ PyQt QDialog class for creating the recoordination dialog box. """ - # Tracks when the Recoordinate Dialog Box is closed - closed_recoordinate_dialog = pyqtSignal() # Used for showing messages with methods from the main window show_message = pyqtSignal(str, str, str) + # Tracks when the Recoordinate Dialog Box is closed + closed_recoordinate_dialog = pyqtSignal() def __init__( self, @@ -105,8 +105,8 @@ def connect_signals_and_slots(self) -> None: """ self.logger.debug("Connecting signals and slots") self.input_csv_button.clicked.connect(self.get_input_csv) - self.output_csv_button.clicked.connect(self.set_output_csv) - self.recoordinate_button.clicked.connect(self.get_export_and_recoordinate) + self.output_csv_button.clicked.connect(self.get_output_csv) + self.recoordinate_button.clicked.connect(self.recoordinate_and_export) self.cancel_button.clicked.connect(self.closeEvent) @@ -124,9 +124,9 @@ def get_input_csv(self) -> None: self.logger.info("Selected input CSV: %s", input_csv) - def set_output_csv(self) -> None: + def get_output_csv(self) -> None: """ - Set the output CSV file for the recoordination results. + Get the output CSV file for the recoordination results. """ pyqt_save_dialog = QFileDialog.getSaveFileName( parent=self, @@ -139,9 +139,9 @@ def set_output_csv(self) -> None: self.logger.info("Selected output CSV: %s", output_csv) - def get_export_and_recoordinate(self) -> None: + def recoordinate_and_export(self) -> None: """ - Get the export CSV file and emit the recoordinate signal back to the main class. + Get the given CSV files, if they are both valid then perform the recoordination process. """ input_csv = self.input_csv_filepath_label.text() output_csv = self.output_csv_filepath_label.text() From bea1499402016d257e52d35a6f6186f50df6ecdc Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 16 Aug 2023 10:47:49 +0100 Subject: [PATCH 057/105] Add missing typehint --- tactool/window.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tactool/window.py b/tactool/window.py index d1cd12a..d47add8 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -255,7 +255,7 @@ def set_colour_button_style(self) -> None: self.colour_button.setStyleSheet(colour_button_stylesheet) - def create_status_bar_messages(self): + def create_status_bar_messages(self) -> dict[str, dict[str, None | QLabel | Callable[[], tuple[bool, str]]]]: """ Create the status bar message functions. """ From 28479bfde9e4179a62e01b761f288af439e24563 Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 16 Aug 2023 10:47:59 +0100 Subject: [PATCH 058/105] Update mermaid diagram --- README.md | 137 +++++++++++++++++++++++++-------- class_relationship_diagram.png | Bin 257091 -> 291878 bytes 2 files changed, 105 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 7c878cc..0886d6a 100644 --- a/README.md +++ b/README.md @@ -76,57 +76,80 @@ pre-loaded into the GraphicsView. QApplication Manages preloaded modes of the application --- - +Window - +developer_mode: bool +testing_mode: bool + +window: Window + +graphics_view: GraphicsView + +graphics_scene: GraphicsScene + +table_model: TableModel + +table_view: TableView + +set_scale_dialog: Optional[SetScaleDialog] + +recoordinate_dialog: Optional[RecoordinateDialog] developer_mode() } class Window { QMainWindow - User Interface with data preprocessing and data flow + Main User Interface with data flow --- +testing_mode: bool +default_settings: dict[str, Any] - +image_filepath: str - +csv_filepath: str + +image_filepath: Optional[str] + +csv_filepath: Optional[str] +point_colour: str - +status_bar_messages: dict[str, dict[str, Any]] +graphics_view: GraphicsView +graphics_scene: GraphicsScene +table_model: TableModel +table_view: TableView - +set_scale_dialog: SetScaleDialog + +set_scale_dialog: Optional[SetScaleDialog] + +recoordinate_dialog: Optional[RecoordinateDialog] + +current_message: Optional[QMessageBox] + +menu_bar: QMenuBar + +menu_bar_file: QMenu + +menu_bar_file_import_image: QAction + +menu_bar_file_export_image: QAction + +menu_bar_file_import_tactool_csv: QAction + +menu_bar_file_export_tactool_csv: QAction + +menu_bar_recoordinate_csv: QAction + +status_bar: QStatusBar + +sample_name_input: QLineEdit + +mount_name_input: QLineEdit + +material_input: QLineEdit + +label_input: QComboBox + +colour_button: QPushButton + +diameter_input: QSpinBox + +scale_value_input: QLineEdit + +set_scale_button: QPushButton + +clear_points_button: QPushButton + +reset_ids_button: QPushButton + +reset_settings_button: QPushButton + +status_bar_messages: dict[str, dict[str, Any]] +main_input_widgets: list[QWidget] + +dialogs: list[QDialog] +setup_ui_elements() - +set_colour_button_style() +connect_signals_and_slots() + +set_colour_button_style() +create_status_bar_messages() +toggle_status_bar_messages() +import_image_get_path() +export_image_get_path() +import_tactool_csv_get_path() +load_tactool_csv_data(filepath) - +process_tactool_csv(filepath) - +parse_row_data(item, default_values) +export_tactool_csv_get_path() +validate_current_data(validate_image) +add_analysis_point(x, y, label, diameter, scale, colour, notes, apid, sample_name, mount_name, material, from_click) - +remove_analysis_point(x, y, apid) - +reload_analysis_points() - +reset_analysis_points() + +reload_analysis_points(index, transform) +clear_analysis_points() - +update_analysis_points() + +remove_analysis_point(x, y, apid) +set_point_colour() - +toggle_scaling_mode() - +toggle_main_input_widgets(enable) - +clear_scale_clicked() - +set_scale(scale) +get_point_settings(analysis_point, clicked_column_index) +reset_settings() +update_point_settings(sample_name, mount_name, material, label, diameter, scale, colour) + +toggle_main_input_widgets(enable) + +set_scale(scale) + +toggle_scaling_mode() + +toggle_recoordinate_dialog() +data_error_message(error) +show_message(title, message, type) +closeEvent(event) @@ -136,7 +159,7 @@ pre-loaded into the GraphicsView. QTableView Manage the display of TableModel data --- - +set_column_sizes() + +format_columns() +mousePressEvent(event) +signal: selected_analysis_point(analysis_point, column) } @@ -148,8 +171,9 @@ pre-loaded into the GraphicsView. +_zoom: int +_empty: bool +_image: QGraphicsPixmapItem + +disable_analysis_points: bool +navigation_mode: bool - +set_scale_mode: bool + +scaling_mode: bool +scale_start_point: QPointF +scale_end_point: QPointF +graphics_scene: GraphicsScene @@ -164,7 +188,7 @@ pre-loaded into the GraphicsView. +save_image(filepath) +show_entire_image() +toggle_scaling_mode() - +reset_scale_line_points() + +reset_scaling_elements() +signal: left_click(x, y) +signal: right_click(x, y) +signal: scale_move_event(pixel_distance) @@ -176,32 +200,62 @@ pre-loaded into the GraphicsView. --- +testing_mode: bool +pixel_input_default: str + +set_scale_button: QPushButton + +clear_scale_button: QPushButton + +cancel_button: QPushButton + +distance_input: QSpinBox + +pixel_input: QLineEdit + +scale_value: QLineEdit +setup_ui_elements() +connect_signals_and_slots() +update_scale() +scale_move_event_handler(pixel_distance) +set_scale() + +clear_scale() +closeEvent(event) - signal: clear_scale() + signal: clear_scale_clicked() signal: set_scale_clicked(scale) signal: closed_set_scale_dialog() } + class RecoordinateDialog{ + QDialog + Allows the user to recoordinate an SEM CSV file + --- + +testing_mode: bool + +ref_points: list[AnalysisPoint] + +image_size: QSize + +input_csv_button: QPushButton + +input_csv_filepath_label: QLineEdit + +output_csv_button: QPushButton + +output_csv_filepath_label: QLineEdit + +recoordinate_button: QPushButton + +cancel_button: QPushButton + + +setup_ui_elements() + +connect_signals_and_slots() + +get_input_csv() + +get_output_csv() + +recoordinate_and_export() + +recoordinate_sem_points(input_csv, output_csv, invert_x_axis_dest, x_header, y_header, ref_col, ref_label) + +closeEvent(event) + signal: show_message(title, message, type) + signal: closed_recoordinate_dialog() + } + class GraphicsScene{ QGraphicsScene Manage items painted on image --- - +_maximum_point_id: int +scaling_rect: QGraphicsRectItem +scaling_group: QGraphicsItemGroup +scaling_line: QGraphicsLineItem +table_model: TableModel - +add_analysis_point(x, y, label, diameter, scale, colour, notes, apid, sample_name, mount_name, material) + +add_analysis_point(apid, x, y, label, diameter, scale, colour, notes, sample_name, mount_name, material) +remove_analysis_point(x, y, apid) +get_ellipse_at(x, y) - +next_point_id() +toggle_transparent_window(graphics_view_image) +draw_scale_line(start_point, end_point) +draw_scale_point(x, y) @@ -215,6 +269,10 @@ pre-loaded into the GraphicsView. +headers: list[str] +_data: list[list[Any]] +editable_columns: list[int] + +public_headers: list[str] + +analysis_points: list[AnalysisPoint] + +reference_points: list[AnalysisPoint] + +next_point_id: int +headerData(section, orientation, role) +columnCount(*args) @@ -226,11 +284,6 @@ pre-loaded into the GraphicsView. +remove_point(target_id) +get_point_by_ellipse(target_ellipse) +get_point_by_apid(target_id) - +reference_points() - +analysis_points() - +export_csv(filepath) - +convert_export_headers() - +convert_export_point() signal: invalid_label_entry(title, message, type) signal: updated_analysis_point(index) } @@ -239,9 +292,9 @@ pre-loaded into the GraphicsView. Create AnalysisPoint data --- +id: int + +label: str +x: int +y: int - +label: str +diameter: int +scale: float +colour: str @@ -257,18 +310,38 @@ pre-loaded into the GraphicsView. +aslist() } + class analysis_point{ + Functions for AnalysisPoint processing + --- + + +parse_tactool_csv(filepath, default_settings) + +parse_row_data(item, fields) + +export_tactool_csv(filepath, headers, analysis_points) + +convert_export_headers(headers) + +convert_export_point(analysis_point, headers) + +parse_sem_csv(filepath, required_headers) + +export_sem_csv(filepath, headers, points) + +reset_id(analysis_point) + +affine_transform_matrix(source, dest) + +affine_transform_point(matrix, point) + } + TACtool *-- Window Window *-- GraphicsView Window *-- TableView Window *-- SetScaleDialog + Window *-- RecoordinateDialog GraphicsView *-- GraphicsScene GraphicsScene *-- TableModel TableModel *-- AnalysisPoint + AnalysisPoint *-- analysis_point Window <.. TableView : selected_analysis_point(analysis_point, column) - Window <.. SetScaleDialog : clear_scale() + Window <.. SetScaleDialog : clear_scale_clicked() Window <.. SetScaleDialog : set_scale_clicked(scale) Window <.. SetScaleDialog : closed_set_scale_dialog() + Window <.. RecoordinateDialog : show_message(title, message, type) + Window <.. RecoordinateDialog : closed_recoordinate_dialog() Window <.. GraphicsView : left_click(x, y) Window <.. GraphicsView : right_click(x, y) Window <.. GraphicsView : scale_move_event(pixel_distance) diff --git a/class_relationship_diagram.png b/class_relationship_diagram.png index 27838c516b1eb411582dc2c8505dc377ea011534..8f85a92206f124d346d9dbcfd64ee30d3fd38018 100644 GIT binary patch literal 291878 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

GXOj=ogggZ@bXu2D%Cq4I4#gKKJzOiq_b;*$ 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

9J>eGmBU1 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�k6rA-EK@K#|Y@&;2cREXO5kQ!k4nh zTEg^OHj=EP9~5{w&Pu4q(lTMI!h-Os#1hJh9VgD16qL+M3~UkU=$_WErz$d-a|#u- zp(K(H$+~=PROwzxbm~(ga34?vSh)+l*!)g}q9XmoqnIK7TKAV7_U!XfYIiyrp%ZJX z_Vz!B#Osn02}&SR0Y(Hgwo$0y=m%~o3<;+2?zwCp?L?b1qQL*dsIvRjFnQX62->Tu&wK8xMO<2A$dzlsT__z zK^x5xd-m|bpH}xDy{KaiKl|ZVr;+h^WP+-#4<8>N##FR89wlODKj!GjG`Bn}jt9DT zMLXw@;pr+P|;x=6!`5OslVzyM}TGwz0N`{eej4i2%i<3dbty)$eo#9d5L{TjzDLFhl zM8PCW=dGyb8WpuC(zbqKWi+W~!bX*_I~*qL4(1Td%=1o{baiPBIIe{1jS%2f zG@6Gxt(`yjp#Q^CtIYk6il0vjIW~@yZGTB04`XrUL*qPb0fc%REf?Y0&NTT13heyt z?aj{P*0@!_{`%qW|LY}PY$`Thqc+aHVzhK3Hx?P){@TE|M8Lu9-V+=-(@kifOC3n@ zP;icLUe-PgA`0=R$&LF<`A5dPh&``Z1PwetSRm2uo0udu2FYF^9An!IRj z!Ub77GzRo8-M&et4igi{RndJx6dYV1u&NSZ#3JNK>~qY8^;pWk0gX4o^mUzTvjUg3 zX~MuA=Ge}*3_o`442upB1Fepfw?KePl1W-BD)h9p!X3WUo>%PlGHO&te~^-mVAH$? zO(J$AZXO=4Oliy?FG1{goFXun`uY}I&WEmEjoa#@bl8qN@i=V{5)t@T_px;TOACPG zy|Oh+7;NA0j~EINELc~|8q;P9=0<9Q{z67{)8%{FDXZee6L0@`PQ?{4KZg2(aOB!H zjgpb&3lum^w{vJ!Q7y2WTb3nYBM%?Gl;X!Tu~Y05LT@M1;P2B1*?te@{E?y2%dBh z(!Tsnu!WU?=ahH^L50`VGNVEWaRDwEApWxVrE%M#+eMqla9WadcILj14cwII>3Z>^ zQ}d^UU*OK1WCI@ms z_u!G@HCtzNTHUKt`_@@8Y1Q*nHyRlTXe)S}y|elM*@f0Y)r=1lCI>7>E4b~_s0Ice zV`S#muWkdUBLCCMr1AX@-O5E~X6BH3k@OvR#~Qz&3NR?kH1ExLUnIWs5$Vlzsc?K^ z(3hme!&UAFhjVRgqI4@o?im}S2u!ZIrRA0i|A`ZKw`pqb$LAQBnDEJ7B0(tRPtf$h zUA9|UEgb4&_hOe+KX02Vx{roex6=1^>{$uckrziAC}O`5+s^cJLfLo%9|HNqKT@?V z-Rt+buCG%meq=b(x_d-w(~1{1{hj-My8NP8q9TxTMU2ezjFsnmBF;T{p)^C#P^^bZ_!N%aomL%r6`ZM)5rC6DL1|n8 z5}i;~pjP;dUo-f5E+ga7?){t3Zusv+#5b`@+rTHSt$jCc@PAOx=9&Ll-jB|AoC$;; z$o}HjiU~U9xTi37T~$$u`0&9L<9i$=UOV?6uL7e$$ZSW&%hwuXA%*z;SD_?$`<9sW z;>m4sH)nq?PKu6oG|^H8MUjp^b5HsY@~@wU@{&h3*G>l%<*B4UlrfXKFUS^M@nxx_uC=^sS7)BuBl`%`00xi|XPmzO{GN#K zQSpKZqI$f2*k=bN=zy>&OPbCL;L>SN9~EShCUqIIq!Y@i!Dxq9>2*iC3f}UrY@;TS zpJY_d9^v7=<78XnfX)>P>@|RKI!+`*PD4I3-rL-zAzYhSR5+}a?yykm#^vzNWwo%2 zl~5xd8F?}-L(hDWaKJjPl0ZL#mE^#|gC4lOCv5Rd;3(Ztj<75dE%jfs3-y+=UJO^) z?OHQoHv7?&w4Y9?PwRu!faq9-yLZO?8ePY#M03E%{)2zr(vj~)Cr+Jyio21^YW)1F zlvR+5upISv^Olct5EIQV?niUzbapZVdkQYgsNk9kKDQC@u(ldjE>P>%kieP~L4XkQ zQHhXDllkx%vPJMFU$#@rGNHrK7po(2I`@$Ua-H}Jm!oOT%uXXi{6Y5PH*d}l3>&3HYJBfE@Ajt3@vY?#}-Vyl~-<&hkvchXmHGDx2BC`{&I?o@QkwH-16uDPf%e>Xxn}!2;6a1ZMuo z$Z`-CS0uhiMn+yrxY<|O`)iC<<`g<%b?>V#3lB$2C|r2-%VBYKTc_9E)yJ&+8~56szO$@-?g}y8=|a|>cFTocXD38eaj8dTJlaeDV*NV zu)`y@?3%c^KcDe_c{#aD3%@hpUTh+_Sz5eu)$AniBO$_55v-~Y%HsL+w=WXMA52Wr z&Mr)fJ>98w7o_L?rs%g9emsSSv80q3wX}i)0`|+xkB%J9Dd{UgY#GdisbxFo*^MDs5aD+{>e)&#D{qtZlHMG9$9vy1Dr&59 z>KX1j(RcWynwmqr}ro`*_es!L$!TYYQrza^d4+q-$P!XqB*y%uOMBb@jB0L;V zy%QW!D)7vxnXB$zOPG4o;`FUcVeYv&pt}b8TR%& ziI9xOI;@uu#u43dM3*4>V`e6YF%d0}L^zeAVO49$?(Z*$xdJ{g1J*Eyja7Y4EfLwf zkyM9n>;!wi;Ub#B&8sMWs*2^aw_|%QfzQKX8K+rLPc2&b;BwycK&63pdZ8Tg+qa3x z=@_(iqL*VsGp#sO!=*Gdh%+*+C@aDO0$YS{5d0o>5Pdm z&<}&j&g%~!rtzFh{KVaga2*7Fp9ecCW1U5^Zy(svzZQ}lr!^qs?ia5B#f+z!OlYAH*RhvTmcYA731T9F8~QN28hZVk_Q;1%GDhlOYUJUYQMOGAXE|EZT0JH&3_`p-{xs?Lr^1c5>*txw?x zy`l;gEQh)d!83Wzz+3Kj6XtEz)W{jKxNgjuu zOc0*e6OI?2J&OZyx7~fk$Q+^(Mkxax%byS3A3_h*QRG5~-~GMrWhvD{WlBmUYm8A) z}rIq`K9VD$JZ8kg- zE}OxZ&>o42_!4vyMMYf1JC{G}R;uAhB1K2WdCb}1oN1t|l&4Pgs(FCF7Qz_WmXEEB zzI;HaRgeCQJO`UCwSkvg|?7{ zI~{)dHP(lzY@X%hlw289N^~YzzIX4vL!cbD{p#uRH!l+Y3d3x?QHv~mqkH4?jas(b zFD){hUpxUoety2*1OMwQat-{F8%94$9``x3ulr4vxHnz6xG$gug<{WeIO0sLm@bMy z^#4w%SNwoBmX&jic4m_J(sqf%-TJGmEd;TjEX^81B%0Y~?umVAX=nHB-d+0Ll*HGU zxTA1G2+YQC`)4O2TU&2N0efaoPZj9Xk92klpbY3K_NL{r_-WiVdrpu&&bFS^2F>|8 zA_68HCMeZoa7z4Yh@wJV@xX8u{r#@2kP<#NQd6qK^QVzQUfNs84E@&-NF)UJJcf$R za=Mq}k(E`=7(X%y2t(h(U%X}*@Rw4tt+y8z!7f`ntKvQv*Y5Wp z9UZFm&zox^TFZg5y5s+lHhxU}Z)sycKDVuHJ7k(dFne-Xbu%#q{_4!6-&oDO+Yq^* zfg!Z=d(uAR)-z?Tt-e5^e#A;?C@1gz+GKg=zoeG`n{ll`kNoWHSoN!uJr^G8*#vLx ze3JSuSdh|4)ikfx2}a!;hPXY&5bq z0Jpn>F)dW+0XslRS2UIr7D`jpWJd%$kROLmq0?H0vE<(ww)rj+ORnZ@%*?y!Ba*LN ztG|`A!GHh85(MGe@uLh$7YI+2)q$g8mX68dh&`G&psqWT7BB+i;@EA zFq(uJ>c7yq6>yitFy>lY{BC}kHv0X0Vj2PcODnJ6x9663S(@WYqG!#oUtx@If_Yi< z%Ph!`o_&2%oQX|{If6Oe);14Ac6*l~Ycq47^N;$F^I;^#rMkQTNcAhT%|)5lR=~6O zk6paF*bcZ1wBW6K=HK7ZQ_@itRS>~eAaxujc3FbiQNIS_aCmcZaz(|)Dj5YAy_3Io zs*12XIxh9pBlb{8s8ie6xN>tN1oQn&DfujLX1QAlGj*ol9Q-YUM(v=zs_K;`ynYf0 zsT~Fd<9&?(+E_cLcTjy?d@gn}GW$VvMB6V2)P|15KPplU#lnlcZZ*0d<+S@vX93SW zcu4c%(Zo_;y?mba>5NQ?k9!9q5YkYZac{sC8z>&&#fnk%QPhL&sNQ>ybKQx6Mf}BJ zEKE<=KrU2Px%KhSjuseC8rt|781(jGRVPXd+nYj0w(G8bEOl$$-wfs5r782O`g#?% zzPxPa`JX;9Hs)OJqh21*33_5k)o}R4L179pOJ!^8{>X0e{u{CKI5IAw5M7FPbo_Gv zHjrU~Wo4q!FDCJxUum$$wW^4XT|>hOqPhbZPaq+SKbw;N*Qj2y1~$q2#zV(K za?^xzrb9p^$4PtnZH$f!jy=s_he0{rz$aisNdE;t?$d$1X=Rq!%9W9zp+6HVM+@xv zaKoy&3*eTg6e}>AvsMh~9aWYBMyqBv46NM->cEl^8PF~x5x(q4T?SMW}G<_9* z2>d|E8NYrrUlMYwx7^w%aOCPtv~T_yYw~7Q$lo@DLHd%bAZ7so$JUoFmdpIe*=A5r z=L4`}`}S@)NlxLjf9>h<#lOhzlld$E?b`?2iG{IpNI!Zs;8u!XCOkdv@$pYfeEmy3 zT>5{07u9Rav_(e21N;Hdnisc!-q^GIL1j~u*pZK#gtguTpg4AnSURnAgOiZ>LA1!g z`)G34L`N47$^d$DzqL_Oxbe$%3ZG!RAe2|c|Calz~e(rv{$d()P`?}^p>1v zq2mpFc08mA1>Ef_UtJ1Lf?!`sYkpDE7ec`Ir(v-2m>6ANP6r)oiSTbtm0IWvSNKpLQO@xwNz9uHUH z>hBi%X&{=hY&t$9il8>}G|9vnQ2ZlUn@uBEbu1`_LNdeWn%Anf1?OYhbD| zlw|#|dRkzE>prv)?qTImW@Haj|B`?+U^{UEHTT^M$Xhm;|9S47@%W*mM^SGd{^(bO z7cKw>zr6(BtItIg#Rfd2F6nS&F$iz)$mQI%>dat4LKDP>uOWLH9CT(9us`3?;U~X# zD#DuSf9;U}XkTkzP(~dW%6STyP%iexV4n%VbMEuW3=Sq(gVfa6Iyw$vBt}gj4Ik{pqj#@nURX#JIAhj-dd(*z7<6>j1*E#5~sV_WW_-}t4p^uDZ?=CG+ z&e1V8Xi-R3OjhGNcKmoKh6cT2*H#$w*-xH?CeQGRZNwpx0WCuUvrlV>t;JyBcgZ~# z9K(Y_TE6ED>sa8+35J6e!|>MDr+ESn2O=0EI_Z1&$IxS828F}&NKlM7^}#Dwt{lK@ zbyVQdp?}M{LH{%V7okisEUTNo_-{o{fw!kQWbMUkHziU*hYaPpl| z&pJkUeD<4&Z*7X}El|XYW&GPRH`dj5OjualeG!y8R2|5>g5x)0NB_6i^aL?pYU%=R zgvyoq_y>=UKgT(bDHvtUB2dZUb&?;fvmcng_SZ6e4>EJ4g3bSf3N1fO#!F<<6_@i4 zuqycW6ejzE0_JbdoTPownI<;uLgvo<2b&m;i2h;RD9gaOLB>Pb6vy#Km|079_JGCJ zt4wJc)N}rs=7+b-igYW^HXt^6U@tx0d+rVmiv6)5wbMpX9zq&GyPZ7JdQvv{f`yo; zF8ikYhjm|dm#q~>-)nzO0=WF5gxsH1usQCbJD&gc>r=sV@R`Q`LAUosH+N}E_s`|OHCq@j zbno5!^x*$Rn7MnId&%$F779@@@Wy{c#ckyKE)nRnSPDT2R(Jf_H?be-wN?My#O69P zl@<8R=qn^arjQY?Yjt?vF)# zy04yfupUS*8zl2Pa%MM%B4Qj|02W@OWq^f)b8d;8po{<@Fgs7iX?2{Sxgl|T9TM^# zHv%$Jxlt2&lGE(VgmA(8ash~ZPX|g8Gw7mJ}cS0pBpLi+gs--ws`K-<*JEbETIJHIbD_%7J8fN72Xi^%%h z!4~x3Cwprv-~HZh-&-+pHP%mXPX)jOhN2a5)r(+%u_SXB7Aid6?!0ax2whb_3~+>g zWT;5K)jGy0x)}X-f-I~A)HOG}TePn1(J#6pA6xvFIJ#qS6epULt?5TO+{ z#&?2;K!07kcFh9<=x9XswiN@^H@x|{g^6yh=d-MK1 zLsLv85k%;-v%%l~j1@kbRHKKef9F2=J9kX(-n}d%bAG7eOJq_~O(47bN(XS4Yq;c) zlgu_x)7iB&T>RKHColV&Y`rVwbe=EXJ%0C201CQ(R1gzLRw58rCEeX=W%dB&!KHWt zXTslp*7E0B_o078vj(-d)gYRM$s#Y>lNn19!K;H)LiP5L-;v`9iN>$|{dc@&lRhvu zer$GqWqjT}@uPA-7|EN`WHvkAWaOYt$_cEoe))?7h3k!lW!$TC9~D`>e-XJKzKtk} zSJGyI8Mk+V*`)$`GyMn&TblQmT+648nQrdBCHdv{Bl6qwG-ZB`wAJjnOIDovfAnBjo$RAay7c%A}kPvM_&Nk{)%=GuBjed+dW!)lx9sfu!u+zIg zeyk&t0o_JMW@b%6576y22*qHa(_5Sf#N)A;RJXJ+`L)EoFDgD>Wy%TZv&->o|2GSo zeju#mrO3BR09y-MF4o}tDxu8Xe&OA#fJaZ^gm?(-vT(&f04R+mB>pf-`$->=4$t2$ zE9(G2<|>eT%+#<0`u{_MKmhmo&(vhOKQpV_GnrywnX=*UQ?*NZpcp{(t_|YB^f%XU z3kgj;hbs$~_^R5Qm7pbi^7vsuV~2THtkqDZtu>9;oFFyDmIamD!6R9ZF=-5f--4;a zpe=dd`b=qdTDbrY46G5K&3XpTHXYr)wHLx{N==nST7vTh@!oLu&O~0UDii$DOo~xBp&rj^Wq zvA0~3kO;ir^rj(IJDt4I3{=+h=gU)1GYEEeN1=bKSpYIo(AoSYz@@6w3d~?n)huAb zHt;rB$pDrMBIqJ75-G%At**|z-=sPqw8C`zV*9lgJ@<3yCS!@slu^m*jdO~{iyDrmh}IaQ&qUg)^=7dri9=CL=Ous=Gi zXU5{CYchK)Un-0>#Se3*O%E!hggV&WR%3 zf-|0wZZT??;a`2|Mf8M}LT!6?T8+SAQVu^3-A`41pWRt%ys6dof}EU@Z^5n2lorT% zDnM@UeXf@IwV1Ks@L0E6@8Egof_$N#(O%0s;id4=@Vu}TMK%uiLr&D$=GW4!#I|mGU|TQdAzuXXzcew0tt$% z4gnbtbvSfr5Ti985i|ldga|LRi}&PS>>qA^6B(&XeJq6A z^5+AzWfB&sojWPpzgY4qD|0|1n|V1HvFk^9q6N{vH`b(r9uf|BecI#ChDP{cfZ;`o zA|#OHzP_dqmU4dnY@=G}$PXzM+x+s1^sPMso2BGkM=v&pr0Fkg8xD&HjG|-O^P)5J zn8obiQ61fB`JzHTGOC>iDJU-8`^EF;Pqp^_4%aGws@ZkB?bz2xI@04msm>DuoTSkB zf*4J_+9^562Lssx*!9pk!`zq@^XqaA7T(@$79-Uu8TWo{Lkc+;9PSiEFdjWFEIf(4 zmgS-8V7&RklI?W5gu61QXTD&yXI)B%|tgd>*^^toXco#YfP4`7=so z^-mTAWExX#YbYvW7qoVpL+Ln_UQAh8E2XUF?Wt~?8yb7|i#*O-({tWfVCe0wnVDTt zj=kgQIg50PbknY*G`!1K^gAL?xP*pQfX_IJ>MI{q%fsABmxr9BO>Ls=@LQPw)IoNWyH-7$Z?rQ^R<6 zqUMdXVcl_Ay_O(x^oz#<6kafbH9sCh7-G z;m@Dnye;JSXjgTkxnIQ_U&^Bn%X441aW#*$mO&ADUEdL}lF!hQs;K+N`#(t0*|USM z3(Oy7P1<`+dU|XUu#vWSI?(qG#Qe#Jetsm!m~M;UAuh`vYiKyydToPaL>52pCzV2a zg!0)q{=Vapo6B|TlwC_hY(#{lM)#U-^RAsjn+JSCIRws9C8hSO8ap&kzdlW6*S+7R zYr~tOG?p#)@eXvBp7JQ!jrGh>9`j4rn|3xeJxNnaV<$OtN0kKK z2f!i1N%J06Jd{*T5NQyTlu21t8esXx?v{{u-g<7g=u#pz2^RP}C=Wn6wCSvw#>?y6 zJN+HoJLe5P1+5l1g+&Aemc7RE~ZG!G)3KWDl0UCi7?Relt0@k^R*utg-sR|@OALH)m8;m z3tAg(!;sBBOL6$L-+Rw$bW;Xl`kz1F?f)s@UFq++gZ!Mg*JY8g!Pd{{a@7aZEQE^7 zwva7_JbP9%+Ll#QUoXEXdTRO<$Op%d-J<>Wjcagp7cagkzqwYjM8M6 zE^UfsCHqt|SEX@Q;TsI=0R}!kPhS1gi)#ypSg z>$eyfXIJ=wgL@Ib)?3F@j(zb?K7(C`UtWB>BuO}S{CJGchqrxW-NBm0-}WD{eLh&{ zLb84PQwjS;HG}$t4R~Y$${r=bhxER(GH|+o+YDrS4l!rXzPfVdp<&-8Nkkt(tRpNX z#dGjfJPTGkw|?KzM%l8kyi>6Rx!q`(^t&@mhH(WeyefqMP%`hTsH;1q(su2(fdTOyBznT$zT%XrxpVWoMssp; z?>ECg-hXz#r z+lw`dp19p#1{iorQX4iyG(0?p-QSCQ`}sDxV=m#ncZ^9fkZ1&}rp>tMA27 z1|GThW~9AvgO!D;UbMvV_Yvw1VWJ*^z4~$q`F~VHJ^>` zgobB|p;*;p`YU(t_|;~=a(_E_iI8uNpiAqQ$;m@o)0CErWSG^7W+C*i@Q>K-7_Sv~ zJcU)2m3wGtgg`h=%Qsg(zf>H?G5m?ZYiD_9=YS6vIOUw6ohf(8LHb9I&+QYzo5xvH zd9ho5v2Zmd=G@)~O}7o(uC5C*Fg&WSw>Il3splzY?cp?O|ML9D5B=^^CrV;O5)L0N z?FU%qO3BGVNzD}{kX`=CS>n-CzlaFF_wVaoXB#7MtG7+tE#7wA+sKIZY%f}ZM|9EJ znGieZnVF@%&hYW!S4=sV>sm^W#{>;@xU}oYP)Dg#sr0UHRl8@eWc63{nW+PD z!tly-@#FmG*6&iq9s`X;oU;QX*qA^WB~(>g`bV=iAL30E0a$rLSU41X)0w_XK8e7& zWONw7S}PyycuC`#sUg@n@x44QT|NBEmwre+!6aZKCLQ=vZX1||$Bfv>H`9yGtD7C? ztrHz)=RpTO%93&lLI{JFR4t;{2tY_Uv|P~Ain-VcTO9Z?pBN+1*MIaa1L@HBM*0xx zJ-jb?w|COmZeqPX9ki#IVs+RYz&2BR_yOQo?PXHtu zn?H%G{`?j8;X?v#SsATrLBnHkl5~w!gYULgD18IkK}H`NmYB>;c~Ah7l>A$$#I5NR zn{JtyRJ5j-ual|YSbW<3P)MV(s%l961uU3@c;vf{wV}193dX$!;5x zHk8}Dd8_@GG8YOA4~S7e4YC7=oTR4EWQWy@T1VTF78>=g9w3w9E-T!C zaGt^9H(S?>0;U(te0-pgX)MjubugV+YnUG|pBgX7CAAr!ZuGB&*;CTZy!gg862}F) zS}YT`?}}n6Cmov*^$I*XZefv~WHeYMM4&4=s#jP~Pfs=PPRwfincJTP zyj+Pk)ew}RQD>j~K+bpaB*Tfp6MTlQR|jiv+_T7Lgvq9e)43-xF|{9kmt49*x+7j< z;y(F$Uta8c;IrY8&~M}wWLdi=CQ@o?E*v=CzOS~Y^n$%p@k!&Ri(#Y5WT4+IfdPW& zE(xE)NL#^m0ny?jSyoHhG@%&kN83{~bUq|IFAcUK*i3$~UD??&-h4&0FGics99f(c zyw5WF>BoJoIUe0QRu90~*SHpg@Z&y!ENs+`28s>WQ!s2@{+u{*o zbx(Bbr^el0kNt_=O419{E;H-Vp?9NgYVdMqWEyDH;pXI`eQh4w*Q|~;B)PfQ9{P2| z?u2Ne#!cv34==p|j&fbqb#-yo-{``HtGs^JLacPUP9O)TxDUuTn^V zb{A;}&&os|a6d=vfE@Y@U#wz;H0iLE?k#@tf~4xvv_j$1EAEXjj#(a!#TD}#s%3iB zF*A*@B)Gnqi3c0=^aY)pz2hWbFdLJQZ@V(+@OOxl{(xTlEIKze}Wai!; zupF^blE-I<)aQ>?JxOMo9B66a#|pclv_u5uNu$!80vH>gU=9||iIURqh}22G(>hY( zyd>nZ?0oU_bDL-U=3G|8j=Bcn^i6Pe-TIjB`|#ql%WXqL#cbUZ4($Q%?&IXfo9*po zDr=122u~)^zd1J9tH-ooN^$TPQRH#y z`q6`t2nX7dxEX|Y!%gQ%u-O(|wJ5zLCpUTK#g3_Jud*C8i^ec@HyIi|?J_t=!?VW# zZ40rZCCSuSn%!g~A+dFRT~SKP;l{n=`+S+)Zk@h6s*DaGqETH*T|PM}3G~-|XX{jq z0Z<72_&sU@WEzx%AFb&$#K2J$mrXC?f(h5cy7Y9sy{S*0&UjH~xiK|RBfh#;YCppi z4*vMysA96rAvk7MfmuTJEoEx*ORnJ#FyNYU^jVZMqfq>`GSr8wf##*D@VNb~znM3( zkAA})`&J#4w;*Myzb(g;hzRv$nPG)FV)F4(rsNxq*ujF~i zTfq{4Aa00!fqExL_Xfu=i!qSMAg14xk@1{H4VF;bPFW>y1GNj&@QcoVD}~U#nJHpHg|RMqJ}y-AAIJ&<4%RzEh_Z@QCY}X{jf1m0%Sv+tk!#|9iv^ z;E_U-9~%vKRI;0!ibI#8*<+w0gA_r;J`}_+1;9BBvq;w1Ps<`|e4m|^omh;&I@937n^teQy*U4%R^*ak`0O^vB-3S&Q1 zSNBSTKQ68smdE?~t;jAc8c8MTTOvTJGZ98j{_Ym57J3KHGl!hmq|VF7H{4U=Fk3n? zW*que$*DJID*Nu27YZ}3@o&o_EyZ>n;~d*HSQ`chn*dBOuWiSVmy~J-*W3n(gy?lQ zPR{LT_)&q59GNlC3Fk5Yh+DieyqKx_)H9hXH25d^vp(ZYQEMGw%W!spT+kXzuXy|y zo>=O@M*Ui&+Q&Y)G-11q;>X^oSfstii~+C@um4?ab$)!{W3oSI{Vu_1k-v@ZNDZ4} za=q^POL(LRYI zhb+$0ICUkl&uw-hpak{RhG|nbU}TQ?TZE9YX+6 zmEqzPTYZ#ZR9jZ=A>sCrssJ(l)|U=4(IX7y!KZX8NC3oM%hI}r_HXE;?`BK~Ri9G# z*M+C`{NR)kyac~{Myd)ks%x~jevd4fbcJsWETXy8MP~+2knGo=%GbZ9DbgP~+9jW< z;Q$-ogtIUi-ge3|QDkBw#JDB((6&8WHjjv_f|xebcbNf~?8njhUn%4F?isz05+pz) zcJ2FH!;~YS`R%krdpogwm~N?)dEQsi`M!W?lKT0P2|8M-G3E zw8IR?yZdnaC&D?uhlTDKSc${`(^GuFVK~+LDzP3?>a2+DA!j!kYtK3)n6r(fIVJ0b zs|yEKq;rzpm`D(`o7jT7N3>QGE00fqsUuE{=@kIO6Eq00R>G7Z zGWu-^{7bh-0qIS7qr=2+5`XzUdAaz|kPQ*%MWrk(mXlCaq_mptL^E8Irbys3QB?sx zk)3Z=Q)poYM33*lf!{TCb&4xO3PFwDyCwZOvxq1UoG7j~W2kBjXHzs_lb2%-@fsQ& z{9Nw%d&HOGnfd$dtAfJnpj#*{n|ZD1K$)6iu6-8^bk*0lJUfH#z?KSe6Lbv?`NV5i zI<*LTxaqNu5Z$`A?1VMi$9nisl5TJadGA>xhsn3|va!?rc-O<^ng8)aasw zmqa=`p0O`I@bP&$*IZHIs=QrHb>y*;7nocY^$NOv-ee6C?)z`hAi5TU5unb7P zN|VPUPQG!$Lc#cu;lhbG^ab6#N8Z)ezRbA9@Qgi7nqRBPa9C1m8>> z->wtA(Xyv`)ed0mzGAzq;qC!k%J2G4GjS`i;SzMP-LK8eq7c75XF_KIT1;$!R{ z$5LCzrGjS`E#k4k^NX-Gs-v9T&l_`F0z5=m8AZ%wu1Rz zjO^mC+-&3D7tDG#&5aB$DvSTg>%ebqaF#j>x&~PvJ<=_^- z_fk{8PnM;(-o92|KliInz4OJRZdr4vIRZ}e0wg**DGvk76b@HnR{B3H zjzyLI{6rh3aRR-}?b`w*l7VB0SzzSUp7;RsOt=d)f>`et6!e?qW3|}rfh$hL>0u^$ z|^TQCxWg|v7t^Bo{e@O(9>4wQ%1_KJK^dFLu8=Ljs>9;5m^J!{IAAR#-9 zZqlUvN8_j99+Qq4J}`EOzVlfBnGooZ;O$SkoqVRc#&}m(esphV9^s0NGrL@YZe?x# zv)s4sHm|e^ej-lXC-tiM;o`N02*k9PEU}=Evm9&JS}H;7K-}8Yg)2f(`UtF{y_A%f zv$Q;mtl2{6=9Chfc;O!x1%3+=6e(M*hz<(MGa-~cG5cNyeT*UzxCsqaIq{PA@3A1Y z9a{`cP2ElcCrzsr+X0~@jNq4Z4ZPdC_^W!#PNiHs>X>4Ux7A^u^TN6vKK50ecTH0R zQb(X^A<-y4Ac23>Yr&t199}F=oObcGF&*SCId#fN;SY2|TJ3aw<@`#9yw~Z9Bur z2xp+Q#Ke*()!IQH3K>hV=+u*E(B;f~4wlLnK7RcayILt5weob&eo485#xpP$r zi^Zi&8c?s3l7Kwj-(5tHv5NQ+k$(B|g^4@!_P zD0SOl;BdFV%FHA;^miUpJVC3gHbv#dyT~B7u5U>rCCE1 z5(P{{LwVV`qgVY890g5MoIMQk+(4P(_)Y2m;sP*>Gly6JiW6OX^E2hwrp?1AZ@F*7 zoT2vCx|3dUwv7dy5>e}mWe#$zuykxLDdIvta`tu1T;+tUv}FRb97K27}wkFX11DV5$h`gep{)tsNC2p5~8IdrI@DXE!F zB~v&ptp+PF3kY!jZbptbC+}utVWEXzB)%Caoh;7;zDBsa8(WXH`>(C=Ps3VxdCme+ z4NTZ$^scXU9XxacTT>yN%E35x9P*0+hr`diw)^3Ug%siQSO?*ho;R&}K@2nJ*lEPe zq}*-efyezO5{M!bv6&$s4SN0@_pOVcX7WX^+6>iR&tQcUP0fmkIy{C6>LPO;ejp#M z(j!IiwFgFtd-q-4UDiW~jA7{MB`0e9zQ~H@={cJn94Za(ai+0D8~aZCAU}T(4%Omx zwF@3rsXKRg0}h`_u$w%7>C%JV@o|rcw*3HA>&?s8IJx_FxCxq?8e4jP^LDd4MeJJK z?!SS{z(&I=wi!=gcR2vP+>vu{Jn=1Z^(0eQS0G4z-)48@Z%_~pK@gzYCr@U`;UtkP zqgG%4Yy!Kl{Z!Ub)sOYy%0~u6HLm&jKzK*6&;1e>L1yu7ep>z^0+U&Da=Ns(#XI+X zGS3G-fjAF+x0^x3syAqBer2&!kCnazl3;zrE#@`~yFTEBHUB0>cwkP&3>b+6_%*S{ z5VjH#Sj1<)PHlW+Y}S%)c-g?<+|`H)rBC8Z!t#j1?p*;26=r)@r{dUuC=2jUx`p$P z<Z!ru!xaSEKv*FjlDsdi51-9<0z1@yYFPZtZY7&w}fsds4! z2%LuN=n|Gz_SiXXB38=pb~{PHEr#v+EOCv8bdH>M;phC5?y-d19-a|(1lGX66UPLh zTo#e^KRbV0g>z0*3Zd?^>u~Hj+IelTmYHZb4?AaK;2bGwPliTO?28xl zYQ?t4Ng%iY`8+&ByZiw#G^RcQ5fiDkzs+AmnTQZ$JD~7t77a*dGx017He%rb9ycVlZzE z#5v!ziIhSVULQ`%>b2;MW=bmj4gSpNLGZPCzB zekpN~45Zr~JRCP6EFWDlz6)t_<{jl5`vG4PQ>2WIYaY>y(ev=QfsB)_dwDx3^~$sp z3Yy!iK7O=^rw5W!ckMpx9Di?O8`x@!pziVa4UMl*niEkd6t-I{^V$P$lU*qX33nS~ z2uk5>_ILC@1!eC##CzZqy{iM@M(QD22nm{#2gQ63P+9MC2WD97Bf4jgXxhngkcnbq z{7x~RHCRl0KKr#f|VsFxXgYw14{gC z$NAv~mq7xx%w||AU=efDOMhqE=g8VWIo_aA#UHU`c0boO4FOB02OmFH6IWC3J&jh^QZ|8~ zy7N3rCAGIacMUJusKG7y`!L>xcj*ZcNp+zOr@<+@U%zTFdV9l==xd<`9~OJ*yAu?G z%4R5s$nd?SFuZ(uUD0L6{ujmA;Dj9e0M8y}dn@^)gM04|*3nuFUt@wX8EQr1|6qU7 zIHq+g=3dkj&6U*z9tBo`Z7_?-jDk{K*#YZ-w@fVMFW{$`q`~MhWft0{&^ucY&NZ%d zk$dE4Y7DJ`K3kRTS&&M8kM_=#w|em?NiKE&8tc#l`00Vh9qf>SS?tql8k@lYb(lJK zb5KJ@bGyX9$tCl6m{e-YC3gE4ycCKv>f4G47f;lEsxGztf9DKQIxlfEDoH_3iPo3N z8fDH0-0>rCzGeFT`MY>u{j(Rzd6uIxUN= zB{>Oj3zp+PSV@Mxre2sNBpZBwi)HJN3DHBa)MvQw>W143 zfjdDEru^}%Bdgut!8{@L4FJD~{>51*xj4sU(gxICr2Y>0!{L(7uB$?5l2x*#?+jbJ z8IicrmA~LdvQiTwfKQkp6#aztm#D&Zb4Bx{3*TMmj%TQz^2hArWsHek%)X4|@A#ci z&XiSt_0Apk#+VbU-z!Eb@4z! z!7PxH-dJ-W_*b#lR%vndm5%t`ups|RL7Ne`!ov1_)YKP%mHX||R(-M_dH=#?sB_UK z27^RX=rAiCJo|E|aVqx~Jw)PR)UHOSZ~V1Fxwl)6Rnx8c=d#DtbbCJQd~ri&tK?lH z-ysIfTB`-O69+5}hV=+>eDwxv-}Uj%=e*0Bu*tD{W!u!Qu`tP9EB4KUjFM>R2iTG4 z_Z!9QTG@A6ogLcuU3lm(T_;e?6Sr147~X3hv+{jh^N?FfLWoqGon{Y+CB*nNaYna$ zZ>FYl(Xr_DT_Rj(iw#j!x1A7Psald=-YO|Y74{7pJ($3II)6;_rxBOB@-U)Wnq&9n zSLOf}(1^0n^Ap>0v`_~)+o!6W$;}Hq3KV;MK*4Z!;g^rQn6x0B!X*7xF0`eqMcr7w z=dmc2%}O?agM2fQwF|RetF(nZJ*1cS_%E67JyPNUFBtgKe;{av?sw=~%S{?o1DyF3z-DhzhQkMwF zw;ofOiYqMZi}W6)o<>Thk@nOaUS{C}FxCzKd( zeL?HPViTqiida-)X;S$mt{+6Q2hM7MK)z*)Jj%~Mi)Z0iTVoiq{q)egfF0U9x@#A-=XJ%lNn-C?mz!(#g3r^3AirwQCp=~;7 z2K+MI2G4CHf;rfa#9>sy2AAmC%Bk^GjB^z)BTXS;(TO=NEseeF^WS#A<<(uUtVsdb zvLFj~GZT0l(P-mBoQWA+(SPx*@)14nX)m`pJ%a|Z7^Ypd*!-pra_L!Qvc~Mz8 zS-J=zB;E+SxOPnsR-geFi$V)JR+qFfvdO}Q*86c|!Q}}`P{yWa4nsP07>=*+n-$k0 z3HT)hs0zSQl&Ev=Dc#0r+IbRYD+t1icbMHXBu5eK0~PL~7I4u2oykzF`saR$6N$aIYm~#*QtxSQ-C|-mKlb(V#0Rp_uBKFl zQV?Yx5`nWlYs6THzQ6QrsL(OUT72D#j{aY+13EM;7teO?3M*ojLOi;6U%MUkO76x`^Z1dPzd-#f8nZpqCO2 z1I9Yi+p*SnTG$%*>Xm2Kq&Gv?1%<)M);eFD3`_*lBt@#)aCHOK@P_$z^p*wS1 zENt8np@!IETUuHw(e=p}(6bf*^lYP~wh4fq;+B!>KG4$lQ_|vg`zL&@T(N{j`l2jgtP^!fll z7^mS?X}yQ(^seo`r7n6m-=tnjxpn}!7T}5e3So1_2{6rMM7K0l`o}?!sc=VJ`k&P) zeF4JxT!JDCg6I=ecExh8QhvJ43o^js@3z>fdE5TZypu$7%lcXbafkwoNq=QN%zAX5 zjL3zC?I)3rccdh0yh|L>@fN|xjZsTnD+}6vUlUfCzYV%aX7KBkJwli9p6 zFaas5=g?;%%Q>U%9LkHtEg&(?v4GH^e1!x2J+#Ws>q{puia&13O<_EGZZ5Q3(|Nqp zTq*5(06r5Ul-JY4E%W@1{P<^en^E~AgXefuU1x`4Po8;Ildb2pWBZiBVC@=lVgV1w zUzS3?!;Cnh>^Q%+tUT6Xb^j1wnNDNOF_Ql$5Q_34siJ}yple@|g@CpXqavE!o{NZ7 zY7M_CDG9K|l%3!Ff<@%o%+>YX)jxiOz-zLo-Gzbm6Fpd4CSA7PciUV+!b$7=-Sb*! z$J$Eq{v*zt>=tVN7i8^2g4&Ej*n&^|+}N*F%h`PQA_vn=oAMQ~w!@ogu{?J?-$byI zM!S%5e~z+_*!9dhpr<7k^jll=x4_HZ&ZPa`Bb(9H)IUW1QWDjik2~EqOf%H&3fl`> zb`GbTxdH6LB?f(L3{oZnkP>DE+U@x~O=|f9*AXK98eDobR0?^c5#izW#7=8wMp7>8 z2qK6;C(#G{3QF0>aS5AUyB`%*sVJ^Ljq_Yqou8crFRRrwtaEczvk5z z2Esd)7;VkSiIy}T^pDKk+*{o?UIG9796%c(-JS3Mk_POC>pte4lRp~Q-u|$QE1ci9 zWWoI5gSbB@p_&*Y8x%APu1wq~+AE+1O0NxZJp@!T`3x}F_>3dn1mO4fT4T$KCi-ROyU;oZAPK~TF*3{eJ3 zO3B3Z5m)^dcO*D?dmjc#4xAPu9X{yk;)6GDsJ!%xZLDq$)^jJ*cH=4J=_LS zXDJya9qWc+I{eRAM`zk~K!o>Ak;BnUZHnRlp{kJ2qV$q1Ww+3YIKFry;pq5s6>&2Z zaKk23RXfAOD>rDv+5p-i^~jO)3^nCT22id1{5dLYzZWBx63Lr9f^hwd8Cwp{|DeOM zDR+$rv&#PmbN>33zYvxc00Qtb(szZVXKH}oPoAYyHDFN=8dv={NeP^U>!RisE8;o^2A8wsE|eZRsPqGr-x-0K ze{kj-waFS0Cpvsu^O9Ce@<@CuBJ;6G{QyzqrQ9Jm%%?-7pZzUrBhO zNnPMt*{b%wtLXBYGA6&cSJ7fwXd)=+F3m!U)0|Sw7&541q&oNcHBKs6$|J40n`R0W zoL4<{>x}-4z5@)iY(Oq#=aNtldL{l_}2FN%7MuoeLlErZ6^WMbdj)OixjS_<2m?R7A~#;AdbBt zJ#QPJI74>QNd9gZzsXJ~f+dWZAIG{i(8sU?UL_WPbRO7&GO+z3W0aV?{qxJ746Sh_ zTuZ8z3A;UH7At2X!6kimDJ1kiN1Owc`laE^{>;RAae2WG7&Vbaf;NY2M$+=7YBn*A zih+kG>(lX@l$7-F0i(k`q+|O1`nZt{_6--b343uX1M%DhdUBu)a{_Q(oPJ6)i@;}* zON*S+X#tqw!cSB(#yijE?xxKYuU%af%r^}W!+h>C1~b5aOn8~VOHc8#i@K)6_5v2v zGvzkcb2EyeHSHx1WI)#i9cFF?*KuTdo+BGg*BJJyqoe+V)jy4FtEwKR1?s@e`tu-| z9#5j863=R$*Dt0%0BR~2D+s-q3}DoM7TK2UV5N>PL=h;3P-qM4I_8%F0u6UtBvp?A zNPsi6?rLgkIL-Km7S=}?8>=hgV>;(P*Hbm0KJ)4_L^wr7MZzwJCGo-rekYfR5g`Wi zmU8E%)qv6X49meg!p=|WH%-isZ@<&>TB-eUOY30dd~bZ`lS>SYf`Y!t)brvuMZT-B zQ}|TX_)P&qK?m$!^3wtN=Z!8fpICaudP`RqJ^_OMG}{nBYyh3FmPZczODz#MH}_Rj z)MMYkYwNah((I0rG(E#tFSqdfIJ+^Wzc`)C%X5chAWm-K?#egi z$9l&C9Cvsqeuf$qVPnThw6w0G(EKbEom8Jd!?Ty(Ep~Cy2UGM#IXO8|>qj$FGU4F? zNR;OUa`7y%2xLDNJ7yd5d+*01OI86P>T(wed|8@PU%HDNfVd0X2SlY91befnX%?N?V zn3>5{+ID~fAB6GV_wV8c@FUnP4I{0yt;vSB*V4G!2WlKd7sYRE_G8uIR4UO zUyCe>FQqHMGuEC5Gdlf%%y7EjrIlOp1u%_|mES*fbcA=*%I240M{^C` zAd5 z#9cI!3yvd2S4w(08Zk`w#%~_fb~$tYxar`yvg+*6(W%);nR`=~dFGwe28L~si;LSp z9x}jc6Wt)Nl#ic+=f}DVq>?ne0*-dYLVU;}!%^~iY;1W7VJg^y^6FH)(_Pp>L17MT z-`z)&qHM*C)V5#t|*B1U)VlkbQrDe=g5$PPzsLY+3w+YjJ4O0lt53 zN#mX=d{5TWn#~KzuINgJ2wsVRvpq{-U;@>A0w~otMsn`CKMtx z{X^`bI^BhW2sn9$U#m6mE;kk``Mgf@a{T4pwnnv_k5|XbX8t}pMymJmA^iB+?hO;f z{q!61rqR^Z4Ve^nlRdZEUuU9XL%jI}qQfd|;Ss5*6jj_v z;xmcOeHxF|ba@SUl$cbT_lNz8l@RQ{30cq5)x(qVsV6N)Dq6j~q8)~vqoSnG&fGG7 z@M<%7wpDd?YU6gbqs+@y7o|$r9`q9~EFHPd>N3f{HT~G?HWPKK6-~pok%TjEs3Pmu z*WP25{ghc&bPyK0Gsi=%EG-x3yRxv9K%C~Vfa~fW48k36f1hS!%R0#4a3A~c^JvAO zRzOdFGS<22y6EkIw<&ZY!j50w+RzZO9^{|hgLJ6=8Q~@8=#P_8z&C=z!#!fO1i{s9 zN|vPo7yJ6aGWD)F6VvZArFG+A#RD8ha-4rc{}n7JE?;l5YKU3er}=#~&KAQDa71b4 zjH&l6ZR4*G`?)Ju4O%nUi*Qb*J4KIaq(`4V z>o$8bs+NKAgP^m0n|ih2bAhk>%qK~fDy3LbzM4nd>BPjWP5u6U-iv(6{Ojju{WVd7 z=>(3?6;V;0Iab4JBGqJ(1}op}^LHi}+5Sy*MjSg8x3?M*rm z0zIV&al^hc|NTap|D#>QRRMJZ=K__UYS|xkc9!@tT3n`78!y8gGX1+P;hC7*_%^8x zP0*}v-R;`8)Bi0!(^~wg=)v$Ozm;Q+BUHD8(VfILR-soc{G^slzLji>8#mVu$;E&rxG+t7z4P9pY z7gOnQ`REK;8~M%$KCvfG&pj2cTIzx>K#^AO?NpvJ()WnC6%ViNOeEEWf7w-sp372g zT*q!5h80+%iQ3xrnuYSQg=)2^-M)4Q%idWMeCk>sfbeENJ{@OFR1IjEs>AOQ3_Sm} z-@d5d;X{!y{rjko5d zoH#!Ol>aFGza&cWdD#G`Ja&4not~%Y^sSkJ%MZMwl~oIH+Rz^O!Mvl);yVU`zH0gf zEMZ4|x<6KEzqls^E4TkQ!~|X-$kZ1RV%N? zu3hXz*rd$GXZ^;F^(>Y@T(6wm(GwdQ_5xv`Ccu{H5DHr;MaYxCTXld~z$0W}7Lg$F zJ06bIOF?IF5y5Wc321N!i{@u%@6moq(d=!Q};F%Vw!t#e>zCO718p@i3(V28u? zhMhNG7Jbm9<^)0wzr=}Cyi`g{4$A+(g1iGq&$WjHO&$D0F3#RZGxevHTU_{GIovx` zUwEJmBYt3Y(yi+tUzHE$21R(L9X|U8j~4=-T-V*;Xpvb(bhJo$qjuewA(XA|p=vW68n#27C1g-Vz`7dS3`<@?$c+{+&R-_V(>}^(Rlq zOSH2bO08pOqXyGfR-%UmhnHL->^s1rY!7|88D59C|5b|6u&^|ZB69WoBYGdUiXl3Z zvH4rFY+XmG&@O&{^Ui{TP;V|U&uF5el6etYizFaqIFKQVB2Alc&}z0vRlQ5c+}t}o zorX*OxwM^}q=Z>`gOvY5WtS5r?b*eq47Iz^hZi{u-pn*Vbcknq=BBu# zCo{9`4s!NS=4mO0@8HzCQdqwC!XgFjIqOa0KG*EC&fR=t1QHQ7%>)!IJ7^={lRxh0 z2zauR@$=xWUAvI>oAJ7gO6BI3^m0E$It2z&iW$-RWv=+loXWIN+qmZ8xlo!X6X&-s zqBOTK;^Oji@|$+Ap0i!gjkV=i`SSH`ZeR23>4YEZjdxaVXg{>5svEsK)Uf7#GjGnq zG6&%}r|Ke#`zOnHZ{92}5ila5tb72`l&CmE$YsGLnOgBy$R?+%*@{d@C*9Z2@78dG zEY!ZSU@;1dNbcQlDgXQ$Hxl}^3Gxh#{8r1>RAkLf-hgct^!G;*Pm4x+`9EKQ!}!1 z(}Y-*k5BHL(`oCUTQKrX%`AIEv3_r?{qf?WiSE>o`NTxw!H>Q!P;5O)O^v>Ei8WAS zI=?)!AdF{S1Q{S?di~7xvGflU^bCbXRQ6L^J!h1hCsMpTKWyRTbmTMB;Cb?dj?d_e z(aRgn;l{v#813yd;$><15RrU);y9^^$ry+XR+U=q8v@zx9NVd3m*X`xrPvf}H~#jR zmGf}JtmW{f%bMHXeYJ?U=6!};PhVxo?OJN@$IpZv;^uNIg6Jh# z7h>q6@p6e3vit3{P#lz#lT-g$?(1vjxHz%8(AKYC^}7Y+NS;Lt|DE+Ww)R&yUXW`% zzr5AV)m1cIrSXK|(kW=w7+H;W;1q9?fA#!;{M3)rB5P#C?F7N?0LjQmSdq=>;kL{* zZyz5%Oyn(@nsUipG!bgN$3xW%&g!*g$|E#W+<8@#=03Sq^0FF36+GQ!}@C4 zoc(m!L0bOaU(MARE~0UfMYQvuIkWps-VOMqE84r@lc=-P`D-xrfLzbW=uxcp)A~qH z?2iV=IzGT<|2%9?kVJ^I`zwu7R|@^Jr&CgqI2s=>(4?&(ArVmMc*eUe%L*Qc7r{lM z;kkah7AyREk-WUSQ}Eg-I>*bmb0`oqyUF+EGcd<%5^k<+{9Id0e1S;)3-Y%$(rhj{`cJ_{DFbdYS|1Ly>(~JGquHmxJ_y4 zDXL`2NK0G#n!;15vRqRBo}5yVC3Q>d&h@Q`VZm&=2hTd`;y?&m%00dO}0n%v1e1V}iH6 zgG&IU0|6=*W){lYD7y#Tr};d6qoWyIVJrrFCR#mBPqF98XBir%yj% zi~sXyXbfMj(c5#Zs`oZkvij^a!lbJ9Tdyf`{pV<# zxU6gd(sTD7Ec8*!^_HT!N9w)nkWXf&sMEZ2U82-1b)YOm@I9bR-W0K`T6%RgH4;~^ zrnFc+aPzL1R4^WCIRyu452_R*qU-8HiNXM{#cphw;X99eP&6^zufoZOE8w3aq;mCRupW`2c^w<7`AVic7=ay=adG0$lJ5DZ%7QuMKxk>wUC5B)C zL|f@&W$6>w`>PkQ&x2si4C(yp4GrXTPDV+i-7r?m~BWiCT6= z$PUV(>v=DSB*(#7+~B6!!}NXhSK`L|kp79TRe||*(dEw^ISqiOFuO3%cF<^B4|L`o z6c!m|EDx1bYPp8GooHn^x{!IdHuM7OCa&DkSNfCPOP*6xdAzZ|M%xk;5{6V&=Nu=? zNHVlU5FyU;BE?Yt`0up{5vMsnzI{7v6I^6$UGQ3zDT z^{#!?d9$UX(^L0`W*f`doBO!jeWetOve~31XGCRWp8Hm+_eR6`u0LzSV=DL|F~W8q znD`-4tBDs!Ip;ypBaL87t%9z@=Ze;b7^VpJd3O}d(zE|?R>sw5onNi zlKfGA&%%Thf6z&{b$j?h`$x1L^wRgYvdSHv?)N!CH`-IW50NfI?b#kvuJo1}|MWoy z+Rk6sJvoU&CH==wo;);TTorP#7qFV>RuC4BLeGAfgqGH+q@;|Q=_CC%pB>oQK7ph? zh4g zB2qGsV6N>8+m%|bo=qtC0e*gHx#X~JAqfw6sk06M=}8q#E~G`iSLrN=aTAhYwo{0G zu7Bp*l(TiK1cF9h4v3Kxw_q<0aCIuTcNNILe*dM)V9Kejf0$;z$6p(S{|va5kzxy* z`uZ)zd3O6iwyludd#K14KfI2q>4J(K8DFlM_0L;3CT98g_|mQ?`Bms)_5jP{JVUU2 z+VvA&`UZ`*&@1sVF;~rEe`h-x*xQ<}GB_cpFxs|p2@~Z(!5mt|FRs1N`?uhZwV{zm zW@xtt2|~e0{D4Ig?+)uEH!i7&=NOXkWaay*G2zQjdCYU)*ARN18fS1V>T z&mF}J>MxGPD%daHgiRn7{3ouJyK3*Hb-FMV_46kslyo~Js~a!`%EG-tuey_1VSOoA zNKf9rvaPSrtTrkoK`{hgr*WB?d#D~jKJ@dUr?}*`m`8o>*|G41rqIw_iAzxQ2f=$k zWq;D3|6`ZVH-BD_pp`^jKzd^K-8*-_zUm^0Pk5}-uKI6J)7sj1=cgHxgB8Tb##w$0 z(@0$TbYY~G!y!9Yt5go_AJTU~&Jo=m=eDtrQ*%UOW4!^)t_Sz;?{jt4SzK~KqC2Uj z&85rZmlPFgG4#SBfI2@R6%Y(FTmzPWi}luoY$5V*8^!ox9NUR|;-Sk*KB_#&E4@!a z7Kow@7I7-$(mB1Ks zArrFi;~0{-rky#`;ZM@9jPJWqeoQ_8E<``axwyhsSA~ry)Zywrf$EIY@GGACJWPop zB})nv{{x@KF<~V5SWR$ox*#1Wu!F2|t?nfQqc=HypeoTx8`l(@kewMklJ=pO=Ae`w z0r3ke3@gu^wHs#P`CP#;Oj6ruZ!PV)}>(`9v zx8m(4b;f$uXpf$=?jNXO{pH}-$u@zggT!P}M&VVeQpeq77<%`UKoamITF4C=uB?tC zzDq+TeaBy6&sZ0sZF`()!0<^3CFwmo?Q5luIfCIsjTEAOIpo1Qy8ln}gisAq29@+BtU=-*sa|r(;IR zkFNKC=DP3y$CXM^NvNcfBxQy&vMNbPvdKz9vdLa0TC%bdlCousY$4gQWoBpZz5b8S z)pdWr-~0T}@0{zL`@YU~ohv?{_xtsFJ|EK!=+FO7q7tHqpxH00Po<2AVBx%YQJF6g zuv%$Fg)1#@(p_Vr7cVJ?k^dyq+4Y>$D&8ipH3FjpzI>PjEdO@~zjn9EU{%m3uuivwlj@t|o+2#nJ}}jWwEr6YBg4^PO6YZz`$3Nn zRUs6eV)&C;1fw6&Lo;&vq(G~q76L-S^!aDIAZBCt?&(vUobO4<`(@>CvU+Y6+6WatXT&ggl^+%l5+NaC_*!lOvNULn_PgNkkE`py z;ELp?oYh6E;vf2?go$UMoaTZ_=hZXoX7~D>);GF9usu#ndOts>mX(zMB@C>m_QQ7S z%V$a{sRYgDmcqZIL}|dnhnn0#5p$8tCQVg>vg)5dRBl5LJCvNoy)oJptWC1YNAD%n zKM+`+^$q=PJGG-;rDu#kjWbZ*wSWE1u6^&yJvXX@pAv>jCYggkKG^2kC=X7~tPE@U zhJ`88|9e?2C+yfcA*PYfg)LwxCOpYM_kC?x;-1|;-n-`5U&ZX)vrpq?SXb;)e0prL z0xc27G_#pL4jADgiboH-6<)2M(n!3s>h^4t)iO`a!_~de$LA^0+jrIh-6iK%Yiq*` zudkYl|9IIzVvAdgRZ~zRdi?h{onK$1to_8yrbG4}yK-fxY0@E%{>jZVg@(=X?^IN& zubp{!$%+$8Yv2i%^@7Rn`4S`J-roXU+&NH*>J3dlBj`aTX9Lx zKoFXd_z<)BDt|*|M4y79kmzU57aGNQg-?8#kaMiRL?8S_gWUb6MDzR!Dg>#|De0E?PGGNUt=ky>MBV^hg4}14ng`)Pe zYDs-VJiUfZ%9k%OHm2hLy#hpT+_>fJ>gUIgq?V{~ja=)O*_PrFad9}8=ohE9_P;zG zj@?SL;O5}`$WvrVL&ENLP@aL5F8rSpx1l9T0$sD)A|oPK7mdFURCqjStqnzxuupin zH?WxA-Yf7B`l|$CV;QQU{gJLOfl3lqoZ=Ysu!^FPvhi2m%6V`jdG-OG@$pAFw4(3b zZ@Qfn);GT}HanKg^ry$g?dA(6G;+G{Jv!j(b&E|YX+BbpQL&+c^pFIZ=$(AqnZ5X3 z-v(PToI3RuvA^jLWX}^7ZaKdP#_%+LG{n6Z$VkQ)!`sQ-Oo)lnzTb3!BRLsaD{nHl zR;|2l+ToyxS8k2KRmY{{vMCt+Uuckm0_ke(gYh5UTRV#Um|hY9DX{w%eWeAYG(aXW zqF=Qe?>>H}Yg+lw>O#*Rpg-+j98|vkRJ7MAxO?Tmi4(VsI&B~0Od}L1j_?DWr1!ni zma3CKUuHkja66DA{G6pu;oWbxlU-|m!cNcRF*g3Ya{M z4OP?U*wB^35K9De0sF;=P4^Zaa^SfDvU}_HPtD+vb_W7wns8TN->J4s!Ahi?Cp0^YyOi=qVT9U&Sk3w$$#&k?GyO~ zvz&!xX#k5pfo?&(9@bmfSw*H7yKgLvw%gi!o#y2wQBxx!;F&G_+8e8B^~kK%nVx?X zE#Vi4?>Eh2aDS5e%b~I4;fTn{($A`!#{?EB&CPjL($5@paNs_A;XyUtojtpkHBIPQ zPn|kqW8)H>VRGe)!{DKxot@)RWcQ!$%0?6YHAq+pqqKRyURAY~!;u=&MC3o+Nl9H7zm&3J~nVulG z8*5Q7l7H|6F$fEX5FkuUT-la|5lU=Mp`ol$(!BQc6bcSTh^AfDwfCJV-(-&3HI$XT zx1P9^ZrWpm@k2~X>iNRhlI)lGGbPWg-l!HeHz$5CcE7^4!SZ_hCGBE$K$CdYgG_3> zu$zME(`$%ap<8&j$CT-xJ4jV!zPL2<+~b>P&#@#F;O2(3=M`c=Px;<}9gGBAP^wYz zddn(GQ-1b>4I?u>?hmq^Yh48>J*W{_a*uTolZ6&&LuH$z=-C>CZeIlk_Xxaym9Y5Yv zNc>p0Dw>jxgLYP@{*C+M`X3gvYh|2(1?#hssUkj!a67H>IWPt{^s6 z=T}0}Db)Dk$;;}t#zt=FD*q4E*Og0tcg4a6kR{78u)|Jo1?`CDhIUqt2RiqplK!(@ z=Oy%=XiCW#XGt9M7GZ}#c<1GGy+nW; zQ`xpNuhk`AN(DL7^V!l_TYtJQ=SZ+~QS92c`U=Wm!sGj}nd>*6hHGL@G8n=w;y6B> z)Ea(8-4P4?m;6L&MdVJH{Pr_Oxpq{b`QzBJGsqg3AT-;?+~UC~h1j4U4-5}qyFl1P z!06S?k4V8T&cx8qh=#z@A53o0)-(G(B)*JN4zyk^nLDexo;*w7imJTR%JgUWa2fm`k6nG9mX%3&w_i7#77kvkfPtVRqFNVg#-<6_ zwvv*PV9Q}IfSc7ADe&EKEd^=)M+@*WH&?{VD~WXY1^x@W_jZ0qsPXi?IwFYDQC`du z!n49{{Tb2Z$MnIs7#Sb$zQm*uDbHkxAL|xiQjl;yQZ7nwx%Q!|gTT9?2CQPFQMRqE ztue}DpNYv%`c)1sVebOxp<7W1ig#m!e5hLXu{1Ae;2e zT*s*_TQbvzR$X0PibIDk+b$dE)jCpk6&Dq~czc8*XR)WOj^p*>1RGj?`seDTx80U+ z{9rN29GhTB1c>YwvJl`RxIa{_Z6V8ag=cnPu&N$!@~)zvKUJdDO-$GkK3~)KowB0b z_MGKSh%JxSN8RozxFu*e>w{N^5R9C?*_v$1x)eO!`i~`d=h+jIm94xALtlM;_uy`o z+G|Knvyw2c&lGcx%T(fQyO_q2%?}R*faYDX{c5zl4~Ni5={4W({O6VHc~)Z~oe#xC z@4%m!3hohi7cy9C0EkCw$G>7e(U$;@F5BY$d(*y^sU8=_A(fd_(_a=hlRWV%5YM)% z$l9iU(@s=0&PFf=!Pxd>%_(rkHdB6Ee0Mf zj_=Vab}MN59OoU>dK5=!V7Cg(C715Ji?5G1KaG<=%x(P6`@;9<0g76e9;Lhq=2#dT zE`35wahg%6xb5r9;-29i1q^Y^+0$~&M7%s1&-fl z`bAJo>zzI~?_y=r)~7@5k@e3h<*!`tPm6{fzI(<(Z$Ers1SoUPMrRY-;Th>sye2}Z zKPEyy6$xPBoxgES8ECvR83!b_XK!Z-CP4fnCWBYxmUEgGPTbsMWjO3!AK{d~qgCH@ zxHU<`Um)g>bU}3VevoC6!*^8Xzc*!gWN-`(j(`Ua4CR;(eP>*PhXthZ z=1CC|tutRV017~Hf6nSyv523C$C_FdVnroC-BLu4g@kq_0tIM;~(Y5$}U7U{Tycs

)1JU(x@BSX{r2I?r>#*FN2;x;zqiS>wyH`wyIg#N za#>RbnOf%OveE(WY+B3z*+et==tM9|nS+GKWFE=opDq}+y_O7MCe&sc z8IxVjv$JzT^YNkiKibbdYYq?@jCw#}fFCjWe7MdJFQG`@m2|xoU|IVfdw7tf>+RF; zzpjNHhnSM7wxp%yy}v)8@PPXIdcYgxi;H@M9z8LS7M5f3+VP(5WUaDUNfhW>cZ?Zh z+r6a#?i|0{GhJo^WbNZa4VI+1rsf2>H#Nv}a^+TMNZDfipZ5+1y*+|}>4HZ(6&q_d z$Q-z=RcMku3I>k;aElCK=P?Y(m{thnzZZclA%q7%&@8Og{&QOy1%o}8m_Dm1JNGVw zU&{sw_wHT$>*E3;*n|-vB15ECr>QZ@hslgJ{Xk2sEFnkgXG;=&m|<<$nrG+sJF?12 z*Zji5Di+2L!_@nsI6Da+OPSXfT`0i!9^;eK)`GF0lXuEJOhW*pyzjGSX-Ub_&ODpA z{sWsUu20Dt_GCU>piaEww6mxsk%{QLEK^B|3>1-f1}Z*MFcIVo^0i$X(y@~tJ+g=} z!u>M|bOgK)|>&+J(%zeO+zScjgI4`F2c?Ofi(k(9K7srZ`b(VeC= zZ0dh1F$4}KnSLjgIdk)^6n0_iW-$WYkw-@IW^&Fo2MUZfreGwYTG|J`>kIzw*v_6wf;?`cEZO!P~%DHHEa1(#OxT$V4bpuk7q)kV4UX zmy>O9Rc_9rAK9R+(!Xfl@El@Yt22$$df$eHC6?FJur;pWp>%eL*z)km{f0l2F;gv1 z7*Ar`uP^(`4l#^M8jwX|oiLmX@cR6!_NVqgm}^?0Ry4{)~Mcpjb#Q zmvz$d0ZLZhY_9#FE1>~moNxc-cXhBR)}7zKe^QV<_X-uH`JSpHf?RyMuQ|+{4jh`A zz6|2dMa3U~2N!1B5$n}h+$-HJ1u!_xQhzr(cC~x2DiZ&k;Gzie@d@9vU-Ol_ zm?>`AgH##H+D_lASnlaI2VJrnCBB`kNepK-7%NHS?wC(@QV0qv^$srVgAaMUYYo<< zaJ|*}DCoDUnxmqkN>&%vUcBIwxmIdF+PdZTcl5l9T@cn6F|0O(n^ET(hvm@gA%KyL zo2JUxn-F%Xfqs^EP(?uf@eLy>=BzjzWM6Yi5DCmKM*G4POS4 z-xEUaluVOV0bN-fgzP#wbo=7t;?gPOGWe5-gkp<@hkLP=h6>s}eoVvxW?pwx*pBNJ z2FJdkAy2$@5SXE*yQ93q?)zj{L|c1%V{$k*x-%HLxx*k@Bf_5$0L%c(qf>E7-So1# zAOxqxch{G*0R&0f_(0d>$*J>MR!$D?^5)ZwjAqNzC$jlA-Juz{XK3i1W3T%k9@=K| zTw?McQBMT7`UC|L)Kx^d0^Sj>q%VdXcq_#0SII`3xrbV{WXwkzI4~=rb2(_feQmY& zG%yQHZU)VxEY9nkp;LuDMVP7qnnf6Q-1?eJ&cMR*6v~bI+^kQJhO=|mED-sjb}fXU ziy-{fYg&pu;=2bEr;GEI`}F%fD}gs4oA-L+oiBtm&&|#B$F6y8rgKSyWHgvQVK`o1 zc1r=a1A%5Fz;L*P+|YJS?>q1*F_Fba^Y3aQEhl#hdVoPM5tmJ>i(g!MgTbp;p-a=; z+L|Smj_r=)OKi~h?%hI|E&FkC=(mD@5K<@ze{G5N?L*rnAb}wG4$f>RK8z^nZ?s{c zLHF$MmT`1Ewz;Wh(4IjJjQRRhcS&3R8ZUGOW#HNQE*0#F2?z>$o@{!Sc-QNJd4m-* z6)_t*7Ur>m3!Wc7eYb1AXJep{i zYX31keR2K|rw^Ex`q+AXtOR|V8)|Ou$0M-n4h#k~^0qR=6{~!6q*?V{Ip5Dm%)PEWvB=q5BcqU$g zKLZ>?SPTiEbDndU{5_5DRm$;^k`NmZF*BQPYQ&!3s71g!flK>e9!x&hS_r1`={d5J zx+%4x>ODS&9Lx`yFwrcpKKmFKx9>4vOr!^)j4Y`Hd+}pe>2GCa;c41WP2)za@y!Af z@kmV@CHoJ#rFHF}r_0SHdw%}W8^3S`6(_OAtvy@&34>;(_WCkEfY0Jc2{J&TJBS`W zJPI|TJiL5Fge$r^f%PEe6av9R(b6D*RU z78j2>6cMqlIwb2^dHDgP5X31;Y26uui3^Tu>a(_dxBr4}xN>0QlEdGOcuk9Ws1I7Z z{jaDHd5hcdpNINsG|?%9rv}fSQ(Ip4z;xY3!%^SR(6bx-&}p`}Uj)o?6qmEO_lcj` z=@(r#?E*04%6@sM7;H}cOa_A4odY&yJ)n}qok_vx2V*~MXw=I4()0JxW<%oP$S@^n&Ny|9Diy_@oeMh4ivRraqplaa zyhty8@17uV7DbgV*W0q{>YY(r1s06&{Qd8vN~WwPB=u%k&W^)D?_bmClwceqLMuH1 zS|YGVNlAT!V=Wg?U0k4nJv#cY#*JNm^V?It>)x4qKwQf_LrTg#3;6gRMQWGmVQGFI zrAs$HQ3J8~GdH(2iwU$({i_ap{ddzyO{FPrOU)c_r>@iw|3Z%@V3O zsw0aUc|fn11yvWKu9{mD*;*xr@9?lffi?0hBm0i+|> z0Leil0DAK7=K95J*Va$Tmo=u}?H{fGB!Xfpy^-P7)dd*it>s431P_>xuXygv9ZzDu`upo>{VC2v{U?JN;}MjXAbmn?a;|SK zfA%exE=6VKs~$GBwEJA$-665E{r$o&gkkQ@8@cS-eSaA|3k_PZ_zB9%ksMQ07acOw z=ePQ+KH+OvUOCsjdzA;D^shACix`F2ZPvCfiZwpC89w@~=ute_ zy5lNp20h6dYo3TvviN;@2V~??lP5)-R?kBf0+RP7QUW^XDs)sJFhcn96tHTJ^75k24Q9<0h+U7bTr7)@|{ULDFy(lE9|b_=v9mdn#7m!0+V zu)>eEuKn(7@WanebpJp1R$k3ymo|2da!2cp)v1QA4YETwi@=V@$&*0YrLfvEhM8O? z<#$bA8NL?)F~56N>n$}4o!Qus<4_D*9_CZ`4&X$~dR0-WiSqwfIlHX*U(m#few%-(Lw{ zJ4blTZN+%!Z5?F3gWdp!%EZ622k$Qwh&qIgtbeMqX6Y43xxhMxop_ zGZ3Utpv%J#D;~uDY<*=|5kvOxUQSnNdnl;}q+uNxIn@;IqN%9ja--Y=FyF6?ig09^ zAo}GXQKr$#vyC-|fl8KlC5LPV%E?t!9JeD1<^Sx0l{FC_TI7!rE%W64`zO_3>}LA- ziAkI#z{S6O(YE{Y)@Gt=#)DJfPS=-p_(1X?xZ@Da=Qm8)9mm^bIsQ_*^!>7TfQ%J8_~Gk%ClU-q>-<{})|Q35ZcP%Y>N6RM-u3 zO5uj}AvHAzb#=Y^grI!&ONB5FuD3L~rKS=p7`%V}EP?JTP-;tGM~CB(=~genI(vKD zb#G_N{iX!^{O0?-1CRF~|2$BctV(%KzNIo=>t${@nT;wn8`(~J(K9!viyw49y6$_a-dXfrQ3cMbM`9Q8F}IZ3ldPz1S^g9QK?SYd9M6y9K7Qg|d{u6&W9&BRx@B-_8d9``Dk(PCk%v`Xm@SsN-zpAQ*^61d5os}*H?5PN<(Tcp%)F!VL|Am3>NAL#`X*bq-3P=`Tbg$ zg}pQKi)o$7Ji1@gwt9fTsfKvx%fpfWf%{kF8g%}ZN495hvZS(Oj)DHJ?duE?R7uB# zR*5mTretM4A4+dL^m;?b}8IKly3PYi9)O z`1o~gecsVeUwCaMN6EXdf4UxiZaq(oY$c_36!{oa2e`uyO2*KT$o(NtuDB~=0orMFT4j{NmFi1aky_ww3RY}RP;>K|!js(vp-`tmfLv2hnyYhrZtuCvIZOO!hd^3owbK3+Fo zSwbQhd&!0fhr@O#gFEwRJfN3oj#ms~(QtmUT;fFOQakaLfHmjYY(JZ1s7Pcf$75aL-_1Kc#;kmN7=Q`MnTZ&Kn%zLGZ5<` zv#RoR@_y&|@oRj2Ip$i;;C$eONDEq<{Rccm~l_*H#N% z=m`Mb)@`w#)eRLi(p)o}F7WO)k!75?rEjLh=6ny zN9z8IL6XR|9>V#3+5YMO5=r@6BGb&jM=yErBrEG5A3tML``2?7klX9BI?qW$J_!Ra z-H8(n*btjOtA^Bskk@CKvYe68JgwY{tEFPT(B8@z+K*51@z-z@VtE#GWesS?aK5~Ywe{kU@1r-zHD_|A5+ntyCHK+Cy+W+9n=p8=%?Aoa- zaNGf@s>0zVEB6Kg6q3%)ClbY^i}l_2`+w04P|{S0Ak!?BQ(nyRdl zvwVz4c#|C`4-w&>2n=LS=af5jE_Ul5&g)%ybp%w<=WK)~yYt21!MJSAevJAHCHz@X z+P?yCk?qWX>DE2`LEhY1A0kAw8l(`sUsM7wGs*9G0Ae9OXy!F!Q zzYo-p|F(egg60p`Nr(XcpOzYWin0 z{bbz=;X(qBaSvGVn|=D^O?l)idQB9MUR=HTZqu|Wb_skX2ugml|B)OE6Tz+uPglU^ z=Oj%U`Np4Gt?K{L0;Nt- zh96A{KOU^=GB=;OyJ1hKu5O=Z5=MUKP7YLJeM5ROQIgE+h0ZVW(_*5$fm=HzZIng% zFx9n7!1`+kDt6MpGBz3?`IUasRB48X%HZb*PEdG9ggZm?@&pO8%7+h04;{)MY)?># zI|w$8qvOgy9+p0iUz_O!POe;|?j>PwCL4PI3}U_)yJYNhWErh$_5D&TEMS zBpteNZmF5f93r(adj5?0mMrmIy_S7g!$`gJ9amg2-EK!}-}b{Cn;%m`2}^mM{G;9x zREZD{c#{3sKE%f(t>FJ+0dqoPu$#S3PiKVr3GM#bH- z7wEjUzJ6tM!YnPVN03XndB7u6pOCdXk<8~}fE|N6^aS@vP$tL6GjH40LveJK+v89o zG4@oq*w`_|zrKPId(Xa&VCj&LZ~4qm*xP@BEB#qluFmpo)h!jwY^r(gu1!yTeG6y1 zZ1llOMqvaS?{Ps?wD`dT(_z(RNM4a}<^dx9+PLb(=k%kprg^X4E$0wc@+~%1jyb;U ze&3}O{%3QWqXoN*dsKh>3j`iw7(G_c&Ft_e4ef$lyJ1FyQd049-KM>)tUw%$5fGxn zk!CrZ^SeKNu8voVYC4z<_`vmZg)j7{bnm|4Zj7A3G7Ted0eJI4KrC|M}g}79;BD zMt>RGpL(6UFLgz)D!uWU*3)iiY6|Vj6;%aS4^`@-rc*xL2gN12jiJD}<+IbqL)TzR zxfy&<+-zC~gD8W3-6pG0bg~wtj)FaLUC?i&S&hB4x%A^Ng{gF;IQz7FEB~d{9T;ft z0pMT^++ZnNm>nboo;9m^ZcI2+-&@oC%&BiC8Qv919u;zU`N>3X0LRnBa-*Jo z&=dANP5w6s{0 zcKm6oI4V;|?dG0HfVM<7m%|{JTOMU0BUmwQm(Lj_<@8Mm2*@yTb8GbWu~E5M-jsHd zv|T=GKY!!~!G8=wkO(M1N){dYV*q>*oK6y}Um>sr$^PNtGT4uCX>ndKx-neK6BS4& zbVpdh5a)jIqmzTW7%p?@<1ge|8zansmWZIFH~2N2-#*dPvl3QkZmCw;xRq)%yzQc% z6VZ>tEDbWecS2^r}Aszm)GibxkL@jH)cJMcZf}x88jz zx6>5NhFy{dc3Tf}EKQdJPgPZi)`^S?BUnPP&NBQ5f7oznPYKE3(V~1iZbht_N7F~2fU_fawTfnVt3p|dSctz0s1?4TzJX2xFQGRp&)gg-b7i*Cz1%ZjThC1~yiMGkrx|y1L_|jiZd}Qij5U14=#NVe zHE_c;cBik2)Y!Ey;CBX#evp!K?qC+;_+qRK)yllXMd2OBVuL!r$My@t_cvAw1Q;>NUwV6g|Cz!}exfttp<@5RrKX04Q{3qpd1TF)pwRhs zJ2#Ubk1mlyl2NJ0;a_PNz6YiJB|za~?t8IK{fh0Lmv^o>GZOE+wpX3-gcV*t<$Ll9 z+m=SF=z+~Dl#{wL$;hD@_c%y^k{*{aS~ez>+~DV<4xF0k;KiBS`|W8iA~q?Bg^OKW zV`5}pb|5GXB%2A6tnb}d2>b3KivCMsdU_HxB~PH$>$Qx?@lw!rNYp8xA7SyI<+Gn> zLiM*d@H@0@#X#MT)ZT9%hxzxO825~h)_XaqrlJBWT)MNd*L3pMIQUB~n_Ow8RpWSQ#h(oDlRN`s}rz)6ishfF~_E3PI@&8%IYJ z>A~V*7$~p~<`D3Xua%Vz`}ooMds%dqVe1v!LWRpPC0{N zrhOSXkoqnq#cIb+HfRcqo8Mg(b?Nos5N2W>SN_Exr&yJ7(=N^eWqt6vmS-4jL(-(S zwrpYN4<)60M9PGx>mO=S=yZT2A@=3lw=LqkBMqk1nfiKq9}^PPdIuFEYeIs!ZA=az zzsu-X+Ch%whJJ@V#f8#l)0)5Pu3Qn>o^roJ&;5eP`t2i9EzQkpi@%-_D?>+t6e4p{ z1GS7lkHf+k8l!iX3nyrFg#P@=KstglM7Gp*EV|oKz7QH2sg^du!;^{YhILKoRNw2X z?_qHocuvOyU|nDR>$HHEm#CzWHR0I{PmIjeGa6@vTp{qBu(3qJ@;%L$9Q)W+&Yut| z^i)W^vk@@Ikqn=3eUe7&!K}ky3`9kh1CPdN1}F=8M}>VtY9vq)>8ikqN_Fzy4P}a@ zmMZ_ne0yqI9@Yq{!z4<{-4fSI&nP9o|1nS@_4ZP;Ct`zQH1nT9G8LOLi+`*by-nG4 z>ett=uakW8B)Oe(azA%%oFTj?|9+Zoymv88fd;tR7@hdIST%`|m2lmYTqW(aKa#cW z=Fje=q~u;-=lMO}d4i0L1w!QAd)J@rqYXSjX&DIXWVVxl*YdK8QsOI=fNnQ8=j_b2 z37P0{3CNdroE^9ViLQsQtko$7a`1iV=nMf#LJFiCYgmqAN7S>=Z_tKeqO)!h`Ys`Hzq(L zNiHYeiC*7alx`;c|@=!@CLBZf~+g`q3=)0 zvQc=jgrqUb!$JGq+>V{*nmyT?EY1)RUH>)pqSNYEi;)HzN2lj~{povI63$4jJa=P7 z2Fo_Ivdb1aBQNUX5dmu+{mQlFvi?6G1O`W)&p2-f#Jw98h`oeF5LfRP*d$Bh_Rh2o-LN`!Y~$ zqQrFvDazzd{Zsj6IV?kSA@;b(Vbf?lf@y*b4CDt7S(83?-gq|qOTPuM>}ww5@%tmM zJq@?HbGv$s_T;Y(bL4Y?D}P8eGou_V?8G=SA_FarYyS^Z%avLFK(>%sfbtma1_+)Zbzum)vNnw8f7}DkZLRLz3B}- zMc+i1H%gZP7f1R`0=hm(>)?xX^~g~rLcNv0zXK|mfOt%BAtmft`_3z8eHEA)FJ8>P zIwxo~dcGqwV8S>QN7neS^u()G92Q%f$B`rdT)eun^3|%^hyOX6Z0Qo! zvR+J2dlJGCx^fE%W!>Q3D4?{7k}4c*OWl&q&D;s2J|WB|HdY>bj#QjR!fQr+zP=>W z^YanXv<|q8k1MwptJ+pnNWfC~6h}}~?98^6m2BoJES!v5E*r$?xsr^M%t4xwf0<_@ zkkl->J1Z6gONojJJYy{rx<9;nex>RhC&D2}NCCGT)Q4eL)=*X=Mx%YW0qgFK6OJjPMyQ3J{HE}|nhYtFDvg>X!C=fijF=+w0`k)<`g zV1>6)#XWNfM(LHAAEqmlxi<>dEhy;eH&G6HbGSBNVSo3bU~YXjTHX_c%U*J#8&8{& z@s{THUoDyBhArbm0~N$gST*%(jF6@1QTa{nF$F_3JU<3r$Jgi(CW}1(PekjB9UPA) z*W=_?$wiE=+b+{pzn!_*+e=S`-^GubrQnm*82d546w#IzRK8LR**n$-vWXMc+{af# zTE2awk*SNr8U2|{>v)(X%799mn)<%f!j|AZek?BD4-Jbb^Hiz~pzh{bS^I-{AjuA1 zlX?B7vs%brFRKj;QQQ>L*c6C}cTx1e-u&BGVq~zwCHeAAX0@-k~llY+V3aA+vLondsn=h^y-T3Ebc?fUkVV*XFPPg|Q5=>kWU zld7%ehHBb?n)9-@kVfvM*>5CPL@GJ+QV<)VGV>EgBy{w}K$zm;*Z88ac8QB%y&h?N zmC!`xTUXW8bhiRjAE-@m_K6W@B0?<4}AqIzyPSaQjPLLgUI<&N{U+dsV{ql6TL zYrDIBv7jQk+#8s(@MMpM;ospM<33WpQy5 zBGHog&is%MTv|>Wl{cacsHmuXLP9(WoOJ_6VBaGt@}%V~Expz|Hs+=94x*rFjzow0 zf`1M7=guuvl;0rnX_gfiKMX}MOtNVAky9n)o!2)s_zos~l7A`gEvI{2_urAAi;Fwq zM?+LZTJTdG@ubEzU@B&&wYeH&@baIe6D@hDTbpZkTm0(P;(bxp$@g-K7w;Kxb`DCM zeh7(3BhGF@zUAAumJ@d_U>0QVD1#tic}<2!#x*cq<+N$ok4%; zW4CxkLo>)Mi0l_1ox-KVp*e82sgQMv@$q|2YG%a-QD&!TAE*@MdD4~fjiBa_^WHUb z$Xm%D#|$?Gu}7$ff?1pF%B|_lHdOsOO?F1+MD+^_`N~IAkbEZGL>uW-q^alR*t;C} z-Ud9F!!qojo#xaE<4kdh=x#EykE-0XL$&+l?j&7yw)0fWx|f5Y6>Cc-0#c^#ewslQ01jNu3R{FEEKnSs9e`8nbsiXJd=WglJn<{!2Z z%B=XhQoZ1xKiYNL`t4h)+VgDPEuXcv7*IQ+nsdP)rzq}2b93eL>gux>MP5ce#uN;k z7J3JvDC?AsAU38(>6QrdM}Zg1yyBK)AgM+_vqPuyZvIq#*JAF7B;)1IApmn~L| zr-M~7=LVnz4SyTl92Av^Kq{1af3P;TRHe45_EoSD&O0TZxFwJ;xyaDIW(C? z#)v4ki*E`m%FFBgJjnsfqhhkF=N>*E)%1e0q7Sb=6H1R^;%g!0PzsenzR%M~3S+K7E@<&2a(zj3Iae&31LcIe)Dxy$x zA=KC{O}F>h6>Zqc zqbzy&;OuI`&VHl0iH&d&{pGgaBY`itOhQV4G@ z>m*c3h41f3#?z$%4s>xB_R)n0{ot~+9Fv>O z8x-Bl^YZZ_LWV-Z^smZ*bX}>P1zxYpV+4DHD*JJv0Vr0qEpR=VM~iONwD7?W^ufPt z>sb2!D;w^_MHC6}96F@bnQckQ%d4hp)YflP`owW**-@LHkcw~gWAa9Ej?$&~=-SQiq>gEc7cZ{K&D{daYaK2rdCM>dB}l3M*?D7zei{ zB_02jXUC7_3}s71GIcUE{Aq`Ocu{9s9^%-1BVg0#alBOl`QgFug+xxDEILe1PB*{6 z!i|Qs>)w-3Kj|PV!6G0~lfBL<4qunl^sGfuO(GdaGXP>lKz~Xwz7SoxLWYES*QcVC zIJ*8RuT-uJ3Zt|`-~qDQ?+;e0+S=7X`>ul!d4jYVtFY2YcR*{rB1D`db-1*&KEEM}%^C)v`{=pOtFf+X>1ELUPe4ny-L|bg(fvuA9^TdbE*a zMT_mY?vwaANvn=5j@N@#g-q;|T;g8q<^JcS%q+)Ty}d=`V{*<7$OC;HZP_@0Q0BBt z4h~CxY!QxF$F~#fb7~hmGAr|(K3nc>HRk-L*>GVrJFSNR04-@L*`Hu4o?O`%tj)8g z(JFSJo0m;3bNvsVEM>J!qhESALQGkf=2Hak8*N&5yUIvpKgXk=pj7j{GX5OqHq9X? z)9$=V2;QlL=VoSH7)+-RQ&F8aY`JlWz4Hdn6acl*WZIB!9k;p1o#xyX+-czWVel8P zDxlIxQ4RH*IYEJEE%`yn}3bDr@DPmRz~_I=;$*&BU)(V+JXx2A=yh z?gm_TKb*R7zb?hWgD1zBf?{fQWo1{WYIfLBGlu!$LqyktQeIwkp~=FID@2=};cuo# ze!jEPdOy1`-Zg(RN4n=-{L`wIAD_X~j2jzo!aY6Na4_nv%udy}wz?$d1b*py z7Zz4?Sc{M1*t&@G${-V-JJrlYJ!$#8JSzPk*TutidkUtiI@tqE8v}ogz5mhBKqrvt z-Pw68$7)O~>C#4rP)<-yvcQ{A!9#Z@9sLH!Rm_=+onsAN9{wY}lnpT$gfAb9^`Qyr zDM*Z-;B^?hmiKH>Jnm3hNzg&&pfU6|)bp9tb&L!#-i&^h6;f^~r*+ zsSp9b>!q&Xc&VIk&xXz{H@pBq>tZt0;XSyLHh2*}p^9q%H{s!Rn4-2dH_i_t8}BFb zCF?$1VKBEg@pgBo#{9Np*Je?L-#?J1pZ9h;lwPROp(a)5lye6gR?dSKVrH5P24Jqd3uTfCVf0FCc z&=7!QbsMgZ8!|4h@}0Dv?f-(S!@Bgx53Ywz7oZq(2XMm09fdxt8|t0ZdezgnRV1Ao zqp1FPy)9>fwk28XCSnLj>PzYW&(1k>AT+X1)y1PR*!Rp^Tzc@6QkwO%zx|3XSsg8 z8PTt=3BmEuE!@-L;6lo;UftpVaE5^as$HMi-$jQ9pVJ*_V3X8!!o*szqPHJDj{vp+ z*@Fz99;S_~uC4|U0A<`ewss3hFzbPnGV5xWtVf%4`#ry3U zM4>(80!&-ema2s?1cQLqLeriI&;qbnJB+tc+}zqM;WNKS z2e9nt6Q?Wx(E=z`wl-UZvRdl^Jzg12XvP+JuRUWhREV|$Hlx1LOG>?~nGc&~dvnjx zc^Pc1MxpUFL^FSv-0j;%m@JonKfR=zEd-K@B=$w-P=`qZ2<-0`QK(CxmJSJ=GW8cT zZcnpsG+umDJiq6vYQCvcrE)e0OXb@6wan9mcY?XdZO>frdF_JnB}OT#o(tT(Sp!8+ zSkij3Ohw`{gia5fy!~}Y@%qZEs#E00_>j{;9?PoMe2_LNNypskc!Ez-?0TOSi@gf3 zY4`O*Pe1;NP!y!Y;FcEd(J=pKCfi8D8$B#ZK1rQNAH z!$6+l;>C+NxI!Hcz8tvr=+V5NjRq4SCoQR^$2>^+&Q2v2`MUlNrscXJ#)iBcAMqgE~v5s5rByD>^JW>Z)Q@N%5Gw; zL*-NT{0PJSUK=6=Jf6SMgkQ&D#4bI{W}w4V`HinH68432t=;dLCLgJ~EtQZ`i+fUx zS-O9wU!l5YOYi+*u`&y z41nJ&bF5KgYWR}@WLFi0;JP|MN$H-PEPz+<%fsN!02#&;LXy&3=R6}+hz5twe2v0qmm#@Ed z@oS*Ol`GqD7@&E#v@F{4rMc{2)f=1t+T0U9r#q^AXi3Z^n$>n5O}AfA2NFpvbHrZQ5 zLig5u&04!W#jurKHpYt)r{zd@{x*>$TO(* zg7d0@L)`GBF1^n{aImVy%B(8lJ%D2=@zo)j{ko{=Or6EX8o3TQ4!E;qm(`mWveL&y z&8F`;I$@A$@`Cy%@J>(zRbc@lw_s+!`^#nyjGJWdTcWgdvDnl9yhd)kV%gt0b{DHH z3ClFP99K+G3d+y#it(-zNb>yW`?~rI7|2IisPsfg5b>}6KtZ9Yq_u`ySU3I1X5!MjUe$=nqhLE&ixMC@f9*w;~sVMxquG}{ti&kQq zGlX$S$$N%`*SOBf-@h^QgcDE;Tx5XY(+B+aBEBgIk`44-h*^<3z1AMUdw+;#Q!p7skznH`fxS8XQ8FBdwO5ScxCB>yf|{lxd= zDIDok1tEC0Zb(WNVJrdC8Mx8o7qYe;T!At>Via7?tSt7fJw&Y}er>tziOmfGRB1WK zon>M1`140ZEJPvJ3~#Kku!(76o`hd0p*`)Y$b3^=iBX4=d8#Ehwng4a%VWphowqh} zX=r%AeHyOgU&Bv#ePQ6{PVcmP?zY2hKDLjmE~=|l3>0)~CQs?Nh&}uFOY_-3O8&fc z^iZakkV9qwKZoM2aN*)NjP42kfs3qhXW#I?%RRYH_J7vdKI?z;u^Z<2D6H#D%lD@L zn#y5!o#r7ti9EL;wh=AtFg)FIUZQ<6b;lQ(x)p=!GEElp%Kurxz7CtyaL84y|(iXJjSauR#sN3cI@oOcayCx z1XS*%TC}ko`#8_lkE{yN5j8Bs9J~Kt`(xqgrk$M~focbAZEL@H`n(wlhvt19z_#&< zmZ@nEnaPypJ2?v1OXK84s+^Nm8>u*w;kXD?el)L&A>+M4<96oLg?-)kyQ*}0i(lS+ zdp`UyhbC0RMNlb##(R2P;8svhc>Hin!fopPagk#hO4L>+icY+quj9`}O31jBLB-$Q zwsh^lrs4l=oIQ{D9e9Oam^5bT`L$Mv7C0>zFeiqMPjr$0Wsfxs)bQ@!y2XHNk;1s) z|0C%E}HInPrENy&`+>y?@v1 zocHJZ{+!S6+&cf9@#6J-KF0liUDy4(9N&v9r>|Oyyz#HNUL9_n{*IPq>Sh}`58JY1 zM{1)ZODYz{>>}A|Zs~-2ayBKln6t3Urjc&Uy?n(RmYzp({BvvFKHXozKRX&nJlbpk z$sf7eiKQEXK$-qQ1&ZV?nW|SkeSNjj5A53Gz_Fh6X`7lV>mU#|u(J7cnU{h8;s`}C z=p+?+F7@n`N=N@E;`mEi#N*Z7)>LBu&**z5vW0N_yWiAg^}ExQs`B*>ae&QC7KA=7 z4ezfVB`{GltFhuNmr>0rDRm$^I4~!N<-c5M@wNc>AQ6%1n;ty&FU33U5tKz5G*Yg z)ilE^Mb+Y>?%#R)?tyYuQ)7nM=EN5m9BMOKi3OmmYuAanTCp!uQfrFIb!O^))=l%rH2|fwjfQ zIQ38PX2nX-$+N5SA;kNEon6r36DRImFSdlJzogxU!g0g&r17-k)m~;|g33j;Qzic3 zi}xNI_A)9D|0EUdIYw{tuhtw5K4oDX-oUF@Z8vY;+}qK?x3X$9(5g;;nA+wLd=OAT zV5T(U`c~QWEm;*6zCXAHpfw;g{)vgcF@qvN>mChMMiAnxB-HPQ^H~P2+2Bajf~IAE zqBDN+zgQA1~clCV1C<&5(|RFLsu_Z(@91V`?0Ox-P@z-31!y>p7O=_c;pg}nK z{RnIAlCp+DpRoL$W5w(cb!R!SPi|_gHK?H%55IV8%*io3Ilu3%iML^KD{_A|4O8yEz zkAcJ0p28GoH{*xpURQ~*9TD9G(ZkDdRl5BAXBhY+l9nb7V(Ub@;<3F4)oN-&Stxys zwl*yPLx~c}Bt%!g<;iQ$GUCB_jN7%Bw>1%@0FDMvbEOr1kj&dj>XZ4|&P~P=P{jnO z39RzIAzy9GG-wZ|+sbym`X+8HPf-PVg56R^820f8nE*xDmOAm_shYQoJOCwDR#u`C z6RS~3>^CZ#F7yn@B!?VAGX4!aI#ca`x;Yvr&^~&Zb+DXI++{)0ol&)xw$haXlI)^x^bAtbn9ua=J__|-sc;-6z|BJ9h#M_8*9VDNwbcK;a!wh6o`x zuY>T^yE!rO41UCp?5bk$oe604e^ zjd-wPN6nuVIRS(AwKy=>BlNh~-KB&Z&;Sw6Z!6pKA?Ye^(HTO|u?8R(hHrZu!9(E?o0%9J*(-V`l zY1vk#fc3E(kaZ=jh{0Z5gTaa6YDiL`tI2G zJ}PRywJ4V`E`VXAr%$Q=MV5=8zee>3Mh$KRA5+ysot@-ZdoTJcJ>BqK%J^a^b%T%t;NB)5yyd4NL&%k1tcD zGZG&kAE=~e>H-D(kt0v)v2Nafwhs>oc)+Tv5t^WxSO-}=(p)e6LonP_Ru;(;SI#>E zppZ55;EM;*EA}#PKW>G6(2$+#7AK-8iu-R%e*S!AMg3=!b6$9(@inQ@wrQ;RC8APN ze3FgmR8;v7ANs7SEu1Qwcu;g*Ur*0JFz{B4Xdqg!J%15c$$^3BqPY~exM3LryN7wC zq^+36!=7t?K!EC7Q(xe5fI;4`=ON5HFs%iE2`x*)XJ<1-3PB0nS6aV5?z)1KM5+VTX$4;HPuAp$}=iBxRR!?3xyxEN@Ux{ni zgzy3h3YCD?7rWI>Fd?SjwBmG5>^f!8=FEKOX|dqo;J7czkI9zN3lO?T+|j|g@2*QV z7~S?ZJ55g?4jzYIz>dD9g%)K93o2h+&56Yej;pzjb9Y7lrSD>5TYZob+egQtrCD1Y zL>t1(p%Ao;#$7S*=?CZ<%xD|Jp?{JBQ_=Fu2P4z(8{0b=T-mdm*K#m{f$V%%S-<=)ByS| zNk8cvPsTZJYXE{Qf&uNxy%mJ%^CA^ze`y0Cjc5=Mm+V{IX?qDzAL>6{NYFShd^*b_ zCL&^K*mbrpQWqc?28Hb>CQhcMjk0>4kwK{Px4~*hO`TXfLn16$?0U4@{ORR>f?xV85JwYtq6|?n#-UH28LR+E}juLEnx3ErYI4p|e-fk~gR}S3F zM?id>sg{Auu`_&@YXPcxm-@%Xkfs;*xUrlH>KeeB=6$6*P_WAMp6fZAu=Wa-NDR|f z*Xtr**|KEzu_Aqt>=7w;>;sXEN8EQom|GJuS++V~#3bnNu)X=oPc|9@To$-=EPxwY7AR}DBtut%nN<<1%#0 z)jaou(M7Ck@*iX%S=mbG$D1F{u6uw0-VbI!*i~Rl3L+hOlZ#cBhX0r5Kl?B2gW;Y6 zWI1tOC)+)>D)t9IF{*#R54ayYXAdgEv}cQU0)qC6*-y?yL`0@PoxJ|uB$SohHv;V% zDMu=`XvLoTf7s+4JH=IBYa+;{^bm7jWS2P8(?8TQ7#=97_l6r9dN%2ff250KPH>4n zN@E*eGYCzg^ri8ScW@yS)CY}QQt<&zO#@uPaUR)L!tHcBJjL$3vQ5tSv<)|SHr9lM z9%(_b;lIHKioyxA**iNIiy+Bdv4WyLd?0itqJk}ewmJ0!i1EgCu$V!|kwY2<`3pVc z@N~N=;VX8vK-x~6t_S<(gprzN0-Q0NdiezXc=;;Cb5h@s#PVw?9{yde?Jm-M*~ zfD-lP&ul<}uHU#pD&Oh@VcSU>8p56eQU$MUYZn3F`-F>kVPf?R%1vu)ic{OgE@u#W z=`3XbHqE$a8BV)Q6LAT?3i))3Z~N-VR@aa3uTTbz0%tpCc)>7_7j?9?rQ6%SZU}j? zF+cEM>i^>7`kW@+HyatzNp&f6Qfeilhj#7mq+(2&Y`&a||3q0Z6JD1sVRBCEy}d1{Kk z3-X_3JpQEv$)Q4sTlla0b zOVWbCedpivG+ZTyOL-}tr}NL=^`v4GBDoJ~lr}bG!BVF>9IYDaU^+4~K5pgV;n6|z zdCfCy>1m13Wlcl1H7?`SF<|9}Jt->;X;3W$G6xprgJ%Iw_*uVM1&D3~#1f)Q)R^C+HsAEQtplO=BK?aO{}>l(x9~ z;pK|Nw-k?R^vzl6=K@&pT#XWVJDHwYg9cTWq+b$VWvOK`tL09Cu^bsLirHrX+>B5MDuv0g)N0l>vgt5nc zbarNCWE!0gb}}?HY|k{{t`2teEi80!3C=d@y$RtSylS<7F>I1Nv)~9*xBBaf4eOV# zRfg*Jw7&b!n-8Q1eVWvn)3@aap39z8Ok11wf4)iDt!QL$4MW#(^>;2EtaaB1-K!s0 z_>d9WG^pbWR~hoV){7FKrU%PU^DYT6rRJFH`9>X#?(iZ@;;`+1!1{r8Z|WU~yZK|y z25EYYXHL?FaXV}X#GE6|GA3U$;46UkNDSwB@1F~=py`6hfSGOm!w1Qnfrtd7Th;CX zJPbE}b((Bh$1Ke`ZfOh!7aGR8Y%FXSIl7{PIzmV1iDK@QK+cWkgmP_WX@~Y5 ztND3PCo6JHH{*e2ad=_B!#9?Cstl}Pyj0mM1lE1J*NO&- zKFl#>ovM+>FBt7Rv*uLvgryM zN@(Nr6%ct3C)&0M>gzv$&K)@Z=PpVOxulTqxQi&NUX#lnJz@s&R}tgcv%3)IwUgKi zwsw~l3q7e^&QB-{sCXxYI1vE_z@#k!8$knn2>R46a96Mzf80~39Is&vvj6m%UOxNv zT+`(z0=U}Xvr7fmK&SN8)WEYWq5U`l zp+WK__3M|TroNKIm%A?Va*~_8vbeRo6}nTk0Ky$O@z+$SN9+YBnu|kOeueRm zp1(aYHl1+&#e-8E>GOrOLfKQ((;p32d1WpcDij+RZC>A8^B(DF_JhsN%RF0o6vi2v zw~o{DEj(NpLBxXEqqPOfvboXf4>$Ntp>8U4pv205@sgy38lpWNoglb`xnc%@Re7kS zBU6~k$N;tuaHToR!s72MoMod|kdcvLYBhZuH9Ab|#dLHSGIVXt1}aarbDe?ToQPLQ z(gQ1So&TNcQq>eu?+)dzAkf$ZRp8@#g)`IOKYea~yggidkSINd_L5;+9d10zS`9oc z#9%O2^8y0IXi3nZ)Zf+&Gjs?_OQxozTr94v{8R*&JVZ!*I(Btoe5f;JbZz+u(wK0L;7c@|1hr>?hH0Kmd*n74$`VQ1d**4E9`@4Qxf$WN8L z<(Z#d?r{Z?L4VtV_^L?UksUi+#3;f-o8!Q?9H7+~K^8P{Rsq{3=NoRtznYs7zDmoV zS13A2;gUejt-}CRW1=lB0=oCpes@4cY7NyGKU$5A7I;0$NSC7X52lexQo=_E`q~Lzx0y3a&VAVg71{KahFUbaM^ns4@56${a7&{heC? ztvMpWMB3@ro-LZi67aI{=LY)vgq@XRHn{Wqch7j0_SgSaI3RuRE=ozCDn2m&yTz(~ zMNj7Mh6~F7QZ@9KM?U;Fw9?K+7h{l61<5gRF@!@O#Eb?3e1Q8SWE`xLl5r-Mw2ZcQ z3DXLKwtT%9d;%nS(Ljej>^Z3mhbG*uj)NvR7X*)l8Fk5^rHRA@rA$6Z0f=8+il0dx z?ByI(mB02QPbp?dTu6fXMKRG7>CdjQAhtxZl%9|2zw#1ZpAJ|Ht}Ff@Er4v$Mc+!= zW$EWuTuv;;#m=kX57d{|-<ei0g`3`qqg1Ye=Tj_-=IFbUo}T_oF^@$K6*rNcCU z#^1S%@?VXh9XQt_*33oU+glZ9u)gHKzi1gWe6iUxl7lLKnRmdNFer*wx8vc`ge-wuLGCF_Qda;Vk{eDL~b?r;wM5NeDaWa8$0(l=%$z$ z>Fd|8OHAk0 zvz6Z-wwLHxIzo~VL~Y|=WorkVjUdN7a3CT7V)D(i-+%mgX}f#`gPCs?gisfvJ|Y5v zuZNoat3SjGS8#b=-0Bp-+NhlYeyJIF~(GxG3+jx`6C z)I~>k_5b;9f_(VCaegl}k{DTSD6l1V*jnAw+e<@`=%ATqu4dXVJ3k`19~hTE2Cw0d zBM}kJJgBUc^R^EMGI*$jkEKNgtP|q%Lz6hmcp-EG7b^Qmhst&Eipgm>+utAz``o{u z95@$9-Ww$9bdHNd^((c{`3%BQl%!hUn!TYEj;$DIV7AiLa6s(~!-j<=;$ui6qD2i~jJ*P26 z8zn*+oXlrFw1R)ScbZs2g08&|@@VaqnG|f%2TW@E@Q?xw@CZY)P0c(wqXhmhV?5p0 zPVDkQA5#T{%mlpR3RLfexyA!@-IVbcZ!qMK)EU`2-k zhx+22FKTMsGczH@xC)N*HD%q?aKM&mrEliIu%cfi?*)}ygTAgc2I=iqDfPAQg zny4=Z%s7#r=j3$~DnTr(Bgc-F0FTCOU^JN7n3jz53-z_(E-cc6LxqRz5#!Wt04S;| zAmwalD#$OHE#aWZ$kc^x&wMZsK&nfT1dd0R@H%&Iadkk8+uYokw+u6z<@SF#>nbCd zWu0M+TL^BddaK4PUQ$s(hJ=Y6u3<$gyskTuLO(|uI%p9*;?jb2M3ne;ym`2Ro6qc=}z})rP(|;QT z((j#q33W$(nijcB9aPSHoiKX?WyX43S4nhW_N88Ro;0`#T3p zb``L0y#D(290t}Yg*Z+PVcNR&$T%zAi%;+0o46+D1IACc$>{4Z8d>Ev9};cXooihP zR(I%YiZ5D@S41+-SRhLYWX}QMYfpz5= zZ3AV%Y8r@C&HpuoEtNFKxY5t{-=XKs#_@4^9Sm;oK&-NAOUg4>i&rqufWe~uxDF5ddW=FjEkSyC&yk(xGqvC|2IOKUyj}(ioRed58p=CBgE*`1=#SYSAWKBX+%3^6L7eSr z_UrmflcYC9M1uePDd@@zuKcgS*V;xLmLq%NsQ|GA848w@mk;>_%5tZu7u6uAn4nB7 zTxUN5>F4Fk6tyEPMl^z{$x80IB=-$_KpE z-Vueh8n5)ve-qg1E_M0&GIj49DB(|iW)H?@t@{W1vyU0)*{{Zsy1F*!fKvc%TpxXx z<=;eox*g=v^f1)w=;+A#YWYFENCPJJzmh`9A|j-obv#Z_l=FhKP$7HqKoSoYlT2l`1$jUk?u`% zmrE-Jw(bL)kp=4q9*^l0U*3{v6T5ngVzl%Hm|xn@A~W!HMwf9XJ$TqWq6Oj5btoru+8Fr zr@28E)81n0Sz4BWkd4Twj}#kTJ0Lt^WM|(aA)$Wal3|QlxNHc7R%VN1w*&-#qe9w; z3S6|+j|ha`!+}agm?k1MyOm{9J?b`X%o4)!euVS4ji^B0nrwI@ao%vfcTGgZjhJKu zPUpK|LKeWT8sy~U4R)CH`Sakd1WxI2FbF1poQnEV>Ubq(a?kb_F`>rG$+1;Xl4E+> z1H*W;~|kTG2F^8#sekt1mtZJBXn_B{rAHn!c|+~%1TYWdbw zy2C?+pHN%NCi<}SZ%EnB(8tH;J`4xWNX5(0v$9T99C@PFSX+Bv?{=dH;bGi;ZABNOQY&hm98=HcrboK%P24kO zA8a)jO(&T4Upm(k1X}4@TAGytfjjpnCl0-09wRyt^k(i&D7X9>|AL3;8)1dxx;Rd* z_3+`%A_wt629q$J@o%g1!jf5rHYZP>m|dTaLzxnvNyT>aDNBs+UJHBSN!s;65L5|KOx2a$51j|PCG z%w}V4+!QZ(Yb&l2_OCsK;@F(4lmc~Z%69M}<3x_dHK3)EQ96=e&B)4@#k$FUlx>pX zHoM=Pz!NHH%VWQONo%Yr1_|CZqmA1vPj|{UecPl#%K*cFBzcj7<$q)A*P19=Hgay`TuxD^FZ2!1nJA@$& zSb@_XWB(MpQCHWI%V%o33_GJ+-Y1?yh=A7VPkY9$n9Vs~j-nTw*55D7%gg(sZP=V# z7C*GVYWoVa{v6f$fweoLpWPk;i{Y2eA&h2(rrAS-0$iI z-ut3m6+kbv^`Xy3vro&*TMQ8&QJ=Q+tY_uQ$V#-ULRhLcDJ%u`v}NHduElxb!gc0A zO$`l~drQwW27ZP~wsj77KRh2ODqDEegTD^t$SfYBpe?iR{_`HWMc2BQ35t9?R5(@o zMX1@4J>h)5?gOO-@-F0E$s<9UtUGnRD3eWSlIbu8^@e<+#It>_e~c@)XI)*zIen%U0}=mK_W8t=1u4NJgcKmCzTMJeRyHA(`FOeyTfW=H~|!Q{SO8if^czeqlsqG1`!darR-1I$Z_Yqu*I*$?_Hl zAJ^jt%4TLw+w6SyYlqer^s2fGXacj0+tUy5@*eB@&Hp+epb|M(7^K|?SGaQ*>U~oS z%`~UF{D?ec9Er$IV3NF0+<2?vZ`Z9}=?}dF12Qc?e(3GFimm1ADBcwm0>w*kc18v_ z&Kk}Gq@-VZE!S3G}H_kl0J0grL9(ss5f3$4-$_0mn55d zEv!~C$(fcsI<+e9+1W*+1rK(7|48W4(9_;0g9HmQq zheP3#o*vUJA7zQumAeLiw}QJqJW@~?ND=k+b^LTBkJ4g70eCnAB2Ouic0kn7DD780 zh&rP8hyUdiwSv;&NPcPTY}lE*BX*ueE^$X&C$Hw>*h_>7saC!+TleZ& zLAgZje`f$kK0qnuNy{Kur*Wu#>OMevUR9kk-zT7Y5Km*L!MOfAKFd4W+aIC3*-7#2 zw|odHMbrM<&JCAzhpFCS#xnGt>%FBHK)PY(^dg8Y@3TX}vG+psM!h|E%?8W>IeoaL z!;+bmb%u*;nbF0|tEXZ=b|@>2fb;XAzfE<|wfyCTZTs#M}z!Tf}kl^LHNaC;3z+%*T+J zF}k`)v_dNhNAMaHEtjoLXu^0o2xsxidgP;-KkkHW^;sjru*U&5@!801{sHrTg?wuk zb$gyyfBt9@?!bkSudFH~739Jbr!TKCE-Wmx7j9n6%DRtQ_mJ`QzLm8p9T;t2eEjEn zg-^lb?tJ?G3fp)uCLy7NMn<$xrv${3l_DFnjh~DS(DD~nG&TmC_UBu#a^VK-$URY5 z$j^C^^_JlTZLY;=#dG2_7xkN5QCL!T=v<4m*AaR6=Nv&Z`tW^ZM^-Qr%6;qZUwR_& zLMCC01wA%;&dW&w#TfnpPjRJYX)+GthwpHrc`qHOmXjy(0k%9I6s$jo2o$1i`T)GDtjY0L4d`g%#P!N;4X0MY|F5B_n^H`(~msY zH=>y`LRz@6xS>*qioKY4)uq&0SCY@_##lSul(J@|FOsKJ1lB)x-CIt@`GH$e5dy11C-4sEEY6#m6I%ZZKi zuq)@3XzO5eVkh&Y@{E0v{klX;QfM7U!r)%Ok1Z#;=J2CPA^B6$_q;jqx=rVW2Nos0Idm6MB$E$qh12+Y^$A;|DR#zaz@NpGK-QAR|OowAG zMdj-qm;FH~8$^TIJ@E<6iOX51uUeCUzKnx{B|$#*1}F>oXOJRFi^MFrFHvm#Lti@A+cQ)B+%5#T z6C(#%&>%WxW{Uf1)rp01J)N*C%gV_)UPc~)vHtD=UWQ;zd>ja2gjrTV&pd6841fpB0edNYgTCxRfd3+rfo@!}H8mgbZ2g5Z;(qM{PY*DRlwta-~|V^e}@GWZz( zP%3`}Z=q_QgRG%B&M<33O{uqnwq_h8h(7c|>D$LEe(gLH0mx`g;Sud*kXVvbA*NiU zu9lwROT_1Nd>M^h%KfaGm#Wt~Wl)y2(dxH4XjIp^4HpUK$f6(q_6nKId*NrT9w(G4 zT_LF_fbA|Nz-~>pzdoTkn0a$}aUG7GL9C(o01l%aJ1Q1rDBsRIJ)b?6Yt8wvtQ1anF0ZS1iZEvlZaZ8t`IFx8b&zR=_mgsV zx4KrHs^9oT*G^oy%)_d$L%!LQ0HN5Jtw=p7>_9A5%?uLNqrYM~?a6Nq7_W&3vp)^s zPR}jacv-%v{ltoe0s;m5)3n*o8@m=dhRe4-G|Jg#iL(zcr-8 zCAE}7xl&=}@?2bLMtYU1M^CyoBTPXk^aRlX91Clq_eB|nk+~n}!cdG|V-7^ydm=(e z{QW&@jDvCQSN#}CD5e6Kv})0XAsEM1vvXrL>T{;0=E_Vwu7w+eIn#w<--6f}uRLXS z^768Pl@Mj3<$U&)XA6cg{cxVF=IzPR($_C>pgxy#%P*}^{UYO1YM12N(_qUgf; zmwN}RA2G{(?n6QWQCE&BrI;8^jLa?@CIuDMNooP>kN;~|A+Y#9yqK>a!7x`|bWF^q z#du5dfj?4rm!-d&Y5xWXWC0;}CmsOZb4SDQH^3W$?(m;EGpvwz$?9XypHhPeAZwDD zV-Fz3)o z(-Tz7Zgl~_%VqM=;GTGOx?%e%hWjctGri&Ujg7kBoMtgVcsK24PtP_5%pN@Y0Yq_Y z-kb^nRsnZ7QzB-)Ic8a@pZg+%mFlXhT=9|#P@0{!E>6;l=(`1!MpQCI4lo3YfUy4{ zN=O-7HPkKI_3v9`lGhYJ@R(G1ufsp}CZE-mcZRtb0-U@O4IB}~MvYL~>+qwaiwq~& zPHNsf259{S(7B@Rt&Fp~#kOP|&rU`V1oL*eFeOncdbTLK^WA}c`y?UE+-0}5I!qZO zrMDgua=Zx3_vLhAq~qI`WL3T29hu$-pG5qR7NBi&E;VbDe=gO@TG_Z0!Mgi_JpBU# zlQhKnl3=zLI6ot(3)}^Jh*VVt?d+{~KGc>a15k-h5|`u+Wo0*%{xHIPJ~B>oI#B;l z-^bh+XU_H=`48~O#Kf_0Z(C(;xGwSs?!-vx)U2redSbVsRc5*>wrton@)Igf6pe18 z>rbBaBO|BgljLs#&=FnVdypB(@Fd`&vWZ>OEMEn(v!2FFF-*_25~h&4 zvxV#hMj9*n!#i-AMrdYstV3pb=zZmvM8b33660O>*oP3$9q?KDY}8pN+POb=@qCV# zt{&X&a0E* zmu#45=Q>zfW3GRvAm81&=W)lE@V?nP;qA)R`P9aR&@g$aXmO^tY`2O70s=bcvuJ3- zm}5GtBVU|zOc4H`B7iN@eo2vsCgoE(CKtfE>$mE7I+ zJ%7f=%8OlkxZobKhwSYg?-Q1RPiENKo}99bvGvddI#O9#%{*u{$D(kXv1ou`pJ1lW zd+}oQ{cw)@hKAz$&oUqEv!478L`m|zzTW)6i2!95Wgs{B)&4#g2#a+?_Z1%KirceB z3)qpVAh4#(LYZEq_SyKBD09s9L^<_@pU<~bs)AEXkEvfIG2@t`xj3RwL--E~vrMy`|A$q`x4*XX0B$LNKd17xoC63*@uKS? z1(^LYs$`@ghJ16~(G$Kzu-Po_+K~A^w1W^cga+sq(2jjaseXa>f41=WRZ0r`{IIc{ zUbazZD*So4a4pC({f?TNhX=)VG<0_|bZ9?GS6qw97r%Y`_J`q~=)3&4M#Gq-?J8^T zk$mg4JqukkIesiMV1Kxhxe;LHQ>QZUzi{@fYl0_=v6;W`VbtEP2suq*JKa@+WMiPT zwCkhUp#HfQHMK75k$Pm^br5_VXJdMN>b%&0&Ra^BL=6mzKtg>v#vVxru`*98eoiWPbrs4A$hSTT zyY!oAutD&DO4xNAD8(gO3;^jVJNE}=?;zBt57cinI*x`ZWuAQfL+!K0D0^8}{NvQo! z=fAwz&N3wuOX1K-NC&{5nQND?T(SHK#n#SKZmzCRHi%U9FZ1!q0r83?UM?vqsdID^ z+Rg$78n0Gx&~m(mo|zfbb$hfPJ$ez@Bk^x)5T}^tSkpB;q=tBDV-&kL`pb(%OsHZD1(a;O}0daYbivcW`NughkPMWT2_U8yFE;RQ%Bl^xajpieL2*WcwBo^F^{HQIiIb8OO(B)Q z{Q3(_dH+i8Bm&RJ`9wuRQ_Fa^U3ZC9X`sSacuKRU&>PyvfZ6_In8cLS%l{c>b^7!} zVt>Zr`%2A8dKK?;PYE1hw(s{K<`icGB^{SH)lOld-en@>-1a%Km} zwO^kSr)_Cz{-l)Y+OUKIvaxWJ_c%2*F)Y*l!EOh)Srb;V?CN+n$!;S_kA2His=hC8 z&;tlJpHLv8WRYXIymEPM&9$wqNwcqX8k_tWVGJASMim7ej)J`hg?xZpPIfN;LBE43 zlE6#@^7sW>YU(OPED;^&)Z_zpdxl|1qHrT!n4GS==)Bp$S z2l)kzuq7wG_3kYUbKK!`<`)!nJ?gg6@hfHwY|3&&fK_G(?w&LsN;=0myH8C`>$PYM zyw3c<{fcU_9nT0xh&5o5Qv$C(NX1mq^-0j%y}0-#dUP=HRl~vSKi&vdOED40*(Q^xHnfF>Z;Vngt>ReOZbRf)wUaN%4FO1=BiA_fZ|7Sr9<8WsEFD z+`f5pV*8MNp*MgFL;y*O26DyNuTSB~Z%mMt$Bm9c#2vnv1}!Ha4c9iqV3xcqm$D3a zBLOV*Jw+CJ@kbc2xxWD4(K&XxyH(tSVmRKfGn7u^_^W-zkl`HbdqYGQxl64ORE}SbGmu4T~4r0*q`a2P1N0e6n@?ugH?ejfZPy^2JOghi0KK)Z@IT8 zdf3B9{kZ~|wLiY1!QeH=^XFk9LiSgj&ffpoKRkS6y89I5FB&T|wWSrpu~<*6is|7a zBPN#&SA3|s_6a9Oc2( z&Z{nU zw+9U6^8EQ>sdx&4Fz>w^jE+pic@0yn=kD4E) zi)11i85!t)ADbLbLqkmye4D{ma^x}_oB6m^S$X#vY&%5K-e#}+UK%~pY-N)c{9kIz z&u`DSujUodQ~xCqQF_Mz97fJXo;_oRilU~bDv{P$KjGf5EFT|)`Ruz@^!@KLW^XZn zMtXt=coqEmj~;yzy@zt89+YqohC&XJXm{@V{ffS;3`Zpj zz3Z@VARKAX>Fz<(IlK6~Y-y6^3T!@dbJq;pOhTeWmd&uc3F4QPSv4?gAHEa?1qDg< zKxcw3mRn2EW0*4@*`$6@cg)d!n}EJyv*N5+eMyz}!faT>IkAcaJ}JzKMk z8K?~HQU3-32fN60?Vo91zFb4`ms)h{W`<6X;qPbHjf8Ragj_K{2Re9QU;uG-3F*H7 zuv{)anZVAVu$f(25@8Q6vfTW z=1nn#Hk>?ci46{D?myTYJbpa4ptlovxu2gOEbHmzQiWhayZN{wnvG5QsRppVlR_tV zU>S`?$Hg%>Eac_n^i6cZ9quI53uZP?xGE|ug#p)SKp8?H?{NjNs`6#FrCooLq^~3Q zq0%0ES@gw%7WvgfTkc>mZa(~jOrwYjpj&NVG*LKz>)HP6C5gl?xM_>P6k6o*$d!N5 zMz3L7VEX6kUhfl`z3`a>#_EZ8%H@!M?E81&_zCs;>7vNuMssT14ZfaY$6}gJaqHOC zfgFN)Oz_G|1zHhOt7RsOsV=dY@RgOz5ZJYSooCI|w@+D8A&6J9jD)4rG_^r}N>STx znX_HCAx&)@=P~Z~ixuxo)A_mM;Hj?IC4rJ+2dxs<5~Kizym}?}MZX!7c@iI!latNV zwzjGfq)B1a>2M1>+>c6oxHd!OtJ!lD?J*V`mX% z8OrU}JOz_W{!335hQQ%|vj5%mgNL3#|07vcMn!j z|5&pp2nI+l^$>;ifWLdJdHnUecX>+mXL=7?j=c(qe=+j`vaJYcpI6J*eNVPiepRW( zVeq4db**BG*K)S6y=ZG)%>4@?$1?w=sS zBEtLj1R{Tp`Db`lB^_@<<0nZPtT^AiJVpeh6DqFp7Pehx8MTn4MxeCivRknLBwO28 zc9d|Vi&j-@R_s4S$Dt|v!5aKmPM+1nNhOZjNZ}u~;bYv!K6E{vuv|HBM05EwPkTG_ z-~-{khdu3;O7|0z8+J?gk; z;;YFd9s5qIb8Ly@@xM8Z27}$wEtE0(&2M2bvu8U1o5%~7U-t6yG6Xnw^6H~U1ODWK zu5VgC-Vy<8^2xeTtAc|_bdhco!~tz%Zf0WNY^i$>YHD0dM$H_FbnCE8n1T@k_gL1$~@m#ERw2PZgr6%9H1%p3#ou3^9Tms@RoZ@jti(|xKw@}}` z3~tpC4VF_iU9`%#TYYCf?9-3aicz9(FWDwiFmIo`sD$0uD?aGEZ$}XO?-=WRpdK3= zcC#}f?kKCumayZ0ebM7Dn}3m67k6KE|3G;<$w5QVKc3nzU$8S}4f;Oc0VtmvR8ZOc zhN+g?z5S_Lzkc`^poi4?i~#KKb<;V0Ujt=j!B9s%O?oe+Q&)K>O6O=w2JwK+{B7KeQEghM(87mu4M7!XzO``|_v*DGhbT|M z`-i&YHkf9Uk_=yYVnc6E?$bx@>K-@iQbDWXoBfm15 z-|0Qk_Zx3beNd1Ka~j@jdK1QBY7)O~Vq;^OrJ^ri;gOA|7BC+&NsC{B3HK{3R0#HB zF1i4T#3;h25n0n)j_p*r`dd*|i%iX@Qv6v1_EE3z8UR!MK2Y>w>(>*_p-gVeR?Fon8uU59h z;wwl^l~tp?R;enhVW@Hft_Zh%Bcf!M5bU>v8;lH+kIF|J=wtfO&{^9UebjHR3*oao zEfHA`Ui%hI^ATA87ojzP@fzeM1JIuQyYDT>zK@lW8>$ngS4{tFS)>$IDi&>yl+C-1 z7ca6X+LvHm_h)dCjsNLJF_PM57c8{q2F{@&0)mlKv=(v=fCKCHt_sD_nByTCuWU3f<&i+#L8pe{1R1we#m4 z59HXbB84~|A%~P`8PO3P!@Q;(6H|x?gFmO96djn2uAC2Br}V*zz{YQ9=)`VFHoQ(= zk&b!S=e*DU0v8tp!0Jr>E3ehTNjDaTuEDBDs=5oC7YWZPT!qw9bu3GCaxqt8tH%Vj|s z-5;#t$#LAi1a3Y0mgjxu^j{>agkCBzt!Q&SZmn=Y!tagn&-dY~FEyoS zDerkoT@e59w*&_#-tETK|og$q2L=M z_PKvZGzj+xj6rk>%)?;SEh4_B6J>DGlC3KI>zp9rrbtpNh)ha45PM&>YNogGvgOzz z-P#Rb4@#B{?P>`~DWK;Qv9_MFXZ!G>h`?a}M^215j^esH5pCAp)eY9R65m>_cssKr zW3Le(%N#T%Qp>-?o;3+dB>us7!i|GT!T!mD@Dn^^f5yjuB*>D?%=3SDCG#ZOFIce= z^PDIqofj;?`C39S;K~==!$(QnTHPnXulJ6}y6^wSNz#_0jHHC3v?SRrWM@T$B3U7OkA@=tm8vRR?=&2(~9|AT7-N4+Iy?GV| zn>VV9w$P^jGeh5_vC!w#+696DVs1T-e|K~u$)K6_${O+2r@t=Uu?ooV&U@iTZ;Qsl zC}@2Y_$)09?>(|9cs^BC>LKzzWLTPGnI&#{ceGH2V?M;4i{tn93`7ro$uPGWYx(}q zsVY5)q$Pp~aP-fgt4Fi}UR zKpgHmy|}2TY)_msLUSVPzSQQI^Ko&Pg#7*1nYA06nh;!dm{Wf!SvW~HipA?#Hv!~A z(qWVo{V8CL;u?L25P{@=Kjek0>!?`lb1mI}SJ<~It1+J&1pwB(G03}c@gf%x>TOO~ zldpvhD}BCv=j#_PR@N_ElZ59Ax3?x6HA(4@F8TJD*hW`iz-E&{fwd}fatZYgvl`6o zNnQ5MALN=_TOqn;pbze{H#akLam|T4*h}SJA}gm}rpCi#gIPAeN`>*glg6p1KHdj` za!Sl}HK(5y6`cVt@axadmk`Wh(%2Oz{{k}shk5+@&CN4cEzS}Vab+0;6?qIc8VswA z24O!#L|XvD)I8x-SWSCtWClA+@eOh-~>SMCSflan5FiYr5O zmWWp#X^1%S?Aa0QoZv|~A(Ss4oV_8Kwo*l4ZT_=+hRGfiL5JI4f#|A7N9|nh6X|<^ ziZ8+dhhdazSn1>QsAm8Tna_-wi!#nw!>Y7wSy@qW0xB&ro6RLwN7vHl80F$*2RWhw z3LVQjGSqM{FL!cE2?ec9$tmsqD55I*6>}D-D)$^~A?(R9SiVh6dd3f`s&bcvm)^Zl zC@v|f@TSDfe1U3B`*AelW>+7dI+xE?5`E{KT=dbI8FH$+Lx&hNA&$Xr)0mraMlv8> zPBh{P02O#y#5xlbV|DjQ6pa~=%P-E42(w~8rh!Q;S9(u*Ec{2Td8ucwT z1rfzRBGVZMzkutKGV*?t@@cfifEBhw;P`OgG}|5vBd`E=d@zZ(?!d-4g)P2g7X*du zS3&GiUMsBVB$w>_^XF$F8mDrvY2dz@^t$Znh2Z*UC6ieGMWv+`JA4BIRzrj%^)M!v zNVVFP&k$}r)44Yv{}C2hid&!B$?zs`ZQw@c89#g0H*Qsa1myM8bpza;-+Bs(@iYSb zl!o&FU*k;>kc|n7n%E{|XX*BSlD&&~pb~gzUBR*)IBIu4iq8`?J@nCT00UADhTBp# zrQyi&UQ+*lRbOV>K$QFWM>&QFGwSBV;@JKK!vSEWRo z1s?}rGYc?KM*G*l0tHQ>TlB~X| zIaeK0AU2b2)GGrC#O~AiOj391nM>wY7Xn%Njk-G&qBinpd5sz^)O3R^CJLh=P@_sA z-M+q9I{dNd@|`kIetcwy2*{1qvh$L+F@ZU~bKY^Z4HMFt5>LVP&o@~O`K{_h!FgX} zv3-WYFVu0e8ae_0OIrVQCiN7a0NBe~l7JG>TOcc;Gr+v$4cPLF-HJr1*ODxaIOw#) z?3Fc{TpB<25&=s1TK+DLnk$)%VEHI@KOq)%6gNRRTpb8RfO6vnJaw2$zCkZ@Hz}9x zgHEDMgr`_2uZ3M*sYh=^v?LddWswJs1R+T~pK=j`k;7+y-tNv-|7luw$X=?pr|NRFTW6Ru(V zP>X8ruHLZL1vVv%&*FYvm#cv}fF%5sZnU|)-=zQZdg@0AaKKdn;GD>Ti3D4EGry4QYs^WyGrWz)%Vf~8(l&M`45vOQ~D3i50M{u08<%DZ9k zbIgN&rV5E!esOa4TZ^fojPHDJ5$0B|FIib!yU59$OyF9v;uS>gv63+}-oZyS9GzuN(lb`2!{%g0TqQ(M_N<;mic9Z~_*Wl|jGn1lbx4 zZ;<$)x`=Go&gEcO`3V-cGS4Z*?K3kAmBQgcIZwdUGLb8=r^>OAwX0Sl*z%Q{P#K~9wZ$c_%ctIu0qNJ{l%<27mzv`fz-Pq&sIS!6A zSwSwv4L4!52)TB~@L9jAnVI&lc-&Gm%pX<0XLhGuphDRq+n^Ehd|pB|k1ql4qkRBa z!(w9UppmA^xcbT$JaYQ+!77)YOrt^tWuP1c1X)i7REi% zYa5E$WXt@2yo85>NRU_)B0K&uC@At^mY)7t{THnx1oI^Ub_6@B-#Q?*&H2^ltH4er zkX!MTDXodRh%EGUKgJ&j$_bNpvsBNv&LSXIC1mgvDvWPGhdvj#kN71V*D0!zT5mNwKrFaP9cI-H ztsJy|#>U19{^Nk2;@%57%sw(I=~qa2PV|qmwR&^I@ic!H-d-~W+sp|1C-+_{-Wri`bqP+ZcpG%));FUYZ!=~4-Uk_weFFc5z3da}$ z0R`(Rb+y&`a9pbYVcVRu6C?>wd|A9)jHecWK6_i+wNlx*^!=YtoID8~0UI0j@k^Ix zD@2Yl5-lz+eqcT*ng&E<0#w|Ym8%&Rf&n=H|0UiWu%Ck+-)2(vHAv8L8&q%vTTX@A zgU5G6fai!xNuem+u(=}-{AJXCW! zJp9J={81O6WzeD$tZA^Kt#q`VWM!2B6ZEY}sV6e&V?OeNmoH#|15}X$%^U?qI3;hq zn@WOwT%1b-PIXZ2S9z{H-r7t8QuhP&YfCB2N(#L?6929&pOmT>S`=TPP4R?<#R5EO zi9g%m+9FG%FC%wp41ExlwMWYAf~3JJ^4WlJAy2o5t?3s2>+{sck$dW_sFNd zxtYzZ%UTnH1G$+93^kpU%DVK_S$lwTy0?XD2jb@AXb%jQ6r?-9CO4T$!!fB#;!c9Yw5it7n4Sp!|@v*@A5Xg^wGMPKL=uT*=PykmKR{ z_k2E;a5pKyGc4?35`dMbcw!IB#x)<^2{kniZE|QUGNO~-5P%j3F|kT2*IVJCptdZ_ z1|9WguXwqN-kV=gFB3sOIT6gpB}gK2>N2?iG7eBnz`e9rzyJLF2y4N^hcf=~7e3S< z`!W4nj+=1JsYe7I!;;l?b~X~mNILJ=V;$ubAs6$q{*(m`7Riw zK3JL8g)F?W&&bF?W)7>_+5h4mFG4a`4)2PhLn_qAY9|k4gb@K8mY?BW*XE zadJq=>{L8X{zh-TSi^1`wgjWs7*x_%?;hA>|8Mf|&(G8&Q1m>4c&IjLg#i*9Akd)@ zNe(r~F#t$lfi?O9N5VBUL;N?p)?m2VZ2Z?yb|-2Ik20LQmmb%yA3NfA?v1=1&iwxi z`6p(*IEPjvz;@rEv5iw0GtC%o$FrVku;vet%yixAfNJi1fAO;eAfms+TSpYD+WGFo znWZ?1o^NB9ZSXsd)NQiBYV7oaEQ>X2GZ4o*0$X1?ZNSy2m4KNhQ8wa+KJggb%jQ6ppNUdj%NR`fUsqZS7H~)AUzEWo_(CW-mU}3 zjvYIS(~syWOsn4<7nXO9qGD)tVBis+BwY)r@2hbJLumJ>+KWHgtD+<-O`~MnwE`Q- z6+zo2`okqHS;p&m;v&}$kd{2}zD3H)mMTO{rC+bJcaheXYj@j;?T6$}6{MmS>k2lge z&cZ=I)DW=->1Yzg$o=fOX)0K!BQ2+fAo}?=Fi(mpGRkr)8qs6BqGVlPi>P3$0HG;K z!x6p5n@J|()fxE3WQ#dC)E{UoPG&6r&x?eHq*Nj$6~B6F-sqSZJr5Q0IQbFN{DM62 z!JLVSiF5QRzUS3HbY`VA73AgFd=rv7DO~+Yy~x*YN%ahJg(aU(>%l4cpz=Lcq8h&! zMC$wLSA&o7^SQXX0*N*P({l-+^rP{ghVIm1^fifW4cOjzlIl#FTDI`sa%k65KYxB0 zj_g}LEJ-=0!#le3@=Vd!7rar+DzHh6WND4=TvCKlj2#^w`e1T$oy&Z(>wps`vCq0b z7V*RQk5`miEsV`4skB)yPoEpEd;Jc}{?}DjyZb4eBq%9*l5=ti~9K1$9NrqpRCPgBT&#Wt<`u? zz!4G=#PjT1oa#ly#tz)gd)%3=7sp-8XMo)t*rbB*%#fO%KKS?O=&C=Hs5;6j$SNLv zX$0|INA&Iccdub3)wT0S8A3zS(&m;-a_sP8Y8!296SR1}nY6xsI99zaapW83h32WX z#f@WhbiCibd7{bf&BO1}eSa24M9r_PFgh5&XyR9-+g$D@?2&)jx5htWg)D=XGpIe6Gq2D{wh@u%Piss| zQ;*y2t=M(mkbYyZ=b2YGIRWNq($>;kUn-k?AvT%Xj~^qwG>I*KhM^cS&CMyMo{9(% zKNjnNhSs{FnlhrDd+!&+t=k-m6srEg79{r-nJuzkT|OTib=2I0UAsm(!eL^th4_5R z{`*A^qWa@}7Kwr^EbZ^g;#2h}H~r2TNOxwcUe1)0jIHPvRJH${%39$`pAsI*EPAm2 zK5@AePrQ0jTR;V?-kcZM47q!>C&B9Ncwj6m>+bhr z%)55Av$}Cd@V?p~oY;Rlt^YQ%ljWks_8}6srXz!F=e~U`{QMIhWQTLZZ_CQcLcDgW zztsGDOU65%#VKT*DVKd%Tc_v#LPkz*)YV0sP^SX8Z`OnPBG>sl5725 zA~_>tV;t6B77uk!bp-Qr(Qpxrf&N!{TDAVvi%!{xLUry*zh*L}b`&X9haDpiY?|9h zvGs0gE)nj40|HuD%vL_FCCHD=kzcYn=R!Ta$rYz3N`ki9w$nn{M(QrPXOaC?)zS$K z%iGo@do=ERI>&m|K$&pk{MH%+rQ592R>W>|63fc>*Chfow>jafl z!DtaOMml|c6=aFfT==wa&*Amw{{HPMOI+t8gjarz@rHUcS6zVg4DBxWetGaa-?*-) zcZpf-XZRhaO9mYW);G8cvjhssx%NTNU|zFe6(M`w!H`F1BTulaDSlBA#P!(*nQsafXDEQkM|)7@J=I6`$= z6Zt>U&|7Y-GG8%Li*9KBnY!steNlBoK$}wC!Pv@4n1R^bOhm207I=G`l5g)Jy+ z2hf;E3T4`GMn_#mYvyG%8%H}j3eq^GrJ36LOIVNsn>9VvoBi;gH=e*^U0?S4$jfzG zbI0V$+(X)^opWd0cIteftQJ+YE{=>G?%OfB<+RP{7ow_m;RQiXVYUhL8<@0wLPBbz zCB-jCJ8i9w=^=ICM%e90;eCob$V1A@-}N3mV(C#QVA@y4K(ey2RD*0EHbU2KtV|mG z85Ejj7HD_%2R4cZ``d+U$)q@&Ah7TM^=tPv`DU8+bsL$afRl*dfTsKdgTo(5Jf-z* zT!c^$+KIgY+Pb%(8|@oz3j_eBoHa?%lOW-Q8$oEmc-@f%?O9;!2xxk|dL0HS64)M% zy0YCrC>Rgb^;RdTD6af|T}a8Q;fbB?stBAvNKZPAeBYIIQ*Cb_pU+>|YTvU~Ddkz5 zzzSJfU+;oN35MzFrC!Su%tBuWtKJd4e3{71#B>0wG~!6UBP!HPDu#Ry?>A{d$s15J z7zPOv9xsAW4p-C6LR$e5My^+-^EOUU)1z_0mGJWpwJMGMBm}NmZLa&b<``R^M?Zo3 z?DTKdXo-7LCMMpk8F#pGcs#B>3Ohj-NLi8-C!UoL+MHFUtcE0(vv7~?;`(zYRw!x* zMqBp$C@uZ`NYtfuC4k$M+Sj)g%;CFdB#xi1zj&OoK)S_+cukGQ$W6@3AH#)`{xoQA zhX$?L1)00A-z-=iX|QFuG|Oc9idEOADuV9*9%M&z|pmUG@a_JMKt~Bcip7_m*FbQVvd)L3e zs+pPA+4HFErv>hh;$nLgDCj0e*j&|}8`5Grb>>fRuOFeX$!hu*dee+8lBMyj<0@`l zF%`Uc@!3Vq+|M=(Y8o1hNPZ$k{njruSc2B9+NTDnVCc#< z_qbw^dw`BEf|K+pqA}PB4vDfDVyHvGsD!f0eDfvD)?SX+?$k3rf3fv=WtJu~^7PKV z^D(Bw*R8D5wThjt+|M;TcJt=R)+F9f=052%5r>yoYEGTjxfmAql_*_r5J?B>Ul2O! zVbRym5SyivRtjv{ex+{@IgfdKS)2OO

qJfTuqh8{?tG~7T2?0``}U7}2+I$+)i$nGqFXH;Xv*TWJaZU3|RI zNORF$Im&q1jPC1K;_^Y0{CuAJLVM|4bA1VniQvoXeA&xf->kkazUFxFQ0PdIRFT!p zt-DDbHz8_waNzgn)Zd3Nmu4;_;!5A7PZtZ06}Pp8LeqzD=RR(^bk8J(1Suj)cD*QL z!@`Y4-pco^b@|qGE}jCIXP;o*h@Vp?x@<5i`QVcvlKGL{NCh975R1z?a25KVs3S4 z|Ni}VO>(*rX*g%8djCEjQ4^qjlQl#j+*KYR=b_&w3hUbj4H$z0UP#x4H&&%whMlw4V*xb?r* zBvsgsg#L3gKA&F1?+1?TaBM;hPeP4&eI0_0UV*d3o_WIv02phaE_JC?U->ClVKvA^RLj$KIUb$hwx zd!xJ9pnaAO5SQEib7fz{_G9ltvy`Of?yH|dN|OQ_towclNQLkfBiKmh^g;BDoUq`oY%b1ndzH3{;O=E@hfctTMxT*jm1DH#IBeoAaLbhS>P6Wz_;3 znFxC4z8ss4>}-Acq)`_MmhYvd5Q!ec2IalHyawpW7+x;6yX$)a2IIqQo=`>RqI$2| zX-e1kXYaj2Me#!;b=JDMM>;z0uCA=Y!tKMwU`n#H$3|(xsMzFD#VdGQ%tk8kis~2X z!b0LKqq5oMnVVo_UNEsjCSPmHv*C7x=40Rypi8ImM6&;BjH6RoVqn&b+h@0xl2k)WHaJPpj92!$|>5D3rIn3%99tA)iNhOFIDvZ8Rpf<$jzJ(oYKxj8%r=*d~2moOb4wDm3gA1%P~ zow--xMAFjIq7f1i5qye(jCV|Nx2>#}jq$7{dox9eAS(_By*598fj$v@a1_`0u31@G zy^SYmaI2iVhqHS3KR^&ZPJl{a3G1`sPOUsE9_?6femL*ZerjnXX=B5Kn0O`@mVvze z#TYw5w+0Aq{=EKyZ9ksQ^Iq6&qQr;aGBGbrmJIseCTN#m?KkjBGN4W|bURZ^l< z811@N-sVYv9Wk#E^r*FOIIi3o}%RJXb+-J?2%32t^U@3PqE$Y>V*_d&b%bz^gBPkUap{4Lmd z&nXwc4gWmuDJQfiYP+Il9M%jXNu;ioWSbt@E*Ec-hy#zhC6T)wag7{X*Fi2<&loN!lFlVpo zyj9==raer@AcCpIOdK@1RdQZ0AtMIG8 z2{$m{*GN&HR%DMo-%S;7j5y#0%IPYR_fxuw|}Hb z1W9l%RelkF+Uoq!{MC@6PRPy`vRfy~wJ`XBOAT;oo6b~ySno)~_ZJ^O-d0Xu7Vb~$ znjjiw{bRr8Q1?Zv=}*J=U@T#BY0+oa77f0)WgWS4#R7*hF2*p;vfQ)kA@miazZ-lZ zUxh#inQtS{nMC)}UHQ;c5O_)B)~O_`;e3FdpAbec(%$5Q=J39L4yO=)kuN5LUNBN9 z+iSKr&7HBcqn+-yOv*+R1IS~9qP-d&nP)>A#C1Pq8sf9xRa46ahaquBrDDBnCv zn!54*l^S7;0(G8{bw;gAc+Ae84FF}S=fq}hXMy#ca!6<}pS6=@pg@<8-ipj=N*oK* zNgd_Zi9o^{R@YmT#`x^4{N{$g-nNg~etgnu>^vTUs(g6B6`IiAYFDj82}6&?6Fyy0j;o{H?F=VqkoV22T6?s93kkm>7;??bu9kUDH04M+Xl70o(uv%uzhSdD{|MRJ?*X&j z_;v_4^xI(`B1F>Q{!VO>*MsCN_o2O3u5X^k^D!_z0@Di(vdj> zXvu>v>+bogYP;(d-dZL5y4uq5)gX!H6*lfvQ|-m3)zVUy>d+$B_ms}LiJ~5~$w#k# z_Hl73+PU+mWSOUZbJSzxMpv%P#Xz$C6$SS>rd&E3Uw0j68@(J7GNF_;NfZ}Xv7IbM zV`KH^c2fEu9l6^Nv8-2n(rW{KekGja9~7l2zfmq;yNp&NCct!+iT9qNYOwT1Rufi6 z-}AjfPoC_Rk@-D3%ZhrR6IZV~C9A%UZ_CI^sa{_Ryugu$_HJKbRM5p9HRxELM&$m? zf@=8>S3#1eIR4FTd^|kpp_JJOP!uPiU)z5>%H6+zwy>~Zd2LE?W?`Zvm^bTksrMy+ z3H|CF?NOA7tf@%V3~NppjyvY){CdkdLQ~beqPQW#k?BG`gVSh>>heg8`pRg+B=|M4 z;TjdEl{tF^Ta!I|=6K-1^htc814xh~z-04(7#fq*#sg|hYoTC^2o<|ombXJq3ol_QG{xazttVZD8plbtQ^%cQFaAC+!7w`*$lhj}wi zcvn2~doQNNVQ;_T=w#(D;R_Al3gxvp`ArtTszcXI4;$RN^~1Vl?9U&alDw-}a{$krA|H2|b-wR~}0!eS&F3V|6}^*1(f~tZsF|QSWSL_RNL1{5$Sc z6nIt=K=@_g6gZ%uwo2TT;4CyT)^&=D^KZ?>%0K#tg`#eLXvh9_VvJ=TG}&5Jg>1w= zd5P!*6GwoK8?+L`DvZKMjHZsk&l!ZZx;}5|;|)KKij;h@>n6V3*4-Ak`KxjBoB2vt zv7xeTs~ETi6fHkzHWW#341tmoJ^H~XE&$>fO(H*>kpDAs;!NIfSblQPK= zE4Dtu#;^2qLpQ`L>z^k-Vsr~JcWQYI_yzCaZk}rNWj{lR<-g<~RN*7Em^ZCkMdO;K z({Rh&z4SS0|3!|pYhky4)FvM#e2zoaEwB^CQ7OByuvZ!R9g|HzB znJ5Pjd=7NnB@^kNWvRDay)7{3h)XtrM8cy}Aq9uc#+?{B~weLIq2C?kVQw^_nF zQmc3ceP6xEr%>I8WSECYjPM`-_3J@YN{SH$1%)w`2+C1fm;AeNc5b42H5QA-os)cg zd}sn|p;#V=-&qAK2yOYJFRw6+Rk?e3RBbcBbDk;7;`0F-rG$u>7)y1+|KjA?7Ut(K zIqmhASX7jiZ7c}nGI~su=9K8yEjRr2)$7-xvIU+lE>`njrQYtx&VMH+Z@})3w4c}q z0Y{^SP(m1ye6t|okW9Vr&4iCARw*^U)CAjFbNmA7(2x+Zi#s2?!%!hQx%xf^9Bxof zPDm6L6WcBBH~FY5+t6V}AY@#?}mUX4#-t#D{8E;xUW;t@=Qa^tV7jpA7o8Wm* z!|_GCRz6Y5qr%6pF=Nbcd4>HK%;aerauBRC-K)L2brYRjNW5iCxI2Nxd!JxY z2oh;LaS1gqgmOJm3L38N$9?GicAA< zPW#stz2gNM>|7=S80D%MuvwA(w2zN6|6H{JNT5jY|?AM zD%eu>nOCfpF$=##^|!7nEI^Ps-Yu$=$>@8rd#BQX)l?6C+4;ihuKB9-*Guf}Y_!Oa zy={o9I*{a0<9}#-{;1K$YI~Y}Qj+M}HPuaNz?VK{vzdfXMy((KIa@)_d$KN>3~&(u zRSY~$x#rrX9%HqmEv8Q`lIz}{@M(V6X}{{;aJ!v&=N{hb#wa-i_z>>@mO%-;h5iDN zCI{j1B+y39%y;gl^dz)+b)_YBcXbhHuAUxizda4+e7TPeQj{*b!6ZC0=*NyK%zLT= zCD3s>Zb^DyO2P80)@j)+y;K-2JvETm+znz;>)Ge&@ zgQ8{#zdEnwi`I|qOiXw5*YIVPb>{Ix{z7ucZ|`M}v!G=jh`Hto)p@b5HG{>djE!$nc4QCA>a8a!4QoSvHBuMaiUT$ z^~9E<_0q=a$L zFr>j%`0(Mwk`HHO!0KpdX{p9$^CE=f;K2|yGYbPN>t)lErqVar+GJnfC^Ok|INI8J zMR|-0yZ}J2+H-5Hf>E+@6mHs2o_zB;<@IA9Tmdi1i#x*ar%SNp?KgW{@n~ODV`DBc z6a!oF%ELHkUz_H8ZVOi{^d#xKW-2@$%xft-)s-{%%=6a8XB2oQtp4 z%NnO_g5udUH6K5|ZetU_8l5@aJ9AdxF%KQA0ym$`C<8t zGqX!%yrkv4PjjKz3lboGgEZ?o6Lb07YGwOUG$j9v(@!eatSNL|SK1KZ=l1{w z(lZ`Opwd!GI>N_a0DKcYckWy#lV|{HMJ`aLYX|LS_|OGYgp|5^FE1aT-Mzba@A}>d z`?>o7uH7+BODU_Y9_@j}JUtaf6xhtoDXmR>03`W_DsAjN^Qlt}xeHlS2I_x5+i!VI zSyLa$bBo9?N-2Cuh3lR%n8$ues`KzB{f^qW`R`C*Oc$L<>AUs(IA!to2#?%P_79Wr z+GACf$y@aM+5SPZ{A~pxf;v?*@1n*JiKGSnHp5$Go`(0c4{QqCL%a@`lKY9%IusBF zcNIAX0&|Ab_cB2w^*w?efH8c^(de2Y6%{E&Fc+$iSYaVCMXgM5C*cr*I2fHC>9r0= zdFFZfZLAI)I)onPUU;ZEz)e40F=0wgy-0dYA7{&tvZ8>l_x>x-5u#kw!2M4|qXc%< zEn>+>m+k?GD*IM;e&>{1A*%O05)#H9pcq0EE3P$0?JG_gXMXCpB{MsW@85kx3b;b3 zcI13seYA(ys=De-&A%U*-@k&Wwe`2Ee9QcYOlU*`Moj~^;v4B?ajaY%^z z?~#=jl`PQclDJ)@?%rkb^fXWX@}+h8zM^~i*B3>pb}M^{JUXayp>oqVV4yO8<#wbl zU!h3r5)D1?;$Tm~Rl~0AYA53U-gy3hIA2PHx!nUX@|cF2`XiE>?Z~#@_MS&YiKZ>0 zsnfi=1^>gPVKv@3Kv9WpDSzr`_P5VjDR7slzkC^V&dfdy41RlRKPb+iu$!-YQVQxU zsr36mN^;+5f{aM1MdxohOQ04NZLq5AmWTG4@2c@4fM20>2(Q47T z$Hbz%(N~!7e& z0QQ5@hKAG|kW?Bxy5#@j{<*rVwu|EtIC-4G=Skxm@B!kx)~C6oXq821B+(A#j_(!s zzNM_(VcR=Z8$3qCWhfvSn5kLn{_r$qiuyTj%ig&(!|rWQ48)5T1?2IEw1?mOxO&w7 zK{c+Q&R^mdHmLt}@7aihGsquL>F{*r+vT*iA^d8w=36VnS7DGPdw}SDNXW)04jrlh z2srz5wcoaTs$wiCF#o7vp%+}bS$a1QY)cEqgBdS#$Qt4_)cqYZhW;q zOe5Af9;@r?Kc_H>=3!Gl22P_S1{I_z@mA(Ju%61xmd^`1Tqa6P^5{`L(-{q*KJ#C@ zy1Yl46dNL5;|yJMapkT-g zA=YpU|K9wc-%>g{>9rfDnE13Has;j`SLDDEaK!-L3>8o+Zs6|^($Kt0F(OAel?Xt& zjLhH*VdpC!r~2C0U<3)DwyZ2m=57qLBI^^AN^?fJBEWj zWrzzmG6mAKQzA4<^hUKH(26wIXTb7xxg%bo$^%l$3x-{M$Q^&OrSxB&X0U>MsrTys&F6zGGVjobuh0T z2eJA)Atkr}*By}!UWo_49B{}b8>@m5NGn~6w3rZ99v1Qo8Xjs>SEM-bnGCaDuB8z| zC2#zrX`tp0%om#&IODZbj{88WCT{c;kcjwOg zTa(#uy;!x=%L2=3dbu84qodsI+{zPAO+n#xf^cMYemJk*lP%$YiKQh$k;@bW)YRyx zaxzwJ3#XWnkdRH_MU7x`3)%Si);k8P{Cwc2b6g#)QTZ+SXt0t2`u2Sgtix5da7!q- zv?+~#td;)L4QICOJZ-<$ox7ERwv*}htn16lekr>)Icab&^U0|)Pv>nH9)7DM^a|nF zJHW7Yt$-YewM1|(U!B1A9ji^CO8!MwKc}Cq^;6G$R2#JL{){4phzQqEZTBbhxx)`o zUXgCp>+|Uo3Bs6!3-Uo)j~0$852HHSlYUPW#KwR5>a9v{oq8sMX$+`7HQ2D=jf~Hq zZ>je>fm1a_;}9Qz!L#vGtNr~`RFgmcJHXf*ly7j-2;Zs7q=YL#i`bF#)VrBhR@3I(QsLeUlre2t+{G*Id2PX z?cNJxTajiXv*VpdzOAnmBH-^uak1deo%Q@`3Kjgdp3qw0f=1kA|5%DGWb&s0*wm-= zUhPPqA^v1ze#BvQM6n}t;v0kGli?D#BOr|*>Z`l~>xMtQ(i9U2fWL?e)6YWb(V z4IQ$hPv85pmq3NBtaScx2HXKA4%eP@4+}FhDYOj1p&kf=LIPO6j5-m*(o3uT^>Gel z*VdVqx)9E8OhBx%Kh`~#2!U62s|OE7>77@*v!%IsJ?suO)OwEuY<(Y?jL1Ghd`En5 zd9~dMsF-?UEhbhSQ6?SLn`fC|HCP!+#l^{4vz_VFMA`UUj1)`%!&Hqg1q^u%&KIBl zB8QMCPWu<;iA%_%1K)$MFtBBehAt2!#&aNBt_PW|=l=-2deyFZ88aY}RM5{d7!a+X z6yGiM+(rd4mw_rid~2{82my`z3Y;7^vTI>hYJWD>Az=bH6t^Vz)BMJbZJ=2ZP=^2w z>XQ-Unin}ZkZHt&Ixk2T-witi;>5?GCv3I6%Vz1=zDJ=ESbraA&V^b@$^Aw7)gz4i zTY(6!N|nVDW$2G3^Cx(xvEw)3CQgD=SEME&8OZ>4ojb7N?7$udb122?>JHLl1daRj z5<}I-nz52fCs8cJWixPp$jiz8i)Ipm>8Qx!SM7h&(tD4c-OU)&T9N@2GCQ4K+@v3> zrupvAQ3iI6>`pI}BR%*jRNcIVjOVzh*je_Zx%-MOT$-A4d-r+Z+X|YWmxr&l9EHeW zBAoFFf`%a|6%jOr!QU*uz*c8{zt39kz-GvJH(jE++LI?@L$*iN)ab!D?2Z!mi-Ajo zHWb22OqLuxDIT!6LP2UXF~_nq^dRQSkH0g%j zGz_7{=|)q}af4yp38P>Rvyl~N*1msRje;6815_qM0Lb7=y+F_fB`NK}eWN^cD5oZf z`#Fwplc^r|D@FqFn`d!m!m1`OVtZD-P+WhFn55$Y7I_e@XfZu)XgEo`K@f=x+Yv?SX z=B;#)pd4gZwv&6%-3V@Z8_6&fRsnWxV=W1+`mN(9A?Ag~I$DLRM%;LAh!Yv<>j5I~ zvp^8WDz{+B^3lGQYS}t%`&jqhQMo3@(IpP;0q%r}q zj_~;Z%OaqIxh)}445iGp-}`4R|Dy$%E=u3LhL}qbt{_!P!R$ai1bsphT`B-=j720J zzeoFAotSPlr1)bT*eY$rR$RzJ2#@bN1@7rz4HrOrjM4 zTCjaKS=SOKs`{{r)C~5BO~aU&7+{^3i{$>bvE+wY@(Z)$xEihvCLEIsH9gM>_Yn5i zR09>IX9gsAaZE4}K)eKwv(7@HA5)%4n#Bb1jhin-r4?KBYBrhKS%&yfv{MY6_0Xx! zmpRrl_{Rz40qs^i<>lH}L7D~z`}dpUw&Z~ZaQhdd#CTu@VHt%eTV-W!H;5}8j1uo8 z9I;(F*Rj+HAF{_BBA1oSi)BxSLF7MJGo;?Kj)JhyB$=z4I7*`qRqmH{g}ou(S%Rzy z`THTizsH~}naB+9~P{*+tdc6BBXJ%c2x92A6nsU>31@FX{H})sJgv9U*9d{tuq+ zLNK~}|Ek+UlU2#|OP&lwzS;9E|Kx=?hch%FBiv3F%6Rpv?S;3zt>K?^-r~(Q8EZuf z?tas-&MhDV~j6xr4m8 z`)A4p!|k*omPiGdhq*~VI*bQq-N=N_KkN=ud~b?M)-?hFicgQqYHm>yo1i<;XdQM2 z!NNA)Zm2?Z;qP9T>RdknvH6|2#$h5*lekNBp;vvzrl1$w=K5c1h4hZo%FO})$C4HL z=g-anuB`y;xzbsri{V{K$&kb_0h*I+>(h`rFc9j$AG`ou7uL-SK!JujO967T@cPP9SP` z$Aj{>i$GdJ#;lUwRt$jURW3NoG3RVE{!jEYhJ9Wr@vVn7<(=?Uo32?r30srF&xY|h z1|vUd=Dr77S{`|}bkH1C%?@(RK2hX6m#o(9kMorvD*E~JqhFa-04xDH#{HKFE8Y(m zn)$Id@2Nul66ENbdpauYrqw3-UqDT(_OWB?Gk+RL7N&ONoneC37Izv~I6QJ5#wIJX z3XnqZz{({TFMkiHCmeB}F~f?>%a?!UO({cF#|{)@W;R|JsMd*E9tc+lC%XgTba)R^ z@VMx~lOhh^@dV;QOqk(ykLW+5+{V1LbgRv}fpe(N-Vls|dvI{UD$6_+rcDvA$*{Ml z>&$rI9kIe~ k#c=RgiZ#m}2zjlXS=IGZTC)OAB78|pvgc?`mlK)x8GiSv4_izo9 zU&y(C4*I1EwZgmD7%LREMn^{Q=UO8)qjWI?hIl1OSQJwT%aS2^xlmqS#v&CpQq~d~Lvl|1kUR$8E_A0EDS>MThyc8#HcJ}2@qCR&CPXJhk z*)j&+Spx=G{H~)Zi3V&Hc7o?9ZHADQ0)8`sB`APv>eD+b_MO(I z<_6bpm+LO9S#k>R+rKFeX_1e-yaDm3J+|Ay&dhlC&R<^-(V(Adb*{LW6v9uqS!!xj zHSY&?`mzTs$f>H*=`7gxmwpH3HASnbrP6t6FZHh&&f2^5;J46#Xa!{WeD%oYubi3ArewO9vnh|E2#RY+LW z$*)`Cm6#ms8*05ZX6wC{|A%(2vs1D0D&(nH9k?7E=31uARRhKSYQbe4-~PKuqN|un zKsWQQf*~l}rKct)0SPfNT-#4?J1#04#3U*xbnDhxyH5L$D@r405BqW)lvaFFns42& z)0RvoxW(s;mH#Evpu0otOU#jgfR&UF_aiu&^33Ci1_y_Wbj}pCx%*5_#f7~#-$Apm ztz+g?Zr>>rHrXFXwTD+F0-8g=zBnZl>5@}xU?yZcz~mzeCE+Le$Eom?-7T7RnO-TWqucCYJk2fr@#Dw6IQdqnY}U)tfNG<>s(X#748fGiaL|!s26nWuSvAK$YyA6nOr@1grY5R@u~JgN(>u7 z*fQOq)1%P7NPDDlZr-Wi7O!Y2({_|Cb^|&>O%07oIJ%WG^v;3MI|VBnVWGHj(=kfK zi-J%E%`9&5Ku=G&$U)7@#-@L=#}`FGef>>N_@oiU6`g#70S8WF)I`hL$4gqIuU@@E z?=Lc*nxN9V4u8ty>Z1V2R3Uh( zHaFLf7Z&a@Ha9@+e4#K;88!jA@R#fal7L~$2^uYwabeXf2gQlW{l+=JLzHF*qGbJt zIlY-&@e^+jPxcwKe?iCW;z^$he?IGWk&&BGVxb(?vyDrQi?E#%EC)6Ve4M`G-Y-*A zcj0quQJNggs^+FxlgmXtp$9_Qe!f%G^m~yYCGKC@Km80 zXazc~mMTKEqRyYpEWX(>OE;>$L2@jWQN*i`*>#&RxYr)xLJ0Y;= zTg*U)(J%0r?hqi!rG$`)`$|Mfho(}p%DzliErP19cV=#^RuDZyT@$4@us+`RdMOP zWD=E{nVI=c^ypIiCg7Zvsi|C)-C(daC)1X8aT1S%BS&kbVSmUxlo^wL640cQkm5xt6g(Q0X2xZ__<`%nM3 z3oo&kU;)byF4!;#XJEXVSUemW79DN#NeokBpqytY&p1^u^&5!QlGj(8xb)+7emF{0e~dm0SUyfI zO@WXWki3_k{u0ClgzqgaW2JD=!Uj7sH*&weq$I7vkXd#Nf&&upL22ENU2^Xt9z!#GgPHxk~D!PI5B`XNMYbu? z{Y5u9xoB2$r^ANB@d{}l)m*!+{Ai0=mGH))SPbpa?}(;o>d0fXh+Jq4%D>ddp1)ie zFr`2oXGcNnJ_loyuC{%X3Lca>n$vsU8s&+3Id95{ISTogaWXcz{6G=Qdy#BsBcn5* zm21ARfjgU8TA0q3iuv&kqucSU>x_o0k5d!&x@>p@BTCo*q6|i=D^8b`&*UmuM5yL} zGdTi0!_I#Fsx4;lV?wPhgBrXz!bK1To2pfYP8;GNuOx~U-#yzQ-GG77t>(8XqYPl% z88kOHN1_~SbArF9wa0^?G$jIYit^w`XEmozarhR-O_#4+VI`1$s0riac~C&W*M2Fq z8j>~f=@M2gvdi~=62hYfc`^Zk?4LmuK(~yW0I$|?eyk2Tiy$4|07?%v1rlE#;6VK! z(cgaD!gRQv8VXDtFB$h|xoswW`j=)6NpsB1bVA-+cO5u;+fyL_II`T)5Y%N3Nz4iG zQ*kz@G&l#d8a{MGUf1^RBMq@HoR0>TydS#%+vp^5@Q)$vB4l7GYcQ^Rgi9sG>5>h7 zJMMBA+Z3r0XW1c(3-n4Wr?Edt` zK!I)l%feay%7Jc&p>KjbNtLWtLm>g-=PdTHv)=*Z7pA*W={H69!{f*A<;%wf4r-2$ zot`!KIk%O2V8+wIY$kjbd`**6b%QN@segzx;2D?d?)0w(&4|{5EN5ax7TFN+-kH6es9zBxaJ>l z^*GLort1ZVh2dIOX)<&LgY7SYF!A5(ddh)Yk`LI%Kk>SjqF(I(+j|jF zHos->5WJPuJghYG5G>S|Q}wT(9z z$@qjlOgfuBO<1>Vq#8EnLOiG$a{t{s{Ar-!(?fw=X}LDzA_!7#$TAMw?GrndIT;2F z5IP7Ww4{#aVP*f2&J8i}<5UsWb$*&QvRL0$gq8gltpPl&w;R171h=x?mm%GC3vYUg-&r;BFe^QR2 zs-q*@*|XM!1l1H8wC1qt5$woGVS-c;8G`fU9i9aRhKV-ne-;`!jN6tHI4PXRmMM^< z0Jh`Tm@5{siakBl3mu-%3W>s_YJq2pycm=Q{B9<9dk9;U!HpP6DXg(3XQP0~NbTEg z-@nU%KWc~>pq0USflQp9y8KMq zopd?62*vpE^Jo8$#%Hn-_EvqLwxbqxFD^cM>5>EgyGj}g9R+!8NZ6{xTm{!s)C-K=Ho3Z!D zm(w`Ks^AU~aypt8VqkG5rH#o%UthY>76uV5EjqKw=CRKEo}HbC4qtc{D;XdsIUEM& zDAvv5#xO7|>Chi4Z)+0>aD_AY@{%1sB2xFibrkSw<*Z8Iy~}Z2-0t-K8O7B#GWn!H zAvo?QtEYPbQvVvvwI3GlIIrNC2Fp$xSTELZW{0%%y$k)1)_ zbT0iB-Vzw8A$IsS;sxunllXiYDv7$*K(@B3@6q%`ztyPX(B-)Z6`n7~ZxAs=mbc~|x_R^H*AObk$Rg6{9YsxBQr*N(2nwyR z`qI;fea{&;Bp^#U5-@Rq`jtAN%&%WrzQ4OE<>=G}SFxiiGyU$PVwob#(j`+MsxpJI}ua3~$YuL4@d$9=s z@=M2Fm=9L*v$3&2I0C}h4dP-tV{DO*I6OFw{TORI4iW5L9HRtvO--xme&cCT#=mad z$Gi7YS*0{aDQp6OAREBaBze0;%xl-;3K>3t$)`^u=N#>JZ`#zOYivyP#^ySE7N#GM z;0RL>r*up`J&TIGEJ;(-($4ERWfQYnF}U*uZgcf2C-SD?Il`aYde$q6hm+GcRw{ST z!S^8z@ufyB6Fl={`N$0%0`Uf6bTiBz-p{0;e>sB`w{Ktkg!?8YzPvm^)mF4}2nlP5 z^TdAV5_F&;28hA9L`gP~W^jOK6CdAhao-79<;D}T;pY-M?{YKh3*lki{P=K{T{1c4 z4s3s(8aFs11|w;v^DwO~tp}q^)4e_i&-q~(MY8CHA?gj@Iq+y}xGc7I$=sZPXcNO9 z61&fw(ceNkPEwYcd&K{Q@fWd1L?UtBl3ve=0Wo+7-OuNXL{ALD<_rS}uZEGN<>K^T7y9}rA!V%Xwi zVx(@}62RZ1obWtqPC|-RSnT@8>SS1x-$I0(pwmG)6O)%S+KI}VV_rtLZqX1~^x-_* z+$Ru0nU$q)U~__mM2`UcRYJyTu3{a1!%i}HrYaj9wVw@gD%Gn~rMd9KJLyZ|OxQNn zW=I0PMOk-oooUCNo?mf0usI`iKSRm@`y%1)Za$;nNP& z(Su-ZGjnlmGBu?$pu^EW)|&nV29+QFyxNX~jgd%8Vy(sz zPJt~=M8D(Z26|d;Sy{C(5>LqJ(sy)BmJE5A&Ucn0ex9cRCN)N;N%46c?eVYm=xA+& z5OB`zw0y*7V)Y>U2H+3xGEJW%QVzL+gy}K%Z3e?d#KfAUcctx zzHw2j;@MI-rp?@X6*rLEQU&c2PGf!8c|1GVwvtWMSWqk|UEu#A#qSYd=7c_I3 zDD%NgKulfzB(cOqAVYbM%dhVXx7)MAACZ*|eR5L*`gf}9JwGM&9NF`z{=4{o(h(yy zkH{AMhsEx8y?@(0(GWk4Seae8=o~lJmMK@X^CnDNj{Rz`*=uH|CL6g!Z)wJu;5gSr z3zzH5a!qB6fpa%S%%JiJK?ZM<_s$PK z^g8gOdxmn8@afaMd}f>w0gpVxVWEO@g$-x#MhFt*a$;fz6cd$~i$Jlr^0-{D!Q{7g z+t9EjCs~i`u?shq-wc)>t1m4_=hGK2PN6|!t(_a?dji_KLbi!@=ot&OqyeEy#10z5GcBHVCdzl4s;lk*HkTeu=eftIOX{H;T;myWGm32NeJA0>E z+E3vXOn{=JUoeQ?R8@UzKzMI6?jF@c-kf@!;OZm0UX~#eeWN3%36tcR*;+DfI@_kV zO~g(3`7?#%av}wxtu3UA_D}Efc(+nJih>}{D5a1+PgaLMfK~y216qM3LhncuF)r{D zOB1NRr^vQj7qZFy%?PMD+LCq4WLNgJDHx@r;=J+1r%!zO2?3QNSBt6f= z4B@5r8}Kz)##Pg_5r4O8)Y`su*J_cKhk_#?_tFclgT=u^Y zWv_U}-Ppcs*DJZG7kT;CHy6zjJih-mrKyFdk6xWWyIUpGxpU7ax}2t`eu?JZ^?{j_ zn-{HI-yrX10wxF?I_pKPHpI&Asgr%%#}6NlTw@7nW_8p)_M)++zP^3<*RTEl&!6v^ zn(8Zkmf@+eXFZYJtj~OXHEj#2(*x-^NReIEtUaFz%E8|Y8fUeM16sl9=?DH#=bL4^ zaG*L!4wYic*GM7hJG(pkFN;Sa%MzioQV_`JwffuCgykBRJ>|fx%?;dCnqet5;ALL9 zwx&2nAo49@JWpt^b^csmJKvaa^NOP4 zG56i>^=~}rKq$v7AqNBTmncHBT}`mAR;H>TASw5SVyvk79-^;+zeac$PkH2pt3Z^cV-<#tJAud*EdKZ zY*iU+b(yU>R=jj;FKV5#Z{HN|6nuF|d(2B|G2f{@i;$5i)qUM)td&!_qPekghwVbD z-F;s0PhqpwoNhU|1Lg|u04Weo1AX|TzgGTpVuta;Y2+5bxdQ_`pXE8agt1xq=k+32 zuIy%Krw1bjCRi7xq_i|Ds;UC7`1Zq!8P;9)yjNK|RapkRS8HiPPrHva&U;1-2A6Hs8u& zT}fIkC+vm=D1;Ru1rmqH@CrHW{z@b%@;l6{r=QX~A}sVunMF*eXOAn+9@Y|OS5%kT z4p`NX9Th#4Q{h{#*2(K}S#eXaO0)>6gO%0nNsr4fW93g~Fj8I(1SuSau!c)yHNg_Z zXQtOOawL zfsT4f;`3I}*(EjNZfGIR%2!FbBd2SVXG9@;Yx7p96E)Kfrdr~z0>TFuR>y`TG~y}9p(9R^(xa$?wEDVdsSInqSJ9HVj$`Zj~(ai z9pshPU}9u+IS&I;O{?+t6WIcDb2|fu{Wc*oI6)<;Sd;(ns-my!+TaE*lpI^MQ&qycTl^Siw|XbTH4P$t25cBY!5(NXv~D zDcM%n5&1CENXQnTFeB4=B^6XGR<$}eW~!?j=a|#;uJ5^Iep)d(>5ZOZuQczEpI(y_ z;fecwRzE(6z;+|E^}Y5&r}ir>Y+y`Wd}#@V@p%`h={ua)#2eCjj0UGYsm}*QA%AMy zUtPZx!XUl*cRLNU*=q0-JGbNUgiE+{%v=*FknSEK`nraSZGZLsm&1_a{!f! z%z{4&U&eWDHk8)5zq?!S1xjiusR8Wj;Lx{eXKTKEalRvi<9FYixzoHUA3UkoakuR` z>>P-o62E`|H@xiVnZc&^lxz71@of>*a|l+3udeZ1aq~3b0;&qwMe5nSb16|3LMPeF zWs`^|m4c6EYvzz+x&`f<8y1!(;(kmMz)`pH@yT7grg=(@g4QSdjm21FA|IN(o7iHD zOG~fiPj&~d@19w3t^TrP>Vv$3g=_<0fa@ih+_}D6#82+?TyvHBSVBSWw%JW&xg9%5@5o*kDLmg(h2e>??LsD zgJGodu^0R4a417uZ@j6Nn%r%R#Kx=|<@4h&BotxquZd;;mZm~g=f*f~`J@H~1v7^%(|agvbj{UteAF6PCRFx6VeSxMbjf3N|Zi5??&|x;*eI$+di&wdGiRA1YDN zfd!ww@6mgtWojhZ<17Y#?xmx96cM46*tGqxgDF%U{N2gKDLO^7By*D;Qc|o4a4day zlYSG@{dg4=XqBt@jJ`iSEOc$L-^;9VeG^AGON^1G@9R?&FzF-<_)n z|Etx%F2*paY`PsT3pS z@%(GrvZA6fZ>5AkxCKpMlI}C?zF%(7Ml%vFYq;-H{oR7&6xZH1K=;Q{|fkvQjc1oTi z)&cmn9%7jsd%8AAiv#ZV^bj<9r2QBPy;88GQ+N)*q=a3%ifgKqC3&~ z!eoJtE=UwZgXUyjmIzPJ_n$qf8-OStjA`p}axrp1-rjC_1y-y&9Ua$ZXj zwjLGWvNmynf1VNEJ&?lJFcLSpzv8}ofmlIbxIiOZauF3aMl}B&iHvus!7%siUy(YS zfd$gAnoC_3mpsf|?2z@rAueE9JSp~9#|ev`tmzbPk+>75@~7ywkdY~-XpS$0!f7ms z0e4oyOzWrDl8J(B{y!iv8tYujuF6kTBI&j-H?gp=ot%h~{%DB|hJbx+W(~z|V$?t& z9nvh=reJ}EBJgvb#q8o-i|CJ^w^)@5i4!K5FA`q{exzQZSgC!d$kCFSo6E3!72KJ` zVukNL$>?`9;nF8BB~`ucJEZm}n`2l;Gb)Y6!MiK~pt0SJMPysRdL0{6@m zOrQT?Lyheq!qPznkFw6go38YnMgNgMgOsC3NBON;o+11KUL+ovO-n}FV?F}EwPITn zV$Fp_Y4*XVlJn8V;+|gT&)l2Uioda>eo7p3a5y5RxULG_r{kMY{zQ*gD)InUVZ0}T zmK`unH6-C&UsYk#($YFkLh{J+;K74~Gcz+^kH{rVH_#mbx#Tv()EoYioNGSN!_Y zqn~NUS3N^CNEs=&1JTFxSC}6hYm33@tOtj|=xDAq?Gu4#IzPFn8^>2H<}QEV#}>=$ zBNLjJxXOX$zsgq*M{klZ7jM^@!jY2cA}K1p!wJc;u_|QmY%DD$l}_%Hd!sn4gj@77 zN04x_n=T!6oXg%7*=>h1DfL z5cU;WAs^(zSp_sePcnJoPKDEWyW6>QXW&z@7xgoEChk>pe@}!Spuar-`&SJL!|C>{ z#=mbrH-p$Ap$jfk8pA?Qw|x?R_9SOaT%+>Hw%Eax`40%+jB{M_B&e$^g8)s1$^veX zWMIh$YGgL!2u&6o8fkZnIA8L!_v1=dfP3&pcTy=h=>rp8bVxHAfH36Vcze{;RD;Qyh1G0X zd2B#NQFTzQLRutGXlN+Q+*L+$bR&qSd98SYb)v^tVLsMGg-%!Z_5bRsz$>Dnen0f5 zXaAP5KF*jQdUKo7ykKf+d2TcerL*c57M6YFWQoe{pW52;!>@7pk{y;}d}-%#dFCYK zTq+u6?5ljw==gS{4;EAf@&`;JCPwLr!Wv&^-rlQ5znBb|f}pXJ5&1NrTYc8FIS}ET z{`NbzZWTudFEhUSkW^12&zx$oDu6RPhsY_4h~QaXeiEx1Pi*S8ZOBCVCU&MK>k;p_ z?r&N$y_)LEpBgfS39vG`)l;F4O_QHS;KvAOOY>h7wgh6d|)4%{KYQ6sc32r-cGGrm)yf_b6U!{T#r=94% zLwLyi{QP7Pf^Kd*S+!gEw%Ra!E1adne%4@uY;o^)71FfPf4*!#oCoL;<71@Aa01EZ z8mta$_&;NTk!EXss0IndK?dO0tCIE~y9#m>w2OW^EQtPfkw>$g6A(E2rMlW-&w&F= z?~?VF)L*}Tt-YD^!6@lactpe;j*nQ8=yy2#qa+z$%A!6ozW7ok`l(;_pvA@@*WT{h zVkfOX-Jkim<`y2qU7x;xe+*-(-hly0^QoKAIe)@B0*XNj)7X9pi4Y+v1~2%z5q=&F zNtmR6$>0>oHa-8&&f;Ch`s2s(#L*cIO^RSpXy|_?F>uEL>EQ+znsIj_{ro%!+qH8v z2s(R6N~g@U2DC84&SISgQ4?R^5Q`V5k*1{WSkP!pBG8$_OJYY?!AgH$9ofGn!|Iya zX-j=IDBnIJwhyrMw()i+ZQZr#=&YiC?S#a?bx!egf%f}*Bbb}7bbS-f? z;+lc{on|D!YUQpcD;DRi-)^(~?Y%~#>};oa3%2rO3f^zG{sw$J~~YkRO?+J zZn{TCK9~`6&*g;_6bj2{(s9db>3LaZW;3aYt;@fSzolL`>^{|OJNLdgHZG26AmT<& zlU9^_q`V6li^jVfJBo{`^6YuTF?h~!UhCg2c|hGR`N{5u8|9vpsQ*qj=15$E22cJF zWbhO+GBp~M9%ZMvxid60Drape5cEfeX)CE~QBhH`G*c#OV^u_;#US|4z)fT?S*O~` zeHQ4}iz$8tsC*S^)6Big#VofDLN3w&?g%R@mF>b^bhcC>(od3-$OzC)BiPp#xamc_ zlIKx138LP-BIXOhM z$X*uF58)W2i9$|V6(D@{$PHrH@K25~nSIdgwjyeNGg7X?(66}CMQ zOe`b2A3h@a)!F8y^PwxlOLeipdp{QmTE;>0PDqMq*bi3z_~N9ZYK3@i zluxoaMq#H6l?j)o=8~~LMUEN2)z8!5b--BEPEl#2-A9Zi;BAqeYLPwrwd)1nVJ?dH z$#P|$*U^cYrP@$mf6t!N-uQXY_XRlU>6uaOIlYr`=T4XIipukTjel{xs;b`gwf!bd zRXw%2n%SC2%&Jcb+bz7d?-N7|xKLC*<|@m(24OFWdEGWQ5g!ka1E3z>`uX*!k?H73 z=CceJ3M;{E`tt1?6YpFAH`5XI3FW_;C}^Gye2XxG3tyS*CO`jEJ;kfs{uTq!Iy~aL zKZ8dP-Eh;g>Y2fwXwjY+`OjZ!YKT;<6K*<~O>C#=5UmNFhY5ZFhF8ar_494sTpVlG zLu0}^>lK$x#}jv6Ts)3Altjg8j_Ak(1-P0Lo>6}Y=P!k5R-hq1tpYXM--lgUS0!z` z1mnw_g=^XV#tYaWMuJ-UEe2f!1>`%pY{X{ z5jX8vTdDcq*cW=1gvM!%+#&WW#eIcK3^JD^e#S4u!yg0nMWUQIG%G3-!x-40%E3n4 ziJ)T48=oeb8iISb4SbbIA@>_5nh&U1SL?oiPNVp@3VwEt!zI2L>>}^r;8o>se+u1^ z7PHS7n8P@2N_7t2AKow(tPZ?`zxO0_Frwgznbw~_Z^4wQvr`c60&dqhIOj=)5vdKj zrhlb?fW2EP3jqstcXIM=3h!Ae7#2PgIXYAqgVd`#2znw`+AJOXPRpl3GcobYr=bbR zH}BhmvV*20?Nd)dTpZ1T1I8Ec!&0IQo{`%qD2}qSX0}>1eSbdPFShyCEo!7eu-NR# z%;W)wfPLQipOXo}*TbbjncF{Yh$0;Vr@qV<(i**u^*dFwCF{$=ENbhIYr=eAB_<-O zSmXV@Vbo-OaGwkGV=e{3fVDk$Bb;MlqDxkK(I2ML6?z z+gXFETqyQ$Lb&^KYnsEtCX)r)mRvAC^m~fU4`b)!QX^g;M@8cRbBTeR2h!n#13b;| z4CS09XV7IUVAzI6ur9*@Y#yTdbCbXER*HSHrfO-CncQ$+%kOz-+;9`U{@b%Q#A5jX zD?zvf5K>nKic7+~tgN5D!m>q!Q8>yUZxjotrjk*UixFON21w2Uy}U$zQwBuT18|{F zNW?PdBgU_shb7X(+HCmXgpr^MRz(gikCVM=bX>$~3< zeIa}?Gqj>M)|QrUOND=zOZJuK<=+P@h|G0%h^Pb+$E;sv@W5&A89`VXgrBz!595nz z9DyA_Trwg&sEXiZNMx%Q*hIl2NLjm3;>P^gO_sqZAqNq-xV2^&kaBRO?w}X&Mh(+H zI{J;ThwY6*j4EvWLhw68kKw_p=0CHpKb;8oJtNqM&Gnw2&t~P~YT1A89X)pl)2?0K zb>F|ga#}fjZ={j#RoOBs9CQ?(L25imXus^Z>U3nIEl;mfo3P_Rf8~2?FE|b#?{Umb zXjQ+k^o9w;DdO;{uuu@-67o>@x(-yj;N177<2yF|Jvx3S(x94&2fRNN(cB;ybauYq z!@yAOx(U3~d`=*g{1al?ce_G>XZMYdS0VRLIhA^?`@Ho?&AXcsZ5ZAFVBx2AKNF*1#kbT;=?nk(_MkeI?I#m^ICa=FuB;>5l>TCR z;sEe#Ns}xHPz42-H;XhvMH(<&?PioI2{Y-D7#PwN6RGaZIcko4c5 zV@Yof)*hN4H$`i{X+|lFT4qW0%ua2E^0{&AQyZ?jN{dB~OV>gKCSk!KZ)^vo z&Z4Jw$jM0$Ak$SDC(@_;?xA27yLv(qYOS)(WMuBriOK@<96@HJ+jj3RQI`J+kH@Ng zM4i9T^=J{dhp{(?p|4n}t<6D5!PyVFz|^l3APVD1!BOIDjgzJW`4~}HWYvQ|f12pz zTb@`q8|m(usPLvszsP3Z2x>i0pM)nO(Tj~}lijazl&}X#PGY@|*kkr&*(T27pM!vt zy7$)1gFtGQYJK5sPPFrZ@x~s?j0gNy#fpKaK1*jgtyp9)LyEZTqPluk)qSg3&#?|$ zg~868J0%H+Y=`UB2JKLa2SkaAI4e2t+NFI7a*V-rFRvu-xW3Z0fFav)0g?}IReF-j z`EP#OJc#S#)`{jG3~F%BrzpDPkRBW&r)F!-7&LmZIICyU5EnMn`7Oew==sp_u#El> zQfZm$fuBD;N?cyegu1)a5^$X=L~3DhtqWNcJIgrKT=bxue2o$oA9PI9E>$m>ch&4E zS!UUHanQl6XWa^?+9B6kVTJ@7xl1-tkPNWax;@dBKc!^1V-p^ybWic|rjfrXiNpeL zy{OxCGvC>>PvkD7v*+J<8USFH=c<)cZ?CmC-g5&A>o)!ojW5Vc4KY`a zgZh(a%}S1R2vFWJdpSWJCLL$bQn~RD7vQR<=0Q*#KQv}JrgItGic5ME%X;I^9Z?+M z(6Y+FTIE&fOo~Qk4vX=WCrf)SG_@wDHr73Mj$BLt+g`22n07Xlq1Lmt7etFiU#A7)wt92Tc;ieF+G#8NwVWY>{n z!iHm$gdjvGD3>@p=@Ig;MfwK?1g zH0e_x>3W>@b0!ace0HHi zP>a*0J7dHhbEWp?KWGY={z>JHS;krqAO7UA8S6aeH1Z$fev!j&W^hvUxn(e~j}P3M zc2cKjJBt%*_>3IFkN?ujo7Fzudp*x$z?0ieCqlrdiaG;$h~M+6#q0s?=kM=ABYn>1 zwlK-otdEUZg0R8cOf&?;XkTxvbxB=AMeRTVBz%d_R4gu&3*gFYDR5kxDU=gl%d$MB ze8Sh$(|)`8czgEcUbc&uFJC?*|1SLWYwaTYba3>B+u^B!^GB13iAew*ullhUzmaIa zs>%`o1Wv3PcDz*h5)VuSxKZ~V{><*Sf5V2)th!ZZK8ve>ARqrN-r&&HVOaTTeR2D{!6M$xF4O^owx$(biGBSF z>)|PW3i+Rg7%n^;{QN>5eqNuZ2R2H3TnIZ4W`S`{^7zSJIN9#MbB7+oow9tZ%C>A% zb|6293sBIosd(1(d$=LIx3`pteQ4#rhSh(ZwvZuO8*U3-PDMp+fFbdLloU7W-xTjZ zc#w+P`VxPeo{45;zE#Ps|1-4#5W7n$?l)vM0U(HD0JEKJ*KIWqB{V<`3~Jf_dUx+O zfrl-nsYwn!g8SuTAA4MmVI_gdPfggK6ESfUF|>oerbaGyk9` z--zf*YU%`8IsEbdndx*dbwkyno(>Vfjvd_vYfVXpm`+Nhd!kN!uS)Tc1CF`SRs$BcoP^MWN%z2NH{mofkSgJ5e%a4Q<`JRTa}h3pm}S$xX{war02~ zN+qRIG5dr;viR}m^uU$uO~8xoWA4ue<{mtI@07EP>+Ux($Mfg7M%Fkf{vG=;%pYRh zCNgYiew=;aYj-?*Wokygx~1_y73^b|NJ_O{qLcSO0u|_FnB=q{ddtu^rwUy}q!ga` zK*6Le6&QJl!D3`CDXTR*@$Fj;ELW>C2&t(qDeCvE$3@(C2~EwIh=YY|)cTGZOx9>M z&LG_Z1cKjcPUg(N&+`&>ihkW|8Mr1qE-M?tl>Ir1Un-g$_vg>&Km{jO!x%vi_mohd zI+fPgAC7SkXR&%xvn*6LZSVT_5Owi@?9sQLz8%Z}PF`J-8Wpt3#q#0ESOBs7ER1e{aP7X&z(#|S*1IpikVl>C8RcU45d*Q5I(xB zb3m$g{@4qNdYIM6ii?YL;Gg#wv;6!TJ`@%f_MrE&tby8cSueR2gSUg6+UA*4`5-h# z#~ZrF8*bR9rd=Z8J9x%i>3meE=1kFlNDVn(fncI(DaU`H@$nXkelE#KS$>|3g@|td z^UL3plG(f?d*#`C>j-~Va|$o7f@)L-a6R5b?skZZiib&By{t3;xKVvs1Q=%8T4~rA z1Y$3KAjEQ1b)SaD0SNVrrVn4gE|ir$JK5CS%)~LV>py~$6DJ0#4nB)4gGd`e6 z(?+iV@wniQN53`l=;0&x-3-oJQ~Z2Jl^!Vz;?i~K8^1ibAa{9herrAf?|jH zLw&0RcKvUqF3hPq^kO2RRO~1=Xn~Y*LIA6lp0RNac!ywj;B%uLY%5&a78$u~$H6li z8uK!6M391T0w^&UQbiq}&Ho>@3G}US*)d>I%Ms@Y(lbsx91n7OeQb}>_gDFnPT)G~ zJ{oOFlP|KrbHruvp~qEzC?79I2t;Lo4Hz)5tDA}(Xhy}8f0x0lrDEdZ7uXgL?cE!F zEuHm+MC!iqmX;OA!iK*1RgwsR=3`VJV;Z=bA}1=kIrJQO|wKWjRo(>7Y(7}c>$ z_#E!4jutKWURS3Fwh1JL6*$pURnJ1fNQqjG#kw|_3n4vP_r^zLu;rB7iQVA;v=p!E z?gSP*Hxd|pviD7PwhGK=|I<>1pl1VpdW6;%q>vy67<8a5mjCTodUQQqy zf(AyBB4|Z0MIn-5qeag{JQ)QBMSZ-S)$Kc@Q1<&9picVTzRV!(d=a{LOqKZW8MU0Z z{_r(whm!lYkHBtnvEd?b~0qf{LKu!4te6 z_0H3Jef25zMWf|Uqfi6`h%Nd_3#;HRjDw$RGUookM(i%Qi)Ga( zEMqZTA3KWH*MeAQkxR(R788yHNb(Z22+Yj!H*r$WZNjz7)~(zZCsREPh&M&cmkUtS z;L<0p=hC5B!7zRNKYjfy?KWVGl=~M`+JCTLyj*6MtmE?hu+Y}TY^8!6A&2>Ei0b3T zP&(OC=f*1r$PRpadt;EhwBHrc4$wbrCrC+|VvjUB?0og_@c=B`zT1TKt^&xb{!!y& z;mB&qn!%7_=^2CY2CqTOrnkciwqxfmp{Rv-Vi}lEqEGJix--~V4pvQ8ansPK5McrW ziY-u$lM8A80r)k#TU-6Vf1hRHS{UWiJR$4)?wyfmd*)Dhdwz6yyc| zI|M#`!)XVVNu?iVjw)90>IkyjVzj{E0IK;B1Y#tCVKI@0RdBaFuKYF(x|ts-@+6aWaO6 zUqiFE0w{nCjR4rM%Ki@`S927={=W@Lcd4-M=9c#MC(obvR0-_3WM>L=?kA)hFdmG> zaEGwCDE*?do}SgxxP1_|;7M!wJ=fQ(l%N1061HExS_&6D0GJ?1rTwL3 zEOFtWen!7AROa!B_{~73$01FW@CK+Ge!I5TZgEngLtTEs|J0hlMMZhn&C(~aV17IX zZjWrLsx#i#3+9oK;{7!^o!k|tPk_CbPbEN{|I42FggX(DD@QO$ht%O=cai(sXC$ss zIs}ZxZVXfyfDiHMzjK!8tRI`MfnM===CXEo8n6(kGK`7Bi{=yzLvB|YM(xxGKOHWo z0a^~g|DjwFAP%wX89D!M-Ok({Tdojimi~2Bx8DkY54>7918ffRnv~ba`Xwq=LVdFj z*DTYiVNy&%^i~&1F$mjx{5Vx%p*ZaI0uJ(yL7G84xVCTiP0uu)vbZAs?+e{>>0}*V zDNI1`AXVW(etv8fdFN(T)f_?leV8tg+S@NBX@Z%{b><9s%)x4Dluh;Y-NjDcrY)bQ zXX!3t>@eQp;*(@b3%4`)Ps#q@a;kg3R^6FrX;OXLfRuTm@+IIsmP4M=r0eAO+M3pT z7I(%W!9{xXv#utg6)#8F1rNh@Md2SF4Y6CO^x;JYJJg&0x}%7$5JyAV*r?_zvGWwF zJV!@>@Vi0Ytni|J2W=Hg3wh4u$@kfn7=@Y4v1w*)$GfD4Vn`{{*1`g2b)qZ=UO5f1 zQaS+x^yi&boH>^3(f;zictLB_mO+BJ9we{6I5DsA-)FR#SGEQ50L*`jPiO^VE=J4m zp?BJDHkr<1V8AU?Ute!GH$sZT2#)9qS8a{%+>weAPkn~;$$Uw`pd>sz6!Vik6|XKS zwf?V+IuIf~mzMe;g#69RC+S97XheZ@kjN*#q+Xb;B$&_MVpK_LhYNlRrDkB&EMX4{}bzwW4J*6gH3li_gSt=uLhj(R<&$ z)yE~1laW$Ngi<%@M9$Y|idt9YS>{a+vglq_FfmJr6&n{ZHcfjK7{wyiqnV^>%FgTO zz3t&sbv=*djG981gvQT|$0+OUFKnFQv6{4sw3^^o3*{N=JT!je>Fu4T9`EVzfyEY= z*ufIOuw>2V6~>I?c_^S?XsV?-AK{^sj%FWq#R`x`*_~aGS#9TzxDLrl?zym(3w7 z8}R!AoxpF3t-Bm)T@g;*-z%?eR#3Y4crkGGJ4n;p>adal4EXuSN9Wg_RyP-~+&zo* zxp;f)+(QsG(hE2u++G{0A54{JpOKLHG_acf_-qVKgSe%1BRH7CUjD8)&)>FeoHT~`=ddb)SK!y%?gr0K17IQ)&Z zo%%i*Go0GzdHmzYk9#?p$^L$H#OF877{jdND74y77clC-EuGWs#R50~QSD73!vd+1 zGQmR&VuP-)*$mf`gJbWkUfUWLN;haPE&p8*ZEb*_V(!WP?UL!&3l=;JJ7LkEakEsn zXkqi_%~-lsw$Gs6g{RU^vy!g${OX0dJLPbQj$A2ZX1}(`Uu5sZmgMz#&#@>)s?2kF z)62iRsaTw}JM#;7Aw`WnMK$bg!|>t#baXB^^!0yJO-2S&1v~BqVX9AM+LsVsMvQp*s2Ly!%muJtON-U44tX6H*I`uP7GrN6j zRNaDLWM^FZxzEkdv5vG2OtJ-LrfYW|JkvV8kVt+Mfdw(Op3N96%)03jmoaB)k6!|z@vVyKBiZxI&PETtjhS$Lol4#aqaIn ztbG$Fn(f9qS6x?^(;Q0iEQ9JmYeZ^INlHklFHiM}4!jQk>h0|54QjPY|{eV91~mq{NE)iN=ixwI=Zlfl$4f7fr~g0@R>$jeZ_lQLwxe zbaK)fTyD!UE_A|Gq?UQZa74{nh#XJJp-GDv=X- zLT(5ZTXj}eRu0un*;V`bbL-X{PzQ=c%irS|$$0eWk#Azthz3Tv7O;XA#YAiftf&qe z>->Mtp2vIANHiXVc{L>s4gC5g?M6-wS1f0X_~T_#R0j?O8b--UJAT02p0NLdBMaJc z!|K3*geG?#RZjx2@V#^nA!)_!Pt&JoyQ(0#)H-uj=uu1z4g>N)Y0`xb!7jO4N!YUmMo`{5{qNO{lHaup(o3 zx6I=2hVF!>D^@?wAug6lZasLSO9c$O+RrZ-PFs)2!zcUP#WZd9MF@ByW`2>jjP%(1 z1Tr#a0@nIdZ*LAeRmpBxo^&+W2qM?g@5EAjgUpC;I4ZN69K ze-uB}!5 zGsDLzsTjV;`!W+i!u;7?biT9jKy_=nlVurKjx}9eVbo7s#3mp>%2Zo-LC(G~^Fy?# zgL;O(z0Z5*6DR624XpsbU$V;!of*7-&Uw}M+9>gi+V=zryXpjQ@k{~O1?)oIu_FO{ zGT=1}4>qd5W=bR&E%#C`dr&?KkTkeLOG}&dnnmv4?OHMxLX}5%)={d!W-{Goe6ny_ zoF0$zozuz!DCh16gzT9vU3y@5f9ajeMlFaPkB~LLXWu@F+DL{>=e0{BqP|uu^EG33 ztZG}i&3n%^r>;GUa@LeV7CF0S)=*N~`jr^*lvdbrgI6`sVU|m|?>8%6(UuSO^_~#Y z#VGPtztFR^+%J5Xc>Rp8##&H6WK{5E5J72YeJSN)3nruvH1H8kMvJlU8Sql*$^YxO-VCBP!WmaB`- z;SsEvCQaI3zkcO+S;riN23ar2b>_>o8WNwM+z=KNvYLooythI23o0f2HAF=W)>ND* z8G~ld*oOp#hEpn47z*29jAn86j^@@6iAwI~Ha3u6avwfSziDb_2BEXysG()+5!(^@XswKWpE(Uj(UlifiWxgbUA zDwFhLD7MT@p-p6D1YB&+N(J7oo!0pBGRL2F=<@B`X9{dLBy#UMS!Ky-N2ac{Wkw^S z`W@aLjI#)?vhf4!YX$c!_Tq>kmqI$y2||SIf**|gPThE`m}n1nv7(rQHcGSv@tEz6 zCfT`%=;^QELa{{v+*hyHZ2zk}o^G%-7}6tkO1jdg=rH|llZvLKpggM~8sG<4;u~}g z)t>C4zi^}fvI`p<+fu)m7y^>rTU)Egx>l%$hld$YtYw<8GckD{bW)do~tr zy>{^knCQ&szYQFk=<=#od*slg@YWTGMOGc7_}_3d%r5&GmX(n~vNCv(PZ$#P($wo=xOoL&=goNL_vO^_*{t|c?Ko)-K|z7(K6f)7v+k|o z5!chRvX1fd?{xsVpn{V4&Xpu2Bn0{pC`AxqM-)r+b z5g4cnY(vk~6hm-pL7{^0c@|Pxn(T;(5OfTFC>vkemQNnUA%+DK8pfA~{~Y|j$$a^@ zj`CY&47^9ALw{p_8vETO`|_12PCHVW8o-4=KRzmG?Fgz-a{}rO`lzPOv){knA@+*? z!2fiE>3l&3;=Aqo>FKero^IPoto$Q|!ZeB<$q?-q-7x(78@pDHAfhQ_rD$!R>G&+o3YS(@h5Gw5_SQY-5qwX}$XKRS zTu1>DUw&X0^v$qWcZ=$gcr=dmI$7QRm=YJ^yQP%|``ptcaUe7z`(4TER`VCgyG5S}vAoh8ZnaN5ouz15{ z`DA#>#yMp23>Hk@ijhBK@auam@o@B_ar)xADT*8S97JTpO{Uv0aa~wn>GCC<5=;dH55M4P z`ynFY#J!g^_%PtOTPHk+*M?X*M>yJsNe3JsXy$RlCcJ>}v z`RxCnx$mUK&_{U6gfgVqOj{zP$nE?0t1jK*T+mRS;Ngjs4e4wgr())FbzE%%#L9^W zWNuE^)I%N~za!nuy!T2V<^QOzN?aI8`Wy>=0VTLU*)oF1Gi!p<%*fEE@B{pZ4_MI^ z|Ad#IM%pey0rn$SokqxfAy;b|dyI!?T!emxyK`+hPfK)OFssMx6&N-)p0mE)g+hFY zt-F|uWRIwPhWTKEO|l!l`N9fM;46H{L@r9Y3R@A2Zpcv&% zauG{%{qSpo+#DSGn#e*e`Sy(KKP~HfeyN$+33uaDV>jlkEy4{4U;CZ5UN{Q#lLu8| z0rMj+4_24gy~8d#RXC0g419ZcCWOvbgXgx#t%9dqN0ooRa-&`K=ho2;eZ5cP%DtQP z6l+!vZ^sKHHFxR?4(k;jGwkj^+3-tb{&FpvONCF@IEp_Qox!g56%{l6a2CV1ZBPCD zuE!VHG*tw|uPk(1ZDkdkb?p+N-{bfUea6DV)?+WNtGabtW%o#-v+pXbnR3XXm3Z3q z3S(xTXMN;+@YSQ^#@$cXchLGt_D0tXF5Nx#_7m}efXDG-OCkw2aAq7FQOTz{gJe=< z!>S+A-M0U?C^}{6#pXKH0v7fM4T-@6Y_W1*%k(RTGvwjHQ8RX7#Wbi6K^{+pm`@=!=mDC66e@Xe63IW-{VXF z1ry5s&XVCn80jnVfh4-_TqgYz4&kI%Utgc$b@uCtzkdD7!a3omJdpkG9g^c`V#2of zuhU^|LCiwzr!QP65(|=1+JNpgQ=OPKC7wA+g;ht(%F2ox=<3!=H zeXKCkEpPcf5*I{qp`~CH*z~UU9_{GpXaKSu$Bloydtipsn8e`8x@V8$<{O`{9$|uy z6}23@UnoAVardItlr2omcc)LZHiV~6Z|l-MA$`Xg%HV)YH7Bi1-9_DEc=pt{POGL zS<^wr+Ng+X8J4}S$;X`%4DB6M5A^G0lGQZ<;a-Aqa)W+Vn3L!SwECB>Hqutj@yy7xuu$t zJz@ie`%#8{YuCX}%4atI6|Rx>80hVRz3=$JhbJh$^X=9S_80c-i=F%G)M+kSBKG+5BRMv zkLM6k)Wpd7;!rcA;1n6Qtsk$K1^M&12so&~{-SS+LLE{d>ES!?w0OFadr(R;R{gv4xEonZ5?kOM$S3cjTek1XANLyM- zNr?wjuk_6>GLYqzvzC;S4U`LCah}0K7H(0J@aB7fxjbGg@8AW`x4~idG~T7Qqt^YE zoDs6Dh#%%g*391HV-Xt7PTy{;+-7R1l?{7&cw7)_+A%V+ zv?1#Zj)rxXXz&+k+v{vWaW8}PP}u+NTcJCr-sW>L2@42Vr(|R-b9bn_N>m?&QI8T> zofQl+D!a)h zqy_)^cFBuT5@Mo*XWdWC`Uu=Xuv~R{$T}G{buXSWjH$PZ-*W4G&`87Y6TGiQpFT?Dt%2)&(512Rzlv$Sx=@}?vp3K;SpY* z??%g5-I4sQ3M%?N{|-WIyu6zzo=lMdv>o2fOiLTCG}f57kFZB{Mh1@Q%s^b4Oh-|H z+I#d@L{M7}f-Kr$@+W-3W8uZW(;k)40|R~is>SI}n7rLI)_e>MkT|5s77MGnYsOjs zym%Be8cD5=8$chlZoM??Pug+F037k6l21F7V$XpCK|x7bHd4iTEIQSS>v(%F@bhi^ zH4`KxB<4szDttDFRlBz{v^}LNF^Z8pPu;;(bLz{l*49>HN1BhK;7vh6!OH$2uu%Uv z4-c(;&9_C(o^Kw+okg7Hu34Rxk+YAsJ#J|9D{M;N2zpiRt`pf!-ZFW!GBT2plpLFNOyB)`#NfGIJ~C3ZC&hCgAK%=E$n`{$BciMO!X+E~Z8M1v zM8iWR#;f|yDR&Yy5_aL&7VF%Lwr<|M8GmF($`gK#5k_Gx8Uk{YrA>)?lvuKc+e~l4 zXmoGl&7()w@55MEW$bWoHl@V5N@(Zfu~=l+X-x2sR^e^$&_k#I%-yyd=cxOzT!L1-xKLp$}-nLuFa%3}X;>FTp`M__5>pwqu znOM$wV&HT|Q`p^IyF|qh+M)Jd+ zo^x5r$RoY$#ln95v!v~kcm^l7tz@!Ql~w62#6do?5v@&>MCkoZFoPUNKG7&L7s^%x zRI9eJuw=GZRE$0f4-ZFYVG!u=pT=|S*obAP?lFx`nhw0d%881Ayd?^s)o$H0J(?na z-!hiqjH429V4mvk=YNQn&fd@GVsnKI?pKcxV&7KlZcm}iRZBbA(dkS` zxzn&lJoopXEI-LAlFFrdaOdyaO8aW%>IK(rwslp{l$(mGbiaIBbf;nf8Xc`_)sa?J zhAgDMav$4q8#|g0iZM%EFJ&E}>w#-&Sz{bC|J*xlrKT)mLo?g$s#x)TjEqQjkGBVJ zqU6&y4p~kvd0eWQv(~&JsoNJRlO<2LYhFwEz)8!t#G_MG%J7Ws(YE#LpWKvLTC5#x z$2a?lagC`JILW#|y@tC-MZ|t#;w>VZ-D)CbH647ciTN18dqaNy{)}|=^vRK5rj8wt ziclMDT@fv|2+Im}dlhu$5_s5lTYs zvRBuCMJs#5iTIlbWB%QrAE?^e)}VcHfsZnFg~aG5V0p|-&`eBsysaX0R#E@evBpY7 zA5E>!Qz~O9^gZlQ5SL?wMu~s1FQDSw`ST}CdnnLTbo40r*G4&U_SJDZ5)Ie=RnO$J z^a{%{sb&NiNVNJ&uF<)4U37XN|4rB=aOFFb>TI#c=O3q*_8k;^q^Nv=8eIAXWSNJ2t{lr-CX;A%j)l+(U_onpXYyHeVZ!&o1@E-8qmEAyWmwYEu{oGhkI zEEBRdXD#+#uM9m~ef-z3B>{M8(`ilo{UfQcjClfnD+d9lavnQ&FG}Gv)4e2HvoqbU zPo6}PCSg7FQGxvl6C>j)#x9*L+`5x5YH=P$n_UTA7*bKBE{j3 z6JT51+|&du6&JDO!1+Q*F+A=D{HyA0 z1sH(_!}PR-lwzhrvDd1M{mO0>L`g}>9hH@SAPmyvtULM}HlMP#TP9F1wHB%uzO-&n z|LFV~Zq`_=1V{Df&vg#6vC%R!S8(MRyt`F$&7ggcM_QU7SpI0he1d}?yG!ZbtBbB0 zYxRMI{2|Ia3E1ETZnPAQ=@z`>*~39WstO7lm*>~Zy>{!N(^uzu6{XKx87SwA6zcmE zA*tw}?8ayHiaa`zMCg3RMT{eYp6>TMp8V{)`R|#O;{aw-`rL+w1umH9eMV;z?YO$M zsp(`lIQl8S?#)VK0Gg(!rw>WZ$l&K_F(@pXsF97b?hoRB`s~>|uuP!J@WLDVs1W{! z&rpDbz@xt2-2^ThEsOojJ)&*58WR{jb~8VX)YAiPM%tZTW??y{xI(%R_9WN{UZ{9W zm1@7pQdxQZ>C+!S(k&R&)IR@+R)%M|ie6l0kf_~OP5a61q@-qdf4noXG?I~teaWsX z8^Cv+KwSm~reAW6OI#^G-)0*{1x*$a|3M{s2Hh^Ya`s>7z2)BgAA-Wu z`nNvUKFz?dSjZktwmzOn8cL>1pA?euN1y$Cd?uZo#ChiZlJ1rIwNP?*yJeTnsoh$@UAKKkRqI zT&@V|sqO+{E6oYIhwjaGGCYINZ@Y*%0)^Lj*o;H?>=zWWN}4l8jCTk3+cHA7aC5=| z=0>ngxY0oj5e53^BCGFUPP*0dH90w1p54!Zv_>!J*3%1Njqs_?B&ZF3lHsedVMnjBl^n&(>|xx{J!V^n0&_mgH`O&wl5aLOl{U-#{mt2MeOqLfV%5skJ-Od z=DTy714gE8=M21Fzor2#uD3?k&IeCXnwd5Uaa(h9%l-P?TUqXZW~6DB3|H~ZyoZ-z zc^(9l?mm3|0Pb}W>xZSlVDC;u!{F(A9vFCTx^MjX+qWK)wSiD;|G>tR&qze#-`N~n z({tF2bMx|sNik^Nu4LJqi+#>f^>h{(>3suk3&IUTxr2g)ozR~Xq4C9DVuDS#=0;>U z(}-WjZPC)&-Uac9?dUcJD_?M1PTsntglZWamR(&f2fPBEO)gw=Z?~qCfu`wv;Nl#y zv_iZfe9SAbicBcO8ZH7Wa@c(5Aq#UeE%{ZDVN_!3v;xGGpY&C<@B0^r*mw4D@5h?% zVZT>%&jIxU?$^>&BF7Q{ICUj{*k(%MPfAsvueYM{48SG_&=j&d;sj&W0RggzuTi*= zdpb>49w9&#@^9b1y?D?A;{R?_GqXetiqUWV{cVW$ZEm{24Ra)AwBjd)S!`~efH)BH z2kK|yodkM`kVri?^lo%kOn=|W8YU+naGWDOhP^4k1Z^xQkV1@2r1tt+2sUZ&F}{Pe z5>gQ$yMxL0&sBW0)vdWSVica7v}*X$soIoe=WW!wLXZkbXxSXkrkQ%p40e}{HuDeu z$OB+Rpc9py`F6w%JlfQ*9DkDSWN1}y7(qc3NVX<(M5tq5CN$dd5xaEQhq2i)Bea`a8=J! zW)^#og@p{lI@mbde=8>P>=jeS-+%%6u-(wFeb`G8cbaK$AQ%a^=f_wFYxFjP5^*!v zSyuV$fD}gNAoW<32JFf!QJ&*va0r+PJcYjI?%~w$5@!3olzfkjnVm4N9J{IzCLX>Q;*j!lresRiO0c(Rusb zS5f?}JyGH{H++35N}?)^Vtz~O@hJSOkO>FHk)pB~1X&0ATd z(5J#XLtL1D|Nb{#yX{D^vAJ_-6r>h#JXnE}LENk{zJUDY`+Xj7O}dv}ynJ~Yhf?sS zM(TZXj6?(+(6%q@3gbn5Yl)glpB3nw2L>oNl6!5+{nk}&rd(0MNqXe^=Toqt7Z2gU zZz=Lr9jxtF9-T0E7;n$fjM|ARDqof@K%lUoJ|-0R}{KzLv8Kq^WoQ8@tKR0 zrSHGAxOnSB+U_HC$~vK>1E^b064u#%T&_68}WKvsn6{kE-3lVC5oe$CqfoNL}PPeKxX2`_H-j zB!M-+EWt%P|8Q9CJt~(As-$-c@#T&#*&1EWN~pk@HTH z3h=KUfui#Az+b;^x%5MaZ#LCKnr<;&)|PEu{r;%!D9Ll5$pPj$e9l#JnyRYHBek(W z@^$N?+UGVG!+9RyCh}z6n-IYZcB#u3=DuBa+bcb_@3m!Hrz3!vRk(5 z_$i~7ll6QR-jTzN*gt~LP>JUkTP@S$nqqnrP2pI8Hl^QsP)ZDY1>z4~T%2%MaiEmV zzCawxltNT(4#}cMIui>E3q`a6(0PeZ3Nn@7zb_mT5m8e&XA}>J_cwXvU_(j3z?G*S z9Wia{T2KFt&q!pN_GH9L?0g=ncM;7_&}uqZ7Htmm)vt;`tj8VCO>|?JkMXFxdFPbD z$SJ{leww)?L6?V7;D@`^>-|Tsf8P4((@{XIE^cmchR;)oRda#I13U%JL@8<@tOgci zhP!wo7=+X-bIk2$s&8O{w?#as4&zo(T}(!T?W_{0O3v6e+SI{$`|iSWPT56Piw^!)KmQvyyc5MQF|3VXX|J?EV>kiHUzsEC2B!9N_Pjkk}qY#=zt42Qq;LkvGqj z2ra;)8_gf_`$3PLG6=~OQLn;4NSrVbO)bY-&=j({)C1{qG3{lcREs61ur*?9#{+PY z^eJRp$1RW)-y@jw1u_Pv=;}KWD96{Yvip&NEN$TX`#!-8_*!PJdq)@Je@6BwUNwUL z;jYyOdB2!qve36VGe=aI6hOyxiNd#BBKF*vC0llm7j` z&r#f#MhWGoPM-j~)TCSV-#ps<>(@){-V_E*JUu)Hnyq#sZmzP8d{LJ@nh)ek`m$FQ z2RS$p5hNpc*toNr=ZW}Yk2}M0DPll=yt?Yqa@YA2aZT3@8W9_szWEh`k)`F6kzpqf zL6b&gjbZ(rQ+n>lwEz7`a|n8Km)}$ov&A!ESBAchj+ye!W45zQ*&hsuvAbR)0{vT* z0y{GqY}nt)V0iXl31-=`V@eNGaxEVpUn}fvH#Ed5M#(=rruxqh&YbIEB)UT4XMj+2 zAxw~3%fLYG4903THMQs|J5%r?Rj@dsf!X{$EzBKuiTleG{`?2Tf5nOV1I&NQseCd> zeEpYGpl_UUl!UuDmgfA%MPk$N0TO3Bc{2KHX*q|Yx%tbsVOln7dP#rp-s|lvU-bcU zPG7I=9)5*taoTx&`oo>8Xyr{zQZxi)9D7n^MZ8y%Rkdx>S?M;NT}?G^=eu=VY+h$a zNHco)g~k5a^BOWHKd~#zvQ3+F4we3!3y@m#J*B^dKW_P3Vo^KnlqNwsMq(t_)!;=F z3>JWQ$nGP`yDqLO?EtY?zFoDZFrI~1wo_R~B2$vMhcX|6+wgq=udhA zO(Q^2uU&EZIcNUvstR&~P#7lP{w9TTP2B+LsbWo#dy@2`*T~VAC*7sM$13-qUZpH< z{HxcO_&zW@aZ8+?-Bs}LIT;@xZGME3eL$zy%OfpBi9WPwi>%Z@R#}mICt?y zQ?#|Yyb*UoT$?47~)gNpbIq-OAZN#w|PrPSLcV!h$+U79rO$zxFOA#-6A$^?J#&}bQ~ z-2cxmu`t}!Du7MkQTB?lqrm;~wasM4dNr@YlQQ}zMZT@3G8qybNxO9Q& zRb|G?YNl+WJWQO|nnuclBgM%-Ox8*N%xOh*@89hW%KdvDnm1S#e+AF!UHGQ!< zT*{bW+kz~qZLImqW}5GdSwGEyxe8dd$mb1Wv9TDAC}_>v44GOd4#q(5R~xhEZM*?M z3K+O9T#Z!&TduyhiOreC1{ZtpM>E)!5P&#zrC?UJm@@B;-V)ehK+QyYu=6_QB}Z|U#VtiV!TJ*AI=rF`u#?0aOijMy}@bPrvY1vp#C zUS+^@cGlfvD`MWs(UXBk1OJ*~>;!x<67rb!T_S;n!lklT<4n<-8jEo%vvd^HBe_7U z(#-1Pwe$BYeD1@__%WDaiHNATw|@(SfeIVm8(%su{@-X+sc6!6t_G zRGe5Rf__YuSnM!6WMtb7r08J%60@!1g73Vmw|MZIRYx4u$*HMONat<4Gfi}8NcQiS zK;**~fXHER@L5?JRwR18#61!#uVEipxZ&3)`ToaANftC(t^ol7HZZzaN<*qRZwFq#qq5xf8e zwOYxfaglFub`Gmx!fRG1wY=43D@LB%e8It7hDQHxf@Po6rAq9~#Y5GYX>$k{i*9rB z_^0bpVgdXix4u1!Ys?gU+R>qdT|FVPG9PK6bOto}$5yo}#2CQbOJoKm9;&x{Kp@Mo zN+tzrS1zKeg10|&N9i~9G%xx1)BZ*fXFT8;60?t^al=g>GV-Q}gGmT8O! zkhs|6d$jz`_JS($xcr*GH_jJTU4n%y{?OA?D)lofz?F#wRhV`@Jvo~(Rqei%64kvI z1IS>z?nB36dGgMWjc_uPxq5Z4sGVauOx&;&j;+^tyer*^n4d|oUxPOoHGxJ$)$DvR zN*>QB9KI;v^jX|hsM?r3YKOFsbMWrjxA^1@I@3rgZ4Gi_2qVL zBnDi*dbNXR`NXb0QtVsZMAS`_**Bp}y^$4LYvU}2j}y--dT^*=y_%9*1G`o$gw632xB)&$7vGe}Ui_ybPy$Qd zpBINxrbsWOLhr}B$(6b0xqhbRw4|~c!-ZSfX`VsFt3q+h5*je1DQh;)DH~~Q*D)}N z<{t~$Lt#_9e)sVhrMGD1?4SuXRLsxO)lc@m=75g%TSs~~b{5U6*#M!g5Ow7zx0IFgzZHj}ARd?P`&(@X+%qSA9nqK&XidPvJ7+gU+ zj9@1CU_Ep0bfP77nV;v?r~hI*Yn(YPV|DG?i)Wwzfo&dHlcTLYM+#{xDFsF32wiH5 zQS06l_m8=`(cneFmWG(I|D5CtyR+;}uy`or8S`XT`eWig69XINw-RvCa#ipM`3^P+S6Vwn(v-^@%HWK z`o7b11*sC%kFH1c!9(J_!H6!>Q`}}|%wN3N)5BQv!@}+u509_KaCRSp;~P~yR8&;f zRyFl8@*kD^_82KO$JGS#|A&k{P?&zd^NLp{-eW;i(?q*nNapRsha*xm_^YFgjU2j^ zZA5GWL)t%%yaAIyF0n5xM^)+5HDAQjCwhCjx&0ib!8v~{aShq4F5~&)4(SS?e&TL_ z?&ITy@?&5i3D{dSOGoGCaTAbjpz86Ki6pi~*-KwS<7Z@zYSSD=4=-DsJ9mHX(P~Zo z>Sfti%{l9DSXMhtTL0vyTPs|oq$CLH3F1y7u|Oe9lN=ZCCW3XbwT%N?0+7W>pSQAx zg>h}$B``N`A8ksU`r-n$4^Xz{hOME$jS~>+v+wEdo&<>awxMA_q>S4JMY>**^|nDirO@4y#^nfZ+EuVz#Fz=!Cc&N z#kEPcbNZB&9AL-uSZ8mGqlJp(I?gINhCpL%WxA_`E<&M4B93g3ci0Qj_w-jw@xkHA%l(aBLh13<%y5V9e{53DH|F z{nJK%XCvke=aG@p+p>QgQ#s{2-#%a5mdyggz{e0vK{)eHl|N@>^aa{mP-f3JCQzpp z1^$<7-D^MA0G9%Sp9?v@R*QhRxzKK8kNjpy1HZocCmCY4TJp__i)hIalAWc?(HI|;>Qir7?$E#5kr zmsdP7wS;u0Q{Wo}=!cwm`DC9T`*kdl@*by!`M4FYf_CL4N{>H`b(Ih-4KM&iKvHPl!{+el6HxmnpN95I)20+nMYg zp6If|OQRf29|7TvzVs}?0nI0n9Zj{e?(I)Ki66$z-KMoV)vY}Lj4dr)Q4gvb$VL40 zR!!wYB@Pi>mOZmi5aOVXI}Xb`m6%ruvL&zL;pc~xNwB?F#DTSe^{7xq){1N{uw{A|ObcteS>B-mzT4gwa7ZcwutGhS zogWmAF88ymLU`hN!HoWNRPC!+m>yh@QDk=ND`(8-&t!whGnk_9h+nBC)QYs==kh`p zWvksgJJ&o;M3suI-2Vd>Vb4<9ey)FO#xllCL}z($Ip|LyY?6F@9L(5G9G>?Id}Z5J z{~46IybVH+og=lewJg_2`teat3b{u4Z+R&pO!)9W$Pei*K7%c*OG(-Ve~hcK$w5%; zv1c?NdlHmR|L$ol(XjFO_EAm@Z*#}??d8Jb=CFcr&M_Oh0`eZwBfHT${eXQQp5B-g z&JnBj3S$4D5I1)Feiz5#z8&yG)9d_p8MZqQNXf*&0Qv+h{tUz|TgA@KUj9u84-|_D zmDx=P;z{cL&aD^^kTiS~3kh8M+a=D*p0Hn7CU2Sz5hD1KHIclwA>y&)HHOr{RWAS$ zQ_i$z$K4MXG8TX#x$W!f$f+ScjXZS%I(O-1PB&UtW43~WX?d!N1B9quP+p}aKL7$n zsA4eadob2e2FY9m|KbEC*sCT@m2z8dE>!X)Urw%zE{)x3h<+9~Yl-#A&O` z;KCERgVpIZGDLJ)r)LD7T;wof<~J(wWafrdmQQLb^RJlZiL_GsuAJis58hJ39pUlm z(_Lk7!TEFgajR!xMK2CIfdxV|HC+9wKa@@*$ohsqWm+vM{G?c=5XfLpz5{A_AX!O^Agg}#lQz^eLKCN$9Qs$OwUP#-@ z$II2yxnt+45cIPCGk04WTr5Z1>_Xq@Rc=hwucz6#vHa+L>fw5)GDyfZj(8UvwR!Y{ zX`r((@kvmuW^gSeOW51}^F1y>TZ$Br$EvbK5wmhp}q{?jUgkyx6 z!2CTl`=JQqT$?_{y8Gx! z^9Kd2xiM_#)h4a-6doHG?ipRp<8g>JH8n+yPIOy*uqcImWF?RIvq}G*eR>?@_M6tn zTe~&-#^(|-(rh#9i$40}jq9Q?c!cI6qEF=F--nOgxbXJvfl#G>Yw7slwQrjrSy%9) z)=FZX`!Fm_Cm+p24tPbugZtt!zF8xP=!>6XR4eSn_Dn}F)>UNo)JCg@OY63ute9R& zHq>uO=KO;rirACQ=}`s5_4Gt3MBgc4bz|GwUkVzI|ns(GdvDfaPC6e_Ffa zvXA3x(eQ3N^Q{oQ@bFAasA`pRtVbbk@`#Ydl%rv{_>itz_qQcc8~^%2IdqBkQch}F*+-~~5@uxvSS#4c0+axsc?l(AxhIZ1)%hyn! zK0>p$mv7u~X?@)4TU(nLwk^@_Nbm8L2yF<^g- zyJVofJ>|5{-@JrvU5zEwYWsrUf3fT!h@){rjcBIV0)v8z?e?zK&_ymZMDgCYi!DnyWXgEnmMs@&3uS^72Z2Ie*oSd8< zd!8IsUUU(B2~@E2~%gIW4_@&z=gBKd7jBnvKt{T_0WSO?4FAY(3F3gJG26Qj61p z<73}=lHmIzq*r+^>#B#I&l_uh%ts_%yM-Y%Pi(DpY!R@6yVI0J+IodufM)Z>;)#<5 zMZt*4c)-OO^7|ELUcN=D^mP5BUeJ|N<7*@BOZ>D3PAeuKPMfYV+tl{syo=AWI1bJd zA3;}=5AF8t@eH}Sx$hnz0HQn60<0BDY8o2EV4uny92pU*1)qIQc?Y5&INP0ade0A6 z)Wd{W?voe&J+DZAk+gB1BxX@tdW#`}OuXdD!N@S=BW!wiw?=VhO!R&3&75Q2UIay* zcy$F)()9OTw=LpzMeo%S70P?{%JPY(Q>*4)!FA7-Az@o{ab%HY^*kf~_GG%-)29M= zw6wNS>>^6P^ZuMUcE2HSuonxRUBL7BinzzBxK)IwBaZAK-&_lAbF}I_qnKDMf=SV< zxFc_618Bd_swqY=4W&CQGo!scr+IRjnzAp#_%bCwRs&TY*)nwRHJ z+7Pd^du&X4u%_4(j<7?s4ygwgUTe-JV(qLZ2u9*#Z*LBrqM3uj!T~1TE&hUL$XD^G zE(F41x3;#-1*hjgeG!axKaw&`4|&bEr}VX?$$PMl=fM?za?TPtIxcB9MKmC4*_;2w z>UQ~?V6}`_r&Elmuy=o8*jz_~)|7d2%9a%lo$uc(Ae{U`NC-`TWze_$Fh(dVI})oR zOcy3JNZ63%TgUsPrPW>nrRc%(NPH1dO=MhcvDt0O^!>0 zcb4W1-Qwb`g6o$5`Q8ZK)X9; z|Dj&`0~gFgjY05K&v**50I)1_1lFH3p9!($o-P9=^Uv#NKff|~hJvFlX%7Yld`WC+ zPrJD(?K(AZATzVAUiv*833h2}8mC)2JYnQ{Tn%He)|iStLC@3e1!atj`;j*rayJ1! zuo`&Pw@P1<=DJ*F5YG|w*j4R{u=t+0xi-JLeJ|riuSrX!ZEHIYb(jYKQFyeI;B_Wi z3=fIuLylEc;3kIV>4L$C@{1Qc2I|MpW@d?N4cEPM;>}AoZnwNwYud3idoVLg{l}eC zM3xzcQrA>@Q2V0>-`MKs`$kdIi;9c=SRETaDYd&&a^qFMaa*meUAmJ3K9fa-X9!=HAws#IS`LsK&Zx_$0 zdc!wLnYC-QDUIiT$GN5yD+*%12k-4A{9Df5ySJs?e)^DVGK=oYg3U$>uF`oGk+!Qd8xj#^fS}(>J6)ZZ{`)8#L2@$4hNYHssZGw0TO! z>{yU@#?9sIft6MMYf*L0c)FN+4m;|S2f&FoAN5e@TBK4HQ|V z92-0P2?X5Z$9M1IeoqPMDGNu`J)1s9`>i%5!%P*hM#D-Q4^_NQ@n&@gN`|F`J92-3 zzyL3_Eg<4D!w_`0dispb6xW}+;(`MT?6s^D9cig3m$doczR{C5u_eK*S%~r&I1@&+ z4wJbQ6%*CM>-jXo2)UxdM&)+bIb(8~xiUIH5!AvN=_H6456~%g>~NuJ+P?D?t5Q9- z5hfdxgq|SUR@->I+=KBfnorKE8#I1LIFYJPAD; zc{Tq1AzuA#>D8t2ZA?rb14x9hjX=CfPws;_P`USuu2O@`Nb<&?4l6^Cu0knr=zRJg zDfCy0jkIQXqMdALs&kAe@j~IPir1mIEGfBHRCJT|i3gjoW)2+RSczLUNuM9mx9Tfz zI!d|<11v`2Tqv`?7DH?dD&9IQ6zJ>d$PlLpjdM+-`v*Amp8ZMIMKu? zy8HMLsR)^~uXtfaNzD)Cuc zWz)Jf)8Rw|jOzRM)Bruh>z^C6?%s9DSttLhVi@b1{-phrQM=>)C=gybhD||#bhm1^ z(Ejz2@y;nG*i~cYJw9FT8x*wZdB1gVZT>EsS{8gO`jE9*O1}CEcXJ!_@wMZ4cwj`} zc_Hjfj3R6?X1?=Qw_h3U`uPB^CtvKW;I`|ZR%A6Z;D}Q3@%peKN>{24k3X_@2bcQ& z^w(AZo$U*S2}By-I5rfu%jd9UiY={~9S$CPTk2tEn|%n|k?l?iJgaU6=e%(!r)?$K%IE zA0osS+JZF2eqWZ`(n>gAx?0QN={l--Y~Dx#)>5e%G{6za^75ABlVVm2cG*Z@;x%k~ zrk=s~18ZmX%)2#W^@Vn7rc>A9hX;PqJ^>-Ygad1Ta{;oSCAbmz(>1xZZarR#&mkLGtx+-|=04K5fAV+1ZDVzpJRMq^`f0Z9ZI(iq-J!5A(L=w!SZnyF5#y z-Ey=AF0~Z!O;1g?{LY(ABR*34%{80kl)-`+%u;RL+j>i{fA=eEYeT|7E12WY8X9=g z=aaSbX&{DTYHMRXVQEk$5;vcp%*V$&Q-r|o^I6;;jMGQSD3W!5yz|C$((0{Fv${fa zh)pxhYP=7k%10MG)pnh_vmbk>3n5}gkd-~LYIg|1iv5dr{ z?5F>!-qMpZhvC5GTJEh`o8Vo0^?)y%lbXa?vZIR88-s*wOjd1o(6ZSgLG`JxJT3e# zy;9~W44TZ}ynD9^PN0|E=?y0)?p(Mt5Qks*y1SSL>fNIE=l8uluKpM@2>{9)CH)dk zhYO*!W`j!qAY=I|O7IYv(B-#&yn`K&(sr}yE;x2xzybfP6z3A9Z%6c)edX6-sYU29 zVcHIV+wed^+Pq}LDCG=GR#MVL+_N1uvMyM2agmbpfSYl<_VYMA5!p2~4k%|fcwoWA(GtfwC;&&1cn|7;VIjc#M+uZ+wCj+xT}}<#UZJ~Slla~ zddqTHdZ?__ulTI?bc(h#B}EmtWpSsgR`*(XB53)cN=#o}%q=j0VOJ}x?toi%VcE$e#&EY$ z+m)NseVPLIJM_^Rb&ZOCCUJ}+beGS4BKj^3)Cy|IM@KRMj>vR-DcL&#amlzW_^__U zMlqR2eTU+1x3U|uFTc9G{W{y0rlnaa+#kOE2jteu{=aYrhV9@kW%~P?5gi?e4jxqd zm1XqnJM?xLSy#)Qc>G`b`sQcaEK#Py@b)$;7QW~O*CA_sP8{~LwM<#fWuiNGJG`ig z%)f8N8f~>w&3z?+?w9*(>Sd8naz=94cbVr}2(>*-&tI zB3UPLi=d$3A?YhujsX;iqwy}=Fctu>zUxFIg%!Tz(6s)#K1S}}Gp?zx9zh{OZlT13 zA_xNLs;k)sYV^u^lK4-a?DCb}u;uIH;_I;nt}%wKB2_`6%;zIz+H8yW?9Q)^noLbK zKQi$amf5Xf=cc41 z6}m0%i;^J)!4#ZK_ztv0L&y~%6j|CYp#=><>D4HFZF;D+&^;W&(D%#~t3m zTSV)S2^i8~yt;GZHmrJ>C@wjUtX-q4q^c?8q`0xT2rvKxB*}5Lr=faPMKiHAp2+?FktN#t00T^KMwWjlaI7>m1Y^WMmUyl(H$6#Y1!maw1UEHO30Y8Mwvhv^5sp?~D#;}kMa+%!;ySYmk zMFlKJ_CBF@0P?k7IMEq|rnMNuesFMwo0sBt1}oAe6{^#{rHa67r>C?2p{xD=0OI!j zId*R(uhfB00RY*X^|4%}U;Y~0ZkD~Gv$o!P;9$=mK0d{lWwIlNQ!GdKqxHsY7_zuD zJPXAHx5W^W$Uk+J`nexu)70sd(4^UM`r8fSMY3dQJ#LX2l&=7T5y zodiGDr~G%SWAG)#KoG6ANL5m@nb@f8FnyG6!F+$JhfCqp&9E}CtMNXT z0>@txN4Fs004i^gkRbT{6>Mw&*kV4d55Z}gWO+;-B;mb>j8V{(93uf#*LRqX}Lb08e?b(6#EBq#E2fyVfnGq zF%m+F{-LEbg`9X`o~}RiIUwHIY<%E|d_)Va6a8OL4?c-uS)gmbJGE%**ltu}TzZeu z%06_N*U?uEfM^iIEYvqb@$q_BqiXS-GA5~1phr;76xevNcpmOtaHlp!1x4#!m041v zWHxI9j&n0~7Y~0oYe;EAj~D@WBMZF3r_Y4WK;lC3hDVPI{P2AuD^}`TFBTu(xN+oW z1=G67u=ShyU!TO|latGMlM{3~`s`Lw#>~a%hj=&2R&9r}=n(PGgoWj;j`K{5LCsOg z|LXUZ^fzi4@a?a8y?3Zdtg4%gVu{=2J->e4vD}hR2x_om&-h>4 zy+7aUQ-0U?1Tt}*;iS0Z^)fNVvz}L;^>y!H$$a$ak$ZYQ`b!7^Qy88hUgR2V^C#Ap z4MUpva0qRti-vX&H=3O=>-V}{6OqrQa8U!^Q#BD(H{nVDA-q+)@R_Xtskg4VjwiSw*CsI)4{yy0#$I^#z$*&aSo6WB= zYoIJX>d~4)BPhsA4iC!oAEx;Dtoan_hE|cyl}_e_w65r~@8560>%v$4m&M<$BhJ-i z#K|K=8~(gG3!sNnY;!tV35%<-WOII?%C{lb-Ncq>MAh-!6IG0C{c9u^Y zPP_ZHFQ9Zj^;+{SC@4c}A^jy{^Rq<}3qqK9iAE|$4U+^yodOZE!KQbR!py#u)Xms` zT<+=m2OhomH*y?H%#x`7XmG<9ol*s6yvE0W20aN8R-%y5P5g!7I}F-@hI)Ry?Z6gM zMaOQ{9LLRIEOf@Cd={JD_yOPCYuGhKOT$YhxR_f1&t*$_xyJ?q@XH*uJFJwtRZXPPR34TA5S@XMpU4VpprqNa}v?pEG^+(lu#P_uv?o4}!Ec1S0^8smvU#ts@iygxm&sCDz>dMTz z3b@MsdA0!A5?eLreW%r!aQEd=`Cz;GpFnC6L=I7!?2+5I3lR?zGmNY|4Ve%{?wbYX zd`2q|cN{v_knNBZ3x;vgkJun#85wDRp(OD`QYzb6>w$6y1^XBI8dhIlpFu0m(Ny}#IuWf&H@7LB2RfCuCvyW78jLHSPm&{z#P&E;X5I6=y99>u2&Z*LlrSt>G!t~oi3+ODT}%a zeF0)qpl@OnY4DzJGYdzHh(aAE>30vA18!gwzPq-YBh&pKpS;X-31mu7`@#Q$w7-7G zwiE8^8QB|i+uHoA#Mhs3sw#GLa(g^~e&F1NJ^gVx`w>re2#uM=FyCGQYo9h7d3iGy z7N*Ye9PauqP6Q=UBjMuVQF$@=7HN?f7~K0}ZSn_*@cYHYUQzGPY)F$o?|V2#!1Pu~ ztg-K5PC>_&Z6rDCYqUTIW0a)u;KE^B>_LF4UR|8{8~w?-P(~g_*aJH%#%X{$<|OOK zUV9^DjHIaO@JEGW^LP^U9bax19(P>SWrderJ+r3uf-y9*5q9%yxN6>CU0Dy=2lN-V zs7nvWy@>9A2OXUSbYCl0r^BuuQG=;b6bz1To>zap&G;Fh${%6Hr$IeD15|#dGDzI% zZB69$g~i!J7yytq0b;TsQg7-USnZKv4HazZi{M~MoKeDU7Iqyt{l}~3fMu?)r0hbA z1cdxWdHL2IJG#CkMp2%g9ZG_wQ}E`SEByVReJhUTWKaP}ZmX#0WCUGWAv@N~MU;nJpn&Ar zTj~cdOENV4dygL7SHCzjBfQvG`u)2WYy}J&6CNU>qa*Ji^Xb8#G>1XND8r5+a!@+pL}U9Usif^BF`7&9$Vd%mWk3CwU$MDwz55S z^Y`D6$$85hjQG%!`|H;gtIA)$0##FD`|U(gEi&m(K~gx3M#Gnv$XAg zOZ4aE7|^Vpt5dC0OE)KVPSgwgs8UN!Ms_w1XH)=z7M6`c8yc6O- zJ&4k0W8$@C^}OKn-~p*|macS~sb53VaG6LIZ0w)=m@pg(;n4UWnDSb167o}nErzKR zz)L#GGY&lCz3O+v)^yPgYSOMwE_?*2Svz|(&vm6fK;x^6KRRLqUhgaY|LnCZ6f}7 zN7M@*_9xtW`%l^2-o2S7uE~A(F3Y=uj;(B(`CP>hr262Q3UL704L!ZC!Bats@!5#< z;$2yEe3X{P=;bvIsBAyM?pTfHvnu@dr_Wv7DXLD`KRj8Oh*h0Urq{nQ+3PI>q>iiy6AjMZ-qpRV!U7b0tDmcorO&huuv|}g@W2%nZEA4 zwn8H;qI5YUff`$oR=^I?Q-(U9UzJt|^ZOwkFGagt6{uwSw{Kgq5WH(?abMLcX|8yI zuJNSz?R&`daoq;HG(yn(%xoPyyBayUF3jJm5!Kt5t=|=Ny^QwK0 zqV&3VAe}zHeyqY-Gu;)9XT~_`2{9`%E;L}eqE<g(;TzZ@>xx^?qr{tY)NPD4DL6QNoNr!^Biy$kUli;B9`1s4uMN7?6&FLaOshD!(R=ZORor}0{??ML3`nOrWA+pV&+c(LQ-PG68 zlBK=`vG$a0-B-wYtjWe&vr=CJd}l$CE-0%SCAYE|k^CFvLi3Gvnl#|aE#e+p z&u%U^`|b0LHL2K!_WGMASYZ{@jb!31xX4Mdzp~Irfcv^IpulnlY2UV!@UfKl^-*_w z!pr!auyDxe(>(;HW@G$!2QiTFw>W5OcJ;5?9?Z)S3KxhX&d3Kn)P|ee)qIDEfWZk;E9?I_M+({?y9$lX{d_cVtA7rTs6283%LgB~A#60}fSX+r*gVRGxEB{x;w zxG!vqybW4kBzp9asbt^<0W!Iq4JgwCeoSw*31@EZtdwCeT?Iib;5U7ljYWrU>}>nQ*FV-p*1k6k@6I2Z#d$&L9Rw*Y@YTeZ19rsqShZBceUru2aH zt%L2gUj3V~>5)_Sz)QfiZGEa|xTo@s$xXW6Z-dvH zt8h3F6`kitROtT$j&j2sl_Q8(5?Giyc0d2n$VgCpgT4g$Aar`$l{dgJbtFnL*4fL$ zLz1nUJ|ZF_fdr)>vub?$Gr5=(jrwUPv9RC1uVycaJ#g&yUJU(4Da3FQLJbmAXmVzD zI{X4Su-Trr=UpT&lxxMWxeb-=DYtn3`R7+L*-s8<&O88qd1s%8;oMReGA8P6$6i9Y(r51}xcDI$Eg~K7SkeBp#BpITKEr97(CH-R zpZ3bKHT@XOA7#MAU{6@q&~S2O^AG-ms@>c66E^oRXN4u>5+_nPMSxi1EHP|JrzcFs z^B4Lh(hX0EL*#`X>^g{Sq8s_}LFj9~z>9px@_zoy_2I5c37gpet!4R-&}B%fEX}CJ zbv(btBeKUH0OIm(Bx-N^+Z!)`w|J4SnWZsT6Cg(gkdjwNLhzZ^1c>%7ThOfXGs_%s@jVD9Jb56~P z(vAZ-6xSaHR$;194!`CMe~>=X$ow((JEHQL>-6c<>BolAsygylq<@q+xX_t8XrqE()zLHedT|3Mz}%%HV_>t#skQEg)TpTVY3P1JY?33 zHMN)Y7M%}-tuCoxH9HiC&VB$R)6+ZEI~Hdc(5jVH_!N9X5fglR;mLE0`~_FvX)AcT%heu?B?RGS7;IrIceV?Uxqde*@ohu5Gzc zPki!RU-;7zg>Wm+738>@`GgLNX}aCJ{dKNi|J>T%o^OViSRK+nb-(W(t^wpPB>1ip~`lV>S@G75>I#S7>6G%dAn?nG>~ zi;H@kN>6BP-meN`;xKV<|Ll!Wx(1z|=~TG^gb}WHK7M|}zK2gLtA4{zBXeHk#07B( zXvkol_FvR2M{HhiN-bxN+v^|X0Ke;uR3HT?@PYQD#ArNvuQ73rgI%%uwN8~Z37)18 zFtW03?`jUm1<1@)fC1!Ko9ts{WmWR}zqJ(~)6Ba}y`?*$BKbd1`~3FNXw*`r^MfCN}^vYS{~OppHfaeECa>XGX(CABg$o3s(jx^FXhRlP-9Pf2Oc4&rFy zb^~C3Cn_p!EE5bos)5p1Vxh+k8gFmdI?arGfY1@(FOnb>baQcOUdw(^ZjJywZ_GHR zTrXYI&YO}p&$c!xiIKmSwdhUHBK%p~pc3rlgDwdq(}IeS6cO4@E|8U)3V-2F#{xgbKE-G|E+D>0xcp zFSEdXZh@`vA{po%`lc~A6?Tpq0#e=L2er4+8Z{-X&~m*JfGDBoZ#@TbNT{Te+s?Jk z!8e5*q>|~J@i+OYGeJoy>FFYobw3)_uFQOdf(ciYy$8bpafDyL{{FvMiQAT=9{}EX z|^J2m@nOQbRb(FuF9qG8g*ha`9f~$kw$Z0ByLm&N7U(NtAauGe3Cn08IeK z^^Ra}Vc3dXsG@jN?s4t@B#S{;y;kXv+?`N0jC@Nw*Tlif`VvTj&`cl!t6Q#^GxU5x z*l-z9rRIxAxjE5gA+9>b#Ya4ft1Gls;GODdGwf2{_&?Qr6miV(>xsPasL__3b)9`Y za@I#6JRl7>t%V`WyD2m%Xb*<0VytuZYK!hYSfwDEFfv4Pa+6SVnD^oC*=W=<`^g=n zVXpi+%hO-1;WHs^ohx^c{Q+eFyyfC&zHuriX^dM&OKW6@3N0M?t0|M$Wc6T^^5p3Z zG!9vdh))}MoZSCW{pEjctCT}-*`$3Mmiwl9l+s4DdFnsB`XR(oR3vffQsx``wtqUZ z@E1@Q!=y?vPb}V9P2|!Cv$kIKb8s^uGy~|Kpv!x>i(QatTV=*!>DC?f;gY=hf$5<= ziH91$gz_RfCDj#fsKdB*FLrl#kL|wUD5Gs+VshQsSOY;0qHC$l^Hjd#mOU|y_ifh4 z{TIKoSVAu3)~mE#muf>e9@+ zyu7?DAD=I8&_{+jTUF9zJ5Qcp2c9Ao3=qxjNbq^%xSrpVW~$zZJbM2*K|OKpy!7wR zqTm9-GP*W@Ypk5|Ghb`0kEx;v3(OVB^)+9ZToAelAw-FR6eF0I1ck#Q@PVzy)*k|l z$AS~^s=dm33`nSxI7m3tc3E3kIMjanbnFb0H_U(;kH}~L9`-;}_xZ!GrtHw(_WZAP zbraAss_1FC`uh4VKn%g9Va6y_?5cJI&M9d~OcN|LN>dFce)KAr!7o=tqUSV4_j-Q& zceDZqO=IOBF0C=Y2nmtCP^J!lRE3*aBEQ8$eJupr0%bW3XW~=NASf45EFV%z*nxj zyG58$$^mF&(1^U?dDh(AycmA5Eu1-f_w9|kqW#2h+XyvR!_E zceF(bC^XDs=nzvEuFh|bc4yNTbwZl1`|)Z(EbD&J2j#cm8NNkUgr3;|lX}ReiB6Oni>6-kG z?os;}?znQmtAmbhavklvGgP@N}HtpF5kKB!g^)Z@B=Fx8KN*qw0dqU|) z$9H=_&S&a9xqni5UqhP5KCVeVNcGM7{v*bBLwiA{r7aKlP!YDv5j!U)l5Nw;Zhn4s zu-sedYwz^ZxDaOWTmB=@_>?pE!TI9~q#b&aFK0`s6U#m5VwH2OgrE}c90)Cl25ABf zD+%INg}2(-$|R`Iv0ruV^>1fR{zouEjW}uHi8belBS($E-mIu} z?8jnE3`enE4DNL|ZaxnjF3W81g-$N(DJ7i7DAr+q{v`=gn(9gdp0NxGlkHOxZ>4@W zJ;J%o#CX)eF^lgzp?m%C;VJj`&rve@Mn;DE2r)f~%NDmY6$$9hhR!C3X2so!i^0nkcPl!QN|96YrrslEk3N?hEW zS_e^uY(YLZe&z3NOGOD?56irQCA2!PHpZ(x8|Py>Q>+N=-&ViLiWFuy^9|$g0*zzm z9MM%|U6%~a4_aMOGhd$H2PveMzW!@|7M0 zn2K4trG!1KE%w9!RS?h-TBHKG8G)V=B8T0>1H-4koZRs=*Z(}u|Caa0@j+@*N{9|U zFNla&9wmWUBSlNEJO*4$aK9**Ntl`eVom5u|4TFSH%@PpIaUw^@mv1=phiS~zGR8hehkCub^@WP;JL1DaLYSwmcKLH^1_04df?FGa zmdWaH*_&cgQs*Ks%cs3PiaL$NXMd8yz#zvVu_sd7%ED0iY#~Qu+(h(^3NA>PhQ8_O zv_;<#b9c}N+iznIgY-7ILR5&$$au@eHe4aYl%PQ_x#huixPC^fD=IFNLGbxaJw_p$ zgz2*DqAI`U=ZKnTg+K#qD;m-SFepRz?+S4pLe8sP$c&WJ4e5b5gv*2`6Z`Q;rxix= z!Yu~P{*j#k6nOM_Q?yEIW1Pll?eano3=F*s3$qC54z3yfDz3lF(C5Z=)3=Q1dCaaM znhs)(a7@nyowj_2`GTj|vh8^<5!1N?e_l7EnW{?$Wbp4AFL(ULDU`U2vzG9AQh{=} z_x=4ZgoX_g9lq1~{^OR*-y=1UQs#x&JNS?ZVBCXPgur?l)FlX?#gWnANl&C_bk~@7 zy}w_Ljpe$Q`wj-gp3n`9wean{17FjFL^KB{Y8#n#5WQ2ON1h`?d}JS|_xY!Iz5|Oh zugJXu+!7P#xYH1OM9eo*oLE~M{@_du9`=T=?d5pB{Lc}#@BFpHDFbesCRiZ-EbXr; z_|BM`oXpH;Q_!Bw$iMo@KF_o#{A%*-sC(T?uG0!tcBnJRdN0PMwPA7JI6_Nubp?9t zjV>|r{$#z){nxwzhU3XZT^E%gS&f|uDF3ci{i0bWjtm6)DC%utYX=Cm?N(YctZR3f zLmERuh?ghMN3u`xYC?G@QG>%!oZwO*qYt~VW$DZ?HMUj9HX0f$Vxn^%5m_EsJP*+j zI*UN*VRyM{{aQx=1DesR(bBFXV&N4Z?8eLx?c55B*G3a0GUx%Y5tr#5GGuO>aKfcJAU$ROc_zMxa`0r z>@F}g68KaXX-scnrZgyP6Mm`mGW=3}E{I4_19qE)3-|>%@Nc4`qNSw3{YMpY{r>BQ zhwr-NZ`e-UYDBr*i?IlU`=HcR;S}Je7>lm)Aw-X13MV7QeEe)|PB5RCR)Rx$UD7o| zzy`N)oe=L4o3FDNp)|+T0dOp82Kxu-mV5P=Y*v>)uKXx&0*6>JGyE7tN%7aO_b{OX z*s*JQLB9GWFO3U;7rAu9^-z;u2;l0=vgQo-WiO~>P($^WH=Jaowk<#3o%BY%`AJ#P2 z7KYcRrlxaK-Ut5pA3_IQlHCJybihMc*ew#RRjcNmv;0~W-Opt~X9k|TDa9(P zBa-&4g~cDSiZw8s=zN%dtc0dabOM8ROF z@we@Y>e5^b{FtKC0v#V>AbDQ^d*I;M0?WWtp$=S6=I13?92tc2LrwRPq(fJIhZ;0V zAV=?y7ihBnOiB9LxU9w!uExYUFrT=Kkui9q0~Om#9)teg!NCOxnC6GvjGG*H;)HQA zBF)WCrlqCD_jh$&{`1|H!@l<58dzjyO>1`6#%^a8EX92Fi#x-8GxSIpB&-kL={G#( zx8CuBt51M(gTU6USN5JtaIbQ2&D=ic|BZ&pc`$#bV?5;keR{-5U=)m$lpJ&3*!U#I zrv5tigPH`hKMx(Ukx}-@FHtY+1*}E}%1q(;u|q}0IU&v%{zhhI-I_zc^A{@@Q9YJ*o5e!yBkP<`VGZyo{s!AfZY4|8O_qXXuNwg5H zr;>dlORrVaO@70NPwPn?g77Y_w(OPZ?_D3^V};@P&6{^`&^|^B`Qg2LaewjiQt$EF-U0V*0A?J;PWBn$ESckL=IkA68}Qxmuzxgpf>Q+Ta^h4r+B z&1M+a-7tgN=qFL)MKRAeax zbUUV|r}KEZibr*q?tTeBEDu)^ogLIBpWh9}dUL(|{RGWLCVuP}Ud}TLWLona4^w4U zppjXHoO3zK)H{JSs%e;DtP(C>yts`%+i&oTztH8@0{A*jRA^vMhnRF5y+dia}3u=EFkd(L!WOZnlZSEjp4*i zEn_qos)1(qx^AYx)Cl=?{!m7oz zCLAt3s$wzxQsc$!pS?Hkd-^|DS;>?z7gmvQOU6cqIi{BMqmMB0*4f`*Qyswm;&{(G zxK4XVY9rQQ>$SPD@nf{pJ9qB<6#p_*Ea<}rc_O#@f@dq-6uR9xPn!2vi{&rs(?d%q zBe?0n@d+A;UHgA@@gWIAKEqg~yGL6k+k)MG*5RV^*S&rmD;}mj{eJqGoM(XRf^f_U zM7JC*DZ3C*!hwLxgL?#X(G*MIP=vXHS#IvPPj7uWVe$i`peEe4IiR=1F)e`Lz*F=m zE!JUr8Pg(MSFk6x37@fkUtG*1`)(kvNbBZsUtg3Y&K0BzNI8E^t=;YjS2&K_-`m$y zQF)I~PEBpLJRSTQc|Tj=y!8dSt52`IRT#wf@dov)hGaM^^fEEKz8X*Lu^&8W?K1@j z)iaYnpY?ES7H`1{%?6hYYyN=TUy$R3=0##>l4GcW`G_Hvm6eypSnErO^SEw(-jSQD zY7QkL=0%#5x}d7##9Sz&#puvnA!Tcm#&C6Sg*zswpMi5sGHOv(Ol+5umfq^aO0}Qu zCeyidqCW8mhdH906!Pg4K~({XT>en`+4q#~OFzH&en(@Q-yNd7FMLNXrni_%i2L#A za0@l+NPav__bm)tldZ>3LjQY3SFJ&xorbghk3xLOk0}N+7at$)?b}&bC%+QL9WqsI z0(uZ^#>XP05Ji@R#8kT^G#S=MRsK zIl&{ZTS*2s{u^A+VGy7vH#hgK{)xZ?H|Y8c(m*}MeP=lX>+AQKX&0;f7!Ri(|GgQh z2^0B{!bjUfVVY%FT{tso=SjzXf$$qtIBXsfaY8ci1Z^-!Fg=gHfZ5gE{<}}v&+c4U zuvK__Lncam_Eprum(QUwA@T7k^n*#K^4QJf{P@8ZO{9`l+l)FTCu$bljUBEc)yFnH z>M36n0ah+i3d4l_3BH4UTWM(Ydu(-Ik3C&Fi~~{Od5(Qo`&%?ZI}q4N#Ib|Oj#P|Y zNseey+&Ya~?Ueoafiq_u4u$sr8!o>Nq8P7V$p{!z~K^!tn* zmiBR4%BbtH3jK(9oP598@{zmy`p)GA?)rpLH&r7kMZc|i8Z!F&W-;?vq`dXF! z`OHwH5o7$9C~nj1h13n^gL0Je(OVrO^q6k^(9)!!pa{tvdpNV!TalF0K_z6$@Jko+ zsQUoaoUFY)UutY}b!*6_gXSMY`O!1n;u`9-c&EtK(bOUiiJ~uWed*rC-^Zc|t`q^TJ{QMg+$8^DaFWGVrQzG|G*^NhzHvF-{7-ZbjTVEcS{ph6X z?dyB~Hb;z_6L$|e0+4RBQW0Zl^Cr)p-}tJee2JOlS`@~{_5pEB86T=@YA(Ngsn&bQ zSKLuFBRPVWas%Z4%5t)@VdOi(j|*{fHhtFm^ioAtRj04N|IO6YR6TZQ%=-1~`xh3n z{Pfc-Ul(b~;w`GYz_&Tq^_W9lwYm})B0Y+^wpU`*_5fc^t;L4dc8M2$3Ona2j={MF zsNAb&K>%^!a}d0{skOE9<-{gEA|WF%Iy(Agkro@qPU_H3B@WHl^$o&Wd1`vvkcGSu!qqHJQ;QCjMoXCHZp zjZJHIgi316*5+MNdGtmfR?d?e_M>UMHuy)f(x}~m(gn2qI@-B}^?z=ucKWGsTI;RI5UO>EO5Z# z^3fTOAIU0!z3Z+IKaOG{aUyJNDo zwbeM_<;#tvi#Vnkkm$`P8ZJ9>g>5Ij)(xBl*o7+3i?n`lva!t{WM?0C%gb9)!$D<; zgXt6}XQDLzKT*@u;i#tB;JQyOwjpG8a&q#INgjHs-ZpKN^ETM8^hgob$L&{+gKao4 zAfN$k={2l`G+%KYX3q;#Ojx*f@LTn?Jl(ckO-)S#qsm+7qr$@e0-It9)6M1P*4A9v z#HKkM4G$sJVhRZfp{Cs63g&h1^yFk9`EsD2->f@6-4guvFD9zz%)S&3|E{mAOGCD7 ztgG92K3w+dx&%7P4Hxq?LY=JtoZ7NMWZ&6y=g!@gi;*Np@$JmlT;Pxp*JKC{cF)PZ z$g~2BcCT8J5uUHzZPw-7wv$@Vo*DOyTzv?JsB@qx5VLAK015Vu?OOGG39I{t<+lv+NG&|O&yUbjM!YTDeg#vcdKUeI8 zKhYJ{J`s;PJmbIg^l3C^!>({lJfsYe;AXuKpwXM?t(_tOXF^Bi$m>2Ab)htti9V= zqyh~QNpcFzRUuL_laRn;hU)8%zrT{Cw6rt@@g^h0qbmQvo3zDAc3<}Sp}3~u8WP3k z%{5pjuwi6xUjHbCm~UF1Q+5|(A~RtOYq0!&~Sj(TZKA=Re+O| zv!k(bRtbOJiv%ZOd;29OBznn_9Hpf{@?vr)iv%ZOr{sJ`)A7G>gV*F~!;y8WJy|h! z3%ixWV*3QNR~)-@Lgp`fs~$R7ZqZk1d++{e(Z`QZKL*>IquNA*#JxllnQ1$Lhg(-J z)dX5@qHO&TrxN+;rkA|3@`th=c=F$|GHmhZ+_P&r zE|lHWt9_rL>42(Y$bc*B>qvf;0{qn{1i(E zacZuebY9+mYqo-QohO~8&}wGI0fuCo*|y>os$CT8-Dw;tiHgr`?CSXdx(8=t;>uIF z90scCYD(Sf6k=z|@7!VVY+9Nz5NS$q!if7#Io-~}<0ORCB{?ie!Wv;Cx1Lw;WZx9u zX+^klZtL#mz;u)d(1RO6dvg3mmD^Viv3(dQ^EA+H4JBjygD_9aw@#kFf#i?Jxz-Mg zfOV6HyXL%L3dJ+$h0@K5(`seU?F8lODs=B5c@$Uk7zS8wrz*d6i#E_;vobtF&Bz#U ze>OBE@HfoC?_gt%vSTA^-~${SeiuC5QqB!G7?dCfPBzw^tAcUQVRP7k~U3&5q`9YZVS3(b#i0%l7hv^x$A-JUuZWAzofrB!|*659UlVplr?>B5pI5RbDIj3i zWaBTWZbGQPXpNpY5l|XBU$vONmAaMDj##aj6!B2 zbXu$M;oMOlfB#}&@-GDJd5}@Lk)7S(q#@sV9~O;0d`W}_&kowm#|^R846Fk{ScGc= zIr`d}^z?S`XLe3K|D0jt!?(CXN$?eA*Q=$8?|t_2r3Cu)Op8MsT&4zU@!y9k|@U*YRSG@b3}#-J_hOCE$Db)N{HVyO}`P%8<$G(r~)u*s~L1 z91wwcS{D2eX6){EOEIkt6%rZ!mJqclWIaYdGP0*mUq(xB;F6P5!bFI#Z-ZmG*gtjA zJsSli%KeSgHJ-M1V&&Y|MNiE#J@7e72#TFNCMO1UtG79>t;qbjRReSU zi~vxx=I3)o4GnifQn<;ta*y>K4VCA>cjfzA8Qb6E5F9V)xIf&~BVG#3ejhx95BwD- zfX0HQwjVGm8`v1@#eC?t&aSht)Cf#LP(4ryeO*4Q_g2XEG zplh_v4_$oEXxmso8WC&6c5AGa2fCFY46tjTj40AN8!o$zfnnv-NHJv9soLckF9Kqq zzkLN>wzt2Z3rh}ZN`){G{7_SKTz6qttzE8?j2H(;!p#%qFcafMwmpb)7=+(1(#kZU zbIE9@KRfWz5ghK;qiR-Rwo|jn+M>jV7ms=-_0rGh#f!5IZ=E?*)Xup7FkJ-Rc<3M>j_$B|Y(Fx9;kc4G0(E?-^g)j)HxI)=)hsS!Jt| z9sCW*-~&P>`|j%GNHbI5bHoMGV&uvG@qqXo_lfCO6Z6rbPA62hX4%cC#%bi`RA-|h z|FDrs@@VRs?1{%tGK8C4w&j-K(|J)^YQB~EjVJUx1D;TMPO_R#Sft5sVV{C2 zyabfh)EH{FY;c_@Zj7#JY)q)1bk{l5To!$hnb}jje3p1i_wEhfd$@KtS}!(QBN4~n z=m6RLYOpYgf5QZM* zwBqj}QPp0x-=TGtau45wuHu}!$ctwKRuJUD5`225(w-(U(&i*2T0btqT|MVLYv>=c z%E~S;)y#VYGrc9E9BBy_#JckN^aPS zxL`UIBR1=ejoXo^ia6m5<`dUXG`!6_tJQe{S(Osd&vNGVe$2H!S4PoZ8ff|Hn7tRf>MTiof!>c|k;(v~yV13NWfkG^nV5Ng{k z54KACf8fBjfn%-550LpXMH#9zKSV9|QPWuD+&MBRVR*6{qic_8*bO!xDYrx96TWRR zo?0c(SbdBLVnarw4qw?x)!}jFg)%Sq$ATLE23|#{bLrb?)>?LSr)+AmNbUI$m9UXL z`?tq%?i0jEg%sih{Bv`QD{2VTpsyu%3#Fu3crft#Bal=sRac#S9WR$bBO8IeXJ&5x zVWh`ofOh^lqc+-r+C8=?-=mNr=g*G z=#5c>y^L%GXo*U?_5>{@vMI0G*xZ}E5_#chAdf-#2D3``eouy`YI5=m>@#*w&NhPu zp}10%zqPas19dry0ULIlCA-nc?A+iQZgTBf*BuM>lwAsm-*pN2^yfy2ASc)~8Lg5> zGNxu`Cv`h7T)ap-URqj;1hC8LlGxs`9CelU_bSo~3kxFwEUDLLM=kYf@H3|L9!xZE z-W~DC?eno)pS3Kqr@7`zFd=FVd)sq>O^6o=d?`1rC&EFS7lhB z8o!~iD4Ywh4$-oJiJF`=d!w3mA)r=S`OUbXfhR~d^aj1XH~fdjn^Oxg9WQ}sET$UY$_H%6;XenWRiT#3L$&#b%hmaY9wC(DbhoSY`_M~^Z)$Hv;l z!)4zA9+ChaF$89)4@S=nyIKV&?g6aOxdPfv)z;S56m8cP$_>TCc6m+(MOwGvxW0tL zRWrV6*mr|#QC(TtYmDq3YHDme388W7W2?Nwyoujue?z4a*MC0C4@KdJ@mEM_lb-nc zZh{}o45HaK5P;_LR4BNdo2Bn=71N$FqX+*1k9CpPQVb8G^$alNQ8+tVgk;lh5N$Y{ zG2zbrX?UhgthxKGVti4y<cnlyEyEKa#2-v2T@j_UkC2|r)!amxDGMj z4zPB-#UIrnxBV#S4`Y^ZGN&DKbSDuhqJDPc}wC@&-GqKb3S zpSS-;qfXgQ9&2wO4H0MfXClkn1JwaOh>n^ZPJGDcEci@1xLvm{;_>{v1%5g^<=&C1dz)5{(~2jC zWdgokM4Jbznu(dw3i#Ll`RC2@ugQ){8HvJHRx~|j3)ggC??0_-;IZ--;CFme_wV0t z!^datMb8gEF=tKtc>z~eb%EvcCmB5;8);B;fgB=d?(<(Y>9S*Rx|MAzsgCGS$ zYxX+hJ(Nt1;n|%6Ai%-`D1e$kBRn(`Ye{&5iFUTOQl#5JL+b#3t&BxZ<~W|hJK@?0 zIQ$LXSL065q*FQo)51L&c+)M-%?nSYMMJFU%zUWOjGlKe^H-BINe@t0cW3VJ4FFN6Q<(pVJhC=U3&BF75h7dg`NaU zJwLCkVOJ4sJ9Sr*>$XH$dvcFjT%6(e_B(^YK854t4sVZuwIQ zbt***wSV4lw=L0MOg!I3L&IhC?btJ)aV;1`7T(c@E6k>HuhEO)vPi&dnsaPyn9;$T zU9E3dt_wf)ZrvG=lc|FhK+FnsrWV?j~-o`!QKFe@ConqbY)dltiiQw;rsUQzwZ6; zVfi*hb~%AfGV=5DGe*M~Q^;hOCnyE!HQ7#z(#wdI`4h1+A=ye5h#I0k{Mud=3FZVz zjE;D)HOo3c2e(O8geb!!FE6czw+r(NTi{3f7>&pBuqHR@dwW~xJ`q9Pg~?_hby5GR zbpAg|7Z?}+@6x4JP9o!z&x)4)kax-?0 z2k#3%bugiXVw7v#OX^eJ1l*Z&+&$Z(t~X7E_76|Ly5KRt6NsV@W$TiusqIq+-tI?U zjr4QAS7O|_Zke=uV76#Ka&hIO+6xEc2Rq7((GreYXyo}({dnqdaa+oqIQjb>{^Xi|{#*C>IfNMn zNOo4YO&!saNL~t+e^=@jVcJv1Pih00O))Y$+M{sz%3c>d3@KEgqisDfl;WbxM7sFc zCgpVUZvfF9wZZ& zXBts%+bu5ahkeD@zrpjH!E;=XNeq8{p?obg{{z^QB8X-qF!Q~~e1!bDH5?PURpT2o z_rwChx^kT=hPa&P1t^}m`AF>#s-7H3kb|hn! zUOxX%J#uFqKkAW(@$mwhPFcQ?BOzJ7xU%xW_nSunKGZ~rQmdru%EWw?3bc9pLV4Qk z^{WGQN#QN243fXvf$mdLHa6S$t+pfDeXYz|Hh%kI_ocN=e3k@F??|grI~j%YOj9Sx zz;~I|2ZvTEAasCz5ds@0o>qGQt?IfwB$9n`;+6L8<#{qfmQ%3yu*|@9;}Yya1l@L+ z>>a7}RYp*gY=2&6raMOC@ZJ}cjmZC`P(`=F8Q^efF|28@x1zYLZ_|C;38GdP_Fa2v zQa!Ww?&CW*WA|;&yu-R>3mLZ2i)EFZ%7TsNWMrd&ly7IH^>mk--@E5vWMF+Ab%TvY_6qDb-CM#u?(5x~3cT38o@hiA=b+35h!-My1438hzQ!ZF_ zf9O|LS;=(@WG3{jXX16Q85oqmzuzI4+o@jVZ{i$Lp=L9EoGr$3*b6gMLw9uco{*M* zO_@J#4r%ekd7liK{ePE7XMFxnt`FIz)Z`DpqO1xfTMqN9KW{;2Iu|fm4vzMIYKFhx zLV@p*@FOME-!LM*ThkC^MQ&w?K*x5P^oLOrLfZI!2uahcS1o+}P1k_W!TjXG*RO2Q zSfGHSWtHA@12$-g&^>P4I>2J8S3U27z8aH~V|Aa%-G(O8)Y36v6LtTWL`{a1CW2*8nU|mu+ll4gLyNAy>44RR3-pl} zX09Xm74?jZ^Qt);G=oP}CJzB=jWAFWvYXvgUCuPe$}WL4Xi>GPm3i$)6?|6`HGJSo zMth(VNK?Uw3)V z>{pC?Au{kWkM6WZM6wV;#Rh$sv9e+z(v5pR)ZVO%5RmYbEd7$&py_Bpi~(%m;@-0M z;p2tX$$mO+?ns}=$nF6*~@Kgh5c z?7rBNu1?Eq%ptV4>|7tG;%_-T3pBH+$W>_DZtFYP-vp6l=SYTWLc;fyKnoT9KGM#8 zuUk=8QAxd4ybpa`H&j?UjUC}4REqK6Y8qnw{{*R5#hF9BD+-~#&gmvi1TY7edoHcQ z(5fA~X=qZkitJ!Ss1Aj=+TquUCR7?W;j@laTlet!A*Gf;pzz!|W*jE4kmU~AgRm8Y z?eyBJ5s`Wgead#G&!u6D32ye;Lau&3DfR2+*eZBc?%m9qR=#y+FSimS^fJ;Gtgw$?7uAOeUa6i;} zRS5Mj!xHt*otGe%OTyPi%dAz7wq)EkGh^A`U9!^7g$po*8{o0rbh$@aqG`{v0wSvA zeREg&G%=EVWo5FesN6|9u_+cU-?INu{+#8YoQM8UeYi}kRWOG-kLmTZ0Xk^jrj(D% zgiz)ztt3&%(owz%?Vb5;DRpn2|LIRm>bJVf)645vySux4)MaK~5)#hOn@uuWWLrQr z3l?ZDm?Ml<<@u=0v+$O5<{DGLy1}K0#tYxll-pqqyk|2371ogPJ)eyO6 z|6M9@>s!_hL~Y&bn`Jdxxo&ALEX8u@1R`4JA5zI}8vSO8S>=WK`RUG#j`wUwjv(Td zS!gYn!376;TlUPxvr$|HEnB~sW}Eeaf(#{LOeotzb7j$!V071Q$R#}UF*RQFKH?3N zj)3)eNS>n(KE0gW4hhd-;c$@B9xPJ1l4Y3LU<2G*y}Hr?VEv)A{{tWSEhs{W>riGt zOFw0JxB-qWTT$M=#kX+^zs@hfTF0KgF^h1f zCxdDXqjOj>pK@*OX*ei#n^R=l?FHvDjJ03uJj>*?(D&E5bMCfFMx2Xt&ag{8;iD(fDDU^oNHcqy zyUb${#Pbd~b&OloF{P#5tP6=(lhS^q zXM!wMl;MhXHEc?}CK?BUB2?Ss=bW;**+gBg0jQ>6+3ZJh*-?(Mh>FUirH)YYUcdhF z%!x9nO(1ZY4)23SG=w%TFv!QQ9t5*)c5t?9ixVZNJ7izwT-E*sMY6q=glFD893)*h zNJ#(Dw?(Vx7(;J6F_sf78&eI(vUAvCaAiQJNQ2c3k)xQI+5Uo6yGK(4%!BoVMl?qQ zA9>4ICukPD?<~rfeDP^5ne`e2@2u9cjSxJWwS&%ca3bvJl;h&N-UcPj^5(3qd-oot z<4@-V9CV0h!`y7h(U16#WMq+G14KZdB6#s-#mYI?vJ|tvGY_^5>l@lvm||!Eb{Y8< zOXJqanR6HPu%BsY`rg*^63#2fv53TVR z(6vE9`m~zS{|15HJv0>;e>NeakKI&TaPOYlTi9z%jb=RjbF1Jbi2OX}a4+BZnk0r5 z&5bOz5QySm9QmSYcFQS#_K%ntF-&3}Phhz$cca(D;`=9`nPI9YK0c)%gF7b2otb{7 zJFQnK5Xw<_#D*{&`L$w`UpB-#EbT# zIijSSJPt`r&>7nocn;i-i(IFzM%EWXzT#P{o@?XvJ>`5-t(wgeu zMY6F?6GoeV{|l2>MT%5X=zclW0*!LSEh{fUhoeWJD4d#idl;_B}#QE;52DCBO`^>&2kM6c%w!dZ)l` zJ*El_dwikC`w|WSltmHtb7Tk=c!rCY%d~qx{YgVr{aiTO?v7QejRr7CEF$oxJaj%2 zJxd^Z5wI3Pd%Rm78Zii=exYsnArpnBOT9iMVuVL7095eP2`V~_h(7>31?pmAZtV%8 zU*Z3~1qJ}xtINsoZ$;SN-8V{!+aa#hYtKz4dC(sB1>D>=H`6p|;jnD#3_dGJNb`A3 z3rgZ_s~MOxRL(nL?twS!pCY!@E!ew${NHpT$lw4EX9%q4XPQFk1RW}w^VNO{iq9PS ziRnPlZrGZM+2s?4hKDiR&x&UG!j0Z>n9oB*YTu!!uCD2H*uE=9;cdB_TI2uc8gA^#$MbPDm;srHrw%Z^cP80?~22C}y6sH%nS5RvW3#)JVav(Bram8&X@{TtX|-r zrpq8>t0G9%lSX_90pa7%NxFRvR2Si&YG^pUE@MBNMnOP;+pAaSVE}r;*qDQGziG=} z2c^pW*491M)nhZoQ3?VF(FIK98+BlG1j3bLV7cw)jJKYZmWDPoyq>nDT6!G(&5xmPfXpC9eoYh<5C&@> z;-IGM!N3C3-%6em4A3AH+0KX8nsBy1GA_^{PO}spLDb zV0@}9ZrXXp;DK0NO4*h$V2pvh&cTq2mc^OFQ7*se{rkI^x!y*<$bg?B67I5zn&zhz zEhPnERJSPU>+k4PrE41*RecIKIc7b!;?F?!cj-@DgFog>Ht*D_iGJOF+*Szw16S2G zb+LF!RHN2d8hDcEVgMERP_Ekd2$}a&Kp8nvAoL5z3fcQ}*c-y~s^140IV>SB$;my#O!CcLNXzj1j7f|KTOFw(dNeF>C-4jy=p5WH;Jx?^d{YA*>b$_7ukQ_2;&t=36S7~KsATEC_<2M*+z(xoa z9QO$fJa1va$9OtdM^0v<;$Y_;Ba_yzNXtBkTBQfv2AZ>54R4vzdFS(QpBDx=&6ih?cRzkC+Cuk1ab2JGZ~oQJHm}Tsju~b)>yD}|%5lXmgI*#|LI^&- zTf~$N{|j8Ke{(sudhy7SdT^uHjf~d0cuE~KGf%Ckt&PMkJbWdE_2|(6)TX8bACIE4 z<`uB}#~NTb%jSeg1OR=NqJpc zelTDA`nB+~qI2kVRtw{%mu6ydF_NNEKDu95BT@JWJ+bNYRT2}+D()=m0lGOObjjjf zV`i&u#jGdeQr5%@41Esx*i#MvKhoYiF6Tb}AH4{fB}vjk6w;EErX7+KDvX=17^zhZU2K4;Pn|()IEpj=w zJEtxMTPbkEeqnU~LSnVK;=N}V@6y$TOE81aa60m`K{*}<0Nl4mr*I?u5V|mlv<@^G zZ!Jptcujg+Q>p=dwCwP$&#zBH_@M5c4g}So-=IpIxdI&fFquQl(OV9A9mn<+LLV@z zJ?EQqY|Kub%F$|wI}eDPc~?8Qv7(|P;L7M7u8nTk4Q^*yiar}8Ao7Rog%8{|iW0y+ z23EVPHMKi-m=R}OrPZaS@r)>UrIP04?j&enUgHD?vu|IAW(`yb$>QCI?{G~I=8~=} zQXeNHyMnjxg4Bv}ezpb?0Mbh>Ngrvs$)a}3(QN*Qi;G#}BdIPf?7J$AK%thvYS@N% z4sw@g9-aR=tUvz2PU!jbef!vq=R5Z^tJtsO0!rm!@Q~Z&_WYf*S6-y2f9FabJh^ex zG&D-3S0g2^$t&DA^8W5{fOOQ0>`=L+9lB2*F(8~7kHXI*q{=n&^MhRM6z뾈G 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 AF#rGn From b6ecc3a817f7000462b9440c6c8829051ca79345 Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 16 Aug 2023 11:37:54 +0100 Subject: [PATCH 059/105] Fix recoordination image boundary warning conditions --- tactool/recoordinate_dialog.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tactool/recoordinate_dialog.py b/tactool/recoordinate_dialog.py index 20fdaae..8c887de 100644 --- a/tactool/recoordinate_dialog.py +++ b/tactool/recoordinate_dialog.py @@ -227,7 +227,7 @@ def recoordinate_sem_points( point_dicts[idx][x_header] = new_x point_dicts[idx][y_header] = new_y # Check if the new point extends the image boundary - if new_x > self.image_size.height() or new_x < 0 or new_y > self.image_size.width() or new_y < 0: + if new_x > self.image_size.width() or new_x < 0 or new_y > self.image_size.height() or new_y < 0: extends_boundary = True self.logger.debug("Transformed point %s to %s", point, (new_x, new_y)) From 87497de37c212f19af95e2f0d7d57535cf40b310 Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 16 Aug 2023 11:38:17 +0100 Subject: [PATCH 060/105] Add warning if points extend image boundary when importing TACtool CSV --- tactool/window.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tactool/window.py b/tactool/window.py index d47add8..bde1569 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -385,10 +385,27 @@ def load_tactool_csv_data(self, filepath: str) -> None: analysis_points = parse_tactool_csv(filepath, self.default_settings) self.clear_analysis_points() self.reset_settings() + # Track if any of the points extend the image boundary + extends_boundary = False + image_size = self.graphics_view._image.pixmap().size() for analysis_point in analysis_points: self.add_analysis_point(**analysis_point, from_click=False) + ap_x = analysis_point["x"] + ap_y = analysis_point["y"] + if ap_x > image_size.width() or ap_x < 0 or ap_y > image_size.height() or ap_y < 0: + extends_boundary = True self.table_view.scrollToTop() + # Create a message informing the user that the points extend the image boundary + if extends_boundary: + message = "At least 1 of the imported analysis points goes beyond the current image boundary" + self.logger.warning(message) + self.show_message( + "Imported Points Warning", + message, + "warning", + ) + # A KeyError and UnicodeError usually occur with an incorrectly formatted CSV file except (KeyError, UnicodeError): # Show a message to the user informing them of which headers should be in the CSV file From e4577c29bf1237e0b60be605771b684b048aff0c Mon Sep 17 00:00:00 2001 From: leorud Date: Thu, 17 Aug 2023 15:25:01 +0100 Subject: [PATCH 061/105] Make graphics_scene remove point by attribute arguments optional --- tactool/graphics_scene.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tactool/graphics_scene.py b/tactool/graphics_scene.py index b75387f..d158f56 100644 --- a/tactool/graphics_scene.py +++ b/tactool/graphics_scene.py @@ -119,7 +119,12 @@ def add_analysis_point( return point_data - def remove_analysis_point(self, x: int, y: int, apid: int) -> Optional[int]: + def remove_analysis_point( + self, + x: Optional[int] = None, + y: Optional[int] = None, + apid: Optional[int] = None, + ) -> Optional[int]: """ Remove an Analysis Point from the Graphics Scene, using either it's coordinates or it's ID value. From 658d84202d3243cfc313f109cfdaae19d473c48f Mon Sep 17 00:00:00 2001 From: leorud Date: Thu, 17 Aug 2023 15:38:09 +0100 Subject: [PATCH 062/105] Update ap argument formatting and add colour setting function --- tactool/graphics_scene.py | 14 ++++---- tactool/window.py | 73 +++++++++++++++++++++------------------ 2 files changed, 47 insertions(+), 40 deletions(-) diff --git a/tactool/graphics_scene.py b/tactool/graphics_scene.py index d158f56..a0280c5 100644 --- a/tactool/graphics_scene.py +++ b/tactool/graphics_scene.py @@ -43,17 +43,17 @@ def __init__(self) -> None: def add_analysis_point( self, - apid: int, x: int, y: int, + apid: int, label: str, diameter: int, colour: str, scale: float, - notes: str = "", - sample_name: str = "", - mount_name: str = "", - material: str = "", + sample_name: str, + mount_name: str, + material: str, + notes: str, ) -> AnalysisPoint: """ Draw an Analysis Point onto the Graphics Scene and @@ -100,10 +100,10 @@ def add_analysis_point( # Place the new point data into an Analysis Point object point_data = AnalysisPoint( - id=apid, - label=label, x=x, y=y, + id=apid, + label=label, diameter=diameter, scale=scale, colour=colour, diff --git a/tactool/window.py b/tactool/window.py index bde1569..645fd24 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -214,7 +214,7 @@ def connect_signals_and_slots(self) -> None: self.clear_points_button.clicked.connect(self.clear_analysis_points) self.reset_ids_button.clicked.connect(lambda: self.reload_analysis_points(transform=reset_id)) self.reset_settings_button.clicked.connect(self.reset_settings) - self.colour_button.clicked.connect(self.set_point_colour) + self.colour_button.clicked.connect(self.get_point_colour) self.set_scale_button.clicked.connect(self.toggle_scaling_mode) # Connect Graphics View interactions to handlers @@ -501,15 +501,15 @@ def add_analysis_point( self, x: int, y: int, + apid: Optional[int] = None, label: Optional[str] = None, diameter: Optional[int] = None, scale: Optional[float] = None, colour: Optional[str] = None, - notes: str = "", - apid: Optional[int] = None, sample_name: str = "", mount_name: str = "", material: str = "", + notes: str = "", from_click: bool = True, ) -> None: """ @@ -535,17 +535,17 @@ def add_analysis_point( apid = self.table_model.next_point_id analysis_point = self.graphics_scene.add_analysis_point( - apid=apid, x=x, y=y, + apid=apid, label=label, diameter=diameter, scale=scale, colour=colour, - notes=notes, sample_name=sample_name, mount_name=mount_name, material=material, + notes=notes, ) if self.logger.level == logging.DEBUG: self.logger.debug("Created Analysis Point: %s", analysis_point) @@ -575,9 +575,9 @@ def reload_analysis_points( for analysis_point in current_analysis_points: analysis_point = transform(analysis_point) self.add_analysis_point( - apid=analysis_point.id, x=analysis_point.x, y=analysis_point.y, + apid=analysis_point.id, label=analysis_point.label, diameter=analysis_point.diameter, scale=analysis_point.scale, @@ -620,9 +620,9 @@ def remove_analysis_point(self, x: int = None, y: int = None, apid: int = None) self.table_view.model().layoutChanged.emit() - def set_point_colour(self) -> None: + def get_point_colour(self) -> None: """ - Function to update the selected colour in the user interface. + Get a new colour from the user through a QColorDialog. """ # Create a PyQt Colour Dialog to select a colour colour = QColorDialog.getColor() @@ -630,8 +630,16 @@ def set_point_colour(self) -> None: # Update the colour of the button and the value # colour is a QColor class hex_colour = colour.name() - self.point_colour = hex_colour - self.set_colour_button_style() + self.set_point_colour(hex_colour) + + + def set_point_colour(self, colour: str) -> None: + """ + Set the currently selected colour as the given colour. + Also updates the stylesheet for the GUI colour button to reflect the change. + """ + self.point_colour = colour + self.set_colour_button_style() def get_point_settings(self, analysis_point: AnalysisPoint, clicked_column_index: int) -> None: @@ -644,13 +652,13 @@ def get_point_settings(self, analysis_point: AnalysisPoint, clicked_column_index if clicked_column_index == self.table_model.headers.index("id"): # Update the Analysis Point settings to be the same as the Point settings of the Point selected in the table self.update_point_settings( - sample_name=analysis_point.sample_name, - mount_name=analysis_point.mount_name, - material=analysis_point.material, label=analysis_point.label, diameter=analysis_point.diameter, scale=analysis_point.scale, colour=analysis_point.colour, + sample_name=analysis_point.sample_name, + mount_name=analysis_point.mount_name, + material=analysis_point.material, ) @@ -659,25 +667,25 @@ def reset_settings(self) -> None: Reset input fields and general Analysis Point settings to default. """ self.update_point_settings( - sample_name=self.default_settings["metadata"], - mount_name=self.default_settings["metadata"], - material=self.default_settings["metadata"], label=self.default_settings["label"], diameter=self.default_settings["diameter"], scale=self.default_settings["scale"], colour=self.default_settings["colour"], + sample_name=self.default_settings["metadata"], + mount_name=self.default_settings["metadata"], + material=self.default_settings["metadata"], ) def update_point_settings( self, - sample_name: Optional[str] = None, - mount_name: Optional[str] = None, - material: Optional[str] = None, label: Optional[str] = None, diameter: Optional[int] = None, scale: Optional[str | float] = None, colour: Optional[str] = None, + sample_name: Optional[str] = None, + mount_name: Optional[str] = None, + material: Optional[str] = None, ) -> None: """ Update the Analysis Point settings to be the given settings. @@ -686,21 +694,12 @@ def update_point_settings( """ self.logger.debug( ( - "Updating Analysis Point settings: sample_name='%s', mount_name='%s', " - "material='%s', label='%s' diamter='%s', scale='%s', colour='%s'" + "Updating Analysis Point settings: label='%s' diamter='%s', scale='%s', colour='%s', " + "sample_name='%s', mount_name='%s', material='%s'" ), - sample_name, mount_name, material, label, diameter, scale, colour, + label, diameter, scale, colour, sample_name, mount_name, material ) - if sample_name is not None: - self.sample_name_input.setText(sample_name) - - if mount_name is not None: - self.mount_name_input.setText(mount_name) - - if material is not None: - self.material_input.setText(material) - if label is not None: self.label_input.setCurrentText(label) @@ -712,8 +711,16 @@ def update_point_settings( self.toggle_status_bar_messages() if colour is not None: - self.point_colour = colour - self.set_colour_button_style() + self.set_point_colour(colour) + + if sample_name is not None: + self.sample_name_input.setText(sample_name) + + if mount_name is not None: + self.mount_name_input.setText(mount_name) + + if material is not None: + self.material_input.setText(material) def toggle_main_input_widgets(self, enable: bool) -> None: From 4b613a317aa97cc6a04b2b4474e247c6afd43448 Mon Sep 17 00:00:00 2001 From: leorud Date: Thu, 17 Aug 2023 15:57:49 +0100 Subject: [PATCH 063/105] Move tablemodel point addition/deletion handling from GraphicsScene to Window --- tactool/graphics_scene.py | 67 ++++++------------------------------ tactool/window.py | 71 ++++++++++++++++++++++++++++++--------- 2 files changed, 65 insertions(+), 73 deletions(-) diff --git a/tactool/graphics_scene.py b/tactool/graphics_scene.py index a0280c5..58629a5 100644 --- a/tactool/graphics_scene.py +++ b/tactool/graphics_scene.py @@ -21,7 +21,7 @@ QGraphicsTextItem, ) -from tactool.table_model import AnalysisPoint, TableModel +from tactool.table_model import TableModel from tactool.utils import LoggerMixin @@ -50,14 +50,10 @@ def add_analysis_point( diameter: int, colour: str, scale: float, - sample_name: str, - mount_name: str, - material: str, - notes: str, - ) -> AnalysisPoint: + ) -> tuple[QGraphicsEllipseItem, QGraphicsEllipseItem, QGraphicsTextItem]: """ - Draw an Analysis Point onto the Graphics Scene and - add it's data to the Table Model. + Draw an Analysis Point onto the Graphics Scene. + Returns the newly created graphics items. """ self.logger.debug("Adding new Analysis Point") # Set the drawing colours to use the given colour @@ -98,59 +94,16 @@ def add_analysis_point( # Add the label to the Graphics Scene self.addItem(label_text_item) - # Place the new point data into an Analysis Point object - point_data = AnalysisPoint( - x=x, - y=y, - id=apid, - label=label, - diameter=diameter, - scale=scale, - colour=colour, - sample_name=sample_name, - mount_name=mount_name, - material=material, - notes=notes, - _outer_ellipse=outer_ellipse, - _inner_ellipse=inner_ellipse, - _label_text_item=label_text_item, - ) - self.table_model.add_point(point_data) - return point_data + return outer_ellipse, inner_ellipse, label_text_item - def remove_analysis_point( - self, - x: Optional[int] = None, - y: Optional[int] = None, - apid: Optional[int] = None, - ) -> Optional[int]: + def remove_graphics_items(self, items: list[QGraphicsEllipseItem | QGraphicsTextItem]) -> None: """ - Remove an Analysis Point from the Graphics Scene, - using either it's coordinates or it's ID value. + Remove a given list of QGraphicsItems from the GraphicsScene. """ - self.logger.debug("Removing existing Analysis Point") - analysis_point = None - # If a target ID is provided, get the Analysis Point using it's ID - if apid: - analysis_point = self.table_model.get_point_by_apid(apid) - - # Else when the user right clicks on the Graphics View to remove an Analysis Point - elif x and y: - # Get the ellipse and check it exists - ellipse = self.get_ellipse_at(x, y) - if ellipse: - # Get the corresponding Analysis Point object of the ellipse - analysis_point = self.table_model.get_point_by_ellipse(ellipse) - - # If an Analysis Point is found - if analysis_point: - self.table_model.remove_point(analysis_point.id) - # Remove the ellipse elements from the PyQt Graphics Scene - self.removeItem(analysis_point._outer_ellipse) - self.removeItem(analysis_point._inner_ellipse) - self.removeItem(analysis_point._label_text_item) - return analysis_point.id + self.logger.debug("Removing %s graphics items", len(items)) + for item in items: + self.removeItem(item) def get_ellipse_at(self, x: int, y: int) -> Optional[QGraphicsEllipseItem]: diff --git a/tactool/window.py b/tactool/window.py index 645fd24..cba4452 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -534,19 +534,36 @@ def add_analysis_point( if not apid: apid = self.table_model.next_point_id - analysis_point = self.graphics_scene.add_analysis_point( + # Get the graphics items for the analysis point + outer_ellipse, inner_ellipse, label_text_item = self.graphics_scene.add_analysis_point( x=x, y=y, apid=apid, label=label, diameter=diameter, + colour=colour, + scale=scale, + ) + + # Place the new point data into an Analysis Point object + analysis_point = AnalysisPoint( + x=x, + y=y, + id=apid, + label=label, + diameter=diameter, scale=scale, colour=colour, sample_name=sample_name, mount_name=mount_name, material=material, notes=notes, + _outer_ellipse=outer_ellipse, + _inner_ellipse=inner_ellipse, + _label_text_item=label_text_item, ) + self.table_model.add_point(analysis_point) + if self.logger.level == logging.DEBUG: self.logger.debug("Created Analysis Point: %s", analysis_point) else: @@ -557,6 +574,43 @@ def add_analysis_point( self.table_view.model().layoutChanged.emit() + def remove_analysis_point( + self, + x: Optional[int] = None, + y: Optional[int] = None, + apid: Optional[int] = None, + ) -> None: + """ + Remove an Analysis Point from the PyQt Graphics Scene and Table Model. + The Point is specified using it's coordinates or it's ID value. + """ + analysis_point = None + # If a target ID is provided, get the Analysis Point using it's ID + if apid: + analysis_point = self.table_model.get_point_by_apid(apid) + + # Else when the user right clicks on the Graphics View to remove an Analysis Point + elif x and y: + # Get the ellipse and check it exists + ellipse = self.graphics_scene.get_ellipse_at(x, y) + if ellipse: + # Get the corresponding Analysis Point object of the ellipse + analysis_point = self.table_model.get_point_by_ellipse(ellipse) + + if analysis_point is not None: + self.table_model.remove_point(analysis_point.id) + self.graphics_scene.remove_graphics_items([ + analysis_point._outer_ellipse, + analysis_point._inner_ellipse, + analysis_point._label_text_item, + ]) + # Update the status bar messages and PyQt TableView + self.toggle_status_bar_messages() + self.table_view.model().layoutChanged.emit() + + self.logger.info("Deleted Analysis Point: %s", analysis_point.id) + + def reload_analysis_points( self, index: Optional[QModelIndex] = None, @@ -605,21 +659,6 @@ def clear_analysis_points(self) -> None: self.remove_analysis_point(apid=point.id) - def remove_analysis_point(self, x: int = None, y: int = None, apid: int = None) -> None: - """ - Remove an Analysis Point from the PyQt Graphics Scene. - The Point is specified using it's coordinates or it's ID value. - """ - deletion_result = self.graphics_scene.remove_analysis_point(x=x, y=y, apid=apid) - # If the deletion returned a value, it is the Analysis Point ID and so is outputted - if deletion_result: - self.logger.info("Deleted Analysis Point: %s", deletion_result) - - # Update the status bar messages and PyQt TableView - self.toggle_status_bar_messages() - self.table_view.model().layoutChanged.emit() - - def get_point_colour(self) -> None: """ Get a new colour from the user through a QColorDialog. From 2a075fa34ed6e78503c288b5cd5f91a54008f5bf Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Fri, 18 Aug 2023 13:52:27 +0100 Subject: [PATCH 064/105] Update TableModel referencing --- tactool/graphics_scene.py | 3 --- tactool/window.py | 13 +++++++------ 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/tactool/graphics_scene.py b/tactool/graphics_scene.py index 58629a5..c3d31dc 100644 --- a/tactool/graphics_scene.py +++ b/tactool/graphics_scene.py @@ -21,7 +21,6 @@ QGraphicsTextItem, ) -from tactool.table_model import TableModel from tactool.utils import LoggerMixin @@ -38,8 +37,6 @@ def __init__(self) -> None: self.scaling_group: Optional[QGraphicsItemGroup] = None self.scaling_line: Optional[QGraphicsLineItem] = None - self.table_model = TableModel() - def add_analysis_point( self, diff --git a/tactool/window.py b/tactool/window.py index cba4452..025d63f 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -24,16 +24,17 @@ QWidget, ) -from tactool.graphics_view import GraphicsView -from tactool.recoordinate_dialog import RecoordinateDialog -from tactool.set_scale_dialog import SetScaleDialog -from tactool.table_model import AnalysisPoint -from tactool.table_view import TableView from tactool.analysis_point import ( + AnalysisPoint, export_tactool_csv, parse_tactool_csv, reset_id, ) +from tactool.graphics_view import GraphicsView +from tactool.recoordinate_dialog import RecoordinateDialog +from tactool.set_scale_dialog import SetScaleDialog +from tactool.table_model import TableModel +from tactool.table_view import TableView from tactool.utils import LoggerMixin @@ -68,7 +69,7 @@ def __init__(self, testing_mode: bool) -> None: self.setMinimumSize(750, 650) self.graphics_view = GraphicsView() self.graphics_scene = self.graphics_view.graphics_scene - self.table_model = self.graphics_view.graphics_scene.table_model + self.table_model = TableModel() self.table_view = TableView(self.table_model) self.set_scale_dialog: Optional[SetScaleDialog] = None self.recoordinate_dialog: Optional[RecoordinateDialog] = None From 94a0ef378a0a849b5608161999457adfeea0884d Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Fri, 18 Aug 2023 14:00:38 +0100 Subject: [PATCH 065/105] Update class relationship diagram to reflect latest changes --- README.md | 167 ++++++++++++++++----------------- class_relationship_diagram.png | Bin 291878 -> 322301 bytes 2 files changed, 83 insertions(+), 84 deletions(-) diff --git a/README.md b/README.md index 0886d6a..15c6f26 100644 --- a/README.md +++ b/README.md @@ -164,6 +164,70 @@ pre-loaded into the GraphicsView. +signal: selected_analysis_point(analysis_point, column) } + class TableModel{ + QAbstractTableModel + Manage AnalysisPoint data + --- + +headers: list[str] + +_data: list[list[Any]] + +editable_columns: list[int] + +public_headers: list[str] + +analysis_points: list[AnalysisPoint] + +reference_points: list[AnalysisPoint] + +next_point_id: int + + +headerData(section, orientation, role) + +columnCount(*args) + +rowCount(*args) + +data(index, role) + +setData(index, value, role) + +flags(index) + +add_point(analysis_point) + +remove_point(target_id) + +get_point_by_ellipse(target_ellipse) + +get_point_by_apid(target_id) + signal: invalid_label_entry(title, message, type) + signal: updated_analysis_point(index) + } + + class AnalysisPoint{ + Create AnalysisPoint data + --- + +id: int + +label: str + +x: int + +y: int + +diameter: int + +scale: float + +colour: str + +sample_name: str + +mount_name: str + +material: str + +notes: str + +_outer_ellipse: QGraphicsEllipseItem + +_inner_ellipse: QGraphicsEllipseItem + +_label_text_item: QGraphicsTextItem + + +field_names() + +aslist() + } + + class analysis_point{ + Functions for AnalysisPoint processing + --- + + +parse_tactool_csv(filepath, default_settings) + +parse_row_data(item, fields) + +export_tactool_csv(filepath, headers, analysis_points) + +convert_export_headers(headers) + +convert_export_point(analysis_point, headers) + +parse_sem_csv(filepath, required_headers) + +export_sem_csv(filepath, headers, points) + +reset_id(analysis_point) + +affine_transform_matrix(source, dest) + +affine_transform_point(matrix, point) + } + class GraphicsView{ QGraphicsView Manage user interaction and visual display of GraphicsScene @@ -194,6 +258,23 @@ pre-loaded into the GraphicsView. +signal: scale_move_event(pixel_distance) } + class GraphicsScene{ + QGraphicsScene + Manage items painted on image + --- + +scaling_rect: QGraphicsRectItem + +scaling_group: QGraphicsItemGroup + +scaling_line: QGraphicsLineItem + + +add_analysis_point(apid, x, y, label, diameter, scale, colour, notes, sample_name, mount_name, material) + +remove_analysis_point(x, y, apid) + +get_ellipse_at(x, y) + +toggle_transparent_window(graphics_view_image) + +draw_scale_line(start_point, end_point) + +draw_scale_point(x, y) + +remove_scale_items() + } + class SetScaleDialog{ QDialog Allows the user to interactively calculate a scale @@ -244,97 +325,15 @@ pre-loaded into the GraphicsView. signal: closed_recoordinate_dialog() } - class GraphicsScene{ - QGraphicsScene - Manage items painted on image - --- - +scaling_rect: QGraphicsRectItem - +scaling_group: QGraphicsItemGroup - +scaling_line: QGraphicsLineItem - +table_model: TableModel - - +add_analysis_point(apid, x, y, label, diameter, scale, colour, notes, sample_name, mount_name, material) - +remove_analysis_point(x, y, apid) - +get_ellipse_at(x, y) - +toggle_transparent_window(graphics_view_image) - +draw_scale_line(start_point, end_point) - +draw_scale_point(x, y) - +remove_scale_items() - } - - class TableModel{ - QAbstractTableModel - Manage AnalysisPoint data - --- - +headers: list[str] - +_data: list[list[Any]] - +editable_columns: list[int] - +public_headers: list[str] - +analysis_points: list[AnalysisPoint] - +reference_points: list[AnalysisPoint] - +next_point_id: int - - +headerData(section, orientation, role) - +columnCount(*args) - +rowCount(*args) - +data(index, role) - +setData(index, value, role) - +flags(index) - +add_point(analysis_point) - +remove_point(target_id) - +get_point_by_ellipse(target_ellipse) - +get_point_by_apid(target_id) - signal: invalid_label_entry(title, message, type) - signal: updated_analysis_point(index) - } - - class AnalysisPoint{ - Create AnalysisPoint data - --- - +id: int - +label: str - +x: int - +y: int - +diameter: int - +scale: float - +colour: str - +sample_name: str - +mount_name: str - +material: str - +notes: str - +_outer_ellipse: QGraphicsEllipseItem - +_inner_ellipse: QGraphicsEllipseItem - +_label_text_item: QGraphicsTextItem - - +field_names() - +aslist() - } - - class analysis_point{ - Functions for AnalysisPoint processing - --- - - +parse_tactool_csv(filepath, default_settings) - +parse_row_data(item, fields) - +export_tactool_csv(filepath, headers, analysis_points) - +convert_export_headers(headers) - +convert_export_point(analysis_point, headers) - +parse_sem_csv(filepath, required_headers) - +export_sem_csv(filepath, headers, points) - +reset_id(analysis_point) - +affine_transform_matrix(source, dest) - +affine_transform_point(matrix, point) - } - TACtool *-- Window Window *-- GraphicsView Window *-- TableView Window *-- SetScaleDialog Window *-- RecoordinateDialog - GraphicsView *-- GraphicsScene - GraphicsScene *-- TableModel + TableView *-- TableModel TableModel *-- AnalysisPoint AnalysisPoint *-- analysis_point + GraphicsView *-- GraphicsScene Window <.. TableView : selected_analysis_point(analysis_point, column) Window <.. SetScaleDialog : clear_scale_clicked() diff --git a/class_relationship_diagram.png b/class_relationship_diagram.png index 8f85a92206f124d346d9dbcfd64ee30d3fd38018..7f09fc3ece3055b380308e5b156c7d746f3a9302 100644 GIT binary patch literal 322301 zcmbTeWmJ`G)CIaRPy|6l8bJX;r9(PY5D*C!l@4j7yFsK|Ke#~G@B2LKS!=F2=X$-LN{L>+L~;p%KwN$-Cj1#VTz zh>f8|oX(o;{O2uA-2d|(u>jNK1IvWOM1!6T)vD;?V%JlKYE4a;hr zjdPYxeLmfnJ)WgV8c04ImlA6id9;t2Yq>~*eSP3be=fd!i5ZKjso?Qyl`Azh*?70K z_0!^Py0ljeTJ4d#>grBY{+#8k*G1u5re1g97ypV5%3#CmJo#a6Zd{a<0-yD|zj7FA z=V9o~Dpj{XG**ZV>P(ys<}`NNm};r>!sRDs*QI~``grbpJkF>?o{!*3v0GwdNI_Mn zZoQgGwHmWrQ-yi-N4hXM%ofxaoQ7sr<3oJ?^$IdblZf!4zICgs$XI`4mZ|QzVUe(-8?T1V_2r;Fe(YV}xRR*CFU`lV_&rnE`pplU z0R7&~r(a)i^H|sfO-;4t8xDTtv0Ug*XgFQp?xjOx^^-|(LYY3JhTDku3 z-BQZ8&`x#;SB_Lz2p*Tx{)%l{8yp5awN)ip9kVmaE_AkXySE#c4ZILgx^^=b0zfSNTvMbqU|((XVaIB^4D?2)fERM_e3?A1*nc6k?QX zO%5N=?SAR^ZuI-P)~I#JHa|YE)N-{g*#av7J+ET(3LMcpTUbi}ek1B1LG%yL|NnWX zw&lWEbc>AT695_~qt$X2*G@O8TjVXx&vM>cwKSI~l^_xu2g@J;s;n z=Oqk^7Ww_PL1b!Mb7)5gi}HSrqfDbGLaATDCe3yC#LNYLP&oQz1slEvsb3kn)j zQickAkM2(K+-M|S<~E->$HIcyUuI2;6g<6py6e0>H(>ecUPo`y^`M~Ej8?~keD#^O zaI8t?k`3BCZU354XR^-Dyj0~f@}FOSezRD?Bn;l0OYA&%LApqu0v|uXv#Iq*rt+#w z;UnP_70bYsyDyz8zx(cV2;~NZqJ7`jS0OCySKXb* zEtBk*Bo#xrwzH!(Q6H~VYT@E?wn>edD4hRLXk(i0Z6MObYN@ZfKaZA}`NoHqki_}U z#5*ChqHwtR&YaWoaY<-?4>h zPnN1joGRC-!zMnutILlci}Xrd=Y1OCV?z6}F$>bS5;EnB5|N%b@s*)nrUp8;Py6HkR`uLm?zPyI&&mnwY^7 z4i`6f_vhC8;-MC>p(I%3d>&^nSUoGVazw|vc9v=p<*xbc)YD>myDo1LY8 zpHAKUMqb|81l`W7eiT*Vrjs5f;}5SA_%;m0(n<>;)YS=|m25cM><*tKeI{m!kRZYe z=;3m$dE0N$@gBLn}x*RVyTZ%b@U244*3(MA?d9} z!rEd}A>Gc}s5Ds_go%YkzJUJjw~vA?AL)uL+jyIpiLf{ZQRyXkc<$1_$2Z6z(`wl+ zU8yAeyR%H^Kp(Go{~|O)GX`N4;}~*VWImFSW?laQ)uTA z6A}`la^g)Pp7oh1l^)YH*;7G*16}%+75oyXV-kM*12zj?olE$4C5nt(*Vl9rx5@R|(7b-HWw@X9?yF|w^0H*|$Bds}Dx zOxlb8h9or0vu4D(OQVfT$aEr(j6K=KKV3-sC|7Vdbg0C9^q%%exp#4y?9@+LMaAAn zkKFS#A5)*lB$)XqtH5frMieD*0cYhk)XXzysaXAb)BD-d6?Zosjh^+GvT{s!Wxgbg zTjoryy<f4#WHLTEC=x!FV-6mfCYhD(wACx=-%a`a0>B@x=~UpH6E z{MUD#3E!@*-OSgM3F9_zR6KOpY=0vX;DGZsQ#mSIzxS0wVY(zhn8#8lu7QHF55>h< z`R&+0J02cDPTF?Pag{5#p?eb6LCs+$xIAF{Jy}w@&_KSS)?KE=VPD;YY-eRyN?rYo zav4X?GeQFLG5@wGe8{T6=e=K*p+y!m;+eR^v5}5{T#M~ff_(S*D1g$5=h~N;W?yoO(7Jii2w(i(& z(tIy5*MKw7nl7KXzKN-Gu*DS4!4MwGFxsGI()_-T4f$gxHAQKEZ?c_>hv&bj4)POr zzQsJW9x@u*cOeZ)ys0p}|J>O^o9lGgDc9Qm;Wzuw0OhTiZ0w*_uf+!H*6FmjfWGNCfnnv#P1O!NhOVD6>@UB{) z%3`OcrgCv{y^oAM_+sVir784Z0QefVjEjq}&ywymDbP#PP$V&Ed9Zi0oioM6%xt2a z^R#Y%)0>0k){{`GJ9mOA9Th_aoo_yW9&BozRnJsKHUTheZeSb#RR&LegD>IS=&4~> z*Yi6n$X^~PT7AEPq^U!KV*n4dbcTPY}z1Ox;) zD}Ik=zw=(D!sFSe`|5X|&ZkwE$Szy{_|em~6kfbbJ_?px&@h-Jamlp#J*j*Uylnqg>98#>1Or0_AbucwxCl z!#YdDW&RJ{eVEnjuOVOqiP^MojE`dy2@1T;)k@3OY8B_>Batb1BdM;jYdT)bjVjiK z23iV5E47PRMGd{2ZrImVrl7>+nT%hfC%~+*JD;o7Dhr{-Z25*+JI}j2C9pfulVa4d zD9H7~?$b(#mwbFGXKq0K#HF%(4^@XziK_|j#jx;jM*#LLU5+JgYU+tZbn%CB+s%R5 z%lNoutPv7^q_fCy7W3s8A1}Um3)SCQ(qLt4ezJV~6>U$}X*2+MERQI`!;&)D1OQ=j zRZheR%S8@qF0NqZvdWtfPao*#r8*OC^%WXkrjuo);j-b`Ubr^{n?*qH^-0*9^~3FF z9#o=ExgFcnVVHWOm4u!+rwFKjjlG=bZ~`0an@)xMb3fiu$UnzxZB)2(=jo>_dU_&8 zL&Y_KZA>j0L^>0U0E_#hUsh>oxP?RDd!Ck7r__S@V)emxD=LBp3x^{(jVTjFkyOmg z?`}PzT;DQ48!F#6O?wq%yIS#jsV^s})RJ`LV9_w6LGi8SqQK$+n>!%ztY2pWT;FL9{%V> z>IMa)%F##I3)8K+o9|qy=6kaYJp@=-e7`8|3zqLFC~_Dn)kGQFu^2^Dl$g(cRwx+Y z;^m!OBvtRG<>!yNO!^8yN%MSn6SswKTtRz(KXJ$%f5_u3Ivom9F+Au)^tor)-~90V z{6yz@j=H6a?dS8*(NvF)M)l|QBF1K3MXpa0;t}=XGi3>|8xC~voED8{)^&ESXCl8= z+$*Y4t5#I5hiSd#?1 zADMQ{8LW~Co8A2nuEnFB(Cg1-BPZ9f8F!~y>d*U_l*AUzZ63X5A_zde=ivgw&$Lqt z3P*MV>s=qzawa@tQs;0ePvZNr#A5 z>ZtZ;ACGP7dAZFUXpK#d4_;oqIsr&W{q!V;U9T&+(Z4mvWSjshQ@h9I*4s+OUkX&8 zKc}2*+<(mxWolKJfnhPv`hL8wOoR1vXNvR{?YxM#7iq7ezI@4n+AuynefEBL@-hb2 z(l;EzrLjOk#=rLdN2*Mmm)Ctj;`##=5j<{J%92l-Q6 zVLl1+X8N> zal|f-#`S`=<`CB@mLm#@0XSt#j}zek5JDTM&4YBueC+12WB*BjlG55N_Yc|$?!qy= zU0YyZ6CIPlptfdw#!~&+vvFz~nx~14=GW-u!hdILROI}VjlX9MszJiNip%n@#AR*3HuM7_&_NK$?J}{}`14*#9rrQQN^de?d``$WQGt*x0bo3>45olFl|9KHmWVu@sSXfYBE2aRm(3K7}z z7qXp>%^VyDI|~i13k~*tax`YwH(HHz^kn=B0{>GZhD$F)GDqmI6WqA_h91?rIiF%6 z{>a?L#b-GjjYcUbDI+@n;Gz1Ja@38W_SKgTWsff++}t1a)7`>tsWF>2yUDmh3k4P% z8yip@0;1r;TWD1(D{uDf#qvk}%DzY2^l~9B!VNw@4b{;);sooY1(&r~hSnkd;U{+L zb~{bfGm-Jzd5w*U9c=6CU+?bkk2rHamXb#MCaOZ%ZIj3(OPoJCt{?_%fygTFsx8fg zjwX`BP$$NDbB1V9&YB>_*f6Z+g9l`41CGBlHQ?sL84_HU=<4d0bY)UWg~-liRKGZ| zgo7KzJO3N$z@aTMmXean*BzG(B$p&+{={Eq?X1x~QfeuSj-`wI9J_SVQHBCcvKpU$V`5pftm^o*Au@7Nm*Y<+IuYw#&C zooO?ztvhBWF;-)Z_$M7hQ6mjyjA_|Ka;mq6{%nilbg6asRXEfxTnQyqb@2c6Nd*v} zf{N|*3i8MH-_2p=sgtjz@@&W1wavwPQHo*uYrTJ`UUd!UF+d!DZ5|;bHGg$1VGynR zpKNfm>%QhtM00Oh*h-4(E;Su7052~8;L-@D`VWn4RVc~51-ZdwX`E?)&HX9DJ^sp0Czr zze=_wWV3fBiiMCNvT>rJyDxvf@2p`U+^e*090${hbRA{EQjBNwq!}xR7XJ6+p4>n9 zLT(foM!^H)RVPGSEPue}tn}onAexSj4#2uJ8bTev?P3NkZgv2Ki|JlAu$Ft`#1s<)AP@(cjYAWa4k5p+72Lgsj zk<*j-t>wW+k}8cR^p045Jx38Oc#90^V?aC;L(q@Z z%`p$qFI|WZJU-xcPAVs`d zO)a8)R|O%PdDPOAk@i@O>tTu6OW;uI8?Ju>#^f5~k~lyM;F0#Wy5-wq$^w3-C8Bxx zkm%#ZF{wTnv6;NS(Ch4;Ri*NHbLKj$IyfhggMFYw+0nrwYD&MowvOGj%t&Sd!i|Ww;_AVt4c#MJt%!$*Sj1P;3XC?p|*PN7a1)) zHA?rq{v-BvJDq`-cW}&i`BnM z*(4i>R;qsUhm3Tddc&E7M8RA=>%VbdM5Db8I}M-1#Zl*~hJi}0);BZlQTNAdADNn( z));WG*loS_EKr26kJVl5Wuj$V`Bc#ju|L4;Zt&=jGdgtz`XB@psDaW<@sCkii3zV1 zdw+g;HXExk%pkz$;IeHwT*{<9$Endsh~PV1!i;Dv-(TO|8Bva&fg0Kr+W-&+$=KqjT^dY#eTm zFEQIgpj3A48yz=Vu%x2BoUw?#;Y1ojvjDQh&C1GU<_HOt1O=&FueZZh@bt*F&eJ)` zTt|Ausf--hxN>ygba!nT**8orP>5VA^KbH)h(Aan360vmKH>PR8Zq4Fd&nC~-w^V9W4d z=Ev6MZ+hp(y=`=N%(9J>!#cK@GJ}3`)H#Ip&eQ7-lZfSe*Wg6w$aF6m)ZI znN)bPvAx9Z-uYtrEyu+SY#{2mVTmTD!$#G|YZ*}7H0#FM#XiZ%e9h+fIP?8^#CPtr zShv^cN;K5epfQil&3UzG=FY5#Rc(k%RuIPlCG>RnkyJ8k(Z7_-U)=JV^XY6&*=nU< z%@`2*DXjUuX|s<(764ZDU7k7Pw-2e+IU1g}^Pjbgi>H!>F|0SHTSZ4JGq|l+t^sA4 zzjHhjb+0V~PYSY+sg+d=v(>{|TvVJuD|6$98YR>;i-jLoE?f|$k&vrRm9ef;6iF13 z)ay(jcoMcUHlN}v5FHcbn)-(fB}X56sw}y=*JLYa?kl#Fym}_cK8j`XNtBi}k`oOD zIxUq0$(n084g_FSO+R?yv`nBGTC@p#jYg=6kE({ z=pQ8F$n8{Z-QBionr0a~Vt7&T2#A6S$8EeI&&iHe*RiqP5{vl>$A%HJ!(C4=KBYJZ zR@eIa5NI|RDkth{6Cn9t?>Pn3f1rzZjr0$}cnT55sI1u%JRec$c)TsUwR+0Y8rqJg zHd=Z89J&>%-2qzB9~u#6oerDe;H&b52IOdHF~n>$GYt5imls7Gj^eR2XlP=o0VP7W zDAJoLxi{uI63uHJ`L_gwxUp3wboQ4Q06JzY(jD2G+n`~9#vEuk*fT!a9lgIv)dy17 z1#Ac8#`GrImuHjmK(b*}N8XDwoBkFDsMcy_sO|mDn2VRUQG_}3>)NMRuLcAM2e$z% z#K4HaxZe`IvbAt;>E`lF+Y#7E-u5UQvH6Ncj{F-K-1PVH0aH! zZ-0^XSjEA$Ee3J4b!(ok8Mt=A1=aL$QdNhX)tfrEtP>S)qlA>dUYh19(zMySoi73? z1RvJCbBEXqkvvR^>rh`AvP@UGetC%AjNspD`$e(nrs04^Lwg20gv-oSOQOMWDf-)I zi2}6^wtwiesCb6vYtG zE7Jzr?Nm-q(xlDdpZKajy3GFk!4`)4^1vKcgCZi4<)=3HzoblLK06hLF_&b&Oo?mj1<(O-zp#kM z_afu>md8KS?r`zWe!F5{#d>)1o;IZ4uhqS~cR9wRSwllAZ>rK!{x<~>MD|GxR~8^& zj9%2=WxZBc;2Uxx;d6@C^Evk#&TP=@-ArG>l+J}t7_Fy zmy^&OXI2~X~CqP#kqx3K^8z5JEijsB2}rZBW~ zTOB|Lz3Nj*b0UbC5)_C`PEd z`#}B$QBg-Zz~|CzwTtp8kEej6!to-@iq4UIUgP`FQ0;CGpm%7c$vswvJk%+i~j1i{flD*;@?7!j}^@U=Kc}o3Wk;&!Zz`Z>o zdbukuzyrWBinX1Q|AYUTZk?SR8>=3v800b;vkzs8lZJjpE=OIUr6nw!%k&Pyd{%0# zXtZN;l5L0w8KY6PE@B_W2N%FB6JjxaQ_74vsvVJh*&g4 zh<@{T`c<#%O8d!>gpAQt|A&=gZq)f2y6d>9QEuNeAcE85ih#B*uQ)`@)@-o=_Q$v1 zU;^%WYi=AAYu|09A75X}F3zSn9`2^kdVYVZy13sm>dZGX!ZZ#o>60+VF(B}dkNipQ zVZL>9vw^N9L9wU?fki$Pq*S8xMK+6N`rFGKCq_p{ArljmJ=Hj_Or`x0P%+v~VpA2i zPg$d_(SR^|0%@VpP*D`x&B3CqqS&T?I%1Alj<*I)v64`fTLw zmtU7O_9e8m{-8Igqj(*8Tq4-&_6`=a_7>8lp)Y;{IN}3?qBoFm!jJr?U2(L>fGt3v znqj_OB_T*>l4VxIcjUWbz!!t^4?t^;nCtJ3yCWl@0c2WF$qLz_6qwkE?=4W()@p|Y z2TPnBoxg|?(E_z7TF`kWbMPrRF+46uiMgDS#=XKE3pTajXa`~_5J0k$llyxIo?;}f zqqj#{*AG{mNfdGX5N~6zpAK9nT3>x{#^C$i5zOlLjQo3r4_swUOf}EVYXbEQ45Yfq}S6z(Fe8JCQEGNo>Dk@EHhC zD3KFK`!YRF*5t^4WhpUOi5FjA)G6qGRW1_%#^|ffp<91Bw@18Cnc3X;N-RSHUw2S( zH%IL2`f@Z9+e_w3W>vDCoQz^9;N;B*Y|2mq%li8Jr_Q7Grdv_SQ3m|GFFwEdsbFKj zJDHXh3hKNp=#trQezs36W+10CCYC!Bb5K?uDB@M8C!}iju`NsGnBb1M+*jpHJL*&x zKqINpAKhdWQ)R4rfm!!GA%N^eZAqM{<*!fUBe%({4|j%bC5E4um|X^~{fYafm;LaI znVCjl(V?l^cL2hgU4I7~qHp4JSftioQO)*Z@0XX0RiH}!nAy%aT6L&GQ9mYY7GMEr z^C#^k|2BK8tou(I_BY_sRmh*KZ}eCFo}-}(ZbY=P#lZlj5;F~U62k*xEc7;QHUuti z9R^l(+dx5Q(&uCR*||Bt#6&zmL_n*7;fDB7iY5fZwFb9Xe#+FMd>=2VK|Lp6d~QxR zrcRwjry1jhEF+=55dv^*xP;zso3CpZ%hamlksZ&Abh+V~ufvK>OEC>{oJCzIvrlz(CeZl> z+=ZJ{ExTTY61lms&hmo1u)1}+>=ST3c;<^rriUdLSz}3Ac?E}8I*_WsMq4j~LV~S% zq$DEh>;|phN4l2!dio?lsvOJKvDU^hRHHVD{J^+P07QWmLTz1%`S4UrC*tU6)1_)S zbMSaL!zW9%$|Et63T#lV7S0h8G||x~cUiP|j9o!cWOgbSbaBD$>AfXhJlJNwcx<;R z$<*k-Nd?ImOe&@ND$-Z~@FNDFy>@3p+!MP3ZEYPxv)*e3tT`cn@eZ?Sd;69XiGc=L z`TtTbhy|eTgoSV9jgLD4>&6__jw(dA zn?1pP0vI$3S$AEa{DMsKIr+oo(JHpO_2>^D#N^}zA;=gR8Gn3PClm6pnCSXEO1>&0 z9{MBuwM??q^%h`DSq-a>m9|=$JTv0rRGs-TtASLgoIHB*E%`Jiu8Q}b@rbup>kL#w zLWP2b==fu>8;;ewZ=O3ZsWDXS4&-+!7Rz6IsWUtzu4s-vxY@@Lkb;=RWZ%>A@`nG5IwJ(-IpGpaO=1|F| z=AK3#?Z*|S8~@mYD1+M_SXU&b7Kfkg=Iv(L!%uzrf|Jn-%t=>#-Jw<6+{yM_=Lg%( zo>6NDP0fo;RYTFxAKJUgYe{R%@I(>B#*FdjOT4Wx4-%z%BUY}TLDPT(Cdc=K6^YZ2 z|Km+cwHFl(McqaPYn8}ix$D2k0I0X% z4<9r$RgObAN0+K$i`I8mE>s8K>V~4)K2(CYw_LOdm)_JeKZA4wmx^~^pCdvdn#&JN z)h{xYTsvY82iq){2k>ia56qADkigT_fnhaK#e%C1RX*{JL5ev}l zCq5tP2t%SByn$KHvs#|zSf6aVuoidv<1^q#@V5l!YSFR1`9bdi)C$-UQxyu5+mF1x zX}!JW#ej6bcyUewJSN}}1cw_FE-n=jpA8l?rCNR2-YBL6ep0t*={i7AT99eu9rnMH zajo%tdt;yy#Lb&*>+80QEaguqxu3uR0@>kcXE4j}Ixj+X^clShpTG6!_3Ewpn>~VG z5O9VCKu-jNso%e7vI$%c`Q%~b8TyfR$urL`egZN-; zXusNb)AIx$4xsyGU~H z%{PEe|ERhD(kLk7Cv=%|6+9$2g!q!W(|Va1RZsk3X*WNd{XPN@e{leh*g7PjcyZ>Axl_DhjNJt7p>_)Os10uVZg7R&5}yN}KWM{}*!t zKv`pNZKW-$DAr;B(%QHurU7)og=&jEKS6qcEZPR2yuUM8@FQdJyPcBHP`f+kEV!l+ zAVHy6Kup386zuzSgW^qZCYXLoI(Gl$HMou_@ zRp82^CZAKYp_H|W`dbK)gpj2tM$Wp_!Nc>ZV}GaoV2x#HV<7?zlq>D-xtEyJ_OVdm z28pKpO~V*MXMFI!#2Cg>69 zyZ01=d`e7S1Mg*Xsv3Cs<=+}x4o(>1M;T6T#M4UuXMK%=ikm*EY4Gi{ zavGz+pz(8e8610qW5HlPy+S8DBR$^H=P^bMi@%(}!G=FUE{6%Cx$onT8vP<#;k3*T z^@o7Rn#FuZ96=*V(wOwPj);rd56b(6v4x*$SfoAfqt2)J09V~SnW(|n4f1*p*htFD zM|8$(Q^6Hww$z7obKf^x9(bu@pK;mw#5SVqGaU$jwgF_^)%sZlw{Fkz3!K>G@mqr@ z-oNW}YY4CPh$m|(08hsQKZn~I{8H1cvbT8bIDq6|AujuyN^-!G2U*K&DC$=Y3DyX2 z*F))Ls?L&{p#C7Rh_6buM(Z37zcBVU3Mz{FFFS+ZC0 zHu1m}iyAiqkj@+>39_b6cQO;0b;*H(4S#n&4%N0NC69apn!q{aqgV6f?#>|pQp~$y ze=_dvN{vy+-d$X6)Zy7s`&Ed8$f#IZ-A;~0bF?MdWwVmydQ(!sL}s-=x@ghW<@Y1& z^wNU|-4OFUaD?N*D$j1L5<WI0pHlS}I<{5GN6$}Rld1PYx{G=OaEXulif>O|2fWmN$%gaLN(o42M} zv#Le{;+#j2gT}oYJ?YE{6zjb_u)V&K>zJvLrBWBpv3z!*&@uKpuaUr$b$`y0cp=Xb z8`}zLsPipxRbv{XufPmeub!isYD%866rR^ymppl2xc=X%sUU+@nBzh`1>XSpV-E-W zE|UffY?TbZJ5QRCMSAZIG)j_aauo;fC6#tpTr*It)%Ix%xcU*3R!P{hpp-s*@`U+yr|8V-BYu)zqKkoQ%s)MtqSD1Axt&hw<(keaZ_xFS&stN9?>(NVd#m)y62 z>!cCPH{Zhe*z-K?Vf&do!NdQ-F2iL-rW3+Pj{I2)v1G|VwvI%1X$E;O2Q@X?P*qef zxBgKu{uXhT2Xui0$}t|rew7|B4dw+JDWz{~TTbZaR0)BH5t-n;*%&R_&7*UQY1xz5r!GIEeC* z?d)}m+FFN}kFD+~Z&1E22Kdr)%xASveAuWCVWm->ufK0mFV=&fHSuR#yybt6q*c%?ZqGz%G z$2Sb3AjjcCDD<{hiA$nENeTjA9!wtIkz2cCw@coV@ThxkRPaNk5xR=)B&5oml#N7lou5+9mq@N6{@vB>;qu$6Lq&J)z6{qVoem*0^b6?nuQ37 ziQfS~Ggz20d9=@FW4oPTJlcar%o+d_8(v;}i{T1?BPQa28XyRpYh3M7wDsRuiJH#T zLcB_0UVeC5B$iCaxx@}E9ltO*l!X69MBV-mzXZ+T-hsy$kac@|akmu` za_QP_VK~B|386U3Zy)Y>hJ>(zpqgYcZ}uYfIi_!ex^h@Vn5t9AcpdHLWZ-C?*|a*$ zAc@14zsgV$hc%s;2)^(ZT*X(($XYU$N7shTFQ=+ha4Zj4q9#^!pK%TpE~8g>edcAo zW{kEdSJX5r(6J0gZqS%h;*}z5J)wgmdf!DR9V{+2SUT_m`I1vg2Zq zAdlg3a$1*HI3f&s(4g~=0s8P+q6eY-C43ro3yeE=9s^~NQ#jn;4-WI>jV219`HG+A zBwT#JFYkkY>?7 z+h|w>++#Y#<@g-eDx|vS@ux(cPUr-E-i7Y-->@FLbkpt1!;3eC1=ylYxSaX+PcYo~ z2*vm7mfnxDTwFIEo0$oya%RrS(O+MmZ}{@8(vO1Tk-?HeSC>SO1xhmG_TL?i0~c45 z*~*ad{R1_>WIcAHA(*iZg>3gSI{F){evhXg#j2>y-UUQ|&&RvdA2j%AWbQ^L$M+7( zw<7%$ZUY)cL~`!d{QMaMXhgnrtJT1@$S0wXkB-g!z#a2chk-V)Kz~%|nFTfNDA@e8 z3M;+*qSd-(i7oT>y8VHw2VTMijc8&j;HAiQEn-UbDc9?NIX^wGGS_&NrxUcNLZ zbL+T)Jh^r%?32L!=EXToLJw9=F=m82rl6=qo47*ZlCGpV6Y*-z)~?ddZswJTM`0}p z`0FBSd8XJZTz<^9UTa%rc55c=?HGC7zDne_S9DvY{2ad>7CJbX4unMlnhZE(vekB0 zAAev}hS9yCp^}i=`EFX9`CCjd$b}ojv)`F6Z~H29sOD!HVFb7NHQ+E4J1@SUENugI z6uCR<{A98*V|{&HYasu=y85fGc%e9@Ne&W!IeP76smnpqzMFJhBJB1_?NJRk%TT|#rJX_p~U{G)=fsI+KSQKJ3s z18G*Jn{Ine#k;ae)1$H5vY}mdwG%6|HXh%a$J^VV z=KHzndI^*C+gmgZfEDeD%`1lEwNE2C99_Y>C-CuL!>1uV$8h>{f2D?U)08#+M2i=> zZLV-T!Dr|6Ewj#OBf?rO3Yh-?0r}z_Jz$N^RT3x zk+S3MY_+3bdV<-_w|mC zd4~i$`N6pjWfrr#*wi=&{!cbbWvW|R@CFahyW-+w9OdK|P4!y06NK<1Nx*b?I3HHQ zu1F0xUn;1ImzpW-#?wdOp@PRr%SFp*_hQ`yuKLtvaurB(djA)yKaq6+;!WpmY0HL zmzI~oN94SJ-D5B8iG;)r4l9PrN+EBbNa5#Q49}mRKy@eQ;<~0@=P^B0`Vl3~6R}K4 zg23@4Ltz_b#-n@`tFborxW3658OyKu`0-=)zU(_MzC8V@a000THTbJJC46)w!fd}o zbQLd)&0&vyXlMxI@^({A{FRXr0n}Ip%;H@oB5Lf2Q3ZhhU}dC2(q`}ZOh?SyuL{g0 zn5<3?nwiTHY&vAns3kqWg>$kuiB8BA3tSebe9?+yLW02S%^7J^3wk#dV;~SId94g4 z!0-W6G%;YxPVAmfM=DB7Nomit-2hF}#L8-VI*b%*oWr+|X=3XWx8{2cKS|od#o-Ya z1;THf&9<1A$W-D+&cUd(N`+LR95VLUzduiOa_p%W7=O(+rUKLDaJ~DZJ&KBOz+idv z<~Rvc#Z*J7Wh)m@q=4pWnN99O6B)t1c}m3F6F4^ZsE3tp_w|hE<)wjw2uROk(?9); zhS3M|)1X516vxCUXE>`?*x|-VHG%4hnyP?LNqOjg7t*e!q#CnGPTPATHiAUs zur1Hw84nMI!rli5!?Owq%?yx0aJlsx(D3m^3OIV0&UP5S>2Yueg(L+w6y^e`4tE^= zQ41Sz{S%D1*w|Oq_%ih*JxlC`>F}I8tD8t!n1Hz>lT0?-af}W_E`|V+eG)}?UmLIL zc9TmZMPLlumr?lujajXl=-s>IJoDLPvPu7d*bY!ViTUjcE&Cf9{LQBCnoS6kF(_D6 z4-Q@cL;%qs+!EXY6BNg>S$Z=9ZEXfpiJFgTd90o26w6qfV)j?tj-M47Q9XP}kn4QP z3B#ljJInUn1&f18N!0yIm@rTdkvzoKctrhgW&f3Ty>xmonO@Y63WoRf73}S8QQm!X z^}T>UBiJO)H3kM!!nuRIx@E`fCqjkrC2YDv%k+RROEh^^_w-ReM+-{N~0JK6nV&U}izajc7HQu$c66L zN*o%e25MX{>LEf+wxd#Q88zeYBU{a+0)#8`*#&hcyWi2!|2EhDR3xw^=f8k zrK2%C5&`MaCB{lNM5P+1x0zZt6-wG8>IZ++hC^NBPKSeCh>3 z#R%gdTYuWiv`6CNS3_tntF2F%pvD7wGDv|z{CwZ#%!@3QFsYcX)qo785_C=@C1j5D zn;&0V7k>KA!!tj?I2QT-y|tJ3{*|{GioI-RnoJ~|Mv?_@3JeB77R-@r141=CqpiOF z+?g|_ed&wcwC|rK+O3b+cO!_{b@}jUcQhvIi}vSJ5;^ohnFn99*vimjaQK+dS@2L& z(W0hl5c6=QO_ z2p;ahS2oH=aB3u4L`!DeUy&s0)O536uzewdkf5?BYw7!;V`+*WiH~}e?&*m!coTQm zH%Wm+$>OWIO)<2y%)-SRR#%r;*naTHw^kR%=T}x~gu`C;(vph=vG(6Ur@ z0Ctr~z~OG3!_{NC-iQYe_`Us*$KOWddlB$YaM%#`&VBhmRTE!59olkIu%SgI84Gdp!A0M9NUsu1a&o&A|!h0NpY zSD3D00a$z!ob9d`q`?(00}qoBhtmTy#@aA+0}P_p!jJnjl95nzDl~Kwp^oi_ zgoodUe#gPl^Xm2MH4VNg>uYOCVnOOX8b{yb;{i9pGY~#T-cxO{ibai!LsMrn>969j zH_rD*rGH&_$%lYJ3Uq$d6L;d{PXN%=Le8g6$^Bi%!H1dWo#A}in<~GF-w}K4-kGQa zcdQ+7owpfS77QHKZ(mP`jn|DPJ#_ziwAGC}( z@;Rio?-#-x0|EsRV7B;s#o>MUMX@5Iv+{Y`7%D35HtP)}D4+$8ImlRC_@M`kr6tXc z8z0E|NjB&zF3)8qG|llIqSxdvNQYVPT;o=Ces?Km4Lxrm{8Hc|{uO0YdyUK0ZFw z=lK#CW^7wyfqBjm7_s{xcl;JP0^@PduStILlKP!Fi{Jx@;aDWpyIbH7aFZ>PklD2g>X7t z=7MdT0&ECJ{ygA6QCD;Zc(x8N3TwWu3k5L`?=3zZrQXnAR zPJ81BAP{WruHOLo6(1w$9QiVB#(d!i5}p)+^_IhMB+2P`#$s6kY3Cds`Ok<(PP&kl$RW9YF!SI1(c}4dHeAjn&F#oP~ z?a_F>cd^0QVr*>pi&$8bbDfS3JN@ELd#?qbggLb|`lt05GN2n9Qy>5tprOS>kTRM9iX}XmM3KqR#@wL8v5bDk+JETlZZ<}We3+WHI9tRlxMJS{HjoZ3B z9UYkj_V1$)@5p1_eLRp$vOsxXpus zPT6c_TDMpk3Ixx<72KTQq@<{}I0|)t*_SWDI9nIPYu#7D8wzk_d}-irBs~)I z*?`%#asD|AJNOZyhqd>#+vKFgnt1_lDrB*-RRzKYKLT}}n9~Sb$kR$2x?w-kT>{a- zl_G9(y-0T-e10=Nax`$U#Z^}`BYM*NHQ2h}0*r)FhTz>FRZ6{?$D6!vDR&q57oFbx zSUbl@k(vpm$UeydNeSo=aN=z7^6SGby%03$n*ZvjY#Kk@**pU{6!nyojmf|ZrsipC zdB<%Ls{7Mn6c`xt&EMl=3=4_<&v(vS=tlbV8^A={R}L9N%Y~^XMdN}bX^O$wbD)Jq zSwtqY==bQ3I9gL3A65a}sO2+Gx$@AfJj6*y`X7Ghk%h&%ot=RDI~oq~uloVB7#BRZ z_~p<`x`&3R2rHjDpV>`l38{Om8`66AzQLHmCB~FvWx5$vR5)QlaLXzx9rXR{G2-D z`@8Sozm8M9Kd<-ox~}KC+#*2E6Wz_f^t`fiM@M1klPt?T1M4*Yc2?8nntn}a zA~y@HK70f@L0PdA58`?_+fBK<;^WZ*%l#F*UnzXzFVnU(oMh|kVL zuyTUiX4{Xvy_u~l@xEkGJ)StBPL2~SEz_SjnaN^dpo$yvT5HGzWh;`htkg}&45 zPlwsstj$-h9ed~0+C+BEperdg_bjq=WXTRp?_ptSjrn5KRd^AyCpvV9zzSG(zF3_W z8>=XFHJWJ@7fz27zj+f}^&^=C3P=(J4s#j^qQA75^nyfZPfq6Nf4fY82vGB!tmj+c zg>*!1yluhY>&TqNQLeO>+z>AN0TWic)u}v>BNqcCBTpdOi>N)*UQ0@)c_yjVAhQ`N zNc!eP`A^l%7qu$9M9(R51_PZ^m>KwR9#yR*@WNYKbhE=hZ0{x;rre352)^i81&tX% zq!UHEX+ro<8T3~*-4rVn#A}8II_*LIGJn;wpc|&#STNr}%(I@^XfSE_Ak zymKv$UW`&N1%9@@#k(ubp_L*1+c)V~uO9F{T#gw>Q_*j^edEl+x}Mt~EW(BU-zKto zE+{(HOm~a0*H~G-(U!SU+d*NgtGtr`x86^Cs*w+=TxPSRqb8~9rwCB%u0zT76|w8h zMH{1V+VrPZfs3*{L03UwW30)W)^;DB-PX_$9HwBuw?w`9d*<|4gRazMjcFc=Db4HN zyz&uR?q3CDZE|9z2(25ncCXKY1;>{X+CxeUrq;?94>sud&WSco*apn|?8E0=;w%mq z@quP@NN``gxN`k^VkJv`M@}ylt0qLo2F0y8M-d{n6>USwkAfymIX(tE5rkEATg(f>Up-zsa_Uz|sUz+OYP~KcMTXom}jPD;*s)s6y zVJGs@>Vb2jG&o1Jj7}|tYo<@&+4f1Xw-(^`PE^kGo%lh*e`g)f9ne-nPPvXZhrZ{!_^u8l`6slc>7U{&9VTvRXX?EYlLtR;Y1V~s zcu-EAZc1p0l1;K9c&=ZbsAsYIb+V_o2*&&*jI=BU-w_!Tt0z@)#OND_Wak!@(JBlR z3=$u26xh^)>kdb^6&Av8zZtF6(45U4+I25*jBS0Y@6}l4l9jrL8fK}E|EF1uyK}y@ zY+Pe)xgT%fe-I%hr4De9tRMt6o8q^U9-%1zx2qz&45ufSX0CxLIe>B>sZ}d?$+(9k zT3l5K&8I<+q>Nu|tSbf_XZt~P#s;{5hEW^TfqpkJB z$5TJkBCAO+#ef(7AJi-?He_P{Gqca>TF1U(_){8gsHssVCo}imlU``fvm~MuuFH13 z3NST*+jKzA|J;tj(Ugm6#=Uw(XicHFXO&G+fpg;slnmW(QlgnF zl4rqZY-*}q=5`|_R2leaKawabWyM_&h+!`3U756Oi1Wd_dKOki4uI;RjU+I!93Ed9&+0wO zn@y&zEl2u%GbF3$TNc?Cl<~|>60h-6nUMSq(EklPS!osgx_WAL&B@hM+1*>5IU?e# zwhauPMAwDHkVeFyuF>+!U+Zd07UZIv;llXC7HoAYM!%?&JO_4o^RN{2=$u7!5g)G} z8xTWal~*t(#E7lo=?05-`ud*4&(hovwJ3TFOz>$h-d^L0WN@3~`ohAJ5Gx(Woupts zkdVUpMmI=Q<>P7l=IpEo%0{9-g+E@8vPGw}2Gg z;^Kq4j;{{h2;X%)Owiiiz~*ZOH<$m;<0dC6o;#+%%=0C(LT%IpmFdZo+{TnH2FP>7 zHT$d(yJfn*dM4QJKQ*12XLch6LfwHumUJT_~ zh?I)S`ZcW=#3cSdsP{nTC1QhSB4b)VqBf${H)nw@3+wf5EdeyJg^UVVCX>YfJ;pHGHnbn%vz)ggG@PywDqSBmwwC%o-V4`YZHwh{6!H8jiBztXHpUqj22V0|3(}se_uQ z@Uo;CyMD9(`}ah^-Uber%#F%{eU5wj^qft1X8*UCe`>T<_xwgM^^dTJ`S%xI(JWCr z@7rKc&{ny-s8E!4ZDypgpk~m?IYX_u?`X`8Jv&EkYW4+@RGFrjN# z=*A6sK|#?7d)qEyZln8{6WD_}*9uastgODiyEz);FOblhUcss-{d6w5O?V0&0~`XZ zwLuy7eXJ(wdQF=lO))PNTGy<*ZMF;k$KB*0EF1+f0+;ukxFTOTgp>{`z$J130|)6)3e6g!I?D*8yIoY)CEtX??uH6;htkd$?Qkto~GM) z7)*b8xZ~+GlYU-lnfu)zrwE+J{8$725%KV6L~B(gBLc--$yPLsCM!V!YQ>Ia-^4)g__)Tn_e(muSf!k0pVqji`!;q!Hd$JpT-IXA@INDW#O23NI4hE& z%4>*i7{zx)X^T4s&pgJgsvn3!Zx6K|Oi;++J;i9USC_U--14)dUDbOz?lqE&Ma?4t2QhNl>gyu6+nCQGqt7DUIRL3F2hra+=9 zBU5X!dwXV!>(8Ge^7)rKY(o3{o6fapc<+UZ1 z{3>edS8S*@%l&4g&ahgokbnLUoWy0nyam}XZlOFH#wI5Hi&J!$xGA8Z^L%wGv^8T? zgorTe-l)7fKe@5(f5-_h!r^-HLhxHciw7CKm+`M|G2EXllsg~xS9PhrNKwq%PrS{e z7y~WlrY$7QZ@|$W6>xZpAsv@&8K9wX$Mxc%K}Z_z7e6tFVUg$~w~O_^j04HX7R&98 z(M%e1BW2C`^6io_bqVM<0)FIOY>W^j(a-%4lL6M^=#%}>Oq0*Ji7;#|-Y;8#jmj-s>wcaJLZuJ5~@dfh{R-pcU zk=_&ssQE%a`y67knH@V?U8x5m3lYvt@Lc&a_HTX^tSHDRn^^A8H2Q1S;CfSh#?aTO za8XAH?wd(k`JV1OAxuCDKfiidxNbvt|1wnulhA>GAYV58H^JEMD&)YxRxkDgrxaL zH4ZYErf<(}rNz5Qz(fpSX?kwl9)Gv%1kKjTK=CALd1(uO( z#Pe+5iHpOQo3@gn#itEdxh@#hwO{iB<%QtJH0nGIWSf3f&|V~JpSkj2q9X?ikD<9? z+B5O-HubtRlM6?y5-X}bF42@am7aZSWkN1^?_2D4iu0uRD__iN>(m9!9fzQoAcsj# zKA5PRt`aj~q3kdD-~p@GnZOh>BXIQKxbCK;v&N8NWM|DGmiyEGg&{+(6y z=uW7gT$vxQl$}thWB6MOfGO7jfdd+2cLnZ9ZP0v}o1ec2_l`m5s;lTS9zSy2w}pf# zZF2DnyCNZBxjc77(DSgle1Q#%OhTb%;~q>Yhzu3SMcn4w^#0!2Cr%`3wwCAMq3d>l z>hNzK1ynqg$*09>YAR@pM4b27TmR9JU^s(7&f#{*A}2w&lrtDsfmyybI4cJ1!O4?K zQAS-qZ@>P6(4m*J6MP<+i>Nr_4^0*XIM53ZusSRc$7UE(sW=uK8Ev-z=s|U5bxL@1 z)GaQ=VxBp1Lg*gr55bfc=%@p^Ile^0O`Yw~WwG;kX#qL2$`cyCZG+iNqpAAyW2vZg zC%Bfx!Ty`q&lJ}SRO~;>>jD)D0qy*ksp_|?c(4uhfe=P+^lv5|VRKeH2+9?9(L5tX zPoc=UyNpjO1)NA?9Oe7KOaZ-yuk1^*GV{NLSgl29P@{RPxBzwk?64~3#bl#o^Woq4 z!~l0gMNB}gxj&Ey8e70pVX_w?WD2vLr9b}nWK~J_uh=B5rajAuVCuzdm2Exqe6BT3 zTtxcY$+oNo`!~9^pFTZjRr`1sOAqzgD%U zc2s-;*8~za3)9cr+Gf#n+Z=|_h&HEYV{LLH+h#7pJjbYOKcv3=vLQYHKmFX9B8~m^ zUjNg+t;9H767O+**U_Qh98MCtf9OhMzaPSQ2shl!hnkol&o`cgEVDB)dA4WyAjI=^ z?Q$rss!HRjH@8zf?pvSwn?F<48ErNvrCmRb3y6@5##&VJSq6OhQR-dQ-ARz)(7`$Q zylCU(sCb#13~gSGSm>%jm2a^kX43jsl96_%N=B@K0J1hT{9ei^bvQ&s($QSX46&Ok zt57Pi2}1^7J&;O@6$O8_e7}B0L29w-Hq8;Ky-9X1E_T z5nNdhPO)m&9WGp7HZ5GUV1s-NFzZ(NYOB$tW1mWh{{R#CbCPOJ@Sm6(DB@!KhwyP0 z7qAD18y1NZlE2U?Jy5&y^s^5MbpH&&oJq&Imv;@+P@zt7AXdfwrcbBV_xD94TTMs8 z|LtKPK4j2r4Ew*e$Z&Z}WLi0{b9uRvbqPt5M~m5qgPhE^TRIAI|I;V`w1+=6&nsQ> z%(CPm#DG89>VtTJ%>XsFR{9s}x5z=@06R_vGxU@0JzGjhoX&=H+Ft#vAtr>Kn3EaNM55A_Vr?Zgl}_B|H0If-;3LNYLQcN+g5T)+`Ts9@Lm*pGn&!<*gqgteh#cAfbU}+NBy5iBCjlm5UX_WH{_OPT&2V;J zQ6}(~c)voU0Ru}k@8=^!6(2p?4CT_t! z1Ks>3X!M|NWPIXuNFvj~TAvE<#Pt|42OxFb(2Hm))`|YFKm}7Ya>(cr{qW{)>VXg* z%blW)Ruefr9ofdzkB})wK!m}FV0hr{zdue3yVG$D79LOwYU_*t$n~VWphgNoUTT)* z$xBw7Ag<~|C(Bi?7*!=ga8)7T``O#0r{1sTKCjG8 zI9s4K>dvOH_k%=8i>kNc12c)@B4#!bGBegH-zzJFII(32S1!$uEitywlbVm@R}r34 zfh`;U%1?E5mjUgbQOx88X?zmYrfFaIN|=}Aag7yiwPkQ3d! znMJhN>wScCiO>b9q+m29b`Wy^qR2ESP+98-~ zzujJl>bE|2qb@g*VP}wkK_Q6rv9WcUG{t|ol&dYt#FSiVB)t{Fn8ZTO%raOLo7Zvvh zHfWA1NgXlu1si_V{DA(Jf~4q*>;|X2T6BaEq2F<|I~OF z+lTNtLk?#FbSfhYGk0vu=&qnzE!$8rISEN}TN#;Mo82N91o8Q9dIR~#R&v3HN9-~( zQk#67oJy!=WbpY=d`ygwN81u?&K)Y>$e!Myb6ZB{V1bHJ=G}86s!RBcWkSVb@M*KX zsXrrx4<5gWAif5YDO%SpG&J;8m`sK0k{MP=hz0Q5By8wA#WxN^oHBv~M>uNc!y8SC z)9rFG!FX@Cc2Q1HB<*k->*UC0tI^VY* z_;#PTr(VMs>9S>c(@<`6z0C#ik@8?O` ze)ng@7k=|V!hm&W$GDz~^SdG*e1Euo<}1{MnVEXyEhKx9!FwI%7Txdf4;B{_LoRuO zca<27v^G=AZ?c6jpWg~tU)f-dY;Y-4*TS^$r)h?X8?(rl2ti@Abk7>@zJTy9-Jb=e z0&~L^$fyb2YC=jTr2CggP5$D;I9?&TULyOUq`oqed$p$fETPqK{Fc)71QV|5jMiqT z-`+rS48hzH@p`#U3`&bRN-INA0r}VpBiOo3atzcPL3IhG)#|)rzNqaVlrgJ|#wV!; z5Do!_WmUU8Z%D*kc$XLv9?MdY2;&a=iFFFt?ea-8*FDen;42@a{b)gOyA$*=ikYjS z4vW7Y>dQl_sg6#G{H*K&B7q`*f}(8OwdIAJ^uj&z_kV;n&=%N|{2EOWX!xM3NKnyW zhQq`_=_&N+Xv_Uf^HH0^jdexB^))wQez$0y_&>U7dp_2AcPwDg*jP_V8qYQEGW0uZrk}p*NwW+xSelOWRrp> zfL?q%bmq==BO{}fi-A~9wRPu^l$6xmHm57${{GPyDM`6;X0=oAn%Urm;S9!!S4oMF ze_*xHMAl`Mrx39Ez+>Oi&!PFJy-axlv#|;p@#%Q+ZizN35S{r*qLprqj=$p0G>;IV zYTCN&edDduOOL0A!>lM`DLhM5>1!r=3Ojz`ye~+R-)HPjWVn?dtsB`V!nI-7Kqu}W z+Zr+J?Wb}+XvR=?p_-QZae$l@K}d0Vm~BEjKj2?k70s!WFG=dk=}%2;oOoOJC1)Z4 zkqGIOLkSFSDvckQ+#*Q1>=u752{WzyQH}Y`@a8T+q)Elsw(vIm=X%k`8ZE@nAI>j~ z^K2FtuCVR1GV_*dfuKeQDh!AW_A06VnFZc0AVP|o09XO>oqs#SpL|Lrx(A?>c-0?$ z`DDA%KT;w>H6F~JS3oFSg!R(V%Yw5}X#7cQW83~sLy8;6rOojL7uMn0zTRP~$B#0^9=rZt(@zKz>7G&JLw*e@K4oo#WZeD>(4O+ja#&D;oCjn>S%@R^HTT=Hk7V_(ck z?Z?L{f6m|5;cy6t_l<>P_5rlkCL-bO%N6$ari=@cZGnfRnPkq&)TunE-&eoIU7oHs zLh)pB{Og&@#$F zgt~f?o?f5Io3Yh$x>21&af{|z4e0Mj*<(!yJbIgxf~Dj8iba^MQ~v=#n`c4&f7DvT zc>Z&ghy0N@zruAetyopUPD2w0rQZ$F0+AGz_2yMD@DYDxO&~t|zec5R+4g*DzCCFQ z<9GMRRI~_v_j0fBMjLrCO~*>b)NMTCrgD;Wi^zYg+a>}cAjo#KIVnRZvVoLq(ljSD zxbf>9Q@f{iP7>s}*yH)k3Nif9WK_i{$bpYSjQ-NwXa;$acAamj3SK{3^EkFjL-j@$>T%EemlA>DWbLm*5^5ccIS8k+#%r#Sc zWee?=oIxBQSKFXI=1Gl zWRDNalSGmW8aEA_(Rm8>GQq;X+W^^TYwew#ow;H%GP^I}BG;G>Ej`e^e&Zgx+~<3C zTZj1bHKOGR99gh!~Zcr_kvefICfp@V3n19f^M6YXk#>y=f>fh)Y$mk67|%lM|mv9UTR70tA9T9 zQeT9@O+BRf%K6BwO~D*hhFip&c)d*AL^M91p8}s8NYAqT z(EPHgr;G(GZuk5+`R}f|yZe`Bbk4zrw+sp`%e!oozqe)(U+^drQsNL@Azr-R_~AVn zy_nK*`+*2&*66I60@{6yr9~nCypyEyDg`#fxDb71Wimd9#hguIxTP!Fn2a)~ua&-Z z_+ga}dna^tzs6U+WVRotX~7bpNu_)%mdeJ)8C%gtA>AND-@e_QGw3Ejwnld7P*!7OV>-_TVVS1fkIoeCr*6^I zPEB%HJzReM0NU%ju#ymD>n#>{s?^e|qWw4>tx^tEME!^fy9vA>4}!VfTzs+a+Jr3*!a zo7J_oD@Ic+KO5&o>*lXn=o1vNdLzn6O!$Op`Tb2(Y^kUV;kvmnL7d)yF}M~nBLOTL zT6_<02Ug>DI{}^7Tg9v_+IZ!K2;IYz1s6ln13DEyoD@Fqb+{j~Zb1g4qNmBge!IBb z-SiRA1|%@h#rV!mT>C@iG9{I%{{$<|qVpwNIGLFlk7jY_mjravDlpLmF!!uh-!B}s znC>g%Z0F@u&5%!4Ewc6+WfRb6O%I8-tF`jJU-_CM!@+)%#N#gS84NGB334f&wL0u0 zJv}|ieU`l5R~y+uLd1ZS-fO>ZN4dZ)zHN)yy`P`v_9|;Zj6$Tp8MGv}l(U-`$0C@x>-cF-N#)a*o@*o1gJ zc|l21w+N+g?Bh?$)LjFL6^@rW%G=qkrmlKjadC`?ejk#D9>VPka2gS{)TA&G0V-7ud84$ z5Fhm_UrYH93?9E_G3p)JH%^>*0xXL_0mAj2>Tfyp<-8d;H9-yNcXse?JR>oQmv(#R z#=U_yufK7qbc-#^Cpa7bx6CfdJK>gq}?A}H85mYuZ*{V@E5`l zw{36Ob!6kilyHEY-4mfb4}X5r%`a$|#FPN}9~LZe;g}Od&9%W7x9{Ei=JF;wD1BEF z>g6Op=okYrQa6>m_k3t*yS{*2l0tQ~CskS@CsbFxfDZ{7?z%cN!K9r#r@F{!X&uLJ z`iC#^TK1H(U?h4Rsc~=H?x2s;{ic$C!CZLy&r*!YMyK*%YFl0GJ-&^UvIGiF5Tvzp zN3*o+Wr5L%K==cc$8e5E#f zH-PJ~55l!A;|S_e;$TK1aZr{KJ<_{85T}x^BS{JiNgDoWD2B0aVkZP}{qUv{xOrEy zK>}C)M|r);#dGc3X?rAm5RlN$d_GA@vc$n3u!>=q%VoIHo31G{qd5xv*N4_QWAn4! zDC^FiY9uF;}hYG6ZHAFb@uB>K(DxX{<2=3S9#n!d~>C|Skm7NHwt!Gih`Ar`}9 z1#PzgVR!&&y_)`iDwbj8dJ(cpPY42^9S$cLJ=`K5!Y_q>E)wt=K{-&om zknP`0$G&e;v5A9r9YqRxnm-XZWQ--0pCN12i3HE*J&Pjeuxig$)we;7^|-&M0LwAn~4sB$$ssR>5^rj1 zSW8;kZ`2ap9Ran3BK#&?p@^L<#gKX#t=1*m`9l^HtFQ14FJCMy$<_d1pIksTN^5JWAK_2oE#~X% z65jR)TD02Ci-aU5it1fxeW@8pSK}F~T77+e`LLVecGct}fj60&g!%AaySpF;Li8Gc z`OwH9@CoB{mWa511}f<8-*DYZ3pPAVr$u{vd425cY&cyDcOlkfG5jAoFovD+dYg{1 znmiHZ3yQ`XzfJ$T;+@00ZlJ>4f?I(I%X4Q8qVLx#sc6|0@VB#VA#8>)Rq(QZ*BI3m z8uSvDYRJ|UvVv>1f-lu*nP##|%WVBha^OD{?O&adr(`2LY<#0#dl^jyv>!x9>*@sg zk7sO3;=TI&bxne~f~^Ami@11o#G7e~!*#T{JgeHm{U0wA{A(Mj%61+{mJ?BCT_$Q$wx&wW~3*^r2MO2z0m(p5O%Sn%GU zl@k|$Pf*a+Jd4RU(zlWsw+H?q^CR|s!yW!KHPzTW>W;3FrlvIYVtZxfP{ggM<>c6a zmj?(~4H1J>IaXQ!v@RSRJXGU*#_4@(+~sh7I%8v9Ax+H-dKrh=*i1WqL9%7W) zrktA}kYFeF__4i20vpxE^G{Y5HU>)e4ytL(Ieqvbee`IEt5=xQ9o>+GP?YV5D;5VX z8lA?fEE-RtYXvrSa3ntiEhLq!B)GglTjD`gvN(~)tkaxG4Y7E0%V1yMw#ysq8kh?A z>6s4{sSX*jx=en2Y_x=s3rcSG8%0Ti?(?^U2SjdF@oCjAy8tCSG6v>z%NuWvZ?RN4 z%i}{s5HC-%nDmhX)4FW6XeAwQ=6mbZVb35a+@i&lNiPSSpJcJMfZRI?O_zhU!+GLu z`DImpJTrFl59;{Wf0gWMPI9lBYrVvs`ywptxu@te-gdBx1t9_l_LrTtMgFGdX4nKH zrO)VZ+e6w{7pnO5smI5vsvzuI=x@ss_TB`%;NHD^Q)Rh{t&JR z{g%QI0Y|s3yEykz42Y+wTm$#8t7v_hEJ?xoOGbitA=fe6u-WNpTg~u1OIk=bnQLll zcI@^6nlq|F>6P}l$tXgB+@*Cx~@pg8Wgk|r>5jC4#S#D`==G@x0As@m^ z1+NTOuGy5s`SG$c>Yph^4}LW({sCl z`O4>4r{*T9u^cH$QBEpeno956!;dAASyyaZlR|Iu>(`K|!PxPhUT?_)8)~4m;%m#EFy+!C zoX&BgLY~)gFOBFg1A+I}N2Bh@_ZjxZIIIc14lbJSXiHCHbV@gE9Bl4PxP1Dbdu{h& z_V;p(etUL4`&5j&b@bsh;3L(8mP$QMZ?>-6p9|l&!L^gF%twIo&i1KW@3T^r`wV^0 zF7z-r>Zq$<4P@o4SAql}&E>JxIvVg@6kCuHdBwxS7YxEa4Gl6>Ag5=~P8~ek_Ewsa z>tXkikPwv^T`5a!qacJ&zUDOCK__GudDBN0x^XI_$$QAJ{W;gtPV{hnRo9EUT^!mg z7$q2CLN4#@EPeyLPqAm5kJQmooR`m;@nS9(@U(wc_W*E zU3f^qDujGmoj~-AvV-uTDWI0DjGp1%FJqcFS$MbVenLOzEBBwLz;7-A7&#p?6Ebh8=1d`wM?B2hsJG>4(?<5$IeHaoY za*dM99-hg%PS5y96(h?zi4Cp|uGj_>sDcXTgtyuEY(jReD&;SaG*dT>>*lvY16 zYR{a1IUe}>bwrci7oBe(^!gt=SL9ijZ@FOH!;9z+bn$=9<_bwdv?;eccODO;|K~>| zk&|mVtdP`9#gHVy&_lknY^1lsTbsgC={HNTed+`i|7!7c%KzLEiHcd|Jb8!TMMd$O zY``A+7e^8AM`B^Y5y)e?8RPMRM}O`RgxAegazo-+=}cSKkR_KpyD@#PB}q{LV8cgv zNgHDuj+l)$A7V}!fYHz0;e=(G+jeBaU2)nbiX`>Z+%{s#pS93H()88P{iQG2B9X2o zDz$5u`}12-U*#hkR(Blrc6ZN{?l9gVN&Z2BNk~YjjCz~n+8lk9NWgK9IsT|y@`o%h z;r9tkA6sIeqa*fXq!y{xwmrRyrtKz7b-Uf9hTNe06z4l)yRa@Kcw2v( zzkev-3LTOE`5&K9h=#uuqYZbif3iN7?u4CMske*9D__#W$}Yc=YrjIXyo_($jFGF| zq|D#GwSTxVa{Amt*`cDt`SWw3I=^gwEtC>mrDN-ot%pq*ainZQGtmxrS(vs)q zr!IU64&@PG{uxNH`dWk~3&%M)o_+Zu3F8BO*P2P0jU$ro;I~x>D?x zlbvTC@?Ld0B!`xpibXwsy(oxd^q}R9o`aAAx}b7FdF%cmG=%H@F^EIUaiip9YJ2nO zC(1}PH2g$fq;>rKt{w!&`veBszDyUUw#`te{hq2K-V|0;G)NYJl8hO1A+GI=!QVA| zQQXAXIBq+;6azW;v#Z9-s4vq7ic?oxGxT@O&+j25AON3wINBV}ZZK3{?%4pbFdZMC zANH_*$+IN%MPDN;j-9@3wO6i%B7}>~Ju>nv%sJRAdDe7rn=v%l_!bFtJJ_E<$lvGX zBcb|WJ#WB!RyN-owa3B1hs)|=))hth)ipl(T(ezR`LQEPq#dh24+Ez{9@RY*rNOaQ zvYNmdmdPU88xY-bnKM3Lnz?wvSY047@fN{RN(inDRTd>WckUdQJ-3(5TuAsR3&m9z zIZ+VVnC4u(>tjy{#5g;9Yt)4_E$7*agmjN$2wt#Zm*$HiW|3I1ilt>UT zWrA`B*=vJ?;R|pgV;TEscXu~ZYs_zp)@ECb9}rkyWCD_)-kE>wm5&c4n-(YGE3U4G zjLpoDqw59@?VwWbED71^n)^%B67jN0i29@L9%*~RT%=Tj93!`WHr#(X1GVkLlkX1p z+~j4f2aZRSBatb=XrVocKqF!jTVHdnQbH{5W@k7w(aMccVVciEzK) zySJ&MXv5p#Xh73?nPKjQ$u9a6CtlRl+%_;w_>yZ*zc$za^8man z#2p=NtU40Mrlu;~*2L6a?D*}uouchUf6`i7`Yup5L1weFhPwLsLzcI%_RWF>2H9x? zYMeGK%n3rCBmVwTsp;wT=L~qx%G#A6(r*dE`0wAPk6n1ksh1H10XB>7S34okk(&}< zlu&G8s2Q5R;d1bNlg9_p`@;?rl!-u41c)Mf*vMO8UtQ5BEsL z?CCG}ypGT2f`tL)`g#~aN@PA7fyKb#1Sq?q!88_U4x?eZcJKT5@4pVd2Bv8G#{)VhD*J)oMxb!x#eL`>3*lx@rllZ$K+I?fsNvy@H`SZ z_t)uNU#s|%Z7h;s;QVuP(luuAg;EX$n!$^}IIxyQ0cnw(ido5Dy?fKz>iILz-k=o= z_j+q#7*jESoO#cl-N==oTV3rO@D>oGvZFyq#5t63_3az;(K@U}^DHW&SGCWe$WRcC zx+Qb-hSkFWqvpY>wFN@oyP3~+&z6thzWKIiZ7|NCioL(%{$F#+RCxEuh+a#qWTZ-Y zd3o*Q$kf!-BN%?}Ps`@NKr?j{a~#kjN+qQrs(fwDcUx%qk5qPaoM>6!`E2u}1E+4^ zys_wn%vw)84Nw)54CFfOLA>oU2~7;-Rd(%F3ek5G?B6@q*`&2`u&{7g)#LGJaQob^ z&YbG?&ikIXa27oygy=*czkl!B;q8G|Y8BKVn|djGr(OD4<-9_`{j9RQLX5mk6xXk z?aQwVEdZq zcQel+im&rp)SZTy`Wvfj*8ryy^VYB|c?Nvb?X! zB;2`AS?Zgy>NwAtW}@cswNXlv(JyD(Qml1GPqsr|BPm3qIK*V2jl@_tPPJ%%jCh4f zUnM`b$zGtWxc^yS@g6?xy%jlHvC@oA_1E4?9G;ycycQhx-?cr3L=$9bZ~*sFhm-vj+4rTfmLfgej<*MJyYa9lNJlvBJF z#lphkjIbaC-Zt26*snXy<=+mUfIg6mP~bB3FM?@1N%WvgECR`bTjNEbtbTC6>U;M% z-%*BTQyaDJqvf8X*VNuz)Nei)?YO~$lzJBo@$g*)`7`mPSxrgvubJHpTj9BM2}!i! z>BbuD9Qw`JAyh=#3ERwZ?B3~xa_47rlECgx5wXH&LXpKai6>FI)S43|b=VKz78SiI z<{xsRwEFyDdeTM$i%Z9JwJBPujvQ0>7cchTm6yjJ-YBJ&`5_jhv>(>Eckgky>IJE2 zQg98&bHWBke!~h!`Sa`5@|;SX@`SLWss?GRP#9RE7brve?)F_X1j86|Wy(Emy=9Yl zhuWH)Yl8)_Uw0iXF|)ApUQ;!(GiMgC&`*23?bPfL%aCh@V{32SVST@|a>Z)rUe8RL z*D1BXxuOA;@V3iXHG5M;r1;aPPijX4PNf(=Yjxhb>xru;Ux-m_qEh&rb>G;iqS2h@ z%z(Gm#@gle^%V-#UT|r1x5N28fLC+G>UR~UEG_n0-&G9QdW?^6xBh6ynoXz42I-aG z9jV--garLFp<;u{4LYoz9vY+{Lr4*(5h|9XC?% z-t8-l%whoJOF$a%BHVp{4BJ$=tk>_Tp90bI1ZYcni57C!{hFI0T-d)C+eQ)Uhq69jYKTJ;5!uyJ zl$n`{ok|7glym!spRCKxr#3e(&$rhCN6eq`s;8^&HxI$8^ToiG_qvU@;KKp2FKAQs z8MAw+-`SGz;qQD&{{bqdN&hqgRRDYp6PonKoAl=P7Ol;AgjGX9Ksdf?F!$5>q*Ic8r~qa5wd`+4!_RYzW}{C;6_!zsM0Z?N-$ist6uG*Lcl2$Yxy zcRu5JFTlw;--{=`eM$#=n6|xOF2TsDcJJO&>3zk_vCD`9nYLp-o3;J8o4;5L8do(e zx^#K@@_;~*8lzk?BH3qPd7-~@#T2<($BI@>Ui_!ks251-k54e}^|!L!Thi6#6UIj( zm6dFo{8`cJeWG#JgS8tXBG6h{PS^3+r{Yu%)LyR(^SqYOG(C~$l!KuyF76EC5MMPV z&=Hz$MC+sf#CO0zt&+b{_>;PjQHEPNcec2$E(|aSrk+QR_4M3!_ViS|B2q5-STwvd zo8Oc#Qn=o3Ud<}g4xu|t*z!03ZRL;}0L2?w?E_R?f!*EDuy{*SReOG3^!DurJr3MfgoAp4#m96m0QdWTd=mf}CraO2 z8iDx-uafVI?Ah~YD30kz(*ccn$IZ7A+3`&y%;=Km528zUp$D8Z=eUkuc~?f=r+9I6 zem>O>D$bv{4$;$hRmr66gO0;)F*4wF61H_gM}Oj^<`!AmW{|jKbaZq8=}jk;?2@OW zqxYV+FZr~YrajYLgzW?!fs4L`dQh1a@^6t3;XYVh=3d06d&kjG2Ntp#3&bk@9_laI(9?f|AcgCN}E$qfH`Kp(Z^q3m`Qh*x|&2be@NMs2U zPe-05WCx!Bd@z1lH#Qc2&3b=3pt*{#Y3y&`(o*Pb#KuYh`+8PTK#Z3kb1z~kvo4$S z#@A(MU&G5&T$?n<)^z6SK4zX!v4zrlD%I?VK(PkV7T=rb$e=uOXe^;*s@HzD-nS#Q zmksmlP4ynZOe0k++`NKCW^<|LnwpxF9pljrI>^&HkKuPGx%XeAOzM>zVQ13wVHtoUat?@HM4a6r;hLluS9|DrMR+La-9n?EpOp=b!o$X{~ zJ{8R@_RAN_J$6LiraH2gdChqqei&;s&Ie-@?4iZ+oh*fwICTb$AEhI%Kxre9dR{kZ;<8^hlq-~11>`##| zY%(HEIx}e0-Cg_xi-=v(Or!BHsY^cnKl3L*L(-A4R?~e6a>5a^+C3AUelYS3C~8Al z#%7Tia2tZbbtx#7kxnlJtYJSjwHVIEQEFOVZ)W~=%HiR-En92pPpBW=b?CuKzB0b?cp`j$w2c|`)gtEeRNXSuiJepbtT3rW+^NTeQ2sLVq$Ut z(K7vgpH<;=x~kS~0Ou|SEgsaO;|Ll%MMvj^4rm}ib&mwl?&#a{rR_!+KjNA|0+Qy^ zbRe(*H?f$=tIw*ISDP{owSi>6ZP39`SZ1#CY+o7jF*lV_Kd~y-tT!d>NAE1igZ=*6 zU|lCb?DBu_B@BE84Vg4?N1N;%AF;M&z7~@ot*W&C#Dyre}zy1qz`)P_q}X zR+G28R?Xt0$HeVF0g$k1s{=&o2Q`0P(2&E0}hpZ8*bg zLv|qT$-%P&Ln*|NwWU2O`z|fb}o8N!p`&~Mjr;pvsNfQNLJ>lYyTxF z#>T1fSzS0KqVU4kjIU)8V2Ri{1@?o70tOh!-2&DXuKG(*{B;8`@5b_=axE>b$+)JG zYtSNf9kk@VO72In08#Tar)$-oP}kTS`5Ruxg%^3RBpS!3HzwQyn8(bHT`RA|Q^@%q%cJ-VPlZZDVw8JFN73pIwDR)v;o#SHKvb z**PW=W2B^DG=7^hi5QFg`JhwBk5}KknNtz&s8Zb&jbFapYj^Ktkx$&+2CpCvYAi++ z1)T$aXH)kumrImL)*am1s1gW+%RI{c;n3x9TlT{T!H3-r%_Yp|?3Jp&)NVGtdp9a* zza4ta{Er6?tXKLC;*CadQw8>0dH_XvpP6}_iOCPR1`%~(p$}x}#Q!u8{Po6?6iKoP zv@762+tifIP@w)aH>n@ai2_Yhv8{E>vz(;-hD{L)yu3DSrUN7&9*n=O*Bx)StY~X{ zULC*;EiJY%On0Ktq*#+v!%uI`K$>Xz?+(2qgf%oQbtTVz+EE<*s ztCo+TJLgo%ULF%q5~g$K2v0BVz9E4zf>V+VtKYPm6Lo-zy-whLly1rf`}<73f42GA zGvOM))L;FvfR*m5Z)iyMh>O#u4;8aSiqz>`bUYEU95^a?XTNnl&O^)<(QvCmC=0NaEQcWn&CNeUzwI69jst!x84uL#GrZXhf4RL>QHu@5o zvP{CTUtiE~7M6}vuYbCOA31}b7UQ{8z9KhsoNxI(E-1K`Jdc5A+Gy-_Y*QdwJ@z0H z`!B<0z6_F^e^2sOR{6o&p^ScRSOKlBA+^Wqy@9NQIsYZj(^~}=0ZqJ0OHbD>b8Jys%cvN1fh`e+VVmE#bX{S1$Ndm zwaLq?2ag_gO-&7{he)$1*=9~*oAraApGfLeW#ef2qAM#u!^e%~K%O8vB^W*DM5dV) zGd=O;chS*(hhsG5FeD7rt@(C$Zz83%cN_u=Ko#Bd>h(~}7s*QAaK>HP@hqlV_} zFB%Ctx=6be;^~Cmg)VV*^;eb~X$w+u(jfOtJxP$_bMs&3tsejijHD3`T_OD#4u(?f z(`Xk0<`k~}p+QS`)wZ_gxW0TTNu8lkK+n&=-oKplZeRTyFhbt;+a&){OPq$@suyAe zfS-Oioh)d|{w2F&klipj>e<_D9z@&jXOSH2|-A}L65wl_jDQj1s8V=})nfQs$; z)DKJ5FNyLzXxwJGl2rJ#N1Dxxo91>C5yD(eOgdFf*>%3WMleo4*ESpJqV^Bg!9zn_ z%e43ITXuiUg6!Iel=`smXaUX_M8hwGfwNsOUE4#OAUJom8_?*HgPDroXTdW)f+ zoBru+3Pk=2fW^*EI_$IfIMqwCv@)rfQze%mE21i=(sE#9MYXk}{MQLV813U|335&A38RiI9>EMR8%#Q%9^_7G4}pIg&poyYT-| z_8wq8_J99ygb+fDP>3QaiAYOBQ7IMCP(phu?S)EdllDTAB$c$Z(B6A5m4^1-<9VIN zbzS%U{~yosJlApD$9>%Q?{_8N?|FVc@Aqp8#mG^4G-jqqW%pdGPe|?F-ld+%-!)LZ z&4I)&Ec6l>d38PRz~g%&&VR;t zuh!Ln#`o*lm!oRcJ16*UKQy!OPMmuy3B9N;)kmc zT?lFC7o8q^erqt_iN&7HD7cBQB*BV?y(B4jrQ(C(*i_t}(hS_}?=# z&=^y}uq*5=#p1f%X}c3@o&H~t7clgK(3I{lpJjV~?E2Hx)EqdGT|M_%qc!!9oI|Va zGvy!pOH`D?@9Oe&g9DuMxQKlM1y(ynTCj{#Qd0}v{gI*W%(XNa z?wMjO7*NP~->~!KpPYJ?BOg9|&^JAI^JhRnfK%Q+Vna+wiCY$GV0PU8>K2aRx_5Op zuRgwc^M+M5>v+X1i~Of!rSXp2okWO)EWr~Hyyq5Pe1dHnK<1t5*Yoalbv`d%q~TzK zxOx;)HA}!_1&^uCH#)s~ z(e0=C(|o3{fF>7fSy%~Ym zbM0|lgDKDp8=4a^!mslI`4ndej3YcL;b;XAf{hdmUgExCwQ*_nb{%_-gHzgNy<-{x=g2f&-JTd?85r zS3Y=DZa;n>pODO7f2c^pf;r6Jcp7|vJqgqSAJ!`SN6b# z-6a4rUdTq?(N=g@Ibb8RApd+~pxe!2pWKzWnJA`TzqN`MYN1uWwBgsjN&MREZZNUT zFHL$)A##~>x}=Z~QBZAR?=qR2q$6cHEGNE;`CStKd`YYSZItWF7vro7C%Xe%iefxN zmI*Y)pglwO`{!^m2ICdJBIBw4hrB5Q(NW9R&(&+*Xkp!UqH(kco8VdHAFzSGh|p$? z%}rK8C3sOPYr1wE0y*WD37!TZ%km#W7Hjo4;S06gEzlm7DonDUg=HO{BD4@a{PKk# zY-{ygCML#Ki*Xd3r@gVTi{owp75Bv$a-yfcGXAzUY$8N~!#QlYM8NqpIZfxw8M z$a`_|4vWrTb%n(UO1W1w)zmt%tDV6?w`2wQBi9WV=kdlCo+~Ii@na1XM92v}eI~c* zz*(qkhFVe_khl>d;lHw<*XFc@|KlqWqBrrUsI4q*g|2`JqF|CpabLCK=NA^Nm_a>% zdHAq4x`yNdj^cIerz1dCmWIr)k&$^xDEdn!sllI5E%vk`enAozMB!LP&)T;#{(nwE zm>B-m6CjOw$7Jv2FRe>Sy!Mv>^^rAwHl;QnWkSFPky$j?Xh&dZNEqBspB0p5;sDz) z7aCQZFrW~T@kKt_y#v?H@HwGkG7rXYACSz|=_w3}8uN0m9FJZOPL9-5P?8E;@&#&y zM5VuC0YE=W9nv_42zlbG2=jQ$$$||Wp1W%n6KnzMD1obW_4j9I6f=vu&aO&Cp;bDQ zl4aEy?m2a&@&(2J1S6ia;7|WY+hN#Y=I-u}CdqSZryT%_8?=__FZRN zUStk6bfc8mPtY19F` zt02884J!pUjrQL6cOBfIXGoEPyMk9j*60hb`%pN zehG`+xznAGyVq;&sl0t&+u2_UJ7;Nv{(H{0ECAh;&p(&tQ$i_&HV9PhL^(Re-pzA0 zl9e3+(gt8pZF;~7@iC8xoezI+Bx-sHwsC6Oxgc45B?&@}#zs`F7W|(I%ngM}%VV9R zpvX&usJCLMKW934t{bSvm-B`|qCJFOejjQ&Yqy}?kgeLfXS~x{Ep0&&01Uv5R!ovj ziT9*yDX@EDW4tIW-PfEX0Y(1{y{63&i+amOzHdt9Xnvt;sa^Ai6KdhH$-zgs%}|l| z0)q4{^sP_51lsfRJt!9H{}EAKg6?N}8S@&HbcY@&bMRkcK)Aoyl`E?4Hk13{jd-LO z8W=;-l+u$|pm_-D#@$fcy?LYY9}x>|S4iZdiGCGg2sn*Za%%j=au0Ly> zpL&m_3x-{ZuGXq6c7QnZXT?!VaG+<(f-;}P8EVSEpL;yq(twIB3V%72Mcwh1BZvlY zPFS$MHZRy;u;L})q#GD(ZY?hyu?<5jp02}QLdK7pj`IbcnQs*m*&q$rx$CTRfB)>0 zC)~NH72Rs=0mypUQNJw6GmXh`jlr~&VigBYoub3njPLv{ zLquasgIe3?Be+tSiJripH5_;yw}Gv}#MISW{}}tROnS19peUY<~@R*`PVpD0E zDh99Tjg2`r^F4G>(#BT&#BN+YdpTCV`+KE#Q=-7PiqT;k`z>`@w$fI!GYDTa&_dU# z&S_YV4#~A?>X&cld4@ow}N(&n+k@iH-n3zd-)3=og4Ni{qElEgkoh4=619JU8?PA=S{8h8&??nbuze#ah0o`5r6hStjXkZE|yQ83!oP{e5g~{uUr9fI+}?zXEz8WbqH| z0@dLHsFa7UE|6zdjsTSqi2`A;TeiK+ifydC8_WWEDzmNRBCgh_uew`q`;pkhufXd(_DMk$f@>- z0&+8-7*!ZvMAD3@C-hV!i_iZOzw}G1NLcpPNkiBpP7;4RZ*c?hJ^?9<|HN8`_W&tn zBT!gzU1yjWxIQw+K+hQ|8#qeKp^yM@>r?ZRJ&(`wsMt(5M9iyg*WIAiv6tr_EN;%m zEbVZ|7stw>j%26p75U&dVN4)siqB@YUZYuy)!&zbCvAe4ZM-LW-_-n^>PyXd{kk>J$p>_stN_D1~2Y4n8Bd8@ImlmbUkK)|jaEp6!xye8-PmIVb&dZ&hLtu0~={6$(Q}1@9#ohY;<^0~g^h?hc!Sx+Hm>*H4_4ay2APA)szcH)A z0FFe!dY3L|QrwD%Yu{Hg^cACWcS?BzbT)sI%B7v-F>zMwg(a#ycp(f;3nrnt$2ktb$|gMMakudeQ*`#DR_k3rYIp+-fgxN3!;0@(S_H zUIQ|>%tC4jgAhMBJN1PrwGiHU@;mvC3AznAyj4lMs{cxcG#94SQJi|_Y{%V(-x93D zAfWI%<^rEmNMU2SE`_!I0JJ+Wm^j&wIc~r3A>L2GU%hrU{bOHR2={GlBX2IdbrEXA zp++xaNcp5~hfCGyp0?ky2GlPpsKxCVp-1K3~eANRT=Y}u-{K=ZkvwX{y5_a@1Z zMlamAKdXEA;LLThbBES|1S(@_BwxVtMM#V1>wQi??r*mxS+ged1Sco+sZ&8f4T(On z?tE&Ea`#?DZf@Y_i!proaJ28836vDXdEQmcTEUfWI#__45b+1rbf>Kx{=WcaGaUNH z6S2zO+byQ%dNE>5x^pbfF|mzo1jqmCX1W0aIPlj9=;LQ6&+B&krDWPTt_K`#!C0 zQVIoqG{9qBrgvQTH`{g9@~VtYx<6v--(8#BGBRdK<7Aq3Nm?4|%ws}s5>)j6f$HAk zt-ru%)ylmm%B;sertbCC_L3l89Q(Hy?jt+xx`5nXxB&Ja=nVOq6ekr`l2q(&!T(=G zj&|XOJt6Q~zmHKJFQ#O`_Z;l$a2dRk60owT#Dc(}s9xMBJeaBu8N@ue0sqMny+OP}Rb`iKezsU^;hlNRL^&eSU*5s9$ z53xmE$vUU5rV(D8ei4SMtD5g35D+$S_k<ZOv2m5}ukrPVE?_b?1P!SPX_bf1w zK%_!KgNcCpKZ(5~dSI<#MAfpQ3p#2Y;p&-wU?X;vF$kW1p>&OX0D)Unn;k z++)95Vy)f#3JZ6;gf{sB6q(YWS^kS#ZmbX{eM9OLy>nZm#nwmYR1MWvFGttvaKWMB_$;Cihi2n z8+4J4&aF@0j9pqGNrxVk=Y);&<2ge)7GHO|)0wF`N8*>lcCQ{Gv{3^yu6HJACbHNp z;0$wW7FAOzprZZjmvSmEDvHj6UpMnF)|D5D1P=}PbHpJ$`TB*7&ZGA#aIDrRY`-xk zE9l3^yK@wv)c`j5Qa)yDd&AHBM|>&XFnkPCh^f*d`PZ_wF!7%mOLxAJ$VkAU1D5W* z8_m8-9fsP7t8^tlVz+ns9;W=AWBBUIX}!iV!acl?l5*1WUco_;dxUlnf6z71qASNa zIPP)3*f0^AaV=6ec2!E2FPj8&{8FF#<+r@LP44bn;JyVfO|4IZMY39Bi||2VjyhsEir@jjN}{Wb&}gv2V@S4sc) zaAU{UrbK3~$`_jmm7iEemGn09@l%_hktSxi_pJ^s+wAUMjq^zi`Bg-7GHhb(pQ=a)U_9%Z94?R$AER(dwF?DTUCdSwiPe+J8wP1f4rE)$wDSjAt;1p z1g+?C+*VU0&^wJyOsGR_|D5I8V|VxaNWQp)NbW7g@BWe#reUTRE;yaQ?!rHJiwoo! zJl@YV)6nVVl90f$kH?BeM^)6lKOau6u;^`}QvQRU*-Ha$pN>LsxqS3m@j_rTRoAuu zg;#>f-&)M3G!wZ}!M$pmmYyBEI!UX#q%#&4H!9-LFj&8j zX}jB7(Q#fwV*`O)m<}?*!L2qob`<3c!T%8|5siHS7Fsid-BV_bkh>59aTnpLw_go} z+{9PA=2ZZn^{E{@bdM^0e2ug~Adv7=BqT(CVGd_~Eg!qEG*Pk!E}op{N8P4+{--Ys zhVXZWnm}K0D4uB;pO_pJg2xqvOfiLkjfZ^9*VyAE2S}yZT;BjL@gRr~@a&pVJ!uPv@kht=ihrA$)rZelPN#zt?w4l2y&otnPR3 zS4ceV+59^`0f$Q?-}97mfY*Tz*a^)x-=lLmetE|IJJmq5!AG*7ipWoxG+0cG? z2H=Vt?Qa~XB=KYS`c{>|>glO|Ns9mCjmE2=O?5AJWJQ=D4etKH)Fyl-uHZE8kL-0! zG`S%D-01G?h`yH%Jw>v~RR34!=hZb)(r2L}&lrDvnv%&z6i+@a+v_!GAl@-E+Tj^- zM*%Pb1YE3#CH$B;?yYj#IOA6MQ4q+ zk_zVVEobO5)^D+GN;A=fiEbw(GTou(?WFrT?lItpmDhavhcS`~j2M*WUMw;%};~%z_KUS0+62D$7=m zz57Z|T8!NVg&`F!E0y~B^9~xW_2(Dj{Jl&6L{-dp4G*`;#5EK!GckpoGG!CuHAEET zC<~P<4`g6{S6S*R5ITHG`%O9Q8jdh`z=xH9U>v{t*z{_2Y$qGstiTF&CHgAb0!XYE zf5j8W_TN{GSinc7rmruI3|F*$NY%XA2M5;lFHm6Uql`=hJkea(IWNS@qrW>LKE9Nb z0X*y}y3;Im%gTMiLQK0nDJf^~XlRrVx15=9@BV(}acL>8wZ+ubt7-$aUs)ACK1tL} zTpfr;{rBMX5kza*k%igi#H>Cv{70PKmcK?z7O&R!;uaZ^Xcg+#yf;%mLHpg zR&B)vF)>->?(Cl(T>@K5NqyS&{rgho26TsM^&gwSDEBnRum&wvii#7Y?}(WtCG4H|4m!;9szlBt$KBV858SWL zOAid;50xwn;s=kiwzbVRfDpUr-z;wnQILj}5D8#ehYs(XTU6eP8z3acYbgca6t2zNb?=XH$`k!Y-M%@ZR|z!h;LFKPZ2`FNIg6(r0w&w>Be} z6gfXiuz*m*VzNC~u%!qrQ0m}t?GpH;W7WK*!B?^_c%dc}a45=L zelTj1@Of152TMXOwE0lI!!`!bzKNd6Q#wO_7;Q7EJ2ofhpE$qyxwB#KYj$ga7x%p$c?RDZ zZC~9%I~&!Rs$Daa`dPjtQBPKOuV(q)h-=4IH4WGg9t@D?-;HFmCNV#W%Y0?|9;-I0 zc&_i}JdSg>GYfN?Qf1E?)-8{lAwSx7y6?tcwW@R(q7S1KV^_G3!cKK8N+=^&`Q}YG z>Z7u+<+0L?ibtMgNaDf9AJ;jEtsqlUrz{?Mj6{9P4Vs~#@%qK&Jix*uOLV3uZddEAP z4*JPNAUE0l1%BC(27yZScq zq)+v?~Wt@8IEXLWK~r?6`c(V z3lqYB8^ZK;40bniD(k<0_1Q#0k=vAZkdm40_SZ)nfnNcLMs+O*Nnb@2swyA6eOu+| zbeV&N({AaY)s&WdiaDPry+=VA!qaNySZ~CKUB5Kk?D6(ydKIN_tV)~P!3*scy~$`j zkp1*_`VN`l0Zj=NrzEh4CtSAwzQ9@s(J}$Ewx_zcZ%v5a_7z_bM3f zrBGC6DXF!jqGD%{qt{7Va7F;B0>6C5Nq{~-H{2MQUO09xbmYW&d@ctlqlhMxj4?eu zJ#tn*C#UshW;5$)MgasL(3BNlxZSyDjg2=00*~%KaqE56bhzC@ z(9AF?Sn8vhR;QzM8*W7mwzp45E7p+;WQRFA%_COnFr*+wMVpX;=T6-JQlYaZN$ED0 zRM1^8b8v$>X(2G~`R;>zdl>n|X z3#PH3H3j`O%zGcWQtP7mNU5m!voNl3NCjQAYresBx#>lebhy#`_wO5#b9MA+K~vUp zU-n=cE_mPmer*(zz7h8gk_?R^YoQUgvf8}7xJN+s0b$UNerEk48F6)9X=&>r((n3F#EAGs#A6zKaU$1NPW9%K zNk%P_^3Ar5$#uyQM$F9&*()4wMan1yLWVPfj9yoic0 zZ{0DPk7O3U;*(@q@~>p0Nf59?OdyKKy)#3M{n<$4Q|!qL!?YnutKw}*ijO}LG`=`l zp<9W0Vs+(sRM`$j4X6dIG)i~*#bkyoT3&J5eC?uSYeo7f7yNFZsM2yrpzP|BPk(qw?1W90kV~J~1|ug6q0Pvn`4;URnbhVp%8cfAp#Y_zp5?fA z{@y7m=H|EV7#mNVmg_qxVwakpeqEl$w;q!o^Mga@86^(?E;$;XLR67;#ejV5=acH< z$euf<)snmiCk<}W^$^8*Vi3cV2dRQ&*k17~l^1baJb`)X=I1RIcddt;*YBijej?=L zx_!rv%YSBqoN&A_Th${XqV5gWZ$))jG5m$ZbnZcCIN9lZ)4ll^QtrrU+?iQ)JYE_g z;}4DiaMBk-_^clx>m3N)Odj#rNp)Avc^jhMBJ7p6G=+~>7A)G8{b zHxf0}J}gGdmpP1PDSZpz2>;&SkEXdWgwcc^m_hR#MCrRxVP|8jl%P{5BZ>@kWlt!^`ax5MsnwJiPg2@h@?Hq~Y%y(Z&DeeNb&MK&N65*qU%MIR z`2f6}q0b~u-Tv*Cx`@uLO@#&ZcXYlGwInDe{EBTK6$HX&F@xLR%WDJ7#dVL zh*_K5&~WtN18JO2tGxIJb9x{ON{uUOEr}beLZ@!((|nng-zK}TaD;9cKLH1qWt5QX zCKgjQIp}J_Nh9|4)x-Orp^vh=&X8>Ta@SH+ZD!yk8Js_h<7Jg%z$ z=1rJJcfS2hq^Zf|8?_u7>8s|rgg$9gK5&!pwdr}$Fo;^jXQ`=e>o#ly9@oMAE~-jv z7Z>Y`^L|;jPn#D~p1*bHNyD!5yv?1c_AU8M@T@$q+WM3-OOnXX*1ANI*dDug&#qtRG1p%JU*?Q5m21x z_7ltmEk&&L{KN$Wz%p3z!EtT?!^ZeruG4n*NTlHrX$3j<^ZPQ^V}aptoqz3+vK}@= zxa^+w_ivTvwKyjEYeu1|cgoFOhW-n2zqhdO=Vw?-3q)9SWbI2^$cnltwD5KB$}w^p z5$|Wlt^FY?ahg@Hj=rrMQ0_5VSkQdhaX3j>Xo=qPCPZaASJ_E$%0RJMc-@+vQ9(!n zX7`5+y}^fV=G16iY09kQb{@zr$wPuhMQN!XYCf6O$K*3kVSb54h_T}E_pc65z&=E- zsL(6S=);{eUYw5E1q;*R{rdxYN(6ca>LhC4|IFzv>mV6xP)$eZ>~6#gY1Y55W4(FK z0kw(G0xTZPPd0EE-=zo%JqGRJK`sO3%lD@?(6G9EDJ^wRGbwmkr*rW#-vz|s!J4Yx zTdGENbYcS`%t$kF{#la)L-E;jet9kF^p`H#cYeP@6DlPUBY%_F6!`hKUS4_*+QI>j z+~7~PCMJ`sdZI)2O@7gQjTL;2QDq@%u0*P9{|&!0?eS{E%@seZ7~L7gx-N<@xFK9B z!EV_Y&pnJfn-P3_W*|{Wn9;o%HiZ+FoZt z2Y#Y&W-tFPW~X-PE)^LLgEJh&%?3^ z1Nv|?T@t2gH+Vo9c-g+xB-#nwN@azT{4tT z{9>U<)`AXwcLDpUsp-jH4`#mQEyopY9I=`mlP?vFsv)8vFhG~WHaWMl$bM9%HOw&U z$s4#MEG%k!d&>rw#tVR=x^Ze%-o;h2P^r1OiQV0UzRm5MlN&sY^UC(-V`Fb~eotX8 z#lE`Uzh}$Nz6KvWk+35^7so^P(`vjBSEkTL#-gGpcuYg31#Vur5g@=QTG}2$G;qVq?p|K@$qgJ%b6%E^>gXmZ#tOZR z$NsGF0Hg8@ty~{5BrVa(%1I|0_b7u~7EidHjGKu@cd+X$ciOIEjHr&Wv3wXfeL_Oc zE4Lc>v9CIfv~`HRyn_8gaCXE2j|~=%-RPRC*XzjI5h^9tlH8VRJ()m02ug)VBsHzpsec&on; zD2ic!4fb=FI73|YA;vaeXWx@%ftRUWY)KtZ~? zYrGvD`9A5*??Crd#mX|zrAyr9Gs6O;O`O8O8scr{^`t^Bo}7xH=!M8ZxjBX6wMyoj zse!r>Z|_a`7NK5w1o>fQ!X0+vGm)2PLT0e${KQ*j($sUIY!$``Q{fnB&_zD&;><&A zn`@@fxajHYOP#&CLWwk!*Mbf-gd7@PuU*sAxU)J(R<>a{gh{7dMD)Xc#_kPh`Y7q< z8JBKV$qY)o|C5FUkm%6U3Myj1*J>Oi1=YlSD3`sVW8b^$aTlKK+;+delJr>2x2v%O zh^de!!Iey8L}8vC(6+y?qImMbF~{xSF6Ox!>^&RrgWUbG#Zdv7*dSV*6Hyo3q>zSA z3n2_}$Fq37z%J!g#L?Q>W$rp#>4j)q2yQq?kjPQ;gz{2jV+Dnx=ilP4MZv z4|Js7+v+4l48DGTPFrl3U3PFn$;t<_=wkYZ>PqvzA3oPxLu@|A2`mJz#VOmOMZy(# zPQB#w3B4O6lYRDvT9gpMPA~E}{)){%0pn7%T!H_1_hL094qS#Set3r_>#naxD5r@p zEt$+bW5opj+HRRvVW;b+$JN#2qO~}%hh$h1N?!3yPvbG2D;JK1oETU zI@a$Mnzr?CErJyLyEYeg=Hpr|MJzsFW=HvlwU^Q>bXsQaL=0YgXR&=BU)_nZpoqIg)gq$XI!D?hrNX7S zK4aCUuK%!A6v=j5Ly~pse2>ZrJ$a%ai1R0mrJ`VdmUC=eTjcJK?WoQUiy6X>1+D3c zaJ$bzMLxnHCt_d5sRC##Dk6)P>DCY88vX(eAE+?|WBVa(NTd4o!w?>Sp(rU^_uE_s zt)2&jKi^ir=JHZFiW8}15t?+n8XXTyaH*+1<(q5Huw)kX+;WJ^jP{J7O4+pS5&2R- z=vQ*;laWp!4@WhV^fvXRk_2m}C%@b#|{i+qlx8BN^r0{4<1#{86 z@8w42(Lp@QXC70GiY98<^`i}B>tOLWCl2>rRiS3XYd4Vx-yTq+?n+Dl&#c<4IiMWo z=gJ=g)6sWAok800dFYhiTa8KC2Q*6BaiWWW=KjeR%VsFpC7O(^hsj z?-^)(aru}gwl(+I0joj|>)HIn6xVE8@;fgLB8@)mAt^I|cE~Hn@o`HpU{T%OlR)B< z$lsUYyGy(Ob1zFBABrCY0apd`aytT51nLW_UVYbVAh@EOJ0^GT>?*(&y``WfIS>1Q zdvI`{@F3y^9sRG*@JGigu16I7PC>!WsnHI<3Vt`sSG!g*F{v(0ZDK|dz;PwBZ+Vf$ zlnrGP;tkCCcR4P1 zd&M?3H*;!~D&twoMHm$j8Ha`G;F^rI@RynW{THiiq`P~2Jz`?^3^uT%F>0_hC@IL> zdj>6?!s5mEh{r{~ejgE|7cD1-0Hep~iQq80wGPEdon8W55Tu0wnUu1y*pI({;MsdS zK76PP;N!7AoI&QFSMiiG;(A=KsQ%@^lPRN5yV1TPncJ{uuz%<GUYa=c(hYe-gl`qm{n!@d+)_!j>oZS@~ ze$G_;Luysko;ABp>zF<4J?2=LO&sY-A3wgM-?L{i6yN+oF)++}kbvZ4#3qkF3xn(R z^LGX^F#fq*zko-G-sRSV=v39X%+cCxZm7F@~^QHzRu?^5hwj(-k2` zi40`XSb0vZE2!lz4m;HFu}7>ndXgUywzBq3=pngZT6P?ww(TTQ(#)KNf>D>5sJP_ z*L+0w^%1%7TiOe8a9|U9!dsHt!HDq7QnwOK>`rbStZ=oiz2-tB$$$+B7k~C-k z)Ak2ej?Le!hhx-0uQ47h%EC^{$vVc84eLGbPW6Ym)3*iZICn?OM9{>@A3wD;{~}hY zf#dGQ>-fgM671FI`^ertJfRn7()StPv~U~RES^2R=kt)1XJWiybjQw>~r;RKt|$a_ks;`eBDN!;}?_8!bdA|j6PzVSkMI$vq6)0(;uJ#^}|Z&eTgeBu}4 zL<8thDvbBr_phPEnq6OSHq@B##NAy9^Cv)EuG~3urSAOo#BAL`OEg z?my^Mv-B)3O1HGMG&P0-q(n^2_xbETWAIfjuPOQX1~DdAR@=+MfI5j=1(o7hz z^brg&zfHbe9$HUx3;Hs}Mi8bp6P}-QoAt(aLBQZf_oBbSV|YH{w%Od=DVtt16*5JS zFxBfJ!Mjhq8ZyE>66V!^pkSzNk3a9#as55c8DO9m1-iOcPVGIT-%NkKL8qcM3>txR zRzaPO_4SxpvjBR5=?A1Z@uWncI9Z*+Es?(-m5)9n9mm zRQ-hG8v24_myZAdI`LyHBV|YGKm43w#N_<2PtLc`+o_YzHOyO1<_k=7mbp#k91^0uCV=D4SukSb)A|>Ro<%BP^#F*2bKZ&O zI6p#oItinopu?M8#sS#)eY!Wj=pnTP{CD*yg076Fb=0$2h6uw!6NzcP-h^_7<$ zVj4mBH!E^l^<2=rC5E5rix)WHwC-ud;35cy3X_7xXeI?-qDkHHuL;}d2@Vg)(A8Vx zh%{JU6lfVz(bZLIw~D#?@JAKI6d>*wYo}S{?;rD?QT>!GIjpwaS{fKbNR}WZvFzTu zr~boo2tD7ov&M%!U%$?7%(M=c$wn!T`5S2pVfat_Z*Vn)l~By6Z`x#i@izx39?4C% zZRksWzGqcL->zwf&Q2N0fJ$1;K3B+r3cX41QaCF9W*4ED$qnJYGdA^}{0s8_xXoCf zqLRsYxLF-%g<#I(qTPcn#op+?f zVD59h{y#46uL*aa{0oodfMNB{%vJjrPkIH6guo~Zq7I-GG*Y8%Na2%|)Q1}i)VE9g zMu}S;I88xEHv54Cc60O7Z@^jM>*q0Bau<45 zp3O7ChaD|G=+usF$haINELbXKv!mr?B&Vhnguah>7t=8Bf}W*g2%p6vC)raxvTofv z(s(odQx9aaNjLw4h>a`j^ELV(J~Z@Fy~OLST%Rqt-%A){JNp5g(11o9*##PlOg zWX!>K_j!y^YarR76LuDr&9YICm;jcKKIjmF$6J^>01mC{7vyy{Xit{iiFSu!^@4C>-&n98XT)%e{4n<0uB=orA^ z0=$h3462GQOVP+#*G9*OBnHa4MCr4ss22slSdiW<40ZoOs8h%h+- za*jylf;dd(la|c49BU&4ZR6~fu(F!b3n4=JLTtS0PPf|)@nwvQa^!ms3uEN=VY2;d z-f_HWk{+udVk8|gZOP$4M=xeTyt8MTO~1uX@BZ@FtRcbwGKZhWdBz()+yp~$3;UM5{A$K~ywBI)NNzgJq_G}m z2kUpd3{?C0Jd{!lDiiyzVD<7?_(4X-!(hh1Z99?E*y4X`Am%jPRs)0fExW6IDfs(C zVr-y#%g7i|GgN(6fr+}W+;+D>R$P@`X*ES(1$jDi@OJhf-yP8pr+Ii-{SQAU<}ir;vG3VE#V8l5B&F=@`dEzQl)Z*xUZsD)oZ+*pZU*`Y&szi}2cX3X)iDe5!5_BN%Ga0DZSpMZwEx9saxRCuS@6Gd-kWG{ zs625cFGYWE*lQac2cX-eu3Sm2ng_FUZ)WJy(()qzH9lYQJczbLMA_{1T0omsepF{x zR(|*6b29SnfWVa_hG8~I74S1ksYq3AIDF>j_#T9P|Go+Cg2^Y{ z7*!r~>95_ArkW8@jWRF)uuDD@?MkD9 zO%fOPbmV+Cl?YE8-V4zjMhKpcdyW>@%EARY6G(*sEi*%cfUWL`!pBpP`jalsEK{(@ znG*#wHBrtuH_=llfeB*L{T>uTJ9o~+8?>DaIx~9rDsrl2&^}CzhW>2J$i_U@S01^Y zj!vynm=ZD3P5}YbpR^}AE?pvXaizO_qmc^C;rFHa#J6=U`Ch8<-+PSDd?=`j7>BIR zC&&uzTJ@Cl?GBic-YTbUAc0ZgF6K-TG0joF=FG*##%4d_-)2>w%Y519=$Kg=$hkqf z;xjNR$I)!na;#j4J2+icC0A6KdO@RCpMUNPL!pYo_is*Dfz%Yu4DaFKe>0K?&mTf!H-J0&N-e{h>KeK#!tb~JI<=6K4!ws)n0gw5J%~oEk zJ39}AJxfVRVZ3FasW}@a8j(f|z2<=f2h`GkgX1DAKg{zbx6%5GS16}gnX)?+ct}(i&5hcCt0oH8}&GIvdeeuf8eg79e zsR*;t+G04m@Q33;yFjE&D17)Q%|~`Y()t+x_J4%MMpAR1lAjInYt=rir zR`3z`pYh6)0vf3hm(5DBkv4N%+ASh>0noeEm0PjZA;p_-?&py54ifC!I9O3B#WqlD z$xuk&8g}}aHB*AK*gj0vM{YLnR#LJaX)im-&AkStjBAi^`}|rA&Dyad<{Y5O#rUEy z@oznUf9fie)KbVL9~!wglH6DSYN2T(tO+0pY9@euh^@Far8iJ-+hNqf9oD1Jnr)a7 z_1R(t6{{g}O)1=An&BFTt2Dj6`6i-~4CM^qG7mBUI6r(S*XzX#3c&XpNxJjZ*;fgB zxcrAw>t{6?mfa?y!Th#JzIXx%_>E+diU!&+=&WZ~ye_!CK}ZWjP(kWFTWA4w>61V9*5~P5^ zTx$F50g0GiSi`i{KF#uw?{nkA0G$vmt$r1;4cpI!`fb>%xE%>gZ{OBEwzAACY3f6& z%dR?HxND3idy|ya8JINL4R9GlShQ(V;FsEH3H0LV)iOPZjHE_^lTk>-eQixo2I&PJ z=HpnUqE*_00e+KKW-jh850zN+!l-kIR_1?LU8UY_NohL1u zI~J$odMz^%GExwdvfbQ3{9f_#(P?32*|YoY{WPJ&p0s!+Xzu#e(hAY{2mh8idZ`{dw%=BIvbsl^j8G7)f@eyzaD4Rh2FiKPJ zN2%rb0U`3(x<{S^xc}|jStn~t3RBgoD*lmArwx>ba6d}8Lu=Gmu8&Lap_eoQrk&$8 zD@G~GTA*?y7$Mz7CKCLbx64CXNvkO6c#k$N$3idBEy|7Tk>2Xa`<{EB zFrKqwBo?T}*`A>$AN;S=dcAxAx{xgURyL9ek9m&s9pq1O;J;KFmg%RKvle^var|G7 z&i3N>r%oL_$gc@`_9wlc6)<)ahXgcP(BA|hrVjHY4?BR*P-hf9R+G%ZM}a zIm>)>)x~YG#;Em^wzcxj7(Ns0^*h*4PoIL!hHGznnq^JAnww_%PZ_+ZU6U12SKujl zBWbym)y7TqSqF2iS^tsu!_n9O3sQ0|I?5^W{P>iaU;%a4g~(HKY}zyTo?PQD==EY@ zb+kCUXAe)Zo`P6+zW!NzeqTZ>^5f!O^mQ_VjzXSAA0$ABm{#(}yPbEPG2q9-M!!1| zV-R8Y7_47|@!IJLrGULw6VMnKRv6Akh((vKs48MzQd9E;*$RA|`9h6BURb+PHbMy`K_QR}wt*1ZXoQlxOnGdXk~Jk@l0g?>kEB z!=qBPuSf0_Z{;-ICKT|DPzbw=`8=LC4N+}$R zvxa?Ld8Z=Oh0uH?d1N5v!gq6#t=VU{WooN!sxq5Z}~nkgm66Z z>TpP3 zM$6$-d_ka3HoFAu4tOuu_ab%*bbYRpA@^97SUAa*WIaogATE8)tA;B}rX&~}8~Yne zVm`bqh1}TKHyreR)%euUWA0s20b_wx30@V}kK=N31ZI5 zoQA!kM>baRG?|2i1Q`-bw(Z@30zRLwO2p}L*gME72*0@TK&=eEn)N72|AoJtGkbp- zcu-Mk>G%FBhyRoD2}ljc-9foK?UB3t9t5Rs!<>ZDLnoEEzWP|*|Dm5Y;%XRboNZr3 z7D?8+^+~U;ygW!a3o@-P|1no!AJrlu)J~1E?}VLI{>*=HEnrvWdam8Uzn#qaByg)k zhkMQp&LQm0`z$ zs>dtn9PRjok-2%CftuPq#h5z3OuRY?KFreX8-A=O`Sm$I%e)Fy6zj!c{mmzyp0ABM zUy)!A#o+PvirHZO5N(c$pL}wByiiQtT12I6O_T;Q=XgMPX*bMabRLg4Q@^9jv)lzu ziPf@z5+4pGXTNJls2(S;fdt4T6j}{B2|vBAp{AkPVppo7EOsEPV6ci`UGPB&5{1B0 z{3Facw=h7G*e@kehf0-10GlugvKdVYe zSs5KT(B-2I<*r|)V_u_ZnyxMGhyLInWf+u;*#0?#?Bnho@k0KA>~PH`n~Z6Q557GU zik9z$CwmeRfpwzR&PN-Pb}%`is{Nd2!thkE;QpCy<+)LToM-4Fj=01h0RAV)DCDg_C@`<{m?yYK6*3-W3w7~anNk15oNndXq`FU z|BF=oQjDCM{C8thuyBhR)NQPg=Z;woR@fjz_W*_#xYn|;0M;XY`mFuX$vn-44Xb@{>H`zNNYs8O~f|&p93`#zNrEW z?&*T9=MbIb*^1bAKrZ>SU@M5}Mf|PqIE?}(7M9}ip_hF_25YG<*TP+`pLAr$GzSUp zrc+nK=`3bp)vGD=}3y75H!m)Q<^2fR<}urbilOeeD`FNNZJ7W<)=65p9U3C8A)+^o(c0X%$s!!TJN z&Z*w5g6*`vFyX;)*Q1N36CWtbGHI=xM9F@N3vp0Iw<~wX$E!X;+3eKXr+Q3ak%Dg6 z_;G1nxtBDDu>w|mA{m?MhRT%S2%-(J8OxwW$|5CnZ+a;G1gbXC^XJPVsWpR@6dvwn z8&5Z$ank4#6k>m~uR*?9Y&}8&7g8?_+R@@sAMEj4iV%KF>)hO2Rf6_IJ+7hig^y47 zzOr07!b|=8Go%QEsI`v@%^qP&K}x`%DaB#+EYW{461Y{#GcayItVMU~Eghu8S&kcA zerMPm^*c@q@ut}>=n=Mo3UQ+Uzibt+#{W%T9;{HJr_&@GZ)S_OnUf`Z8GS1u3&LI= z!`0uNRx!Q8~P z_3&=iW6kO3&!123b?GbfJuS)pPY075wAVI0fx=-S5f=|`lcKh^p%^u`iPeP!0+&Tx zOoL9{T%ch4RA-JP1Pj;0y>ZFDo?pg98OoOo|G&F%!chZV?`l-pW_Njc`7vy2VI+GJ zRFWNFvl5|3!R4X6BX?zF;~qd9MrnQsV#xq~AWYu%XH2+&-68`K4UGi|+hubc69gh| zN7l*&u9DomafS4cyB!@xXsO~%`ZJbSGfK+KccLozpY1I}OT=%|cOKtF%J1E1v(dc> zPNFV{OcDYe5>qPU%uG&eO1~a-t==FPUzP>Ost|i67g7qHiC;DZmWA~fj$0c{@Jz3;n|3G*7oy6ZO}yK_ zRG#08YV&kj6;k4NQht^g-rvi|jNQqz^(ZbbAnaHAORAap zvx<)VxEY_ib?EWh;`PMDy>pvupP1E}T`&!PP)?@WfBXwP8@(?sYMAb&U|+pra*W{V zPmb)_xhp3BRZB4#q#rk%b8?he7rJ@?@o*E9GOvLxdY=^2gg^mWWYOkNYPw~Y;~I|V z@A|_&d0BA~{`>8>RmtHIBuW7hx9@4av^?~2ZcEWg#p1YGN zo6&e!JU17-o333+3=9nKg9IrwRS_k~>hQbgn;B4-Ii$y`Dagy$graL#R|HoUX=OVh z9R1!HkJ-lzsR;ir)C;!qpHznyz^!YCuWzM*<-|cOpcyeEfUcNo*m4UX4Y=dm(5$&q z;^bu*iJ(jV5hF7kENFpBvrjy(Vb*DJN{IEvxM9z-l}ZTxxpRBTAHF?HesF*BagXCN z6O5E8#jgA9I6gSP(69S-_#n0K>c3oox?+7VM&1io83H3Ic>>?Mi*SO(Mqfho)3SAm zO#N0M{q37(qP2cZLflqUVM62V=ed`tPoLH%$Utw@3A*kJewtu-#3&=Bw@A;l_xl6* zC7pL%&!tY8>@M*0W7-0>?0S~d)&Zz1zIWtOi;8OB&iZW^o&hB7{SiaU_6!HNhzJ^R z92i75IXyhKko{r&y~t@8v9(_em#79S)lw`!iJenA&dwgL|MNZ4KCO_B&`h<4+v-bj zBj~!dagoi4{ykD1lCHh68Ut-!Soqz?<_|wMbfesSY5g7+rkcCB46`GNE5*zRc{&6AS#>V@KAJ>_# zI4t*;X60BhAa)xGIc6huG~(hJTDrQjfZ2ltEr<%X9A9C$yb<%_`jdWcE-vv;w|e`z zT|p8c{}73Wy=PqL$@}+Lyk5SPy5^-fR7KDr*JmcX$ z1+f>$Sduz*4GrZk7TWt)aN0Xy_eTF;@}N=o|nBslGfqludpS2IU#DQo1122vRDRQJephqqzefO4fZ<(wK4<&pb;M-aTs;^(3a4IS+d|S9? z+aeNX zUc)8%vE%Ep^3?^6nWgSGP}O+BP^Py(Eu`?G27Y~&oaRX6SicUUtVMpK{;$teonQCY zW!r?7gKsg@KYZliXXm$XX+gX8$Nxi`%|Wb-VF$21Lifbn?~zL@v$w#-8?>DxM_O*u z{FI2-=7yMV-xV=@R`S`Y``OeSL!ylqZ>O1=j28D6*%3W9JK+J3R+vG@sPd>0UN(L_ z*Mrw5!1V%{`FK#8UspGVS?MFIbIq?$iHV$CT)N%)pUfxQBDr)}G1bz5*Z2a+ht~c3 zRXE;z_5>w2XcW0tr+i8DAK(AB-G|HMV32y2N28HS#OPDuVm*3EqcSq38dN-_wWY z8M8*$UMxlQM>s$x=H^n!BRxe>E&<0f80=`HZ(4@?f&A!&etzm*UAP4 z=6x3z8sjy#!Kvr=)85U;e}7Sx&bA8tNQau{xsw49n!NKaNys>+J2 zN8W*b|50&wE8iziE+r2P3^;%HzI>Es_wL=wJ%52$@UlJA7?~5+&#e`7YpBJCYaSuu z+J{Ll0>9nG>8|UX7cL+$gq(pvc&IV{MqB#0#Bj}qeoGDcZZ|S`o@fnLcy;TP`dAHi zJJF_C&-kqWE;7XtA|WAxQCo0bQW37X_f~Z!K0QFI^hfZ~92^z@`EE4=ZcZl`0atP13}~kDOY? ztiW%sL1uu57Jk-8ICEqEd*H-M(!*#p7x9qYAMD>ubVxi3RJaBrmTK5uT36d77otB4eu^loAz=@|Qn=Le1X;{Oh%m^onb`0>d5 zdi}+_U(K0$wwn7Kw2X~4QZGH*b(dK2oD%$_^`^TJ!59Cz|8U>+uhyJiyhgUrid}bD_}mNXE||O1_uQ#&7tOI3!>jMRM$anBkuj!@g!o^vz8#_XKZ$9;Jq6LI}yhO4aCOV3xYUteiS+D^$G zOMzD46eHtKrno@l9w1?YY;XidA&+&dO_>B&dGF>d_SZ+>9;%{(0$Mk_=2!K7z2UOw zBn~Lgvff6e-jjM2{+nNry9o7B(?_1aq@|0C8T35jCQ_P{r_nyJeA%i!cj_K-e`yXE zAV!>y!-rE(l6p#K<;ZE5cs+rvB*>GZ7HEST=*>j>rH&h`kv6*WGE!0~PQLI{G%zsr z-o!$POr|`es&+%_CH~+eJ6W+dT!8KAEu$%RMsq|@1mBJEUlupc~D5_JU3h`b}rZb`B`DW zHpos3l@qgwk?=ggz@#T!bWit|E7S=`sBCsRZC(Fjq^6)(fCSR{d9DbJ=7xsS#xD%; z!fu;{eHG>LT|o-sjxTn!J}d5qdz zp~prT{1(2aWKP$Q818g~*8a(j`I3P!fdq4JU*!x=GM`qWiC;4!_4S$QlWR+~an;8I z<8QI;CY;GnYQ8wAH*>mbYJBl6M~ej?{+g%m$5askU&+2H(d%mJ%yxqP&dwr&h%pU? zwfh(CT1w;H;k?1Er5}~jbXrr5)}aD~y@>Y@PriW><097^k2+s83OFURYz_?Eha~s> zg$q~QGo_kCs)8dU+tMfF@3yP!-Hp8->b>o=?SlH`*CR}uu(~S!QVHR1rSF6DnN`jz zG6^=ey28}H3ufAS!*3fz=Y)DXvi)%1CcnLmD_WcmC4?}jcM*f{%h+g;ei>cElFLa? zYwj`h^ONfIi7|%GVJyRz?*uCX7!!!$Vj^vb!&ju z59wF04$9ph(6L=KFDWkeFZZLEYmiGYo6IyD&WFx2pjOndN|M$BPG}|*zmgl1!cFRv zkyun*x^)@Yy7}S>zDG2V9Jy|tc^7pQ0? zp(}1bGyM+y>XYMnkM`>i8Kg9S@o$vGTX*v@*}K;bWRA2=){V+MviaA<4jee}40un5 zi;Ihhqf&}TreAclwnt-Q<4+U{C3I_k+;LIXaT{6Z4OW=8vv|KQC{`~B3etDozvh2Z zX!GpEjbhSOZHeUa>8e3*O7IQ)~av#*RJUNM9VbvgnbUDF(Ll>giZ0fXbmrfoX@sd+cd-N?H>{0 z$j;0>TC*}Ye46yXi8g5PhDMKB68*t%=#6nOns|<1Px+1iefO5grNQUT`Ka#gH$9?r z0b`kIdbM4-mXoT|j%y@z5uYBakOn(I-}>ht_k}YM=F>}%pMX>Xcg35V2*o^EnOX<`<*)EI)K)ta=Nk!EvVlz81(UhRvPbzd~X6Wp^6x-czw;%QFy-8%1 z%qYdXjZXc^moFFKVeTDzishCyU?mPb;to@y1)H`sSUHsx7GBhYqxhrcHRG!K&E=Wx z9l16y!JHFWO4)0=4o}+X9SWzNVgR&obkLzD-Ngp!=?r=M= z4QaUXE{9SNiXRos{->Cef7B@0+`ZR@{tP{RpC#dJ?Z-v_4n)np4h|cqqkGe(NF4AFuMm%%IH%}x^4Y=ZkgTlRXpFo<+s__2xr)5$NaU1o*gLeCE{xfD z)9k0?TJAy`hsYDeKh2pIXQ0L+9fcNZ?Ox28plpK-4$jOkHjOjWxf$Rc7D=c{!K+lJinXc*fZ15PvE=xo?gRDHiQj$ z+wEQZC`+-Xz%>CsTpO(8t0vohf3*t8W6Kq8c9c3d08`ZKz(8abMc8-`|4P|_>5gx# zQ)_B#M-IggXwiu=Cs)*jj}H(#%|xc4@e&puBI+6Dg9YYackT$ve^gX~D#OK3K?cL@ zKH-gt`}a8}BnK;a@p(0@Bu=)bA(=3e*xj9f;a1fI5ZCXgy6yiwPR7B6W7yQtkYF=Z z72Lg7h=qIVrSpxi;tAPq~zv-MYq(0SConnAJ$gFLX z3R|-oJv?R-?~eP#=rFRfv6!sP3LNKs2!A?1i$`6$sVOPi>&q*M;6X;%pD|6q?3Qm3 zrH_34`>QW)iEgXj((2%+-CSYvo*n#zY}3kxA-0RyBteZsiihl-QM)=y>|kcMxPI$w z1GN#0a>logj@M{o2i!q55o+rkA8m%cX-!Q)Tr;e-P@>#{eQ=<*(C zOy~y>nT!c^i_mq6U_1jK&2)X4_*T;VuEL6nR$eZo51MQzc(nCbWAENth-h*&*Td4-t9I7 zPm~u=o_s67;$Hcm8#K4z|1m1GshAQeCr3bgaD4`mehNsgykz3!q}jgxa=69n>Molv z`aiS8h(I5WI+y9c1`c@v#n4f=S zd1L9az-qR=K$uEehlh9m^_HX!>-n>R0%ljSFHuS2w&ZSY6#y%M7Wavtc01Th!CWz7 zY^q-f8&JZEjyZd{xy@j`c~yTzy|15k`@xeA zCyb|Wg2jbgsxOi0xaqE4moZp_L-_ZqMDr*wh=ulsDykoT=iF@9dAzQwN$b-CW}8|3 z@s)2P?$WYi%MObDH#M60gEiD7B_-9~+TOnXi^KTTg_+~OT3Z9SczM}LkM1WW6;k*$ z=vj~aLFHfH4E*}2=TDknqHO5}&OZ;Rw+=i)E$9`7I3R;^RZz;Pd{_lNG@*F=z z!_k0-Ah1cZO*eibR{QSp|Ecj|Ch)h>S8O9REY12CXd?y8bae>T&HZ~WB`^HmiSyRIXFXQ;T_}4%pB_bwC5$H->+p+n( zcRS!c@3b^h^mIrQ=B~}a({o@m3OGrn7Jfp`WWYo&pt0x>dvPTc3gKy z?CRu%I;3J8uL=E!I3D|v(ZR^z+_#gsv)8Sl7yqgzFaL89ABZrY1L|-R9+!5%*RLIO zY!?jdHFq;~i2(8?0KoC_<#;mP(k+aTrBK|ORm)$j;c>SbByS)k`Hlk#c}~klDU#OVLmyHdFs56{iJlJ@@J1?_xg2=W+f1h<4h^7Bodv@uqaR68>|Q?sDGS^G<2(vR|K*>fz{8=*y|_C+z;Kg zo*f{0wkv%wAz2t8GNGQ&3`lM3>WYSc$}ylwgw$@Jyr?_y9qJ+gr)I;locAuWfHOw; z#DUD777+IB*pO`vjJd19OntEX^j0TF*t^0G20e4w9umou`+IjR~E)cNOx ziRZo{T#_7g?CgPgc6|MS3mf7tlaOtN8@1<0KkB?nsLIj-uAVYX@I)#@MAQQSFdL$S>~f+{7gx0Hrfqigd0|D z52%e0$%)74u@kCiLIU4Atko{#kMLoV>+0&bd*@dNu=Elv967afVcchBIdwsuxWSJ+<7ppPML|(`)WhgeJr)8&8ufxr$l3o#tEz~stLth>=gsY}c zjMi(PLdG5(AdjQyC*2`o!Xsh3Ao|v3E(0mfXvKO58n@x~Q;X)hf$2cFKIG*OOL|WX zRs@(WFDITkU-zcCILyxmfn!2hDyv)lw0pWFA|1|OS<&F zJ)QnNPhGMw?gY-1CTKG?d3HBJG4abbEBJ=E_qb_-Uv$pW`PHSZAZ$*@=d(47_F{g% z*br+(dEo;a4UJh>T`Re``;zLCzrVk8m5Uo05ApH+mr1!#&2&fKxTo~>3;oB>{mUGw zUlPmk5Y&HE(nG4G1U??c1l`K5%}h7KkAOT0Pme3WQi&HqL_O1D;SU-DKf}Y~=TG@` z2Sz5bOYw>Z3ak`t22Z6I%yXn;5YD>op61O%Vg%bZ=(AB#0BiU_(c+u1?M5!k@-;pNV+Bx`@ zt-yahn}kg4Te+W`iB)7pi$-mORPFSrfLDsP!&#+|*ODgF1aU9H8z$OnT9f0bojUHb znR)Zl7OP3_c91C{H+_w-HE-j<7^YdItKTwsY%A11Fwhkq5p~r~9!ENVFLf_>l)`T- zQGHVRL;q2iQ~4$RhMFyQk`bP7gqFl*{F3V5$9-fB4LX?oqyy}Tox#BYy2b7)6L4&n z4POQR2s`IpT$@Dj4Dv+;+pTudzky->w)rC%k+K&b+`H#29dH%x9dZ*7Y4^XwzI&MJ z^3V?fPy@l(k=7}Z6vQosi)`P%ed$Ih!h{Ymo9InQh_pI74Px`vs;^-xPS>MtR*n+r z$Qn&=FFliMGO#F%k$E$_Deib_dW_Y1IKUzdHoos;&lH$(ZzG+{s|b^#-|O?q$RXn) z2|=TOCzlez4MHD)b#*(EB0uspxKFy(ZL=WO=r5T(UOwow^#D25fK{;)@_F-y;Ao{a z)j@>tali2tRGngf<_(x>dU>B*``sY-wn8@F~qc<@b{R?O=ahAi{E-VZvMeVP8Kh(6DnF~#vj6-uNz~!n_ z%N6)0aZ=EHq#CH}Umk~JKB#vF!a7SoEnY>fMR)XPFhBo=q2vN~VDr4Cb8?4*= zeFjjc<^vTHyEQUU2an0hvc;?C1uj}(wR!uCK9`9Jr`Jg#9~f|r-Zw)dAuQ?R`U)$$ zk$N+W)EwfDJUdUMruI*ZZI>*K#U$&JFn;5z_r#0z^pi6)K2q1#-yAq;3qReR;n&O% zWConTf3fY=vhiaw#rMQ(q(TSK(Ii`MC6AHJ90v#56>!G(d-wfKjx?3(?VFlvfaLrX z_&%`pNZYZC9eOt*a`J%B>FG@T%S^n+2g=gA0V04#SyCc_j{n>ZR%`@&{|l{Oc(l$* zLgIrQ(GoxaDJkX4ry#1wY%%}t zxx4hb_Q1E%7w^GX)6KI-^vj}kv+cMI1o|bFhKiTS!s8B|{yNaEi^-nD z!YkLHL@!yaKA*#u|U@*s)&qQRx!4oBIIAVE4AY4rYZz)oKWO>LzRg zA-ofDhxKN7e-~q6y1Ifh9HOpVaI{L^p zkHfks?JI}}AhQ(}ib2?US36|a1z}<+xDuS^+zM6dT+iqGB zGvU^?2c2J8;9B0>^X)E}mlD|AdjXfgrIn5HkmLZ%LaDgUBDW>{(o_)#PxPW*zr z4Y~?&3Ep~zj)2gZpeKWY%spfeiC-y}!X!b!x~cW1PiOWI9gD=%4+j(%4-e)vUAF$Q zraizbeWYXHS6Kn*ZGXVI>udSC4n|s9(pWx2`f>R9Drt`8hI8C7cn@lXO?F%QCINu> znR@sQM`WeR#NWsVa1t9xHC}+QHPiDALAU3Ku^N4CGnYSDN~?VM;Q2^=-G@7^s%z85 zsJ6qz+g6^5Nx_yi^-a ztnAWTY!nRTJt+ZZ%p8+5P zBO5HrHG?z#lHi;jI$@`wW}J7wTwYMFvL&h0S;F%S#K9?d^gjL%Y)!Z7_DAj_t(m@; zJ9Zn_w;ni1yA=fUjK1+4aB0{*@7AFnO!a3_9FxS$W(n78iH=bQ`#CvVS{;l}Oj~?h+xI<5y-TF&k z|8q^^GcQsvs)cb5^?jG+WQ3N0oq=9!ur`1Wrs zuMA&bUsO9E8_P%~YJX;K*r)oYrzjmAG3IZ`A4Rb2yVv$526AC?+=6%V?a76NBne$M z+#v_}DZIU}BOv4?M6ioCTU4GcZ(%|7#UNno@}bt&U%#*lA%Jd%pvGXm6(Z%=v1i}< zPJ({$v-QkTLUT7X1k)NSJ{@juXC1l9WGsQw&dr6Y1h-1oMqCa$AH|2*k>1sXg5|l| zIcr;Xy~Yny0$f&%XG+HJlUA~)IV?J+a&d9NVrjUHD==7qHDRK)j7x!2Pefgpm*=8d z(p!f$br7-MU~`Vdwp48F_U+$q_NBH5I1wcDh3Ba>~4;wNcuQZMq?c` zxHS;sO!4sHSRGt595*cNydOSltvoewW-g41lJXuXBX8eYe0kIv(Cs9KHFQUyTC9MB z!!!F*La@6#1rq_|C+*CdVfyw>4FiOBv3s!Kmd^E3f=6hlJdmG|#l=N4(9^wPiBi|m z_CC(Au7!_att}9dU+cf&v3Z2)z+3tF--`#{Y82GNRLx6Hbky5V!IN69a`%oZy~T-u zYaw6Gwov{TN+kNq&6=bx@H zGl@b${t?i0PjSu4#mY`~~jZup90}hYUEF-(25k(V=?v>;K*p zFh<*_soZW%tY*lWmIvxZW%q{V8q&0^q(R6@9f@zwtw`r40x=XxLI7w(@RnEYXs)QkM4pIPs<3 zu<^rO)#myJ-zX~?7L^4ZxVhgJm*a}rxS z99MKmlaelvw$44s_62{+v`T*Qx3%in6^-s!C_E3itFv?DqCv!(TucleLTVXgfDPr+ ze|~>u8LY|vltA4Sl9rO~L&1CvNB2r>do|v_1XN(3g98&}z@v@jFVS|-u1)WTfgTBX z8jKgrw>hkO?cjV0z&{L>!^KADsp1LP09h1NKU0xM3ow;Ds$#+oYu6SfgHUWjA!q?bav3hE$zn2zoD$x@@-y5i=;ww$AOF2o`O`{RZ^2R50zIqydvL%gvB5L`l>ZYXaj9FETJ zK7iP^9`U3*0+Og~>iYXuS66`)9}GD65_tt6v>h#MZdPAYPX`*%n&$R^qk|YJQ~@MM zR_}p$7R1?wN$#edI+w2X{dGIACX2eA1eKGo4%mj}qW0ZL)9oB?lXUMGSor)sbm}sm zmZY*WmgP0M(!#=5k2+0j>E(mat@KTF%zhf@IIAy$oaEc8x{c4k?~J38n zYyPyLp1JFSS^8~5)v@XtMH^pI6_q9CDpJjrlWOcg2|Ov9D~xeIw0t9u*VdIPt1OVu z=p`Pt%mAGuuie@|*g^M|hX&~(&dxjAbhy*F=BGCLC<0-FT7_n}BC``Lk0U1?)N-h4 zY2|7oG)9Dbx9C9;{a);mztU`2Sy|*p_IoKZHk{b^O-GHI`Mi;!m8D%gCkVrzjoOb- zP6YC4{sSnZAG;mE{>j}|d-o>Unu%uPtlX|!)By_|oN~3A);11Bz(r=-jlbcvth%hq z%E(-fSIqy}oy?_Yx1E~*;PV)rL23#oIiQ#z(Pw=f+Gq+$kL;Gc+%FR&+r-M5jWB1&=-FR;QT1%(O0B_9C0j%o@mnv=9zB_d4+i?{N zrs;8A4`1DRjOCV2{;(`#+}wSPS4Rt|fzrxeP|y_ztkl@jy$kz@o5 z2D^~97>;+K=HUvR8(iG#w#u$4R63{f>6Y2_^(!&S$@d4!f|K7T!}m;iyk7gpJMnKD z>ur|Pq8Ig6N@)v{KHfMx&2lt5E`a?5Xc=RrKYpC6@aJ^WHAw+B_5=GW!^Xr1OK-0F zB>@fkAT4eCE>p8;Ru%2pjH~#izO=>K$=tjboLDDO%})wR$J}^j)it7=s8e}B0w;qZ z;G9HNs9f=cb82;P+reHk~-mhEp$_IoO z0a_#g-;E28kEeo2;hlcH7Eso@h&7!`-MM4K2kqG8_7v%wl8|mrDDR<(wYf1&KGRrIOK;dcAt9$mK-7los53r&cSwr0 zOC7H+jHPE;&+J3CXb}Y6zZdR$Mt0vvaPu|rP1NUd5Tjcw7foj-ct;)%h7vB~hmJyI z8L8I(n(>$ukyCE=$fg>B7*<_Z_d81U6Z;7Q^KWsotE9|6Myb2log;PHwnoNg0H_RTYbERt@x z@t`Z04J-xBV6t}G`EtPE7qncbW=Sx(7W6y2M)a-bNL{=j*;00v`8KZ94=B+-c+S14 zTj8iv{rOAcb3X-AP|#}9B4NyKP^uUwdl@Q)4Bb9(J-#^L^!NPk6@lta3zNYi+Aa6w z{Mq7;4*B7%V7|wo*jv;{E-qv6Tieoe8Jnr*lN+aB9OHRTuwwY=FOZZpMJMp(+Z2-?7J*%Fy8L*`;`8=xL*vwy5K*`xA16k-=#M8{K~LY0^P;OC zwiDh2V5PM7zi%e>>to6DA9lOwC##^1To^a*z&LSRMX4dfW|rXzfCT8*gptHkTB>Ie zF)dN*?eO_;rUn{nWJUG=YHQZ(%H_$*aU!4?$Yb@v$Nph10=cPbLb1SsfsJzVWxmJI zDmV$%)-lKe_Z~ZE214ltgT_0<-P~u*GyV=5!V<3h?zv)8+xZc?gj+Udzk428PH+15 z^ss@-ieZ@u8@1Y`yW{B;^e{DW^{k9*OjJQ+o@f+4(5kA6SN`+QS(Lxe317vhu{_{6 zCCFz?*Z(d!KcARjBG;BK6DDXuiQ$WqlJZ^s2ZWpukQBm`@6h>P%FxT}1<^eqpeFtH z%fpfUkGj@L(I-@eWryLd9KZ7!i?Cg!AJorfuJS5lId8I0RZGTtS6UD^a zE?8xNJ9M8wGg_*)?X9R!p#r0`A-eP;QCsE~YiYHbGf)WvcS^`AX*-v0JowuLmH~+A z*vSNda0!s=Qn~?8#F7zcl6=@k2xFYmhzJZ^^oWR1PXN)TYCDKFNn3{v4Gp7r?LXcK zz5~l)?34L3Lo>yXx`OSanmJX`lrW6Y$6Xk4nCSb+kSQyyU1F_y?-jQY0-9_IGdHMC z7+**0z6H3DGQIYn-vM;-(F8iLx==w>vwM(2uE*2<*g6^G8|_}X;j;#gafkZft` z>xV@flX|{jI8#FCwU{?ET){3@f+DU%3LOY8@*A)9a`dz}58=!ZwE#;vBzanIv72kTCEe73d~SSFIkb?5zqJl*J@){KE42 z7E!~Nj24^PRPRwY+CXjtMJpQNEF>I!vS_nFm4JZv5W4>zJ2zfMcdz5VQ}0OCNwWwf zo!t=CDz4N^Z%fnTURxYwWl7g^q2PNYY!{mc$~@R$8e_}7y-a)d{C3a{-M;%Ns_2Bw zNv34cRBweC`4r2^Hy3M`PUk%Jf^9ZvDc#)dXuS{iZM;hR_5L8e^8cU>KdG@zSA8iT z&%n#;3KrFkPa$kbs?!{-IE8?(i@{vvFdujh*u}uGeG^GMc(Oc!Rb$gw{6pjv7_;C| zzEw_+T3^xIfe{bh1fC}Swlkw~k>gdeFR?3!FvY{isp^f!qx;x0p)4wZyIA7Apt~}g z-2s#i8{?S4)!IV0VkiiZmNy-fwlE~PeQWe_s$IkIGBmg4NVeKYm}412)qQ` z`%jLs==M(+NZCy^#5tYD#C_{lv$HFW$S$+x-!x$45oTX$|MUHx93^JpT|>Ww44v{s zmHyJq?x}ug#X$<(d6dxkL8Vzck%aL(xuyi3 zz)-az)-tT!83Z)*`t>L?y-fS|eC+3AHr9HK=1TK_DHwHDh0hu@7dt5|Mlx$^mhRa% z-xSEEn)wL(g-?apNW<$?PmclzFHV6;n2}K;uDGGtBQniE>7cK#)6m)Yf!_MdaqA5} zVo7h+^T@!Kl{<5Nwja6@%gNOzr9S;5op$^>6}Ly`;pSvW;C%#fs>32IJmaYU8|708 z%4??35Wyo)ufHVP|D4iQy~J9D6QYca9@s?8O&9o>8+a&xxS^uPWiZ*sL4}?kv;)JI z^oOmNhJ!$TX`<@(J^c;LOL~D75|qq+v|YjV(Rsft$;*T@dXsYd`Sa)RHGW9iv16islw}+> z{clCu=bEor{}Dsh=4Kg=w)c8y2JyY><6@Ipsoq8)1_^EeE9e>drI-Ugmi^>-t>}qu z7fZeKh#@45=^PsQ<&QNIuxs)AALV0Sn4k~dUC5hl!_s9%N2f-zzf;D*U@wq*=84C} zENJejVE_9hb1CHe0f{{`-XJx%rAmN`onm7~B9s0Dy05?f8!j6u6alB=#QGhQ# zUJ3=-d$eKq>|`cYdfQ7cFHmx>yX*~!9FBDRL$Tw0Ew18j+8>7@#N*G0qtnU=rlhCH;;$7>-5TxOBN85n6N6LRFt} z1gDsN3iSK_l9wkwLSHac)yY(B_rb7bllAUb7n~L(OB-mqot}l#H(^_K{wIYv;?2!a z^Pfxw2Y|U54^F6I##(av{TblwPv ziiiwuMY?quzS8@&KQjGFV3cN;w#+rJ7Am_%GX>n}xK*x1-S|CFe&kei4cJjQ`A!6E zdyD_{>1b+h7mf7&C&Wn`ldz|$?OYltmoqFNY!btTYK5(6313aN03$TGg!+N~m2^;fJ& zB#ltnWCrV(gM$p_4?jAxi9w{$>EKreu?4bJIq&@NFx5Uto4-Bd=9+-d++S*Y&;5tg zYVJ*$)-qM|iFci^yQ;L}qo95{ng=U*!ImYuaejc?K<_wh^7XLXucuo3l_EOPzBJ!qKGygKrgpP~ zZ%)7?eN%Xi(B&1cT{3{W;-XDcAtB%(Lc*XY-w~=532;^XATQ;HovY35 zUo(4VSd*jC4^Fc{q*$DGY(P&M7yuEx*vT+9Y0vcSPo7u~<}uMoSIeYtO&fkNc~?lN zl%nR!tvc1d{{cu+i#hhhl)ecHDucE0_af~YnFT*)0fFGA1P2Wjr{vd-e_n<A?%v*B5FyA32!nfOHFioSeZ`mNqqr6a{^bHdCrsJ9BE43_syF{pC(zec z1(}(M06BVA7G78VL9pMl9i_y3`PgjEdeo6CCMM>*{c>gG3Bvcx-5@l(TbFE_3~kz1 zS-rFg&>mmoC$&t(GY+3_`1x}aHe>E=5Z3-VZdXBD8~HUe*YeY9Z83Rx*HnUhQWzt^ z8tdK-ji%+QD(QmPjzpll<)-En{>6-?pAa1gskq%8qc-H_?Y(H_7kV-Gb_zIy^RYg9q%1KY0s29=rJ?2c3Y;C@{OW)IXXacv0mu9wm<on{lf$$0L(ztgl*>!8XJ>gT6%2xsJuF~ zpT}q}^ zELb9Yg{}~8p%k|z`S*!mtyw-aq3~TI9L3}^0-{zIy`?=}Q=~1}zT4ZWmNodV9dwuc z6+PG(xTqZ1Bv=|%bI1cSn{TdnPxs*;@k4A|^$djC6;xhizm_cA|__^%ku$-~1j5Vp58M(mta7 z$Dh|{7+Hbv`vdwQ5BHJhad8yK&Mikb8MJ0hvgGDU!&T9Vld=QuKV*>(i^OOQ&ajMg z!7s-|s^?a`{IlacPf5sVxAjo(hUPc;ZcfJRa{qM!ht(Y@z0s=aZC50&!{brV#6)Oj ziLCJ6W4(shCiAI|P-kbtU+E0j80)vDvUKJYT)A?E$#&k_BY?%}@fl-cZyFHm3{j`8c|B8EuvjyQ&qV(3GqrS&jB_0hJ_U(YGm!L-aBnIH^wXY z$cC$*Vq$VbLU|ot|IFedoruWG?Yj@}%`GLDVV`UlgMa)naOK3`usfX9$fp+-9rSn+ zvbV6@FWzNI23O`x;og1wSf?NJOEWPr*zf-3DM&-NS7!95XjQ~U%3PL|-z_4fdzhu2 z!GpGgh~lTIo@2q-{f9S8>546yWmY#NAo9X@k)tEILpSv*(~63oz62Zbb0D_`B(Ik+ ze7Kcxns@Os7(tgS1MjY^j;9OHT#*4~?q#F~ zdh5fQ*|4yOC~wtKm!)!NO18P~8y$OSr5y(MnNPPuIUd0(%>be$UeNshvb7DVoV&$J z?wR(ob4u_{(#LbEpCDYcu+5_ht*$^s2Nkz2I|haC2I+6lzL2>?qkyqBhiFSQ$`48T;F0=pc4YvJ%v5fKmxoocV`swxTHKCAx zvlyjUdnr>f6N%fn8A|Q3U=0&*l|zeHkkBqOLq$5NWR6xFK>Y@%DiH@Jqg3rt>402pStihk=C0Aht2z z$<|4zC}d*M^|zC+zC2D-xCCDXDv6Um|6aBD+ofm1XD+*|&1=rjh+en#*O*dL)i}F> zwXbpMn{Ise>O&?kOeAzCCFTA@+up`qEC-t8yu@w3+iuKAN z>`FYr{>#+Aph{2Q^_Y2XDH*)5ETJ*w==!>kN}1pH%)m-!PqZR)q}|WV0w*GTK44HI zSyzPsI7|HKA&qX+ zFUDK;QA-K+`ud%#U1wnQu`fr@K{<)~;$Q`FreaHF!u=<;w1mLud-6(6q~|*l?aN-# zm1G#T(-^d8ObYgN*(;1p-9Pt2i*1aM4gb%NC>9H4_*=hQ>|oNnZS9HVqg$d6etsWc zp!rLc?TGWpJIHqIs(T+JcK(InzW=-~4H?k@(iyV;$NV%eM5pz(@cn4mm&PpUI5>PN z-*6k}bRrOC>e2=Aqo3yIFNki;=h+Xlk;B({k>jcRe}244IDWV_QSPFu1`@)CLXEXr zGdUuHf~Xi6*6rIjU>U?;#oOHb*;pe?^o;J+Cps+} zq{jAaYb+!rVrF^CPt_wWr`BENL~Tk3JAiJ~j~jn|HmBj0?g##jW&7mwEG4jYhx>gf zhJ>63D~=)d{<5N?9Kv%zH=Vm8AyR9YyugSXii?Xqi+Z|aWq*;YNNGZHe&O%lPJl{h z=Z5l#FSaE4M1TC4HqB!gXtHT9C}ibWgs0Qp+xz~H7ZT9a@g6?xsMYy(X}V?bUzGe{ zpWJ;?9lELSKRkz9KWiTA?Y&%9@wKYh;}9aSnOGCIM>?*uqp5pmHGK%Nk4L*~$G3vc zYaYDpdabx6Gc3(#I$y08o*U73b7*qcrmndj*wEH1dA8e+poQQK4fy=|0JU&X*fE^=A(CV5Z2J`In z4>nzwn;bBjUEEleg#sim1Idt|>m!ua(^c2kIrq{0W*M^>2+A;CoRk^=HdDtdbF=z! zkc(>=-t-I+gfilKaVAY(L2yjQEpz4c>BB_$%*uv>MUtGXs7;$TnD2DfV24P>aLP?UPlt7;?ag&|^&CrKv=ma#@3g^P z2F_2nP*l*gxG7pJ0~5#>Kx}M>!AQK_&~w-yM&g%;4{dJf#hJI#v{ETG+PWpRmdq3IsZm%=P z(IFCa|D6z3D=XTOG9R85j38+o_J5H&h%i_LAK5lPZrqHH)Dm zE=rc(*=w}afI`Oqv&DRN^X_-^j&?Ujb9kX`?2lEsNrWlb6T z@n~!1SsF|++Y75X6i%Yz&NI^=CP+#RYRg+%cKZPRKwQhm%v?z?%pJM161OsyMFl&R zorGs_DJ=3v2J@a$=RVJ}kmGuAsO19t+cdY3hLpSO(P>^A8>D;(yJ4Z6eVJrgJgVVg zhK(zn!~)B%KGMuS`?D>bg`Z#0tSd)?f>D?^S}z0;l>FORocH|(lcA^b%p*UW&+TEP zo%T3+L#1_9bIJ7mdlm@q*@(sz4?wMe&~|;VH7ge3sG!p$!C6f=X!gM@83VDv@m)IW|(xUX$N9vf@jZjYtqy$O-B))kLyw=9lh8G zcKA9hKmVgjvpt~Px6)u>b&Q;vUhL`X*S8w&11m{NfnN|hLUZ%x^n1;d?LRtWJc(Rf zTnw^wPOdFf!~k9i3X-DTsP{%Y|5FyXhzMi4s#gCo1YK-@C!KgT(QZQ!x4aFL__K=4 zo6U_@oLlSM<)aM}zdr9SKX{5$Qg5sBp=<9qDHsUP@m<4e($DQ8JgKKosUrkUlPrQ5 zb?fG{iw7JPlxc1(2DgXHlu(kctgafqAI3-&{S6h_3}@1JUOO)<(*RHHW=gT@8tZ^? zTJ4?D;Lvq~RiO7;I9J64$8{c>BZ(`O^mx{`Eye6-4|0f_Pue9gz-s zyKQx*V9~O-kO3A+W5))7;C?MG78L3EU=sxRwHXOGW?U`nE4Jz)+gvUQQ-~0FhKu9* z*RSk9zmEs=inhL`AM`j0iOkE(>~KUk8LrVixMyY$qi}>(m$0Z_I|=DI^`bvIRYC6i zWMsS_Rr!BUJ@A=Y>7&u+y2$-U(G^uearVPCtk)QdZcGue=O08P_OxC6WWp}u18gytu%t==al)F0ldHJT^?fTKG!?1}B5NdHr< zTWVL2q?tB_&vHH&>0?4Ne0@#s(aOQf>)5hm_B`TlJ9vvl836f!X6o}DQZR_Hu+7Hi zI0G*9hY{?wA1Bo8?tAQ~9-N)-z3rtoY1{Wl7H%wmzpHMW4SJJC5JuHvN6C?7(}iTWKw~V6WcY zr&dU@u~w2Q<2>`|8fdJ#MF&?`*DnrDMX#>Yylrnv*W0?~2lVc)`ugg)h)>AzBB@7J zWStBYdbH-J|2d8Dq-jnAhf1CY`)c1*ou`&&LyTLb>ty?Mt3_s=6UMs$|Kt+i$IB&N z6pm_W56xX!;dn1g-!hGvz#GZ||Aja={f_;I*V=Ujwqtg8%dVc1kZ_-cSw1hFqHK6`k2GXYXHVz{9NDam-wKA)HYNQ?8BZ#=mi^W>KxZjKotp?{8sv+EQW zaW=3ZX^FK@EU@x3OgLs=m)yUv=*;-7uPPzcJpM7hcQCFR8_V9op)PDVeXlbC3VN*1 zeI}`c4e>L00}zTV3|hv;pNk`;sH`uSG`K7@G!t%mL;@nnM-;xR^irQhz>N$-k7j~m zAGxGty6)+`L|G<9U!EQf0P-mYLK_xne10;H-^0aOdfir_M)xqcQB_LcX=@-?B!DI+%=7qPX(fsg*?(RM4 z2JX?*lYzlXLt{)|rqi@NAp{8HXSfW+0g&IDGzffhoE-bM#BPtR*3_7>DKP_h%?i5RW-C(q#-y zX%Nasszi9)Wn!!t07dD+{$AMc)g^hrUxYAu`}S=ey!OdeRKQLUs@RoT@1sa=w7ICz zz5TSyivIcrDar>yuvArmD`;99Z~QqhJUVJWZv=<78>Zi0IrAOd!!sngaof~w$s?k- zC<-IS*B{a?AK^4-7^*6&sb=AQg$)TJJ!Er33pebXR}b?)k9<(?BKAmk{G&&^;hWbf z);T(K{c%dHIfgHIkq+z*Agj&x={ZkNMXCxv(f73Wd$Ce_Yyuw`Ve*!un*PM2R?Fwb zi(BXAtNTY(LJ*vhr|>EUHRIvFRjilM$?ED9N!%akJI#}u&eN8fWDQPg#RC5s@XZn|8CvoTQT`6KE6_vor#Xp0>QRy#K(@t?b zOu*CCggxN)+mr$4(l{O}s;C61rpcs1y&M^wG_5zW4&F9kS9@FU1TIT)i};P+@GOS?^x1OA0}|TPF){6`Olv2<_f{= zDy6G?xLt&0SN;N{X+&j6Kx!%vwT?(4$HTf;T|r=b9ws<0*$til(Rxu#zIcHlh&HX& zetN~cgqb;(XQ=13>jLGC)Ej=viJyVhV=i+8sSvJ?^@v&{a}(jH67Q>_xo6It>BW1M zSEgYp=+V8F(h@eH`Hi+lm1YDlNo~r>{W)@xbyQlJ0?Kc;jNcZ9-h_`L#!+dYrU^h>RC3DsX!P}JBpVf|7LxnM6} zTqfgPA`bzk8XtU|AK^-9oj}RwB(~LINQ~Jb&`EV=cOR@)O*SX)L+@=uVc2WA#|=L| zC^t9bGSIe{-|cY1M^*lliL$yffpSnBgc8Ojo{@XpP+3%=sjMEb)h25s9lN0-^$bBZ z6xtZlDYlm}Ow-Q)PymaE0M)d`t2C9!>3mMc`6iX&700EEp|wUt0@F@wv+er}>3+Ly zZ0|4Zw9M&kQkQK;eqzV8lYv39M3bvK;q$1IT(k5Z%ioTHgi_Cq#atqn(FkUuslK?< zQeQ(PASGwbRI}JPY+4GON(O~TR3E)sT-OoAko^+=qC8`4irQ25lBSK9!iSWkR|j(5 zDeahRy7oh9YnWPR{S%EN6YjbBwG+Zc;)n5Y@43|Uc+7IM-V3Bk3|_wVEpgpG;FHQ)qT9uOlT=6I9QLe+r#34`;_MAoRIQ?*Lcga z{U6H*L_yUwc3I{uzxb%*J51;Z*kuE)ufh#N`7-wW#RZOKbNon zjbdtSrV~QbVyATD-Txxbj+9uXDW?AvAAb4^j1qcoJx>pS*dm0o_K!G@NnE&<4JNJX zfWdjZyYmAuYd-)R(QsHtjU4D68@8H;rjP64HQ9`IHC39Vkkr%^e1tn?mA!%j1GTEl zH=;G7IxVG}T3bK!;9XrzSDggck|CG)Cb?yt!QbECO@isMAVUz_AyKPr%@)X~1ZKQD z2G86c;_Q(D@a^|}bpGGc;4*=8+wZ-_c{(hCk}wFtaU+aN&8gi?sOsa#j~O%VFB~Vn zpD^V+nEEDFlj5qCaFa7NM&wXI$ylPodnnr)PQwwiBnU1`K9j-_y18nL+8 zV^DfaMMWts)$I?gE>mDMKL3!-{Ga;+R(}Wo2k_7^Ffc@ig*kq=6z*FXPH#4Q`!dzs z5eSH)hS;mFu5L{`hr%fy?bhWzwqzH4(snLk05eRDrcx=f`JS7rYuIiIiUwtsQw`R+ zaYWztQ&VR>6f$RJJ`7G7KjiyOys5lkbawfoykF@^bS`QU-aQo+a1Y_--1oqJ!NvJ7 z#1Y2mb<5_DENZI{se2ovacC9b@;I+YtpUCVw%ui^H1T*s=5?zJre^K$$nTN|mrPpx zh0XI05pE^sJiE^dDk?Ox`L}eU8me9^57fsLd~uzb&P@@}FHQTo_(y_a%erf9c$m-l z(lJo>C=8)q8GN2Wei(QDZrZnY%v(JbLs~XLDY`{$1W4iB7lTJ&Mags_FOBf4?8cyX zV-RC{EM=0l8vC|;&#qmm2`%Fj+V06#A+6>?VW#=Cu@-61c}d)f?%cUk*wfw3nVPEE z+0v5rzS*q41=>mBsFSVc*~x6|>{<_n4gN)gPdtoSyhH&_6C*@sDS%-`UHG1Y>#-a7 zOfVG+L}LqO>ruglBUz>yP8AY@6T5@2PWdMAe(?)tQZw|z`Rl@&y z$BrFFZEvX}&~Jc!Kb(Mjq9vRmcJoI@@PlCKNToN|jCU21pE(n}FdCI%KR2iWx2!M8 zSJDxI6^3#?{NJA<)hg3jx2Dijf%y(DX1XfrIYxi$W{V}L(^aeMBUs?~oON(dB?7wqTT+4-D(No%ye&@PEo+`i z<=q~4Mq8>rR4L~sU^-Y4bpCc{TLcKW+8;v$4q3`aY>HR+ZLRek931pIpV%y5(H1~? zhNJ!;Ex^jE3g?8@3Bqm;xDT2=Z?}kIPK>DCGmR{{c#d6YWL>fi8PU{vdij7`vV||Gk0~z{)<9|$@g2$ zMM`kEiFzd*;i5;5i1RzoY`wP|N&&hS?Xv0kbpnx05y0oaXJsCa)NNIF=chqCdJs$H zD9RV8o2xI_-aAU&U97hmdOZVs}tBtFF>gW zP_bv(-hAsYIA_w{l5HU~+T?u~j0xI#s!&%|fkine^wSYt1t&%E9P`$oQ19V1rb)JILL%b~Tmo2_$GQd8Y5VNb*!DEz}a?*FJ% zBthBRI!^YP#!WY&xm?@Wn1H>{ttTDewIMe+J$=s2jR9OMfmTG9F4=i@^i?vm0S5LZ zH(joSBPzr0cp)@?C_F45Zq0B@)W_s;9bCuR)|RUQ{T+y~3@_;F@_@xTa_kjrxxcK# z#CN-Je&T<*TX-(<@D{HSGKvi*+ZONnIqKt&iVB6J;^Jhy86iaK-1+D=N#a_EQ3gz7 zn4fW}J^l5o47SaO(1${$Mab=Z5AGCOQ=?zX?Car2yAG^3n`c8os8a0mBe%p&X|mPg z4w|zQ?cT6#h{crtAz5Wn+rz}N%`_dkgpO0f&!lAL!3XS`um;v}vI_KirUH6kGm zLd*y|za1TTVlfA{pcsink^DWCwuu^@V5kF~s<5p7Ub1xvxT8ad%P)TEaW1Snjl%8?XEtiw@OAmN_C$N4?#p zQ2T&V^uXtK(cV7#uf22q!*J_bu4xl5*!O#QnyG43Y{!px8h>lGz^mr^ZrJ!TQ!`r!WkIm?dBiRWxi z8MF5i+8J#{r{L=Q9ARi5AO?7=x*G=W#+&OqF-<}e)gXr=66E7gOPlw3JbCXBM~VQJ zL5#cBb*=F%z zx|0tH6pfLo>At;te||XH;7CtTca_F(YHBK~_ijfA)f?4x%9C17Ba<2Jy}vaN$d(Oc zO4JbuU}l-nlfl;Xgp#Ri8GDcpdw1Tv`VB_Vkva{=dt2H z<_9!1ybB${<~eNYw3}xr`ntJ>9pU9|(x@KDjBlM#RzYqb^FYzEFrk$s#6W?b&DaC> zSSVxUFh#mwBv;0XElcxc;jhnpnmJQvt*v?N>|}`4ss#>q*M9kQCnJLe?5G_6HwHoq z#+EMO^7V$TwenTuYm5Hs8u)rlL}^6mEY|7^R~G zuL$f*I`u-)HjR{*7v)*v>>-kSVH)T86wE4w2qlCz`OLu}IX%#OIeekH1OPrZI=Up< zKV~cHb>+f^7i#LBbjkhw`XD)aLV)kF%B~dj#8STGxReephTgez=eW{RH94iFy_|bK zIc`CR%dl}b#L7*)8~t7sJ1|l5kOF6@`s=~iy2Uu zkS)Us{nrSEWcfps^0G=wO=NP3{7NdV<(lbBHQ8>1%t*;5bSQe1wG!X6Vq&$-Bnzdy zZ)J$QYMU{$`&+V87P=eP`oSo|`;(+RK*?l%CH!ZX$QO;aJiE)q8%qxUl%CH$*Xp^| zGasXb2d1ho^_|Ay3i<3G-s)}lA4Djcn2>G!DH_z?_-#r`_Q>G(PdW~bZ&4rt)IZ%8 zrl%jf)tqqMcM-t${G~6_e>493FOGa^-ThV#Q+R|0io+dsVDgPO0z7j-PKz=(eecIS-1=$fEWZH2XS<}5 zLDh@k#S3hQjI?xhDV+)^2o0}6aW$=X-A6HBiCl5+$4p{1n;SbHvB>OAYdvdbc20WL zNZEG-4m1%@kGkLF%cG`k^F686HZVOMl@S{i#fZg}csbmQXADy2f613UH*X#iwKtN1 z!fRnTbo#Yk3BCMdCWC>`J7H4)AgjlRIFX>j(eug=>F%~9V3>D0UDo4n=#Owa>wI;; z+ztx>y5jYDLkR3g-s*jQWjNW^6oQ5iNWr>yI(^p*UFJxt(KEBNz{um;{REE6B><2N zzCWl`5BRt}OmG1+(F5*ta(7~%!~rHIZB-SOv>xl+PXz@sPs75pF%q`G|I$laySqR< zhUbPd&4HCODy?6D`p@AT@y>iwIUZJ;Wa*G0KQ^3+QeOBai3Z3x#Cbl(Zxav{JcTUn zBz!@vKM#5LN3o(q$?gt_;7?*uQ*j9#%%`v7$D1NxsTHTeNq+u0v#S_%hJonu{xj+` zrh-uo0lwv>!imj4;nI{w)Icb|RaAnB0)_?$9}_(;nY!2wwN+q`HKhK*4@_)qSfJ0L zJYD1#Y7%D^f{X7!P`Lnpy!3tx_6GT`rM0t{G&Q*_OdWAM!4cyD_oFc*v zO5@|YAno}4z-=n)_5J;EL;20sEL(H2!gx(GO4$~SHb4G4z(s&SP$^8=zXO3o^m}$| z7n&!7l3P`bypSD4p+g>;G4si>fEfKSQzDGDqPirFS$r2q-ch*vq|Sv))zVo^w?z6) zsf+a1`oz%oWFesx4QX>t2=t$zhieC|ut+uO1_ zEgvx)(Cw$S%Qc4@1XF>t^Ky5PBdj%Hyq2#%2e=mssMlgHWig@OAn8A zxzO6*Z_5Wd!eU}PoAvo5BVW95Iehr=>8Owp19Hpd6T%cPf!;J`r>AvzkZSy*)+p6H ztMd}pDSNM(kQ3=Oupc*zbo*w$C0*9T7Jo)0N%#$9K-2_@@21;*_Y9;tR9*__(NRfj zRaK@*N^LN?+&sDXhK@&jW%{Q2t@W4c{0kL#R5v&&^VQ-il9hr72P+*o9)AA*2H&^a zYgY3GAsV^*@xXRAg}~2uX@m0|{#%+guT}7KIF-FX?WgW{yB*3;5S556=2mqaD(#Zm z9F-K++lS^axctRK4bIf;(q`RN`}8O|+^x9XiWqf14SOqE-JJNA)Fd^nM|ie+W@cvT z-QC@fp#A<`FwV}wQKOa7E~2WE{j9-c4QBImW;ZKW)D+l4gTXo32t@oqjV{z5Etj~H z2+eOPFAO&r5oL82{_!_)C&p8lQ5#$mCqHd&o+@?f)M7_=9;F`dBQSLi)AC8MBh&Jc zjA}3uJh*4X=PoXv^ha`rCirB6*+Nh3S*bM7{$VK`g>%hg#7pPArlzK%rsfabcRkgb z+2&HI?UNR8Buc&rNoP~n^im&6`Rl{^`LY)EFT|ET>-QZ^?q25K`hsT$e6q$R{wF5k zFE#Dn!FPmn^z5}nxxM`SdYe{KF^bEqPNJsNqbFfC&g6ttu3`l6h0K z0c-g~VzP()@m5JX-loRCHYBhp%l{$O=6LsGi#W{nAIjaXf{P%}gskm#G5szrD~ zC+k}^K?k;jkA_#bTSi1= z8LFxqbuqv9F)^*bP)xBPWVyg-46{P@~Ho%5{Y7>*fQ#m&iv=mo8A6$$g`J_y{-RL zi9oyog4+7}`dUM&=E4a(^IUAKu1&t#$w@6qL~vv&rtHqgg#8w3iD{1d6>O}&?0Z9p z!JC?7bt>w4JHa_`@XR|ln@TI7GS#fk=x0E9rovG}^(G7KM8Z+i4+8=MoUdNJTKo0u zSNta5O5iy^WD|!M)7cT0AZ{rc{K?zU(6B-K3uYEm@LzJj=kHI3GFZc8%LX3Bw-XWr zp2WshrNk94hdYin9;(J65nYYm@P!L2`Cknm-iKR}<7iWyZTk?-_kcL<*IPZ?eL@2VkJOX!@PIPgMLTM!eK>B!Hl_wiVxwY4hGIeFJtq?vuC$oWey5ND0qRA?lBX}LD#C9 zdjI}LqJ`aQ-cN&fWkTBK*{-yWjO-mI7}R51%`x9!!04NC_S`wGH>r`&!o!_66+ zkBf<|{&Dckr4Opwh4!I2X6ydAy1T~_FI8i+mN1W%H2kYkM7r2OgNXdVfHD&Z1$5x| zAO|_eicurqo}a)HL8F6CxLUr;95)c~_Wq*f-r?^27HDhQI%mPOzYr7LmDc(Y{DD73 zpc6f&I9SvRoaiGW=pvBo0{K-E#4}S}bk$RxT%CDyTmMj3?Rwt3eNdAlVpCMmgxj?3 zt=g@&x1_Kn8E%$OYX%x4G`TyoQe04MxcqKL?7;7wI#3B-<>V~&L(TG}fbZdO5h0Ll z*4AXm&+tb@1r@Ogr1y9UV#hB(Pd0Cj#Elqp?_QjGmI*Rny&B!2ccH=PS7YR<0_|Rh zJ{OtaZc=bwprs7B8?MW6w>5Ii9s<~+@YUsJmgikuj%Aq! zJ1HKv{_!yqj~vD4c~o)4>K}~QQj}O=Ehy57ENp~ifc1k|!8btO?(=8yU*jpWguoO6 zT5e7xcbzS|^7Hm5k411A3*}T%_$l=u@zpc+6Y91&Y^lfnf{1fB8 zq9EW2mEhput#PNWNCh^QfbwQlqUO# zG8d7gTmG5t{W>*r*jAJ#pnSksAmR@Wq6+LBn;^MR%wxIaWL7=K)m7Pg^1U-6kZ+*X zgjilnv|lJSxu0+Nts481_xx{NC&I$C*c8;anYoO`ocIr!)?uj%S`MtF9(w+-ua>c- ztJdXM=@BF4kmF03`#nMxA|y=G58Jy6ldQR#qrp(u#d{d4z3vYNfex)Wljsv4AZ7vk zBZv(g=`WL#{9|_N+I6b;j+1JQ!n(T0A>;dxaskt`aw#n>1|NYc=(V!OS)5gi9F8rzm{|Y9|1~8JbP;A zTN%hM!QREA*Z9h?ddq+>&!NAR`SeIqxGvf~nHKF%;k6m&t>)ARP6a{t1?Ac+7|STc z{9z^~mp{cX-31;-1Z$hbT?e>;XyU%2qU_Ew$$fBqa=|CKB2w3B)^=z5r^=d-sHl zIx@|mVVJ*i*gt@(3OrZYU5V>iCOWzvb1LB9D=;P#6Z!<-PuM@7KgSaHL;C%-cw=E@ zO$`H1X1d;U7cGpDNtByeCE zVFm?H9+5AmyP4dDZIU%VQy}QN+(UsVX%g)o4LKE+NMWmT zbl5<9(vH-rp+^&pkVC3acD{n%$yldY#~H8_8m?l7EiO`{aIv1_nV5tIgJhsZzvy33+*i?Vt)iChe6XxbG8= zC@if>EEkxbHeO^0cNJcn$jF|!DXHw3*qqpBv@n`YIBTOC{1eQ;*a@noYX;WTJZKzZ z+{kCD5z$z|F8tu_EeYya*ecezAu@@GhHG>uR%5_+#lyWF!3iAr?{NWsvuw@g@y!+L zk7ml;Ab5^TNCeWJ6yMMA<3639WgS$Jx8J0I4jb%2=GH=CgGqxLJdd{I*g|Wo&9mL6 z(Xs8H{+Nd5fEcQ#F9WtyN`M!?tO+eGj)9R8745`k$?b0+0oB>%dOlohghnNpw3?Vk zwlk&K>^5%qN`$3lpgf`S85ED1u{SUF0evu`MPmPz%eI=pbuLNws;*P(=4 z_kVk5(x4wckD)3-=yq{~{w4U|Cgm>2r+?Z4&-nG#0p)P%O-Wz%)Eo4mxhWqPj32?#W{B*?N?1+&y((BZX8-HQy}u}05>!c$_n zSTH$K+ddmKay_|ltyEH8ouFC;{M8f_6Qc*Ymm5|HNe9IN**9+U!?oF_jnVm&=e1Gw zw4nZ2fep;#l%%Be!miDVy8~4RKB1DE4dd4M7N2VF3XYX!Me^9O;hlk%AI7Yy)7xW9 zqP88|j>D=TKfkrjJiF+T+|YJekF|ljCeCkd5R_kNY-g@SK=sAg&?$TpmDlwPf=;k0+1}OH=!)2nNhE z=n!GRYecd{zl>2Q5!ENbk|N4nsxi zxz@Rt*UIizFPO5mPBlJ2+=BbFAK5|M+msX)^+9Z-Klt!sXm43pfx>{!%fGL_ z$x19`Q=Key>P`Q_{^#4LInCx9z}h`t z<5Kt+au#|9faJ;?&lA)^SH#@U57#>F0V4}Ndi79^8T^3>YMw|(Azwp_kOKxPBI(;joT)tFI*CESem*RDKcwIb%c6L z=>Mi%yf$3Q?mU2oG#W~%&rqpiIC-DFLl)r%fPIQXPT+%xGnzm4nYRn0zwr-J|KCk! zM0L!6yFC3Gdegt#y4?Hr9Xcp36p8CS)392OFjWR_A=a9MH_)*|I`#@rPt7?%lhSX4yZIae`L@E$F7J7Gz}ZuN=%+{K^08aTnS4 z2%_r)+mGIJIs7VlQw|afqSvY?@1u%zm>U$scGAz*q?cY7^DHDf@Q)S%)12E+cjffJ z9Zw8hGWJu8dx7;F({-#85|Z~pVVIW}gWIhZW6c@>@U^ve_xyA=2Ic<)#e8f^Hc0gP z=8{_92E9?m}fddX4x0nPV=8w)Uu;0;|9Wt>SsG>M05l>jiq4y~mERE4e@* zouFHNyfhuR)#Zlf%Lrr5mJkJ_{{hDxU<@*-4<1z4Ret6GYmad2Y&3Q*Xvr$iqt5Sg z7Jo+|A8{Q*btNn)D9C^O`0-iAwf$QNYo4nn+P{B)4!p`}$~>-3!jj$(I^ z>dq+}dY5TuDR%9eZ<}0n^y$UJ9fxT1;@Z;mvqDo7Gs^$dGJ7!@H-#zVkDBQYfyRHev;qk&v+)1jGCKk! zj})25L5ykz-@))AZ1#W9hxT80)%^rEf(DSF)*x`KHrblXkqx6-Zq`<(PoGAk_0nx} zue_GA`(!wTwYX`cdaN@@nG^vX78U>O+hT5ydtf0PWk`G+ss+d${Yh$p6oP1EF9xEX zp?sa&wVd7BE8%nK%vMuxOtq{^HZju{1?in5oNT*Z=W&@IDOcx7qK&YKEO`Cu7+Ze- z9SKfO&cXeoJkKJF$1mrfADvWv9%-yuo_ykk#Qn?G9D((JHqR(N_8ENG2A2L$MbUEi znB+2LbG^f8Y|G0tj#^q>nxHbR6xdoo4tuM|k~J9%F(7+{b3zDc=xT9s`3uQa(zXn} z#?CBnB-9ZlDl6G$%Jg|;#dhUp9h7tt2%wxk6?Z-UtnBA<`Ouh{+Bes0nIveNo}D26 zd0X>FYVup%7;n9FO~;$Re-JDZ zU>Xdo|9sFtb35LU3Jo>mIs;}A**TIYr)=Z&mf!ih2h3tHw(n+Jm?*Wh_S>s#Wa*X zvV5eDPUF1+8!PK&?j^eKeUQdQ$aqV__d4&>CuC_tbfX;n%=to1z&-zW@HLfLnX8^g z*SfG&l9aR{%Vkb3&~t9C#P(M|GYJWs7~P8d?sm*af8$IWsdFK~u8%xoSNOBaSmIvAYNfMSDZKQ)zdy5=Dy9q_8EsvbMWWYiED%+C-63*e_% zqn6D!cgZr;hebVHsL&de)$S&il+-8M3C3i=3nV6K3D%fG?Yrv_{(7|hnqLKVDi8b_=3fg z=25d5Ji#A7pgtPAScfZP$1cA+K0Xg*W5AIUjvZb}dT1H>yLBwr7Tb#|s#)|2UiImk zUD{?*GTu@|abDuVGFyc>f-+avhlk7G>K^jd%_#3GphiZ|$NMF=H+SUPn1)72Bd#bL z{-FXo1;t9>22buHkiAB|h3|oy_LB#Ea~hurz|)`~bqZB7J4p%?Ij%8dz04*0AdTu-q#9Y*AY5M9@uJ0^m+ zLS!lfyBt>SHDeE+)XMP|=f%+HIw_9z*4D{IKjy+k)cC-_@4*bov&3ga!YYy-FHB20iz*|c2|9Qg~EjkqEyl3G@M~y z65*L^lXipCuhvK$?&01C`6S0DT@K#5b>gk&skl(~V3@Zal}mgI%Z8^hF%89@T`tQ# z%eJ?P<-R|(_8xkz=Iu-UQ=Kw|FTYm4iF9*PcXx7aot~?lVN*S8 zGEme!4!mp(Qt!dtbGLAZefbi$u#-x!JYB0@Bad$zJ3C#V*X*HE_)Tov?#J&ix}(>f z_X#PvQ|Jqq`?Do|XK#Gp>iA%MsLzYBoZ$QMyJgz4CvuIZXQFi^IhOwU9c`Z+MJC!7U%4+6zeEn|2-_AznIisYOMeIPafr zK2aKt-25Y@2uBc(j2oPcF0QWIBNdXdD&{)$NQ;`H(=2Af2Xd?eF{oP1t6j})} z?0#frczsXOw;xB6&&HpA^D(ERSnpp~hq%*Z@MAdt_%W{rO_#mBJ>Nn5-G12KXbR8C7Ed2fx<$tC`hJ}UI!NANAGJ&j(<_`x3 z9|%CMT4jse>INd-lJ)sh78a8Xrz0;Vnd8dNhAoHD0pSikJ+lsqDa_@}oOa;l%@{mA zINg;?#UkZ)!+mRqk}BfSV2o&6Tn%_}{=CBZjCMm)wL8pG>u(K}rYQJ4hY zQ{Iryrk`+`P9`u9`G$ntlRbyT!;W80-oI~7FVJg7A^vT<#mR@BBXtF%QOjuWNAQ&e z+mA%g&AUPMdCp^H;F#CS0Au7Si%P_1*xK6U>EpQo81dUBu(YNX;B|9f4zE(L zFoT14xxeGh#fjO>tSomo-dE@X8+s>q3(stFCv|4}Wm8EjGKF1gJ;K8?V|se)Wln5t ztPLKeF$66$0pp1Xk$$|(?{n3UAD?c(qw0aYqUwFq8mu}>Tb=l;H?nhbRLz7U<^R~E zd*Mw69^h&t`h^^K@$F2A>s9jj@ypTS8f`B9)mt5*o5!$*{epsE{NczdU_WVCDR6Ml zdAUYm8wv5}$a$n<5s_tO{$V5Wj>&v-@_XLvg}ts;nr_mcjCtF2W#ROnwPU^O53<GJPh+}>pIhYsub-7deu zM{(^_zfidFv z3WE~k0WyLg_(kLt^2JsWSt}}1Cdw^-ZhW_mU;zB9|DqC4-d@=YWCT1(*>7UfYtZ>2 z0?z#bKYwyaN=5b0%*=x)P=OG}a4&Gwlm?yak=b8HHBhesXY-vVUNX^Ww#w_x#e2 z2?;$xnabz#%c#3Ml{8;aujf;kqRHqL7>-;)-FR{y&;GL?EA8smzsU5RZjn**R)nDU zf3Rg_CC%#2o#Yx>qlS;7(JxXVUFtHSbY|AE8K5l6VVxV$!3C5l&$?9$Sb`1pfK z*X<1n#*Ls;_1Eg|!tky}Hyk(1M=>@;cP;)-UDj68-xwiSwm9T3@zY#1u$VbD3rk!L zDVYu8*y>*2NIe}|`*HjxSvVH$1ng3((Y2H5^+-D_>AeSjQEK2%+z?W3pVxtF1hH?$JkY5Eyw)&PW z@2!Gp*+Aj1iPhw^8*jD6;vxjq1ndm9#d#NtD%HDZ?0b2U+J^0l=6$@C>&e_l#KicU zii*~HjZJz#)QruKd}rTu`^!G)eu`4;-vSaBN+`429%4Jt^7Ur))bW;RYs6nIJOpEs zpRAv`@L_O~3KJM(W-evcSO@1T@gC^QMS8CLz3fE;U&lhbibRno$}^EjWarmrU_&8|IUcg03~ ztl&v)W*zF@O?$Vj^ji}D`SaUC!@@46sm^Lvw3s_=IosLjE`JIwIU8SUR$sEkTk?pL z&jyy4rqkUL{IkyK-f=cDW4*nev$&=gh6&!gh+mcz@Zlo-ZO%g(i}5ke3@zsGC>Z@0 z)6>%@ZwW=J_))w=MM>Na26|!n`}gmH!J)7B@R$g9?xRU(7v0+vb#{w$FWIBgwBt|0LgIy zjCOpyb)Yr1bpX7DtwY)wCns9tFNH>Sk1w@8yMO-yVD8k^C4Ihwptd?X52PUAnP?mN z+V$c>uA}meH7&4dw%N}t9f?~K5?hv|a=$BZe8-9Adce}5?;x>;*#R^?_*P3Nl= zJ=0Pj{%BFViX$0!U{$i8p5Fi3t(X*VEb4zDNy8XMbwc|4iGMDNqqp%H?Q5Ee&E7QY z9{;!M`%H>+6&2O$mwDLPyN<+ZWJy>4(EQ^4cSXric{geYD^Z(&?1IJ2P~ngGw^w|v zW;SRERl}U=7ptL}rfZQDTIy^1tdUyoE-p8C>V;}>o@d}PDxzUzEJ)1E$HV&OR#fbU zmZ$d3rhS8YXAvVBi3=rDj6CD;DY9!|OlZMTLII zYw)>L9$Ufwp7oq~mZioXpl5^rQoD|h;VtP??Cj*=r>Z9==SKoziy!*r$#E*n0{t?h zUeEUMiPoOo2P6apqN{@XN?WpO4M#XOUA?;OMy_h7Kvj7Q&zP z;RA8khZ{7uuM9TNc)EQMsz{k!dR1l_ofTH?Co$GwYCP)3vR}?y~z|S-tw{l ziuOSz=ubKQ<*i2C2dC+?P^xZz6$7=JsgIDMKFGfKsmyD~1-`~<)dkq^8LiMokzaH_C#aiztbVrX!j$)d&gm^+~yKGXja8n){k zG|br9Hc<-6!{w^f`rk20{!o+|FJrC-RhRG1slHPQsd7x;;aW6;p)?iQXSv zNG8YPN?`7ufY9D^X$=EO;ha~|CPNZH*&}*i8ZMK|p=>sT=mj%_C)xr1u$=Kt_7`(j|mgJD-981NCO zN9-w#cUB8d=HgiW^6bQN{U3LRhZ6uGI2rDz$P?e>+Z@5~511j^q7dpxuIoz5F?CBjLZ|Kq;z*xJ`qc zoE&ChVd0pf!om-rcn9!JiOV@kmoMLJOf?E0UP*EL4zth=p*;s5_S<59zV-SoeJ@LwQFx*oE#XiKme9FpwyG6b}a@4m%=ouRylz;A563^ywa6w zGVQf#N$zbbY+_G;Jrna6jB#-T7QHWjd*hD^rW0@S()PoLfdiN*+Uc#x@@EVI!1V_t!XQFFo@n7yQyS`@nXtDtT+5{SPs>ZKqQppo%7bK)AD1~7qe38QBV(}_r_+;iwh1ghY~ z8>6(dSU!J)kH~zTeES20$TKN7k5ZJ~otdo85tVly-U^ON%yKYBVp&L&beC0cxE{<8 z3+?bu9)eLLtbJr2(T=w50=MlCRccXC&=ot3&c7(@@`79=;HdoLS2S!nn&~s~&1S+- zI@`FfEBNj8meRP48dNn~Q-`3WZ{rN(-aH)Z zcKsSxN+m@l648jH%w#TwLWUHXL#Bj8hD?=E#!50zNs&#otb#*Q|I>fZOCyUdotAt6Z}q6(NI5$QU{~}Z_pn+4dhC3cx=2ii7iFn>o5Rq zkXuDS1vqq<`v#TvJp_Kqq5YU)+wSqwsxck`Ye#a1aDDi3$1UX=BvARInvxQ%IZ( zg)$J*LXC0!y;3}{q)%yN%b3x(_x%2BG3L`cEPQ~A>dYwdD*!lh3GZemT#%XfYUf6{ zUM)-ehfgz6vtM_|(+<&$7emDaC{i{l*pz43votDQIa|qET(Lxmtt6|HTth772KQ zIL0@)#uR_g-1{K6*8Zc@h61Kn(Y51GY{>E_GVZ;PPgLv&OzT3 z!e-iNL(>x4Ke^|jUBTloJ4OsYi>v2}GvwS0Zyx5nmuB0JNhjCNY4O@J!Lo0>gXbYF z`41ujjiSKf$B3zT{b6G~eh(4@ef@;f)s%z=O^=e)MF9R=NC_l85_Wd$O-yv7+v&0$ zR;*mnFke?!S8wa|3L7B8f=m_eSQ3Pk0JvXDa6VN$D?@+}e)rpTY@i%)CP@t64Fqe#-jc)t{TpCbEJkf$-)O zE9!HPggn#%t^ztt#V$V$s~{z}I8))QQMGfA>IfRWz`#J;9Ck(4ok!dyASIa2cf7{( zfJH_;(4*e4xUzEeS*qPZhkWK5>CCtPXaUy#xiTr_JnTR0@1p@RB_8^POPR7|)hwqD zCp*0G{pmz`=27CP>nu&0eo{Qb`BqpHYl7y77L_E9figui_rVFIBSay^eG8s`pNsaV zbi0vdUsB#%mxkPKCpO*QvHMrP87=5BaF|OoRdNg`V+N`WA{z%n=N-@rq5TT0qsino zTlXXv9WUO-@Yw*RgXr^}kDC+Oay+fNf_}=v$)`RWF6HGv-2|A}KMBI0`-;O`8;GHnCPnRUTsT)Ch>PCu z>C?+gX_?uV7CNmtR@d!1ir(&C)p!NZ?ai>MeFnQ<=kV@!#ML+>9HT3}4)+Nh@7Y8) z>@P>IWcuejsXczY%x-C@{L+`4*vFa;q+fBnS&RKm5gaS}XutU@QS}+SZ=zkE_>_;RyO~^2H(dNxvy{$=GjvgxlAxEKQzo!Jri8|=K=!7!(?DD`)FIC&*38h^Hz)ZZ#k#vi+yqO6Br5(E_9HOq;P; z%7gn`9^~%E(2A&n=b*f9H;sP93a!ThK-|$-Y(=JR;FBlL@G!QbqpPH#%XtW2kV}6C zldE87XZfXHKY{5SRj8~qSl$v3YCeXliVE$9<4*3>=|EDr3DRzFx+O2d^EB%^n}FI@ z{vxG%B2g>9@;@WV8znx2$&Mu8%0XyWFZ-rL0)KGNp0S!C#4RJEHXk9Zj{>=)3_9p{*)0Hw;ID?#bYxC<5!SvaPw zvqOmnE5FzvpUQo8M&tEmUsityIuW5)QIfhNh-ZUo*tP;2FnO<71}*`=pr=o4cq6U`(_}o}zxI&lcDPDB{)J ztZe=~++1yKt{_nQMpa$@cG-B1p)rWO#_~OT!HJnt>9bk4$Ga=tI^B7PGBU2!&gSih z8^KG@1AC-Eren>1*Nz?e6#M5z)9$EX&mier!o;SBD1GdA55_689p>kMgodv%HIAXS z)-OQBVJqet>rQ8jYq3{%5&`T)JXv{DoYTF&Vg=kdk&sd26z%>})N*&M8I~esg)Mx~ zh3(RGxDSqWWHNmJ{(ZbX-3vc4*aBjkbJwn&4d!!#0iiUrO7agyyF>r>K}?r{$o1{f z$anNZ1}*}VsPOsRz^7MK1e$hs;VmOmR_23@ADE+%*Fl~bbf-&Hg`eBnEyr88@uiP~ z{nMW8NJXa4_UNn6g4M3vZvI&2eTcStVv2GEGqA3%q9>lCYH@qs+D`Zb6nN6Sc*QnV zX`Gnr6>nlbK5>YEa#mEhXw^Tez+Nu2sU5bZaIeKomPM+}QSe zSug%-KVYGqXx`5UKeh-=SO8pq&enAg*wqPIjZ5Plgfg-+UTuURCjiHdPi{dVYr~7& z+&GOI&H*Nrk*QW~OC2kj8>uq-o~-d`t%G*T8#s4F)1c6=TtsHBf?4Gu2#RQNBqz?B zTxYp{EUNzfC7j3^)_eQJgd7qQ{AkdZn&mbE|M}R|P>bDQ` zoKv}cbfL04&rSFJBEqZhDN*Dw3w_Q`d@X){4I$EwW3_Fqt!Ry*Dj3W|nxl9ytj_MP z+DwM?I2WG7BY+lOvL(i$kmmDAJ{u|fTO^&;M1sv;Yc>FNpodwp*vC7qXY1o z>>tXOok&5!0%bGeyt6XgpQ({X7iDQAX>Tub{KUZV-d^3Wx6Ptj#uQlMD=I6A4xeoe z|1%-DijNb@8IWguwcECBBO?*!GVqQ7&;pRtHCSyIe3$OtkJk|?>+JL`FK2%xWo&Q1 znY9mK`%&;Nc-1%@9vsI~7=&i$@zUs&dde;RYEPWWEd_jt`HLG;Atbt-p2}x3RXDMgB8RWRBM{BP=aTqHTCly~u$TJ_{c*6wDfBP=4&&*_|?Z37HU3z1x zv41LWg&ski<>}p~?~EFiY?mQitB*~o+n)1bcf6C&T z^{!LOlk5!2aatGR9c%hR@bpfn8Mipnz-*^3+bR)O%X3>cJXrIMmzgwUe$N5sP2)V*v?B!hOIO$Wi~bQy z0U~&@LWLd`Ai6Ot7D|1fwNw4QUBh4Hm94vFUH0mv9=hX;5~ip7s_{-W5C+>*gZ5np zS~JOkq%Log#Uej#1z8qzUqGYkH-2H6pc%3-vtwg(1X5nE}k*}Ziud!V)ebQT48~dbo9c-;^oagka;|o_OFeCHetLqlMn_iCmJe=T3-M|`bH=* zv?Eut7p4ZRyGwd--hmEm4Qu>xeV35XLGVO{k_>ALdEpb}^c__rjTM0D;e2I?vWh6@ znjDyNPNnh*m}sPH?|1MJAjiGyBS|RKG*?;tpg>!CRyy9+H1(`h@IDJXif-Py<6fUS zwj#&IYBJ)y{%m2)Z7}0 z8G)OuHssFRkCL@EVt|E4mt)T9Vox6fig^LzAy#8WkLq-g)a_9t)IM>E(kqD37TmpC zZ~Jb|0!aphat%;+bsZv@5fR148a#cbg1uGbbr10zXY?O zw0QW77rk%ag}rff;DKo5zxqROdN00(mGzbLbo?`?_U!T9P8uYhZkqVXy#L7T;c*|) z$znhRzD#UC>O|Q%9F{4d40-X|s#%BeN%l${7@uI?_@fXdqA|s^bqdYiy}@epQtwb{ zB_$FreKItHQLHL^i`r5>4xmp(I{2G6`nqOQ=N2Z3RX!aKfSV(J>OJ&2;unh_Amy_b zUkr#^zkeBVc-aV`>|ifR1UuSCIi{a4(QhWGD`)f2!>M%mxa_>}9!mxgLH_({qF6hS_7El&Iap2($v-cwMGelt3E>j$yHY<0g8)oiKf4yW5m;qO)_2SQJNa-rBb z^F50;b*gLKcw)kNYpQZw6MW1S_E1wZ;hP~aHj|JDIh*CFNCtAU)#ql5f*`iB$&vD) zGNIvq?_Ba~_&<;~8GXpg)}i01w$)@-EBIg*v#_g1X$eK;o}AyDRB zLil?`FqrlV328rj_7%s1|7)w=5Ei1INTF>c$S#YY%0naYvq{;QS+gSy!1jw7edD*eOHPEl^2h2D7uA~h#V!3) zqEu#6-jHNie1r@gO3XnKsaKyQ6E{{eG!rEw%QY4{fW}!2t-JACNLVb*h{Fi5wmR@s zCZw+dq25?F-Fx7y7i7GUw0>z@o*H7OB;6_zRoEvm*=0Soma))ga_7$J$!EV0s7+q^ zK1i_fgyaG>!xhgbwiti>_|fzvrMq-NAUp~j7Sd+%Ki63NV!+VVi9de_fs+F2@u@h2 z+0b5t@BS1=ov>rWL%v%=yygh>!z8;jBUO2A^#5rC_McUJ@vn$Y z^lr^}RMh`e;kQ@<9CVD4(>lMld>cQdD#P3YQN0?xCd*B9&_t-E*e$dW(2;JZmQOa* z`k+jHpy}L8@pVu1)yuPkCYiRgu9>2KA5QMsgA}Ft*6)6Y0l-E^K2p!Pi-6Z-$jxfC zpQVE+^lytMU^QOluO*?)exQ16MS%Z$&qR9m&vvs+v;EG_YbUk3{GibXCC?-iwz>(} zs^(?5L}6uP?}W@pFPcIPe-EPA2$xG}jgsk~h~jdw0Y%YtF3X}6w?KfjD zCc>cZ5mni-V?{sA7tEn+|Lo}v z^8b``7Y0`B=({*?TcDs|f0XB-_BEm~jv)13m?W5OV)aG@{;9rBQ_F8P0bOYk7D8^f zI0oYW+(SvJ)Z<_ypTr9Rm6lUyRgP_c0FUv0w*2vVLu#fcHaeC59~}A}oztOjn@3e$ zIDsal2Mngze*s2@_1CT{$~7ivuwlT&&N(gg)!>6w@*QbTo{ahVYw{Ar&ox7ADto0= z+f*zCPDe&65NuYCu6LFRS`OFnb$^Vq97+E6zE>7iE0DV)ysu;eVDVJ-1Oy?6U_AR4 zsYS0&k6lC`UmdXL61Wj=qZvk7*)u4rw1hu{D#=?GubRsHmpex4LWEkna%%>vnNj-n zxWWE0+VWG0+(YeV`F$R2_riD63fVwS5_^EB((U6%vj1!XAOQZTD>=Cyz%)YB-Rk+w12~P zvXIgj$MO-^^ejwRlt6qrZ<9;TVACzD&7I7C4F|EeS+L9jg(qdH!4v zE9dZ{yu%SFLy+p7k=4JszfW8~MZe}MP@`vrom`D?nNT$5e*R3U6d!~LsWRs4l`o(t z#zsiAxJQ~NO(T|iFVWH6iz&7I7e8Ys?+N=K1oFS=*?Mjn2>Oet&Lf>G7d8`T6MC-y zlE2qXd+`Z;#k{a(izPuLq>;Tmy*w5_yV=_mNqyY`TMuAphU>H4?$vCBC1L^tvs z^GoKiqH_Yqd|QYh94#>O@#wHp} zjgoD97-OIasOALAZC)t&fYiaJ)dtu$0lvecjQN<7zzJyqc9S+v0HCm2&Sp(xQ@<3c z&ToKK5%a~LY@hFZe?-G|lu%PzH0@~B+B=w72(ppe-(*ZXGDv<<&HV+_H|t^_0lHW60`&tH|1A~_ZcqFlI=z6z{B?3HNf|c$xPlK;A1&O0Jw%CQ- z!N-7yDYUv@6NGi;<)5hg?!!n{L`5Z#fNP%fV@V|_rJSl8R+wZ%%FjNS8!mYxE3sXHTV3N6*R67d2gdCqQ248h zw!rJyttW4QIVN@4`>-))qX)7+psVg)S0)9Xp##B_@j7^a2U&>3jaDg-Lbbzn({?eG zwdEN`n%2|jp%9f}+=n51;UVm$9+~VX-3qc-XT_A~b_TXnwm&R#BZq9B_+jLQ3pYL+ z5~J7q`0>@?Shd+}>fh@S8ew^Z)k`uYX8*t-IbVM(Fo1!*6i?a}VKd#4Y7KdS!!j9! zf(Or^*QP2-&-T#7Co9lViA^ST7)9{RZVQVZ#J=9_y7Q=TIl0 zeGOT%v9fy2-_<#pE4M(kHj}OITfs?kF5mGOic0bPm{T5mqKCxnvHN4Z+-8#EHTu;7 zcV`t#t!J{c->W2q?EJT9-3{_}RU!6T=hX6d_|-~TfnGCynB$a#9Z43wDuQynkO;~u zZE$0Fc@Th^%E5Dg*!yql_NRa*E_9PaHFruTnD+_v zLPlLVJlWP|0qIjRYb2RlQ=jcy`)c@$`i49)vsTylHxV({SZcPW^cKZ%{SRqEU0(;h zvmwXU>gc$wI<6cWgzFvW(+3whXo_N}5eVZ%VIeVOCxm^nj0^M|8AB8KFj6h&b5^@0>9ECB1JN z3(>9g3mz)YBwp#Q`IaO4vvuM2$)~$@AtJ3_aaOJaNmh^xWQFWvBYaZAyj|gE}C1OOn zxc>A&`!>Y%a8Bio8Hb(j#f186qWyeb81YV_p<2s%Fm?@j4s}9Yr#tFUg>H3bMWZE| z9t@u9Sn%NcbLy6kUUxh~YGg9ZpFb#48+WL3a6@}W96CRkMVoY4S+W`^c-m1yl8ep6 z$Dx9J=1_In+taVk#b_oPjNj0rVtwlPF>mL+A>zsWD@saK=%UDIn?Wqc6NYZS?(yO( zHV7?li><~HMv1cy4L@8esPmk#GD7C*>!`=iPh{3ZA;bChdv6(%{z^3P3WO8W~KM{$h-FRY_*@O zzj*bkEEb+$fb%45(+XJrEbPwbK^B05y@Ogq#&ocHwpHNs=g|-r!dp`fmob=`(=&_f zD`u@Rw%aKF(E|Ku83Cd#Z+|V*Cou;592d1uNknae(jU2hNLV;vF=!8;Uq_js&(B31 zG|SqvkNKa8-b0o4^0F@p;YIlt+elP?XqBL%`5LLXI9n%;m7y)rHDb5+%BAwX7Q3FmNV%b9jcF>%cjR*58{zSl)d4`tr%rNi0KtqY5XB$%+* z{r>%T2-_$qD5`Ohy<)lUTIkHg1x!jQq2rNHo$<9eCAU4t#NhF?-^j=SmpK%HAq(AR zSlJ=~CJOm^K^8-@27c zzJeKi^e9uSLnTH32=?#Z-cex^S!G`|T9?{!BrM{8OL{q7k|{Qh{@G9o-mvW`RC@>( zA;n>Z#8TkUMB6;`H-2oJU`kpm+{K`<@+)`dBlU_LOoEVGej15yR9HDi4CYDDQz+yo zN54IxC@|@~VqE}4Aiux2w^#k!5<+pbc?=_7gBB_#{){Irg{HCgSz!cQM&x_$f$0L^Pic+3h=*64`7T7iX%2stcNx! zP;C&Gbyp=n+{^rQTi1CO{h%RgpW@?eoNPIMl;TJB3;o=(b-&NKU3+AnUTAmgZxSZwZ=_!A)Rvo$$sr{3x=ZgzB)ICpQ?+twD$anHb zYDUAm8d@S&HD0$9()vVj$ERhK*&Zd~CD8hvA6wj4Zr>&)($wrntBzDy%8#z>59YWx z6H_B4LOCOwdUfUCzLe*g7NS^GzJcz~Lp4;|hyDU`(<>0I^04XMswNvQ8wuhGbsX|sen&@PqPutBOWf?)jF397 zm>9m^Uh_Mhx3fC;7K|lYGo3vqV$TH#>2XbLu zHI1)H$jb6cMK|24(8DJ3?n7-?Vq|l%F@G`hUNeF2&EIekCwLW!*ds!QdX+g#o!^+~ z=rQLVr0z#gp6rrmc&NHoW(|@DHY((sM*aKo z*1i5myrp~HMB`0Dw{Y&Za@c=-UzqHyIx`mVdjytJ^gk2kx~aIeb^BFCAA-${rhPpj z>RQLh2<)>o!Og9=S5ZFB!rbyBa?dVfqcNeF(@*Mztu6oRFE#yVc5V8%I>h3dbo8!! z=j6~8P2(P|Gzc%jg>&PM$%M^xi9b6R*D+4cfX|=%iO>v)U3$u}v~(L=jzxr+5{{!3 z)c%iE(i3x=T|x!(Z>=t_1LpQ&RZ9yb{G_hjip8b*bFtS@`S_x2@V749x$1u$7v&W#kobkKXxvCX)@cEBrO_*-l`OhJt$zrdR6_BU>* zHXX2MBe1@nBF);^w!D>uoWAP4Lg%LxiwKM&5+lM7$n**y?>NqwfDTkUXGTgIBW^9s zOPs=M$SNv=;atFGYD#~i`8T?IBrG()qE=e$Rc>+{ae7b77pLx~+KowqH)&&*Ex&U5 zY*dxWnt!wCjb?;$R(ADIJ_-&G_qiI&y?Q9RWlWkbhxu*2VSqrB$NTp-MM+5cX2*w& z$|bLA7;W-!(sEVw$={$m$ZJ2JROjU$B%Y|Li4#UdAUv@aUke|0sp@b)zmno-Ye`A5 zh-P!l$jZ|sRX)6aJ9*pWY}{MnyWxK0<9DvH?8m_$ZcAkVQpfRj7v17+KNkMyAtC4V z2Te$JafU{#y?nV|V;^uxaPRk=rDN(Ef}Hk?Ps+S=7xOiom{u01dXP~bojm`NqA&4; z9fX0!qR!PIir9X=uTAfJCo_GNGx^7wVVFx_s0%rK)g+4a#9$C3JEAI zxKjInN>4=sNmJ@E$b|#=*j^7*6_Jf- zYbOyD{y4C^RxZ!~v; zD*5%fD>ox)NpxR$$wS~Hn# zyh&!}kf`HRhn1JG94*5a0-5~o+S*-^<{x8KNq!-0_mXUc%RoXg+Wn5!nTsmrRaLr` zua4YM@rywS0(7#p(N5DP0#;M9V)3=dn3+cdOX_14&7!`4`hD|=2^mA{TCB+2_WiZr zeIG2QU(H+HnUTG4tMMHVUhHQz!J=<;#J7p8ahHBwqT0i;)p{X}>;QXEaq&F)I2kRM zJ{6PPI#??i6srSGxlS9q@kgnorBC5{1LfczZz67Q|8CEoJ(nCEMZCRJ31N(w#2(@u z4+*6`sL5wE!?1U6^Fe_M0D&5r* zthA*Ah7BZS2TH*F^bYKYHQNNt`q{`#APF9l3EW$|v7U|vS(x1%K67TT7b63H$q?Zc z-$=!o;%66JTX=c*d$#G+1c^gA(YH9w0R5&nxv09~H!8Sk85BNlT3oce0P@MK%cf}F z^B_;C%T6Xh$^Jf~-td9gPbZwUk(haeQ1qtLeZw3BaRTm6b{OH#ZOxpO9<0+6zjJ4C zO8Um=^nB=}=;#v=7Zf)%xKFf;8Z7>NhKvhq5^_iE-_ZYFAkxH**R;5lD?UG(8mpDR z!=QHc3Bo;Ahgpy6uv`gRh5pKvF$wBp+6H@vY(RKcL=e1SPd(ePsS+B&Gx!L5B+FD~ zg1EyUK6GRp0TO*{vV+{qal7^MoI=}YTjGa$RfDjFmPVz-`@Cx(;}dKK?+_H+mY|g{ z_P14eud#BX)N9PyqbkmmUf648!AZ9zA@Q#DR7HY@)*iGgpFSP9bBBc}LTRWWs*FN4 zeX;;v3hWM9d?F%>GBa0#xVPhj-qP#rpBvGItIy`mgA~-%;;L;NeSJrFjpVOCxDHm7 z`Pl2%uc5^0BW_%oqd~G%(S~Iv?8|(h0yDyIuo2iY{qeI&`?E9?LBIP4ejn-$)#QX& z3OQ!3SzZQvb|2(2ebTEU*}Jc$zn23|lyXDlh07~Nl$Lp^X5IU@x!vAEa^^4}UohmD zfT4E!RepKTHC`J^_CYzZMw*R>lP2f%x2#k_E`u{Ako!Ge;v}E%Yq#3KRun6;}SSGyya*8fzE1~@Wf<=UK8>N~W z)RDbF3%nwI~#u(Y?1B86L(wZ9Q zo}L$YSJo~00tuwx`ZS(TNo&%PoM{O;tiwzFX~)FSY@IoCMS-OT@8pj!E?ldtv%smh zUx?<^JaRFMR;`AlS(x^?69 zxIK`cyojg|h6c*LD}AJb-Slq_hXSq|c`L;g*3=M_`>eb6r{3o0xc`AVDQUyN#>CiI zQeK|&^5toinq8qTN=gIB-wabwzu93+A|EAj2utj5dk;1?vgsJBJ;KiBT9{~J@!~vT zKPK}?yv>lNPTzykCOeli8p|{DEjs`J%{}Pn#JzXcag}1C?fxLHEkLd^w?{cP6L;&i zerf?$v1?;(O6uEfo(ry?MTL>>y&b^22_g=8`M16EI9Q%-UrGk9zd@>AnhBF{-S!Cm zD@I6WWfeDCbnmss>`4thoDnm|wZx1sgT zNlMz|`k7kG5>bMYH&j)j&vqm156eeO-CtcZpbb@CEXw*a_iW$Lp1pllPxm}>{cJTM zkYa7diD3pL_-8XSA>s@S6Bi{&u(k9lnT7nEOm%igZg55U3&qy_jo`hBX5Ze&V(iEE z(>OZX=SWR_4pjrLkN&atL!q)|=+e-~IOGJfYZKwi*|C$Wb8nR4^5d;>UhB1g zdUpKsVLY~^`}!-jJhyZL$ zs^-}KJCw?oL+_#%4R<+E;P(Yg2&DU|SS0)CB~b4Y(-+P&_5G)v$2Zf{l`H7F2wc?< z)#}njTP=!$V#>RH+17IJ%(@j^g&_ET@?UQTp`&)_9H-cZXk9VHf;tfPD5{GjQyGw6T&ew@cbh zRjvKg?dva(Y^<*d653zqZTY%ql@_hblJ$Z;*9GlCYyIO;HRsUIOFv zE%>D}Y^FadNa`3>)YO0vcwWCQ31^$u*1O(x-+j^-j<$XtvMM8J?EpbCCwwUS3qFv_yV^nc{T2+kD??xHszxPeHTVQ<~*X(g( z(C)R9wJRUh8! zo1vX{mAXE|Wv!_hR^Qb|#KF;vnMD@1I?w(N2$p2{{RqlbsFf`&_M=5+_LIVweOPcs z1g`ogqLwTGb~&sW+xY#Cqz>~Y3^it78XH#vUx$aRW}<(b9iAJZ z+`G4LxZQe-{3rX*;ac*sEh&~Gtel*tkmJy|8ZBqQx1$V#@UVH?KgISMJNN?P@0S&iG#@#E= z?mI1X@?jk_U~R=3Myrx8q`%GzW`D&9aP;Wrin_Y8`XnkeVD;%{r+7^SZXI}{k!`g@ zQ*#qsU&CNI_gGHU>j=7+UlZB&@$C$C=JFBik zIhHuWs-EFGKE47om@wdtN%po!$66%09PJONrLVVqrNVsgx41}det+T;lrmlk2957h z0|En+ERC2|<6WU{?Cs~;x^w3#^l9~mGv?M)DnFLgXHkckMd>qNr3Ipr5%7b3 z9of#T`3wMzVPVIHzZOP)Hrw>Ov?{n0Omj8~IU4j92~~Mt#4ZEk-?YLme=pg(Rs6N8 z3Zft(Gw^<;YD=gxgw8qVdy0V|!hR45FEuwdbODXV-)47l*~*|MXu>rI{pFMB=>6^K zPPG9XDMarPVmUuXeMhT*_=d-2-@$zpUwzQ6-82{~czbzg;Mt@N;xV(91g`1ntt%?& zcfN-eI(HvA9KjHAE~=hTg^~J1^U#ZSfu<%x*hyrURyPgNx44#oTsz;2@{DKx{-R4u zOEMv6AJPlEZvHtKOl;IRxC{7F5nR2h6Erp!R&2etlc`@q0ixqi4!<|>amS8ljJ&*$ z6=S>)kf`n3*Fw{#GgNyT8694E4w4YD1=Y_JMlZC{7<%R=g*~wz3}fTI>OkLb@oEgf zpl;uGkE~HmyWa~U z2chLQ=;o^~Flqj{tD<5Dyb+oVKh6DZ)X)a@PIXgb6w*wzyP1i&xnsg>drv9X8Wa#U z4m<)qD$wa%*MjVoOk3bu-NPYo{_m!v#NF>KmSwT38z~pwi@lvg5AO|-rg6A?Irv|X zd-?kcR6%$nu89kW2CCGs3?cn-#f$I3)wtLD6k{H6SluZnPTX`Z`f6nTk0_-$>_*V- z-hKVy;}fqo47Z(rcscC-dliZMao1kE=KMY!eM={>H~ROOP}kqKq)Ja1e2rmX_4E%t z<9Jdn1nP-JH;#OP<$S|5^jxp?)Zg6F$g(*|vO`z*7_7^%s}*lEEl$lSNAHdUgod&Bt$$_Eu9 z3a8cF{$EAbQeanMp~#)itQUymEAoi8xNXk+>qGKxY^E1?m)BHf zW`#0nn2zOtUN21c7T>P$t2y6}V^Ea-x=hTA9YQlxwa zRtMW3$@+(L7N8QzQsT<}zc|`@I#2fBeV5fmLFRm;Q?ppPH$CBr~e+y(Z zJ*fFRcg{+BkC(OE?KNr35N)RT=&5*tHh*IM=u+`B2E=3Y4h~Wga9H-co2GK9ivbFKN{ugHUD~&O z$FucD^QA>gf`9=h(o5W_CBiyk-oU^ohf-PF z(9ke`xyq(>e*cwIscPsCc47{P&)>anw6CoSrsv-B1 z(`BcZ2orBNOOLo3`*S+5)M>r{SM}&sX3E8-t!pE*1kk-LwVUhdrQfH0HJGr0D|h5r zKNV&P8{4In|9|`i5WtfsXIZX&D*OI@t7Mr#N2bM2IXUEnFDKpk&glC9?iSTxc7M+9 zBsqLU`?U3x{-;|N5+dtogK!NrzE{{;U2`3;0H@{fjiOA{0-ceDI%s3G5qFC{xqy94 zyCJ^}CID_oE4qB?68GiH;Yns%oFGgNh&rA@GgJ6I^N8r0{@!RC2M&6*VKrN}XQ8lN zEPvzN=Vw=AL$+P?vrKStaiNlb{Yu}+D3*kE{Z8A|$OHQ6ePpnaQ7;(PwgpB{A5?}Q zv7!shcUVuKo_(~}-;E`R@W+X(-OKc}wO^3GC+(Myy=MC`8b3=3dO~6)fDsRJH4`^s zSt<+m3B%ZzqWV-@u@e8KC?WB4KydIZCdqa84`Ha6G@V(07o?vsYYo z#Ib-4?(LEHYmV=aeV=hl|J2>Df3R(==` z5Br}9jn>GnU0oi#j`D48F(#qZER4nnd8#K4-`s6(uJAV6Z!yZM%YpBCih&#!G%vzl zb8)~w{Cn!yhNE0l|Ck`Lv~(4dsqUW{xj5fnN-xkqICv!}I(p!!ix>xt&L|W7R=6mz z@m?R0>^aq4t$!;zOz)600XKkPhgJo1q zkLClFYy@<|`;g#Mspz8wb|&Y?kH>)pEPkY3jNKH$N-L6{=g+^O6Mpazklgd22cCcH zQ=}$##eaWTBKZ4qr95uZG3#3OtMrR|tr{48J}j^MgQCOp%SHututpe7 z(k*j5GuFD^^qExemswD4l_Llp%)(KWDWR@ogzV>5n4r~n#Hu5 z=0AH((a-CCJ*;*0>MvbmW3WALF)WHg-3Y_o+XC)63WoY8^$vMFwD+nVZT9O(-VN3C zofW^ef3yI2qDumS3WSqHEfa6xP1pe80u>{i4axzzdPCEe5P;r(dT*FEpXx+poG{X3KvqcQNs_>jLiGG zqu1C*o8#f(bC`!`D@>4;K5mb~fZ$0>UFpVfrl7@|#Gfr(x9P)n)zo|aZK+kzo6ulN z1%7xjrjbUII7BoYG-Q|MSabL$VhI>J>5NaD;xc^B&=_OaKiKT`@uM9eSh9Gfl@+2p zltxBngzGpgtP4^O-^IlPnhvQvNG9z28mZx$g%Iu{;4d>pR7<<25;`QnM* z@CA(8!-OwG+DQ-O-Bl$W5dUJ8sNkPFlz=l5>{I^~HRfaRkJcG)rGWGF$af27v^zv( z(zNJzvFjbUF1?_Cg(0Th13^zolyjTCe2VV-nzqjw`qs;r2a^{;U zu&Dz-aUNGPnuP*R4fP;GEW!mpmL?kRa-XM9Pl7Q(dTkA?#=qW9#cz1;*Z4^Y_qG%u z#|E?cLlE3V%X8EEU!H6N8OFrQTKbk=xy2hjz5ciNM&A;<1CUkuH9^B5Dhn!8H>e*# z^r4X{tz#RGZ0YH1cm=SW*>8}HZde+c@_Z&NJpLUqa(snxqGg<#=m}HDy2>qb^&=M* zPE0&nF?$Ji7n@{W`duRNuU<`I{oo+xpp&VbC9~&$6*xFn&}WpADoYY&*v={=#Y44p z&zkUllQJhkBaen@p>$oN;@9Efa#p__Sgx^msb2W?+knP(Xm;bK*mh@(Jvgq*<@OJ9 zyMDBOxbCri=PVRSy!G`dmoG1c1qA#oORz&9wq?s)QQg#OkUm?_84e2)VWq`&ek_V1 zoAu8L13m>quuHM8jf{=iuspVU#eV*}5FW>ao)xC)vvrwZo#F4OBzj$#oTa~~u+z04 zjd@1K0)1Q#IPd4-;bt}r2bXt)u?=G>-9{srmR`Yu9Mc;ry>%hV>b(XTx{^oH;mtkM zRnHUh1P8M8tj_6GS?24qX@iyPVZ|w?9+D^H(^!nf^MmW6PAbxy+4BfINUKN+2)KLo zYMx~DRUEDxMsAFFG5C)_c`{82=;XyKN*@f}1a=$c4DJoQfzbJOp&SC533vgR=i&^%!Y+CdZ5ZBDiHa&4E;e_@WTJN{# zolA+vJA*w#Ly1%LPY(>%Xa!<@UqNB|PUrFtT%}9PV_RULVR97~ucv5uKAcKOI0Ou# zaBk#9b?}hf#bQaB@W~p$%N%_EP7i)x1MBew^si+AIa{6>hm|82oxrP z1W-vyIO5uwot|Xgzbzxn>Q+xdeRUw$>zM(qg3eqflqK2{1?H0@Tu~1~LurH5+neJz z^!}iMw{Uq=u?9SJaXEplx3{L9k2i)u9qV`H5EYrLso6#49byPS`Hx-zmvU6#>yoJ> zp|S>+iTh1Fuz5*aLQBKHPp#b@NroP6siB^IdFIDLjT&7Qki3e-F{69rufG{Ieeese z&t0k&EOec5U!X-GZSC`S^@jAzx%To7B`f8OGVF)!?d3PxK56gsY!l*{N1VVq5gZWi zRr;OUD42Q|XS^*+fKit2X^O=KeEZv_U*Eaao+cMQoOjxB10)=1XD_PLnqX+72;2q6 zJ%ELe6;|*#e*CClfKc^WqSic+P!-QlcN>5Xe2 zkfzX1EQd_&*ridr(7iF0G>SzHmZ|)Wli08&7=ZkTaV0X#-ld7O1b`u=73ZW+f zMWk!ARL0Quw^E-KXcmi3?!i6%KjnI@)bW4ydRzvMeevn8$qp+9xN+UZwDqql;iacL zWDGY0`^k<9n;8Z}J^#-dMLjQC}b4n7?62 zDF$`C0{0*M9Ixn`Xp1>!Q;igE>?<#g z?*4BYnP>GyjQna+WZ?gpc^S#crK0zys_uFy8{=@(K`NRQGXfay$B*AY9>pY@-;)C* znc zQu_L?3MvRQ`>{;gZ{IrqC+!R$(C!|f0Q4P2WF03Jb3DV;nns19R!h36scBcv#3`Nd zJ6mAU`-KL?G?wbBelAQI+tgl=2O@%#C>LDtr9+sPxC| z;glqp`}Ti@G-;lQ^vh){`X*&X8}difx$oqe$%tc1`X?GnV5@Qy9}N;ke+63@pTZW@X9wv_X^XY~ zvxS?}B5`j>MHNF6emF+C*?tw?crTLdcG7XuxlKLx+QCre2J6}Lq_YXC`=>81O!OC< zX=|(KtWY|#d8A*4bc}HUd2avB=-*I%%@ty1n!q{YL5QcXJ4~3NNPqp>ed5f*wQG3k zTeI#HM@CLP4_HjPynHJ0Gkoy#j|)8D1b?Dui{FRw z^l&IP1qh{Qf!}C&dmj4ZlMgFa`apx9w^_VJ2w{bEg*jfz?>1T$@1H+UzHiFJ4Wqp< zd3>@nn}9dm=~&zpubR1smi9b2ReS-QA!-dtZ*+9Jz@$uP70m@XrGd zDv)1anic&o<{B#JV6@d-?vaq|gz(Sq^E#M%b79itqiSk7vqmiU5VYTn6Au75;Ypg0 zH79bLcD(#6AiyN)>+f%HHt{Vd!yL`QmKVzfR{w{$_m1bf@B4?9Hl?yDl1eF+gvcm` zQmBYfW=2LxvPnhRDI+_{h>+}^m1OTtk-hik_x#jx9>;lJ<9FYG+>iVE<2sMWc^qd4 z-|y%1e!pJNc~sdKM-5c2ul*E0Q5apeA@Ar2a+}@0icB7qwQ~Zk8-S(&L&=3pFHQhL z^(&khjEN(z?$?%AGE$He1-R!L9B5!!Bz~Inv)jP z^1qKp(#<*CPQ0htrIub}}e_Xk(P^s6((vQI0Fd$;qN|yrZJR9-)m@F}}1|y`^P&&%wL{SsssHXe#h~C^1TZ zSj51sAz74ji&t7IF)*E#Ly&Hbz0@MvG93y8Sj_jTtVKldNf2%HP)evjN93=HT-f*W< ziuDsLawM>W1y1(Ff;?Hz#6*gAARc35Pp}~1K;L7p)9+m6lZkjXmAhteKJ*&oh#ImT zVC7yoFA{Hc0o33%HBv8wZ9SK*xuH79nyx9mC|X3iF(?fi=hiTB>4MJO6YJKQxDK8* z={@i_bM1i4CjahYiis|l?LbNM@d?7cgSqxiD8zSJ;HG4+IMrY)^XycfCDhfLvrOepMeS|dleCU916KIIQL zs0&`DdDO%z34?~QQpLTd*>tj-J`a!HyL+__IQDRB(dyJiHHVNb?}Cj(X;5=jK{3`x ztw3UJb5G@Biv+&dE5E;3t)Yg!P#1Q~)ZcuiJ(Eszvt}+k$!o?8g8{tuZ>teCfWXfk zM3U`q^y0;-SN|bEC5Yy+v4V7yNW`GO(=44WEE0XtEyn-z=TMs2iP!it6Oy?{+bT;+ zkQll41Be(1I^r`xKOfNO;gJ|%DE}@o#HZU5B|za}Z@n}^18Ca`YoXApIX#YUGp^bmKcHgy&$!!Q{yQBfQO?S zoPVY%n2N)!UG>RPwIbHY_?d$2ESz!-Q|A$~7ie>qmpg!de0SX}#Jbp(2hFT8% zyC{rCb#)q;fVxLJTyQ#Y4d*E(xxdq#g@}TlD~q5laLk8EP>YA1;^5$@*5yWWpuIw( z&#M50M%sAS%oBXG-_hlXtD!jGxtCj)5t;le2DvG1ZMWrOxAFRyA6=#2VVG+g6(FzK z_}Tr!o4?6(W^ZYf4Eb7dx$kWapb)xbtrPs0-$XW=ZHyEk4Pno4bN^7UD{^54J_%CQ zp@y{^siRjgdJH-ZS?nP$_{!iBsP(rIDdjoPdvQ)3}HyOW$TVrgh<=m6~ci0K)*g(^qIo~NTGoK{^s}Ztx;b!uTjsq zS8z$XSP`3wq|qm7r+a^4hHC?-rlzLAhj@6KP4#-fiV^I}w1T4Mt&ZKqg_><;#!PQ` zFZmA_c=*Sd@blr};TuO!2n%~~YG`>w@AHBUoADuR8V3lq8Rn_Ufyjgd2W`ZRK2cB} zBL4yQl<UILpR26VRrqA$XLDjPvX(XiErLIE z!xdjg|2mubaiJ$q#7;fZH^ewkusZmYfPs8-q7;7fp0q8~%$J@^j09e^(?HXhF_*m& zv?523pon@G|0ym*26t-WnqFSE{ABd=fY7oLi=SWWR`Nahut;H%twg~AM#<;IvQKcd z$BsST&L}qy9oFT`d|x6Y_14V~#<<}-at55c2Nse~C+&dLYToD^ZEtc2#0Cv{$i{0yAxtA#1zC5$nA zrh{A9q?sTXFL;?_Z9(@Jr$s|^1@}DpJqHSZ9MySGRl-DF8qe4)9>yU3qbA%0U|8hz zXgfJT%H>5pv|hxacGU@l$1#rBE!&)b#ilag)uz<$b98)O3m-khoko0?oLpQQ12xzF zo77CFEsYuv2I`MDQL-He(sKn12R-fy$MNwqm>NF)BS?sm<4_003kN>=7Z{IN_$(+n zIaNYy2k3;Bw_}x-ynmkufmyLiyoi6NOS!*t;xE4t1pDnfi+!N zYV5yJ@_+D@sXl3BO_8FKgAI5B0lOmgkw`GHM>ss8Wh-*&LtV;nYwC74u?q;hK=YUO z>qUrJ-2g}9wPXP^_6I5YhSccF-~*O3maT{PZd)DsRw@5FAfU89Cifb`I3er+SmKFm z^+v8OC5r2R-ny)8mwguEgQp=X6dyl+?;aQ^C*TgeZ+Z>-Y(het9uwe>`S@AvMq!33 z%*1wxa0#du`!M*CKr){nb^Xpjg8|8j?CH;!?_l{>Z%Il;^sX|%uF|_&CKEg)*5s5-s#BTEA6QSOo5KEje0aLif+dN$*LB@t{pFk z8ZS2OUJxMP2{#$nv&@1de6@j9x#{qb+<#11a4tYRg@?WY1| z&X9b#p#YkglS^j3o&G%ndpbVnaC zAiviS!6Pci7sF8E#wh#+TA;tM6sH$&%G?+m*GUM-?FJ2re+n9L>38p`KRYX%RX4}c z(9q=idXjw!67oIJ{4XuQ+0-in(&0DMG-Nyr3r&G_^(C~Pin{sQIV&@cNQpF-KM#bOIjWOmS}# z@*V*1#$APKVU-`>n={XyzfDXeT_F)h`!?=_%`%yP?t^v~jSuh^7ia2`?LA~Hs~wQ= zA2ZHv{dW_Ci^Y!x!n^x&rwYNA7yT862aXf_#jxSzEE+B~XU_k<88Cc$zzr6Wo)A+KYjjePkem*S)xX(EiK)_nbc_D23p)L-^xaCJ^CnY((9@f*=J*aQ@~MXt47dLhn9fkF56R2%pSrYI??JBG>mlRop{*o9v6%Tm9L3Q$JzE-cmqw2Q?~83;9ZsBBIBuY!*ZRZ3qO~PWxEB*;6azwBmmynzKU^J$(hc3HM1I{1vvXBC>-+tuW|_)ZorneXyKsr@<*lu6-Y^cg%*ZF` zXlqL^%}SlnneYvC(CMqFu!u{4-E-6S;xl>S)MMzd^g5>S3Ozlq-^^cH(ojEt8$mtw zF?}-cE*^m&R4FRUVduNUOob7;vv$<2EqZ<1V!Is%p)`WA>A;>j=ha*yyOgutr?~`mBC3v=`dSh7*6o#aw>3DsAxV%zu zD|M7CXas7o1l^nOAMF+Uwp=k+%$&=qUU)YvYq4uYFkpOqpDg=9cXz>ssmiISdUkd7 zxb9IQ&k$SZUucYl$MtE3DI?zQGf0JfTWjXQ1P=Lu93$60RZfM2$ zAVi<{HZ|4ttgf6fD8oO_WtoJKN&|0uQqM>kE9T(gLB-Ib0JH<8*z^Rwm?e!Nx30CI zx_R;9VL3UTmURvJ^W7e`g~gpe!#pf$jy!h-mfhVQCHo<|V#vwK<0RM7_;#r)S2Sh@ z7tWleD609)f8@yJ6M?&+qHU~>kYtONO|Vp3qhS83p{po$);n=$SG(Ea{r62&;-ljX ze}^cGvfli>(~w?UJ5`?O;C74bbCuU^{j9ke#RS)Wbk9sr_t%80gf3aso0L8nYJf#< z?IL)F$oIz&E46OguyG~w(#r3bhAK5J?N&oP#jnMgD{uV$tD|pSC9K5Jp^7(2Z8Usr8tZ-&>e$9_?`JnV%r#Z#5ee)9da`Gxj?o(*~`tFyxGV zL-7|7G+2;i(CScCwXyEwJr|Ksl+WX;5rl(GL_%U4N>u_N6j!^a5QIVQUIO0@s=(aOKNUhw4)e+qMdR0JWzC9RUFv9# zwv{oo-`S;7R#epO-O8h{L(xRbx7k6&Q*WH6iayJsEZ0|~cu_A^g(t{nHZoYHF#nyp zz58!J;7+^Wtw~h=!NE*-GHGl{QlkbN4L=4=UjB1up=4pu+_K{C+~^j|+2v>R^Jh@T z1f?2He!ws}&Ck^jo#fj%B7=>psQ~eb%X#Z)qGEY5n{l zT==NG*n?l+gdnDjU6~L%b7o5G+=UAl@Yte3z)fuXT_F}N9i3+q;os}!XQB3qFUZTg zY?atv9VR>!XgK?ZWYea2vqy}7OR(-7_{T-C$uB_Zq)yf0eI}Acz}lu zX|-FoWVObBwCRaA#J0Y{x7a_#_@lqc1)JTC)caw#Z8SZaGv{_jNSSswC9L3-b#$iY zm~tEF>VoHEn~zVu%a}Td#J}b=lFyssc5a+Di?v^pMj}O3ZLL-9J*uWmpZJ|!BZu@5 z`0%+@Z+n|r5v|HqwXQ;vk=ie!-v0jI{khliOHXa{4EkulG|N87kY=bn+eT7<6|#Bx&>7FAcp#vU;98)i&z>+T+XQ>*?t^l+3M1(>*pO zs@}!wb0S1kw$51O0;#gN|3WX-?ykyMCHbkgwI1IobaXkm2l)8Nz3tvj$;|m^m;@~= z9v+pd!NPVs&RH)Diij*v>Ax2246$>ES-6udD1`V83x%s;*Svhm{FeR%tX%Y*>beO< zlpWJMb*w2(WR{_!Hj#IH(DbftO>OPO%!*!iQ_$J9f@~{J2Y2{JkSSuE z(DPg1&$8N1v~xS}WBJLFX(s+-aIgqZ!Bjb~8XaT6%iv(Kg-P#|+#Js{m+sPVOrHNB ztBx0`w|s9?j$q(t&2ofwxP)tNXF?D|Vj^Ql#|kRtmEvq0;#QvEqwD(llkCgv$dJY4 z0VGLsAPzJTS}Ij-ZN&ONPbo(j$%_}a%Bwks6!MpxyBiGG6T9Il0!> z&ITA`?dQT&WRxs>P0furf~~I+8Qk69B*WI}#^?)dQh3*{P#BS3)z#hYt=Nv|{wH4J zZn%puKVSQNw?uvA_HW8L%k8@l_t6IPo6)zZ^#oW71Cq_gc<_F!>$N_{TKieMQtp2H z;_Jtcjb?`z;lq@dR&XIBrOx6J(^>9`@o>h1?jRp5qnw_va5K&I8 zt9Dl<5nx_N4#8ECC+pHB3CpiX@4L1FU($B zhf#G=A3P+aULT!4+_@&$X_rfnt$44WkPSVW$JKhvdT=vBg3j~q#s?y`q`JD1M5p27 zUR&Fv7|DFs&v3&L<8yq)FgQmj$G{V{n^a9HQpu!}^NYokK(99qX}(Lue${VkaHMaLMmf54cgz@GAk6zb@}b z!(@cW#w+ejD}Md`!kk=*s$X5H1uP#5%eyx;q#V0V7gt-1$2(~#sXng#CH@h-?*i85 zC@Pg4&<0%r*#G+2-R|A?^RTH6q>+)y4UFd0W{cS4mpBSNX+4rl%j0 zoMtf1Ss55&d>3zc?%K-}wGkT=@jsN%)XLm_P=flfHY|Q(j+?wC9NZ+cts5Cj{kYCa zNbHu-%&3@_SFq3y5}!TmmiPdEps4zV5c!H_5?5E(>oJfba@;NVZ@(z6f=IEJ!lI&a z9KLiXRSzKa=DW8>#Y~gF{@{brw#zL^1BJ|XfoR-w%(hD1#b`z9Em4BMx>xg_d();( z{G1PZV>kVvGS4r>ekqMH zjAN+!_HD~!Gz`Cu)c#T%>16Sh^YrQWSN$F!78%txLL_u_biH<-e=fbl8;BV2{U>=- zRjb}!KOqodHpVjCmQF96Tj}K5=A~!%bW=GnvdxGc*nea|A#MfwvuDpYbKQG&w7^mF z?d8{UI6S(S7itR&Z=aCOsgG7LfmR0kgLRLwf?>h7zE=U%0&yoC$i7ye8Qe(n%<*_( zaj}D1!J)}!?e6iJy<+FSY!F&`=qmM*hJ&BT3fCy!LB%fr7(w93s<8L+I`A$m-qXh? zAHNK8T5t1pq!}aJQn>csSZ{BE4~NPrjJ~0vWH?QVke|4fysa$h-g#U>RhSf043vt? z{8*c_t@MHyQVd%CFj7no#b++`hjlmz5oI6v4x)!i+3(%ECtx-EzDb?kTOwGX#OlYz zEfcc?ZOwjIR34Z0IO3H$bm(Bz^@2@RvBD$6!zjU{9PP{vqh!?%^1WFgWHr0N#)cHV zhS7px*AHt|OwX?|nkfD3>&q(-kUuORCt$OfM%>jASB+UYI3y!IfKyU3S_M6R?1VS# zU3|QUVyt>cRzl19=A@+4a&dvBshvz{cGncJrmK8)uy%fBP9wbnzV(}@4M$1NVSdrl z>T#LN|2@CFusc{(O0i3XM1R`DSg-E}UzY2_P?^oJWK?DBaI z^=`_1w356U6BHyk(t0-gZIOyQ^O^&f_G)DND1Kj*2=!T68;z4&&O9h;$+&OdMa!K_ z>{fIP3|&3-&#S8LY`l+g<@~K%B-#~wipmWHVioylqE*0XJ8w?-;J>0$lrpQRWz{9w zxBr>>6we9gJJp)ExZ{`E6Y{Mqot^nBfa!lqHn@bKW1Ng+`=&CbEBr1`0*R)UseM3# z=J`P2y)?rYzXiG#RaQQI{J2c>7|LJ2_E#sKE ze8l;uy$=U!Xbs1j$rsvVCH z92C@OOS3O;dkfGu5S8BMcA4Un7ol>$U8rHgz>dx*~&Nf+cWA*CyiwOeiZ`t@sz0cNf+@wo|1Nj9->i6VP^ z7!#+6n%Kih6Wx6)BQ^|-j6kY>b$0yr2^0=d(bARzV*x(4RYr!31Vv+2u>oYn)FB|S zg*ZtM3bG#R<;MVsQgfIvT`Gct6w)8;kdF_JH0)Hvg(RJNpY&e+AnW3s;Rge=ff|LH zTA6`rjgxY64g71H-kd7huGH$7mMQ(Etn5jD|IppLca461V?uTuq@O=}%VY5JolDdj zA;6KW>?IK4XW{&az_7FDYzni8B63moA$dvxgVH{V~s z4#>s1;yF;QeixrqJToTz1Skckf#ONp>|*Lbd6GN1q2$^84Amk%|s-MVEWuBo57yP+cdfjPZN0dLUv zvrt*Rjr5&c*?*#Cj=eZrvZE-_VQ10UdHrauHTi_tY@g;}{E1swI?LXG;@_v>`1(}Xv1#yvmzd>-boRM2@=}S6)of%Fwg{R-FUP`YrjdX^M9z)lB3UjwL<5W+t9~C4Ez&>l zyy#o>?a1lVZ_jPCQ#*jUeRlXdUL93c)fc&Tbm3Qg4+*U@DWy98M9yi9q zJ5eD-Bpl<20T!GqrPACjF1nY{Q#Ca=hXHXg%-#D=U%@2e>ej;gWI+zahx=Gqm~hZu z4HkF?bv&0z?>5W1`%l6&C`LOyH1eL9A`8*2sfqCn|Lj}okjnY_Zb$s(uWk=vwc3dA zmfQc^(W=)tR)K0^GcZwBKF5RdkjdMebdL`!!h_Z2Be04|*_!k@CRi^VBQUJFPLK6J z#>U(b83tGxmm|cGHvXdwOTDvVjAu0uMWY!d(zcS5)X8k^@7A3e;Vhm4D-0rmtY<`!~43+tB#usE|VB zc$vbmf?~suiSFkJc|l~f2ldgEo|Ud zl215mw|d4vjn6>wWlB?W!UtbN&VcOxhQ`K5zIdnvjONFgzIz=he$M=;@#}nlm~vUr zkQ=@m4y8wLZI(v)TNg@{%`MI6KO2Qo;J((Wk7k7+v4O^)g{5_%HI)yV&$`uHX|^`| z;^I0^!$A;YyLh70n$kIQX#;_M3gD;qmJmhvZlbo;jn8-Q?b&PfU~ziaNV-8=S|F#! zGK$AGF!CHjUhc^UzfR}p)2M66K&x8uNxwPOA>)D~@u{v!8MHjKtUdDU=+azC*IUe? zAMT~AyB&FEE=U|4$VrR1oj!?d7%5zPpMXER(2OXg-se(`6>8w~cvD%up5yv`+{-yKZL>qxGY z4x+J=!f?zM78!DKa&*ublhnl-zyY;hq=Xi~Js*Oy7mpm^i1P8qah9}iZ^pP2dXT6n4RmYUfyF;v>T6dz(Y^UWk6EA8 zX$s~J?VtHG^9wc=^)a-E?_`h*36Z^ls->Y}rYXf>FHmpjM4rrbB*Ney2N327lEp7S zoDO;8r*P7CdHq+n(%afuFjujFimG z&%-rm@@-IbhtZ;A9|Vhk!zzExP{)q3_bA-{bxgp7#tIusc2YdNq=cyD(A9Z_xbFGor^{T6|gSmg6s<;lh>N=8U+F9hI& z?m(@C^2^hi2Em^!JbE zc)_cG%MoB87`3nM*+->=4-D$tjpseLP%apDU^{1N$&P5^2zVlJ^3>D#lc2Al+M=fW ztJ_i6J$?$Z4ZuqZp3mVBw7{E(JTsQf6suoWmQsx$FuVxsE+(paN7COz0bk+0TloFGmrT07`XM77Zv`@Vj?e6-JV`R-Ft{$$QMCt7&P4&NCdOX zBAF6>-h5D+vmtO=LM&Pv!DVkRgV)17CWaSP%20~Fm5VVlGRiOcU>Ce{gle0C_2b+ifOYyqH%goX?)mIr0}5CiQmL&HuV@1rXU>8D-+rm`<_yc>h>i;=*`iWsK^q&Jnp!Th_rn`?q!t$)0qy@%FxRBkJP~&7@V9SO$a2BV z`#g1SczuXrg9YxpA*#qDM@sM=2j$-gy{6;RPD`EG>@phI=e@$O<>Bc$A-^jCFuUGa zu82eOD$QilkG+qw!fb-5yvvbQWwvn&|F7^IyOqo33r|I8Y;0C;>vc0QF!Wlv{how7 zH2HGpFnER_!-QI?t;?D1+2ITh zDendJdoAWB&OR(8gnR(!+TDha-dBSLzb0rb5rMJUR(8>~^0V{JSPHx!Ki&#F$hi9} zb&w4L%~2QO6jiSa;41y$5obRx>uD&@8Q^J{yR}hKVdr#a1U?rA2N{{_*W<>4U3Aa z)C$=n7}57?K(819ftmE$SPSuwQjVY znI0~WzUlY$m4c0h#SF`_;muE;SYN(!C0xCT-IdYTYA-jgxDA`dPXa^B%iGm55VW!^ zR9vdJ0~l$f#nkL!Zz4%97zLB0s_HjheUKqFU1So>pa9>K?%WJ!gbR`bXunVDCQI~X z0hS_wX$=j^-ZF*qG-J|FNlEH;QS=bv(tx%DGD$>dnx-6;jVenq7{WB1D5V0&=DuV4 zyEIGvIUhz*3^iAnQS4Bj6 zKdBe-}{ z+i-EN1E_rvd;7N7M2A(f1$1I$wC-#t$A<)3 zt>@b1ac?MPt^m(;N$N;JEkZ*^k!Y+OB}2xwOam>gJd7o@O3TX!4jxRfU7&|~;*+H*TU9%-kD;l{;R{L8hkt~{N@Q+X;pXO@3;xLU_^@`b?_kV-!xFtahJSKAO zKDVa*=#9S5s_Xt;+3DZ`0fJ1veJ6X%j^OiiqsKog3x=Rj$Y`)`7g9CFap8ctLNp8e z`t|t=S>~rC15ysM4<4pu+k}t@kS=oxI-Z2(5>s80VW;HT$Bchda~QA`a@steJu^p_ zlC-t;9;K9z??hd8;5s@b?~40d*KU4xdRWqEoR??>hVIj(=R0#tTB4Rs$@tGZI@Rw; zw{D$)Sb~%{)uX?~ltf5q3NF)ckJqt+Ja(31#=1u#JnZfus+qIM{^qNj(!ENHvNwDm zZ*ej*23Qig4ImUzW9l&15mV5Vu!{AOFnRy%^|6u^n;3n)t}Rvm`X(dHt3`?09%#xS z+R)cldG`R|-Lof9r{?`l<4AwDWJSbERUle_%y3}LG!v&nPpSO=19x|z{s@E6Yvt@o z=FGnq_60^RYa4a-`=1P2TdajI{LxM9U}X)n-VYxlD?yRNjwpjn1|Q=`kF3HU0geKp zZyugP>EF zmmC=~Hct4c!u)M!$oC|7xwZ4@lSbRxGtz-^iSOVk6A~%WK{- z6`|L#@enNiqv0k5JiXJcXTS$^v$YsZ8lT1FzVd*xMxetmo817fwz#;shku$hS&#Rv zh{N~kk+Y{O>4ewzl%S(#d^*tSb?vzwd**{Rif0L(i)4VDPWRU$QFMv~0pBAQHTIhy zqi&XhWm+J?aJ}Aej1M$L)quw2uOhfqH}>{Y8yQciey8Fc;ZuQ6E?Lnnbxt2YKV;9x z%KeiInw#CA*Y*qy#E28Ovea>j<)Wv}q*G)?ibv&>T*1w_r0vRnaNLcPCd0U%wSMoK zG$FO<6j7e0|DHn=_xq;Eyht=fJ48fAiZ{kNF#mD&%+uBwwj|x_hB7A1%gd{lMzb^1 z&qf)pMZo}K}aA`j0@l5x(0)^_6KGwI7&p6`Anv>3%!AEQJtEEpB4op#}j zbKh&F*Q%%}r#;=@0eQ&|-~g1oOa7h;ry1O4J2ClSt_zimdALXdT2{=`k^!)tNzhb| zjbE)b=970fj^H82bU;E*t~@q;<~Pbn+>inL{?=w(UnWPgFaNdh8=~w~&i!246#`{r z=S)n)yQaD(n>Y!cSHmdO?y${|xG>H<4hI?0U|; zU#GRfDLzLr|F5|P(b+v!p<7|I)cKdf1Jp9$z;%!!5v=TwFUMy`mT0&Vx4~@r?1M~u z5-0pwGj4wx-Qg}y=b zl}KaQKZlk0T%1Y82OKLKHe6MmA1{F#;1$0qL(XF6fxlo&kt_#7i?OYLOp$ah0?@3{An9c4w}|^03Yr_K zSWQXzJZZ2ky2F|i%dIV^4DHzw@Q<-&*I(H2E07Xg1N|>0ubqbJxCrq_Erb_q3fg2 zqe5$0Y^-7rH9B)fS{i*ps341OQvdZzo6m{LmDA3|yRfR@j}b6ht-w(W%%vuikhOVN zL#)yVzRiX%1zkn2@!?);Q(L3Kw^3A4k#kD}oZ3wkHJZB=6?YbNc3#O0l5bZG+@?6C zB|KVsqAyIAU8Us^I49`)>n%o*ppNjCF4Hs>IojN-wljCn4-NQE%pPB!yo4dPVk#?9 zg#za)em|GMKcbaf@2jE5F77(;_l1P!O6{D5L*y8FAW%U>{BA%eMrI*penqW(HV(E`K)`xkQ;v-w&a$0!X%3PBK7^ea z&KYB480XQEwQbj~7<&FXqK&`^upAD5!0RH*$c_{HaJ9Ho*cJS;&YYm#>TNb{tEH4c zVLNA>Mu=X;c1L`;cpZrZ|HDcRuG<-X5En(q_kiI!#aMmsLrAPf+tLyBzX}#yvQ-?| zL0{#X*tM#M*4Dj=<`Z|-H4GtTdWvDd@81+5U-O;{8-a4ZA@kbrEUzn0?SB0}1VpeC z=P|}Nhzqnp5u)(YUMAA^;F)r%24Fg*nIhwT#_|xWQjjLs<}`Ps|GF z5`xA@&wX{nYmD+;5ML52*!0YdsqPH0p_;en(V%_b&+v}*bblrE5|}o0)$S|XR|?P7 ze_-6ZCy)RP;rNqpoNZY~ns=y-be~sZMCHQSi=f8*gxZ7fWb9&Q_KmRtlN#iot5(qa z5BLY)yHfwafHD4Te&exDk6L99LSKjkl+@YFYQMRP)FA7pyZ^>&{(qCeeEk1P0z>tI z1laxc7@we&rlil&qG-B>5>E-=W7n_KFM%Y#x3OXiqWe$X%D3CC7Es2LVV{D|N%PxF z&L~+4cG;+_DCoq&^Ua>LlMrD7AcT4VhNUE6GVo)B)~>MoMu58)h!uuDL$3KDixOek-jTC60|FMF^C7Hn_R$(CJhK!`aFcC2C~MQD><%Um;rFrV#DV_ z^imYI#$SGYh#LPACcV=Pkx5BOvGQ@Z7gWx-HpHvsCV6^Z7fcqrH_vZECGvtdFE8|H zNl9h0^be$EZeV4l4D#oU5hMQ_^>ehhUx$(Ag;ToJ+A8aOm&;{%x}9!ML|$EZ0_i%A z{sTdZ?Aja(RsOs~Y0JOrg;-fhSy@?wEGKKFi*<(P1Cuj=BM}7p>ST;dB0g*C==)_c zv*nYYJ6QnN_>X;wy)WfArZStQe0qC|NNCltA43IuQC-Cty2zxF=huD^`XR&zt zy0#VO8uZC~MMx^?Euq7Sv(q-y5w26!d-p`MEhU>$$CS#-*j4Y|y$E!|=n>N<=u3a% zQ2Nv7Xz!u4 zf3#4@u)PYJpZL8&D|JI}diW0i+{KM*YA)z1JO)>O9|Rb>dhthO)|={HzEa8nvE@=Y zw_!!gnMk+`dUOr-T3=%MMh^cSCFy^3(>VNMto3GS>x=M4bk}_-ICJJq_1p6@P*BCh zGEP~l^In@Uht~RIT^%K&kC>V*Lhq4d2`@=y=~~FAsCu;iw0wb_{oKf4kMC z96rrlrsKz%-bX}Siwm^KDgGnzTrOc%6``sUTcb;Tblkh3^i6KZ*-QW7Q}JS-nPk(~ zz|O4KNHdc1-_%N$kKdbUYwOlWhm1{N4MTQ0wcb$1MrW0} zf$bT1c0+r;_us4^2BXE7pY1d}D_R>N`TQuAb1bAOgD$iugih!bh`BL%pE`NcNC1rs z6^`2({a4l&)AW_8GT)Vc(p4_H=@k1Pd^kOqmir?WMMeMFf%rhkewF!IzrjrN$#jUJ zt?g@dRP|=j3e%ET_h9640lcBAs~Z=jF7skJuw`ldu6*M*j*f>+`%_1bj$KS*zNPtN z=tV4%igG8aod?>`s<)LcREeLs4VC|WujsjsHQwv{^!|{}=$lj6v?sogn5^!YSYF^l zD34;4zi=cTsfLeRzs()dVJRFk`LEs#=^xuBd`c8GQa(Y?sgka$*Zi3jPy+ymjW@lP zJA85gr0t}d4pH|wic{l7>XoOPwnsD4(Vcd4c5d#tm!?co~=mwA<1ai2eG8j7-{to;{H2_Ev|P2L?UAfsQc% z3fDe(fw+H<3mfW0HH0!hXSOYypEypak-ojo$+1mnG%311#iLV|bcxj8qGtk1Uf9D# zo&Dfre6dT$nToY^1MqKREiSNH3Q++kwx z#$3MM=*O42XAUc0KuGrXg_x=S4XRM+4e>)0bLs3k#$CI6&-S*mMwDa7%c z-cTQL#C0SUbo+L+yj}b^&Z}3iI(7dA1X?uTL`Uwc&?_>(=@oQbUpmCak z8`c?eCIJRAm$LJ%7=6B0Rb8^m%2^${?H!mTcqNZXY~Z#OR57u+`wQyG&0 zabL;a$wGyygAdS7ULUOv6W7L@GgBYatA77J0OBwbIw9-bG7;nil#bUR)S$HjxgM|Z z{gnAp;#*uD&%cES4z97&4BH0=J|yWidTW+yT?>73aMPxYrxAb2OTn>pjWPR=S*ADF z|A(s);glhL#!O7LZ-i{G--!z z4gvSi;6?8F?nm4Ibr12?Y?&A%{5&smCC`WKS;)+eg{1{*p?R#GQ5ESXeQ}uW-UZ+I zAh57BmMc!nK9Dg68vV|lxH1nZ5E@cc(PqBzsWzM}6Fxf4#oCwPsOl=k|xn!8{Ti9k* zo<~J>!*O}7Z>%v!@sGT!+JZw+aIdg11;Fif#423(Q6Z*^G)*@dk39|TmEhm+byvt` z!Vz1#@sHXnh`DHTGK1`Apv`a#wLOMB;3u~f8@^P;m5{YMKAW$NZGG$;EPmYvbO8<` zGklSYGbWK&d~-;^sFe&i$2`~@l1-8e92ved-*u#pxea@W0eoUk4{@@l4k8n6cur}I zdZq_zbE$a5aD)sUp>oz^_hw)55MI5sVYiEL?K_L*GxjKB35$&Mh>TRRZ$;C6_W)lv zx7H?Q<;2TUQW21{x2#ix8>kplFH8_FAo=hleub&&-QAKJuOl-5rYOY_3^4)=sJTdk z*5hp%rqod01ED3zubiBME#%9JY_m942zxwC2^IiJ0B?jsZH{e(*vS7vF@Us(8BqRB z0sQUG0j=HqNsS(lPkvk0deY67C(Yt`p)rSY)_xoHF+ObB;vTDr>ivoH!`)5tj&4H| zc!vMG!K9YOgv&rUeX~sUjG=D zv|CeV7HDd4E&k&pdJPssk8H*;_s)fXI2C9}=OBK91!ns?bI@5B`dCjtq(zKKrO?s~ z;JPNDdPr86D4n^vR5g}ZSc9tViOSUD#=r6!p6+H6l&6on-U z%uvlIwW-D#PeR#uapDxoso{~4OoU77A(1|lG|PNPmp~Ja`0{VxqL2V5QyDB6vq6f+ zDx&DUh=as*Kj*w;q-W&EF>Bm|mIZ!WSe#q`vaWa?l@GREX=~0fg^D?L!!$r-Cc@D3 z{$`BF8H-7IJjf8(2%prH*ar_1>%oIgc=-`On1a)iTYeelZU*i}5(tG|_cRAVcA`6{ zpirL=O&zTHnsrfSjMs@Mt&-Q9?{&1715n zrrDm6eevS6^;KBRH*H_s17>%6WJoI8(ruv8kWM1}mAFS2p!fOtW2)a?&TiOjSk7%u zRs}QlA?Z~w51~O(Fq!!Kkm^j$8?Q&tPSFg{?Z z+{II}3nDNgqrzf}{m+B?KM8rt%8nsGk_X${Iy>roK84@vDciWN88{<<11{yqE)}~D zNT2(%DOm8z-R4um*d?PAx6`8{gIYsF!;!*FeWXQjxW${#CL~NldY{R*!w^Qo4FY;j z0q1`#$9I;*e$z*fx*-HVaqK$GTzsEXQvL2^gv%~2?06w4vP@K7U$By=g4Z1Ea zE}=M*NPveCsv{=EL?SH#J0ufQdZq`a{3_BTBO-Lk#$9N`h>}u(7Rgc*9RTS5G3hE1 z^bKyV!0ha7HQY4!K&(mQw%H3Y+<@TY-ka*&1})Q+s+}m*v$d;X2a=X)qO?s-5X8CXTGP07J|CG5tDaL-4{b$e>mcd|`KZg~3qpRDac)ZXdD`A zMU~Xsdfn}f==CK5gSVZMQU-{`+*fGSw2-i}PiU2_!!m~JT!Kl-Z=B~@TEKAa{z45z zd0e`5X+x}{DJs2{9UI4(uCjYaAdXxyNk?3#U;LtY{81Wl@in&-7rR(1Z@W#btUtpciJQ^+ zn{!U!=g~Q>EBEnD`EzD5`jk%@TvaPp9CmBeNs6&N(U3BFe2^`1N;fI4iYT|zZ=<_{ zJP&x{ic(zT6zjbq03a2m{H~xd5G9)mWtnh@4UaF}j@Pakl^$O0-2CH<&E_$)U`gV= zsyuFJI3{PAo#O+J{=lI_$KUDH%y=GBh6q0vQ*P#Z_>0!?-z!_z(VcjQZP3g7YS3th zq29e;yG6X>Qag8?4s30YlskZK7(wxp^AAR%Ax;JNx zNyum}wk3ANDm8LhK0HBu=*8}N5E*DAjc(3f`=QdUTlikzaI&_YJc7UeRuf(eC3h!` zxh%fNdnQZRC@)EM$PceTq)CrKo&;#~`tQD}R%yK8lZf$p=-W0FemzDI%K7sbn46H` zPl1VnV1?%APlr9wWD8pYjDVN@;IH1`gTiZK39C4o3cptL4c3=JQRWY6&$}?Tx2S?m zIyQIBv>~Q%E7f-8qwan#o+)d5xZ%!NChot@Xu1%3VRQx#_g=}x^T?W@#AA^gsql}8()Q-0zrPYHVU zpr0RGNoB5@`K(&Oesa?BFJI=?A)=HPo>WTawT2cfl%c!~%I~&+$++ zR90`g8Iz+=6>n=}2vqO?u=d{JT=(rCFzrDqWrj+qtPrv*O*0hPp&~*kdo=BlWN)$( zva&~6*&&3GO*Yx_&vw-&vX58ANO%}#rOLe@AEug=WBS#C-lQr=4)~% z5%fcZt>N>%3sH+h%;$GJ=JnQH=AG=JGSJb??Kp&YH)wV!owOBCf^EFnr@D}erkTW$i13Ykt<(S|41ksApl<7vJA5!Y{ z1#PuLdsm2e9SOTq;z*hp926vohN4L@v`$z+Kw!wEH#;v+2-V})tE?;w1#)s9F-fyV z^YM^(WroX2wDt>E*f=Nm@7!s!Wjh(a)Q{ZU7I^z!tEpwzYwVW>>i!WwGuxcq%WAg8 zJ2<$cg25|NEyw?T>Iu#Jo3dmX96o(I+Lk_~Yt+s0V{!WW_wV|U5_3FxGO1%|sB>U) zwtfgw7AARxjl WQ3h83kx}#q1*ktC^+0BRI@(bz8!LFu;!HL@~{G=ed0H79&>TY zo1V4V%*tw@t%Jwx>*9(9d{3_f-@9bL{;11}#o2T~gS#rnc1cQJf$Y@7;oCSNJ%Ux~ zWI_e2UNKF>==&62B0sjaYbp#cEcdMD3^YFZ@X>d*DtC|EcgGmrJ{5C|33&AiCyP7n zudEf3OjM)`Kkf<6mujE$Y7N#4C1lpI@Td>@5^*}2qxa#&TY56Yi#Tg9Ib?y-ZBwOnmdY%kzd8FO~0ved@Ws za`rP89ByVq+*hSLW%Y)U!w_GxJQv=OZxyVa_qw#S=2LCb9uSG}s}AfUfBMX+r&r!h zt3;6J(NFp45DyyOipm5*dwX`cps@)+bw7J%Cq=27u1YO!E54X7K^J&!R99Cu(f*>p7QAdO~S7!qVfzTjCML`>sLHwVl;BCU4f` z&pCkB>fI|SxPK2?r99P5P3flk06aZBJc?A3L~R$RdRU8fQeMx&&s;vSnWjL)Vg5^` zc!$LMuN8NVC(mB{a*YV*e5(1lJYp`2YXW;pD;&<9JMMf6L?J!$H-rOv1?xTkmR3YD)gD)n)l|i$mWG}&+=bU5&2~dC22q*r}6s_=q)T3 z`~k7v|7C5L_~y-Qy8Fa-l!1C%i9n2 zmYL>wAfQi+$=T7#PC$SQm)SVTD2oR6R^@ zrlq7L+EG5Crb+MgTQHqF&IU?%`BC78T>0G3;+p!P=l0AD2jZyXHP!~S7ijr@5zg?i z;}y~GGc#dAQK?YP^4!uCbVEcLS_2_{84z$hExqa9mtsmJpdk-O!hW6f)2CScqysqO zeM0idWb2g>n(`U1#q4NG@KtG%VldmN_&I{w(l5Wi^^spHRPgosS_P!+=@2WO5xBuG zC`$pEWx{RU@L2V{3H%$~GS{}7svW0pf4+dKS;yco_QuxAhFMzW)^PgmtH%Tc0s#db zWmLL#=gysM|IpBLwyTs6e|`-vaoRX6XuThK-lu=!*on*Eus5)^(;WJidK*o}Kuw?m zI1>RFrhfcX3BK1PiedE5!%@Bf?1~V&NR*`LhI|P9aJSztrln}*7KEA}{oeAJKrpvQ19vEvQ`BcJ)1^N~@$`r`ao3F?JC`Pe_ zi!);2eN0Rev|f+GulvFU5^QZ@K{sT(I(;TBt#Nu`@+_pFRtxH6t7}4yNganjmE@(_ zuMwAA7%?s~1bgU7r4OYkd}L##cSouT7{tn`yW&9+5YTns7GpN#$y=JN)`nGs9Rz*5 zY*wmZ=H*gcZ2#QRJW|r1*im{0WyKObhPmnJ2KkP3iCN9}oIazk$V zpPmmp+@D>zk+T77JZdl1I>sT407>e3AKt?=7R$OT{v4Z$^tua$VE*TttRDO&>Z0n* ztnq`fZ|8nli{P$lm%Bf(Uf6R7eKi8ue!xlWR+%fqQjb$6!BrHU8aIz@Wa}t`O;~WM z-AK$u=jWomw0oCP&&bkAc9jggFE;zAsh@dBTfue2z{lIo0=?pQend68=jxgz? z2odrx%P|YQB$k$}SnDD9NEp~eB-%CbRnl*UhlEJIyW6(u$XoQLFrwf=P|$;QTRyf!br}7E6hw2#Qj!Thjwj@*~XCYw`5n7l$tk5EC3MMjlc#D0cx_}y}u=-YYp&1Eh zVrDklp22h@5&yM~K|>UKmQm;Fcf}&`iUlo~2qColXqLSr$6Jy{iAi)6d3bgs?tz*4 zVxs)yp`ND9(ZiR#_JFFsbV%UU6;L(wT9ZdbX1!<^xG)CZn)uEIn$-cLH=FPz}LgH$qx zkFgAq;5y(I>r}mF!t&^eyStC$xsj2k4c!AP6V|>GOz6z7t#sCte8D8ark?9<*wKp- zwLV@w??{1-Q=}s0Tn^9U-^_}lummqJ+3gk<7G`J#SOo;ES}T26QZ|g;`YI4lq}*0f z5$B?j!q3merMy}1Wu+=AtA3Zg(98Br+51j=h(LC+4LxjQ18iwOaq815Rj2+cJc7I`=dA&$H!sx?CH8Z5Kf*F z+sJ={5L7O`FK1|Ytvg>rYKBd%AWTr7o{xmjwHGy4ln}2$u1}b~`cp(`H>U+#KmPNu4X0h>Cd0fe0;B^5GZ2v zTyAV?DjD-BVfeK;=o5{L-eWS^%` zRUyOe9a?Y!(AfbA=sF` zE4M_grCL9I`g9%=L8tuud<77Ew=&5Y+*1}}F)#^UZ*~;(VoU`pb1gyMcfW^~ZcJx4 z#NohvuP)7)GX=>CYp#Dc9XZ?aL&E-!y3=u^lE!os_Bs)S#a^oT;B9Cg)*sNHnB$q^ZJcG^y^L8ui?@L>+!@!x!4JySEtKJ7dNiiePW*WZKhHICadK_Si2M|AG?TC@{uR^@!56-TU*=J1G~ynOG`@)WNDf@Iyx}I3P4GaSRfJ8ZvJan z?#9)xD(zu|TPC6|D(u`HJpXxZ*Y4e^@86%Ymd4%2o1CgMlx8}hRu?KHj_IXv)pQ>U zhR()19ieseo&lg6D@A?&`gJz&ZW(!IkDWWmKs8Yx#QVyHd`Qf6t+(t5d3JqrT3E4N z*PFQT;>O1PsIYJ}_j@F8-kCB4ANNS9+qpXEMXCFH<)6KLSsAlG573rM)*g5t{2uu& zvU75j+i{OJ-^HY|=L-uH)7ttQ69Se-EcD`h&(?nQyT^p@)uj3PTeu(|9a9vtQLm?^ z%QhveTL865*D5)gtX|E?ZMv1`?(?+2?Nm>RSZ}bgHf*)w2f2?rXA>(ct9Xrw&3biD zi9;G7Y(P3&;S3yq{l)cnH@B*GfHh86j)|R#lhc16;{@(4oVV}xkC`LvqT-;RaRwlh5OFy=UVcmyy_5Vi7}Zk?5cu4Lxkygi*3OQO2t4CWU-dKjaO-(aoEY(co&f5fzr5lU#fFog#seM zKDM>Jknjz`n)9;x__B*ks5MF$jO>l~($aePC_F-y2kG*hyuyM4uuja$lAXC>1Qex; z_`yuSTy&7BDR+W;9x*zeC?tgAl`6v(#tW5>^1ist7iVwB3DP22F_Nz;o^I`)LLW^; zIAyWnk{$8+b9D&48C}|@zZYn_R9IMe4CwC*jTGaZwmu;thm_7oO554msxUDz88(kR zjN3ymZ294NuPAv)Xd*ev-ud%~=!E8@Fb5MX;DHrC06s&`T*GqY$Q}SOt;x@*LMQr)L5Sd5>@jV{M8(>-5`-+b-Mi;#JeW8CxEP#Y zP}0@)BqAb`2(!IYM#eKs%hTm$F$nl1Cxn%&_(6Y3{556LBgL3UyxWC*`?Z`j9>z;j z4sSx{MvFdSE&ISE;p(}M?D&~q^m&1gTz}g^&@xR;8R2g;a&tSPW6ZV{SO`lcKwx#D z(Id?U0dmqXDj)ckdf@0$M`)O_eq@`TPIPfy-s}6550b7V#S(Yw9>7({DHdi1)bjI# zgd5EesJds)u+!tUCP$3_BRYIh*K~`FcJ&rsd}T{hR|lh`&xvl5Tg7V5(tD=z&8O}E zp#f-tnYq3$d8}SV1TI`DZpvAYI+S#I=?dT1t*0elbbi%4F=1qcu_&f>bOpyt?ZU5L z88Xt+wVW>B2q-N!_*r-;aw#b&))zi|Gg>k2TTo6lmuczcTT3M69P$2E?vW_qAlmVu zGi&k+Y`Gb70YYs1u{@Vp6DIP?YPOI&H#|JN{_PD0v0tv5$5oyP-IY2uJ0#YnJtiv} zSR5~x?ygAY=HM@ur6%}=FZ-3Ia_b*t19vgF#%RYhiHnQNQKo?f?&=~#RpHB?$HYvF zFc?>UK4a3o;>F#n^gSFi3Sme89~9GRF{moIZYxUv~) zLc7^0Ou(^(spz>B-|CPYvoUe9My*b@-z4n9GIeZ3 zUqT$7Td=C(E1w0zz;o~3_CVfIGkknTK0X?cOCCiIm)o-@?;fzI4MJ4PMQ-g27ElG% zdox}om@ZCDaadXxN&wFT&QLwp77ZP}2&z1+6}MxOuWC!De(rP`xO)8oimq6tl$Uuw zLu+7$iXa2R;|tMRoLtxcC@OsSontVT<2PK6ld<#YazX|JL4Z(F<%Ny}8Q70~eR*?o z1RT#etfu<>nMz%u$Mc_x<`FbX!Yn+6Y1FA(x^n1#K4}C|)gJn3{?QaZ9DI zx6IAP6GGm1$8_AB6cAU1-N#ZfpSk%#h7+-9zL2lewIvyJgO(4UbmsmBOW|0w;D*1x zPOj+yceS7N(ANYVtOT@>#t2(#F? zZ+a+8JND2!x=FG-l8(B2$u?Nsg`MU$(7Br5CWnZs+uli(iDSePXzSLk*zTT11ewPS z@I%aGWw=r(u2qG09R%p3y>Ef?A1;8bm>q5&9c-{M^_4L{z)ok=MOOOr;$lbn%teu@ zf!WF*0XoM7tQaM6^9-a}9OQbZpO5Njg&B>97$hf3GUjKnbsW3=}jOY>^e9Wo{;*PPc%%_I|BR5gp@+fUt=seL5N82)D|NW3`UUkjlY9TF3#e%+V)7kH(o zVr0I{*P5&z>99f8Fmf6ma<3r^=C-#LBjgNt$?|O4WG!~eF>Aqq%-8ty%bij|Ul}mp zThAYYj=qa*E@WwmAGw(W-*b4Rf+?Pz*ZTBpL@Puj_*|CJGps{=;^P~j>+l;JYr-~{ zP>mutV2wmAlFNdmwwZzPsVTjhN}tOBe6|xQ#C6%kl|FtfdTA1LPeT~w5q7Y^cF_ZS z?<8OL4#*CMt3UO!@;@8X5Fk#XUwH@*%!YYkVIhZLs0_HC+HV{5ObPou9|>+J{1b{( zJy<^B>n0qrYZ|YnHBUqO6sr(-3*C>Bz5u4BN=yj^*EsAO(?L%LuX@L0jg*ZF9=$9> zw~ETjxyTK5tIJwiM=%(cX>@0d7ywV~86N(G@rs)J_9|o9zc0APmP^sob8hv?c8s5w zK5l2&IZaYs6suK{8$z~xDZBjj!?FMD)QlCixftdpb6^i^wr=~OC)c>!`=+X@n4D3P zqNG&K{gOSF)9{nHc~bG+uTsn;y~-9`qaTb` ze!hz>p=@c>Y{}eV!YL{$8iq=ffblFTQ)Rpmz38fZ70;E(YpX0=T+@wWS@tGLp+1?} z(i{3Elk_eF1L{YQ9P#||qlZo9v@dQNXf~lZ8v!BsnGMyQx?5ABm#Ghl7cs(qK0ads zVtPz;?bmk1c-MT1+-JKqa5RX|ZZ{d3ruZ1FFIZo!7nZ*;{G(O63dlMZj-> z)$yUfJFxXd9Tx0Aj{C;m){Se5c*5D$C5jj~|A5Tt>0w9^d_&Wtj$6gbGqG7GCYk>VHLg?OArV2!zjWz{{Xy@%Cn= z;);tD3B;$wSx(XCKC;ku}A{Uu?W|2ba%ZCr&736=9s{8e&?lh+?CR+!_6lMv35 zPdIk$_KbL@VQX@S7{B$74<8N&2tK;!Qu^EMtZ#O1jvXh-J83DY`^2n|0Y>f@d)9(w zNt%4ZFIgEGPe}<0*O=#7+V=bU`){Y}Hw)uTcf`rGbt`n$w!V;yy?T}Ab?#X?BCa1n zsa@kj?t~1-r>KAk&^n-DlLTLg55Bk;;2O39iMn~e?B_yv%DLzUWd5*1*F=C12^9iI z?GDoM^R3C7O)xTqYf2IZGo6aNL@2(9Va|k`#NqGXe@0w8ennF91mBa<$?ko}Rg#4C zzp~w}*%445-R`pr`woW2Ov&hHJII z8EGmel5ETAL!O?^5=#pInF82R?k-SUkMnM%ar8v4uDJ;kdKBUC{DJ~?A0Ho{M}q1G zz7lhz-i((e1{M!!Y7zvacI4MsSXjE-%Eg(DCqK632p%~C#b{|mstzY)8)Yp?v;jgE zBv>4QHG^16*qA?#V(94FsF-pLnCcw-x$LmjgGI;{5y1r$DBMSwy}+~NX_4RPWU%r#g|oxN4xYPvS+B4y9(7G zKYP~4I6x4={H{A1TezR7ZiD?y184Ol3;wF6LqQ0ZPr@(WmZtaDy>%V>n65aQuIPn_ zKu(b``RzeGLm7a-qD#?B>oAHQDRyc6JTNgap{E5>*z4_AWI%ACvC_D0QD;RbZ24Ve zvNeHcGZApUODVDedr6CJCJV@l|LOgUa7ePLQW$@Y!wn%~(@@Jevz(Y>PBW2{XG5Ji zH>Gz$N~+;Q73vG<)Kn8~Z316Xx_1x(Tcdk?)rW#;Y9dc$V(Ab-;3&Yw7cMy>>oe-x zG)-+#0kC)FZ*4cC%*VF{1XaDf@%I~-7J0clhM$F`H&Lmc1?Wq1awfvPuhfSfsR`Iu zJ~JRjgg8f6lqeHSsj$vKhQTx(2A%80x@WwmjlXA?oUU-wj@2%!vb5okkqtjZ1OzkPc8LU>k@{qH)g3#AOA!C#?CNUwW{B`gY8(p- z3u`&ctDw*%SR4yD$2TTGW~8sLNh7)e1F}rr7H&x{f6E<&GmrhlpEHlV>}K`@ZYwKF z5F4+jted8;0P=l>ubZE*1~UN%uO0t97^QBq%n!oPA}DmY@eUEYsv_o=(?o-{wDmZl z2}n(ICbL4^9=O>arxW~j0l*h6Z7poW1A$*o7Vtmz5~TrvcxQ1cfpCt!f1eC~vd`Vx zt|*&@IQ}Or^s*XVOxS*-`K<%hd2ulKAeIhM@(1Oiok3*Z7x1{6;+#Og2To+HZD3H} zoahf`(Pfm*r%y$1l{nr6Z7S|=Ei6M`isOLOu+QPZ%HLzggQ_7Efo^8~SN0zs%_I-jK2*MFT(vf32ENn6E= z_=$k_R{n?XV(dIy!60hz)IdK9x2F-5KK_cL z{QUfqHa087Xd1Y7z0j7_*MFOvVd_Fz9eS{20lbF?W{GpJ-xB)R-$y~1bXvXM&Xa6x z1S*o&@Rv&4wK;Ag&qG(E9*x!kG6|Y#QGN0?Wn&j%Tihh8JJsVP$EKX-ebFs;FGJBb zhVWQuB}HMq4}<*H>KT(#F=%-RbCK@KJi{V3Yec8-_13?+x*NFGk)zuCD!k%m{<28o z<8LDO+oJv^xEs1vugg{e{}LV>KEp0nKC9gqJ6c{i+CK+q3+3NlrPlWAZ~IH})DU6c zf@PW;F7rsI&})ls(xbd{L?{(l>=Gy-6`pjbU6qr9XdnGN5Gpp?|K?4>!aJKU5vhcoNqfeCW2Ne2Y|XIs-d2pE99$fP%G`)vUtg!2T%xz# zSflx~5X4)vAG(OB0AZ`WNbO8V2XR8D-1h!~iq(5=0dwP4T(az`zp*`-BF2$L?Sm51KgwieNcgYXMR5Av{W0vaF{#(Z@6*F5?+iNGY7TEu(Y84|Ag^ ztnJ!FURoX&%5#1G{KCtZp#6Flkod%7UimUuH5y z^t8s*O!kdyOW2tJ`i_P>*5Sj`F!4*EGROnd&BqBI^bqqnsK5axh! zObM<2#^#ryq3YLYDzRvwp*(QlO<+L4O>F+wx9LeR5=zmZC-(Wvo!|Fo8g+70uq{%M zd0n#oCATA(FA1KFF*vXv!=QOPDy>NASzEX)m!i?2uR$9;lRqm%=14M9yfmx) za8h&&VwwHeN3Y7tBI3upE_9`n#~4H$pf(l21E#0%Z7Xh!@h&Z6hdVKpJ)f4QN;ELM z8>i@MX#ok<>iKj62+ZGctA1ZhT%0aDMl5TLs=*+fIh?@)O5+~$F90Nw&H84TVwworb%2%BVS^oEYBy94XKzPYtN=XX&ySOQ9hkOw0(!1-c z*(`Nd$OQzG(*>9hDC6^`(?|xiGX1ZC$$7{JL34rV%O*k75yMLRwJg9%j`0uzIB9Nf zo??*M{th#gypZHVx86ToL?hw-E7j|3LINQ1z|OMJ*c|{QgGWRg$o{aCv;C!GA{3kRD=tkx7EwNfU-QGNFzaE<3DUHzUl#^#U)jgcS*uQ5t~yaE0~8+l)~M z)?04I-EyW6oSf2VyY_sxqL)4QpTZg@BIXlh{n%eK*$p{_NXW$7UGd{1 zIWm62u%z@3THdZ{m+9l|d@dkZ6>Tk2OZO7-8+YBV3z0)djO7Alhc7nt|8P+nK|>|* z9KkdYca*vf?!@YJg$(L2_7+PRkm6s28VofQ%>&1EBSFdJh zBiNJD4L2_LV0{zSI$9tP78YoFt8WgNxfFp9N{AFWV0tZ!bu&S-|3TOf$E6-yv{%j zL;Lo*?bx~VhZ95L(NpgkATQ+Gye(rZti~*czZ`MKQ&#p9x^=a}5Ci9XT3Y9fjP_tG z4_~b%Z0-Nla=A;<_dO((I94p}m79;2lC$Q=hJeqon~qX zddC~Z35|85SaHcGDaMUH6htexy@+$%HtLM-(9i!A4J0WgA)&a$E=K;|8S*TR0;QW7 zdMD8&mp2o3Wx9*Mny5i@qQbgGBSrk*S>#=`Q*r>6sSbvq1W0eR_(WJDrbSAnY zhfOp;^iK@&W@Tjjx+)>Dte(=UDMUbq?+ub~)cjrVd`%pJZi?--gu?PX-N#awHPC@^ zL8ivDSkWpwAaSP-raq-%C3N-Ds;W7ot zCX8Gr{7NYrNB^h;c;0rG$3BhR81L8$UjWfwp+8bO+-hOX0~VU^G;PhtY0uS(RKKM< z5_Wx^msF@_!1fFOC*IgMIw>x~O(|An6*p;DST>qBLT?F;l7k9&k#_C0Crdb+A z)`+HI_Vksp9<=^$pkRY8CGp_FaexY^5MsSJRaaVizfd>)zwt7orG=!5lD->tq1C6q z+pLVA)o(WC^cKeH(wmeesDrEL%No6dbS?fuud8l%xGD#o9<5qs%Dd5j&W1SY4?zce zPjnPHut1|qVB0SkMuW>$xMl+}2MC27!y12%Z^}^|;Hx4X8$N#sleC~}<_)dk6V1-n z(>CbyJ{;kGj3!j4`0)qZ^(6}NU^Kh?Dfq^pSm7MOsrLj##l5t_yDnVf;Qzjxbo^6q z*{Cw!2nO3zE+-Tm_Z~dBa;2W|N(xsKW@pF~?0}PG-OFtMv>_d)A9l$InimP2LzL|7 z?5dslR%UR&t}qL`q#-x6pWGoj;&6DY#%!DlFTee|6(h7b&??Rs+7SrezSbB-qOPCZ z$Z66UM)zybnjE1>$^CG+U%v9sAwc-GlDAP|SYG~T$N&GmqDK;0J%JN9;6IAOE`oL% z8WH@iSH8Y7=H`M>2fTVYMXIIc4Kc~k|0n4T^%l<>J!jE)y4xb2r0? z?$&FI`mhbt#i?+NOdh1P+9x!-!Z7DGBq(V9XPX6K4?zp-c#s@REUBQ=L}2hEDxJiH z08O4av2qhr7aZR>GwWq=W?0f-*Wb;?#wNTo00o|Y+Z7xNRx~-Cot>I#@88GAUpp@R zL>e7=w}?l6)GwI4mk%#@TG+gnW4gGmA$yN7M91ISxNiEF>V;yx34HNhF7+JKz&q8k zP-$}AHynTPApSha4u2eeDhSJcP<^pld0=ji+`TljAur52hgjl%E-q!>{-1!}$M$wV zIC;%NWs_}}M?{3lhagp`@MK`P>4gm(5mtr&sU-5r-zCx0y$Z?q+E^WO(_TYCleu+E z>=0dILyno|FYAIH4VgM>kQL!wt9>4ta>y5=P0;L?WH!d$TsRAtG4!!DE>zK`);$cOA*90_k*Y3W zk^g*i?YKMyIWcIoq-A-22kPLlBwTy$->b8~dNyc35Y6ib$tv+h)-4n0rd_-=#i91M zS{YwhTpA*Uar8q$cA|d)K5EdzkH358UVltARhy4hi5Zy9{^RW$$|Z>Fwy1IHIyBLxb#sBaCS+8ZhfZ;u{m8xlnhm1^zR^$eD&!HWbLjv5xM4Zh0K(&0DsT z+T99Xp403>?e7)aP_B)Uq>NXpcSE>SK%#A>xWQrsz7 zIEjY9`YfEOVkJe|WwQq@|9+y|GxJLp3(3dHbSht60Z1(@SBD!;pwI&}D_omT-~Is@ z^=gIXkt4(#-v;HrPg2)Izf|pK%!S%A()f9Q?TJ4R+TQc8w?+?`k5Y!KuUvX*Rxi{F zO)1k+?NinT^oS_}w|fej4$wuypuzq))uTXv^6H=JFgp^*Lw)7}8;;!t!$kRn0PZ_G zTr7wGCgfeHL~wlu9}ka#=Cx~61-`yF=5~YnbX!-KQh0z{3a=h5u)~Rk znHl{MsNzWU!c0kfx!(Psi=fid3*MojGWaCeQ>WT2C=!@N6nq}T!&kqxE8YU;b4YYG zuA$(n&$by5&Ucb|0j3W+VvYtAF0mic<2A+FRpndtA^3F{FqGoXPA5`YMU!zAdIHu~ z%}EKUY+IhihC6oV8XD5y-X9_C1rwCh=>Y@if?kXFIOz0roUUvi12+diQW+U$7@dFq ze9)bqt~Bk=^s!^M2G>VFy-)x+^nVOhXFFYX9%rVOv8D@f@%?*$fcvnWL+!H`kVE3nb#(-(E(~%? zW2H4`JB-D&bQDhiSnv0lhDeWFyHsjs#*_fqfz<+W6fHS9`5yZ3^^}@yXXBc>*c2=#r(u-@BiCDYE^8L2J?l(-!COy zpEts4)KnoxK9mEm!P;;`^vNGzo8Cp@jNzl8V7tBe>>n-w#Q?fp_DmJSBgj>(VvtSW zCYMH_t!3)d$H~x@w0zJT?fzS25Wc(<_X(=fZGg@${9%YgMDTIALBwMMy%B*u{#z-P z=M9s2=mvjmtWWNMEx|~W&bt2!iMjb6ydBaiDz1@)`h?XN$yrd(cJ5k!jG^W6Q}EYx zw6v~5E*dS26zBn5-qS|kpPCJ&LGab|fRm4}JzlXuqaNHINN7X43dGy8jD->sw!3CF z>1RH7w7+nF%+`~E-@ZJr+wCtu-qk!sz;;pgU!B&DX*HW4Ta3`DAk=VMgt;M^{fZ$g z+(8g{IQuiv_`Obr*K1bYT3X|LamaW`s2hnxWiF%CAd!s%NX}J>_T6VQ^^LwJD4cfo zMAr@6f71cOf`Nbe>aY(u0D!L{M$*BPURtZdvlhLfa8y*`4`f}ishuG(_JG!lpF2mK zXU;^R>XRXJt&%XXVzteOF8VHwM=X|!wj!Vw;+gPCN9nX+z8~IBQAvbNiYItyBASR7 z&$@B4IRz|&Hd&sc<05r+%{zCxAoIu*4iNhwZ1we>+eo+QHo2i>M^qu^U%mCfz9R=r zSY3B}M`{NJT~DqGeH!&j^}vGSwU192YuYx)zDbDG_Fjtc3tE1iNY%@+5Ek(4(a@}u zN#CZ4C+!Ps)^o1iXNGJYwkO$4ELhYLpN)}+nOvKtF~VhBoT;$DR|zwy@amSe98^rZ zO%0Q%ApF(gE<38h!3`2(#-rstM&H$X`*gnOeMMPxGSY2&uf>Dz?3s^(^6J_%spNZ^ zD&PbLm%dh4nz)&DKc`60{e0x&N-h)B9#0k$uAc;82vl;>-HoD*dgartQ$PxcALm$o zO!0$X(Vyv7IMHe13Ca(6nJdI_9S|F+5=gf)V?&OSHUW~DDmm%1(yZTP_mZ2t5o|xJ z!Y!Za<2RRPHPOaIuD{69aqUi`(bgYO`46VBbd2iyaj z@%BtoB7s*~oF4xE{z<{Xs?@BkiCM%rWLp?SZO?3w4wo5JcXbhq6%kw2Wf@QwzdRBO zt<~dq@7T_tUxw|PiR(cd)_Oz=#6EZOf|t)Y^CK*&p1gm54s<^?b&;!*dDW#Zb~iJQ zlaP63;R;toiti*iaKWwry?%4l_VPeq-zPG07vUVBs2ikK9X2g!Z_6pVAxuRS(-;EA ziIuk9%gdeqv(#qu(A%-gE2I!Vm>uMOdp!Z{rGGA%bL&U(h2jEOu0lz^2@*&#bk-$b zBEwOI76?jJ>xULt0AIX6=AS?3$C#Y_Xt;&l*-O+E`BBX1{qNS?ERQ%xH{5J+tf65a z+s(a_Qc?%7z$TZJWEEX{!!PMq^F~cT7gw8*7`biFeJ39Uf%dG8*N7MD9q)XN?4Iam z{dIdGJ5s~;Mf~5kG^Un*cEjn(dE>Ut3v#AKV}K>1etf3SP7&qgec0?D=*pc@X~yDsIvBZ(jAHv=vi5P0|`P6e*l-|1f~3 zjpx2Fy*4x)znL+tO0sRUoLrAPRnO%VjcE631=yND1!K7}-|F(}>hk6V|GKvtot@b! z`-`J4c5nJI(nf?$XW`=VJgNtgA&k3K3~&ka`Tk;_}XFTUpuMPI@J0 zN)`bt&XxJ`2+g8Y<{^vU#5fjrhs*R?hl)W8p%S*NA}@n?_|Bap@bh|D*lOIFTiIW^ z`4kmNKycy?QjhbIr%qX!9#%qQcmQduAQw^oh5iCWoBfIL2Z|PjGcWv4nC6I?2pfs8oX1>k=U|L z#`eggaKT6J&d$^E*C}jgt{U6gidr8T7e1k+B)f}}6; zABitzvZRroni_q{)gt=)=uNWRmzZ+9?R`0Szkxt}(#d+}mR+8wj01+plk z&Pz!7ws@yZe${$eUFE~r{TU`TJ-xlw1$*#V!=0`yh*u7r`$$FI=@wPb1MDj9I68ub zRbd$|U6pyi%_UY^EJ`*!m4vnhiM;E~tu_nvCBH_*ckBxK)T&tza9}%U8^P66m<)Sb zUsQfsxD?ma6FcQE{y)mZRY<|pTdrSBGp6xeP zC^khPM(X)bUhCS!(do2FWSb~2T*KhTK z@$xG(-@I~wo2AbC)Csu_Vb+-{yfDSMy}B6Yeu#SgYZ1YYvR4ZW&cy88TtRC~%ddF! zZxCTaRD?4~ikM{UK_#HRhBy_()>o!X!4`wV&~{_u_NT7Dalbzm45++$)6S{Hc2vuyu?(}B*;&E=-D;z@O% zYNT9L?270LG@P(li)*5utSopQl5WN;FF(Ke0n~P2j>T$Uqgt>;-bc;1Jv%~-KA`9JxeBI#9t;oyNWC(j zryakE!GT0%-=7;I|!fTTSImGpd7+tzoSCmqT27K{l=OD`nCQ1S=R2fl*P!L zKm{YL76e265)_;u#1gi(qkV6`W?bHHaJKlt(`PGb)^n60A}b)M*?g|5g7UiysFBiv z6Y{U$zdzoR?4do=f7X>Elfb3N*igmq7gDbn?P!y1TGj?DNq>&elF9@&diuGg^_7F= z@M9c-8(cuWsA}!kgmd7D%?qq5;sUJF!pI;2I^+W=;rcO6Bj!{j+qU!Yr0*u$xpU_R z`|u*jfuN^o$q5MvEb;qF+#op<_VQ)KiQ(+$pX=RL^BtfWaiz4djp9y7;6JWdqfvhN z&!Yp=eO{^9!7`5Q?4RmI^6F_`O^p+&mL^naYXJi6vRGIyk5LMLeJL7Hj%ZUv$E{QS zfznh|-~7tlpt$yY`Enhn+d&%}r?}kp*(7)je+&yNoN^Ke@alwFYkweyY>;cQnsc%*2{l zSaAAE(4qkL$eih3L^L2e?=JBEUeeGXG-qaK~<%sX=k*Wzj0=~pWpL~ex^Ik zK>ha|u5vT6)hSY>O2jHA<$ApniW_ZBnHkS&_%+Hu?^5N`+C3R;JZ9XZ`8_Y9?{9bL z>^~mK^8i*QpK$I_32=vidGi?62t^38g1^q3@%KxhT#QGuLJfc^+mKXU91Cvs%8s$O%tkI(;X-h?+HL|}G1K~P-v z`UyA#A3F;~A^+v^BO~?T_Cs5LjOmV8VBiQi^7|Ny{6PG1NlGF(DA%FD!xLEe>eaj_ zD=rNob8O1{jZ8&4etZnS7J2?4PLdykie5-tKV`Qp5AZkostw_Cftpc^&$+lndRWw+ z9s1fA85wynzeHT-PC|_$-pnkYtj0tHAB~EcfpEayBOMlprl+~SBbU8BbAvj3eWsd% zLqoXa<&nrYaow=fI)zCL``|O?l z$M3D?i`g!o_Tj#F&mvG*;N_WG)28qj5W~>S3uYRJ}7`jx11cdqyHS(y|oL@TPCz< z`0kf`(oMf+Q}$!Ly#HRu2O;?Cfzt|D*a0;B48x94gxuiX#7PGm5v1G$Ra-sjBnM&P z2^S`&3m0FQjosXZy>x_8XSrITZ5Rx0bc~XtE_+2Xk5h1{JwGCT9wTjuMK}9)66nhP zz?M$CU0HKzpq{20!K--rH_{;WvtK^pIWv&>V6cV(n@UYQA=Oxe1aj$6A33syZ8(|F z8E8QQ)aom5ojPT^_%K$64#c%{V{PdkuV1fOwIdCN7a=Py9<-B1TJ&^u1Q(Ypm~UX= ze=U&*4&fZ-{p{c*nC&3btiu5mz|Z+yCUp6hjzUd;7_wg)3hjsxH4%C3h{4lmL*xf} zeQ-HuGrU8KYnR5B=5)K(3+gN4c!kXGALBL^jEwXyAFwrR;n(^!gouuvEZnPMi zBd+YDbtDU~!&rs4i*Q$|`R<=QcTQH6Tv=G{*|y21h>t5<=^SxdOn*z(yAAo~$tv#V=T{_S-EpZXPnGR&=as_PaP zZMPH$@h(snR2m-wB?A%yw%NfK?~OV&fY(EczxnW~QvqEC!A(&Y>cXuV1IT9Ev=q^MRra(<}UD z0qgD;@A=fCm-$oJ@OJgmn82L{-3gs%A8*Z+c|!aVc}?_v;h1Rs-BVQ8PS$#~nsS=4 zqtH1!@bmD*(vqCEX*6vM_dY}?**AQX=CMV$p;rF-Pq4mQOLH-puaj7+{Ce}- z9NOx;ULXC~0s|+9=2k`hbv3I+{2;cdH z2r}@42Ggs@gLKag_KVm>&PP*GOa+`ruSxiid5*1(Z;_D)kQFHy$-3usb( z6R)y3wOAobPY)x2_6LRIAjL8X+ipR3T5rZ~LEC03x&rf{nP0jSeeIbA$~mTyskW0{ z(NsLKLO?ls>&3{15>oC;b6#>Et^xo-94}WA3bz2lxO~yAT`ukRNX1Waj2Guug=)ja zD*Ml{vby0YH^s`X59u`KY3AepUhh~1tWvn9U*~BYmMy@%G(21%c5;H(;3)o!b%|Oa zqQ~Vk^>5IE<7W}E=`0=$e)OAJ;crc+Q(&0%IJ}#PC@ShM;bFi_XpkRfCgtnvt2<*6 zRzKRN^JZ=|+QntbtFoZ2mHxCJ(Tr_ZeM_t~zqXG5{zKpW7Z)?Vs4gFhl#kIToZA5b z8=&ZbVJl3YOV~@t?0vn5OS;j1|RP=oFMugcAVvI0+RfQ}g9U^WXo(HBU|JchA z&N|~;GZN-wPu&u`=2)8ttoUArg~{}MdeN44M+DsI($=g=#_BCwAKm`=^xF`1d6CM* zx~{z&D>V(Xk<*YbJL8?n2`5BTw}mN9YIt zt6`MCW0h4&s@ovUi~* z90PHWMw7|d#4IK*v}a7m;Yli9V_HHT$CI>^Bm{QqvE3h`Ht>NvOW$ZmYrihu2xGV_ zXHjz>JMcKuz#sVz%y1)g#9WM(08xZ&cmv*SCm?(BaWag6X9ll!tuGB}VH2&Twb0!x zA=9<{Y>6YoUUKrlq2=#6C#+cqeZ*jtiT_KOugS%#)=Xgw`pFB$U183%4>5=ZHcl{0Q=g+*H-_5X83Ix8Vl_y@Kr&&x6jW&V4Ui__0=B3{HzgS*?OPusZ629=;&JlkEUBk*vT|L9TX zALDBrm6bNm9_r;blbJ`@*mmsRE%~$6SOQ@fH;Y7RR8?&NkwYnZR`6lG3urjc>&NRzS+JVvV$0=9AsFLsa;*ptnQg2oBwV*$)Y9!s z_3#+q?e*I~mT;dfeLvI0oEMJ4NuP!xz2k!+lma&h%?w&77|eiSm~k61a#HZ+w&-4S z2I#0eIR30|ql9pWW{(*Y1E9Tl^X35v6%PsPrkImN=CM6)6~ECmk&y6Bl^{z zo(60i^of3cy?5ct=S}kyYt(;`v2hy$G8WeK7a1c4!vA_Fxi!y&TUWxqp-4mhb{Vh0 zJn?q&XK%`5mt5ML( z)StNDp5Yfj)#Q?ltLo!t?(agr@?KAl3MixYP@UyOS3&6HqsM?c8{R2zZ%OfjrvU}J zOJvT7!Ql8*xZQ`K1chgyM$()+M4HnmZ!^ORvi^DL2zSJp zQgpMDGrwi%2eLO&8J7m})?34|oB?8)t`EW4pLNy}hOzEM%r|%6obVKSItU4Gj$^)84%J zl+;w?u%?mu0EBiN0h`2;6#3g>sH|-{oiS<#+ijDP6TE)Qt(0Zue^Lt%T{yR?X z0}qDccr+}{{B{&nc?jD*zo`3{1SI`e5sy>Be>O4F5Sz;OxlJ6vw%B*IoEc)(o1f z7M?61@EQqqE@ckD_Lr`cBO4Zp))tiygt@u9Gjbf#GBPL$sbt?CZfqD&T?_JYTd=|V@|C=gTN14W4PHbIkPp*j9yT#b)jGHO*Sbhg1 zJ_ps_;(*prN^8Jm)28Rs^PR%%sdjkx_N$46q{&&O{H+Cu?wxO5+UhuzInMG!na=+ zntD**Sp5=~wv#K|ccc{IeCcUniZAX7-U-$9d?BT@Zgb7-PX7f~Zsy@DtY_x7VlP@; zA=g@8y$bWOzt3rb2aESMK~@8?Yye;xT<;-JuBF^6)WOwJs(?#IHqFrW_XVxgh_Q3>v&2t)_w)7j>rx&ShCH-2T}o1K_59 zV?BL4;g=dO?**%ja19B(0E9CR^(@T&{hE6zzP|43b3%JN+$BmfA7zeuS?JZ%Av7SD zS)=PU0Sh-D-ACAR`ith+e_5W`(eu9{m6AR(R0EU>`Sxd1(Sh2Y7K85LS2Hqm% zTJ8%AD`>=W1+xfZve_^E0ACMB0)D^BK+44O@@bQ^DAOf=2k!K_WIb6T+Yd zAqXsNL8w$DMr6-!&(5}`BqE2+ zot)g0A16L2wV32<5nQ;EBw&WFlt{?L$lu&V;%GgU+d??fIkolVax(U(=y`DU%=SCy5z2$y-5(+V zk~df>S{@1@tcggBK1a!-xP^l)B~FG}hWR>`df2_&hF*gNTn?vyuF zjY#(ZHqzUcs&aaV(-*5iTkGL2V*x&I@Kpnl8)43pKedwx-@FHIEz8NSs&ra#wgg+o zRL=y@-G>e|<`FaB<6Qp{R!}^1t}BRFO5mIuJ+l>KkH3u9m-@^>$w+AGeR1kK;Zuvd5PF3KFm0zl*yh2h`|VA0Uv@H%4=2FodZre* z>=TKtj-qDYD)#RBng8^q#0%%7bjyNzQz9Z+S#CayaiY|_&1W>EC3B&9D6Wdx131LG zN`T*o5sNTQ%J20_om4o{7!k9IidzXkpx3=EfSoTzHF24b?qQS) zymLR^a!S^nrim8z4&k+j8A;tnQ~A9wad&Bn}2DPY%W;JTTU|kXiN?rCQe_v>M)9pdzSd zfexZ4oo{4=NeHE|w_gj1?ru*h#}jB3TrxdSDu?Y*|Gr66r1{6@o9J1WzCWXZsEQg= z`p>qJ^QE!U_)&lV;H#>YbSNMt!Zdg@@rVy1k0EP&8x?c$?1Q+7V>iUUjt|y+puaz*LwCbQKO@XQsCb zLH@CqyqzMHaVK!?ndT~VSxJRA_Kg`XFa2x?y@c&ewWug>^Lu?++pg|0k^iozE)3|a z+6wydg{Nm>uLBv)&v8jF?Cg#={+o}&(7V5=9P^Z`=2>dRt&5sJPY>@BZs6kTO1GK%cshtz6_1Az_ zh1R%Z!b*7pF8(fr_5cK2(f>!5n7C$!EQsUoU^fWfgfH7x(jt=rPHImTwwRtQ;0`Z z@VM*+m6_)zu#;s(9r>}Y^|BK|zN-hel*ZwZY9>E??%vn#?lmFD!dJW1>MJUgHz>IM zoUA60ok9Q(a$aS@sBtsr+@#ajHRiN53+p=k>%g&JuglD`*|&GvV>;u;314cufIqOq zHrZDUh=`KQ`mN0{Lnt5UZd~GxA1a+6ttQdqy)kI}Nus5747TV{`RMyN*)1kl*})tj z9@QD|2)AJiGl3ETr#zLf3G-&e!;zUl;WbjcC{Z@%mI%?ndTNj8XGDzlA%HqA-t9|_ z!kr%bm0UryrNz%c0v=F9&hX<$CZRbMoEC@96=ujf7ALd6TURwlH@%pjAYsNPH_L<(*!^$@e~oQ@#;LuDp#LITUnfCAGZzVI+HtNKQv9hs%vYA?n3z8v z$9FdkK*0=b6qanQ;^*EF;uHu>@q{ZSP$6g5k09^?`NV15;afjv$@px~7G1fjuh!?) zb2ak88}pHn@*MQgh`6D?`HG~Zx&zt;Yw}I&>ppzDe*Nwe^$d#YHkqK8IJNK=^UlK% z4)@gcR$q{q`F%V6bw%a4{PkHUr`Wm`6x;$Mr{A5$0;A&x3>4OrZf>fg-lsnC7`8m2 zci{PS&mj3%(hY-`Qc)3RgFc^)mbTw>;1dX%Tu*a?Sd>kD>p-8(rpFZ(_jXVw+sB<# zI7NxTG^@bhY(_%9rlrLpC>6gAcfGy#z@#_N3HdLi zxLu-#hz}nE>+*t+TdyQ25Kv}#?w|`ffuny6NsFaKkXTAMOx>}aoKo%mA!PR_!SF8_ zWMK0rjfC==n(@qTrjjvO*$5&JQ+cq2UPb!t%E#Uo%ta zJ#*SMglP@@yk!APal zI6>*!n)@b$-|SYrO6oc?9;33evo#S!qA`~|m|<4@v#Hu-_I7eI7i7@!Uplg`EF)Uz zT4!gzxnw8@Hxir2@R=t(eL1C|ZBpmpN+}oT@GI!Ti@?Fg-&?izlk#cS9Wyk4!x}k{ z809*(sMXZwK50g?k!M-=<`IHG4nz4z9{;evNCx`NOA*(a+p^B=W{R5m8aMKKDi`ND zMsi`vamJ@l`IB#njvt>25U@N3MI`d(Qp;m_xwueKW@%=bun~9E)%VE%iM_`RtIx?b zjXcC>#zEKF&eu2GD$;99zc5u1-jz8^{a{$C?@L4q3?H?srj(??t5eX7uc~4b{CE4S z79Q^JmlcG%Xu103_c9N)vBCV%`;6CG6heOk)NX@Lz<@L zzrc7IY!jcj@IY}&gUyUt31ZL-Ln`VbM9LdU2B^|8$;BU(nd^_mfR$=aRKmeb6= zc8BsbHvyx(@Zy> z{Lcm4E2%kB(hxr1AZRSPL9dtDXlwhv_V&Ko`soP~3OQUF!?We`9#KZ35}ofs+5MII z(~uiiiqo6lo*!@g5UHX4qrsqzf98<(cOFxXZBV)$774!Kv_k4i|aU@!{!H3hyKNqzT0kHW9)a!vQ@zes_Z z8O!zM^6D|#ycH8ZV&aP-!}J8t&R>&o!bfMudkd3me)RUrVo6%2gnTOi!_Odn&&dt= zS;;g<$V~&C%4hS7=&m^<$|s%hQ^_Vpj6pb#x8_IeM<<|6~M&;@XCWo={LCmyMJ0 zI)TwfaA8qZm8(Xs3PJhwXXq^RC4;W}O88|6(mfHMbpEXA%QMzJ&U4>UT@76e{BgrC zkQNO#%6<5k@qAB`!CGu7>FozzI0q1P_k{LWqM z!Gd_*wEp$$45@~_A!2F~*CfF!NMXN&A@2p0F{N$-Uoy-jfR9yvi3o6Uvt69k>-=os zQK|g-b}{)27ne)1%`!PwSNR_=n9| zjf{-=%m%hWbHp)1kIyVx{hUnj!V$&+t`kT`2*CJQvS|ta`x;EBKciOD2vA+aR zgCWRc;VgJ+=*d4sMTN>RH;l||JiQum1Ckb0nVrR#5hm)mK;LFxR}zcqtnk+P=p6dw z!drbkxdLyQWvi^9+xs)HUClH9_CY>oCVqDPOoUk`V$Bgc;GoR=mm4>S>OSLhK+1Qo zQxT!0hXy+mA)4qh@q&_N1-r{D+p{BsIS+X;jN+;NCe?RYT>L;nh>-0jbbr(Z3%THT z1iT%s;6DHEBlBj{)fJbH&5rlfdkj4dTI?C!}gyK z9%O*;ndGL$!HC{==dxeDnogp&ZxDx`hIc)Wc-QQ5S_WRgtf8{Kzj#th3mcD}b=xXsA^rR=vM=8wdu z{7W*l@4~&DiuTE!H=R_KfdN+gB57z4v<-wJ7$)LwSx>iqg$=0 z^_AHH!96Vp#3$EleP~k%8l4P!FU8o}CK0^zRp|-;%v*kRna}Qn0r7C0zT4d8;vV?& zhJjSJ1u@K9+gW0ZaA$BK6A#|E!j-A?Qs@l{vXO4vUnFA+u_;iY8FCd5$_lS%urx*P zItuAKsvx689m!D@^!V8`&A&_oI4zR2NeJ&w}MflqoFzQ1>N*g~R?4p%MaL3gOOcjuFGeY&CxFuPIzZOuMY+EaUV0j60=5*1bg5 z&s_mOxOLYkl&BD$4+mVTs1Mi3V!4@IbJ2@E^Lw5~^o=u@-G8DhBNH_Tx8A6==h_+u zE8k}{kw4W`BB>W?FmO4(ZgXEkzRA!^&QflLFODMV+;*zduGO)vZK(AgP0#R3=tYeQ@sU*F&%%#l`Kw#r`@fCtTa0 zs95~f>(^z_)Ic4DM6_DuOv%P_k93$Hx#u9=?Z+(+0_>jooX%K_so%LIav(W`9t@-h zKm1EfemsckG=K8l=40qidV9xx?i^|o?{a;DjlQ5cbvGOxAFRy8iEsdkf#*KJ&r|ck z$bK*jQ~*tg(1J2gI-VaC&k(9mABT&3fu(Z399~vDXdD*a|39fm*j{wHGNe6>dGCIG zilmJOFy&skpH)Bq(BY!0O|x6M3~bmrNZpL}^l2nL5!fl{vHX9T;!gG}>B?SUE^{Aw zi6sPqeS*>(`0~Q) zVLwhb{rqZnyl(lZ#G379-})8FI&PJ{Hf---n^x){T5*`7{@BjVtU;NeA_#eZ$k;IV zTxTAC@2v(wU%M@|)xSpipO2Tkin>Dr^cNX-;=^@o1g@yA?hK0dm~Y?KM4ST?)God_ zEF8npo4p*fdGi|_UaRKq)| zp6#Kc5~~lcjg~2NB8YT!uQ7nif#Bgb)_X8I1KCqPvy<8MN!GI}Uc|qkVY2!;p8}DCG-~F3tda+8q zqe^MM&7j(64!_5KtYYkJ1FaEFWf<}#u++ZTtX1*3O>jsGB7YejS^}M z8UI$=Cn!9KLQVwk#vz4_N@^V0|k-a}JMzn7@x*ABe_JSXq0hCS-a*fu!x5DHxy z{)eXwTP}UcUeL$mEqbYBl*wi{V1;(NR|N{2*o`kX?VvoR+}_cVmujp!;{;mq7W=VE z47n%Inye1ze>~tX*mnY zf3T2k+H|L>0KmdKMbGLzz7Gzz&Q!Cj5@g1Gg>u*DiSTyc*-f|VA#8Vu>0R$7(+=M%7BLe9OB5F}WA`t-@HdT6ST+vEl# zf5Pka>%vd!(?mFv5N%&YcDRkLe*G&Z>mp#_fZT{+C-3-{r4r->TpA>0>N(r_XO(kY zx~KXE2DU!Njs_O!8s=#j2jR^z8h{Ii_iStgow=5#=}C)BDjo%Y{m*I@;TD7@8Xj1N=^Rd5oj zs-0O|9YZf@X$@S16I;(FcU>NSua|xS0ZNS{4_grk^7cGGMyzx3n3{GUKKCB!{HlKN zYtLIYOKhxL-mp*wO4zUaX<4CHcPn5yrfPd^7@pG4Ya56ki6NQ=W#1 zx%KWlL=>XuzRbiE7!^pW!ylNkFhxG`ZEpjYWc<|E*@$+{&dl^+Z{{NId@@ChxIV>IMM8Z{tjS#)sw0Tl{%T5Yau9Z7!Kcaf)Fmb= zkM0*b)?Iud{-o#qYD7xs9~68*R+oFqwtd{oO=YXn==2@O8vip-LNE57N)p7Mqu9B8 zU}$JPYJZN+9M^tEGM(jLClK7=g>~m=o3_Gs@~Nt7_Jz`>l)Ek@@^|Xjt5&AUg}>aP zbrE42cJ-5Vlio!}qj{!ZqkR3`vhtLkDBWyOm-_-g4-qu7NEGa?e~aDcF>>HHBHmHC zIX!!Jvc*Z8;$XB-utASUUC>SG5WktgG1gy_t50;X%)}w3+H-TrM^$9>F%S=xoCT$ zBiWjRlx@3OcbeC*bp)d=N6e3_ZoFrWTQ9{A_zK$QTww*-x8Dohsrw0iwb9WcoA%Js zzKl^xOt*Z0)oU2}pF|U#`88GEAr09J+sa-}TpTQmNAX_Noq7(UK(t#avrRJE`l= zD=65^liisf;DZwLSzFs}Olb_q!bqobW=|ptV%^^Os7Y~kEI(4l7I<(jZ4`5&5z@o0 zIwVBLj0Mp*jMv|-_zuE7CL)QXNQGNhK>G%#q^Fy1XAtUp`}g8Vc$3LPJ9qb)^sdwP zK1$g}?R)>>Sc`8|h)Hov{M8Q;#@chE^=&Ckem7HmlCe4v2@1t>XkB9M@9#c`B2S2a z;Pvx-;d-#*35hMUT$#&@7nPST&x1H&x|ue95#cUZqnqeY?gOJVqMi2zu0QKJkmnWzvbw&MJ4FX7HnQMvHyqg*;AT5 zL1cn&2&Si}=36GUJrzzce>}Od(yIkEVw6g1$BDGs%E~hR&)Fj`&ovx!1r!uG5AMpy zR{GYKX#lIh$bH99C@4->L z%cv3{_Nvr5-844$F$OW;;V`aZ3Gqkejenk92ou-+mY}@9+QUk6KXhlh{(Cz?4DsWo zDl@>jQvQ!Bp%+dB+fJTXT@4;;2;Gg6Moq13MEjdfbWnzcZACwjG#NczHH3v6W?Bd8 z>ONUn$)mT|7javWy4Aa3YNyq$I+yZr#QELzC2&V=2dkS?4{t0x*R9K?_I|5wiZt6@8nx(h$7`2guC3K+{yGF0M1yhXvS z#PG`=OfE0pT|%_Uy$3AP7W0(P$vsOuJEKbG@sz$3vh|zGGwrp2Z`d2u54UkgIm++a zzJ_o!`R}I9lFQ9XuT8~)QuEJ&^2#sO5`)qTxvWB}+U?u@<3hIcYL6P0{t2`4m;bj$6gv1m`(IqA>97TTxq5(^Bt7*}c`pqX4fe20cY?8$&zDg9xIC z#D+@`A07iZmh1w4#25BM+VyqGXthj!j9^g`zCCCWJxO@S-Z(7l!yv$d0&~w|abRWoSqPEjrAgasFo(4Pz{0>>7f|C>XF? zYTtRZBt#)fDu@fI!%a_aiOF8;Y;RAUo0|&?^zlhs799o`{?GGeWmQ4+X^-W|mx!Gx z9VNq`qqx1DQe2#=%6H+tVQVYuFFByY@(5$b=iZoj`vFcY3YwfP9DXyTU)a3F0_2IQA<` z4b;T*^Yh%utkv#IA3W)=@1IsuUvFxtq0vJoE?&+;5ccyu2*F#yxNWGcn^9k0oJrepPlvNZ+==_xy`C2?&gIk zDIsF?C-R4jFBG9~1=SFPlN!X2<5j(66eN<&pkTcEXjK`JlySq7B!`7pcfu@w?9|<} z7oR^AlcnI1EHyeS7hdM|%vm}|`z5}-A9Gu;GwvsfxhpD5!Rj-X+4X1_ygP1zEQUM> zIRkda&zVNH9)hW9pKf(lvSF)KmgN+A!LJdCICFd3sov$2lXeom7Km959(>0+{UOq1 zFx<086kG+DAL3fYW^$KQqMCYtNYs^JpbBLBcGyN%_U+bE3cgL=WLq7>OSLLxDa2Bh zSuykXgvG>&MKwh~#-Fp<=xi($!T1c%cvXJztJQOJbR;1{W)cfC^Z6#8T)5>=x`rvU zQUysxaWlJW5s^{3ZINucHu8{Pyg*7p!4|6H=$KJ0jsw@0R#tpB)%ZuM6Y+@2eu|E< zk(7OFh!MaaAAMbYeSVh1#`<{vSoVKTr)g6Ll8g(hTTDzQ@#t>4HCU#=aN=}nbE+WW znCi+9&d9cHK;>snuHDru@7y&^k1#WTWxOme&x||?*r@A18_e!QyI%=HCwP0ToRPx3 zkD7Of*GYQm`WU00oaezpq$C^`Mw%!RFZtQeDK@j*?>vWLAzaLDH|A}$4h`L#AHRwe zwWRd)axKpNhXmX!D*Rf;UcKsfr|l$7$^2PX@N4)iCpj&DK_K7$7oHn6%dE$=2)}88 zR+3Cw9LwAo@2NL#p3+A+IWO|zBtceLqIK^8W{cq>r<7k)8(Z;Gao@QNyDrmK$JYe~ ziY28UA2jnfI@CmFud9}M(w~=-I%}HiUEp&%`A{^{uV)^u@rDl>PfkX+jz!(|S6o^C zaCqWPOw3edM1&-fYsmLm-dHq+2UY6azxVLr!!JDX?!XGd4gB#fN8jQ&a2Sb8>Z@yO z)%yMxTQYX2weUq>D%a3gmck&lUd(!{hgLLL+t4Dllg)=|u-ix5KyeqG){DLs1 zv2?@5M|p4!M;iF5N0tqEm1l zTpmYUOR;0!6dN;Q-E`+{av#7Ko>F-0o`OQNWK>h;N!Ni$gAOqT1$O`1p$B-bpO$Lz zr31lrBj-2x@8?O03pX281~Eztk>C`Kx)ygCw%QlIKAyjanm6QjaaL27ITPOQ`hn7^ z`@e5dD5`n5WMaGTmuYI z_U4RVsD=S5Ss3ZZ7{Yf=&l%UG8Ta}u3gdh9wOjdefcF!l=*FS137Wl~`aDuiJn_XIDVq;%*}R#xrn1rxe_8j7en%zg_ML7yQJmQiN9?2r zyLbKB7~VG#wxu4}wxu@JFD)+0w*jzeCk?7s|AN2RNPOK`;xzN~VuON$0!p>aI1hT9 zfdID&-5+cPd}6Y7H(7mBT*CqpsJKSS_ux+vw$-_c6dnB8FH1zAXd|C^P zi_0Z|rYMDcfM_!ex--p6A+LOWFJgh9bI3UhC+MKa#`eoiJOS@AGh08(SGujOSOU)9 zoRmaQbP)TZOKz?ZazIW`+sP|{KqK~ItUb>2O9VwLViO(0>2@JcpKd~rE=@}2D|~qn zX+B`R`KAD=E$;0`LrLW^2xcZmK6>r*U7Cb+wZpVQxL?Q)pPSTJ%h{l`pw(E(Y1BU) z&3rAsHyH0kM9gT$mk0^VkDB@Gq^Q`d@EB&4Y#Jx3(MxH^S;R`^7TG%HeW-rNuC0!H z`x-_{O9~j6Ql4)V~SN-Hgluits@V=L-xs6(AnGDd$H*= zFpx?2NP~R5b($NMy<&t-@b`@MLS!_JBm?~Zz|8lZEtDCc8WE%+i|4Scv(xuWM1pCP z&Eik?!{-v+K7MQm!`RIDyi%U%aTqh?YRI-pjY~}29PF6l0_ zGu3M}d|a@7MXHA2PQ3fo>dnueE-iN^Cn+IrKf<2h6_VadSNkPGz_oifeoWY2t`Zg% z%(A6ARpJS}w@ghpoO?-88A`06u+gxB2mf|=7Q1p{pQ<6PTj}-Lp$UWDb=|QPV5IC& zwH#$)3IL`C`I91pgDjV=c02dug?QE5EUsFOJg1cunl)Les%cRA5EUI0L-a8wMunA% zR;_pR!1;t$LrhD=_gKF(4lfg~R!i}2Y?U;9HMQhxtE*KcbTKhDa1ew9D2@hyR%T`T zWwTZZ9eNSzo238DKjam(=`tprX>R6w#s^Agampf1RaWNJop`y>r=;i^WneR*V3ZS% zi9yYQJCb-{@S2biWJ#Bz)%0OogSv7ZnP|6pI$nbhf-cH6e&w5&{pQU)slv1K^TfBt z+wx#_ap^DC)^DBE#eHkgo=hTOX)g{qgH?U`DE`$#w!72P)}|bKhiZ8>5i;O`CMz{{ z2a%Ln`&{XC6T8Ly4b|J+FS;{l4ReBT-OUJ@F1;!z`>u54>}$5 zi5xk0Xr2Lq0G*^w!FF-WFBpt->z0$`;_0PD! zXJ9?$rhk^ve5KfFN0vF}==&xnY*6hmo;2X|Wm7-Gtbaaf?%yl*=chNx%B&0w*OPj( zv$A^4<81pA@;nz;zNvAh7)(b$IXW22NVK@LWWFUhO_`M&iC9vr-fi^a^kdzu720`T z0n@?XY(%1CR0b|NW_vtH&{|ig``+cWXM=V4<#22-+qoW{ikc1qgbD{RyY34L2w3S5 z(Ir~w;;WU5(*C~YYRW}*TlL5R5IMx%}s}?nY93T>@Cw+0C_xPDJ=GJ%z6zO4P-k6#cz!^A| zw^Hs9VmIbf?@(epB^idnM~kOp_bJbV&2Ec}rRm1DQ7+pVy<8B{J}@wZeOhlfeUIkA z2M+-_8X<*Xyv5Nbi#ZzNzc4Jv8JXTp0xLTJ`>7~>rDj4OPs$zkl%55&qC!3huE!u! za^(OniGbw?LzhtaV~J}xEtBfP3)0HgR?E0BW)fB^iA53JpH%PVPj=1DT94Y7Vlfa~ zx17}LxXAU$cCw2GD`Z7&?&bF6Pvrcx{~R~lrnjxgkz}yvQWQzBJ9Q;#crh9y?5e;V2p)mg!VMY{G8c z?^RBO$x>8Q65_E^Xj5o-nBR0~I~)_XKTJ$qk2uim&0EtDYWU*VQiA5j2?Fqw?;r>N za~;%HSV?(-IBeUoL)AWZB}v+(l@)E3SmvK#{{Ic@Z6!NUygbM9AN=o!vJbwH z4zeTlfi#r>`}=kbmcKZkkR&9y;0b?a4(JfQFHotgm z=I-8JGvVZPSs3$l*>fTB>~V`vVa)6Pk*Ax-<~$Wp=w4V_8X+um5(XR=bm;8%k0c~1 zcWIlN_9i7J{wX7LU}0`{uWzEe&NWu`+(>wT{^HxDXTW2TrNI0fJ zyc>*1Z|`7HvcKTRB}Mo8M?oi%s6+Q%Ft+)<9iEf<~huK$Z{ey_Iu zf`b?zV3Kb2K@<)`Jw9u!<#&C{Ieva(nQRNYmvpt8Zk4<^;(l2G(@fc9cV+tL$|&t} zIxB01DEX7(Wu75oS_AU)laj1>J`tl{2WYeaHc%GarXYFAZra>uS zDgKUH!>V-oQC*-u7LRMULtXH8=+y_K!rd8Sj^myp>zldtE)5K~KEo_=R<*kxJjS0H zp70TKn(YAe^6dFbI9M%>wcdV3|5!wv?g`0cC<%`PDoOgDzi#u?plQ9j)6}5|XKAv_ zS|Op!5+vXwrzWqwR%Dr$Wc^bxyA%Y0MMB#MH zvQ2JYMP~Bl@VzOS4JsSp`<{Rxmc{m*Z87lyX?R2+557ePCX{c)*JnOZ+D9+q)75p@ zFy~7IEoVT&@HxHfg3-~Pi$B6GT|eiZv2-ha8foCLxU&6dN$$|Na^YJapR;ZF(wp^p z%82UW%VXF`S3id27WP#|UYrXRl9CI(%dC8S*5#7ldp8~CyRXBZxNy1q3~%!q{rjEU zwlxgnBp~@1V*|lJCXv3s;#K_j=FOWAD=5sR!tukFoSvRQCJz_x&Ec^zRSDU*_{_h` z!J3}bnQfU6ow1;rdH*QAea7VF_0InVpR=-VCSVliV?JE^G7Ncn(%eSM4_{lMigIyL zPz)#zyARLFI~Nw z#lT|ch0YQwiIvy0!}T1xRpOV#)J2{jIj&9G-)~ARlQf{MqchGr$^Bor#hHLeIy`|Z zys*%b$ZEP&$&cgq5m+PoMxr_!-iscAlFGTEfz$m^E2*U=IfP%Rv1=+R_bfCz3-!)& z+VsMNg!by9%#NLsWQV9=OW371P{IKcY5M0!HLdI{a}v}{Fx3mr3U;PDxWyVSX^pM@ zEVlXbC9N?`jC8cwup&(C0T_D*K0e4^JGGPExp>fC*8icrZy#fL>!EGiY3kaN>^K5; znv&geFxfxb5K2{_0vmQcq9`k5ls$q>31=s?pWRN%HQ8+$GI)9-n>a(i?m50jsQks4Z(B{+54E7 z+%V=(1t)R9yvG5^F!nG@!ZmCWb~OMH2^ys}HMtR{!4x>Y{Uf!`21LsaUM(tS+H~)K ztR$3=Z$un+lU(%R?I8?`O_3gDMrXsBm$kIter=6Mks_V|^^kWTe3XNIeX9)Xj|sv<0GSA=R!iC^>=R>+>1T2t&6SInOb^H19Bu6%akNDT9ZUx3b$n6 zd{zF4iFYt}_b%}8y|3TQIL_snk5L2L(@D8Dmq3^paK;tc(C_0yYQunonSDN7pnhn9 zH^XAbC><=FdB2pL6Z1#e~xN<%48s@>AnQP1-b3T{7aPdRnI6L(S>`(^+tT5o;Dth+h z?dh?qCh2t4YaGT@1)?V$tQ#fXHKVH5Pis%XQ0%3pl}gZXT>9qKem1Gs>iA~cl^Xze z_RkKTK){eyQPHtz#R2ps^FFUf3>7hxA$#9yvn01@?k*O=5;OVE#=-27T= z9ZDAAGDLzztE4iTn0%j}wstKkIfq6q{f^J46=DSI@XxMXSF076%Bh6Eir_c(W!Fp$ zwrq)M-g(vqy%$?BVQ<~#${=LtJQtXXtqx_u6u;q~P}%Syw7iET>!LKdIDlG{?Dpu_ zZH7yUw;LZ$biB~5wooC}b68)pC4lVmUk@8PpfU(qz%Ouke7u>$R_*Ih;>|*hM7mPU zEQLTzULNKv_|e#OK*XM?Ii`82uP_%Opl=crrO0RxN@9O(;qJr{UH)rC8$S>g9J@og z3t9-UKTgO_Gpe&t&79F5<1^gPm?NHVkMr|y%3S|JStns?QFLGJ6sjW0NWY=ry|I!{ z`Pql=cgi zl?9VaA5Hi7?MxK|_(06x+ieKX*urtg#ZBNB*5lvFs4W_ZxEQP>b$7sZjNLdhpKccjvrw zZRIco?MH~SSNxr{wPl2sZ9NX$YW_4*?ZTwn%NeV z)YR$ui{G?kwKvK%<2b?$H%25{S)5chnQW%4E!yc9!EY6dvD+$2|+YoBncx2 zUP2iHxb(@Gi8(=2I@@L$itlMl&9TFt2!jF}laRCT)Nq_zzDL;mlMY6541Z5c7X&W= z1w;@k3!7%%E%hf@3JvfPIyqi602OgkeR+94wlv6K{*YHRTA^FsA(SbhRkhkg$aH*Y zw(c(s36`j9IAz`h1ZdAnaQ+MV^etP|@@A*5rmLAK=4SEs+NHY^#&3L|*WYpMF*Vg3 z%QTvv)~4as<0tHqi48i&z9AuqeM&E5QSaEBva~Q0P;WH*^JC3tgAfkA>!w;-L(^X* zj()z|{Q9cb^Y*XVb7bkN^)lH_G^T$Y4Gv7Uwz}j$qn^JSMH|C3Mq(w5z(PPn09 zMUx=@Jb*sLuV1fC|N2#=|2ZYt(jpcJ06{Ssa5l)GY3KxWML;r1!Y@mn;7X=P;+Pv@ zf0h6F*`W0g0Ay$l3C2E(ug|_$J0#~RLA8=(Zn!Trl(unf4%Xn8U;$LM7ng)2AFUq1 zd$4zwI#^dG%}1|alxhLnxK;3&T1LTp zvU^1iqg0Cx24CU=%qGz?q5Dvon&>hzF`+GIKSpCZ(D)%{lwMeFSz~^|a$!ZOJ8&x8 zCmZ-???g}TN{vT#G4Hx#7&9pl(L?Vs^f+$?#7*M@>j2^)S+5z+m3@W zMt`diEbZ*u*Us&n(AYsfRfbiZ?%~0(1D*pk8GrN(rR#Pb|J>l@j}>Bl0M%aWQUMr5 z80I6THE(Dk@9}T^gb{k4>1nqq{smC)fqW14d7TVt43C1iL*dx*6}fDSHB{g9uq92z zZvNeXlS^LH-{f$o=EdX$k zy1vTwm6hI*RCk--z{;GMSdnewkdG>Y1<|M@bo-D;bEnq-1hU1Sef~UA^KP$8i01xa zhrB~OsjmO6n$Vr-FL5dUY`U?-`;;{TNODqH5j5!T9wfNFxF0Y~qRYk~ITaKO{t0=@ z&#?ULJ1qF3&@sDje7xwrC^i9wbb}O!4K~n$kHMkMd?TkJjQRB%Wv-Mv@0pnmuS|In zC>&8ylJ?vcCY&tL6Jx`?C*S-OugPhZhqsnymN0)HRjUUAns=Yn4*u4Nkxhg3I?r_Aj%XO0jFWl9p~jny6?fL3!1l?D_LooL2593=01Tc0`#SrimxF zn4OO=bI&<)qpi%$%vTW16EQJ9?!J5XZlTfEgnapgR$oxmSx6D5UCy5ANV!ulc8evk zxx9Rs5CXz}C$Gocoky`v7_AF9%!EiuZJ)|3wOHi>d3g;#Y0&8PjXr9By4v?cx;7` zwox6U(5lqpe|-t%9N`sxrwjH=e`R81d=2Xz*~o|(we1;%V6my&Kn=u;lvuRi?OU0T zkc)KRzjv>fi~D%J)6QZ2f3EP$^}&uea~5p_X2Z$pd+PT~tMz`#ezfEY^Y50&SVqnI z3QV#rCgeVt;$?s&5P&L7Mx1C=`hLg@6O|79CWL%a|VhEv}En!RqR?%8$G+XVP$EF z2DA(Ny^7x6{8X@~uTf{XCvlaQPgh6h@Yda=n>Qa&P>46=IMA`Yv@{~G(5;}XoG~mK zGRT5?A75|E;L26 z^_GKeNn^8O0|S>4-LBV>J_QG5zNr=^<(XITox}fNQsbZMZao{Bbi3F$P{hG!ZY(7+ zJ$<7yKj?2}O5F4Ck(2+(NrLUt_9O0T^LzQ|v6N9s#{EddLlV+4d}a7UrJvO7@iJ(- zOnp+0Vv9oV+LWJU}JSE6#BK0=m**hqQ7OK{< zCu761^+DNB5rL_d^v<}WCvc&*^`2exdidkMi>RwzY+3WV{W(PICw7M(u-o^H4lJxXB7$?DaAl zmGawHxVkh3uZ;2I=MeUfPe>%)ZJrW$(b1iN-QJT~wPhEc+YtK>t<$s91~t=zq}G5m z@Vn~!Z+)C?D+Xe!K!qKT?nUSM>GnIlgQKH$a7!0Qh1BV_Cx?+S;JLK2fn?=jSg8DipvWo7$79aAjLJte)&_kXoHX3}+?Ai3-MLvghGK?7|i{a+Gt4OI?HA8}`t;q+t{yPFUd=mUoGyjE`O%W9wzjscRLFuTHu`k&!gFp5 zBYHgAGo!H=C03tfL|kttFy?pg3f5IrRG`nuPd)Ow-y^rufe!{M4~QHbHuQk7vYF@4 zB8Njb#NR&)&x5%I!hERq{1_f?#b4>Nwf<*xM}qcPMqj6))~j3H1l3q`tVlQnfe?rH z*e$ReJAMbY!#FRxpg=X_(U=&T+@2Sa264)q=%iZRzKixEL@@X4xWX%S!tfdo)vdkp z6jm_}dcQrQ`RpK^RNHznR}-iI*K zi4OA=YmFNYV73VC3L2&K5Wor)!DFP`b}^(5SaNL6LJz}b&)}*zCtL_{Jd~SlhwFpa zycc>sPn`OHbiH?6&wJQEUL3L#qLPM{NJ`q9C^RYBD%xpi@3ImtBeY9WNlRMVrM;Jy z7VWg8y?@WQ!#U@^@89?QbIt=N_5Qrx*Xz2T*K-*8R8Re03yieS%jG1`_gWT;N9w=ZI}P`ZaQHdP6HD^Fnf#Tw=j>c|^~(F}g_4SK%BQuoj)TLuGPVMw zqj0oi(rKoBLut^q0F|tv+}R$p-iZlDEuNrS5+AH4Rgt5ytA&}fYp(4Pm@5b+ND%qD zp01JW1lDmgLo4G-%Tw|H>6YdNtHMM>KzssuX&RwI*M*4at~IrH$L-cY@UgY8Z!MgM0Jr&1R>9xo+mCzP{DCz=_o&&m?h+ zVbk(7Fq51yEV`^pS|1JA!g$tIe96P2qJIAV=ism5^Ka|+_CiND!C>960c_>H8&4y5 z7)o(r=cP1l2oRQ+r{>^Q=Z?4LXN{nzRFxwf46DKzAGfJr00?sw4+@6Yx}V?j`Zm&jAM64d=u=?)u6Fprj`ZICt1zxETk0Bcf%z+V3RW(4 zhQy;_0wR4e*F0uwGDBo@Ew0sjxK@LJe>IktmU0|AbZF3Jnus#q+q%Wr1OTr|h-}Nz z{rkW2`<6cs^z%!H?OE(sS&sYj>5eNiJF{08H;p)7x^xtMU9%&0Fvee|m$Dz8xkvO* zZTf;=iex1PNb(UJ+$JO^S9{`Fsckns>DQ6OMo({IN6Ax5M&Wa#IWF?PoAtmaH%nN& zCH49JvxPAII7TuK+;6g)*YlS7vGdsJ6KDf)L=d*`ygmw8{x;~h>n~+m?M1mjy4J2r zzqM8N+^NCR#%y~*qR^$Y=K#ZwG9;ERp-B_ACO@xY{ea_ZMVfF8UUv(xqP_7u<(0$YA_ObhK+H zZXIK1uSMRv^^A)ZOw3$J_%0>u$>=jPM`vQtS#frDra0#D>?Kg;nJeD3Fjbsq1=hv}s4ASi}? z=8De<3kw5Nb^7`9=U$GTVLN&X{JC!q-;+J_=S@HKkILZacZgHOKIx!30Ki0i#s#Q0 z_^ggnM%0(x-+T{4%(}~$EeXEcaI~e}aAX$({piWu8_u0){>8`Hz|7S zt71DkryC>AotdPt4qJ7xW?pss&+SAxZaw-q;_-|rRUb!pd9_{QSv94=Zj+!a!!;$L zvfMR~^W0{@L&yGe6FHXNs}b)AxqX`itW!fQ;L@tm2e`d^cOG079}=dp_Q{r`gO0g3~rHsj}V7oxA~htUdTDSpS7{r%B1 zTm_TTk=@?@Dl;qV&xuia5dQEE@;ljyVhmorl65)40a08Z%VwZ`!d5JPSNopbyE|-{ zmcc5>p1;8k>PN12?%z1Z+^&(Xa?H{Mi|9`AjVQJBT%k25CDoK4$W>LVOEoELYEB)6#u`m2X`&Fmalq>`>a?=5q89ruF!1Hem+O?ruWR<~)Jtgz zP-pofJj8YX{Zl{f3{79PKS;1$kK*Eli6p(*G0kx7_aWv;e~Fdhe{~#_kRJTjar}g75`s}KV}A$I4syfg zu-tw~22$q>R@wdgSKq#qyik^$V%Qh}Gn120z|ma*FCV7pI2W(+LkEs6QU2j@>3Tqgtxga23Am z?|%#5A-tRR5TeF^;Swg(Qa04D?qdMtw%pqA3K2O$ACi-2NJ&XW0;68Y;fl>{Ss}nY zzFXPY?dy(?jjiByeem{OCNolQxe;gfDQ6rW{(qoRA-fN*Z~v8kz=D8KLu^8zZ1i3p z*1)2oV+0+u=^b}@mGmKYc4{;o23^_o0LM)#h!`<^!Y2R>Xr1bBOwy(Rf@(9~aX(sr z54aRu)ne6w)`W~GQc|ONBuXX>&dR$7o^q8NHQg{5}+p*M?e?|0SX45+hQw=X@cwCz4Iv0I(%4%kEE-MoFI4OXh>YW z3IX=HE1ypb39&>NzLRP9*mInEsXBLcQ2{~`8LXso7xa>5=p$b1C4+72+V}V_K?#ik z{?e$TqN3#M>#G3HqbV_eXrPX~y$068v-GTwTOH@db8um1GGUz`_4=qjXd<2UD3od- zYj``hVPyUDLD>D!*#HGjIo5I4ulEw_CrsgoLF9>)L4T;CJ zgYXgG%{dwrV3{^M?GZ1yk>L{GI2;eTM;by+ij3LLT{iaV_(ik@_(Fn54szuu44gRd z%IV@Ym6aHptPUkW4$T6CO=k3wL60aY<2c4f>3~N==tfDuBC>h2LTi$?uT1;1+<+)U z{JkSkhHWzEZD?$iTZav_)AzwarCdnNBXP|x!G7{E$P9d4${CJw_+1^6y*S$%RG!5| z%LpW9VWA|g@}I}Hqi5$_G>CqNuP!`vrR3!$)UJE%8E6F_nD;K8#LEVVhzSxPfP+~3 z%fG1t+cx!Po>uv@*ZOG^;%;CNyL@k+AtOkiu$pB+2E{L0fPPJIN(P$`jHq7ie~foN z{HTYFNIKp${nh1R027`tduWJL5!9>k>hqP;BW>;5hh5#rk57%;)1K;w8Ul)3PpFmf z&@(P{fX9}sQ@+&f2)BytA7VQI{0}!U-KN%b+H-k{TqPhv$Vf>^ zsl-A*gv=l?Y5{UP-UOB8C}*6uVaFypu)~t@2NGe=waEXKX2*_`4Y&vUDdmJNFO&ZK z&oh0hm3-LrkBs@Ud_Sz&E%Bi4-rczS*w(*c`nb94*F)^*I$yX7gsUVUIcYVd=9)>L zKTv%WsaOX@S5g8byj9V~Ydg#_tVUaaCa?G7D;ulwdj{X~qWnAb0YVFkw^uIy;R2i` ztkvOTH_pO7IamJgI{t(J?IN`^opYRR^8UvQvZf`D^t8ACcZ(2OTw7gTJij*DX|H~z zX(@lQw(8{V{Ve0J?tYVC+r+t8*m-y=7U2DZEOE(aZ!`Kg(z1Q~8L3VwCDZt!A@@px zZoh_6;gMse4|_t7d*sLEi9UI>vxq$1scVgEuFJA!s)IAzVe??u)Y~Qyv)zVN@T;YvXJeG}Y-=y(;fQHl)t3u?wT*$>0u(H3 zeQU&p_(eoSYOonNqNLP9D65YHR1QY8F#B$6x_HG{?4?w{1{dF`hsi_8vF|iJ!%61F z3)jfo{mg#8nc8tMG5J`)gYI0uF;OcG^0qyv|Fj=<*U~R_r5KV!mG(JK#qU~{3xsd% z?Aez*K{$c!B@ax5s_$=Rw453s$97OcRdoyOVv=SN!MqOzTUw&T`oZ><+eS?qDH@e! zA8YP!Hk+C()#Nm6&{|$ue?fB57w!B>?UGG^A52ZJ){P_&*M(CbJ64XYx4kbU-DJ}} zpD|r4uc>)$JF$aAHO=^Z<;$^6TZ}5tGsX|JoB3h;m$y_?Umd>%CFEOcQl8yHe~WUm z-Z9C@XF$A?ja7C_MBKT3Tehf(bJ( z1M`x(>6sZ5I!4Ad*eS)og*7*oI9-S=_12=r#l_}JM|Yn{fl;g0$szn-6nl#2dxq0o z^L*efeqCQ*F4c(r)QuvpyLZ3Hf6y^RAwUzi9U;U^1v*tF-7T;y`s6Yq!^V_Fbd-(F$CdPxG*kuC8mFn;g7V}THq^m+U*SdHD?OgV6C zae8x_>9zA#(^iC_M=X3lKR+?p6XfQeURV8<#l-m$_G{s;KX&w7OiE6UIP0Fz96|(H z9<&wLQHCq>ftawR6puYzJrm`^)Eho0NftM9(x*%xB~r5 zbDk~@p4Dd$RRu9crzY6!mW>S<7uQF-!=|jyi#sC}{VJmK%7e^&_8%LT!$KQY0ouf{ zROl|3>|@?v!4xIExftv;6qoQO9{qu;dc;?#rWjyAHxrI&|KkRDAatJ_+gBc=&mO4V zD&6^=N!oBB*nGR#Q?##9j`vni(d8f!qf}vNW5N8x!-V;AU0u1YSAEXXX{>Y0KbkYD z)CNdP5MMgWrZavJv5IGXkHnYb-2egE+;;BcP2n#0a`V;Y@{bwzmp;5X4#b}X5(lVt zvtS~{a2p*BEDxTqt+g4a<>qJ&(-F`k_Wni6GW zxA;e7{81anY17QO%Yif^*uVt)$DVOY8<*GQ%Ai?B4sx zek_idnfFQvz!9HBYwU~e(2UCT_=@SB3{hzxnV__A#S@G{lX#anu76U)gM6xy(-kR8 zFREc5xz)wR`{G4Ixv?*SOF_;EJLCzv%<^K+S*Gu!A3sZleRjL@&k)>&cF)1QAmv*h zw+^;2+`ug=5$x4_#P{M(9LbsMC3&gJS@f+5^#&;jWqO>LXcj0I-bzhPJvUd_eaDXW z?G+m=o!n5*+VWi4F+rzj2s-kRQ~Nz@?)CTI^ZD&%KOPf}!RWB&*O!iha*h*pr=GBD^OTzy!8fy=UcirQjl1+4oiFQmpzh|_sd^Zy38XVN4eO|si z(JuV%RuBJk^Xjr@_S)=5(JIc&x1}08%`Hw(<$F}BOU6!ov4KA}oYWuY=bu?fs19R1 zvotIGmf}hL6<*^IueM-H$XQnRrzZ*qb~sYi9BU>#jCqO+} zl@trsI|m@7adUI?N+%~L7N#RdLRsDwaMMFFtW`HHq@sdlf&R2FR- zd-vfvyR}v4ssKtKKl3Ti}GC!seW^I*HT zR@oD_a}o(!HNlUN!8LL=9=gq)wzhH(bK5f#T?;)18{3{s7n*4X&oT-mN_5~d{(X6d zUbS^zpMDe}7&~{Jnlyi~yXR@9)51Yai&1i62Z)A_Jx~2%o@-5W@1sYK_TSu8@qRTY zT&qA*VSwz{Obb#B3j=t~$h)2A_(6}r)+G||p&kYIm=PJFOF2>(z5>hg zPX=74FtO`ZJA|dA>|VD{0Gc#c#O|FxeVQ3G)(ia=SL0U(sx~tpKkj?heHYsJjo|D- zhR<7X6ol#M_Z^H23ocQ?He+2{YpXfUwQOumCOR%6|(6769 zM$TY}?7lk%1nwIdoqlZAF3ly1>?_51htoB$C+=@PgIK{TScmahv%K*4??<-x9pXs9 z5(63bg&@qtPm$GypJk`zGAPNKut}|v>$1mo$Yw*=(%2+K6#;MFh!VB2ulxWX{~qT3 zuP6mNWrOU_x=UzrecyZX6?bSTH%Oc3?u?aG2bmSLs&4?@-fRRS; z&p)-b;`uTCMpL{lB&_N*+Lo)ai8kw6g;EgN>n~_aK0K_19O*~W0rGvd7eVIw`&#ee zd2CIp^w8B8xH*=)yM5>dFFe|nfYrdI1a)x@*A$BsXl7$aW@Hz5$C+j!9PgZEmTf0SqHT2VJwM^Jlz^gm4 zAxT?K>}(cX#;zJQPk$?Wns<`cyIFJ-QU}TfTv5DPZn^xd=?xiQnYGK{?!IwDu`Z!= z-(P=Ok(>^{q})5!np7`fmNC}@9^lM(>o|__-4jSAt9TxB8oeglwZ(nEWJ4=uRaHbZ zBCdx=-ksHOyh4;McG~N0S4oM>+!WD$c@&qf#;aZ>HhoI5it&rqk9ILth>WUbq<3Wt zf5Y%tW6Z-lJvDXHFiCk8hRu)J1FMRA6_Nc3SI|p`wL^r1N&>mV!sXlQBTC!FPr=jf z_nW_kdFw|pq5VoNr;u}n4Y?7N2IQw-uxMbybI)~l2NjwGHaxZH28iF?wow?7&%Vb7 zRZW9BdSP2h{9bj?-W1an)jQ@*Mvkx?to&BEw3#BT^vQw5^OB?R=c`pkO;pE0?QHuF8TN`p7$Tfroqla zg1*FiANCkwm)~7645BmbxDf4RKj)OOciTqLh!(n^iiN+gkdh*#9+q8)086qWK@^~0}TPBXSwA(C|_ z_e;mb#6&?Y(0^M#wkZ=WTPE<0JONPUoctZq(icsCV4bcQ+vI|znvZS9UD5I}vt94% zkB6RRV9@ZQ;aIsC{pSr46H))!W>xJpllFVy zLU~b$(iJqtu8l4#XQi?4-P?jreLsj*NdbA;KZ$Bs#jTZp9Dzz%C5~gMxdal5uK>c2 z%$-ToJU;>J6fe5AAQ(+k)36J#uu!uFGqD=8!J=7zY1VsTAp1sf1s(rSYU}R?6H7}3 z?!HB`VinFyVfq}8nXv74 zuF0@m8-3H7x8}$vNWE$^zJfr2BeJqkp51SVmOHAU!R={0dKcjzkDfo*fsD|lB@O=9 z&O-w2$@-5YotI7zJ#ZstaEh+`Dj0pgj0wowSHWCeT@o$|^3NriTvs!E(E_1K z0QqlKfAaW&>l9$bLz@rW+dNp%ucXAg`$?d~{jxIMqT&@<8yl(|M|To_vj!8`od8Bb zeOjDz4S)}7Lu%~H+qZo{P@d^VAr_-`=)4af(c`~ICb$3K!QIJi_i-UcoUeT& z7xr>~>6eh6xG)1aOCgF8JAL}RhF$ne?(;A$D)9-a_UBjuyi1B<=yc7e`2bGllQh#P z@@m>Pn7&~PyYQnhk_0dK2fImk+}biq zc$~Z+*RF-vcPvc!A|5h7-`3-B*WC>}r9&2vB_u3#-*@r1BO)Se=RK)Rh)r(7klCpHOKW?<;?zPmul{vCo z^S5@@*Eb@1U7R>_0Jf=U24^RM)Lzd)^m&Nd)?5l+zn*Thj*mz6su%Afp0lH6-yp?1 zpf~X5m~dn35|a&SYly5AvC6(2aZu&`*DNt=Ge#~AcyH72|2#{A&`k)T9q!(hfFbhD z)ww)n`z2&dox6OBw5X(nO$wsU^z?N0_<92e5`$FLXfk?`)|lWt5PveLItiYok3hqg zi&s>OfBTGzVq!3Ctu*19=z4y^)pO_1tFA4boE>c|;q7+Xc-p`q-MwZ?7RvHF920#V z844THGW>GwwfCG$Y~gfqx)g41O1-OLA;Dz4Pa`k7V`AE7&Z1WQ+x79wzni9_oMY4E z9ROg=0R)Wf`-q{uE!+MCr@jvn5l<`7_GPv%{4ePv3b`D(ZmXcZK55!PvN+>NA(-VV zR#FuAO2Ru6D`)|L#8hPNH&6wziO6xtk!t(UzqM+l#M=s9B_PK03`V>z;WX_yZ`}Hx z_THJtXmpyruEtzxj()1?%>869r^L6Rq5F6$TimK;8?dD+|5kXB1pI0Ysb>OCt+9UA z(d$a_@$)ObaVD}NLo~T9*sP2uLedHYF4x8F&(U2zYU`ql1CT3wWpsg{(H z5mtmFqyhVeb4^l83dZ)k zzkjaZMMD$JJ}}u^e)z~Z)A5lb3Q?>jZT!)PEyqozEeGyvpV|w9D4H{8B8(SbvRqyC zNxH%!I6KxZQT{9v!MNH%^bzl_IzFAB@5ZX?7?x;aF;`C6jvv-=7`_VE-?G6lSM(Oz zL5{WDc+7}kePGhgLl}RrTW`rgvpQLth@H?OHa7mLrS3JK>hwcbF%=w<+m7@=K2p+< zc?7{457akt585`i+safp)`D-y{zEV$=drIs%@m!zZF_}%-H%lp+dvWLVQu@5aC7}t z-a@HuJH;|&f)bkD%Fy#Y2@XCDd!QJNob81VW(Y&RhYt;Yx0c{7!CjQJc@^LNjS{cR zI5^*%o8IeI+DZrW?cn952;^O(@T8I{EsUTI2;e2s8DbSr?B}zigE~tbSIBVF$hGgE zCzH#eySwg1+XN-}cb>tOWm?KT+}k7SA41!VOjE6IT%6+S_{W+bg%wtZ!q7>uY>zl1)b9DEw+Fdsh9(ABltQ3P6c>WDBbo@GaKuo2$8j=dN?^d%ho$IG?Z9x5V+p)hPF1PCy%2!`*ucI zB#mw%s&+%gZcB1shT3+&M0QKzD+#y#WWZEoE43WS!~wxGcKrucK{T4ULKNQPLTA zT~Gd@5qG3#v3(tg592hbTjFWSw59mqV%i)>4&SD4KqnFSWhAVLBL{M;iEt>F;hk!l zt<)v0bc3s(80d4hm)Wo9nSeLE?r_@_JuOd%K_e1(?{=?N(aXh}7zryyN^-ATPez0^ zG$*coS>&1?n|nF83O85w+@YH*x(xfdte(wGW!v8*@fWfWujb2`3w2xpINz$i_B}R) zr__1rK|{LP+nM>{dNeTyc zIZQE@9O^>H-kzRS*6$s~A@LeHo7}|8z4x^|e54`^yfjI-_LFXd(Z8gE4{&8WX!NI{Cv@;7f`W2D#F)*ikdxc+cL(bYN z>xhqR`b6e#disk=H)?oRrb@1`Ty4(Yx-=Jrz()hF*69|mFLb&r*q`PeDqrx3Nxx#5`b41v_mjs*?X_l_Mj zw9P_hg8A}%_>!u0n4s;m>X&BW;hk|5^rvguNx|KvpkqG#h7)ILx1F4QX#ggX^N$&{ z7N;YLcLsr-+kML~q??{;Z5Mp@(#FeW<-x9)yfEzGyWOJc>bZ}%p)FT<@Ic*4y8G_v_aSbK_=H!_k~^g7Q}rMvK!-4#B>N2|?il zgJF3Q=Dp1e101%thrOd7RVQ3z&-q;7P-}~W(`{JZy~dPplOB(XY4@r#}8UA8Kuf? z78IXyAUf)~d`yv6UHj*$FCY3Hks2)_At3+>f-k1G*3U&B(rx!+A&yzHs5>vxIvYL` z2z;!{rjbU2=(C2yWJH_wXi#a#0IJ+62P?*dhy3cJWXK0<*BI5(ihj7RwRj9Sx__{rx{jZdEO%{nYr?fG zY3QQBzkCFs`I-O6$4#-eNe1;+H$xKeg#$Pa>9^0Bc6Qz9$}R^9ij08qc4y=@eyGZG z3T@UY3l4M)h3vj#YrNt}6c*k<^b#Z@%pt_>*~{QGc~vFPWo0AFi+9IPeyQ%A43*Tn9GglgyC zVCqBt7o+qnMe8%+3JU<`o1do3S9eB5(z>^oNhpt06|}Xvy?>tprQ5^5SCr3>50>Bs z-n?l@hd$!Wy@C7gwQzKDspNGr%>qWbp3FyguqKRTsB!RGl#JS^cUQOmoVi)|iimz1 z;qgp=qR_4qe(C+qmf9gJ!3!5!?|DjH#IDx!-dPTUDE9J%rf$V^g9<;}!J8ir5n*I|`TRqf-vvR#2HK!AV+=x(S{85iz1(Y%xk>JRdXHalzBb_PlMd6;X~vJf4b|rvw0$_ieRGlI2PE$&ZO7BCCPa3ivUK8yKwKGo?cLk{ znI&VClRQ$R0*Kjr)jT%g#1^-n^KN3-C#R-j-_{!l2z|XZ09+ymb%-&bdVp2yePZH- z6qaVzteIYJc8f3u@gZF=A!O_MC;Q}p#{*WRMBD}w0NrFsCA;lwh3Ky4DfDU;c@}x>u^ehm;*FMzmXDCQ7UbgKoK_7>3+I8FkaJj}n|!yD z3CsP9JyCVRD3G{;dKd*lYMwlKa!UXfTwdim0^7chj4XLPek`|;HFM&Elhd+Dh%B#C zqqM~`tFwkVvNKx53X?0XH_aN>qIRWy&2Y~xKYTq7AytBjyFU02+`ugOH zDwT6*gxTjdgQ~CMFiWRy0H24rTC5J^Q{z3vtft+GWp8>Hty}Spw3tUP(z}$jwBF0) zfs69y4P6nS4IHN8?z|T>s_kjQh$JDwW{U_ol#DzmDCj#qeH@9%PN{`IOD@Xg8N~;@ zcxK@b&dAO^GcT-1J5;q)O)T@%N)*q`d%`I?Yd?IIVT|Edkc!mznJh%mjm7|^GV0L6sx~!6^OftIf-Q{x!QGA!xm<}JN z+jufS+Vx%2_fz1wD8c1B2iYw)T@%UzA#79+XK>IahK5?DBI<)brl$T(Jt(LCdsxDw z-#dMp`_>66sa)PshGwuOl~W8@pd->T4MeZ^E-y4279wb|j2w>{R+g9PvksRlFMLhCop5M^W1;V1W zr&x;EJ;EtOn3&T{hK5P3lrup3+<8|6VH@icQnjHI9ZIsih>wp~mMb!*Ny_`KWJfOyF@)=3 z)8yL=#WxOceC^5k*FD&3*F zO}Q&Jo0n!yB6P|dr2T&+rLKH$s{a>G&>L=8g9DNHF3PzihZ#2Tpv!)*oJnvmE-1#= z@h`8;*^A8Y2WNaE!cgg8qyfS$KMu|Xr{xK(P<8`|1lCR%yBH5dV(le1!JjB#&4r`M z10yr+d-yR%X(31!tWi6CI$b^eZbucv?J-wa#Kew>+!FaO z_spM+VbF!kuptntEl`hT(D9SNW+kDzJ$vqKbUPgIHiGnm8)wXCOg2*8l!4O3Ok$jIDVxM-`zJ&S*y z$0XhT_@McpQYZE>`dawbkAk+VMgMZk{yM!hYgYGhveIgz>me47&v0mv?uIF*<{48E ziE^&fb|m1vQc33dYeQ=Pm(=4trQzYegoEpQ*n%~AOtIYIKARh8=nN}zFP;8c_* zrXOO+!#cP=zP%k6=qq`M4@`vr9lNLcEtb}e!X7j9-5boLgj|+`us#S}m|81+btX}SyBn-; zVSr&rwz%EJ+C4Z#O4%|&ePKg(wnkAwI1LE{LzDTfTRM$VW_yMB^y?>o!^TAqhtUl_ zu^!3oNo`r|L91+GA$DCfbIk~!qR>k|)IO`B9rMaJ`i&aiSU>e?$zE_Bj|l-Sk%6JW z*6b*X@V9!O2sLrXjV0HtIEm``%klO*LF?44Y zjuSa|3bgFrKy@a2JP!>AUlsdXyt&1A`x%; zjlw@7zars}BUBYoD4uxVW#Y%So`xrm48Dfv&YgqpIW=g2-q<)5K9JEZ@p=kgYP2O@ zbdxV&JUvi(JoUZBj0Uo)lEMgwaC<0toUuXmaX-&}iqnh;Cc+xz3QLw#Mu$c;57;mh zIn)m|!ejtf#Sb3;XO6pY@nV#Vvnyr}If9?Jb>BJQ35Ym{yhIo5*yWc9%LOR@X~DC4j`O*+J3c&rK4Ka%$7aY zZKFBav1pH`ePpmLSxMxP)t}jN)8uVqMZK0P!JO}rq2oEBS5Ao&@YMex&wcjC6<$axp9b#%r;hOog{e@>hgj@)afz) zK7g)wu#s%$+1uh}yz;Y3aHUWvVuGvYp6dVL;PG&!?3)^hzmAx8NZjvKr_RrdBE9!` zL4o!}t0>yJ?t7ckw{9M;!rx-tw(DL{5VQ67d6mSmwq$SI4?Ai29{$U;t7wiNng1Vq zb%7IV4u~h&icblPFoI9@8&g@=yXWN;oB%iDh@gcg>Yl+W2pie+f+s4MD+di_9#q9- z3|<^OSVXBa*xTD1FCW8l^hL!OI_tmsx>cigSOY70tr!~wzJPCm*1RwW$K>Zj6*B?< zZ+iLvS~;ULNiHcY^nCKOCUVWE+>5aDN+k0faDwxU9+YI>1_9sDz zbcDr72prpMS-IsH-%tSRD65Bm_IqNT1JwS(laLTF(*F?8T2n{#pFLac!|(s69l6uI|N9%o>I5ASpV6-| z9I?VToo_m!UxA{k6;Z#S6JTiuPvTSYYPSD($%_^VZxk~o3|x+tRiP`jXLo{;MQloO z)X^OG`f1)k_{qUXkCv2k9H{XtOvi?6&xza0OncW>Z)G z>(=+rF;$Lx_ru4ETsgkUNEqKtpb-}>+_KhIn(hC+(Otb=JJ*dzK)dqUdCsumO=_y1 z>19hRD@0VvgZ3_$j1g`p{Ypf2MpsU^vshanYd)JgpBr{S@~`h7*GqncaU~KW(fbc< zA`Baqlyd}VK^sR2MouEoyijyAB=g_gUs#O^+$KnMyFUXR-)f&>e;N74G^B!FTdPwQ!j%!}{6607Kr_HgHJu0W(O zAszHi>`j&5Xmx7mGp6K6Ug|YaJNt7o2ZMB`oHojg<^Ntm!3E7<`UETIKB1x$CXcmmC|<%i3M|Q^;MMu?OIk_(5L*C`-5QFpJY-kwpiI6y z*3R1yRXqZvo)y4ca_$R9#}h`L#W#}Q!k8ktO{Xzeo=FaSigmaMpZ-1Z#UK&FJkfiZ0xpq4b8(r|DQ-v9>R}d%bS8d(#*e#olx#%ob3al`p-}uU; zoxy7#FG+|gGh{z0X)qO8MC(RR@z@B<&o>sj?AQTa)alzYP!(`Ny2^rBVgSTF;tSJF zFO9I`o?=coWq_*lAnsb$wj7bl0q@?$nH4a*b7%O>9RDVQt5H8B{r??aedrcE!90Gg z*v@I*BP6dtvHt5|i~rlV<`5(xj3I7vagMQuz|Od6H-Xj{WG2Eyz?NBh#82~ZDZFu* zZQcC*yz%PNMBW%M`a==*b_YF|u(IrL?w#%0__msCnVu5O!hbrYO;`cNJr2z;7$J9SO>MGSb_t(AL$JOFRgt z-V*O??i7q7D{rS9h+ewv$@(tjPG$t#|ZALngZ-l&zN{0;_AkwMjZ;uyR3=F2O0 zt8rW8;ggDi4}dw=^|7aDy|c_t{8+^rn>PUTB$9u5Rd?Y#jX(_;L<)z8GlICb2{X@M zWRDLWGi1DcnGz<|2x6(+%lE^1-TI)OiEa;!**h3=ZxhR47*Kl_e?n@O@r{}QN?G)D z?%SEku4SHXNidTK-}5E=8clLr)vGhTu-B-GQ;9$&dov9F6Oack569l5sZX3eVis6z94uRIeH#pKM0= zJ;w)-mPiFL6r5>=e-oQOg3bW;Ujy2hnoyZuEFQsWzyh2O%S}wU1aAk2w2_Pivpq~) zu3)G%?khPC@-a}U9eqJ+h$k|!zqtpDiQ$a}~!5*kebO1`KzNAVmjIe_ghL%Aa zn?#6WSX@?Bx)A94`#eniP-p+T3OEAcu+_kKj;b`wT#P;xYC*NzX3$69Vr)YHLs0^X z7W3hi*Q;%v-I@=h{f+^z{Oi`b_n=y>Z~oeBVYcO`cA^^DMIZ(3^tU{r{5deCOfW~Gk9 z1oHSZ@RKATGu#_*l?^Xj=nhdGgYDirurpO|j%vUi&C&7v^kT59+{lcB!;FI;oVW(} z_1gTcZdxGriut0}P7tS1dG`Aty!7`)QhV1?H9seeR@`3LcqRPxe6gU=GW`RJFhc)f zQWFL;CE)qtcHZY3wjQJrU5#+}I25{G&$F%gs<&m#;9>@m%QaVS%;MyzbfD-gXGuwk z#Cn3@YYN7_zL%%x(!DI>_~0y(QFxFy)z?qz#w$8DX`LKJJYn_^EF zC@XtP?DI%U9#g`BO?P-<&=evS&3JG%2$7u7apUd(%55nv`pxO zh^D_hpMH{-98lX+bn2w?{`S|e=0KyUbSo7h_P0HzSQYRGj@_233d#Mw42PLr z-@a|dFlfvQjMxyVR*_!8bvm8kdL$BVd~zmO<~ zBaDqk*?C6iYET`&j;hn$E67LMAN=w!^B-Dtfcyyh&D3Bb(?8V5-V$*RFl_Kr9bz-( zC7BvLuY6MkG{u2Rc52ly23s4OZ@>i!y6SFA)>Wq6l2tX4qqmO5yEMe$L$`aNqw61P zwM9&b-3u*-Algv{+Dq7g=7KIA1a_g~wSLaAH{dud4>+`TAYm8<`=)*CL!00Xn$S95|moCh-FdBc~#m~P- zzxDkl5F7_x*VJk-Z<&qgU$1+W1jw(iG6tejFM7eC17|h#tNa7J=$DQx&5pgXGpCmD z@~%I9} zCyPjCfla(D(5izU;*mYg?6wEc;wf?lRhuB^C_z_GZ(LGVHg}q)!Q~zH6tW?bXJW4G z!o7ffN|=@8pKh-xPZd8t762wjyZ_Z9-U$vApU7a8L8XdFz(%Ke- z#4)#$-=|$j5W~A`e{-o7_AHqsE-o%7dMwh0GI~W>k;_{?87kCnKD76bWk+CylO{p>x`J8bn99b6&mgo_AKdiW=6k3hAcnv9sQK z8!PdX#>y03uC642^FJp})Kz0vcd-z0sHuv_+)aDOW7K7gAS{^%Pmj6|H5&0FI|Wg-+}v%V9p{%Org+wVT>*9;{yjZCyD-r7@4>1R9oxH>Sf$$3_p)dN&O=pXfzA{w zg7ir!h!dNPq(nlW{{z%b3Mu@TX#e@l*|S+HH;?TZ_+Kc+o{QTrUQ8k+d_MG!KS6ub z2H4n~?ogb3yf^S^yk@9L;Sop z_X;lYqvxLQTm-SyEV-@YO8BMVin6j+=b^grk;jKxJ{hZG(IpJ;vX7i z_gFA}u;BkGsB<$7Uw-pjQ1{g9T6zMpf`I)UmR`zKX2t7)9sFN?-SI#kXE)u-*9y0W zHvZuPpu9s;bdaC_&hM>+%hK5S#p%84@^MJe`T<3~siX5|>U*p(OwHnDkcfGiXN-dG zA@&mwoid=mAQ!YXJ%YM$*4;%**mbDRB}mq#LZN~Z67hXs0=gYsN=l^>3lYC`W)#tdX%X;vb+Gc+Er6YUU z?k9!(?%j+7*j3x+gss^<9$8cm8_7*B?axS9$`v1P?M^(qN_y)p7=WdXa-z;h%(}AO zApfAyjFm+v&!8n2ubTR89y?06H?1;iyksOXI1gJv;KVNm74Sqw=7D$PHH&B90LBAN{@9_Lms&} z5Ycnz`tCUHm-03n7;aw*cUq|66BJbVpo17g523sA@--Yc75QLn2k)4bV|tdb>Mu6z z&Lyj_r?mT7-thdG!c$?#U2oOWcd}>KF|a2d$td|bL!UoCX*oaL7{F`X(w-%gP&!!c zS=5=cdwe`{ek^?~tygLAMyjg)Op^wJ(~ckoXK*aN`})daQ^w1w$zjPbkwdNTzX@iE z_)Gi2uYD_e4`vSYtx!Layi!iub@+&Bj(6-aZ0UZUR>mFn5~etUi@-oR%N~9*T0`8I7_CQ)sSP`bAT-mtY zxHd+CnTBiVDjZC}!0`I|Rb$(}*^MxD$S4s;+$f=eDA0PP5dAXmD6=qp}`=q&zv5WpT{yW*Mn*r)k37x(&Iu3YI(FlC@tE+P%VsbpG*>}-?@dGOb z)Zz3bVO>~pq)~yt|(V4j?%^%9W((g^0?{%fN zL1n^pvTk*Q!upLVhw#S%z3Ue~;CA{^pd%Y9B$?+D4@kTcLXYtu+aLb@Pe+FP;%4=y z?g6nQl=BO2AAoRuNwKF#=tl*ou|IoFjr~xAE{V9u?hRTii`>fbR3zZ?p-YRXH=wT7 zIo1EACbdEnaqpX5*ErHv2+34j9INyZ-)n3N(HbuARw{fqz;jhO{^iY=mKGMDjBAPz zm$rD)a=_x?p?eplq?nE$->R>#PeMm;wldRz&+Q-u=}lu}p#kI4t)e!Y}xWb!(KS&K`c;cdOAbP(0upr9<1 zPn-e{2M24T>yiiS=uG+)MR-lxZ6Mt}WdF185G!k-YHGIfd##NtiyPYdEl%*V_~lS+ z-W+uCBEQtsfXI~u^?TSqtbY>h6v%SbsH1^V&nPJ|zm4y-%|WtO}+(SBxhr9$)Y3ivKZdsw)WM>!*Z{yBj#t#ujIS zzNAIVl80;N?FaMP0~2X;oOzmMLW1~E$AV1O&wTF6oJAw{_9Wi!Z8h9}$Ge3pSK|{e zN9d_1)1B_GXc}9r`~UcQ??9~kK6?C0cd1m;pa@NpL}qr0G?XS~Zz5avXi1q#c1S9f zP4>**l4S3dy|S`?=cBs2pWpBM{rTg0?)!O+>-t>pabD+jUgx~OD%zC#_3O3XN;~qq z`T0?^vu4C$+kM&h`E#>Xk7s`Th$OY+#F|J&@9DVZSo@pi(jt^vtBkSqqx<^%`9G`0 zEd-#4JZ|5+@pHDrV|_uMDKb^nCBkPdPCaZnc%i)e0VUIT0ZpLQ{BSg+(QEe{Poa@; z5h;;3bX4aS*h-W9MBol>^R>Y2MITIuh;njWu(aY)EqO-y#C0PR3kwxoVT5*ZcHe=M zK>TnG9f>`w-t*yZqHv8 z7hf{&Ej~C%$w+^T!$_`&jZ%PyD%FmGfk6|gl$;aYC0Bo7+8$S7tKEckkFc)_nw&GOCOt5|#CvEN_R-lSab(zQ3U5-PEL|7^WK9P{T#KTgRX(V0h8vx&KvQi^FRKH z{`GF667uo0B<#uKus%pns@4(O@VcO|@U7x?URGXS^VP8pd3j+cv8&h8ZhUmX!GTZq z_bDiJp_ilOrnw3;}Cezs0iRe5>F z`zOkxq9KB%?1FFxt`laYr#~r{+q=6crmhIy`k2TD%f|#6Un;8=@#~uP1)Y_&oQ!EHaV*ocFEl8ZV-_8Y*@jy7`J?&&=XLKGAS# z#wz0=h#%o`a3mumpwa!!>lgclniuL`dLWSmjZ{k5>R3L|M#H)3NqX=gBD<7DBZu0s`rG@236s z9-5^BwT6!bKARE94n1Xu#*wAuv4sU&KOR=eWRtO98&fYh1lY@0Y2eJ<#P#7M!=e=9 zRd7Ps=+(a!Eql08X0Kb{f2yaH=Mdgqo>R7IMOq+lRL|#7QQ~waZQaVdjhgo<6vh+T z%fi}%!7bi{NS#Nv9U~Rhqyekp%EwCOIfNZhtbgt-e^KPk4)BI`Fi;97GNaIDgSX9c z*jX>1NckBaXk0r|`{c$KXUfo4nw|IfR2IQ<_H2{sP*ot!6Tpb(mhl$R@osXgTdlyQ84DLKKF=ecZPuI6FG3x3m4!a8LUe zkUI_6LtXt+F?~c_yqw5x>g;bQ{#G<(*O)2jp6lpBh7CdltQsu8MJxSrvm`oFH2CZ& z<)gm2k#HdO-v~RssV<@nE-r6z583;|+z=MNJ{X1l-qYW2CC}w|`Lg=$rvJdsp3;JU z$Y=HeS0G&6JxDMabN!r>i++CBe+Zrz3f%rjEn zy0vWE%g1ty9K+@+-!CcSK7X-aORiC((2e4ya`v|u!ZwZ5g+9OWFWSnFC`J4b4=*{K zl$X1J?e6hp+iDDTm<@b=`u^&vb(@AM;MOmE=3Jwy9-OUsQqrjR9@bsoRak-fP_b1| zUrvKzKCrighQQnLnvAP_nSBywXjG7@GCOafQvIrd1ObTilWn4y4w8lIs01?FHp7&r zr6JkSV_3kTiCSIW)$f^!drr<#*PYc5VEhNo;2{89tHG!`jJ!1sH_QB5S#uuM#L6MeTm@J0(oP+{QaMVb%|0Y3Lf8iuPo+@snKj-On{fyHZ4;vcROZg=7q%~n5U#; zEO9;TlUda{cE;W~lG=OBc2+PYH5Jz_M^ha7p82oOo;oWn9j05`$ln+sY_ktWEHEb7 zA@5Ftjd~wme1iF~thxT~<70yGsNAz>&qiiu-`)HQ8M8DP%JWdJhT0^}e3ME&hcX=B zWFowQR4G>%c4CR=AV0eJ9>E~u=!MfH>+5=E*MUOD$yp))?{I&+((?30?CGL zOa~7tK6Y`D5Aya--2M&-A&3E$+y~o)VWOUbe>JCO={j5mn#sr6=hZ#|QeKTy!{AU+ z-(yd^j+R=A?IE`D+`v@GHC3+){zpFO`}g%ia~ikcB%))n;A}g`u>XJtZC2Lmn`veS z?vr;0c@ZU?%%YU>T3_&B&u$N4nY&;`Fs+6FQ}@mhCAjevjrWC=kihqeT>r2z+1tOG z{MoxJZ{yq*EO{(>nhG<7R8`!ns=;K10}DSKQN3 z1AJ608gikEQF;gNWc=TvG+nRl#P9PXyMIUNK8u$|9sA5ini=oPDp@_K4r}Y4AN3tC z=c=%pZlHenX!;;9TSo`u1g5-{_+*-rS|Fo76D%~hj>6@w)nwAfT@#Q-TkRB_wnI2V zSK*p1TRAJDTM-Hc?TH}Rt_1q?7e&yf-YXrP0XC#hCjteqxcJ7s!ouE*^E1Hx1j>W? z*`9+vM=AoF9JVFvRCn&?kN0@|I27fxiEZ0p0gWI6s)Fk4H!aNdHS8Xal21l=D=VkA z){T~D0CPxO>o?nbjCZXjgb=p2X~6DkgX-0e%A5dD818Ed-VTm-6CcRBi2{@3o$)ITx>*8|$6eXp{Ps{}o_1lahyM0~s zgX0b&yHH2w^b}aZG6I!uBQ=FmoSMW)j5IN#26H8CEKOQ&%T|MXY8o0GCr@5Q&zj2L zpD8{*zPPkBSA(x=&@rFgtodUv3?480ArYIQS+Ye>M8KsL?_~r zy}Z+U#^9_AHGOgULimVxbM#1FEya%I{_I7ui@!gAy^^^Y6{?cjh1k3nx;uwOVor3B z&;RoshYMUzE;rc|^=XJ`wxa*XkK7YIWkmrzNF?Ex48Le+_};A|&;eQYVfxt;F6P%F zXMZSGjLT$9RvHoVmicKm!o#mG#L%WGPF#E>nM?BMO^4aNzvy}s*QBLWnbUB+-~~{V^l$5 z>wnNOy&x|S`Ad6qYRypNj`P>Pa!S2DAE}(($V-Ib?Ye(I4I}@GC^f$%4$3DjWlcE8 z3=?DPB0q)&@5iYxzLQJjb$55i@P-yHnP40@qKiM+C}<2cS~D#4>y90{y$6(3f14-* zQdS$8n7mTWqaJFSp^M4rbZLNgVMm4f$ZU3?Q^WtQ4ggx^>sR&9$=sE0!EE&X^C-sk z2tJ^Qv1E$Dh*A|+6c^gM?QFvS1=^qJ<^;yxjnWVkhn!Rk(XOjsnj%l_*+cdbCkucw{`}? z>!7QT#-y&Z1(R-eCbrbStAXyz9b+%IZCTkJo(`CRwe?2kL!nySc2pJ9tg;~C4Xl-u{mA!*9sHK!F$BEfOaeMJeE@R~p>ZQaov{j`a^mtpv)c#FZ+7acQ>80}UPX zAq?<|lF;A^4*_k|r7^$Jz52V3mCE`*1%z-Ih^~2+GM}B)>`P-lg9i`XM%Z4bdtTn8v9Tt8_ioO>3_e}rr-fz5medyb*4m!Hj>}*ipM^YdyO6^$6N7qc+iq= zq5Mw@^1y|>O1j%SIy!DbbLl}IRJUl7Ohel$?O`(Vt1_EVA>PX71I!_spYHD><>yDf z0+c}xJ;Fpb!*=h}=g_Q3g;YP>H0o0W?Dg>nnIv5iaNwHUHge8#cFz%N3Y7P*ySj?< zpWHL=iD%5V9N(AcWI?VnJ2nEzf~QQB?iM&Fg-KHO>U8B%wuMTE_|8t%ZGv*@KA;jA zY=l=gB^5k=u9Qala2(gE&|>;yt<{CJrZc_Z#Au8WRd8CTF5KRwUm zV?PjxhZBfCyysSwb*xV}JiW!s-*$U3J&t3{AUW|?jT{2S7WIOwvOaU50f&PJPI!`Q zH(7fFMG@~vDN{+KK93Y~r#f7;5#RpYXrZ1jvEW(4}Mpb>Q@l zp4tPFFM7&EwJKlKk`|_$%o%JVNnrm_QRJbgX)0`wFzwyOxLq!)w9hJ-4!79s1Q>t= zVI8J+Vp{m6t4<3|UDHP;RZ=Aylhnhn^EpCX+!n%Q7O6m9wCe8T?tpy|GMdbVgy|X! zj`<(0hUR#n*2V`~ap**Y%gd!&?dLZk$juS+FAb&kQ?<4rR1Thdjy7*5jD8w_ZU8$d zraQ1^!*f5LBAnlI}xAP3b%^9wdP9*qF{;yu97Jmu^l9+WpkQ82bs(YJj`SN%fyT zU4`rOp7fn{x~ynIn8QPV(f4-4#Qr-2+^;oCCIB98Vo=8&JSfc6wB>cak0_NUwL~_s zK6IMz8XAHP`vrcp?}*0c0w*0N8xz`HwR{}c!(L94(5N6hT?~IoXIi_#q?UbdVN!?G zYSp(5V&6x8eug)*Y(;?dRuQ!1+(b|E6d&90zK)Iu^~r{Ou+k#mBP0|6pnu%#yG7RG zv}rnWOOB!s@CNgjM0J2mV(XSIh3KE0SL>8Hs(5a{kS*_i$?3OZj^Xu*tnU3azU@P{ zHKr54cPjf^W+Mp$uU~vP+`j3+hX+A3`8iRKl=o;(4X*59#PNjJZG3U}lS+DdP8yKg%kwjTxyUi~3y z5EB5ul^wJRMmv6VdTCA>@OlOH&;AFnCxvSVy?Alx(#tLAF_ceMB`*qQ?Lb~@S0UT@ z%yOSo;*h8e^m2;H?8G~GHc6L)$yDu{w}}v@+=sRy&UUUyDp)Aw^XLAg@n%McAXuTCU7baN5vE=m*^+q^2#(HIR|VQR=8+n z#D4hthtuauZx*_ahpC*D)vcY_$E0--C^SJ(34V`I&ORo%(*B<@Hm0yNZq0xjXfKA# zPQ6pgJUaNzuHZ+17|PtcE-p~v_#1bT4NVMv8)m!zz-BAev4?!EJI(U+j_F<#-MstE zt4pEG?_?^xpi1aNKpxyH+%e8TbSL0?RE9XX{GxDHTtX~ir!z|?dP3@%tYcElSb`Sj zD4IK4h>La3aIo>t7R=^oL-X9+?A*Y%oqOj-4b7Vf!(0I z^r!Y0zIm~{p}AGa|MA9QPfT@re|f`7LQ`cQL2*>SD$u8(kNM~&?=aa@=FwowU-a_j z8ThtVz;(#vYeg0Zr_IRb&4t>#$byZih z4wbUq*n-5U6^>o~H^(k;=VxDHp?YC?d;~I|=uCt~G)u`yWUHA;9D3h+WK-D?dxg6? z(R;8}`02vjFs4j|=jGEE{kgI~mQ6Yj#hi6_mLt0xGkRh(W2<4E2cYSb$FqGbPHA^S z67>ZI1Zto?1L8-johwZJwR}f+0QXlt*(QmU(lGF`{K2!t6ZfPWY!l5-veOKG>2jWd zjI0nwi_hwm8A&IwbeyT}o{8AC_7;2Ep(HENNHc3Wo8OSY9H(7nj*nCl2AleEPLv^P zG}^BR{0yb)!Yql92Qr34 z1B?bLmIJqNsu$|)+b^0xPrTpHpR`qml>plypf6SkAXaIIrfvB)|y1AnXfXL2unKs!K2~|mZaLI#;T1UD3bToUJ zQ&M3C!BJ7=xw$-Em-Dx}QO#_f(Rvde4*$8qfBtz0Q?98&pNi7bP6XByE#nlU%V6P6 zL*lnnr6yPIPSsfK2;0AD?Zt?Uo|Aq1_AMX%L&0wvk+|(raM|wk{Xbd&%<76aEqOaS zS*T6+GCpx>(rGfRenpR*4?D?YhSyPhCTL5-B=*Tj3;AR@Lgo?|m+x|BY@Lwg%*Y)fpYYy}c@la--InO>T3C z1WbFkmy~EPU$rBcW2l5&`Ft%WqIB~*H(FS!la{j2n zAkU#f{C$N({pE8ssBCVsgdojPlp3L>g!U@biEOW4`NZCCklcRw+Cz-VT!~fL`*Vge z)U1EPeBA4q`4-wn8uV-)t~a&p3+hM`YDyYD9U;SmS9%KNCMIDcqY$1DMjWHBUyEZQ z5Xv>YeewbqUlf67%6p~2;g1zDrXRQdL1L57Ds-opN9y1PAp_s#7yMpCPgJdw7sHmt z^P|$SilPq7aWI7P1-pFAd}x^<&(ZpF36wvE9so>bjm^F;Hxd*{Hp?%FMw;ynth$kH zzhlh?1%~;|`H^+cyrd_;$#)^x@6C-PS~#90W0X!|>KOLoPr9p=@7gck$6!n8qfL5e zK%b(06Vssdiy3V%_FP1Am=h}7p~B#XqBjl6+Eu|1Yjr;r9Hay_URamB9uM~HMUe}Z zv$s)kob+J0ckTU^)ps$F*pB}6)2FwH$_hXK9k`YdY=DV@1mg%sh=`8g7dY51ED91M z*-iDS@Up9kdGrw6}f!F5{W%WIFFsMhhTf*(Fqz7el+ z6b1F|riy?}G0PNDfHX*ApPzDCicNP1o0ZO(eDl|STI%60+iMc|TV66hy?FZ5{b+@h zF=l)OkCH7|N$@B-+m^NexQPZM*8LOfDOyu#iHS6y{x3U>jZ5+%hd}TdAI#KFtF&8+ zESgdO>CB&~4Bv*&758IJmK`Om(eHz#2dpq!m{nC!bTI-ugX|cBRsX107X*;e`&gAz z@ztHdqx?*Ut3F(Ne-clx)sFA+a8q)3aRSH!8rg)LSv{ZqO27Jl3w1WU$E6G$nW+ z9%As5T603JlX_v1efiz@&dyxV{p5&c{6gO%kL~CwS&flNms8_j@PTN0nR;f<_sgAuk&wVgv~39q52u3&sab(MNk5e!S&h| zs>#){klDg$`YdefO+Nmv-fVEk)?XAGLc*W_!IV)`m+;p>5$ z>8(u=j?*+<#3&txMupJ)Z3@VmJqKzB8xJ{0xxW5SX@ z%%e5IW}-&NEWe;&4g94YH%K=GKRj;KZh;r_>D}ea8+X?;%=QJ!0fZss;!Au_L~2q4 zfIZX-Rp{tuj2G^Sl%XJja{On_1!SvAXlMl>AMwT!pKNvcC3m~IDt|8DZBQ4;$sMi; z%zmaP2zNbno%Trv6QF*C=h)7T4s{lvbQ6ilreAWIL~p_(&x@H7*=1jn>_(bzr7wW^ zBp@MXU#;8+$pM6Uz*22vSlSCp2e;&E#Cn^xED)PusRHQ@`8e~EjBC8(cI8a;OuoPN zUVwOz>7zc4?%+06d9`t-9NXz?UXY=v5k`T&+<9Xky4`tYgv+DuEM#B%?Q-z*+v-D5Q&-#~Lz45H6fmOb8l z*zub~L+!xO#zjfhe((+1zHakKfz7Dnm5(~c?z%Dr~&Dslfcu95ZU%*b#b>LRCs$b~{2?g)v@6J*?nn)J|u!dZ(vbu*YVnwG6}lNaQFj54YxNK5Yh%^%jeD%WF%dsz6aW@rH@d1{BxM-XXu}fM*b9ABP<;j?dLb|Gk z)|_XG@LflA9qU_Z#tXQf)8kAHP)7&6d>NdQ?)%E9gW1T)h!CaW%7bYE?9E*1Xi%ZJ z=%?Qqtb>mpC5AERL_`z~ZBP9=j>Qd5jg*B;9B`UbbxP+OxMr(#FL!2?r3$Q4XLm_h z(xO4jS})P%sgV1bHwnR6fwN=MA}}?k7<*P%QS4!3bF-bBprY;xW@!Ho9zDxYyBDB94PchwZh z*IHpzIr#FwP>@05=h|P&iC-@Q)XXU{@W2+HwYqkP8q-3ogmhpuw2zC+YqIYugW2KV zzjo!nETo9h6>gT+fAQs3t%_`lFAL{_Wc@MA*Sr05$VQhUR{sfo45f<%nj) zd56?S&~%}TTkfwq!@@<}5Dvah`r~bRK4|t3U&V`W4cncY?}0hRxw%fc?cVJs>QksS zj@;z*J?H&le7tBByah%-9z&`2A6-GD!W=&fi#A}#=}VVhv$eYJQvHkUN)SdptUxe> zM_)Js+u?##)r+{@P5e^muN!P`?#!5e9R9HydTH0=;W%$M6fv=_Sy?Q(`1s9wKS+H=%k+hngD5|b)$ zu9FtViwuA^{)3$~W=;h(ym%5QZwybtdoJgdK}h#0G)u2_qFzBjc`}KRBIe|brz*MN{aE$Cse|j| z&d|^r7-4lp#Pp(N#B%x7M)J)=Z>*=%k`^#Yk*O~z9c)YVdQpNOJJvSQWVqhEP8WEb zme1bv>sJco3SC4Q`yEUQ3BbC2)M2hDMXli6Q@@n!*g-f-La2A}tOa@{Vvy==r)rsB zh=xevR`M5h5O}cG@tDd9!KPPPe@h8Ka5w!`ZDSo*F&%Ut%NXlq8-qw7%hl6HOST)l z4`0uNtOJNnjaR#KxaAS#Cpx}GSfG%i6a4pIsD2a83=Abo>kcSqESP8`UQ{p8OcA^# z&~8$}V*`T`Xx|``b4*I9dFu#`ui8W(dk!=#L-pgVK(Izk>nf(`|@dHcRgH^h7I5?wk)fFs=PxSFtQjf_i9jkf0bbL=Id205Z|97B+| zW`-GlcRq+(ls7d^FmpCbx@0H45sh@3(p_|p9leG z(`25YC35Y-m|CGEocGNVCSu5qiyo!ooq==Ig;Ck7vEi_k92uw#Z2e|Rxw?Cp>5Hs zQMw0hP!b`TMUkWO`6UMs#|1n*%b~dYguIK;x1%CQ+)&36x$Qw=q9jR=5$&(<_#k6A zfS%#lU+j$>5jVPISkNB=IQBP^86%V0ZwDFl4m{esm{gWNBWOAv?&pWksH26&XLK= z@}(#J0$c0w@ndCJj-<+nOG@YHn7#fVd1u+X%Zo(k7z$zjpGcHCDRydJm1F0-%V9^+ zAlU;xslWgIP+NANPmCLmVpN}%Af`?P32b7y@wwK=VLA(a6E@5Ok-a%DyGK|ULFWnP zbszMbMlc3)0LKArLY&`UeE^LW90D$-nry-jy&8FAJ)8zAmY3?fc}HFmcU<A8+N%Nn;;~&%Of5B2QsMTPr1=fVH#tV-Omhhl+O)~#hJ^pn4<`e zjh%S{jX17T0x@e7{Qt(+uU}wcL*r!-$o)$$NR`US4Up^Xx1rHmW zWU}_Ljzu_VRGMeV@kqn^IYF^uyi4?BQwWb9KM7sneCVU}i_-7VNx{`=cmTI>T!iVJ zd09hkc3&SKEsH3$ZOS5IrsIP`1nzk1&)3S%$KDyNLVUA7s=BN2#!{GPBhFT3NC_Y7 zH#Mbi0!fssQTh_7QNJjGePD7z_ndhC7PRl@KdiAmYi^7=d|qYS@l|{G+M(Hi(14T3 zLh;%s;amfWM*8SL>lrY6c#EOhRiU7%{}Plqe=zmXiO=;p+}^kCn)8n`KpFpNV?S1R z$9R$A`^#Yr1fI7T*)A=7hu;a~*kgk+gUC&O({f``7w0I|)-O)o-CXds+KWq7t$e5G z25Pf|K%$~c^#$ppM>TRECJ!lf9U<;?puLz~1`6Whq+Tcbk=A!t$F0_E5Nt7N!4mcJ z^YiwT+C`LwpY9)m%u|J9Co-KkU%Z&iFxfURpa(r~>Yz^>660V?+Vi8o3#(yz=>W?< z6N>*|nv=nd0bBC>_a{kqvULy%Eoen+LRH@3Eo;jH=AAxq4!*K5cs+wEE&t*ANz2al zd?Z{a7~XJDNU%$txi}40XG z>M0iOuLm_FF)gj$Ou?gTNftcwano;J(59jTyx_0z`17BH)S!E>W}+OU*@o1#mJEYy zqvifrfoV;aY)kbEh+pmLRFii++HR*Q(ZIzb>Mu9wfZug4HcO=GF9(W&e*EW-K zS65fTquCg8f#}z=On>!8`T+_|L?d7JqIn;fvZ{ev7cgaNz2&h@&MTd;I*Wv^Gmr%< zcr0TOikXXR(x)ktb906dIx&Qt6yq?E4zwJA3;=^a!wc9VhPoSRp&hP^ZUw%6GB+9C zRJu>LcQ4Yr>iD)^m(QL3^G)u)`^C5*k70?h|Voww2D4^Ru zt{U+h^|vPw&g){=UA&4(n&A-!lOw;Muf|whaom1MAIOA5#ET3$ph{uokK5* z3?eshsN@{V$OvBD-u_7xRIzGz+00IY<#jPdI3n?Ez|^2$-x^4__t*M1A^$(=gSl_d z3LQP_%X|u%vs&H7w+O-(J=X&V50XI~&Ax57kT>QHW(Ojqb?Tx8p*IHo>qsJWQma;} zevNAK3lIJf1UMbLcpMw&|1beZfMSr8xKauMN%9Ny)xN&lg+}^La>@}X+5Xehjdxj` ztcoB=7|W^JRs#MDSd&SM+zbFWjVUBDpr1}hn#MlAj5UN*9d!ElMxMLGfroEEh5#`~ zMevBo`E>()CtZt@bHRPm4G)GJQ8IWWmvH%#U`hUIq{Y~x|0p3FUaTzLf4j{5g&#;n8))kn^1J9`5k{n{ zd986SrkYX_B?MuLFRL5<|6lU3%D5HtXi09T=d*P|`+$f`>cW4Jx+?7-H^{hGCVl2c zR9)5Jmp9xfYZA1jF`lymf$uI_6h?O=4VpZn_8gj7m6eqw#HzMj%O(!$e5GH2hQH{> zXzA>bGwx#eco!=>yt(x5^EUoMr{sCN`X4{IF-cNV&b>%q^lZP<^fAs85XU#9@jU9S zQ0~ACW77E86s&3p#*ov0sPIE|H5Ei~xzqoQ6u3Ba;7@y%Xvnsya5Ni9{XXa?_7KnN zPvhL7rU$XJxd^wbNija(_;I|)gJ338zEjd%V>qlz%`=`>He#QWEzUdDC&e&?tirv+ zX{vQx*)|TY5aE|!pE1s{x7AtE$M(N%S{P3L2Y{7OX5s{FZ*M=Lp%FXG#=Y#i+Jg$y zn3!SJzw`fM+B!x>sqfZC_;OepF&BC`3DH}VzfqyB-6F2?_~B+~{vq(KPHOvjiw^Su&TvNXda{ii7s7o7bp~)k z;3^uYp$OC{dBzXKm-?nT8lQ|igwL3qYR6IW?}xLaEL@nfM6|G#J@`c7+GcAmaR zRWt)LgwgKKJ3=ZiBY%;Y5WO0HG%dW~+q{0g9C7l=eIS%gdSfp#ysk!Xf>6aAs;y#TglKboTKL z1RO&;X2|{+Z~@6dP|MxHtoBBrDY(n&O~_!^bgxRceqkxfZ8&lY70FEEg+z|}pYHtBA(nMO65EzQo*VEH!b_Py~HXqCxiRZt8ey;S)mAJ|QxcF*RPk(%V> zTzHv83)%hN9{ZL*^BMh@_yeROdcaoeZbo6=Ni2HgK+IrmMR9R^uHz)SY6D4KzsAFG zOcEz0-AZ@Z%iFsEvcEbZQM;eto16nZJ&lVrV|?qT;31fY6bLeoJG$#I(iLO9!GWW+@oKr|FDSA1z99OSS^nH`%Qn`f?=hDnUOe9fMetdK^B^qwqR9jmVqrN= zx;J`R&d)5LFqydgQI1X6np@(HE+U!Me~pUh%*}kEGWACb;MjIE!*aiAuPdPZ4ixL$ zx9jnA3twJ3q|;o_2t)e_8HvzZU4XkAI&F*H&Sd~4X&Aw5(0D^DW~w$%#@a_z${vrih=Zy3n`@+Pj}!~9fT2qEwf ztGPu)o56MTt;2E>+^oz=uu3Ve5;Y8$PhLf-&wOlr4gyM1dStcXLLvPE=>5eGUej3dVd42n)q(MumSVZlW z)ObO3F_;b7;2&&V=<4lKtRC~{+J(UQY{LFm!u;qv-8)19JOj5lxk!wg(aQxoB>gC!Le z9Tj|S1*N3{&!2aROIGFQg{_4F@AK#R!1Txtjg*@bM$L>=#&EQ3_%K?~SL)5ZaV>pt z@SV{>niDS6hM&WV=AlP@DIG$EOs_{*-fO@|M5jJ>S9J9C@ktxEloZCD$Bm9OH1IWK z+E5&>jX2JKos?7XhI6paK_Q;+9N}=(DXLNZ>is|D(rci}B$fKG6}5lzf&=9i4E5!; zE=`Y z2?=pQ97eg+`eyq(f&Tux&b{G>=)cfZ;?1Q)q}Y!i(Ti$>Js3@HF7+`p9c?AMM4riB zx4hcK!ROQAbs3-d2rGe2^Uc z7Bsgs?}jL~AJ#!rU?Wt`mem1$+q{_uQJI$|LdI~Gv{g)yp zG0n(qU{LGF%T}BckofXtPPeL{W9M|GKp<~{pU_iF#0j=qI!tK7CfOAJ$q(rD>n&p@1*-Diw5YT+VA6G^c2Nfd*9)X6Ixl@*Y(n zn8xn@gLIO!82@PVt}+0}bsGYt%zjA06phR;?skKjy5QmKTyRhFDUtuzBI}@k&W_IY z08BMuMJgl^BNembcKk*vG+9|OWNU5h0y~F>a^p3*N=i~CkUc}34vimmkSAT%UGkt9 z|D$+*5u!y~>kV4c4r4<@lhN1Sc_p=Y4v~{jeWnHBu6sFR61(PfcnywA{PX&aFCcgv z?HE$<3>J2}lpO7G)-Eya?u!?gn^wD^TdPaLjJ5-!VDiU0s3?Iu)^yXKW}GB}Aa@)y=qkE=?XxkxC?#|TIjOGW@d<`%w{9sO zdMg%sBD|)h>BS#U!EuGBSlhu*uUOd})JF^;LrNc_o(<6@MQVsdp((Bj9u`xJmiBfQ z(r%&IZFGD~ne4KI-&P%w`?%`v++^LVogSk@qlsz-GU`@tr=dThL(Z!-Qh+{XScPn( zx3lTFe=%IW|4V;iyt{iP<|Lm)MX_~se0u#hcu6lYw{4_*3gj8pqBv=LDo+D@x)0%P~oU%W~{MSDmWrJq<0T@aqv5 zKk80VL!0@)+nWbI>na7#4TVm_jY-3~80|q(^`vC=lOTaiy)Q{`-W)_e+<`sq!ngJH z@le0&CLZ$ceIew37d!Uy<012&Mz|T{r(u#NXf&lu zYnV;{I5m|Ys7NLM@d(Lml)GM=N}{Vx!yp; zhMylNes zaf4-!lP-o_)M|*|1*;F_(-lec_*e==zwW(d|8wYBTdaiA`Zxau;x1e**?`sKsV$6= z*aR)RS7CfKsS6L+UoLR2d3}}@IbGKy(@2{)yOSUto>NQywZG5FoH)^@&5(e7DK23* zUf%U@xO>&MgfACQ{CO~c*67}Rea?G-LR9})biqq=J#k3zzo{E^xf6A~CpeM0WKi`E z#fA+jcUWEY>Xr_f&;R}Am4AA3b~;QJ+W`U?2fb~OXK6i zO%`EtiE;%7T}nhs^IT$1Q@U}SX;#Sn`(%-kksE>-h0|y*U)Ezx&rF}^c33*lYMbC& za{P#rkoVqGZ;i&Fb@S}n@Wn=eYenB9vjhnbai8+%L|B3zs5ANk5E%ET;f$yBO(d2-uloefg%jG#=O z^pt61mp1oVOJtuA>eWQPY3tzxjc?6gE``4X4Cx8%W#24RY z@?{T^47VyUMNc^iASkc zTAqO%HY#+F&X)Szd97Y#aU=OC?cGAR#anGl`n~15^14eXfC|OKPFLKj?%ZVk!!jf% zXY&pDrmb5(`{FvQ$##&x{~)|`cyYtty&c_seOJ?yEJ91^cTNQG|!vTh$4DFA|M z$eb61AC@ejG8I*_X-c}AYF-+godV>OIg#+=Iy4l>R5UW8G&8J@s~|To3@JSAAV+a4 ze-5uQ!p1D=3t@*aITKUOZ!cxe&K{SE`WY-@r__g8Ixu5_r`-Zfd(P3WeXv=&D$S9} za5Tln74BOn-<&gmO*R6s+~H9}yRrzO>ppKjeE}El{c}@?FJ9b1ij9qhJSL$aEoNo0 zEpJDhskUask(Fns`u@=H_TSK^lTn%guS}9fG`N+^Vbk}$emqF5ZijQWgK_A!0Q;|B z2go+AeK4N!NrjYCSXg;O7PklANK2g$dkC@>Q?vV?nV3|T|ZuyG{KRoM2 z?WZs~sRzU6L&ze>XsqVG{gR%(z7G-;dHDI0k!ZaK<~|#DaW>SShGKjDCOgU~nNycO zYv5)L*sZPc8vYeqflK`IX*pCjb`?$`NX>IIeJeWbK1iL2jgQA1KGN&^>l=31>xalG zp14@ahEZ3zYw?gE@fL-hx7zI3x`A)kkLi9D#4sH>jc+OC?l6Hn8N{9fTq`LnCEGO&g-*3C*PcLju;AZPLAgS z8t$tK36=DiaZv!kprRKpvmE;Vec{FwqolEVOH6B^;dCJ+E=bU`p4#wME|GR7%4V!x zI=^U?k3sg`rS)#76^BI7?{lvX+s_Y74;Sr@<)zUmwZ#1ow;b%3lgqNN3x^~A(Rar0 zJ|drNA^ofaPN?Dgu(q$b~ zS_oMosIjhbM~e4=S3>5SEjH2%csDmIG`D0zaI7$7zVe%whLJ)laqVm4)?0d5c^m0? zheI{DZleV4V}R**-!oE{MvT0MOJtOk(uZZt)R8`PkoHf??L$jy;;hjI)}y@?^|8j1 z3H||BBdw(cPV@5el4k6p5>^g=hfjnj^5)5QCYMD4=1_J3gsbVl(QdQRb6~B5Lg(mj1D9wZypJckkn6 z>N(lS-~X~efh-P;MKk02=xaRkpW!~Z`o@{O ztEeikHEXweQDrD(=SbT+a;*||5|YvSszkZoT`Q@mC&wO~o7mCcoXSY+Mx?d4jpLp! zF3-4JPW8uOc<(uiqj$lmdtk$gLDJK>m1QJ zivMDAoT41TcihGFx+=%_ zYTZQQLiKZziQxGL|8LR_Ik`}o2*w*Dn=_Rta|UB9UZaq3-Bsgq@Vr_a2G4zt@g-ZT zxc@oA@+Z$}aX&n?_sJ9TC+_Y?Oy++4h=7cn&1~s&s4!GCMIMncG7;-H4J*IC0fcgZ ziQ$NefyDI}A_^%_OQ(mSxwN+xrDosUhr5RO_JYdE5le8l`*?T?EH8xD#Hkga+p@Bl zJ41BF+Rqlo^*tYCXnT(g*{P|EhMn`)9coDMF7<9%1?!J0 zC&r8RDt7EK0v<;!!YSKqx8*U1lowRT2~ks1gK6RNDXFRoQ{WGmbPf2u($2l;qP z7J;w-bLcY1yFBCx=w+Bu9faIXHPp#htmZvl+ssJmeSOFOKLl8@hSVtHUv1}Z!(uhZ z@0jU(*(%vTYxGg-T-$QKi>rd>LK@(!+3?SqJO@mLx++%%&hV4=OIC`5a!OC)qoS%_ zsny2E=iM~rlQ(m)P{!(1KbrTEPvib}AQ@U?@|@=^=cOv)T3K1Y`GnrEdEdRc*Aeh?$?>D`3q8d!523-GcM4d2W4i z4m~Ak+Fh)KzirxPZ7~yiIcY4sl0T08Vj5lN6^#nU29F_?%7EIatjT_m9|4r0+T*OpX{qSGB zMVtqKsh19IN6a{2mhr*&pH%kn@~#Ew$(SGE0MNm&z&T;BlD@$)HzlNgq9Rve;0Yo=k}f7q;+F=WW*E9&noeq{87hbY3Q9)VeG97S_`fXF0tqr+?8*QiVT8 zEG-)08O1eH#bgt*!n1C712y>lbL^LkT~9zhDJUF9ly}EHQH#HI9M{cztohqu+3;4< z;}gkYc#y}rxOgWd*5bE^bV291p-lcunfxu2t=f3?YA2ZR8G|@Gder-g>uw1prOof( zv;3#HuX)RcAyrO0>veF4MS%Pk_3~10;dTE)GMotz{;$ucy*iVi0s+-7;CUTO4_R0c0v9!ZV@BqGYuQ)ahZq#a*R9&J z%|6sHVPuDFgP`}2ZY837p5q*#^_c&$%ed`q%@^0}&-j^`i%ikE!zBCVZUGce1k?sI zvRpqtF*$iNZr`)^_V*r&$PqY~oA}XoFg|ihk3qKkTW~;hnY&|FV2Sm<>Kf~GkJpS(8 ztSY<6XXSB9!pgVx%bwq`@gT_goO@j%H-(5Z;qmhQ0+&3@^3&CRsI}Hf^$-d8ba$0{ zTx`nX7LAi9SAqDXjM_#||0G12A|sPd)Hql^DKf9Q`2}L5g<_>HU1Ih*>V~`Rq+N#5 zUT+Fs?>EeUMP_b?3q4-t%}!Ugv>+XPDJAjQL~F?!{_YIPx6 zJzJ8JG|{;z&axAPqr`4hf#|*$>=eabRxg?^Y-w@1x4MXmE&Z$+Nj_Vy7yVL^yiU&oaa=BKvh}?M0k8rxm2RG~g<<4FEzD2oUz?oxiE>&Fo2;VfOSNFnA_Bc?j zAMfyf{E2h0vLVGLBmhgb8C%3CJxjj)d)ehXG-uD-$^M2H8ug<0VTP~os_#zrIpjfTjnc}vtB}!A4Y2j<`)71LW$DDV zP?+>lZWBfkUc+D0@uwXA572`E^a$g7d@+3gam&LnKu2pC9piB-3YzF}y}Eld^sI>j zA(&I@?3Jmo905bE*;_6RLnViWu~U(89{ANe=l^;7+-x0cCsInvH6|XOHz~PzX zJF${h{_U~Dz1B>pYLHZ?J=|a0TG4FZ;5Z)eN#(?QZa(|PLjplQ02ow|i@bZ6sKZTL zUa@R{&ufJ|-SI&-PHjhT`J8J*f+XS(c91}f997QBkz~BU7p;&ffBW`EC8a6LnHE*h z@yO}2&J3DV5jMk(j0k!bH!$GEbtV1m6|tG}MZdJf{9{l%zy{`xoRw9Nkn-3}A5v47MQdwR zGKpw#6?%-8-CLbLHf86{*JkU>a<#S3i7~6!TUM^4ukIO4zM%v4kyRS!`<9L?78?iz z`mUL@>xaF!Z|^pqgzM|;3Hn66?0m5EM1xUD=_q7ysxWd}nA2V>XdYQq9cLRVAR-d8 zWe3lyC>fW;ME%e~6g<0*y%N;Dvx;6I+|#0XPMI*pRu_#um*-Mzgfe#bKXL>+?08&P-;A*>Tk{ql1E{p&UbE$7cs z>=i$o;^Pz3Hg!wRE0jWa_hF*IU1n%)ZH;+E*|ebQ<$j&kM~i{x=xfA>w23BvL&G(( zu5rg<-@rf@tc_DnSrTSHe2UyB|Ip;dXyRbEvsUkRIn2)=3?WN(=qXB(Srsxsz>LxS z9}czNUxg~9Llh_Il8RYFiAwzUnm@d9En{w(NM!h4t9R&sN=ej=2bdY(s11G`Xaq9}9`-I3K$znEszgVqK|H;KIr)-xAxpK^@drN) zQsGHrA{#!|?X1AUZT}B#ZynWT{zZ*`X%vtYkQ9{e5|C0cNiQ)X)4P$|VaDJu;{JcJPikXh(r;BBA^>z-vc~}YCzT;p zFihDqzqt5Tm6eC@A*$cTQjY3tN&`V}x5G*nl8eqak?jkQyT@RL%SyNR`Kc6u!WV;z zl(hot{Z%Y%zpYQSLh^jgCO-w32E?6>sO%^sG7hru!cjso`CnLUC*{u83 z8U{99RUWhUF8Q(r`t`^WFJK}e+y=!T{6f-)S7>gQxV1b!+|mNGr?~CK9+Ktrl(9CNvLE&v+Mm`(Nn3 zAdnw|1uf{mgM5a+yF8^dc-oujKp`&mnQ$XgZtgxhIjEr$`h;UJrGbJ5RW-Q8!Tea_ z+}t?5sOT%0X5qHc<~M7PHQSoIjr>je8Iuw_13T+dTfNJ`$2Edp!QLU;TGYFhHN%H&VGCT$#zpW~{EWC`v3Nbu zT|8Sg=LidykSPx4S+-f{?a$%6+`T1p)Gmu*>Hb%@w8k9r4tgJ9!Y2<;QC^gbg$6CpEjU z{QCMnKW~NN35X-_Ri27#|JR)md-@gFvLGvq!y~O2^N92LZwsl1hlgtd6bg}9Sy^XI zp~NFuDMXaEBY(0E@Q ziPg>XS^>{Ftg+I9)=v5R%F5r-R)Ew7aYbUXlfAv?>Vexp?xNg$`}$Ako6v(Z#gsyv zN?1V3iWv|Kr*myF8VCq)2D!Fatq7#;-L_a{3}hDLs@_q7h$!1kEltgXpSwq2YH3yv zei(syZnlYqt*w52LqkJO=GJ#WEfy9QkRp(|697)X*iA*i@errV{PgL~2{#GdeD#hT zHCk@hRjQg3-q+B}1D0RdH1ltFdww10$R@sTHK(&m(`UqS5N!`?@o=^M`>kI=BZ5@D z?B89(hMV7s zLHfj*@8(RiPgITum`L(6DJFj{DJoi4R#yHb!NRii7Ve&fNyl(f1qLXQf9+Em)|?$Z zgvd;=ac=&P;0wUtukRGnqT}MgWFkPT_KX;&y#oRQh>4ke|I^-pITsRc&FK4Z0pB1J z@&kAlQpLtJD_vQj`Ub3gjQ!*n~sm zE&`B-n!`r|KF62*W;RKG7hz|i0Gj`G=CZJ9v=mP#82Ac1@0T0+9y0WUw|V~U0L;r! z_kWXP6QpbU{6-~v9Q-I<%dJO>IKF7FEx}>VZn&MX3})n-V^FbZ>*!!1XqjMWz*~6) zWH_+!Gt;lakbo3Pg{_rN@QWArL`0WG6j@MoncB3Fvjs@A%&`pZpP^@8+t zMDa~pFRu_Lg@Ug#-P*!@0z*(Q{X72=DNod<17u|Mr6 zI&pDdX~Gp&Ro1}{e@q!+xInI%^Ly>nNU5s_J79d&_w%CEOX+qNnK(Jo1#ZQ%cu8j* zc-Vh9y3RH9ziui}hky`@a;$pzKTtHI!Wq8PcI|oMmCKjgVa{cw!i5^ZZn(an9m-el z|GY?$oC4-jz<0BAaG-DlVm&wg?{#thC`*vtKveyV^rlXu)3mv^G1jJ0pX}J;`1JqKD8Y!trdM>VzfdLZWQi!ey zhjn(2No)iK?=3dsGm(WI0@`~p7gH{DGky{DcxH{kN-%Cqpi}A_6xG9a_nrcXq{+c9 zpj(dXaPx36{2$d3RHO*sQ-LSo;0SSAYYBvK-#q;M==80t*6$~MF#LZ&;=x7sKS;E{ zxTC>k=6$r}T~)Q5xJu_L4Qj7oJREZfvXnFJ;qmv_ZUL2RC{X;ch;KpFjshCiX3)1g zZ5p$>tmHrtHV5351a=!O;}vnu0DXXds`-;qza|j-Fp07-Y%rTBXqSKg1o-b)O*&=v z7XcoQenEg$2PF)|$25bh5wMr^e=84~p#FARjAXcWE#*g}xia+ipx5kM;)mp&5PXS~ zmn;u4`*Vl6A$i@3-L3WPR02kLVxfL!R9poEQfl~MT8hs$W43=7F31f~aGd&N#PI0R zBX&&!DPLb2sAIwCvpIrt2_1ch?TgY_eLy9W5QSYE@%5`3q%BX*>3^lMk$mms1EMRwct#lH(K$rDPXiYAPOZyQrC zLF$v$aH;q48byT*<=4`wk90R~1g}q^Ik@dZM56}C_+Afe?{8q&kr{Y5H3Y3Jjk;XD z^=1pIc@q$2w1~Cp>g9q~s4b3dQDO9Wt<(T0DUc`kSMGm0UKp)89RsBjHaR)}V^Jun zj0SU<;p1lj{{q7SpsBGhr6TbvFfX=!?zb_w298eUzNh$)y0qImxJnUqU0uYGAOONT znz)=R#a3Q0M(FkZe_)+tA;PGbhZxX9!3^~R08&t7mX)jVvADG&i3N4_8`fic39zmP1+ka_gD>rxj_9^|U^_7M{o-ToI5Yn)Cfc`Vvm|Q~&QsDpweI1;* zMHYb32XVY}n2m>DU9JG<^f+kvbYtzVK;9yW4YURNI5;?NaDM8JwqetSwLpFZyMI)a z626s{)iF?n&yhz0hoz65ogG)4tXb~xiow8=b2ePeevliO>P1oR=`qL=?TQSxQSQAy z>j!06YMBD$%!4TmVmy_=)gk+&$>z^NuUdqZpg1~vKS@t-LsC|e)Ke(7wegDioawMe zz!<2(6u;2RpjJo4E7F3WA|{Tsbf52GhU(cVsUjt1W$njA6Em0N-Dcp#7;VXWj#`Axh4qy)oZHGUiT@lE^fuNvsflt)V z6q3Y#pbArL=fzOC3__}QW1&f_FV~tkdr2<(LOu)f^OKmR7j zrPd9qOh{T(Un%H0dgw)NPGhSujB zw|mPTV{8sX70t1~*#>;8| zpdqR7WjcF;ChW7xwBGj!%+HL0S7`+gsJ` zvZ+)PhRx9m^UHSY;||Yhs4a94kNB6IZ@$eizY;}FodWypwAJ#Opdgu!jt-O+GLIJU zD%@yI9mN*CVYVmM0rf9jPYyO|qH=UTKT`0b zq)a-3?c)%|$`f4!JwTO2NH|hh7cFVoZSD-E<1nt0up7k#Fl z3q#LzK_5Gix5Qg+!O!w&$#|HJp3o=@v$3t{K3Glxo+@58OI9^ob$5Gft2siz?H5f^PaTy%;GRA+^ktC z?It45kMUs|fOY2uHMmoffuF*!?>50f)jhv{^e6ILAmkES#6Kki0m!k&?zQLLTDgHq zR#9XBBUZYme2c-;D4np3nP020c@2f{GtdFbfx$n6J? z$clSY9;)R8*NahEu&-K%ji;hk`=C*}DCbl;1qVhkG#t8cyE@b<4^+TdUSW=9l-d>eN%Oz=lrG3SWQFsM_gnl0(l>O zj|T!nxR4=TnG?WEMGT8L|7^~F*m?zK7Vd<&GD5%f?`+CfyIKaA2PwDz;RaZI*V*Y* zOsw-OGK0KOP;WA>Ei61DCggcOxe9W*0!JX@$fnpul&5`Un5z)+Z zAAq|4=ndo`KMX>?y9#Ps`0OUNeUB_YZ-RxDc#5!-RMNOPsK!9m`wnpb=EIVI0%x%w zz?Gzn+&|CWcecFM&8av1Dg)~mgBcDh9Z_3K@}@yi4QTcdB?&=n(lN!cFOTH;nhO**%Tp%nVhJos2GT-*oC~iExDUYbZ1t8 zuH=J0z5_n;5yXZV0F;#iUv(*JO!4$+mzslvBkpF($1tgkHgsJ0bLlk6cKpH0eQqR& z$!4Fx9?HPV8aqBt1~E5-@1x#uNK1Ktd{EG3&+1EM z)h^8`r)vWcb0ZMbrVU%Fhue?C$Q%2q0j- z85DB#S_%NyU~&n+y?2)0y+)Pm^R$jl65 z+&7{qE6YNxcyxzj#KS`vC_DJhAfF^t0&tNVE#*1@60mdRKgbVUbdL_Tv| zg`^UmJu&zJFAy&vCxZB2*RG6PUib@T_eY|ZXY1su2S^U1p&lVEZ&FgI!N&iU(54t*3Ew_1 zzK|^ZBlMW4#1iLM0<8b;@8Sx!1`CFjx3DUL1XY%I7}4^dc76e zx4QG2Y-C0JqcMdE+nu|GZ!@le67xx^n@P+z2=->W1ie7Al;4`;Rw^d(> zL{C=)@V(EmE&d7n)MlSFA33)nJ1ME(xku6~_ZM(w5|ay^ z)wrnVy=nxH4d@MnGiGs=c7&_OCLA^rG~gKQPLsG3MYDlcO8e;WXhn_DLtn0Ac;kpa zzpWQT;L^mHFA|Cwhgg$G4(k0-!^VpNS{o^wm2)!8rX56p{{u2b=V990l$-pF45CLG zV5xhVft6K#QN}fqZagxReRc%Ot$+EUdGHKHIHzWP0nouw7%(If^=C> z3_Ck>s*5PiKx!wq<6I}vVdeJ!0Nbe9e~+1hUi2jr*uDVXR^}^1E<4Ktu^?3ZGuQA0 zfQ&!ace03E%iMuJXwXe&TjD^P%ncVb47)$5_Ot=aC)HznsK{mvGQfU|6bbyHZhggL zA`~5+`-;z;eSKX365JJ_=zy^IBcNy*{^(IG`o(!euaK3-fcYQ{CxikqKItp+;@LAp zIJ6!E2*2r5XZ5`sdc@j&qm*#NQ?&K^;)M2f6ON|6&CaM|&hv~WM_ ziL8e@>iXn(`Rvc}aA1N`yu7f~^TS};m3$w~ z>xEaVPh)W0tHi|16$Wt9NB>`i91uA2##xzEOdx6Ds?m&boKKej2rPu--)NM)y8pNr z{z4a}5{xnF>$`yD(ew431Dpgm{)lxTK}FIB(wdBc3Iq6on4G*F4tgNSKxY4_A&}Xm z+-2o000Q#9zMPOT$HZzW3g3ErnS)QFs0YtPW$jbI^Z;Lx0i_D#6s_CT{@z+8+0j|q zwhy?DUyCUOSW$yhUsMj@-~OU`%BZT=`g)ZApz8ogLoSNF>)KJgLX!A3Hnsp7G0drb z8vH9nw?HIHF6vGca_Q9cB>6d|ARHsF->L}A&$WSlpPIvuh7ET8s_3)RvDZzNvjf=% z@<)9&K7uitkd$~@*E8QZ!=X>r{ckzTwKD?M5Plvd4UKhGL4ExXz$gVKYeR|2xF0Kf z{VnJ2h7nt+Bqdb`;QUNBA~LCe$_-5}pp1&=XBjNa%-rQzZ0dJOm-y^AULkNPhc4se za{)r$n_l0MnMq|18X6fn5i25-sTykC3g<|;WT5+oXb&uyd?3GJO#vq^sG?*(KU#y) ziLU8-Vz>d>EiAGRj@_o4$*d;#&(L6;52CQmc2)#m7Sw1Polp&ZT4V!L>!nUC}iz18N1fC1YcKVRs zm4HxAYtsq6OHUf!Oa~TcF92VB4J?LfOledDJfu9D&pM@(KZo*52WO8C4(LR^AFPpS zYbn1#-P?;SbI3T82*yCY9W$q|_`ct$=^2Z9V%2Yk(3o0jgC;nTzlc(>=#$4b@5#{$ z3X*|^@vX;$?O0HULdnJiUJZ3vwAKw(9=VA0b_cV3?ZdjkVhmZ?u;|x0!F`XxyF>+K zW>TOUf+ z0_M}`wUOVD{ZKk* zXD~|+ziO+U0DjV(8&STeQmP|01v6r0_HY$?|9CM=WpMl>ei-O)T|$DqJdE%rM~+Q7YHGWQk(hm_($l- z=L8-3$@pCNDSWE$7Mo`u4#Yo*k}@zfzmPo-N)xG|9x_jFgm)ATtb{k0*gM4ui<1p}}X*ArS=$^}MI0$?lgYtoAiJWZchRf(t_v6;sdfuy57J0pS{s~`F{@kg|X3Wxir|$;4<|j^onW;ovtbCFe(RhNt4r$j}~R1lsFTjKEq#p6cJ0%egK@5N3`-zK2_D%7v<+<^~N;= z0V@vU!m`mRw12McKz?fNCvq}kpnw2(2cApRqXD4foKCVUd3z`1YSqaW0oY`SlaMal zVJ`up0-8T-Yh1n-aS#TMcq0hE(ub#NrLGeJ=wq@nqy*M{blavhtqutPRI$cSUi*)L zN4~;UBZROSJ%AjVLKqxja!O^>@QuL0VT6Uog^VV%IlrmLBF{*S{&~r;7Btcvo4i^BIXrL$8N1zT!6!@Q`|NiH>i>8z9AIJ7sY`1b%?s{@kaSE zP5;)gk)1(lJ^@>;1ZxdGYZL|o2H)|4F8!>Dr~C1pSKc6Ll2uDwGe^EafkM(u;Ufi- zu<&p&H6tTUgZq77jlHDMeItI~oHr57*>ilT2eX%)wDkOLrd)!FTd;ZfrfncMsEbFs zAJ;>sTJ9G&xTEzU*-K$Ry`<-so+DXkdrP?^?d2&x`slC5^6=VB2v@*$0Fo*R<>IaD zo?p3B2M>`~?4UR<_du8g8(nRAUA_DByWt0CWyZCh)iv$y+FV?;v9TnHR!?w()JjLs zS$;Iy@Fub+_AH*GP3N?k%Bp3nhOp@x%iO=u65BC<2c-#(dtj+~(tKvqz3s`9C$>kN;?Eh3>6eFPeR9hP!K9jzKB)q8?sFj$Xdb0~-mab~T!q z<@MWo$1o*@e7|4}B7}+e+W+g<9{^~e%F5*`4ge`Y&$mr)Y`h@(zQ3U(mjf~&0-rvu zx*0WDkiYx= z(+`o{rkwDK9k<gPoWwDvsar@ygh zvR#;K6^?l-51tX-gH`?yTzs&!f#_l;`+T#hnl%`L4e9MAqp4Uccd|4!Hz;k-RCV2Rad&su zO0M)01QykHVHV_kGYJqyQs%(-KszTWBO^xb{0C?+-jW7@tbWvL97C2O(9-F$ZUZ6tdK>q<;`ZEY=F?AuP|<>gGvB82i^ zO@i_LO~@C_GWuTWsi-&>e)#aUw^#cMXsKK|bV~T)d1Lz5s!Aq=zsV@GZ zyb-f?@;{!Zh z$y9r&hSfGoVADV?+sW#onp%aSZ1yzEW^B*>c+CT$yyn`C$3TGn+Ix%i!%;>-Mfcga;46n1&ELCEFPH7n{1#^ZyjZY4H}mb{7bRbG5$`)B(~4j;hk>8eQGK&a0t=SGSJNU$u{zyvY`Hq;a20AL z8*A(2L+`U&@n(W#moFCz_}J3iu!SU;H;^SqtQkLXF?}!pYAX0ZunTOUa{C+^0u~1T zIQL{^k0ihz;Q`6z%Z77bv*DMN0E{)Qj>MaRU$)TmiAuq1{9gp6p1WhoB?LD@DeH5D z>kpzaNbkf4%o(x*Pur%xe7Oq>08GpP8swkm=L4^Kf`Y)^7WF+al8#v)|JT1m)Zzms zClWA|xfWAQoySiR;UgUBHD$`{1I3==Yx#GiqBI4K0i&RoBmo5)I3S)bj})_j%8fCt zhYS5`=4jd6eY%)7UBoTU1f?&9g%r5jsY@j-9+Bte7H-J|$6bSD2)%Kr7~A(fR( z!MGkcK;dEIP(A^f3RSgd&>J;2+Omogxb%2b9u6+tC@f^_g#vrDWLMfUhk~L@>x=aW z#VxIB_lSi8=^L28H{I8Me|1<-6bcH(gK$}b!N8BX0e7}Tipq~;0dNnJkdb{;e-cQ5 zLlLncmD_V!A0H`EJdv$m)Z*yv9+ z$b&~3i}Gs39k4CraT~v*^@4YN;;pOp7{9h5HT-O>m*XXy3NuL~5Si!jwe1+0n9@G0 zkGD1-Z1RDbftCJ~N{ff0LwTW+4i1EO>7(!YtcSTwvUzScqde|!!H2o-d;9BLx0$QX zHChC$-hMKyHx~lda>rBe(DhgEk~6uO=S}S|%*T;m&C@uZYO-S@u!EvB4u7+bbaVG_ zvDshnKsPoqNmozH-rj}rMFMKEjQZ2y5d6H|*C3C3tV}CtYx-l%t~Sr{Y;}ZqFck~3 z-4i6Q7uCa>(xqxk-g>Of|QtwtXt2SNf@->x13;}7ZnyRwQ$QHW9j9pWS_x|)i+j>u%nG61JXq+1nBg@+<^UBX7(n) ziqeLL>6EPwv%u*dP_<@#Vn60XXqs%Pv&MPG78naA%GUzNxeE8*cyNo4E&%;sPu$yH zvXprX<8g9!@jUKDzbkdA_2iIPSz9}-?iMC^;njB~4YQBZN}OFQvC+ZM&~Sr1BO$nt zZh$q+m5@t5IOQk8kky5_f1e#J=bnMuXmz}t@Zmf5x`rTP2q_zrQBi>HJ&f{C(MO{gXtAhJCkWEXWiTSO3@ql70vfG>+ksA6}!U}4RI(4z~ z##2OuHA~o0jSKNATvqVx>?Fc(!r0Zh;b4x(r&6~(SC?g=V1MmTG4xA=^l|EB`N%%$_AK~K}y=os)>y^2dKKB7CEXVPkTo#8a? zUjFA$Vso9H!x8gvW#tzkZ{K=X?Ts??TP=i9iwr%T6_QV_LV$P#0mWB^iyZVg_AoRq z|C*o7?_`q?=#t)#deX^aUQ}9I3529KP%qwdGc`XCKzb*M`(l9`%QLqr>L+_^BG-hq zLI-o*W>-gM!4%L6M#R8!*8-Aeb)33No;|}abX}u|PLmMmnkJ^Srg|t==of3x#Ziin z_-l^WC4TKEyxNe1W&PuLqco{igmsxC+;_2u7T?^Q415I$z*Uq0THdR1XEl23FjSLD3dhcJvbw~5s-fZ4X7|31M z7FzWxM5Bxv*Zt}_=-;l&d7F2i1p6GX8|-g&1Z=i3iFCHE3~%H=tSu~*cujkJggGs7 zu7!cSN|$++S`&gu zAN;BqgdFG2B)+(8Op=-R(6r|32>w_aX?go`r1t!j$l7|9y<5$E_4^WdJW@hC5oj}} zKARC$VpRWB;Cs1KfXCC(r&1YxN^g{9Xr1){k&A?OFr)8a zBRDS|g5~caPxPqP{geg?jrUeBPj9+U3teK2 zxqy0mq&7N9o-q&bkNYtT$RhzTLuU5Q5KU_xlQf+Y@8{)CCa{NFS$p(qyivdfot~GM zf<7A0zv#YNvdJDy8`ek34jxYeC%+nRdhp$f`T{bG-KDO+frPeKdm%aIT!!HbST|*lhM1LJh&Mi)5 z-?$Xj8qoKcpEhACp?y}bd{&`~)suN_c7O+iJqI{ZSM7*Hj6=BG6^HIhM+JY{r+*x8CeJEf3ZyeEj5 z-ab^JiPHF>o?8I7MU234bjN)Db)rykx?2!KAu%^KeXJD^HU{QhzA_VlF6o>k{JY0o zq;om2Ef9jGq%iZO9k)I2Qm6gpSJTfv;O@sUKy3!Fy*9f6P3XY^HMnbvUc9(&-1Qm* z=086b7q|Wc3_yjIyH;S5#3q~q zh3=cCR3ff~tx@OCAkM5|aByP0q{8WPbBiw$Vtgg!z!@k>2ga`rhP|+K3Y+g*+)KIH zhD4lDpAZ}#x<$W!?LR&J@z*|n!;i)(aeG~uOh@*?lJD8>ou8R>3XECXtie~ov>yF} z>$RU+4;C^Yl)efB&;j{6__wdKCh->+7Cz~F3}dnPW_E|A6KCUxZP;ix+QD4^Dd2<| zc2md20SrV}YEE5o;yLj`V4@M`328Ih9UY4{3;cF-`ilbzR6u+}9n&#iJ?D7n#2UA} z6Yx<%My8B0PBs9F zHaA}c8e#+CFPnAKdM%PXc=OxJ?jgeSU1sJg#;?!C$5(&XZrC0J?!^X@*eL#GKXZva zpYM#X&+R={SEq=OYHIPd7I$^AdGa9R-4L5PxHlm$bjWf7dJm4Yhp4o zL8wFDYVi%fQw-4@*_C5BnyRTGz3FrZOYPy}@3{>nR=6L&n#f)y&@@vi`tpSY-do*3 zHqMIkDexQYk^Act>T8yR!Pxi)07-~Km%%R-4{_|!Td99-_iT3z%WTt;l&OXSzu&RE zDqNn?>wdoa`Bu6WjJ<4wgwk1`HO`eJ^lpM?{Gec_U6zW+B{O2vRL64fXR=wN!!O+D zmKfq>sf8k);DZ8S_<>9+gU8@HQ5HCmub^o9TrRy!?;sDD9eC~V!IP+k9z)h@u-k|9 z!=O3%o}Y7@wI3^t4ueZLD8H4+1vycZZrr=Zy8KzHC*=1Q_4w9{&Pk^vOi4)zx888& zDXQbTP=@(ehET`_NUAi-6#c3|J6Ag9uCU9CR(JoCzU=CA-#^mX??N zMWNXjfa%h~i)`i!>>c_W-wS7Z5MYdqx$RzcjlF|Zkekz^XfxpHQ*9;&1~Xn<;*Y~C z_~5cg0yT{d79v8*shsDg8M%}xZ{kfSs$rtK0uU`eI-xOa49mk}^Eaxh`YUDiJD7^=#; z`$@`rt7*Dpev2U3Xm#H4a2xeW9S%Y>J_4>mE%uHDfgx7SV57V6%8m8)Q}v+r9jYGu z8Bxfv{SfSX#m-K)$<+&dX(4|8uJ_5MJl!iH&EdmIOve5F4}T3CoCiQZ_w25*Zmlnd zxcC{=dNAT!{kwtzx&{^5zGZ&%1F@$DhcOQNQ&t|!Ww{LD@OTa#G=w(bs<9;V*C?oe zFZsE)+t9%ve^?q5(7$ElHvYU4e5Ivmb#nBhxz-IHZtmU)qgRV?+)q$|Sm?Di0%Gb+ zYGAUeb81SW0DMO#;njbU^4>atHK`IgdmxpudC{Mgy@L@=NbAQ-sa#=78215{lFs7% zdaVb-gs$0=>^= zVA4WB?61}IkqTZUqRy1}HajUAB2Y5=vVqv|SGcv4ez`1=AooYvGFdZB6%u<^(|CB` zP4vaU+f~?Slt&__S3uC88#)mi{$EItBKNM?oBC4m{G1`>x2amQoPY)I{D7;#w z6a~Vr>@@I+3CWoY+$02=znAe)oF3tYq!}=UZ^H~&LnyI?(Rdklo+b~@g9oZ5kpx@T z<#E~bzNf68kDt4sm{U@)0n`Wi(d+M3SxbitFBotp;HzY-Zaz-F9D|yzI;wS@sMuI* zudJY;fcx6DJ7d_V1Z!hwwCwrx7j|qWylJD`Nr-mzfpEx5b6$|E%Q6@ zuBq0}?{-)9k-)puI&qR=B@wkAK{)mYoWyxfAy8cJ5c4t?*|7rI*zi7$6Gph%D0W1+ zJx>0M6)Fq3aQ<`kZDqdYh`nF|&F2`h<8O&fc>-)GIGSJb@{)!)m^yC-ZEboO>qQH= zjjW058Z$2cL4|A~_X_p)ZM~~8E}#c0&}=d&-xB+M6cw3S!OTB(*X!~(KF5kkfJH5L z@(wstO!~N$mv=#m1dr+0>t&UtO;9Sl{lrZRL4B`o*bpKy_=V2L@@eAVy}Mgmd*1fk zkI@fOJ>oJoO>V97V1r^095(!J=W?_Zndx-$z^6lp&GLNCltH~$iS+}2?xR#9?WpEKNEFgw^CMiT-bY!GM=K-Y}?iNLFo&wva{H{k!% zZFKxH-{l~QU|l_(^vq21>}*Q}qkQU#Z(N%W0_K}SYHQJ@BV*%4A&?a-o_)lh&)gR| z7ph&n^`x?rOfmVOZJhCc8G3-Q`fAS~!$e&oQ#@O0Zs-4S+-T6`*M(i4JJmb>tpykZ zi>-p$1cR9_9!Oe&)`A`|hHu}9dXZH9cDI+ko85)KRR&~;^uFYK9r5`n5bj~p- z#TG#qD4OvyCdLVd^lZy@#W(3*UwJMy>jAffO7=kGsBj^BE|wt({gT!vt8-nPovk?% zI!stAM5CstlKtgcBX@mC zNeSn?2aJT^DNKrkm3T` zI(zFH(}oUzrznQ>WxT&eZ_I*JIsk6QZShTXXQ`hSd!z@0iy)td z6nBD_h@=bE`dBnkSdp^?B$>Bl!!DY4Q%OhB7=8c3LIa_n^@S$KT{gKQ8j0#UxKC~& z#0?PXc{Lnq2D{S1z}VHNWBt_x1-^eTsQ&SUBF&o@3m`XOS>Y!^K}Z@+l%z2R5^Na) zs2ao?XZc>2Gi?pJNS%ZmK$*iWHi#1>c@OX~9h3R^=;$|QS~rTz$_}985weZFOTSrF zYF3b5c*H<(aC|JnhucqyXfk#%$msh{yCx?q+it40=Lw3vL+Qj=ILz{)=7z)g zNgWFl)1oA7CbQ4 zgHP5F`B-BkabhAFAu%5r2r8&rwM3`>mr=b70~V{J#TO9Jp(3FD292RVgWNkXtLHB( z;}%^X;y*G=#E>0lM)F=54NolPR^d#f1Et2}iT)gn(y3VBMzQr`0rrmkj_| zMkXc!{{DtAih_oKCgsQMtie7C^6_5187EuZ($!`25||4oJxZ3i_G{kaQzS%0^a-+A zmm=bH4@ukM@$2~d`lf2Ky8=Wz3we)1-|-P^Nuvmub#{I!n>ER-VX^H!CP3TI3PR*{bK#0x$niY?jjJ_EIv`&3`Vs z7Oi`p3!QdA7jx6ro@^N&9Lp_VUitN-x_3!-vxU-x)_nqM<6jW3*wy;v2`-qvP=ZU| zNBvWECYJl59SQxtwdc&phNUyL`l)3Kp=2scDR1$3fq|K8S|R7OwaG5D(o9z(S^_8{ z7%M;8z~sQ1sHkWK&_hg6qb~}o+YUmrEOzMa3*wC~f{Q^m#8Cbq?2B)BOC25^joz@E zOg2zeH8r=hn|he7dIsh45jk$KH7pzUn6}pf&DU+ra2xq&g*fkKsideflT3j7nHsW; zP)Hf>U$r0alBn3*{y90|Au7|Xr;F@u-1g(u!!7dNn<_pUu=btr?H2bYQr`UV`X<>w zC4q;^1*=+kZOqOqLzEL0ySDbpuoj$u62Kh6%^}bHs3=-wtCnmv*#5p=Se1k%(;ser zd#aG7eu;EwXs|8N;bkU4(bLM^c_H4cU?@ugyw2{cs}HgG`T3c{nFZhMn$@ak2XsC$ zi0O?DI}Cw+u&jl{`}O$Aal0koaHApMo=Ifv3{|}YQ1EB-^AK=q^80WD zhpZ;T-~XzRaQW4nN8usJY2wEq%A@l2O@Z9RPd>-*-8ZV^@RK|vcm|gxfH4p5?bXK% zyZ?L2SoANL=>7A6fQQu@>!`OvEPZOy1Kfs5CE%6@#1cSh`$R2bE&Lx ztn&}%cbGlAyv9aGM;*If3#?qcO6VWeX1a`OSb6K}r}<5HK@@+pksdbw$_bKkby557Y|FlE&vl%MC%pU zx8S&I(6By{gv10JLzG&;fHYXYAOxC+o#jFNf|{EHRCcFF_{e+f%{?3?@J=;<(U#h{ zQA>O8!2^^>-6sS zf}8kkZEU#Cus1^~4dvi)(MO=g`$y0)kJXS2TqeH@u7NicP?E!vRDvb6zjb(`2L;QsW|5?;gtJG5$g zSyAmgCMFu`K+JuyS&14@-9qnqpT9{r zB-p{Yltv&)5u=hV%AC+~+-}P2^%t-D#Y{{6f`2Qwyhyg{^1HsrDk$U>O#N6LU%&RE z_M!^mBB0$zZ{+4gfck2*th~Iwt7|P%<~jw!u%O=19(@|dGSb0hcU<#6V^?r>EB-xGNN3SMh;sD`;-8pDMO*T)q3)0PdxRJ^i<&q%BsT#DdP5&ZCYLK3toZP&9ok&a6ZRe*O0s$~> zz-@e}J~H~S5y(##-poybN9v;*nf*s&hIsajT-!t*L4bW%okHy2u4)t6Cwl-a)^aP~ z*Iu~7q;&@NhNZFu%wtg@HCKla=JcA@pxX0-bfouKy6>_jY%uo7YxKdA*NKe!-~E*S zCP5d-j}a&9^1NqpEWTjRTZS>-ERH^!nGeu#hDL5Yu3lSe%y=_9G_wLwS!G%PEeEqK zc2IW60=roZS1c)Fb#3hqu)-ujhXNbC1mdh1qgQ)S!V@64afv&*pQ9q6Vi$e| zvUjcoTl8f=e7^uGd_i74A;7JFL}D~jGFjgu;eUR}nb7lyyakS|{Ay+9STvxo$bhM? zM8N6ktCl->0V*j$IC=%)zc=CNX9Ofie8$1+F>d2C@?eWM%FHbYM5_Y>lvnNGTOz{V z@$QC;?_50)TBg3^r5jfvstfbMgBV!V0T4FzMj^?y%xUq)KLDtT%E0#$o69h}0j`Sf zptQvS!O=bMlVODaHR+m0m_RP{KCDFefBFP&!?TwWbr9D;a7CC3CPr?-DvHyUyyJC^ z@zEv4H1SAer7~x#F(%#o>OVx|;F-QQ&$~8LNg#K;8xg->XJ+4~C0vQ92!}omrXBL7 z@`<*!v(ghMCp)N9#mGfmF$b3UK+;4wx3vxy$ZsG)v!}DTl2cdask+Y7FZ_7kJ|b6{ zm?#6VYB2y?T>V}MRhiM&9LD!D2Nv<;RZ1%H6AmgWs_6LmXMX@IKtDeJ^cu|Bf02|F z;Wnig3HYKB2vtCsfd|S!Nr0-t7nM>)pMz@UR|l5_L`vO<-XRq9YIlu{#9^=-;@j!j zwRdhj>VDp`w`SG32uOLS4+SnJE)}yh;9w5h3lc~rFBqEoxjSU(io$Ev+pV++~0M+CnI;j_L_8FvF8X0}=PkI)Upj;P$ zJq0&Qevl+xYtgC;h!kOSuOk7}%~+c&tI!Q3AuE6KN8|{GR)<5znEPNczH!6FHuF)) ztnFD}ahml0yY39mu&}USY3F%GnuTM^mb+KrHlXIJ=KpHRbH7pVKl-D`-v#gdQ<2VH zk@|1zTIRk<1+VPKY(EX}h|{y@&s$bUGNxB35j0UD1F8b4Z$N6KSFuwE zFBHUE_{PSr>FLv#hVpfue)>cRSz-`Sb9Om~v8#F5!0y)YM=^&}PsWc1wWt!ciVJ7d zRLMw{20AJVw6YgemTHkrCqN>Q8+?by`R5pE&$hc6&U#~m6wfPxzh2pXfqEw0?1`MCjH=m)`Ic=)54ru^g(KPFezFADIU z4r6(E1VZfvlb%#f*d}{SX6{$i&b9r3z6nxXODyF|j7cz-3{5WwL3NoNsxl36J?l2OK_|LXm zx?Mm=b@KTRf`z9L=W$7*HWIkTzZJkL;Aq!nyhVxtT;oq;tie#*4zEiTN^d|%R8&-9 zE=S072fOi|!lsbN7Iq}{n4PW8M0q=Ocyt8Vb&EKVlIx)Ju}c3+>x97vReiL4c16Ol za2$@*f)8*bg6sDc_gp(K*l zTX-vTy-1Cj^T)RwzWBn`^RZg7}Dj(k90vyX;Qn0(nXx3qMs*$Pn@ ze?K7_vK@T8Kz@IKDPjHPw;zsLy2W{IcexQ>79ix|apJZemxt>g9mAy_*c7;wMr4Qn z7LGc^f%Yr}xcHQVA0Y+y$9rAcY514cpXycKKtYWDt;2=G^pj~DiEd3YCRxJ5LdjqX zo7;La1+=jB5tLdlI?@`qdupFIhcnI2wcP=__lZEw&>yi10Rh2t(3v!~w%&f@PE$~Q z<01sJqB1E`wG8F6ag6S+9bdfU8)0d*u&P25V`(=t(6 zih=<73Lx+UuYfENRemq(d4h5fK3q1!*afPH99s1?lbv>F?ae%>3SWt@po=HEY&5 z!?1YnxXw9y@3XhBE3`+wgU|SoX^GlT{0qt}AfPcAPyd4VA zq5coC6A^#tULlR8N7Mf2RyWq`>#lyzDtyqhyh{1_R7=CgCN~qBz$|4}u>dmj;(eHA z2Zx66mY0@Fp<|#1ivJB+*F{yv=oZ)Yy~7riBy(i5PP+12vxPT-4%ct<+a!Ip6M0}n|Vc6UFYPTcs_TxL-zfp z-bEEyI#^T5ym=G%@$z8O*FDuNw+z{lmG7j%wv&vgmvWl@e9m|%dHL+MwTCJeC$JDR z*&x+5#c_TrCi3-bCl*0L$2jr#uP=kBkeZ4Mkm$G$qPl(=;&0gj+sQm~HHQw_j2(ub1bBuCL(**)((tfuW)4N{0gj zlxe*Vo?4(57S;}Ss%8wNRaR3zwcihhcz5nT&&AbSv@Z(NWEHFMgw4= zv}zv{<|$tCs(zKW-689u*M<-`{4ki3f1B*wIV)l=eia|!NBjZIO_2@aP2i#r_Q5`Z zH7kNz(BE#(=A1%-Prz9m98(_s8q44TNDT%Dsb4M1(vl|%C3aj)otKA=hJr?EOejqC zAMJ?QS-#&-=EfPs-y|J+T<$aW{>I;f`<}IYvSfuuTM4YzFjlX7Tm{(ANLt#zPxDA5 z=_g$G74i2SdcgU@z~Tb9j+le+a6F*jp~xtEY_@Rmc6aCe=ebc&K4{z^8ViN0K0eYz z6hHM{v+bQ$Ce_?-)k45$Qo5f>3~K$#UE>ql6_Yb)fDtz<7q;3>Dh()DmY4gNCpbp~1k->-^rkG|rl;4nbei|RlKmsyze6|S|D z$kV+6Xge&2wfFd=UcDNNQuCkK9res6ah+`oRk>pySikESK!GdOJM)hkSRG?|SF-7X zqE>5OBa?|73~&n2PHPo?%SyK8HbCNolXb>Cpe%P(3@3!xq1#({u~S5axzGY5#x_y6vood3P& z;)`t4jeXHk|765EF0tRt$*C>_TGqGnST%X7!H` z*MZpd#iMuu0esKmuL;H`tp2;70Ro@3%|+kl$k9gF9efAIx8!+x?hZo8q(bj0LhZOZ zf*|~nk-=AAscNCi$jk;*%KSYWZ|SW4U*p<%m6hkt5)M+~A}+9qJsyII9L^E)r%&xN z>y$Iw$CkdI=zo2=OP?`}5Q1Ct^kY5gwKh+lNIZO)6JQS32JIPIF`6s=IlN`<>J)40 zIl_QHwXZvgTmxOkp~6-pcSwb9jw4@;tV_f#KCo1G#f+L?8oPAErM#`P3Bbz?}5E30HEVl9U8ja&-c=nM{%VO@`jG1wO1Mt#{q^8CzHg%hEC=BF_8V zx$pAgzf;Kno7sfH+i-WK71_E$c3%Hgv)?c`NB=ENZDb`)h-9w71%Y8xlTf(xrs@P( zS^?G10c)s`BS=J1M0dqh+7O01fJ|UZi;-C_HdyTVXGz2BOtq?TP+84&oF{@l{>vw0 zVxnLxkP2G=+&_gvt^8=t6Iun}wan2Pc8qWUUU>!zJA>sxspl%*=+&R#5jKNFHd0*W0cU?i%0v z3nEPEBh=3J<5_tE0c%}u&^AFQx~Xb)Q#^?nlZ4$WNzQak$)@V%c{{e_D7Y)Mh(HygaNwSq>t41QtCkPmG;H{m_99MphXznu+x@K^8~aTZDiFa7rGvds zpPw>&`TF&1VE^#W`8!7%f2R%4wIFTzKs`Yy zU{yG!!Tqo!4ph~xDe{x)u&+3_xHyVviT(^zr+!_!sf9tB@$q2WxehvrSvZC2NC~Bf zy*j+S0rDi7dosb~#*uGRUwfYF4tp8A_QU zkb^J~#nQtN^;%Xt3dA=kVV&>jsT;*0Aeot!N<3h~#qtgqm4@W4rbw`n(Kew>f#dcY zY=>*bns2i~hsQ?q2vr>~1&Qw!-%^~@?k{vt$NX;h&{La_YpD?4z&LJ%0?P49iw8W z0|-6w-dXY%8MmnR(MZE@8-5Oe%7cRgYX>{K*c$F{o*J(zhU+e$Tb*_wt5!h)T|LA^ z5+uaL^Z~cfX}_9mR5s9O!0jd8$m~6SWNIq-Y_eESC~R`wshkrm4H}_= zm50$t4kicS4TnRd4b8;Gz3(tbRzOeH1LjDi!Sy+iO>ojQy%D`ELOqeuhCW}4vV&B+`?K-zz4VrFtUZFu1 z<>*y;(4rVGTsUdFCoCdzIF7~}O8Qp|5Vy+8_~*-|A7?8b)mdf`u6FpLEr}h2H7@#a zUMX1-N34pAf3@|SIpjTD0f^;R5abSz)Q`r)7)Thdfoc7e2*jXZ*j9eb93Au zQbZ-&-}E>U9C(^pfuqcpixc4QF?UGzgzw8%XD>u!2oDL7eR1nzABt{vYU&ce@axM% zMG1?$M1jvJ%4a(h=(p2*Z;m>nEHi*3N%5!NdTf__f!eVtv08AY#X#2 zj1gzx2Ja>%CG9mjB^EUWpR#FxgX0?&g>Pw9kJ|WZ2~P_J!6#`c9RNmGZJy|EX~Jq4 zuak>#Z6nKA!4BKEdSjwOYeKgy_rpWCv9S*PCr_5g7t3h!O|p74PqzE-0;ntmQR0Vw zwj$S4VVg#!>6=?vM~5D_N4Z7%rl|YAsdBmj0d_!k4$Y!_HJbMCkI^-G_N$}|bf_cf z9X-8dLFy;30_P-1>FDSlT3fF^G&Sw#U}ar!bf1-wl#1gqJe{GO?myohZO~4q_bqnX z58R&_gnn|b443(-WLDO1Ot;zC%t1)`Str*6D4$p$=f#t0Jbu{mE{3@;Q7V$h`O`HB z)x<}^E_RJK7U=`SZcG?n8V3tjp0`Zre#!^{mKG$OTr^iVX#MdIwAonnMyGGdhWJEw z-%{7;^{G0E=H|~jV`@rxxZSUzT|)9KL!~v(sF}G{RIAA4{N;JkDZ6v!<%bG+22xqC zf!C|aH=Wl!2|M0w?}kEd4GujI>TxMvzgG56nna^ z48Z>dAL?qRKNr?jY^E6b$3#0oCvDrRs~IHN$q73gIVF|(V%RC5d3ajjAkjKD4Qo2% z^Ce_}T|v6{sgEBQKsBf0w9ki+dSEq739kBe=}Kbe^_nGi0VZqYO>vAR;#kD6(iaM; zRdAZWlc%NrQRPWZa@+LtL;ch%PIw4Z^RRoy5Y{OG!nOcoVgk4wut~6=n`h=7%b#Vl zK5?#fr^s5bak{0d_G<>6B%_3go0A^f2pFdUUjoX$031>ivsaEw1EkW@WW)<129>m z_}5a?_$V|qYJFoBLRHmmn@MRt*zThf33MIqhNNrctB%DcXyn7EY<$%&C#+pIEBRG( ztDN0*`JuR-?6>xetQCQQfi|wL2c`yjPHsj%4i8qv*0z3l$6N^zXCMN%b2Jnt`m*`8SFarM9u4cl`WBAWkcT&? z&YQ6*J{lB5)SdUrtij*R#%s1u<6M2_us8$t5U5r2zP$s_p!jP(Hjsaaay}6SpyXjs z8kV+>+Szm9RAFJ_-wdIqiezPUD3>itU+^-5Wz9m(ypy9{R=BiTR^U5-1|PpOsS$;k zac|CsOF*VTfdP4&7G#{lUl&Q{r#Q~q?NI%Cb{JjUX(||4u|ZR4`n@kpx7cxYl%)P( zCaxFW5#g5ER_fisJR{z7A|fes!o)<* z3Y)kqrszOt&wn)`>$lFa=fs^^SS-^vJ?huvsvj=P;|iUezlv{W7Ot1xnmEXb$91jo z^5y2Wjo7^|Aq52rVsdg#6KCSiGI*{h3ZFi`nJdW{)0-kkt%Tfzll85~(%L`dlrvRz z^4U3-dBC1NB$SO&P*BF=K(l~7;<*jBsOTm`j^pA+CUxW(sMJ@!f04%Rb+AqCX^H{rS-_ z!NIO|_eXkI!+^8|Fi}Whyfnv+8cPZnPEyNxj~otJ1F#S%ZZdPl$weNf6*UwJ{tON~ zxUl6Nq*K;c`|V?j{I?qCBCAC&_k%*XVV7_Q@x|r#*u&~rrSEKAo&fG~x zUtf0w9lgkh6lRNsl)ayr4<;L!Vh7FPaFBtBRA|mJRK!|q5(&cS@Ne{H%)oPh_01b; zgQI<{TX*k%S^A!7d+f$dLsL2qj-BwjpM|Ok63`#dWA?O3UFW;FxGi2$prZ?zztYeW z>=ACetmKj;7Z+~3I#LBL2()bpgwnF#j6ro}IQTi)#(_5E`EyU8T5dstBYJRuSkq|`g>+Xu&&;3OoP5ur>#$&L{NXj*AT!`*dxn?s)_&Tot zQejr16)iZoFsCWA%Ep(1E&m&EAQ1eJe7&JNHJk?#rIr%Z!lsVR+;cIwn&%^LD^!$X zA@wa>bRn^K6&!Fn%qOsT+1xxlH*Ym5d`K1hlBS^4 z!k?Ppu}|0B92C1t%F^~U-K^Pj(RRMeIxz63(q^Sv&Ur9~Gfua2i^x>FKt$n43WbK# z;bU6b-CJ_*5IKY$ebZz$EWpuzs%qJNjN9UFWY-Z@B%H5-fpZuQmtO|mxpe&qr_g%0 z0YD81RXWGZ`&J+9M7Vi*r7bP_06h|f;Vu+{aDNmNheEYB1m0GPfKtHB0MBuke{J)C z*&Z;BJYU)sx%qKOYqu3f6=QIm?J@zl7 ztcD7)pR0+rLiQ+_1P8*xD!8Aw!4@->woZWlKrYw)vO<2?gc6tVe0t;g?phVJ5U_lC znmUddEQIL8=#J!5A8CEr!M(zhjwvX}B`JOE2fo~)b8~msc2BSx!&e)(7l~s%KvZMn zp!3wrD+dVY;C87mrRFzAlyYzA>J<23AMx>b(9j;Bq2MX3gJg!z)b>kqItB0uc?S@Z zeqP9Mc9C~A0~2lhfbjN55d2`cX>xC1fba6ozQriAf*(>>>adw-8N;QmeQG=@y!7F= z>o}UWOe31q+sU6luOX|GC=8(7@65*9+Hcl?O6|h=aZc5oHdpWH?H_@nvggjFaS%PA zh1r*^BVCCw-fATJ@S3l)nQOJt@PKXlnx@)cN^b<=`O2->0 z|}xUC@nN0T-~p^x-z1!gGHwba~?a#BDgTS$JG6DMy$)Cck3`-@H3r)OIdT8eRBWjk z($0+hAQ&pdnt+}IXu{Vi(&`>Zd~nYKC8dS)&@p!3L24+amX79|PJf4d^|3wy+jU zh!qs>C~-0*1h>5FA7No#crk-5C?%KR35^!O9%0c9SDiN)z;+uQHBjmx6)|d7fBDg% zYs4*Bi7nT?N}!;z_+#%%aVclxo2!`*^!1ZhACKTj9W~ucu>JLB2F}&iLW^|g%a8I? z(&29jP|xq!LxlvG9V)B2`Ga%Ran&s?gaib` zxK^-yiNU5?{O%4}KE?5PW1p%whffa8d=(a0QOwZ6M=ytM<{M`>udVxvT|~H4?B(Img?%tS-^}qp1%dRA0^r;-0}t-fd(!atTTP_=UEvH*jk#e-w%#wiKl$mK_pm;koTQf_ufXB74NM5JF8@GtxcEZxh z$&J8I9C?h9QU<1tW8--^&?HFR`3lQa#%EoxzwGhFc?7Gi5QIRD;nl{Ek*04wioIUn4<1f9*v0 z^l2IF=#yk!Uf4|48ZQ4%O7Gr-)tjmHuwHO z*l|8Syj*!`M*xA|YEw_3MSyh-PtSLcMzljnS#~BCa|mAv6>WUP-$^Vr19b7{O4&9X zkqQ$(zkCrBXO0B>DO;`|*)~<*2k+QSHE~*gxBF0Mg;5P@-klY$o;?}H8W}=4iD`z& z@c(0wZISBno@kHDBT1%hQ6PYiwTB;1)QJkR+v)YTsahf))cjolPe&QRW7`fxi*jAPYalKz!i`qKkZ=jhaj z_vGAt&3nH^#K#B0kKc-yFEPOXXHF+AmNcFkuf>GPn8UXQSGYh1?^EF;2*XW|-My1c z(hq{yjO9P~Bqb$wBq>wMHIqJTF~e6f!{Nw-2e z)`42k<-z(y4)NK?M9@f@7f``pyfJ40mc3L+Zv4e;3JV>rXMy6LBLoA6zInqAs7_bV zb$#!hZpb6|7c*m3z#=mipEXfmQ023O*Xfwy=OSYqSznAvnL0RqCd)l<< zH2h|B6L?W#a1!w&zVP{E_~4V%o_n@pIuX$t89BQ;eBko2@pXrw@Tb2ITG2B!)l94x z`ugx4-V(TwiN7bhV(RirLfSaVezv`%WYe@hn@i3r2aLQPG=vy4jd=EbjA9xQ9F3zY zcTdPgE@9SK&rXgeCj&g57X58Lis?vixZbN4%%{{DT%Q2_bv;;?a0>|B94aILA6B+E z@f3#5FWME7{Fxd;V&0$g{kl7!>ciu>qE314Ty1MBHH=NM^!Lf$ChD>uV{&K?yfIDm0?0PF_ume`$NPJpUBnHAP z5EPZ!JYEWi&unG@S={F$S;`>Gr7zYPE0wrC`t331$VfIfAD{Ta&M+~(CpH8N*w|48 z4Hje-q_A0k@1k4mZx0B%%>>s9F=?5M;}LuNxKE7{oM!6aM3^sFPv zjS)*StjU;|-f9>HKBsJ-j0cFJZd@ri-k2WxY~V2WT+lVIs3<|z5+&?Yi$eNgcJ_sb z(>g*kJIhZsSH<=|$V9YUxsvduuTM0800SN!UJXu2oq)>cZ}XT2g%WyV$)%b#h~w!= z4>hG4z?PYB8dz%m`Y4peVgq#54S?<#>~Ecz;A)iEVZ$WCw`x6Hddg2+VT^7A4MihX zNhskjE1oJ}!EJoU8p)%w8gvT*o&;3awz2bH4GoiQ#%t0~s>08}2;{l@7-_azE0d%h zdSp920BnJ{(~$EL%=3rOWs?=(|Hh88B9oL^rIrW#Kp=4%{|F2H>6eq;W;)nh?MXNE zDK7SO*jU@tN{UJakPJ+vZuewc;a|z8x+O0!X=(Y=|8#@7p~?q70CQtH5fP4nRAuXZRQgN$8; zCPo%$&G^yprSV&jE(_H=S5~^q=r0dCBX3DC`Jj)#t!>d7JR8;B_IM_3G#UJ~&R@*F zq7A1v!zrW8O4eh}?^{zo4F?N^iOayS^ifMt&$QGIE;Brs{<6$$yeHlVuZ*7UfTRCQ zr;JT+XyhnjOvf*eZXTe#OfrlxFfg)2t)a^VACrLh@6UUcU+yKtm5Nw~j9lbvdJ@Ii zsl{*-ew}GJ_2L1=#i%>yBc}o9py0RAd?`dgOk6RVp-g;;cVn#!AJ1&K)IlQRR?h_v z4y)A)*Im1o^Zbn7J7;I%-9UK(1OSWyw?K9v1Sn)JTl9XC6tAKE`SY8P>?=G-PiTES zm8n{yzhUIaXFYPtYo%vuXNMN)pPZa5YZiJRoj&s;6oOK!M?EDYN zP2&@v&O}6bn(b?|w%+Vc$y%Sfjf)y{>p-;y`D7 z?*4aeF(#I-Hjm%MSet^g)-{_t*)w28SPyVS}A^F;NJs z%D3^cYB5$~;;5(|U+v!StE9r;e*EB*9W9xIOuSasxY$^ExH?ZeJ39%t;t4ws7@XRZ z#KabqGHZhio7>v_gMx6x#lsk{A2nN?#O0R*#rJd1J>5A$jDNqS?iaCe(wk6F5cSSN zEmiPsWANFP&EuoSiL%wcS{N=W_sw~J4EN88j30_RI|<4h4~<|GuZ%& z^yyt?TmZz7+6F=$N#!0UaKboiV2kax^PL+~fcs%CftTA0EXU6C@DKnrssN)Vf^ziL zH%MP#p5dk9dzf;?M%b`{NI6{*zdMzyetq%)vg_%gR&sK_1>gWz;E}esLed-l99jTR zpmzjyIrk%NHGr9A0C5tzUi77Q(w>rv>L%byU7xa<>0J*9pwM~4Dl_;$1wizREh;)N z@avD(IKe9@OHf-=b4J`+@eK%&nY+f4NC=og_-TB6C=T@#^?HlfXhUDfhd#0z&XrA7 z<_f<&h__pko_=|Mhc+oj@yMO7{10yZ=?j{6BFUY5p0K`AVLRJ~53Io{XybG94=^ES z)dtY={p~owQyByVaP3NH{&N^C7)x9S#F#!YEiH{6k>Ul_8>BWhH9Y_*a;uVB#EB7@;&JfCghH_Z! z>z9DN6Xa_vdmP27fD;p=5)jB2a;A|G6x(owper&;Hgl3A*0dUtdQ_G`n&kC z%;r37gMDfe_yaY=lmVI19AgWm;`v}+Lbg|WNkBmE`OCB6)|DF2V1S=wI9jY*>62xQ zh^G7bS@+col_a4=k&%;;ZI@M4xZ?qceH)IG1JtFh_}{e){?s{Cb7K^TsG{XttHpz@ zxq0E1_}@JN5E~TW<4y7}2>Q5>-}+I&*jQ~Wiz(j5Z}4?sa1a9pVDN+P6l2uJf_rQH zHF9V}J6v?mzQ2Duoe#S`AytBb=;1WvXR(1c937Sq`Ptdcqg8f^;CEvKVAo%n^*TH~ z+JLER$&Bv7zyAGI!J+OJFh{n${w$%#`K9p<-R#enHzpUm zc8wa`ey*4j_$Q3s&T?4n=c+4r77Yv|kT746fH3CbZ-Y#X`yI*5QyFa@2_5<~Gb#G} zZPQjv zi5qm)9QU9<0Gu-5=~FaTRX*^z5zt&D!^MIR2at!XtnAiHCgRS6AdKRi6zFT?eZ}<) zpvjBm8jbzk>jC0*R1b)kDC*RyQx69}lR>svI>Mho;HB5CixXoU#KiM*j~{Q*L&o>3 zii)Ei$l+D#a}@pkJi*`h6>q|Q`*jDG=amX7#Ggu7Cvp^MasVx~1>$3fe7Skilhms6 zHaZ%xlN5p5@!0=d+6n+;w#XIImASbujbcyU?UMfDekTsFPgP(jv#O&#JY*guIgOd7e0vw|hvS~^x2pc*lPXpOm;du+ zUF5i#^FVS{2nwNa3!sjOl+l>v|m6a`e#R;H6(I|9S#05+x zCtgAU@TjQUH11&BxVH8>ah30x%G#T%TMGT)*~j#AZ|`i0yX_*xDEQEO3@BJ$<9eoX z|JZ#8VtLO;M=zbP+z=JaabeGya9G7I&71_a z6+MfDPd~%lkVairUY`Baa&$c?v;ic7Ci(Q~pSUQ%XX)RHdG7Bw|9xLNvHk9ikwl4W z4jLkFF_@X!0(c?fzE25_l6U4JcL?2ed=TLHhsqfO6kIpeY!5HeS>=xppS^r}5kY|W zxAC68dgTrB|H*bSPgwad=6l$2rZ*$z0>gs~XK}C6&|<&4mq4t!EFaTFjht| zNMV}J*e_{f7@RflUS?;12_e04RVegg}(@zokV=eZacdj_IsQW~||O4L;@dQc?t)w!J`7 zSV#gD5!RCexF0^J3=2D2pHm(u0CF`zz^>6BH&Qp$mk60l+E4I`l|(aw$RIQKlu*7 z?CY^p*4AoJxxf)(B~7tjdv;LBg%1V4UXnu6OqyQR<;29}nurUdfYG)W3|?|00JIX& zSc3Mq$@+lzLo_WTGKvsTEh4yj%BPi+tCy zZyO#~Tij}18>dH5A^0Fq;cA{jWgS~}y!*~Jd>3msFE`Bx&?E51vCb`84LmO)`X9PE zTj$^`wG3?h4x0uA?GjNIQ$w-tG)qdepPiXWb_jt# zfbHbQsg|APAzY-RmMzEA(!%j4IHG|`u4`X}fwj#aKX`3PLpYW%ub2JqJ? zj?X4ILQXTjdVx6wIoC)a@NCs^W4+4fnX$n=`{c-)`1t3fT9yDV(4%ShZ~6l6Ke@BK zSnRgvhzJC38J#ZB3~C6q8egfTDzMP9(EUwfJ7dTK`OIzF#wy|->kla3mv0|WK`w+h zXs^%1a@(IiW^#Y~G@KdesHWcy3;=&M4JkP0eV>tdJ`~bWG$u+>-v@XOG7$)(SXI8{ zo8IgE5X1ppj$Et$YNoBF~l~cey)IL8SIW|e^1#-r-C3Fs@FBkh#6ePujgSHQ4%FIo^bU@f!7hiBDDK$IRlxWI00ooe4r^q`1tfRxi06YsrTp^@1ZnqXi zGqs9DV+E{~jHspJ%W4`QnrYm#e*`N!Ns$5Z!z>`a>x$_s7;{*iEjq=fw&DfI0i=ZL z8J(Q%E%L)Uwel3W7vvl)ed5qnvbsrDRQ?VU-3@v!nSx|b#EEG4Q@4a~rkY_0)bH|& zBX0c~b~soQ9C7_u44pHAb`y0A+kjsH$udz#SFD+T~a|!27v+APHm37aBaz z_8GPXUCuO{w|k@M_4RB&up7gc{ZeODVUL0qPP)J#93MX^T9g<3?QpYwlt~EVZ=u{e zKMwdBlaZMQ7-hE*LF12cDg<_wxuGpY-AGn6w_=OD9RZx?Cbl+%HFpZo4RgH~mpqQP zFJYoTH4%dWmdDWKoph)s*EdAe54aHuJjH^u2rrQYy}RFp9CPf8eap~_M}mQfHbQS^ zXS4Awg0FQ%POt&UU~b=D|2Y$q)3vOr$t9%d$4Q8{{XYlZ8AaROeKHUF<4}#%uZJrfc-}*OTIY5C*PP zn-454y=PjN!ClT43fQqH{e}lv-2D1VjGlx?B>BN3T?~+GVgq~GOE3$Lh&iiv0PLVp zFqA%6`H^>W5-Vope$JejAxy?YtjfU{hEZczeO<;Z3cHZJ7D+ayd zSVp1f=#+9H&;bQL-Ix$bR-Yt8_*s`i>e5+p*48hZv-7YBv$m@Tt}98opFajPgld5s z85s(;lS7J&<3MmA3|JPxIGo^jVgr(CgUu@23%D(>u3iA_(qNs12$zk4aRQmCFa?W< zA@@Ns!od+QL#2fT8icXQD}=lnkMb~5Xk6!LYz z;XW%Dzy%L)Z^iWL43$S*p&aC%-l5bKlMB5z(4Aam-K|taiC^k&Wc!>wW1KI%}mT6Ty4% zvCv_5Vz@AA7I6frMWOPejw3m07|q*BnBV0Bgt$LC|w)&FQm+8n?C;gf(H(*YiB zHLm7>eD?_JaM!)7)ZyCMZ+UCGmL6^O!!3KyTJnpX{0<;5_>ZOr?&&|+32# zpDW^jPq5W1ePfI+QvYHzhrMs#mN>1SSsASg1qY+344wan7V|`I+2Z#wm;5#V-O`dJ z9Lo@EPU+#nQUK?8718F*-oxvAKUvS>V$HPE2joL z<(^(*!SVO}#{h*Y=jd)0OjItwH{H2?o7K)`#PQ3}b64l7H36Fb$;QiRs;%0lE|Xm@ zq>WE@SE?Y+)U2fN=4vBqr90K!)ek*jJ6=ZLuH+lQSyXYaUz<=-QkFY~od`}XeK#b# zz{p7je!pL)n)4GhH2ai9oow!@r^>re`(W?-LYLvGT2WdpKkEDke*}ym7$EMPIR}uP z1_pZV8lrZs`oN|1D{ws$Xotvbl)dWq_k#xB3Fb$>FK{m20TQc2;Gb5Z)EMWfi-6)@ zl;Gaq$7aj_7m5@ZIO43Jpip%;x$6=vk%O5{?BX^0KPMk!;)@ADPR=Q&k38FOonDcn zHML#7m8@uFB*IqoL`jK0O3RXwkyWf8v>Swkgu7TBw-_U~djB&gGa;Z7FJol$*f`I$ z-%!)EUDnOp>B`Sw5M0~byxgtr<{n-3IBsf65_Y7QEgC(dCfzhd-@fezh**6Sd_*f% zuW1!!L;TT}=2f^eAho<>5d&m9V^Qd{(m;3z`=7x_vJQtpYdvt2wSvz8a#K9&|IET$ z!s-`7($02u(OtMS#{lMBL2PQ`#AMqPVKjRLaA{sYJa6t7A zzlVYY;QaL?9s`4HAiP3jo&GPKX=^ELLyUEt_XNI1f;lqL#Q_gN{ea%8`FGF+C>TpE z=QtGkR-hP_v&_RlTxGa4a89#?9>lI^&YXE%XwmWR9C+BBp^j_d7R(7sksBJD?{1{z zH6lSIEzm8s+7eLjl&F47S2~!8vko)tPDutD`rOXSwp8*R6)<5RMQxn2qZgIEVKgPx zG>r?&3Oav(X(*#>YXcz#7Q^7^gy=Ar2Oau8Ln=1?Z?XpGUu+RR?PR!^IINgI1vV5G z^~eyZBf?|)<72~BIjxrMn`o|L56;+V;Ai9mIy&+9_aA^VEw&u55k>)e$f&`B7Ju6I zI}vdwH4!PPJ!v)EkS;yO2tGVQ!V{IztA8;N;tE^@Y!#oMznAM?CfN4&dKi>S3C8&l za*ic1x}F^(!gJO1%?lcg2>3oPys7Z>1fUh zusFa3xvRz!7?FBR6kMeW)pdv`q=*FesdW(jFz-g+Hk>fOl zT67pHk?Rg_@=j|ED+SrujEpX9muqWlG0;Rl194?$YO1C;iu3OUKa&9b=6N80ZEQ9C z-@WreVqrfhUWVq(1UyloG4cjD4Nzgf0*l!%0|S_?aYKlhb!}TGjDS`Yq0lw6yv5(& z_zi97!k)jfc@AW;z!0zjR|mSEwL@oNFu(vd7G}d8cxI_U|72b;xmrbj{=AI7nFb+9 z#>HJ+SWyrD)u)na$n=AV6S_%878X2MKa@0>xDL{w5b$?=4}8$?RxeSW2H+;V;6dZA zXu!*#6nh+%vh(t8q-k^BBMGk0{uug)(u3>C_N7JeJR@pgl1wap^HPh~*O{CXBNIq+ z1>ltk1iSD`b3dpSf+Z|aCXr1xlqBlcrU)Nsmu^vmRIaCdwb$Y_;H?@Hho1ZMt`}KY z%t!9M5yFOQCOo85?sN*+fCivsbt&(qE7!EI-feXSw1jIoHTQp-6Fuju?L`WM5fS>V z)QA>EfF}QLk1&Z6yQ?db+Np?HiuMmJ9#p1o$Ky>$+`7n^toR+zOBl>oZ~X`8CIgZZ z^e?e!KVH5x67hU{D(Vgv@UuX8`YK+=M!{l5`HxeKcPF4TxRrc0O(oMU;ReLY6}uk@ z!^wR=FEM=vXG#q?oOi03=Sia4`5N~yRwN~j&w~zhTGaK9!Nw*v1tfw#fTSQjq)_%d z>SEry_+o}NDud8VDIy}Ge>`V3Wmj0dVK z%fOVsGwW7m8Y~j`+c=s-fa<8LXz+@?!$9RhhQ$?F7=)y?w5WagMF}{;=EZp>*K5YZHrd3Ra0#V1=KMMeVh!8iA7%{KWJ}$yBH~drLh0&Upj2d1yE{e z7L-?d{J|(o%TJv6gKDNB8Lpr9=($c$*bDNhH^>Y1^Q*sTZ@-xfxBImF?3O_ON9))@ z53l+gfa6O_a*-dX?fcAK^sDS>(IN$8`k^K5u$j@Uv1x?Wi7$@C_ z_Q5LM08uw4B;1Qw1eX}J=H?tV`ObRd`w=aKv>Uas4w4g3541=7K(3t;WK={hEiGw7 zc~TkOyT1-Uj1$bFCQ+q#F22y+ZwvT+Km-Pgio6kz`Je8gqvHXX#n6K0t~1Z@9ww$G zNKFHvaMb<70G`6eUalHyf6arblA&C?HGh|wme&7|whOdpp~%SeA8o}BqFlLsdlyRd z*z|OGBnx46`zj`MMi+i_j7Z%+KGv)0`OFJ?S=fSnBKPr&4+}Z?vz2m+u>0dQ6vu&MR$rV4>hR%ol4j7(H% z0r=^F4Gq}MB){%*rW%>l#5`$!^MYt<{bWE}Vt`9))Ey0@H&#RFwtzuHR`D71r#JFN zI9JGzk9O%HdH&`_UJ$+hPmx5o=vxx6^>2Of@Zo6`%$wH{G!az4a9V%|TyO~1RPR)8 zXfF*JYv9+C*}%X{%*-<>K|!}!;N{6-hCk4Fjrxj@!}7~dWa(l{)O>i5(tUrxpo4)2 z@LZio%kUuLLq!5<1TY*^(T`4AxB|vzca0+!K_msLV5_ageodtXBfwQ5hR`(Lic4F_ z@8!!07Tu=SRzF3JtrM=lmm>f!$G;%Qn`@3FWlypKVl?FbgI3rqYhH{MERwKU)29)c zOC_!C?mlO0D+rnP4qzwx;2ZFd08JoB$v;2==f{thL{wD1!VZ@I;1)1rf+h$bEHwWq zU3zXj^Z*-pK@o-NqW4)cT%uo_9Vx2pD3B!Ggmt%3$z9m4=;-S1_KduBk$)>5yCN2f zdjOoFu5iMFXJ8B)dGOEzkl?#=_dECpzPo#iog9)O`%ZO1*SX!CTp^%|00vN-Co5p? zdriMTJI7|*9Md1)zWVw3Wt){BI3k|MXCs-n>jH@r9)MsQa;#4QJ^{m81+2jmcBkN1 z=jsy#2A2g<3ns45CY*oXY{%o_<|uS+SEkA%3wh6B>gCb*zTi)29p2L;gGe^2tA~Z0 zI`mjrP(WPJiXEK|16HC2;w6H>Fv&M0#8lXJgRJc!T+E|>?90y2rTi3#IhNGZ`7^6o zpX-Cpjp;r2>SZ;VMh{SArE09qIx1R}xgUr_SCZ#`z}m_SMRIK&r=#4uKbsU;-f*t6 zH+`-e0#?!(C%Tw z*0XWYWg#+HK=$+-!zL+(ItVy4KTAzEWT8;d?A?vtXA~AjI13Ql--1oPnk1PZ@E_xI z*`e{42`2$lALZhb(2lR^GT~2AC=7?69@Kj|pec*Nfl)R-q0%YfLC{ z`WN(w{nY$+94WX7FP0gb8?x9&A#W)I)=~=;lSGoi;2v#HWHwZ2S+?` zZ*i>d;LbT42p+)i{O_xepS1X&ey2KHfuNr0$|zusHkhx%>k0qu@MIqs6P=Qp8m3ER zB10%UkG*LI&|Sfqf*B)=ixR%N41zht8SE*ulA?z}gV!z(Uz(f|G_9iAg%s8NP<9pP(@^r_rnZHR1TMqIcC)$1;D zXbcwE!$yw{%rbQlQAJF?Lyf!?fUwop)hUzi=C}L9HW(G?)g;Bmf8g0agtds4S8|Ai z*XbuW9RP1*bwL>F`6glV@~B*kewPr+bsWUPex`NkEOn}Gg+DZ5vGOAc9>S+D$ar{z zHUeZCoC#rn1TBsPvk(6V7}Nf+stnx*?TgswnZgI|;sG&nasCw#uDq9I%1s6r`X3dpq%g98rOgnqbyOzp zJAICKw&;S6*p6;K&Q074SuWs(mh)Fpt)PQ37rLkqo_C_|^xkBQSX<9@REKO%by#K; zg*;X>*h(*fon?GP6;d%=Q{w?X6xU(3ifDhEI%)Os?>1zP;|uhK#sIy1srIT0zI2Iy zn;5!|43#UUqeR3NH;jyo(&FQF+^3GJ<&$S0r%f3Frju%AWz`xQ5`u_jZbQhYbzWZH zy{&jk;tF?=jQayLIDZWv>7rnAY_UN_r-l5pcl>U^3X~LJrDVbYOE41+p|^a0Yo(1} z1qZhbR|_z?F+IB8DWkIn zn;vwc<>BD{XfdetPXj3pV1dxpP~Rj&F;w+*%Pg`D_!F{%KifS9$t;7l`7FpAp&!Ja zZO1+@AfU;XPy=jYxKyyf11KM`OhF6lDIsiX$2XGiL;=rx3fTh?J6r>LaXA=?1MPKC zkJxLh^M!RHCRBA((`g{ratj}+bI$s}uupz)$tYi)oeokQ!lq_sq`~3fdS$T{fF_e# zVA_`JakSq6*k6l#q_g54UUIvb>$&v+NJbl z#%Eg3wTj=9uaL(sCYhv2nHRrInbxg6bAgd6qO2Ij8pl0!5Remjp*Xkfu<}I2zU@c9 zgWm4BeUY*2{a0;=Iw}qrz>{4f^JsOb6)d^dWPj|Au7*Q0{g;{=Tsk@fC#Ro~Q6KZL zcR>fXu;#Xf!O#mPTFmq3^Pj!RF>GA1v9qh6YJU2#HzQJkWpSZ*6Jp+JICbuzp}<~w zZrkrfl_E&8<6)2Af-@Dgz$or3R{~TspWgpzBM? zr+xM%;?BjpIsGvhYY+-&#m>(D=&9z! z04o+GNC}+BV3Ca*v38yBmSN<4bZu#Qk&)G$5n^$l$Htzar`NL_DW6Dp5YuQ6hV4&S z5vGMu6sq2g?})e4&*KAYZch(NNUXphBwQ8WE-Mq1kZ#~WRr_E&+dO{kvL1X_a*GPw zlT5&`v!Sl;LxN`3N^DF_$&SY4v|WkjrLzr?xRCiQBZBpn_0l5)dL&ThD_y*%_yDj{3Xpu@}Z1q_wcXTK7oO6Irb!H3VbW5!g(^6KCzXN|GKNJ zbR#fTqZ^ry!m1@j=ewJRpRHH@KYz~bFz`p*6R(QMu@8d+R&Kt%SA4wB_&|Mq7D?u1?R(CjK1~dZ z1qBW|hl~`upOAphU@~+Dn<;W}eIl+qmJPvmkgY@|9KUkiPdqQZeDTBAWM$S>^q=2r zYm;6jCmUNp91tvq(~H^9$eJ7X|52h!N|FV%|1yfmxB=3_7ch#D>aOi_muPzg#1&b; zf_U1;@bm5_bpXww zcO2j2dmKj>;ZIZuuN@y?VQ=5cpC9}X$Re7+40SP1f^2OI)zSdtkg8yxyLX*0{#sgE zx|STd3SibH#rnw=MCl|dn8`xWXl$Yf^#5&pA$A(c^b)7ycH zK+gOIHK#7Fxp8Cr_2Ja4`MyxDi4I3$ zk|)ZFvgSFCjcol0{xbAzdGyh)ldRD7xyi4k-ZRilL$h_i__w?M8*f0T4brr{%DSFD zK0QQWF-(U6kR`vR)882t(`aprIrnoCT+{LBy7#jHq>NNCJ5X0&?-5fM?7In`6Hf+5 z!*&(C(~Y(p*4)a?Q^_qj!k1;elJH?sSXk{eU-Ylz?-ZL=;u_8^{}du4b-6L$a+wqH z)1abnsD_3{`{(a=Cz+W;ncdgr9EoW$#lv?x%D$m`kFfAWg8tqhh!{~}W04K1A+Z8_ejYu7T&f zcTF!|z1p9jcsA-SBHp(9uZ|4Vk+r-yFT8)N*wRvNSyK~vvR3__*Y+CzTbXXaP4Z~G zQ~(v-H5BX?t_!BOW8zT#Zsl_Qu+iPU1Ns%GU1v0Q2neQL9sX>uU*Jrik-;Wx{Pyhh zSl8CVLXLa)uTn!6SbXSVMrN{!wk7CFFU}oi0WXQ2BNE-exn00sL!}bvzyQml&`8#V z3Fq)RW8<6t{s+PO153c_{L*}m_e6O3_b{1*YcF2x2Z&DoTq9FB*8x9_+-%@Z{icWS zTe~Z{B)E59a+UP>2#i%VUcC=cY7f{Zt-PVtwnjS?lAAWHhJr+ouU>|FD_!^Vw7BoL zAV$1`_;xDXhbEwtOdX=5Rp!lk`k6|c{jdtwB=$d!WIK}Fw1%{QE6uNE30C`|1LPzi zJJy&#P>Nm@Kx5?w%;rh+F#c?3lwE3+Pi%}al+l7m9jlR>7!_DoDX(7t8&@bD2*Mm5 zTFul)0ciOEH3;5&-x_;@L3qs?ZF3_9Zdi{E2h*E14W0L9gkjnxmj3v zYJ6e92y*95Nm}(3cW6go9AF7KH!kd+^(k-&N?7S19%-drM;+lOYNmo=+MKY9!^R&! zhMpM8FdudFkBejARSLV6=O{{Iajcdu{2cAxx;8-J7S;~FevJR;h*;&@nzEX3eqkr5 z=um?{w^x0m)-JNr^s~!TqNh$IF-mVSA?YbABEC>cM$JKu; zE4Ex^(xKgqTca2je=RO&oGaOZJXBJ4bR!)dmw=u)L#l3p<)Ac7JU{`!a>_*+dzDkC zEJ<|M=cR4BSpbz%b@z+}QLKqM|M>3vvSz7BI7byH#U0zWskmzBeAJI0i!U;hr`lg{ zX%d{el#03rNZ0wRMGbqN3D{j4WLOVNr8*g}zQBztW5E=9PLxqmQ5WGboF6~Q z_T$HwOjeTn{r4A|$mWs7#OXMt54g|%_;TAfCGKKvt9H&L6{^1!Lk_RI3{=~8Us|IO z@blB9_Q}43SY7-4mNjx^wk?hX<5*4BNTXakDy(Q!1ddS16rKx0oA~RZQEJ>{g5Lr)>K^qz514|USlq)_xJ9@exmj)^f zMc>O+4PM@_1KH*z zWtaD_gG~1Av#ncYTxi98IYf2<1*8#apPj$YtL!>H(>&GvqkR)>90xz{BmT$~qLEECvT1=Pn*sEutVnGT5skfIqdz$0tb%V%*XH9N&>ex=ngj&qhbW zc&iB3HH|dIb=L#~4cA}GS>p60M^BdtCecGB-r#`7;h97@iK&u(&^pTjX}>rHuh0{F z@faSx;{cnF?FX)(4F9%c^*TFijJscu7rJ!jTi=tcWsc8UsX9w(_3iEY+B!PtSAIpl zt5H&%8@&Nw(-DTg}kQW?*4D@yAWk+Y<`S&u~}I~#p@nD22paF4>;o0J|!~k~@2eEM`2lDF5Y64ado!hFk(jQ|;DLn`=tp5s`RkYWD(lavQze~ZPJ zRf_WReLVl~Vi8ZL1}SHWZgp0O;=f2F)&+Tm5;#sP!cEv${P$EaRiYKXbX zFIdo7aI0#6S8#J(YwK3GMfbJcJqh9x)^`W(vA4Y-z{M5qfu?R4ZcWMcL8J!{9uQLd zmUu{pG3Ro1YCfLM7yvIB%I+`}xUV!*b;~T9o`;}TbK(;dn=v$H#vA?fs;|KA{Du!% zSIpo;_{B#0(ucv5Dg8~8-(HiSdqXq*HTxDXw{z3Z9Xs@~OhIFyuP6=n=!*B9 zY(ri?5RiPSHjRypjA#@%&!ib=98lfO81=BaPl7Kmi#eXC)Ql%v>vguK>lUp3#_7vT z{L!fB26x^M4Ry>!ALU+t*Bo>pF^FrVUqkxmcZs-$iWdDclaQVKg?MPwuhW6?Z&_CB6}de8LF6;3Ao)2H$5 zbzch~IOcVGEr|qGhK2SFQypvd2b&Kcj>OiQ(S?f%FvpOh&+rrDA|uFLS}o1C z)ss+!Y>I2a2Dnm`Gz$aobme4UCL!xW&(nESyM<7#W-0St;Nc%WPd*6K1wO4E}bYsZMniW#!%yB&+92zykNF^Nv%S*SobXy8mz zjcuGr5ymdZwRLsB zLhSZ{!w=>iyuTr*vvRfnz|wi(~C-*R>fX&aOm5HuC)qmFKj?&vLV+n63Iw8Gw;W*|TOIr4>B zz2-(vXf%B(9!CM_@a?bun)BRnDW%Cfm>-+(XEeb5s&e;Qg-6Ol~|#pt(kiK|aXy03)E zuDeM$WriMIZ~w}%Bi#=z5O+Pq{{=sO+$$$GI3(iu&0wae=oJ*Qt1QofFrdHCeRh z1bb(9xl`StThSj}wjJ1vB^V71G&VpU#>W22O~|;D%PqYi+faTLwUKCR*2vBLeEsV# zMG#NQWif^+oL^n!VsUe}4C&lkpFOC`?trAfjrStw(5I^k%RjA-t7yu;mJLv#(bJ=X zVs6U2u({5~4=*77FQTKj-<(_FP_a#l!6F6r%KhL30HmUQce-}_=9rlKkZ37Xs|yQr znul!^QPU$DY`s`R^+TH&t_eAZaIEc{;J&$a8Lmbt{uetVYw{fH=76wc< zcDy{3NQqT$G+isdTsYx4JU^1%G1x9iGOK$m{+4%F@&|}Wmu0{pzSBKVCP9U!)QkG= zV0(@bEvJ7unj8p*JURb3*%G@GKQKbeP_U%*#1_|MSvM>+si5DQKe+u*{Z=5{LM-mG zvN}S)ndZg~6W}O8^|I9BcFNLUzK>t0x_f%}+q%eM+;hVJfceAhB43r+)v(M!) z9w!rkoC3Di@kxj}K1xQ9o*|QMpg!8kBDC7NXyity7Sz@S$J?x3e1FJ)$GbzF26B18 zx(!>68n}e$)#5R2>RPjjahC$j1ZRO)m6ne@! zBOuku4YoP1B|z7)A~`QknKc<6D=Gr|2UvT08b~A{f{~*|TxR$;%HE_Viru?+7Z=|! zf&NycnhXYMXxvxiqPM^b^GLgk`Wp15^0qDWN7NDoFM~`A5OfvW(hONJjrabo83gM)SwXHxJHd-Y9KKj~19Hv8;x_-IY4U3cD2&jF1Dd@JR_$*t4Azj&T`xfA zH$BR6Tl~rrJ$pL^O0tcS+f+Xe&k&JA()Nh(b(?i6j}NR18QMQP+Cj_A>E$%*B;bgcmq`UXF= z+MLjk$8zI=iCAG!8CYdyWnZH4Zmj20p61HYkD~5g=h+8`%#~Do30o zkqixMGfb;DwCCE>AZ!!qdUkAu6S(lYjqH|;XBcg5Z7;pvN*tJ&qm?iNJ^=g#(=)?w z^Sg%U2jkvj3W_H@yX3|B^9q*MZJ)WQ=qk1v_$fjv@6P!6ws(DsSLa3}6Ai5o9;DLG znS?MWZ_JZ!GK|(@Iui|o|F^kFQj62PpQ9T6i-S#Eo<~TCxiK*vW5$E~&L8n09hw_G zdK%=*`JWDlDg$NCSsO7sjy`2IzC#n?W8NqWZyc*bA$(2y?1z{^UfhP*j0qwcY27-O zKyoT~Psnc!{Uo8$*J76xp}$2bv*gdsee*n`KIqEs7r_J~UJb*s+L0Xc)-RRshu&(P zb<{R`-S1J~;hazIIMvUDW|bT`^1Aiw4@HPaLNyUt{gOX9mBSGME7;1OffzcA(j!Kn z@$qtGb4v6><1=oR_e3Riyv7RsN`M^D3}7^NS0mXtz|gwo#o7QimpIc?avQliS-)1e z1;W(C3Y>F76FONH5m&BE2wM=>Sow^QOy!2`mxo&+o zM!UWFQ!Dn`%W1T0tE#GE5YnC}^ix`&u;PBkziC|xyac<-BZCI75>{^M%|$ymt+SE= zPq_Z+)2I7MEw6b6vowSjIYSIUNR!cm(tF{y*Po~LPAui^D!k+#DhcJLwrkjqv|c2-nWO3 z$EP-A4xBrisvGxi>Da_HqsiiI(=mrw(jiPXu*aApKg>gPH9L29(EF8hkd`K6h2e|X zOc-h5pHyrcs7O9kOwXC0zs^Jo(H5|}U~c{$sD#+ofd2ZbG{3(ky?rH0dgildsjPJ1 zY0u;`yVPvZ`s&$6ND&HNl}*+31JdJd!WKaQ2w&Bk=AZuQYPXAstOe?9V{b3v>;d6} z!B5Yafij+yX--hC{*YtK)za21Xup>`w(9gFT7A-`&ne*nhUw`KV2l)h06d1LE4Gj(t|DqS{ZMA-e>sv$G%i-je)9)Y6(c;q}JMBuO^y=i2KCl+x!WmxM*XE605!v$73J1}OB*1?S?4+a+_%Zy7 zy$ZO00Mi3as$v>_K8BT*oj3U(@+8wF|Il5%9zKRN9um)G{MVp6F4S}bEn?(mx;um2tx_9M8 zlmxak?+z{f`xb#`WRQpYY_#esT(76+GH53i7RKUHgr({9n-4z2>6oxb8fv;y6~l+! z5mYFOCt0$$c)swj-oA=gKoxs@Xry9O!I~{XQQn_EeXH6VcN~R~ltEA4C5!!AQ;b%2 zlFog6dZ=u{wEAM~lP4s4`VtZ;esYJgaV%d#OXBs`t-h15HwJm;?%FyZaoh>JTT`HK} zlSX_+0Gk=3MBtzh<7TSATmUC@JpQm-BF7?41zVlRM0tM|-@nZJkP1Bgo2zP+DuLr( z1&RqT1`1$;Sy{BuLuC2ymgwC7qUD#qOd2drRJsEU8pkqk?+=}vhW-&ALEZVD%=(9= zt+{;Iq%HhtZld|~XAJ@{M?%0ouK&Mq_ZRMN`w>aH2M2GXn|q=j zd9%RHfIzn;vJ(i*{B!ETlJ@q^|7pICUIBdryvlv}u5FvcvAc2Vm|>!?epxW5(Wzw3 zv0ea^;3)C3vvXR#qofQhY0t4lwNZ6MjLZ{18grD4S8{w9WT-ql+bJe0I^|$%D=MVY zzA!bAiS{Eu0)p0=`4)c{QMqG3o~MG4&6k!>rC`X@quJ@mqgz9QF}CsKw?pU%Z-9V` ze23ncgoM9eI%sBjP7X43sn|)?%fQFe*Kd!O3OclHU;dU2$}vqAAJPo8;4#;1^Q$2r z@(Gu(cYxBo-{KpE$BHcBgw*L#BnK(Wwba!7*RT6*-+Xt|W|8W9CKJ8p7}$|}9?9Od zW!+l1ig-8wTM`RbseQ5BT^0A5V0otMl4DXt%$MQEw25^3^!WJHp69#-O8_&`vpT4Q zK2}vdr}uo@`*u%A)mKo0s1EUx+;SNI1=-|x5+_AH3ESnYUz=h++ z3U4$r$I*6qg$j;KuXO?KbIZxm6*yCD-~WmW4e1egciHxi2<(7uAw4la!^#VUI6@+w zj8s!wi)**fOl9{_lWqBZo~uOJOad#N1;)NqB+SnaF#0ltWO?%_&Kjf1P_UIL+=9ZX zCD)#*(>a-ggeG6MwDhOR{P+nki#49p(|Rwm(-%vlY3S9CJ*e)(C~_aDwT&@vGEh2u zVED*e&jmW(>WfKvd}+Jb<1p31*jfnH7cDtYK2 zO~W5}cOl$_oqZ_8B5<-jpCYQr+pHF&aM)}dFT2`RSW^GE`qQUZ?NWE|`c#E|Zg0;| zP~x?PoQ?{WS7>oMA2p=7ofc86yw`v(R>bJO&)Kf)|})~f;n zEd+Wi^!Okz?}n3o?;kw;%R0Dl8+AEng3eBcCUdHIr_PtB_}3*{jJ1v2Hqg0 z^;kB>l4$#W<1aqtsV|@xtgWMQxaoNl6jB5J&7ik&^{2m2ZE^T<;L7yiZ76Zw#(O>Y zDQO)-&wmp2(bPH#Dc;rkgYOiIEWTa%Ah2P~DED0t16I6o5(#H&9maW!r5OM%U`NS_ z5hgjwVeHoy)M4?h#ctAxfOo4x&>d*&_qt*+rVyo7A-eOcO~}w@OuI%`tfTXrVbs;z zTkc0!^-S7XnM3Lo6=KiffUU0yZ&vgvv5sTg4jlMY2Aud(a~d_~R5qjfYcQ~UqL+OG zwryhmE^j7=X-HrXmEK-&OMu4U7~q^=Q3~5fhaE}5{pl)+M{(rl2cm7k50!o^BZ5!l9mkrap#o8{+AxG^^{ z2`&q}efx|8$5wtVg{@Mmn;BL_hE9@smixg!miR*Vr90X$za6Z3ys#c<(@pEbaO=S> zPCz(Xa%^P?gbZAf?%rP7Rq)%>v!^A~j2|A+JbSJ3&Ibm`KJtBS$^7s@A^=D@7J$AG zr=BK3#1MoU$dzX2De>kBg;onOi|P|9zXMOD>e`-rhNplxKY7x9BZhqLLyQ5k z6^R4^?tAxiyfc3NDnOLG0XarsC1r17Kc#oA1BIeO%c%BnkvmVc)M!IR^6?9_kt)=` zy|;RzCBbz2@@0;omfgIGG^?3>IM2ZV?Pb>y$*3KSz8iCp(;7NdIOT}U_}#8P@9f{W zEp(d=1i^p8!vi&vFT#nuE=E_34aF%YzHpWvBPSI*c9oMzpVO90la79!s0+sUb*p_m zsrb{g!!Stq?(V+(BI8*A&ch8*Wg6mK0&!r7eq`jb3dfI=eon7f2c?Ez9CKlc^1A`Rx#RMOVw)p? zkd^T!rCU?UA5(sd`Rd_x!^3dZqe2mYR0$?#(0#B@#tPdSFX^j+hCDenWwYYme?~&v z?<3}g|1}pyT_kM&aT_LdWF!J9R+XbE#fRD+l7(@>t%f2G{vYiNiRU>*MQu}zidY=S z5|9$_5(D2JOi`fdF9qz6jl=9hd+9?#eta8Wt?A#%=NdFpv70k9o_T?Cgk!>%>&SJR zhV5bTr|F`VrvNhXhxC;;AcWt9CK8I$@x;iGKml#qv&YscJw8ApJlSSb+LQFYVQdvJ zlpe^qZf!*0H76_9 zP=)koiU!XJOE+dCM`McdH^T`!?V2|WH@$&>Cb3~ z9hf{~Zv)v`X)P@+|sx)hb&*=lLG^vz^1TquR&z6zTpFzd!Cef}9< z3H(if@vp?&+08^C`xhS|VRNaXCY%e_$?k`$AC8q)Rx+bjDaNopKx#jP%1sBQonG=& zkT9vEBY|QkfKzjeS9!<1_qtH$N>J$Fc5nz(cpVlIaWuK-I2vqw z-P!llV^PFsX_@#wH=VmaN&n!vn}p0~aa&s(CL%kxNC4n-f9>bzcg*RN!gMUo1n&GH z)KrIo4Iwb`<^8>Ju^T3O=eT*C%dYt5vwzAeD*O3d%qU>*C*_ETF=rAD5&8Hs9~-%| z2EKUVRGu5KoxUMrbT))4_ZC~)tF3vTmd_rm?|5b2_{h0HHt$WgIwc9+9~AX>AeFmB z%RTDck@xv&dDf6=SKP~CtT&pSlD+RFcs{+tq=ql=M^&2F?`GDw^4r2upFxfN08Q~; zs|Ab>A10GsvSGxa*vD|YS$$M3YzF8APFzOAqm02dk4SimvraQMidSE%l{kOR|DfWA z(Q|m8sHo`C0_VM^4}*Ms_--4Z~|wre0HQuTC9GoXzb{r;9k@#dvrs$K+4F@wy>r zb|eyd;+y=rR<fKsX)rxkXPi^# z%cBL4w|p?>40X+3EeBTcP4?k_fhb=d_~0#nNL3lieuhKp#M5-cZPB3^WTr>&xcq)jR4=YYsZ3l+6r>LOY>ouyy7r5&HQx zYmV4We?Ibhv?YTUr8i+qoMmMIkdPKzjN#jZ&|tWZmmDJGc}XA$`-8!AsUw%+;oeBH z|BOXJ$u=3Nvw!0#L~i6d(WMWpu>|B92;v()efk)qvPJB_^ALo8qBlyc-=`EVvKB>C zDXcCjBqUU!u&`cDjbVEzm*V9g6~?JD+s>h%_}aI)eN_li%?m-ifqF2+=1uoQZ`0&Cgn&j-y zzOV<)OhdLcHHNDc1Oo112qMoYaNERp(qs8kvgo;3u%dIz%Ztf*j`j%nHS16^y|$b? z--P{sgP9?tY*r8%Yi1KgprsW6%%NzA6$e~nc&d}pO(EawAyS;uH^$p##X9K;+)h)3AkhbY_NfcXeHkap+YqU#gAxAOC)4JU+!{#7(RvHTTS-O5=iT)@;6Ih8>PhT#`zeBCOkcE8 znEhc1msei#4v(-}AeaR=f`WwLG)qQx$9aBnEb~(9S%Mf2ih=-!h38H3l5B%8OiOC9 z-1X;{#y0zPBbF24RLq3${_!C`M&DCAmAk)wJ<|*d((ce|{^fB3ry03nU2ckeO?O*TZDs-%}@dWEiA zI^D9FAMKxbc5lIFurJh=drG&|FrYF_!{JMa!JmCECc5Z95xTzt6uKJ#Y2mhS>ieT?TP?=0W)ll_ti@OO1zTZpaM zCJ^^>kZEQ(J>!6jrrM7;OG~|7?_IE&QXWX=DQfnOMQn)NpS6*#p&=TQj8r@d`FCEt zAUj|`wD04`G~>lt>y!UP{CQ74Nw1Xn^GL*xuFGbhq^I{U7Izj)370h+D znA7Y6c|(I5FRZ(0v8-6!(Lo&{E?D;F>V558J4#OJcV!Dxd~e?DKZ5#rdQ@g3K*0># z0jc)9&>KR9EkvV1Oc;ql{gpOh^iR@2jn`Y)lX3HCm3{p9abNv?9+wRJVLoCK2bpjJ zdv*V5E*i+S!UR?jg2Nipf3?OKEZ>V>A>E=35dWr=Yqu43Ag$%_bK$zX z=jXqo-K9uLO@>b^_5Y%o3by9^Em~Topox2)$a6Kdf(<}|ARteL)tLM_L%9?qE*cP% z4@gP%wCAkFsw^Xy`+<+URl(%MPh3MH@H2pF)Rr~G>a=&MmVvWC6wHn zG&%Agl4fW`1e^-c2YPSYw{I<6o4w~$qLyeTCRW6*0eJL|h%nPp4!}N=@kDPu%$j$C zq{aE#B4miR7mJ7?-x$K1H_uu~SERhGPFo#)C0+kh)yjKezf}Sb)T-Fa*sIK`s#?zn zRTz5>zNUqj&ja|hbgaAUqPe{N{o9~#7&Cms~bxIfi25#IE66E%|Bc4E&5 zv!Hk--s=0P!FSdMBYX*N@w0Yzad83l^X&3DtVXXz4h%wRPD%gd*W{>iNkje}xaYdJEsmsHFd-uF$qAa90( zdDxCth9nZE^4iaHz`i~PkN|XU5(XEi`BZyv(LLHOaCsXb{-v6h zuazFHirIGW?8tshhh#DDLL+OuFsXB?Ez3`>o#21<*F?9xG-cAw za%Be9pxk9_ri@PRGNyZ46JLYa?mcqm%*qPHS4aXTh0rG9U%$3!Ig1L^aQW(o9Ktr| z^uXZ|!j?`+eL9=$vK`Cg$6I3^uDFnjxjcSUE-!`?n49jaK_9GO9_G73bN}5&Vs`|n zArw?-K?EdNd$J^;fI5ubFV0AlHPm9%!66+P!b9Zj}81gx$$-c`C zkJY1}8;HI6pLUmM$%vz^MfjUe?b!Uj68()OmJoCQ`MzH_b=C%`+2y*&lEFH>6zcH= z5e9m6H?e-SecLvuL3WTy=cihO<9RPM^iG#Y5IJcrW#A2LJ7Fb*h+b@c=AHS1L{~Q4 zR``J(^(=0SEUCEUR^B&`x zU_=5b07IQ@b>g;4s=V!0TlUJF$L4E=1`^Hr(%X{Wft~eoD_c>4dP@`ZLJ&#FNtdsT z+>dmlD=rHdp=REU#%lbCt>u1;GO4<#kg~2KI<)sYKtEYeM`z7`aF+T(um*@(1xGUe zGtiU1K3+WTj2$~4-&UWL6eR%w)Ho6f(U2dpW|~<4H&<1AXP+j3(OBk$)4L1z-m29j zc_L1@^w)&Dh=gB0r}HhYs%K!1j37jUH*}QSTxZbj{_(W|{Y6~iH*ekvIQNGf_Zy1@ zk04S-?;AT-L&kHllgmOZAMBzkEs5bo!+Y*2jnywolHK>;9GY$0&b>KbKsRL(@Off)B81*f&yVw- z0Mip#wp@3!kqIVQ{>EJCixbU3X~`;yx9-08@EDR=U|j_(8ma>@JizO$0OF~vXExEb ziyTh`ve70ZEp4Hrr#FDG*Dmtz1XE2{k>h=~NLAmv;X&B46Ly{7ft_PqL>gSgePT@5 zobd-Ib<+lAYWv2*MJpkqwdn8PLeQlN?hR;HBu}V_qhd&Zw}7>hi*-wD2~e=YKLmqZ zv;gdohw^b>Rw!-GCMO>DxS)i;les--w)`(KY(A?DhOckI%o-oR-eTVdh>n(XY5muV znes20*944ykpp&TDZlO{RtazslP|Gv-!AkJEppL{OPN%Z-Qb741YZCgO>pvfq@~|& zvc#eh`h0?HccoRmZ1{gTVS!l3i&_l-_qq)%tW^D0X+0aZp7YmU9lPoa>#?l{@P#+8 z>UmjcRb`r(c}A-9m$}_m?SE!$-J%Cg$+{=|&SFKU$)^1e8OF`(*Mo|X*G3)z<%m|E zz-2dbY}M_VVxX6K@c-^XfYc-PB*}yOZyBlL2wKO^hZ=Rn?ka%G&)8zus^Z%flKQ}^ zJLu&^M8}0f<_j*j;yY4K!P(JUUib_v~Y3k|iK+8LXBqKb~*_~ibV3n2Gt`M8PS z+xbExA)#h_!vQDGO8brlp7-~s^5x~fHN-o1`{EtHlez2Xx7gIwG(%#Y*A0||QNjDB zrq};OM;q1oKRUxntC8%TbRD)OzhBp=&KARAo&LVd77h-#_g!5pGf$p8k!BS$gSc0H z=w1U6OmZkLetNw6_1xS+8<=be0PkDj+wyWjC;^OK=pL4w9qaNSJ7APyTwcm5mMFdS z!@)%}(dG=DtrcBW@b&uD@1`UF`@K4;pKWj4xDg<7t!{8|u;@W>a6J_zr8g-XJ;SG3WNrschP>1~WI-npQtt*}UcRqxtzOAWLrW;?ls(LATNS_j_JhG9Q5= z=0dNZdEIOXKl4lH8RN|i48*UZnsiz%Io?ISe=!$AoPu}3mZ0MI-_-)_;BzR(u9 z?)>n{#oFe_CK2LpftXjF-=}Zz=~uOo<-5>yQrR8VzE95>(CE-fIdb0P?W~Q;i_jDA zuk|aoc)e-!N0MihjN)eYrOhO{ZEw?+_?};iUnE4#(pg?rjsUc!s^$qUHi>1AYl1m zT>ryG2vnTZOquu1cbaNU(b;8o|ASR_W0KlI^)qJ{76!)1Q0DA1G?bnG@g+<>zA8RE z@mk*yKHPDwdVpx{*v#d6UBL!>jLYPZJWxznBGIA9{B4)#WdOwJdQB$B!Q; zzj@23w5wON(c;^;mrJXwsT}7nqmiP4 z?j*XrX=hLr}n0bTm(y$el)sHzDy5|T(FD%h* zv6Ur&H${`b+*hWyg3{nF+MegxaQ>Q01|6J-FQ_of} z^+h}ecQK?0#ZJhEa%|<*yvu>uf&-r2pBJY2jB@0*Z?`@tZsd?w+)?Oe`Di#TEloRh z%RtVT%ap|zM9zyx2#2SQ24306@}ljEg#T4H;Y^1S%71qE)OwO#2^SkasII=(SlpnGxwF&!=bJpUGOKL0I0c!ZCKm?Jk+$q!o0i57A$TkZwPjs- zq7vziMWnDFUu-*PWz%IGGruSef0o&E`pG66d+NS41FC~s-H&RutPcFrjJ~rP7o@fM zen;Bl-mOI*D_+IL#YYeoRF5etj=leVIc7uowd%^cu%n2odqc5%+u_OLrqs3_1`QJm z+&oXp?+4yj}*@0&t5 z?s^zjs|7Ec0NeK0^<`x|LNr@n<@B_#W{Jsj?Z2`Ge*a~zxV}F9URlozczA!ktWa<8 z^1}PeV0JlXYYXfo$Q2i-m#*1Xo9$94`0&Q2ERRFNw900y_+^*2ke7GpxX$%eQPfRs zV7dw7QzsNVo3Gl~Q;ZTvO~kZ^W2UI{V|;XQSXj5TbyuN~q;03W*N=jq6P3Fk?p=P| z-K`7fi^Ut|^!F9JqH4{8tc*-&Mix%Qd`qeOGr$@R)clii$?3VcJVf^G`;cy2?wjK< z+U~T2XFwLEPalyYXxFV9uYc#XbJ)qrsWGl{T#3!G=+XY~_nu7*eKMEFtrihWSUp)6 z_L^w!B03E2pmc)r;^^pTxiHyhE90|ZVqzjeT1!DOv*u&by|bLyxe3hsI``?KID{8m zblv{u^T}z>z{lm5I#cY^HXZu{g7P;IAmnO5Ey?d4%nt z8MN{VlYP~BGR6C{u<647qHTnTGoxf=Wc9Me+Sfu8RJqDxjxLJik43g1J{JCR?iXBy za>5o;=9iieF_EK^pTA_94R+*77C0B2(AKs@NdbY3#G`jY@q8qpQf(5fR1Ft-Oind> zpq_`P%xNIf8*&%X2nh+pMfSs#FkKhu$XNZD(#}dck-rJO(mL1&xv!poeL@$XRmS7z z^!HCxOuL|Mp$}23+Q!CAV^lpV-`)rBn!Dvc_w-WJ6OZc6_1`873a`uzmA8yIOb!UW zE%mxDpgq0^0{i!vjakdRJ+@(GVRMLtbGr|}!;v*)nW;eGq|t;;RrGN&Hal$Do5xRg>oQN=_vZRrt@BJJti zY0)}i#Xxq*txGP=74gG6{XqOFEo{f7hJ$@}vP4yo; zo#()#Z(zVRuI2A@A*6AAs8Cdkb@Z=g>);xl$Uh)@J4foDa#o3%jct+V(CO2sZz%c9 zoWZluhju`Vcorz$NDqdoKCmCwd}&;+RTI4e9gYZ{Y%58kE{YHB1XDK2Zkb;zO(k?M z`5yJBET&aww+UQc)7jbQbN7p#UtxLUtCfWTE+nLiz<{R)d4^9D3_(3{viNj8#Cb;d zg;mEjaqC}q@7<&P-tW55SK&I{urkr8T1`@XWQj6yHOsHx@Vrj6eja6r;zOa82fWHs zn>b~InE1CGuw|2+G|9TWAk^7u>a?=#WZs{v`*fE4iBkB|0t zb~y$fTqJ|sjXUrLhnv&ap6e+MmscpPpQ>-p@5yxT3rQd9lf}KJ3`A zW%@$zTeAGglV>pLy_4-Isgw|5ec;<@6ix7Z3cvCt)k1Nz&XvFsn*;m8^&eMC81G~G z_&9X$$SKz)agxK27H_00f&laWm3h~uO{bZH-{1an*`Xrmmuy;XxQvU6875^8*ozdy zs`P;l?OP??`FDncaQ*bZ4h=b%nf(osI;s@<1n~A=1a-VHJ}w_-&04!fdq;>IgOkD; zQR_foj8@32#%J*jyqnhJ1dzJRnTJJ;<+a>@Ex1@TTiuQ}+J~9+PqT8^MmKXy=W{{P zz-(^xfP(*^g0b-$GBOS8R_y!OoA-tYjj5ijI_6C`R_f1cf+~j`yXHskbMLgVwT&|_ zuY&UXgm=!bpToM8G#0AJ!uMrdh>J>3fAmY91g9tR*C48afx5_wi{nmnhA) zTDSIh*tz}QRYa4X|52br+sMcR+xbL%G7rSHS`B~i%Ia+v|3qp!&2#6TM3);&zBH)} z%nWC3#)Xl*Rbun;V&)fQUg3*yIGe^Fb(u_HBCO1{Brr0ZsR$nHKjE&vx zqacE?mMeOa?y|nZwFB%mkC;@HYIrddIMwugd-zr(`6zuC@o1S`w~(gnfn8n?GNqV_ zdqkge@K3Gv?r02h>rOoW0Z?G{Fmw2Ul>pVe4nskl(~O`X)lpDpjo$rW=VW5lC`RRo z>7=@$+iM+#rykEvz2pmm zVY1=cA2`~Lm&Mz52ERYM8||r}XL`Ezuav4`HF39}EU=vk?Qt9X)LmjNiogD8d`16s z&+g4rVYL@gS*|VqXHOYQx_aeB1qE*g=IosYiv@w?2V7=17Pv?xYNbo8r?ynSc1;BB zH1<3?zYH|0R+?mJTe%2DN)?<$cm2IBduN3B^5A7I$(IMwMn+Ca`_%uXUVUuTv>`&! zmVUuq#mbd@1|SY4fXPg#|7_F~{%snj6EEH4JP9^#mmfcncgoQhFE?x+M}_ zH5aS?SutsPe(YOKxL>G|)erVebdm0hSIEkKXK%Rmc1H?_I|avuyFB zP_5rAJ*Q98Umso7sJb}*=?n#sU4E#c?AY^t2V4<%;a^v;M(E^U-%HB8=vF-O^$zR4 zbDNp?DLcm{mwzoPpa`o*8>|$SPx7pnjd=U)4BSDk?B?Wj3X>38liYL!jpo1`)H1?u zKjARF)+!gwDZLI3|3&@+8AGb$d_@C!k=#0 z6WPMpSiB?Fy0v!%ju1DREKrXehb7`MSTt!G;46vLkd&8GUJKQbN$w9)xQ zUsCS5mdDPH*QV8l02|a(S{ji--AM#|;!PWQ1i$>HS^bHISVKmE!S~)YUG$7+Bh8{F z5_K{If&Gfyd+}mDIF*wL_0KP<2~GC#AHuJj{c)H4iR}Q{@3j8Ki~()iA^ZgCuky}Go1K)P9$j>&qJJI5*Tr_gay zl4Pe16*U`-YI3^p5Bg#ze)Xr?>Ie!i?RJg|+MQC8el)kVV9VK8rEy>qmMa>2^|F>^ z>4Mrr0~F$T^s;_rcU8~QvTl6ZUvC{2tTxpVbnl+Tz6c@oy;}pc9P_iHUzv)-K;{Ffo{!5!JKMR~kexDv@R;iB)NYc-d;%yvp z>=I|$c!1sEvN%7;#BqiN5@a7Q@4PH-1o7jQ(+Nt)fOAyQ$qAeYjVL*{&1Lqnwm?5y z1&V)p`HiOU?(KnHcNVQrx6b(A+6$i2|WUC-;@m#6(+? z<_P)=qDJ`6CYwB*lbdV&S{Lh$JNMhY%3LPu>sxfPR4^fne3P5oF|E_F*LyY9wafkK zfH;jtiz{^^-!4np53Qx3-ckYbXPoc|rAV{yZ8|^hW4>xnj|-DPvvzBApL^t}{?UB0 z-)%!&L)cnrMhbn;T>FRv)c!(++M)D3xep#(yPshq2PGFC$XENpS*{`9N$ch-M! zRF5C{uWBLinvh|81P$9ybOdWEg2u{M`}HGU(mI(Jg^N~xQ4^Qj)yd;x-DA%`ZGO+_ zXkhI{)Al!=*#`G@pQ)RIl1O>u2BhnS*8(L#3xHo>)|tNts`cK19E&~u{dF(Sa{vli zhs$mkSRIi~!YBZC*Omj1Iizk2qZZmCF#ivJS+Ezi#8i`3BbH=0QZv`>IB?)w!UDEj zZ*&$!1PkiXR`}=S&Rj!AAiLDqZ}1?vUi8`pM~BfR!P+;L(GZ2p+^stuqrFM!Pf0qd zEz(~2yPTKyWv5lF6E!@>-X5-;*nk9Md~%9ty7Pn^?D zxEd#~?hT?SorHPl6~^`JsfY+>V}I)N*Gf9kbHzI@i&G;)-tMqURE}`ed2x>NOoG4# z+`o-nvLP>Cdiaw-mtOd4+npD&nm)umngsg?(?Tt5Y zYN2Zs`u6Qwe+83ASwwT)_^lytF3hfeN9Ndem)RfYy!&3gK96%ov#QO zuKnJ4m+17+y~8ev8y-wJW$RKjskd*Zxjyo`ADO$%I79YHdf1&aA$+fs)Z;Z10`j;3 zc5=#io9Rm5Dmj#GbyP$!>Thd){ZC0KT>~~P!x?$vDaLR642oqo?x*%zD-)tNE;Vy};A8(C3M*2U-GxBMr)#W?U z@7Tfq_D`C?C^@Lq%TMyFRa;i4lWXr=H6r@sYymli%E(=(DfcG;Uty0C^xyby(2BC_ zlID@4U2(`4QBD=n7i*HjqL-f=na|NnT&mXc^_5g}A6?d2E^E#yd> zCR*Bi98pF?TGB!)PD`b|koHnh(%ws@z3X?s>gqV}&+q;D-ah@~9HXx5bv?)9J|6c+ zRtg6X52GtCBWb^4FWqUeMTbHQTphEs1b`_jVpH@^zfwSS$&&u|H+#3yJT>XjRvk2> zSERR9^(E$8U;2l<9Rqn_W@FP=;+wy9>(-msPwnH9l#*HzIC}I=YKw_aw&g&rFLG(> zfx6`?H%a zE-SbBLxyKTsrb;sV)(qEW45K^PB*?y57PPTRpMwG7{nT~dpbMKrD9D}%64#l?YK`n zsB5)vZ4UX|wUeIx6&t%LG1n*cYW!wMn68Qv z8VWHAi6cmgKo~p`@66efWDUrTAf{YoNnK#m#k{XQ$%rolsPtq+9_=)?(<#{k9H4T$oiKCO& z?cV6kBJt_PA1vc7Hp)Am2XSfPVgpHy0_6yb8gp+evrJV9FE1~RDv7r0nAfl4xN#{W z7{np-a@2*Uzm9|6HXu3fTB>^?xzVV|Wn|$i0DeMuSwQ*L&<%`NW2aul#>UcrxOwU@ z1TX*QOp7L0CF|@KZT=9hzKY<9J+3v^-?vS75Oh1jSBaR?`a?6U-vYuS>_R|zS92!s zt%Ow5HV;C?NUAErmNynYcCcvwVDgA&>J@aCZ4`ME@dgZhw*dl~zURyx*+3R+Hr~x` z&^%=EYy6n}xzD>G5i}hRYL&0QUh5M?WTM36(U&`lSy{cgGpui~#&Z_9Tj3gKeQ(m@w|(yh zI7hcc^Dcg>qE9O3rYyeHN6-G@`1+sHeQY?AaV#31q#a8J~6#GF5cBq~O^copT zFkR_e+0#x=c=&2EYiJQVCd!7vjfCU1`y-ZsP<7~mIp>6y&R2zTW8(+SPpP$7cq)q1&zx?PvCnpx&0h(Tk5`>y zzw)MJXK|wH)K2}0ydvBX$-p2(UCBN(x!sT=;p4rIA$z88`Rc#_- zJygHb=4c=3IKX zb_2PpdAF?5vC$Kv_!If(SE51h-};fr9a2fo^n?93qnh*nellT=ca>|O;yD=Wml1HI zfYqc4bl6Yhh2{#VSB~ZW>Ro!?4pZM>S(v8!>O`7V3W!C778WhgC^DV?Y}nuNnQe=&JGrBBXeKlk0S zE{Cq(UIoH6qcUMtJVMY6bEL?wyxDaQzYVFA1n1?af`gQ6@*|Jcpft`P~XL~+d;ebEY2M|tf=`RF@O0q*eUF%;$Yq*wcVFNzTO(SG1|(6>TWN15Wt%LZ$t7} zB;2w=&I+wLo8TDq6 z@qR$2F1k9&c8tGIWY*iyW8Di7K6E0NzDV-XDEcWVRsu?zwwM{~1dQ zMw1O32Zn7^+;iuTR7pXe%dc%f9lxfg5Zbh^@)kBU_^76~zK{+2I62&O7Y9HLeN(cY zKxZd^itU)XsF0(pG#o-m;sm1i2_cfM-IXDPn~{_v%bLkEJ6i-@r}y{qX|l2Pu%grR z$g$hv7=*L=`tssiaASYbYQ@RoW-wn~Y&_Km$I|Y^-1@tJ|7pmpD=mdniIgr_$bu1P z(6xMLHt67}{CuB3FRPYtQ7mvb_2tqc1;Oz><%l<6WfuhU_V(uk=5scr>FSvm2y_9Z z1mh>L&~+^aJ!Ri+)xIWcZOtRz$b=W8%t`s_(_zd#qQ${+p72+`{VnqHW#!Gf=p#F5 zj4WwPNikDgHq%_WEkGR=56W9I<;U&t=)JyG=RKgU7EiOC=ERx0Xw!*emKqE@^rzv- zs*RL72*q!9sv-4fBQ=5Zi(+8-jXl-#92@PLV;e&5c~tjx7N*Fd!n?aktWH#R?K$I# zCwp(tAY8TM*P2odgXpg@@7mSAmyWK#>yF@wRffz;(+9JwiBRsj9A`#$HW~a)7jE|7 zG-!MCX0A%dqu{U7?oQF=8KKkDKb6yeg1&NvFkhiRvC{(3sSxTs6}SI^v(dknW_Bc9 zt3VO?)4FM=MJBznvH$>CpWr&>Yn0wp*W%VLkUw669%siDtliJNe| z&nPq-R$pFSXoNT3x>_}}DsGTM(bBfrt-};t@1~1yFSCutDGZujN;jc~2K*!eSzi>B zBQ2r8)OUKy_Cjrw%Xc=W!$h;G!PNE;Q*q2|nm%>=tM~j=(`%u8&1~yj0x!yI;GM6> z4F2}v1G-ODVKtbFN1Kcbv-Q~)^+-GtjEVz>oJcu#ah6_H5e&`=W zcgwpeeYD`qOD3qk#cHNgSv?j6QxCp;D*~1kKd+Jo;TRf9y3@5S{;J_1LXD~j8}iXQ zd(qy~j3QO3}}itL`dhi6mT}fUY%pPNQ-@T&zCnVjFAik&NVS87mmM zRJn%9&Yk1&c4k;eE{@NZs)V~`}S3cJyXZ-Fh?xgzUsrgv6 zPW;v5P77&rbyu^~1W*#`e|}&hz*v{>(!{__YzZmxJDYF0>X*#)TIF>)Hz<*AxmW^g zfg`L1E+Evxv(0-hOiGN_IkEnW5dD{N=*vr`*R7cCfndcrRQ--dESin1-)gU!0^EnpNX@`)%gh>(A6++;&K zJ6=A3+M1dr-wVq>2`r*Fv)DO6m23ISBAs37NIYbNJ=))-Me~SY1`V7;^divz zn@l|}C8)EJaH(&@FJ(*SB?Bp$^D}&Ti`HSo)r~BoN54aFztw^B_V98o{7mZ-S{)FeqeW~g0^EQ)>oT3vT$ zWLQ9+RmxkPfb6xLRSKT6S=4DHfc9&?Xj5f@6F1yBi=0F<(ifMxS#Je9ym{wAzObuj2nHPcQ@=5pD^v$7 zpOZ5I28S&qT5SgO63e_jb+ItBNmN=~Sw$>3oV&-?RhC=}SObmc`)02|f2AUUN>kKv$DfRU9>R!8 zN~5!aynJd;sb4XNu<*QPeN>1y>B&GYt-N;lQWX~F=EQ(1FCT)#vlUX)CXWK&+ez1! zOTxt*46b`Y@l)qM(wF6Y_n*6MANl6KRJScFx@~z(=*8qlPyH#4J49;okl7jsII);L znuk~MI(Wi9A;AQegX=uOCqpWq$wkKs=$*Wt-V|EQ-}FrC;A>il(0M+ya;V5(Yc74V`8J_@0=6t?3D;f+G6|UOfDKoM#&3n+pP=c86M8 zSi~~z*)tgrkN^?3nFN1u2~sGgE@%WkWs|KE1D~bm8rnD!zF_lfmG2C&8ax%PmCp~C z74FhfB=pi^`*MeH#jq=EIAt_TgQi!5;U7_mF!Ct!68VyCW09;^{_z>Nujqo&NiAog zu=LjL^1M~wz6D&0Y(?`EuP39Bo5V_U>3=asow;*|<5R&xP3FXDO~)k8gOZkndT}(D zwiKmakbWz8*YWA58!%Cjws-h?G-#R1q?=61$cdhLOw&@kCzKRazjw{eL#*0I9cGFw zfR9m@AHuUnF7fhk`^Q`)DBgelS}A8vpZ02^W;f%Gi@)(~RTrnmW?sYkg>&aCF`>-b zW|nO|jm_t8h86bgRs1e`lHgeZX;KX}ohZcsHsY=kSD9!!M!4qf`fE}vC&As|BHeR-%2TLK=c!w48auf{!m@ZgS9MR_|dNt{hH0G+=7kNJX48Z=MXw7*}PyYEtU5sM;s8&F0Zt^m_FjX-@*%+(fUB+*6YjCb`wo6JX zAPkA#)ffAPYIm*c)R6LJSaI>m@8{CRs-8gynTlt=%ket7q#K_U^Ag9061w(VH@25^#VEb` z60a2*f-T)XNK^EWQa0?fbF&|BRq8YAg>PEoS}rD#@For&(aJEEbA9uM>!?yRE9P+a zc(4RQ+JCu zMS^#1YO1*7PJ6Gl)eZm0kB{RNOPiB8p|0-LE4u0Z8`*Q+H-b1~YW`j?{bkntH>B;s z2H`y+ruy8#)}ms$Hye{h82Bd-iaLtpF=7ObI1-<92vV`i1cB;!jboRbx%sck5EoXs z&lB^0gyP;s-ixnApF$gtCPV@{{X;I+4;H1DgD zni@>}1vge`-`oVPHd^9HY#1l-O7zg!XKNR5m~U$L$jHcdqpOfE!Z?FKP}X`HHzWuw zEu?=eFFzvh0L2dT48S#)g3X4VvLZ-J0X3{R*e)sv^FGW6LD_pk6oR;_p851bV{(A> z1!0+vPlXtfbf{WFYl2x~y$z7cu9+@bm~{0#6ATsZ={Gs~>y~6yCaeo6fCQ@n>j-=$ zFV8vmltv>MyGBK;VX24JEhcJMD%By4pdu6vY;Oy0Zb5B z@|sr+n+pzJ%C6kikQU&4rRCTP>>H@7NjG=T7t7h zBfHgcVR%ukXmWD$m61xm(s zs5Jbh54~ERCPaX2n4e}U&a{x(!!dZ@M{(1qPenTEO=f0hQCRaN5bvVybZC=+U9y|7F8U0qJNp3mIcp||?qnFeb;0mP;l9vw+!pq|aNWCx;FCTKMa7{lI@$@9%5e|{xj z`ESiU$8CP4{?V0?Vv?TKd1hl*T^OjXe*N$kXr@#(LLY$PC<|gfi;ei(-nUInknUl> z9Qu%YrQpc{COVO6UPg*7@Dr0{WHj5W5gk)hzG^kwS8ab(nOr#VUdjb;C-G!##8|PJ zr+{wz1V&C{Y0#f~gG_(*1Awgr9GYXt=`n3e#O*&nWmw?N zl+SDZGyA&{_}&(FwY1#;$fN`jWN~gs+jJ(eTlqorg9EYDYnp&m@p$9IOI)Won@>je z?c8Zx1ke5Ec0%!@p83Hp9^dzNeO!>q{}ietYTmZ^hKcA1+TP*f%5Q!Kfub&M0}WN_ z_WzKhe_QQ-oKac5x0#P=YPNzdUrbv<5d3-2;yec;n_{nVKf%T)$V8}x4XlKT*m->G znrH=Tt~vEvx(|=(XtGM!U1BXIx_Odf?YR>d29>YJy*28R`0w!xnX9i-rlCGVongEJvww6fX?B4^w1*pz~7BL2tCK!b}QR3Ifej#W&3T<1rsu=i^qR(#=>)dQ;DqdC0IjcHB`S9_~hwgT}tB%ECrC2U5yvDnKSU2rYh+Rc#= z$~>GGpNeA~C7lsJThZcIyZEbDc`r0`Y3|+2A$9$D{X<>KxvWkO z*G9)+$Z!*j6W`d?>M23@$ybETkl}nSx_K)4;kP&y1BjncYm;yvTzR{DgX_23FV|{F z>nytSkL`c+{uFqR;JGkdx~DH9A2okI9pCNE*L8a<%mgZH%FCM?`38;6 z7IK|>HdRRF1+RTmZ2uU1GL1W`1 zTFp0p2`*Q@()zP2`2u8*7f{NcT=h`FbbR{Z?pAWTFM%p4d9u8R|D!Yu8(wR*`lohV z9KADOZYjtp$VfpVcbM8bn<=v90e-N4O3S2}f0G7zpZje_97U(DkV0g$sk1|4`@apvEFEzZ}DD1%IAC$80`q^0b_3cEyO*vYs2m&2pEfm`K1{*-Z*`TQzB_p4EZmhG_ z==&F+-E5At=*U9@;q@%;H8TG0x7%!LX^aC2>4ps<7#uH{F1(yRWZ^j7c%9HZIovcu znB|IgGy6%pk1$Mv441+NR7v|OQMIgBezmhA*pCFRh^M!|4Yp1S5k>cs$l-dI4Qt*b z^RVBwQtzGFU!+$P)Z0Z9LFI$miyE>SsAU6o0)O%Hy)nb1beqQPM+BGYze}~zn{og0 z17Rlgf<|G!=7kH}QKYiM_J?GbdvFz|Yt)=zRZRO|F!$2uwbx_w^TyHk*0-Pp&)&Yh z9nJ~#6o9dcQy9n#6?1TJ&YU1P&G3spPUG<>#E%fIz#RUo#aDOImE8H`Dq&~b0oo;8 zAEgsNZ6BfaJ|p69;1}iflQp==BwgaYML1MNlykZz>g#`J<^r)IDZPU`GV_K5K_3>@ zhiTM?30E<%<;|FE<{8uDR~_ZGJ3CfPN2|IF^Ts8-^G%+H-249O!L{RQ*Zx+OyuuN1 zO#V-*ztf(+ym|Ib?zS`3vL|+?zCUy6$G+6}>_xSOU%x+kJM1y2uf;0;Tyl5j&?u#! zn)2NTH~VuUTv{fU!h0;L=2}IWhl?|{V6rS7X;B-^lpx+NzB#obtH}Lacev4y_xmsf z6G3g|p+eNs3V9U>gHcJ+-ZIgr*t< zB8+s~3Lgi(zWt{QF2T~;sL{)r=6vXmlE;3=7^d=#TRe8r)CZ$S@J{;&PL!N-eN|4O z^P<*2ckQ5&`&b@(lx*|4lX_(*AMHK{bk=#>k_#&LK6b z$Qq{XmJ6x3t&-VHNyDAzg+xWSlYV)3gO~MS->(*%l?^~zKXy}b`ynjoM!Lv~y1Cot z$~S+;I;VAWoK|nvZFP1Kuc_Jb=3>VsxoAU#*o6gY4pt#`qA}ZsK|UnyqY=MF&jnTj zrHobFJ;SqJqjW!4SnYs&ARWGGbKZke%Sy8i4Q(rC`qj*eeuv}H{sHFiF_ydc{LFZs zsvkR{(-Ey9E(^)%?s%sfFH{fv0v&mR_jr!o*yke2C*k3eZky$U1-KsBO>~mp0i*rZ z!iuj~NOJx2b%-K98goU}bc$&EDd7)OhlYB}Y0YeAKDXsFBU8mGn9q=r1k@zNac0Cl zb2coQw&pzVC~&~EtX=4$)GiO?LJorHty^y~gcwNfnV^|;nss6>|5F6QBE%*r!bSXy zZa0ZS=&bKA-AAd-$`! zK!4rx)fq%DfpC%nKpY-k#T3(DpPScGZhYp2W`8&)oKMD#`PO}%Wajtx;l#iUe zAsbJQbf;e3#^gpAxutN-7Dvg_+Kyy;XWl--I{rd9?f6{tM=zR{iJej;>t2ArMguZc zzpQnxm9*3-u68&)kj_KjThbvmjZfE4UQE&sP^;fTK~XxBG#XW{thKZ2>su}Mt8s^r zm{^tnf>>Rh8+p2$xb93p73fT)=3}sQ&1;!h$6?+hIDMp8;;q|?*Xy`U>Rhr_Bl!Bi zKG#k9a^q@i;5v`?poHwqwzcYSuI{^0nncuauBRUxFR$O%uX|v?v8{IcXDJ1)|L9R3 zB-!SOYoDtYol19@xr)ZN{cS_7Rn3{yC-;dV7f%pKIwj5q9OG-uoH!1sCoQ`WmS&udoU?}XIEGzcKHUnn8e0CC zX3W5@`hFue%8kNDa~n6l?;iZNC)_TYBkDpxPXVO?&zzT&OG3;xKHmhBlUb%gJ{K7pfx|bNCh7n_aY_fT;ZAJ~y#&=};=Uia^QoIl? zXXrjG6k6O3;`UhnI_pmmPhDGRysTr5h#+2f^*D}XZvHuxc&w9e>Zsc-&tGpqg zqLo#4N6PWTe%pZeAS#gYhkSeM1;M}M&z2MLi;T@R8fd-JJ}&{?sr2rql|vjHdvQ|W zi3cFH(d* z-jwuw&=Kj=`z2cbNX)&I2PJMJ-xInmwg{*$Zpl;bz5Pe=+Uu~9IVG;uPL5CKhHrY>$Xo>F|Yrc0I!d z;*p<+k*SqVEM0G7HjFONk=zGURx(w3ef^+bY`^@4bp1nH`?bW1_-{+J0xR{8_wO3{ z;l+*N$5iOLzi`2vRB}Dt*yS+W`U`Fxo^~8Xx9wkV-u!`6Q?I9ta^$-;#$spwZ6m;X zPz#+j=6Tb>&_#G{O!nYX+~``UeWUcL&B=XU6(O`%T18+R2w%Qie25ML)*0Qp=x?)g zb4rnt8k@;)N@4618d$mCzGa6&IQaehE1M~uLtxr}XWS(Dh=${joBe`^<@epq&fbEM zhS%pGry*xks0>EtzMqXaNb6jSydw1GCw(EV-^0v>6oiRDlCzy@k%r4TMsWqrPzOsY zDs8uza*7K`lpJMJrE-5H=PFPI&hAfZKfl=Ss>S@2W#M*Iv+!jr5A z54yRmH~{74qqt_r_J@Cn6h=$;MAP%AkaQpS^lmhXy6_D@8z14H*wAEJZI6&G>-+9q z75Ww)l?QS0=#^<>T~w!S)^bcDe_VKGZae^~Cr8}LA9ltjioCHH)i6fU1AgX+Jo z{C&miFEWwNjt&{Qip!Uk{BUVXV`q#!8v;GJm4f1>QRDWwYgENuJ_4IR6vv3-KDo5k z{{+R`#r6Mx7FtSnhl>1+jA`mrtr<%$`^5nohH?HwJZPYzIn6&1vt0lyZlqD0Gc zoT7qdSdC_rb+HY*(DB+aE7YN8*ZDB!f!EGr?Id(GJu?Wm^UcU8MZ1mOW47a^B#edCOypSSq%4qm6-oqEf zZSF)Cy0km!CD2%|{WNnMOX7lAj=A!8x75x4@1p6Z%^7SsOe%^WnD_SdoNr2NL5NAt zco_-XdWYAt)KOwpV9tUGJ>1pCON+NjF24K}Ik#s$T~@STeY@~#iXib#;+ISXV#T%o zTfSTF5kKqkAib2v?ZWp&vNSvq?UZBc)W&7Q+v}DgL8&b#;6SJCFVT>@9KS|7Zh5@E zwnq`>lsAK%jMG=X?#HG~Ht*SDW0dVMQ?LGQAth&J`A~(vMcU9o$;pbOWATW`k3h}bM&-$Xxu%egcwlc|bs$!pj8 zL{qbs)NK~R^0myGy^bq$A}UY{#Za+Es>q#okbx2z1Tyx(poi&4W~e0)Q(MjBG%pP%=uFM4LX}*5Zca{4Q2mFl z#@?@safvc*qteyaPu8#0MuCbrSRtUvQb100v>XOtwtN(I``W+M2I}&m3h#^I1C+u@A#?(5p8AMJ;S7D4fpIT*G6)1ABZJp!kZ1eeW8E1M{+7W5byB`~NFk;Q$lv-C@wB2i zd0#lpTtvoyW&6iV*~4?K0;U0 z4sQc}Ac@92pQdz|Qm_ZOG9E!c#1$BdN>7VT*#2bxvb}$%Mc3R+zJQ>U0LI{!w&tp_ zYvvq6pH&%6gZs|oVS|bx{AFWdm~iB!6N=YY_f|;@tTK8k56Feh-^eR6>zY4zo`Z1b zQqj%s#=zFdGxw#Kx)=q2h3U97y&tIXV5ves3^o2x%4Y=4(2qrzZBM6J<&4oAH6(b{ zwZ#Cx`Nl8jdI#yDo7vmWhgr;x#br?fLZ=UErt$9cD42#%jh?6$onS?8NaeJ~sv7O< z;r9>BCsqPCP*V^z{daZwD{9cn-PvTd$EM;R;GV|Bjs3VPg87Xxjt2TXWmGgS5Qi>q(!Tzxw&6C6bktuDtnm)HIjR z4KV%W?XRZ@O~j}z(^B7P=2Bp6Ur}}9;ju9mG;>}$ENAP3`xG(&@FFt_RuH|gC2Rgt z;JHlmfHzm;34i^QHn&oirHZiCyoi2E@NwncrXpI%E8D_ztCm%KPFFL{)+BVL(xiFE z2ksRd8|J^-P0$`BSr=`boT~Qz=4R?6oUEdvfj$!9eqGO&=Dl8_oFJ5m*b7L8+Zy4L zH<@N-Iyq4-g&lrQsu*VA>!{D+=Afz!kx;}IK!i`AMs}WAoNVCsz08$nUZ&x7v|1<7 zGIuf0QBNUkev|9`RD^cPlQ(J!!SF6p2^!A61b-tIs~&i>l)_Ejzcl8%L|h_YyikUO zwih{D(R$^y6MWu3hb$h!GRkB0{ZLG|abVmM(#p1@Gx?Qy&uvJgu7Fv)=w>gcEoIEn zR}75S4L1+l3S^nJlJFUdOIl8DxDYVj5wWs(swpQ0P08reH!J>5ME<`Svwu)2u@cJ& zzX&nB{S5=liq!6ElXRqk^v*h3&?g+RB}vd+VzRMOL|~COH@+hpACr=(V7k{WaNi4h za22fb6<;&Cl4i6iT7CgTd3T*TqBv#r zog6M@#;)>GFALQaeJr6ZRC^|Q?ks)QtxvJe=F7I{+XN$^^NN_mI5H>bG0P*$YDfVg zHTyvPkq{2v82gFdLTUzvKkV)I#jB>;s4L3K7T#Rc$w%&UoyFFMmA_8cGq(&dWzf^# z!V@YMZ#il>x`TEa8%1xyBxhQ6*A5I!0K1f2xT!H;7RTxx$3D|5=_7uh3+3VL=JjM= zQb=2v*)63oq?GZlfurG|p^N-sY7Aj~edR6BhpF7^(#q=gN|y*ceCvhynRb(6H;H8m z%xWm)9%Z2SLQ|k_$c$I@-PqW%z@=5Syrkef5#V-*zc*o$n;NuA))@WHja`-nU*=Yf z@F146yQper@+CYLNTFp!pY_lLf+%?Fh`x09liKGfd#kJGKHmsD5^jrVt2-1d%i*}z z3&9K^%NqiGhEY=U(E}YPYHHj-T>>nzARsEQ;yK?)LVbq^3&ly3W)hS~wMjZ$P+@p) zoH<(f$j(4S&pr}b3K~c##aA5ZF`~4%Df`qKkJxNh0lEP(X#wI+k{4lMLF&(4Ts3}y zfrF=3LRvCtAqHAjv=tP%wYTqLc8EI=98BNXs`Mj!CIkti2M9H9p71mKsSOXjnJW+p zLy9yLS#53i6vGA@kRlHsZPx*nxN*x&rg00yw*-v{oOeau!^JsvHF%%_SUv>Q2p#$@ z;@Uobbi#1OgF9#yvb*+?dJEav+10!}%SGU$N=h0Y`mB_^ZH=!#0rt*r;uT0Ckw6ZI zpzAi(0$@tAoP6K}E?7XtR_>b~yiu^Q^Wt=XAj=Vaoq#Hg~Fe5*mlGjW*z zei*mOI8N}|PPD~r-@AzSNCv2X@1Cel`3z^DwI~Uo8Ls4kQ=bAie+1tcTJZj8_TsE&|EO5NAgj8lz2q%V93*JUB&=)aIflQa4>&CHY-^-M=E zqu*|xsW{($>R7C@%W3J75F6TAm;3jv(9-|SCN8L934?Vcz$+rz(>S~{JLsAC!q2l< zf5K(C4wRLDKIKVYYV(3;Ub;MR7&b4XGzYtug~dlY2!MVj7o0PzoxZ`VOJPJ$qSe8a z_2o;Q(PKr6%_}FiP&g7e=g`(2PDaY(nQjam%VcfGEvCZP5_xcb0az!34uBaYICSKVK7kFS^&yI~amUqeM=QFju7(NLQ zuSHGSU!8_lZj8N%E2uQXr9(Yb?{sEmxx?1pp5_|kj2{#~j^Sg4kM^!86=jDZo#kRe z=!C@d#Wg_H-4R9Po4cPAUKHgPB5lO1X}{%vC8A{kki7}fwiONHeor|?rii%%tWVqg zS9?;Zd>0O%dS9TC4ujKf)IoavUlI--4$qHGgTs(OK#}0CKA|#RrQzd}jTzg=2|K1w zoM?ACXHppdf@}>#c{D}K$Bs=*Af6;EPHl!V&A3Ur<`vt62hRrHQ19LAUa4PLP~ey6 zBz5w?0Rr?AZ1@{-z!>>XLZE-DMe71_dyaQ_@D6-^ODP-p8N>mBkAzy``R#VcoI+5M{`K*C`}ZU=I&x0f%O87sk}off?j+n~ zV0OTzU$2idLmk^?q;uuX#bBh9zOxzSf6i}wR=v4feP$c@i9fKoT3dbge15uaozepw4afO)|mAO(RFJiN^T4-YFHc6MHVCU+P!@t{=e zkvtQ!H~|d|1KZJi0v&w=R3P+RfbY;{i2QwhgF_T*aN3ZONk3sQwyuqszaXyEWV@V zdQmYlo&lYxsi|r6&7dKHEW?_^4XxMBL8(NNl#07Kb8Q`zSgosAc`v$3yxzY*1-tNw z<@mIwMz*!r{T({vsfySr9siwhE{-B@0jf-voSYoQ>Nj4=u&w+*P8)VDile`7RBgFF@El*bU^yiW=sBm4((4=pDCOOxVrn6@RtSu{w9 zfipl!?~Qp0=HuPfXpg&56}pWelVZ*>fg0vFS@cJljlfBnBG2HSenW&v>gsDoO8HzQ z+5MY3$S|{*?eM_BpNV}?<{nbh?*8XIIV>OE)m<8~b-R7=?5xk$ZS)t;onz6jnElS) z`q53Rw?-;9#bt$)0K=1XwgijXQMI|`yA3x9pz0_?Bp5Y=h&vX=uObE=(0=#2CLZmb z5VGhM1or^L_6X_@a3q9Qq0v^;WL+5qNCbcQ5M(<)&?hY?>Jt-l1P1b6WXzG%?=DQ% zOQ9DPEE`Y_+{tiNxbRZy?RX=@WrHeYMP%tRxD^_^I}$x^CY2e0;7?cH1^P-hAdi)>tmze8w>1*)0k> zG)6O5@|5YaD4+o8uR>ZDDte(HptGlefsb&bASw|sa&D~H?Mi}r7`*e4_Y7n5gsp#8 z9#5RK@y97)Vj^ijlNbJT0>YMzpLlz1)DA{5dsn0Y@!a_20KU7kPxT32i{4gZb6ef~ibkowt(;!tfrSOSWrAa#MswstLA}&RYCVUB% z)?y>Qm2TJa7ITe`+~?(~MHmQnUpad;s<*z|CTq`ub)|g$=ovTqc=xSQYmPf2GK3S@ z*fff6r*;mgJgBJfG%|K{ETg984fXUqg&+}kWHq7f8!``D+%@jDOI-h81#ta>Q&`E>-M(fSkS-16j{PGdjd$PI5$H zQTpL-A3<^Dzpn(Kk(%wW{>H;~d?e7xXP0Jl$vd8vtB{av?UFh7$Cb@wWSj5t>dUbd zdD?m5L{W-YMc@(_>8@R0;C1f6!1hA!Uatmb7g1Mm5+NMka8V}T>3F{(}DMh4DaHv;4_vx|M zBA(I9wDf3mTq~8c{wa^Mg$D)(Kzuv{NHCEn(it;(t)@<5r%Nla`*62f->H z;xuteTfnD+#@J^@F^?^VN_>}4hauH6ZD!vfM~evsCPe8?4N{scRQ(WWy;;35>hc$e ztnQNViqOo?K&v2*5cv@PFrbDA)3L|WRsRb;zh3pJm&}`!G(@uH^X8~Rp^jAb~+NB9&J`Zp{?zZt$k|-85HP4UoeO1euL#hm>5OcnxTfZ%dLO|(}ZQBe~GRMiJ8jbk- zjvb)i_v3)_5{uw3CNnc`J8!NNKkG;Jacp5yw;MV;|`}cY?&M~9)FwID% zxX6nTMQi}Z76Eq~|GpYu=zDO1z>+fvIG6oqL(L~sA)oT_CSpd~o30<8^rpU$eSqjO zhMtO~v{V^mzY5kk`p#jE=RM_Z2lu~V0~=~E`1J;oD;=GVkIxV3(D6odL22`SW-G3? zh_?yS7%>_9eto8vzm|N62El7k9#QS3T>rQyC+88*_0t<4)8@Oa739BuU4t~w*z@8A zC(u3kfSaFONvS-U7M|-=Fp1=KLTr5p4@jI!%Dv7)*~_VaOZ@RiBJ}v9FaX$1RLUG; zV>4f~gjMMHELE}x(rWg1?wJv2i|cvJCCNI|85DPWWLw z=A6)(2%ZW!ZXrlQ9v}b#LbCvz56O5N3Qkr(zlSJm4vZdMS)8DPfup9z3`6L?n>h{t z@YzN|0h(bOf)$H@Q=$J-R&nqXDi#`!AG?{Dq~N?T4=vcim2(Ew<%7o|as(z-J#$~N zH`9I;q^9{|5&iv}FgO9>F6;bjn(;#ITSxfIriLU6pB%V^tFZPKVsM-(D1FY5010?P z{dAmZ$^Rc*=9-61JWOP!l%~9LdCX@9DZqPSbf^4~G!0Vm6Yf%a`T>PuBwT;|{P6Ks zN}rxCpFZ6tv|m_bt|c>}pBDjMeF+hph+0`G%RkSO-+s~(12hRElWw);(UKT9S?djc zrLwiBDQa8sQ3_qf0ca&tQpvbO2F-oL;#jLP{J&q*A<9<{`>g1K3q&^`8m$u&8WNj^ zt;3zB*^XVE)WPv|%J_#nE+JHC^n_#Bq5QLP;F!%Rksl_?&3l|%REcW0D4uM8U+;1Cz&<}Qa9A_*@$3X~g)-|)&1Wl;Oi z;ldfKS3B_Y$J9V0 zntQlLD%)1XJ-fTh<(}<=i@X&A#B{3*F6l@~4wL*b;*o6LM)!Zd_96z6AaUqGM_goc_RK}x zA=^*B62T-olze9Xxw*0!S~E2BwXf3Q3MfH>2hn;sYm6u~H$A*bWtYL&6yP}0F8O%n z!%UevNB>$+dG|>FIvo;=CyeQuoAC}m6&TQ13MxR2g7TZ)yP5#=-EkOE_J3bX+K#xg zkGec#Wyi_X=-yQs%qc6F+|TLC0Ee8%W?gVIhU|b7p(sdFxuKA zq6g9mY#JqtW}ILFKny2Z$C95k$KX}T?y=?_rc4wN~| zY1GcPCCzAW-}qD|RQiK7tyCG^%p)e9Fd~O*#OaSnh;12o3a3JCq@IW`29ix8wshyV zd|TST`QO_d*>D#YZqc1{bMZpbPK~-xRz#eJOaK4A6#tUe65u{DGO)5st0kJdz@){~ zE8wl{Fn#~QEOJk6fq0(s=nVXCsc_$G$`a?#+@dhhQlGvuPg#>Lz58Og`nmDZNA8EV zJU@5z)A1L|2Pa7W`&Rn=#Zufm#gqHXb%Gvit(`yGrKB>8j9SqTWRC~>=JiQ7+(%+= z`T4PQCy0yin3HA@P|cdu2S~l&>g=rU-rX4b(LOUH)nAQmxL!Zq-<>#E;lwB=rni7; zc-2>M=5hTA+zIfE`HnAU?c*%WTKv5BtZJ^V@}(Q*pG*Y1vbB_}HhM0FCOHjzJdPD= zF!>$YesM1;$vsiavh3ktMTw$x6W=ZxY1#4Sj9rm=pK>Q6-4-u7Uj84*EhN{1P zGpjly1A}C+ux%;<^}g!X&|ds=R*Iu5$DBOA@)f!WV#S%xkSIPYAG(>z=yR`TyV$v1 zR(pT&=2ou0`|;y8(bcD#nd{jZ`&Xn(5hos)0#t^4D ze|As)HUHzsks5IPI8MK=8&%wx<>@Z5k}T6^J9F}c$8s&j?#Nrd_36ZR7KW)$)q9p@ zi`8yv)Sjg!Kk8`LC!_V4?iIucI+Sbp5*m|`Ep0n4^gDFyZs@2X;+?Tdip?< z>1h1?#1eU@a6j=owZwf{agWAi;9qnk7*V13$hYb!E>W{2`6mXK3AB%nIQqhP%lX|s z_{ke}=Sp6zFX8T6s#E-i)hC;Y=Pw_9;0cj6Zl+=+d@O_tH;GRRowaT{>G`zg4DPpK z=l}UFZwjgQiX7glB%)i0>m+B~7k4}ZB_(JjcxTCk;*WMh@%<(V7t{k81 z_}#a6-@GrukKcN;G}ek2%Tfz>H|CPMGfB+)i;Nx6I#laRUVLf~9}-SXO_3m|L@O0W z(Vj?T<5Xgt$L3Xw-cQU@e!LkEz3USDmd`CV`q zpVIklitN|i$ySW%&gz+2%$9y2nO&~q;y}(V@p_Z3MJm_*mDiz3qjh?Wlm-K(x0>48 zR07G19k3fEvnYjOCo#LOxedw7p;bl))MXigN(DG7XKQDLZ=u)0x3+jfr2-C1ObX=$dKRjwi5 zzh}(kH|VN8dSqfTT&)@!7O|O)upIoxteU|>YY;u#W0A(H#rtaXN15sHfrO6DW4As8 zw{aWyEwn!R`JqaN*}D6SWr|*P2-7p-W+Y z%a!wK-)Mw%InT(8NIy$Jso{*&uWRPE z8p1?z8l?ARY23viR1+Q=4mu4_|KNqC+gCsw79XGb=MM*&&(nFcqoBd#r(zsA3D;)i z6>%F%eSNCp)l}O8Irp^R?Jc-bCMJ{Q&81=5R8+FKZvnTdir3>uVLgvY9-AE=3}&dL zXWYAoFdc97H0@g@$E^djo|iuXWiKsCc=i4*6n9sa1_eG;bJiXeStCT1q zXFsi&vblh{9*}&rNbvSq_elj|4BjZC&7T2Nm;p75KPzYy>NAha>N6MN?5>KfQ?(z? z?k6O%Z?cwe_B1WLi9J42{&?(;_~bulk|QT!K^#rveLv%WGRe_fypewr_3=B!hsTj` ztyXxKrT1!^!2I#5trb5??)URu4zVWv1%_`gUc9*e<5J>552UDGeJB^Xh)$9U zmI?JCTw054*xw!_+ntQ2-I!Jvx*f)L3!+2O(8lkbMB zzj%0U!p8q56N{lr`LAF19A=VNR$bM9BP{-BWz38P534pHVxHh zMK%Veqm|tmI$3_#hm|3R$i-~Or6_nkB^3Unlda{XG}CFg-XVF2+FL^AoH%uWY!or; znUj{$VnGh)GQ`JZKpJAEpP*pXtG=HyqnIcWIWv>$+r)7hpOoVv6Vvc?v{gjooDRLz z;~uZdu`T`Gb&^Y4BDcS*jK=jNbV?WX>+TS>(_A~6X~okFNBNZ~IwnTEzha9dTchw< zcgACxP}81(rz$Eu*}7Fvc6MB52i@{;b5-q8$X305tvl_hWOIZ^%0x5rPpp$@8e}eJ zo((OF!SV;H87k@$^@txUV}CW%T-Fe{b)uTCq?0I7l?2nt$ht7TVBF#?HP)b@j?Qs< z5~^8j$}Ux4AtU0t9;r_{+nZkz=ls{9H4dw(k2LKz%}`2ah9{qH*u05LMLjuKO;$~9 z+L=aLUlgi}oX0d2)>X1mYk!6bs^_DhiG8PsfMaZ^eI0%kkN%I#Rcmd{$cd22mai$0 z%-}L^oAXKw{rE-hJ0}ed4QEGcPelnimG7>TWt^jNm$sX%Odw{d?kcshnk{I~*&f_D z91^9Bp6V45aU49Fv5}U4E5oyhqF>S+xLuD&c_sa z=<4QZv!O2tFvvPfDyIgaVGTywkLS1g=o1BrIm|jkejCfssi^)@S2wY>SM0c;#AD&= zFiM)@G9Itq*LTj4w4P?MIe%{d@IYQ5R-Vi!;r`8U7m1nYs`n(!_P0yIVzHTQRb7cy zZca1b{Y`%_iLE{}@vVExA3warLOHj+L4#CiSgOl+39@jTFF!^qUypI%{rvQ2oYH7r zjH;!R-LIeAov%;1g@qL0rtVd8ys~H4Sp!dB;KbH9Q`3=dVLvhYo-QCB%Ikp ze+;%ta9k*71jwUVQmw0;BAgtlN1b@MKgHIajd@b%yVX(d;Kz`4I4$UDMHAF&Hy=k` zu~=DIiCkqp2F!b)S(TN-@87+fE^IfF2^DmhwGs5e zieDmW3pWw$PLWF$Gmnhej8#(VNi%MD^B1|^7Vv-N{C~1x&2LKKQav*?+vk^avzdpb z-(1VPGE^13Hotv`OJMicZa6HsPLcgS#u{zx$ABj6$Jd3krlqG!nb$Bp93XxfSr~eu|0U<+?olx;*%L>b19pM#S)pJ^AbVHTUFD@ZZJL zCnF3sJnJ~jee3kk0Me}+&D;0%su{I@CK}&vTc&*?zMaInOk3^2g9kMewi;z+Wv~DI zQDlLaV*ZO?_g}pDPS0dr&r5W)1o7Se0-u17DCeD%!d7lg*3&4 zHzpbpw4$Oz`WVEHRtNucjR?aiqtPXV#W|Qea|{6ti9-%0xGS*sC+AX2neu$=j$s3 zsf+B|wZAYoDa{kM+gMK&-1NRDl9oGZee}8SapdqvAK~yCjpnhHu;RO!F-f)&hT%4X zv4*V8%mz_LCKv=3VL=0rw=crbkiy62kM=P+6(20nO+h*aHdlwq8?E7ddE8hvQn zA-Es({mcN9a(%k}%stbgee$Z+CQ_00KU`5lTdd)1Iua#Ag3Cqc{<${h=-T(CjGcw! zJ_7W9lVnTan^>7-i^Mj;e4{u5^yE;&H%%&rm)hlJWSV<+9F!10XVF&AM$y;rwD6CT zAIH+i??zLM(yrSe`!V*E46%h&_u4FS8sh*Q4)yfPdVW z;Kdjnt*T=RKKxCPtg6FpDN*~Q?+dujxQF&baafh zgtIWUx~HcnF(ln??pEBP`4($&>goI zG$ZwS`l}$zHX$LQ!W=VXh}m?Kl9H;RgCou#Unq?3_(J{M0C_5#C(55F;n#7ng%%AW z7UI{|*3fH=FONSt(ti99#gveqSpT{oKfXI8z0!KF(bMjU6q^7Da!A+PcZCu`HGiB| z@Qm4ydSiY=%aXkpQVy5v(x}d#Mv(ce6b>&Pvhnb2SmzbqDs?}jHbYZ&?x>yf$G08mcxN&?lj5m&N`(z1b@V?S1DQJO) zQpx3)T}! zK-Co5K85RYjom$uj<#MDT00EJtw-sw($Z2HVQK{uDRnZRdO81U;4`< zTF{fUcyZT%f4o*?JE5N1W&HQ&RREe}G_5RB00J0OQRx%SV(85Ut%DWk!uSNf(+8e)K^cP(ypUb(mJ73t>U&^V9-4*$st{mUd7Apo# zdSw)MnKYMi^>>z>>2Co6toP)U)6<7D^u>drO-qvcEc)jQ=awn1&AIn7MlD-2O{c}SyXZW&M-Nr9HH&oJ7MN7C zHN{2sUPHgwU$S&3*C`xmkRpBYkI?y2;ZwU8GOMIzHPFOo1yU%hl-nmo@m6U-CU*U)2Q8-nOeWD)h|tE>J4Xy(CVqY zzZkyJNPE55b>lX4_vubcwX4pWCVQK$#~@YRX!694yQq{BblqWbi>y6W$Bo$(!%=G% zL(@`P${%bJwSurnH8M7CAEb2Ce&=Q_3+z#6?&NXSI+ zoXL~WhYufa)Dg}!wTfh6tZ0(xWkkdENek}Iy(=@{I~?{m!ysVJ3knIFI0Al%68MTk zVk*e0;lu{DOxV6}DmZD&AA|I8{5`d1^5dNoxBGT%`QD=Bxb1tQq2m!U5*)3LHk&{S zKF8>kzDAA!2gn<_QUz~gFHA-1R-Gl@F^@`tc0Q?rx+qivs7s7%hklG^{#@qG%am5cuzQHc_3l~IG5aup}cJ1dy_U36<_dLkCUu7Z8 zHF7lyb(NbV(6fFFi`{@0;r>r~F&$2KU>&9vBcS6Z*4^7cV>47Uhte&Mb4-oi^V3JP z*hfiobMpYyjJZCkgzJkJfB9`t^2iU#gL4<|YQ2f@(Hqq87oou7l9MMF(A(yGQP3`UB4Jhe}CRP4KyQ4YvUORFN%t&-G*rU744yDXX8bT{+M?ihISZBj6Hq>hIsbn&duD zIj@|jOG!$aKkrCAqHTylTpnwTepOI#kC;qjktR4iGLiv<0Pe=K`~{A$!1FHrLN<^4 zVSDd|fq_~1;G&Qms%6u)YK?K|uY0~}_d|!do=2z7+IReTPji@E4Uc5K_MBCm(r^O} z&9m)|!vnsRuw81afzoqu?$l48uE@m-9?%3H(;{tDM@$g^rS5cPh9cRo_bfc!v{wVx z*Vo@XH$LgvUSx9J9<3u@WId|wf!$!ht-|k#bEX)C9Jz>VfhcxeWMN?E^KIJZxd^SZ zrjspF(oaY;N9*>|Ui`XLSL41)#=9>;m??s6TU zYHC}uDSGj2)!rftZlR>3Sb-&Y+I!e%Orr{`63Aq}L3?FA_(vnvd5X{;z1H5|37KtX z6LWoiHq+qJUVH3b1g>*++1 z$8*(OI=EOL5)xAKL|Q>wdiTv=R_TKONnZ3)78u8;kbLZSCe$;`&_ZERyV;%p?OF#0 zVs2wEUAzb=-VH~$3D~7DF=s@XW0cf-9zX{iB@r~AiLp}nL`P2-0Q{LAi?HxRNXI=X zawhMwX5ASOA6vVENc_v=q=eJX>4`{`!>U4TLjxBULp~0-6@p z@uANOqRW_aoz)$8xKxCpR466EfypuE3>rDg7aBKtc@g@rUQOeR##?=bqE9t1T$4WC zZT4qrh)Yh~VUD-cAb2owdb&JAE!)R&zBk41x+HG??~61S?}$pVTk5r|Zx&0NKV0*T9gI53LbXHy}dxgc}HAc*}rA%?(QyG$Kfd_E318Vo}(uIs|e@V4sVI- z9`@scz<9WNy=jg2)l|bQsn7M(LvE6>5&6qobpIE{9|K6n`x>*TXmwChCf4(CDm^`& zthVjcx3syOIUCJ-0e5~a;CsYa4UPujT}X43MXxckvE>w7VB~Yrd#-tfc>HD4(}Jmn zF-plzX)5XWQVs9oMu}&=nTW&eif_6gQx!m_(%JVs{8&^}#0r-<`UKuc%e`Z%OOo4i zpw#l^%khmAlePrsOECfwhG&F+m>6OlL)!N?7cMA;A{S-72-|!_j)oG0JWA1Fcz|x1 z0iBBgA8hpE#S8hoHN0OIsFbDRm%okQ;~?~5Ue)jtdU@1C-XsVf@GEqVn5W13KZp z)6a<1OVU&&i?}%wmu=4F?!jUnOBL?PP`$LV(!h0~7L=9Mf*d^3?=c$-k=xFYw>2W-0Z^*wwTPFwc!pBslNaG8J?k@n?Kp^ zr9SLl_)P4u@-fihnK&jdL0n@NQb^gb#s-1h9iS>-M>`=wMW^SPnWzM~p?VJjbZb zy)4hFJ#Gsa^lE@BkL!0W0?D~1br%N8bi{oEPz^N5?7Y15AfS9Vj`xrptH)=nbn5z( zP_@2}LTwD#1v3i@O2|ZdYQCfi(s^rgaM<1_x-)+2B4MziL_IG)&A}Vd-D$6X$=0#@ z)*^>F2}nEY%@M4O10|}NH<+)SfA#YN2~M8CZXr=cFMdV7cN2JCbDo}VU9mNa6VwXT z?hKOHymlN#W2j-;@mI5I`Nw(O2thdM(Qy*NA+x91nw;;4n}IMQnrsEG3+Wk4M1gq( z)M=*2-r@9rAoN2nBUz=jNsEn|Q-i97MgdTEGGP4{+0PgQssvWkOn#edvX8NOh`BL}7vOh=0N}#yg`Ovv!9NYvb9id36sb9xOK$cx|Zm9s1`EpJMMBqMpBN zEIn2qnE5rOuV-niT|q`>kEhqg+v~QVpkS7EnJo!bW4}#;O4ai2`V712uaE2iG8v&d z;W%`b+)DYYSCfmKme@ev@{99uOu2T=wUOg8PF@1KDeOzBHn6mr(%~7?6-yB$K_u6% zeOK3u)q81qT(PpXBGa<9_|ibW2@A=WgNcoxtHN&j<5*3c7#q!(i{=}4&z_2pr=NMU z!VaX|J+3X{86mHOirJwmBwKYUV#v$OG-T&;9qy??I>)iYxLyExc)sfJU=FBiyAU@? z=x{6+dRIQ*<06C<(#bGi*TF-nRVk8TH7vP--5Q?tXBSm;EmvfDAj^e$Ev*@ zLPy-kS5oob=dysUv?HwKuPN!kMc?RamSHo2LEm|`y)0TjUvT+nOX|N~02YPbsR&lg z96b8Q8T<6d{$}e3d%2mC!3Q6MauWU7GP3XAR4nxwugeG8){( zz;e?J7IlsE!FN*=_gPmlpPzWVnWkIyY@u(hS!(YnBVI8lvbJf<)MR;Km1(KEc;1l! zuZE_%*O}k$ch+ESkWD?XC=v(@NvPU#gpM~xmS7n$721r|&u?#U=O8TD+gn>j6!XnD zs2ULeQ_!W9etmpO&bRmgLRTZy{ul8A+}#x&*Ywo9;N}Tvo>5)tV?4Iwbb(}Ciojl1 zGi+>cCCmR)sbd8PzxVd0kn>w7(Sd#~*;H^BWa&YVEspo^--C$K8oP)5Q7zekfBNL( z-RhNkyNmevA~WS)pnBWd5zcL5&VlN$;6FZ8U}yl3y1@$6PSNcVe3(zw1rAP}5aDEJ}Zu?s!FM-5_vu*EeZ(tDgpdGz=b5cWX zP9)x~YN(2W*Sy!OV6(~71q|jV4y2+)G&%?jt2*eq31OUB(*6q z$Eble$!*?CWgNjvuDUg185Yf z@ztsIfzh+rEj^s*@_6?%R1l_9j0~ z+?@k}H23CGM$FJi>VunC{(#s(>}lDVRLoY9)y)*l1@peUWQK=>wmi67qO(cJNHI;K_<`bdW;DRrDp`JJ4TI3ytEb(1cc6XWOMG3q5Xsfb~KY zTL8DXk%Jx>pv>0ZNw%!o*zzyw^mF_C*$x-g+i$78TDYlx=~jj(-LJ`wwp!GiUpsnY z%TAzWdtZAFvQ29=pE#lDcGzN7Nv5ugVa{2C$_FKbo8FKgb#NT72@=FMBJ0F%;LD zsVt})o<&!=4SNZ1ogq;XnGhWvy*dj_gYqKD)u+;YL(Z#`^oPWT%@KPT4~56c()4S- z#|`x-=W`HF=XuQPp_$BGA9P|Va$a%AuA_o+N;|KmY!A>WxORHbTD%fk09oLCyAs5G zyDFT7HWu7s>1II4&Cn{jQ@%5Kq*9Bx7O6mE3mlt2WFObfO6EqE(`|ax!Kprm8rh#e ze;!V7_77!)SKHW17sx5Za;SlP903g^soC3DoS_9wV(ve{aKU&2*c&j7keJSPt(33S zi@L7<-s=YQ0?xPu;EhcRXP9z8$vK&IrFr7I@uHb-sJ!uK2^SO4x^B`?Fyp{6^i}j= z+oITH&8js{M3qI&Jppbl-hvA#W)8#mgG z_aQiV>sf^A9RY!z!so^(g4C;AHFCTkj>fnO$dkIg)#y z#`l<$;#UBk-22*h3rri1e+AACcNJ4u%>XT8iYzJ|`KA{ugkH^bw&PkhQ4eZhCC^Sis!?{Mltk<-%9DM%;!>d<2$8piyd$jT-? zKaLE=hc+jnw;18}^Y^ciS8}zrT}3=MuH9jU^MElZYj$gI4e0)Ix2?t43a2Gctx(3H zBVr0K4B!QfP5v#Qg*p7XCsMMq!kG$J#^xtioM(5i2j&<=GlfsS7!Qv_WKzKMspF$+ z^ni+=s@$ja8lOyhTN`u&Z~OXJH}_k$ZOcx-8XAVLoIl-jOpo1&@q(s>8rt27J3tbr zTVRsiMTaBS*X#YO9mAQ**qzpw^&F%Q|j}&{;cN>IIW^W>%oKC zRgg10o$?AtDqqw$G&GR<=ub^e9Wt9l)6v80EZ;ve!U5C8Qhs*Ql&kaS;XL{=@4Zy{ zEC;qVRP^EP4`FmKNO(@TW&>3on)MsF6k95*0nTgB(VF{LA`L zOIB8vObY0u(%QKVc_)6#A;??CQi6LyS;yV#2rjh1IrkUjh*5r?(y|95Om2%gc;@$r}P_y5}40u)>gy?yfa z{eYz0O5G()Ex~a<^B#fv*d}Dw9u~d zF@@4iXm{wPtdQ7H7Gdix*BNO|L_gp6~NB~L}aqEvO)z^zLK)CGS{2f zGgCeg{wgcZ!iHmGW4WQ@q3bdbgX*<+8|E+>&BUkUg`*?k55y}CS}z^-1j9gOt%`=2d+8J^S~t&9AjC_%S!!K zZoXh7fd+*tlUih#=~jX-jzg4{%_8Tml>N*Q++F+j9QX5@C(yqKI4SHp7{E8<$4gOs@FSZn&%o#wCL~L@hpQosk|xqPb^*#4?jOe zg&bx8r_%nuJ2BBXSUpq*9WfrR3&p8jg;O58J5w|e3;$YJ4lZDIj*K$oyz8$P2TJTW zx?^#oQB!2@dWGHO#6;7CEwQJl<~JN@hlb3k)m7DFS2zhrcdo3kDja@4f#)Ryt74GA zmv&^sRT-klI2E$cF07@$d3kvmz|o=09p(s}tA>`|{8Iw)=t+VV>s?Zf+xNJwpOfHP z`?qIBaK<0S5=)P+Y7agh)A5e^K4q2vf!RQex_8=KuKVMFc2KYLiNw(&5Kq{}n1Adm zVTKyBgF+AfhyP>NDK7%i|2x>DW_@XT(jDf!h|!%V@KSFAGgfV=VF>Us^0d&UHa6Pxn3$prQuTa-K+f(;#n3Pjw73w%r&Iz59PJw*z4zzV! z`P4!wP*oyBBcuvCJ3A4lg|zZ2d5ka_%*C_>XN1lvY8Px0KU&=9JVZQT?>V^Dt8sLp zDMCo(OO=NQ+%Cebs#UJ6a&f|HZ_frY*?QrqJi95!VoQ&~3mzc$`ryxH1H5=u`$hoP zAQ)$x_2Pse6Woz^&uuK$^BT-88TNd-HGH_ewAtL)n_?VCmLas{t_WQiws{R32OYQ! zq!@IOi2}>5Q6yjz6iaSEcb@)r`Tm2kVB<9D@LALTq79}AYT@l0#g9Jya+ zKQmgz<6lCy(8YmVvpANdyuGFF^R80R(w zY|1FK_e~DMaP$l~>~LnVDpwnvi}}3<@cpy@sLi0; z(nfKN>f_{ru9=7*C)eK+4rLg}$EHukQRIMcuB$P`BRpT>*OfiAwg~V<7Tvdu3iZ#>v)}z+`Di4>m@;0Me0FDno-y0*J99 z5S4NMXep(1B}494e@KA>I;dL##V42=TWqQG{eNuLbmJmrI|+%FrQrIbG3$%a|b(kwKx(H|z` z((T+{L3J0;QH3V?vsXU?6{@4aFrIkQvTrr&Hagf8H8~97UHsw&xs>2)=>%}U5`j@k z9(#^QOxOl`Z3CLcjc#=?yk{xz@SdzO8FQ?N#vrQ9u)7;#5b0$B zB$$|(kPZd+hSHNKU+(2V(nqIZxCu2Zv67&YnDh>x*FZm+o$Ql;$a55V0^h&vDLOYA<(hNb>GK1|+|x zFo9&SEdbIM__CJQ_IJ2=oR>deyyVZ=xz#(zV1Q8@-3|?l^-u&U4fv6a-F25IG@jcj zf5)^AW^_-~%-o=$paAF87xbJQv;(KrV+9=^QULa(V`iTH3l<4&$fmF9+@Rp~)wcPp zp<2G?E}ybI%5^cRfPgDsU=Yk|0iDHY$8gM`HYaDG{YVWpPPzy0B*ck`SMM;#Wz}5j zY_}zBaP@&}wQw8@_p#$L8R*8Q#@>t&+C3A z__l^sd3r9ezOR64DIfJ2a$RdR=5cqX0d+7TPeE3e)?wD(A1KXKHsAvx`MuwQWW_A9 zuBd=rm8qASnj6^R#V5BY}%!MSl`GEQJE{5D!)^35f-F2HW-mV*+m z^Z9N>R66R(GLdQ+gicqbi`2?Ax>W(!RdFS`mgD%dS;cD!IBM!nCxse7$9D z5|@mZ_IM$kH@}HZOah0?Y}phw(D`lZ4<5X}efxG-nOzKQv-pm&tkA=4xzX&`1T+_F z)b6PRo?6`IhSd1D9Prq~idVlmg6>M!OH)og>$)>hwma(U;JQ?$u8Q=GX^P1HR%{l@ zd`my8Cs!c^HPiK;q(||^UukfS27?g#9Sqd3_P24eDC~r|AQ#20shsMWzz|moP)8)Q z_N`S|&FYy25smZh!oXz0NxxwM;cTb;r&GjPD$XP7i>tdaGeNeAi8nm76uU>wHqiM8Prv=B;T_-5ud4B zRsUEw_ZW;zpQTO!RlAJ^*PDRBtOPD$rWN%9kZUhYOh|UEtZZwfULe_mg>Iq5s*1keC~Z9sq`ks_Yd_Xp*INp{z{UkD4msF;|24V!@A&|7!zq{xB;_ckr9&>edE*3J-ywr90%4mq&HE496j zaI0sbMC=;?*f&&X8b*$HeR)4W672b>T!iD!Hy7kc0}TbT7b7(|Hk0X8!83c0i;HWa z=~Q79DQ8KJHnMg|N?z8S@#$>>0M8N=|^<85-@ zYrs3iIPGpwsBLe&yTB!1dKNa~;mj$o?~f>IYW7C}onSI*Uokjgfw2sMNtN>SJh&|7 z`LU!{IU{E7&oBHY*h!>l{_r7{ClgCA=g|yIksZ%KSDtJ}Uu zp4j#wu*%S$H-v`8#kCb09nac7F6A~UD1aVHN}cPF2gIP#VwX$a=QN$Vp$$NN8}L^u{L9gVT4O|9$j0mNRxCtCd{PjG5W-&1d%+tc8g z?lRpFlc#-m<@O$IUafkko7?Vou)m|zN9FJA0qs0B$F)Zw*yZdAat)x8cMtZH5negIQ6u&^AOSb#TQzhTjDAxLn7x2!X-}dvt z*HZd+KjE^8fkEO|4t-KCQ!7!#oYsbxBot>-UE^ToOa!W(BdHGD+YMd8t{dB7*dSwk; zHR20}uB^BMM%C=-?d6wE>=@_c<*g>Aq>Kq2=*W&Kl z6R!M5!Kuy1agB?lxJhF;=zuItUyBo zJ`CBx^47fKV&%>x9_k?S?m)1%T&JLr3#JzTBIb2_YiZc1Co7&w>8BbK1Bdmca|Gs7 zD`V%SBkoE%Z}Z%debyL6g|vpg;+e*T;mCa_clWdUFJA^^XH(VIN`~_f3>uHj35Akz z^^n{5wnc5Q5>gNRYPUKwhh|q>o$W9*HaJjDzZfyKeSOSH5G%<4I<6U|d!1-su* zG;b*uy<*bVcE50`LjGX?J-^)~2cBwX4@?{lN#r6C(+ioYHu>>(J@4xbn+8_H*Q%)H zAb$dTK(eiAp4P|Sb{{LD-pY;DHroRU{hFvXPDfzFFkr8>7Zv3S`@gi=Uits23g38LycpbQ0@Xk~hXHrT! zZCV`F9NE71n?aRH@!NU4GP|iW&u2PKwzpf1JCjDw?!4kAe=7{^KZDWShU?pKd0}Cr zyqCZ29p|3~zZI7(cgj^Lv3wi8rkNeVtU7zoy)^h5sxc(?S?Mz0SpxIAatF!7_o+Ak zJIn1yNsV7H2-tEm$%YVNaGu4=pG)Fh#iyM1D=QPggZ<@o4aPS=Gq6AHd|5wKea8QW z+^_zApKJ8`4p&nuT-uQM+O^wNoQF?|S=5Sn`S{q=(Q^iG-o9PJ z+bR^g6S4thJEMBewPAOZAB25@t>H}xi8}!ld><$U?p_u&Iw2jI;~gK*LP#@2d;2e2 zs{EPJ#l3i^Jv>?!AN5d$3LWr77IZz{p4h5W(y8zs zs*>bzwI^JiY*jcsFn~015@ZnGC!fC>xBmt8rsn6*uy^m?sV~Z9s%65h-y3TnOn&*> z)_vtMdwnp?!;stbjgh(D4=ArQ9DFFWBY8_7W;faLD}c=4LtvoM>iA<}Ps)Vx?lL>C zeXK~wDO&)7*Ly|~ZI+>-p|))N z{M(c_6F-VtpE_H5BF}E>>>YW^pv18!p8G3&Z@HCI?(#gjbmjW>$FYKPT!Wtx+GWyB za|c)*y=R-_zx~6|sFdu}&u6$`OW)_V%}f!aM@kwJadrby#PiinrfH6E+u zx8MmM;eZe5+qk;+^2Ljj-kRA)Go3n3D@7m4YqB)v!q79QnqmB47%Dv{XNZ6uFWiOC z;gSwTV$$AfvnUap_I~)vUERvM5szK|xZKM@)Q4jjQ#@?*ApZ5z84*xO44$wzK`SMWNyYm`=rCEmyw*B8iBPcu|tGReYq zO4y-biO^A%KHL}IT6|w<*lc=VVYoWynbuVM;wSiBBJe83XPLuiHK7WO%?CYB+FeH} z$hEe%RzRR-1^W5*txv^!-7$2M{fm8W7|wv|D>;T;`xLM>E+Rs0e-lIQxMS}3$m*+Lyd54RyJp8cbXFqarg%CD}olr+J z^-=j;dFZZkfLyXzgitjAkmao)hVAO?>MA-IYX}Y&cH1=P^0ptkc#PBz{EIYMArl)k zN7&gfY6}gn5Xs85;{BQ102}4V-@h__1>u~0d{h4H8J%TocxpK@fr*J+Ui()srzxhZ z(9!)&>`3~imKna!9Yq9xUg77PGg`17$9uBHI_5T(b{*eed03g+l`DT6ml0NmS7uV< zqcT)7CXL(U1~+EA{tl}oJbdpC_%iLgTBe<-=l*shfd6Z-tM_`L5Zf(Xw3x+x)XYmQ zW882*Yz2mdTm?qv#h-6IP~yIIoAy<@2%I{H(C_7-xk!Sb7v3j7b*_ADv;%f>ki!Nt z2Xpg_s1!LTN=iYc{1g!3xJoh=Au)A`W>RHczQF62|mg=exRc0UygnS6Q1IVaL z%XVxw=WXJIUEaMF_vLG&Wn#L(#Z`DWP$m_X@4h1&6H`x0xwS?S=-=%0B^o)1cIr&B z`of`q0=%T-LseSb7X5cve$e0kOMt7vKR;X`Ypa?DJLIOhmFqg`!-R*wE(ci+mis(> z{}FCd4@^#>C(m50>e$Gw>n>)Hi$+ZNv%8+K-dS~-Y^4YWw_B{>Myk!2T5fpze-Q08 z?_d6@oUcAfrkITVeL*Tx&M-N7LpElc7XC;B(q;e`^V=NZEb4wPYrH4&%=?zkPL+9>;7u@B>CMJG{G0AXQj7Xbh1^D@W*AqJj-NVyd-NMT@RW08iE6;Qo zFsiA!=thA>Oc$~mB_AJBz5edIE4iVFrG=5&IGJM2sH)wMEgm0Esdf&dppyKKN7f+K z)F4UY51AEP#WiG}y^f`z7IF0slzZUqq_r$LzP)n4Ene*RXdN<9jpAwk3;gQCq3F_5 zQlr-0GlYbaV1`mKH|K`pKo%1%B?sXnW7?Q)sAcg`-G#P)E^jAb_ws z-(Ulvp}Mj$0kho{K-$^<9W$_Timwf0Y71jh4rz-$_uNb?>g_qFt2Z3OYid|21=oda zY&b8IkN<`ldsVDiSvB=vI4|sWLjn39d2!nXg5ahw{ za_@t~+zs2kO*s%hn&2engXL%ca2d5+p73mr%>B-NaR}+P_r4v}P!gK>2c%?V24-fd z!sw@o@c!cftHn6%$f>YR91Zhsawle`aC)rEA^0)GaARCrs9KGrx z@+xtK$%Z+XIa{J8e#1COxr_uKJiw4~H@^M-S@Ju2&f0pqvA_6I9s-eIrAGp}^=w<) zXS{6?Xv^$p?#8<-1+GqHG7f)E5cl}PX%GNAA~yR-nw)Zg80^X&7M}Cu_!k;};9J)( z*1otB6~Vf84z$f1>S*egn6LeLM3nAf`3C1k<_E%I^F^K+`YdkXA+&DG%hPY;<0%Mf zBskm`#KkA_GsH5L;Q+e^;BIszCcy%jyZfDMyYKtC|DWD3`{y=*>pYKR zX3bh_W}Xq;Hup52b-B-Vavk7AOJLm1`^u%x~kz za9PbZ#>|t?!g+&DMqN^riyrup@eWL>t@ay;nr%t<8?w2_7 zykybPRE?S+_xLLr>nxS?b;%$)&1B@9plFy*_D(5YDflq%+Y%fOtkwJZ(jTwH0{LAZ zbjI-t*%6cdZsny2(ZW2gJCw--dHiOjXsMq!!NXN@?YC5y8 z9PbjmpQ)dQh+(lahe9c(_7XlnRwdQ+^bjUr{N7{ciiAlQE+Q1%aM>#JeNV}D1dH&DqNRn*iIP|wTfx2kBwMwAAx6u7PcC6Su^0^z2 z{Q(^|q|DUbb;mNyDfq&2P@*L}pT^B~7$vr+Sy-Q!^*uT_F71qs?d^!Ne24xsDc*N} zgU{`4>Stt}&e!wT`TF2|Enl;)94>rz`xuQ%aj^x1Nu#pH6uuP~DHd^oM&~_Ka7wus z7GgolxqY`Fwl}$rHh&RN5Y0T?6DB(|ZsdvV`SI9bBoFt$j7T(_(ZXAJGD5y9DeZqU z-lkr^hO?2RE8+MJkJeYo1eiOH2=^lERm1iU`eKWDo{I~kNOlt|4!_8?JT`hpEfSzNJnhCeHjtUsAl+NTwn;%$MqfGa5pt=(n|HBp&fA zz@Tp|L~m}L*YkaYD9vTpw@k2F3O9UXE3x0b0eZ`Qz=F!ZGokaF{qB=D$XeEIuPYw1 z8De)qB0(a014#_74vs?~cwh~i0qGV{0B}*JmN{|B<39nqWHw7k&AYn;Y*V?FN0FD; zb)f%%IfF<1U$OuvfGh2R?M68Q%zgN-muxQ`i``5wn9un=Xu=xOtfFh(} z${|ZG!$}HejbL&O7Al#fOmYJ7o)Jv#Tb9^V@opM>v2gq~bC*s?D{`C(<3atYB$ru( za8r*t1vPaGup-*WJBsMO+RG%?2%AmGae_zAZlPeg>m5!RFqBSzx3pi1>8oWBXR5+t zta3&)TVz@Tuq+oc@XPDmZs^c*b%Qu*KwpMg<TWMCuf!j8l z%Jzd1gBni<;Il_WWcfxfjfCL}S9P3XDauC6!7f zn|z4{Jwhj;HBEXv#0YwSjh|vH*c;?`^`h^F&?{e;l5#CCj{#QA+~X4;7Rhhz6DtlM zUkUy0DNFVbDlZN<1fMA8(KUFFR+t^!6BzipzqPm5)R4@5{rdL*a9I<4)+y>IH7o-^ z+1{XEIlnli+*xEyYOn1xEQB!apOo~{19Mw;rE}esO4Lllda>gnz+W;oS;*HzrQEJ@iUaG$)(*!? za6SCHG$7oL-S^GSy#7yva1+FX0Dn1o-+9o3yfVq~s=Gi%MrzM6ok>OuVa_ zK(lVQPImG8s|0ULtaat&77ax8?e!r)t(gI?){~Cbv7;yZtZa21FOY&Be=ek;_<;XWhX;kK44LyhRpSx6%iGYL80M z<+eZSsDHRx&m-y8@jtwK5R~Nsxq)=fiIOLcReM-+A|hU66(pT&BNG6B-U2cSV~qC- zA5x(dC;XP4PK`zU?8#7ysfy7^UjFk7178=&;ER6>-wbAVI8BZKt#-k$TnnVyRZ0nB zAr%!&U0qHyn~ho@BBRiXdieA{P^kb7konIoRnnTDs!$v~a*RfS~tm!emgxgo!_e=()s1L^}H2xG%oCJ~Wveotm0zGH8loHz76A45Y1_ zBFvI&i{p)EX-`ou&^JuUUx*`D$hY6!A!rPAdD_+1nT!?G68PvEv9AZDZzuyPpcOFe zLxRsVA|7ztW<(aghv^c0eOT@ywwgCSlE+N6vUMr^c{(Y@4i9B=c_rer} zEv>i1_xY}QVt<_0h_7|`*8BR1lk^@$v z%WzF03ya42NME0%l~YqFn4Y-bz>}RQD|NXhkgw~CBLj2~2?B^Tv;;YN$9a{$l=Y`9 zEOihsb{7hDYd+HxwGy%!=GB}k=3i_KXDAnW?Ku1?2t{A^@%0U5?hBy}|MO`$Th$hk zB6)tgSS6d$*=odJg@-=W5nUu=f4*Ln&s-njQlcx>)o;Sx8?KrWR#D^3e<_a7cyYSO zR#7mrv%L8@Yxc#=K<2?^_fF+@d*%%s1_E-=&85Z^fcPdJSB~*f zG}I8p6JJawy}<;kFSkq|jaL?-8xfQ99F+~2R%LZqnTc!9p+c0_ej2^;3VF_ogGcU1 zur6QQ<*9;R8z|N73NG}ijg2(S5R^I;zAkQS8Vp-oVPaOZ1cScc zP{{x2Nt#+)Ya7hUU{2}^?-C-yfFZS70ER*}@zop#2hlJv6atqqd7&~CkN(Zvchrk> zU_SvQwB6Ye%A|9VPeep2pdrAox+fzkSd=?ECvoJiXMU!YkpiEtxFeSSSl?n`7;lN? zW)$?WV=@|4n7;r$hx7E%lq13`QgKm6_s5Ti)T$@JL!z`36;Le(1>DMMzkxUM$oltg zTlkxD0Jq6vu0O0k>j`82Wh)_vdy2E;5|EeE^G~RMm@IiywdOY)Z?`oCx&Y~wJyxSZ zY%#G6x)u%w2EQz2`JQ6)RZPc2zIX-`kIjs+D%WUQd4}#xMPv2-8beDG3t zL&ewshSFuiN?M6c5%fkGK+GIn-9I^jcn&w}50%v3sWn&BdGvP7GxLuD0f_=Dy$R6$ z>^#f!La@v1;_SN4pn@)Nliv8}6}F}T>wqqeXJ%P5p;MSL`lY@WjVxwuC+XX)BIj7U z_@kSfJ)d!(Rvuj9btxAbGVnTLvkdp0Pa?G*uy|24e47v8GQ+<)Cp?bnr~-t276al*dU9>CW=$zSHIPmN*Ae-7B5Xi61vd0v_=T zJ^UHoH@`HbVe(Jl{IQafQg6o4uOZRH(i;Q}AAV)(0-&3qVSiBHM7=fBzW~(c(Ur9C zGU>(xhWo7q6yq4$V|&~;!F}rEus>1h|BQ?44-BQ9e=O`1u}6?#FUj<${PCZHWnB=G&T92SWR(hzTHD9Q&I;qa|6b6Uj-~w*f)A%bc+0@ge)a!{K_-WZ z2nw;1hrN;SE(glpZ;=zks-^l#7W2MJmcjGrkBoJwxX{!!$jXwv`N@5gwYrGa^I~}|Los%bG`1zY zYoTxke?)70INH(pTjV6X_xdW~#G1L5iuyXYb5TZTYr_Y8PDstk5Fo*Po8HVE>q21; z($p|Ke3TrU0SHGpSq3a{dQeg|jN~^hfrtzd-*MfdmnK)(@61ohq+Kt*&{6Zxe;o^V zp`sQB1cKEm1^fywC7oTysYC{$KMBWGc)MVDe$H8BI%yga71fg_EjB;=36&dkcF2w1 z@LQEOoIsVkqURf0bE#U{pzVB;0a-e$2E-;wAm!Jl>Gj(GW$*dKY314%Mosmk3-qry z`W#0=T@PTep)b`RDMeR0u|qHc;;J%5E~^nKr~Nir)t{`S0>hSbbx3tJ6)K`=eO0zS)v5NUFx=8++`w;)b2Ny*9f3C2|!k?hw9X*NWV5H*X3q!Jf&&;35{_Ov* z-xK6?aUAY+S-}AmD|}{e8Luq)93mu6tn&Z`k;OMHjp`m}9*N#!f21T(Vi-78t)T2L zE_7tjDKGe|)O}HP=edea)Asi? z7{^78iyI8L*!EhthldAW$3{fGXH#7w4k`Bmv}1*7H68Sp9lpk=i}+Gj#t)ie>&Dh! zsg{<00V#?6v|dzr z^=jrrJxN*~UcH(5`IiFKq84+%63nJ&prSv?Mw&V>wuQjF^uP2`vR;>_sGipD0x1eF zS8NzD8!;4EM4};2+JNAH28@`rbl~15f7JPDk@fTSK`r|PXh&$tn4f9rgQ*ipCqj4r;u}_CEO^VtBY8Kd zsBCxUa&`At?Ehsn?d&-3kF&|@{LLD&>=Do&9&6|rBR>V`I=OSTa_zkia1 zogmsxd^n|Cz%emiw9_0Zg@;YiVf#zyd@ zsTRcaaPV(Ewcq(69~LS1V8E~t6HFXMhxefMJUeDcpB0{c5T(SQ?sEHU5UE(+z3=Ft ze=Q=Ss`w7fGfm!jv@K9OUYYt+=nXuh5+``L_Ab9|PcHXmbNpl8;Hs19?rQozL?Wl5 z{Cn+XFr|sQ0uuq0J+))ca;oGqtTC{$KM>rz$FmRJb=xDPeW#h=7Jo%gPu~_55yA7! z_2P_tgw+4vtX-8QMXsmYPAE88iG7#molkf7TdSolHVDS72EAcG#O^kc*Vs86Bmxn8 zuyz~@1*|mS6nIj#5lj^&wwu3$)R%klAk)lG*E!y$Q}E%xJVOON=PLRKiSUa}6N#Jn zbfT}Dr3Z7=0T>Hf{Iy67m)oPoyIwqoaPi=YKGpt;vqxFkBXG6Mckwey|2Ec9`n@JT z-^vClGet{S7?f*s2zRA6q|KqUi;%DHN=r)}0g;fY5XePx2>spHi9v(OpEdXPAFFkL zJE5r9($cb-N%!F8U;q)=6Xuqd&Xk}SlGxg}2JY+I|5-dN=70V&pOpc}SKqJc#R9{D z1B5P#>g(M<01N+6!BLya+xh(t_w0T z2f2!Vxpf(%lss6N#i!GO#KUT_O6B4JA$Gv3mG}<)qaC}8U7p&uJpY2FL%~m1UMc+2 zxCu`#f~hW+*O8sYdc^{9a%hWIJ#k^_W(1H<)PDS*B2irNMgm=U4CVUK?lOvQm*jY> zQO^$o+mw`b@90R=N}_AkU@<|_?@!b5DDR_F`1Q&jY@F@{3)J<|T#!oTvt#tOG`i$d z&cQf=NxHIMyDRLs_5jG!3P;z(d#gQlaggBVT0^5j;DzJV6P|KyxY(Qs_(rE=o%o{S zM-N`w1ga5iOEWVup~!@*+gHv+sGazY0LQb?K2qHoOM-FZPxd>tLM8f}_-7SXX298m z@{q8az41$>f22_K0T%%n5Dfd&ad8)-QA&ktSglg(UT8=M6N1f%o%Pv;lMW#$OhgJw zN>{d^{0*5k$nA(JVXwv?Af!3#c++kSLwyqp#UoXeX-H@FSjB`3yn~7bEOer==lbtpk6{r2(oSD(o$-B z9BTJ_2Ro70@23p=^H zyL))ePx!Bu26&F&oGx2pLXw=&?96D;Pr0AE_}Es@R4zI8P* z?N4J93lmSZS#Rvm*%SbQ8Y}_HLRgMqNN67~n?`R!IPB@a_PV3f9NgsLM|%1uXF?Bb zWDz-)D^2j{M6D(Ow1DwS+Lily=!3MOL?LaFweHIKbo?N`py!+B2ZawED#q!ZNUnw( z3}(`IL=|@I>>yns0n)yZg~3MA2C0ZDpPTTnAqC!=R)O;=7Z@LRmU^7YcuS?gp9o1H zA~G^KCZ_)E7h`;oPi;4zA;nw-JiUZ_ zsG#R2g0n}j=SOK>Wo)qvc^k#vzZ)W*Oz(*QExV_LbZc`oNnpsx7|B{DrzFZ#d|6I&J# z5h3uho*p4Pwe$taC6R=w)>%2tt~YJ?15^wt@;xgqfZ97 z>*y3`!27wJS)mE#sHpDLjX()d9Sp4peZDuhmQTE@gg9{#3BJ_@m#wMid0^!~IXm8! z%Ht+`kS8cmE%mR_gSsh>&sQ6)nLhV8nMfWXrM542uH&WF!AKlfajK!)zJ*k7O=E=r zIw**AuckmjhXDQ;@ZC!CaXWaK!It~vU7AA5VvcHAGhh|{KLuC_VqY+ubHh3Gj2%z) zA!M4ke-7A%khS?&u+e1YmfY;h32Aorq)suzx?d8 z8r&H~yrl#mK2#v(s7FFpx`6ag4o$t_QRsH;JmlmgqDmb^x6cM6#L^NKCSmstb#*;Z z8~!y;r~1$l{PVuVhH}*Bsy~_3H#OzEoWBnW4pszuBT>j299sjBxHVxHPI2i01n8US zi!kTU$6L&{@}iU)X`?{F{++p(&`~KwU-yJ zCySk#W48LGpvdON1_rnRwT}0P;(_fI1w|1oHV;8Euk&{h7)iP{t zP|A_Un6$Ll05IyIo&@a-ad1E%Vgw}uG`Zd7v{XV0oHcP ztGliuCDQ0|gpJ~vQ{`Q)PsA!UAUDxs->u&Co5C}&+&_4Q?RPp%o zoNQ?bH<48pXTZG7i&F6!1^j90X>DNy3a+f63u^CP3Fok1X4+=2WHb;b1Bn%MbC zN4iSM0e6M%KejuZ20&Qgg1Y5+cp(Z7f?@#j|5G}_WST^SJ{tg(AyZRz=!-x?E>F6$ zLKXSw!Gl1F=rAA+X#o-Qj=8xx=uFJoUpc_PHVvLZYT2JW0NA0< zpk~5j`~XSD^)}xAml#g^+`_^{^I3LaV0V_JuR2utZH#+@#}osbuNGO9_N8z`Mcy>& zidA*~JB-`5_KDgUcJ=)WFi?Rx({rXljC!7wGtU$H8lYtS5*o_(e^nZ!WCTZ%0TdZ- zAjW1Lb@J10YyK)Is2{QwvGIhAiW3C%Ll5%W0Wzuqt1(DDX$i31j?Np)-IQQ>sJO-iYO|hAIwyId{EjImb1rRbN zG^TRULreEU>%dCF^kIx=Y@C$EB!-ol8E8E?Voc1U=YcTQj0BGO)`86rcm$$q@aqz% zKby`WvmTMjysVrFO81?wPi6{g+x(F;xF&O}eEV^gKbp{wGmfRocbhYB(vt=?-T zVug)}ImXIe+Q(M3K)=q~Ct76A+{StNa_qa~;ddX>QGc+zAOnMB%&>peC2^zQc^PR- zeLaZpcVV1#Moj+yh`nCD3d*BT-`8JtJ1a6#ZUX<3h@|Ahr%$WzSAjJInCt(j;43!R z*rZ6GC(!#yy8&VdqX*wnzu5J4jXtxI-O^Y#o<+7yi)Qd%aWvB4ZgYU z`cFFrRFY8EG=jbj_0Fp-NfQA&rGl$*aV!w(oBjDO8iOA9!O?V_C;LScdZR+kQ!XRf zdi6tp_Bh5za5|s_0AfiL#({j;@&-kstG@nj^YF8Du*~-8cQ0G%7rL4{#mlug@#Pc< zy?JeNwTquD$_e|PVlx)iKU!loxVqTIx%umS!CkEQltUteY zmGXA{;?h#g^l&IG!Eo*@0nif(iunh~K#$|k=d>@Y4o(lZ|E*eh>-M4GB9fzS5eI@0 zIFr^m-m2ao4f2XMQvVbnH)6hD9q!q_Y~wIO3LhZ;cinOY9ROOp zo}{Ftu>M9kWBa&nOTolgv~K7amA>-$5mlkkIfeC7LCd`CC* zbg`G7o|i3SC9_aL7xf}wB=zSar&c8BdmuYeZeIr5Npkpr8%STn7Wz7*^Zxy3FvJ76 zZO!Gfjc++hIZk!e~q#f#GKi;Bl*TpN&iLyfu z1WYGyzVG~pZWIhWFwB7-PFk>Lf|@6GMd*-0z9|a0Ohup;3q3U0Z(W>)0s1*L+tYQ< zm`HKabgNReYy$z;iMQ_D%Qcv6plxyF>tT#j3so0H8tALlel7 zW6^FN9xDCN8X^sP&wB%d!1qsBGMjn%)68Mui3k*_Dip)?{g9ox;!_O*nocA&bvGP^?rMA@#g<8FtDM z*RZKhB0X-OJ-!c30|2;>I5MNGG8|{)++BaS?{+O7!!87OdSy9Ohm!;AhCf`Fv^n;q zkSc{!`)FcIW~w&FDw}b!$9IOhT6s`i?VSpu1S`=MBU6t|dni_it4`t^rTk}D^0@II zT-?+~&%TxOCP$5BWx(j5aR{U)nmWwU%s1d#xNqe7NKrvSrrgc|+@y(i+cJ#e1bF*b zeJRnDN0}9s;9)prO2+ez!ECB3<6eKlYtL+q8Ig7`*Gnej$;vReI+d*CIR2F&RR;aF zfP2=!R0k>@-G|ju{2j?g@>F}Kzk)ZS*lt2I9m&%?#J~NbfR~>G&17aB8#I5cJ5Pa* zbPzc|K=xXQU1SmcOeZZ?Z0qd}QmgQ&U{(dK)@o&MFgOxf6AEb0J%SD#px9D$+86+% zQShCv-Ml#4efX~t?H?1#`CsR9&DYzrC`W(2ta{z|aiBfaOD(6a=KCXrUgy0B&yFy_ zZEgXa>CDXg2;NcX^IHc$Z0j8j15ld&$5x#C{xPTZ%Kh~}&IcQ0-~J^Ckd+=eHL^aZ z2X^w^&o$*wJY{VF$pZ_oT#*X`AC>z}0xG(-8<32b;huvT0opA|tR}8Nq`UDK9b8se zn0Vc>flj_A_nWCtprLWZ-}(Hcp*?1~cl)1KmoxuPSDfF zVzyBS9cyO}2r@vF$hMtWSU;3Dkas)i7J2k>w(CVyRhqp5L@*$i*toJLC>G3jMjrI7 z%RvXii}IX_qDiI+)``RQi!Zkrp_}zZ`Ac0f>5b7tlK)ugcO&7MknwuFNqdv)darLZ z1lbZ(C6d$hI%nwnfT00^jzS}jE7g;exCrP$lMFY{Q2N)~7GKq;U+A%jw55Z8dVBU1 z1QcRQ%JjC=rbZzs(j%4`ZIO!7Og%DjGy*d%BqXDAcXOgIH84|+_b^oKt6*btt@_Kv zo~JHn0iafYY34%{n=9_il)pW+<_C=Kg^^5<)zz#DZc6A^o~hD+wn13@@fxYh#?k@$o9zP8zjSXn( z-S;MtnlIawgD0i&+xS={lJjN&V?5SSwtJq<`W3h24Q`t?@0?8xI{GX^9y>Z@quAxe zIs(ar0Q8=oW%&vWwhZvV5X2k$@)`G6k~jFCh8t!OX~};oN)_ z=sJ9X^f|r0j`-J1V7sqh@5qo9x6i}R&jBzHT6Z4-ga>~toN5@=ObJ%;2rg^R|LaAT ziF~YA=0(x=Hg`ENpSAh7{SqFg2Cu$XHm z1LOq#&0&LCWtygwS4>T*KXRr)GA*`9qc~@|Qw&?Yx%!^(?yz9KBT;b5MG~s*;xEZb4DpwvLT>lm7pqKYDTs;WnJ&{FF$I4xO zj0Q7Dn3UBL(^POrF}dR*>15wNzuDQoqT&mR+=oJ6iL{;jF$+PK`e{gzCE-PXpkE-8 zoF?6WWbjHlWN@h{>7`g2`|azwj|YZ7ug$S+oS#3>cA_wJCtN(XvpaIySRAwLJogDc ztX|oL-darf)kniFujO2z+02C4u<+F2C#bPsJRP?J)O(*U`0kFMeC?Ft!0V1_d z?HBvjyEE|5Rf@N8;Ik(fk66$t<_-K<>rGY#gY#|hTrZBAR{el2I(Hd2>Q@GC7CUiD zdsTra`8;zH|M{(}&u@JpXx$he9WL5*g^&}lJ?q%_UC^|*@2%I@;fDV7n>WiGJ|hGi z9BvF`I4T-jT4&Wa2Y&J)>_M|VjG~~LoLd{2eV3^ax;m7zb-Kxofe|5A=Rt4KpN1F9 z&5>l#SM*xkhl+Zc7{s^-Y-~jNBVTF)B$SkhM@AGeiCH6|)zkdqj0lFk_>CAZRDYTb zv1kjomG6}Ob~ji4#B6JgBjk}!Lp?zcCJ%5ys=FBFyO(7uczGan&T7|ad1&qlALNB?EA z4D}^sb8{=Yz|9LBme^#vwpLl?#>V!OI^ALps2`JHh;v4mxaYr{>6*W)0&4FZ@x1NdWbUwa5)`K zn*{}BOP3aS=XGc^_k0&*oIjqfy9UoCRjKd~qI_EjxhLsHlGF5j@_-=`yD=B7+!qDR ziQ09AroMbWK~G5(jls;@wrbKS8ag^z^@3)n+>zW1Ah)4Lvu7n~w~S7Xp1sc=}F3xLIrEg#bbu$Ihz7>fcFc+Bw-(aIGLqf zwFvK>5Od^r644F5v6xA)n&vD1Uc33*R9$L& zMzTFJAOB-dq9czSe?g1(JF<8_XSzwQ@iJ97g~5c?cxoaQ4#%|q93NCV8-3e|SoI&a zv~XOvGTfZPv z{Su3mYfon9axFjfi~D)=SV?e8yLizPt@+kl-qazs8)t#4W$dten?Bhom+U({CGS@` zL!*)6l&8bP!+o5iF|q0B3jA#jHtT1b|M3Dm;~qt^IW(p<*)EsO@Bk6->Cmby0tkMN zI0rO$0=122v{2JK59VBYP`^d*E#4+M96#*-Zr13#`U;x5cElg>!O{KfCa?LFkdQg4 zqTz0JQ$OgIE7;_4qe`L|*hPW?r+;Pfe!Sba7EYSKXyQ@82D}g5G ziu?-G!+-uDhxnjlIS@cx(d|4Fvd;o@fe+a@mT=RZ_K4i8S#rV}3H;R5MIn|xFmMXy z*WQF5-o4CG0v$UB0oqViu11YeyDp1X<6go`FJ{q7KflMo#f4HlR(+K*Fugh&vA=4{ z=pSyG9aM(H(KOSL|ICIC)~2fEKl2znulMi8QO!~!g}d66s}&f+urB(p-z8a+UfD+D zWUpp#?bxfq=J_o(@t?KXAMf*+D2J&iEf1x)3m;eDP11v31vBKT5hNd(w3wG|0j`rwW_m{(XwcA=E2;Gx=R|&>tNCYw+{d z7DH^u>&c3RJpW6l!#*5I`nw@m>Z%cw<-#MH?y5M`4MDN7ugYw!70TE@&osn7jqU&e z&TnbSt-$!0fq*fNiv8dgj8&NOBo7OWu=876qpLic;f7|vTF|#zIy>jQ83&(QEtNq{ z=?)GkaN6849NbG$%(n%D7^P{|xcl&M6>tgn_g6WDGX|J-S_LFyzs--^I?9y&j+>fd zis;a#l#GG4|Jm;4O!$J@^R24JBRll`=LN(@M#_L*JPP+&D#E1fYKZb5*AA%=j+&^r zpP{BSZH>3@sz%$`DjKP)j6J!3H)d%v2>bVn%#Ufew|wQltcMOAi!4683$Vw(Yo0Ch zR2xF$Ac_=G^_!lZPjC;l%u3i6?VaZAk@|1X$ixyBg zyeztyuM&H5jfVUY&{iK0QZxAKY!M*jMFZ<@xupSPfo%lBG#kE+7?0WjECdIu5w-e6 zEHvQ5x?d{3Q{$^mey@6dX^P3ne8_WgzKQ^nt)a0ITQQ8&Y>GqXZ7?judKyf1xY(br z0LsF*B3nUdT@bY@6 z4XoUul8Wi<+|U=Eo3gGTPu{SgK$bXQ$I zg9z>h<8UqyUCVanMj&HzSv&Z`8X6YY3lE<88=nLC6~m-qzXx%`*H|QS3HODZ0l&EV z{K6TzCr~`>#jEaC{X%&npVYn zQbaEI>D`46o%_%1=s@s+CVRhxgiFV?oefnt`5+3p?6V-3^Tvf}myNL&Fcx2h+TzP~ zOOUgC{jHpiIc+ztjuz!4Lb!%9G=92Hk4M@C8TF!Y_?FtPk?(aJ7RI~s{oo2%yY-sSpC=M=?yvx8 zSsLu{w^?`St~ec^=YWLrWx22Fce5$T^nf??+9MK#Aw*y>dg=t@a)o7lI886i8dMmz zzWwD|i#S`X^I~GJXf-vu8QLe$&HGm|ZjOFd%1Q=zJ|c$8It1n=!piVyVTMC#Zf48T zQfvCEvph0*ECmMMWDcc%BEctMB;WD;Sr@J@ITdSLDxK&-1-meifN35yMStr|ctDKY z6>2%bIwf+jL~H{BR&;coWN?Darv9Yn) zear2-`6Jr!reA%#%S7ZW^j1j7V;Qc9kU;X#>HzpMR^W0K!UhB`Zf<20Q_~!FLQF$n zAuZU8z@~vZcc$JCb90r#bPD0S1?S|LN-Ku30QnY0A(9T?uEUr;b;YXm?tMwMvQmrg_xWy@Vr^ZKbcuyE4Bu+pUkx|6%n*7}OPwO6-kz-*?e*=CRKBiB z`rA|nuvt&_Cc8ps0=?_mHf?UM=hH}WXf=qC;KW>$1HMmcOcfQZ2Z%Z-51kMnCI&%jdfXnJ}SHZ>71FQ>=w z5Q)KnqDWrHd%!^~)O$UG!k&bdmIPMH)R)@_?`8>ZPFx_)_J`Df$@`?XDGY3|#Tg2U z`po7f3IhY)Q(`O_fuvNl@v<#!lg~{`4${TEbY{dOu2@-3dBIz8$|bWUW82cfl%}`u zFq0+r2mour>3ZRFr>INMFEus$1l)LBD>{i>~3_zU?t$3{!S;%&e^w9S>{Z{Rbu` zWt8vB>0O+$#B5fn`$Q|t4rU%lQA$j_UmMnVAxMDVsQd(@*0Q!$C@W*6x}|PH8q@uH zS5*Wr$J|&~Ly?@_HR7Ot9+-U9~RE?mfcfyeL zy5Za!n1KGu0Y0*vv+(^RYaW6W^-`kb#z&Pd5%6r zxb-;vbal{B0|E*7dA_xU<3@5?5&}OM$Lo2UtkM?-=tfLU^?>-*3-g8`U5bL*3J2gC zGBN=g4568??c(>8N%RPRb!%hs5Fe5UU{2{gZKBQ?uSCtdFo+7S3-ORWUueRRl@6HS zc-Yj?fY&;e1$!X^DOzO1=4EI?TNRUK40IGFgD9v)5_?px`28GMQHEYjf9D1RZS5q^ zMRQmtJ3H9Nz|CEj78)umEfTZ_ReK_Zh|b3#K0ZEd7=Du?np|qY9QgsIsNZnE1NLxC zUKRIOHk}?}iWH|)yZ8FtyQ?2Q4A7y&94adq^*Opa`rCK}B_NQ3rLxkO(_zmPTyU-X ztMV|Ehjgqow7!YlU-xh$OIuer*L?Oy6uYx`eZ3ukid^j$Id2O#Vl2Z#;FWxVci&sq z0-gWM+M4m%IX~Dp(h)xQh+Yc`p~I2>>U-{ebQByyw_N-6c09A|1?!zVok$wI(f9PT z7w+jD!eXCazdAA%^S>q}$bzp5t`shkIe-HT#K6LCm+;Jz0{qQI3z)t#VK>W*bPlfn zu}+6_6TCn2J2x?of}nd*CNrYXd39^E>N>*Ck>dwEdeHB`fuoJ4DL%w1Hj2%eklmOV z+KDxr1E}egSl?n!-2jLKeSQo0Hh5R3OA7V6Y+#k3h>#HRX4T}-L%vd%b7pv-@CK1s z>8JeRyZ6PJnc^@pUS4ddZoF)-O=c0($jrdvYriWHA zlKT41QJ)cGx!#M5(@R1Y%HfBxH5%1jIcyS9W(1r;z)!#yoT)N67zcxD#Pz^3FYH=;?V%g?GzUibS01?RJ zTp0QJ`5_w2yu9a?q{u0eNig~%Vs(&QgPjD3k36_XbMJyCT_->J`oba?8<1dP4<}a7 zefT5*{=7&h&d(7$C$AK+c)o-73Ag7Fo?+5SNFj_6}c?A=ufL9m*XvBc78C6#RDt4^Bdj+ z9Hs<2$3a}!wB+`{J4<=!)}1@8z-(^sItIh!_@`mA%UEF^_Ws0o-?7X#+Y zR?}fHG+$?D^7R|U51kP!_sBG(xkpzN}B_;JvosM>rripWrp>BTU#X0J)+}s*%=G*uOk2Hv+BqE+R z{V)bWfo@XO`mybwn4>2}kV^B7M+iW6A}e<6gF#JxXeV(PU8z%3rlCzRhpQ`J0GBY*x(#8fKR6`s#yuyD9hxOUnzU8gyx>XpZj2ma6sKm&a(+co9 zh^{U9(_NsyZhz$hikRKvP_Ddq4rr9<>JCSBWNQbLvhwI1!@|-pav52uAuxgpF(g6R z#|94n{S%0>&;`yCZ=LL3?y$e(ItOhxq@O-rK(z$N)fYkxT<5&JJXlVQHru#gJ6=Ia z?#vqXK=6;U`1i5=#iy`{x4OZ5ar^Kx1U7X*X^il|x%>#pjZ!KuCn-y9+#9HC*r?;_ z=7t;2aNbs6P&6b7^qfqk_3D^C0%+8Rnwr}{F9MbIT{Kh)GR(Y4*@tl%E~}+i#%t>J zjTfP&E|;>``dwGx5BeJ(dTd%*Q=f>DPIKGf?Qfdi0 z=1@Ca9V-h5>I(2c-OTaH{v-$x0s#BmiY8V7eUa)9|9T9*nnWNZzWR)Hfk%<%?GtV; zE?5^Nu{>FYMeG{}vz^T5nx7*?!)+eZ81jpV$oCjpBal91Br`msM;l^QV!hPuSzWC; zJW7xVa~ELmH^be=!jY3&$x&^hh)Z@ zscd;S^ZG}Dhx^39fRe!rB&#B>I<^cBMiOqt|Vv6Rn)3<^jrjz zeHSkIyjmyilch_#gVTlRb^NZ?Ay-xVnEXpP2j!dhp+6o^;kU7H+#V-vI4}%!X%1*< zorPJ$JWIcj#q+h{GTUn~!>VF)6;>%zJea-07nuC`oL?2VX4-FlEd9uf8-R;9hRS=a0_>rPd5pWzlA*F+1YrC zK<3eeM#0ycSy^cWy^LD6HI&n`@|wnEr8+QC%IG+8;zb{P37NHTc;k1>L25$YDIVTc zCdUIiXvb~?=>=a49bsCj7z$D0Ju5LVL9o+{ZpQU;RG=k@VQ-xqn%fS7qN2o44CVV|pTWvys^>Pa4<|x1=Od4PSD{7tl3iY=WtjBf^DPqIXl0|}x z>ibdQ%%Rnfj-L9$N=e@8@1NU;nwnB6-n>ng83@ohHg<4u=!e-CjQH9_IiFQ*SK>46^7P4Cuz(jzIgE0*Q813$B8Jy)=_85d7jPxKEOG( z?6s=9Ht{jYXC@HT4gq3zF+iR&bdXTq|g#Rj1NWf zlrZL042Hm&4vdTxIo{a-3Di4Jht^{H#g+8*7FMGJ?8-_P`_}wI`r14l?g-9ZT;x;q zz-k-LedPD?qd$=MA+(F=V`{BTtX7OjO6^T|5t8C!0{b!Yxc5RlOI9uWfFmBxf;Hit z27=a&GJwh$jO9RrDJUx|6M*F6iSqXOyfRE+#xXKl{gX!*{aA#{e6Bfg{^Pqh$2TK3 zF?-bz4^j3UD!eH~vVmtJ>XrqMzK_ssm9Rfqg-r3lUlQx@fqFuiN0;xgf91EaSIXPe zQL!`dcV=c91NZ?Q5Qe~I5OV*fT3%j8z;}OJT0r~#`%PrE2Y2e;y?bE&P0VAR2aW`~ zaJax-t}|B5xI;gx->#Ua3gdVmvapQ5|1%fU1g5`2rC8dE0KtEtKk%7n$dwBU1hjIQ z_V3>H=iIISlP~-8T`q%6(${dI#BHd?7+^I-5iXS^1)hMcyXP$;BKzybA-g zKXd*4{S%e4F64uf>S2O~t5h6Mq|#SeJhdx96yN2%t$EP?xh-sWU#{(@*?+YYdxA0J zNKu~oVRBo^3k7vTD789l+B7iW3k4HsEpd#Mgx>yAg2;*p zMnxAYNbW$r{0rc|_hT|kNZLK=Z=GXeM3G?`nYkA`v5=@+O>KWSOAm};uodwkP;awM zT@1q<(`b~yI-xuz_63~lO)IcLMQ02)EICEXgZ}hH7(WvS>jZe#4JU@SXNBQG5_84k z!Scav!AWblZ5SZQhVGkJ9aBc2pf)aoeV5+7C$S8g0-Jn@#K6CsUcJHy!KoZt85s~z zxL!K;mV;b3udSsu`?xJHS~QvK4iQnwou~X}O{rj7;fAs@3dM>`wc(Ml-@RRkVS4P* zmtgr}2hd~z%oUlb>E=Nm-DQ?c`Wh>-L}7Dt^ZLZZ#QI~AZ%{RB>*&bR!ipJJsD0_7 z=<$bShV^Ep8Kzb7^70x*i>F+Lb1LEBP3`p*Yt!YA-HaPN+iwS($Io@PmyZ3P8nNG_1mPfsxwx zK(eX_G!wEYWeC)z)hhc}_?z>mC&7)D#|>|)&JS3?F$isbC;W#U&SRI!36r=GGyi{i zQ70&_xA*@)vc3Zx%l7Y|gi57_3elnn8D-N{b|GXIA!L(HC6$Ei>||$UZ$d~`*?Y^% z$lm^+`+0uv`~KhK?Kpal>fv_Z*L7a!`Tc&@x9#~(oSiv>=-)Qxisge+RhRdzFV93@ zb)kl>Gy1FNEkb!6c(|`6wNI+!>AdbCB*N;g%pRlccHUSK*-4(NHUHa$ZLqxC7MV7l zkm@3IKM|ygK!nqpbogaK>%x}g5QeGF#gBk@@TSOJPOd-S)Q-Bf{Iw!R$jFF_B{G{v4aFlI<{?KiUrW{~@q5wQlZmT=yIR$8$lA&qXqD3mK@_{w_O5 z#7cMljHw|4_`U~xA}ChRhvfo;0|PaLQOby_heUn!HAC@3;8T}Pw%{NxeDn70gP#1e zd;$UeS#81TR+Gz_hHYVr$pYs_Ub!0G%@*YMmusXvdhz-D_kWLikfD62$7%2B;Xw~e z%0LZAiQaU#cyw&6$|b=6+BYoN8vyA|4@f z`tR&)1@J2(;QJ@pr!QVIw39E&X9o3sMp)Rt)Ftks{gN_)kXW1u&wTth#rz3KX!*E$ z!-iR3Y8=lF8X6iYIF&@0n0^oY4$DW0?b8Erl>f}-*JB~H9vN}ZKCk>7={v@gtj%-W z1e`$QxTOargGixFzzCU2@{*rSoTUGmYU(R7ay@=$&I?0QUf$U$aQN$Eo~?)4+P=X- zK?z(Tb%Df~M`CTr6a3^Ew!e3R74&TeS-^TFK&B%-Q@bI8LfUcVt zM`RH|X0c?&0yGw{?QLyaxQ~07WoKsxXJ+ywT%2|);*NKit{26@;evw$-<<8`B}?1S z(9e+3u>tF})LKSLpZh81dI6`6U4$w$)WPNC_1FW)^WUR`s_HdhH!|QTB+F`Mb@s(`V{-hYEkuY^`@z*saA75V{6Lhad9sB z;zEq|dX2{W#i97uuh^pv+hDeCBPbc*oA&z^vte_Y9BfYmC3!kR?{+)C2{o z^Tf!=_tE{71i6G^?DnbxVfExI_XBjmD2crVe69HO>5>89k$bz?x->Q36qw zCw+mpVF+=5IC1M4;Qf@EwOLcGVH;aN{Fw%1@@I(rF_Nqv@XT&d&brvNNJ9TiO|cRU z!0xAn16R?|(2zOm*Ex{gOwDjRt_UyM8URr7eg24X|5sG9(CRrt?F2^GPmd0+NLNbSrhIoCKV=_5vcrUNSe*LwpYOJO#}b zJX5roE|U692cKT8;OQ}!Qo`%Imv+&SkVy@X{VG{mY?J<0L9bgMI)gf26iA8x24X%X z#~V{_h;2RpSLWsEF3CUgVcvbnoM9OtE(UK^rle;s=A@ zig%K+pT6*fTXbv1nV{tYa$4g`v3;(jqqf!()xodKaaF7l#m4Tg%XtND3QpV3+neMN zUIfQV_nqS83r4og&}3#$J@K|7K2AwZ}EpYmB(W{+*jDG3#krV z3`8$OP!4^NV$!k4GWzZ2Y~D@F@FP8GIL)X_z&%qsIFsqZlZ=~vDvFBKKmkBrNJ!*2 zH$SS?Jxq4}vcA4PHRq>9Lmj6LGg6gggroJ^?3oFlO*-l!7H}abCe(g-p`mx3Uj561 z!zxofC*S|GOE3mv0|JC0`5QEO)t zBoHG&FzLXy0nQ}sm;Vg{1J3NYQ>je^dNw(&~nb`klNltxMcf#D1OGqNT^dsL@oml84W`RL-QWPE_^rm z)|D{uDLyPr-SOkg(g%D;Xldgx;QfE*&+f=X}n~uYvNIbQoew zR(vfJcirbqt*%8l-?^&)1rxJ&nN-P&xgWh9BX?3fM~?>LjI(DY^Oe8pB&+lkUqjYg z#|70TQm}oapxcMf&p*8oe^)EFxp`Pf(sbA_LOvGI^2mq43#g%BKT=GmnS6KSK0ymw@%A2{`LJwZ5$(@U6$NPIkO*a_z|!K_ zMTXV0>Nv8MOnkes$Ks>Cb4G+yz8|RV2rwrs`qM@sWo6k!InLXVhyE)~+`M0SiGW+A z*v?yHK$uOjb-%8Tj>WLb_vJ6z z6KwFM?~Tlql5vHi?rL)dAzg=~{B^^bvm-%jG%P}-*trM0F?eQ4;R{Y$h9jb*-=-Nw z>n8TNR$oYHGCq2d_7bHG>n_*Y2k+Sg?*4Mk^vb<+6k3R8{URy?#*>C5C;2?uquXPI+5z1 z)Ru`|dl#6`j!+Y!8_*l79D(@O8!btL1zm6NKEz^>%E#{QUu^4pI9e|q9TW53+q?AZ z^C@uf5Cy-1t?}T2*@M&5m&X4Gt=6vGsXF}sq1z+Avath$a$BOJv;=M{8hq3}Kpa6h zyhK|Ua?!7Pv=~_Fi~DFrVHV?_{1?W?#+U2s>y6PNGdnmsu8aFDxLl|a11%tQ^5jWY z{EmA)D0ekb{V0JUKswmK664IGV2CpjAU3rp(~R zX5O8IJR1o`tcd2{gLe0#QRjp1?$2;AcsumHR>@kxUH*Vek8qsrsK$?CqP?$A@8XCDch710m>iB>_*&z5 zOnL*LO}*%_LjFikkJEOpXS`?5kk;I(1R9RBJeF6(Hv}!mu0QC%_-D%fSBknUln62) z;gXd9p1pf_Jzga%`(`jP36n~ubl%LLyNUNufW0sqvKyGzXwsUnCgAipWrVC#?S~4w z{|01Oh(o5RgI10$dz5AyXF@&16E8`-BqXT8G^UrkpRAdS26$eM=k_Iuc>FduMZbKww(9hj#u{FYlUnrM zf$x(PLnQBIR{TeDVK{2BPmcKW`q?8d11kc~1}d&uvCQ9fO2v->kXYeKFG}kfrbJAQj74V0ifg#u;JQNTv=n)IQ_dI z!nsukM}l%kdwa9j+qaz!+Iw?t?U0!Hn8(Q=%g#APP@LjzXIooNcE=NljjE#|J@Z2D zZqlPIIbvg{&tJ84|p(^Lj(H7@lEV1=UFQ4u?K|@oAf)B0A!Z`O} znnGk!#I+b05nixP;?L?sTn&k7yuu@JVPra@f(6&$+q zVCDF8fQH8UdwIF`r3Y`_ z+}xZSH#Bvu$t3q(IdcUFGAbK_^6uQ76MU&{lk3O#zLHMA&;>N|-9HfWjgGw5x*qw0 zr&Dt($*nz|o%!BgUJW;~AtN23{sy!H6rU~(lx`(npD6+GaK1knkZRJKzEnJe?g=;C z}mVy$}#jK+?l`QLPgG@KVVK+#yM*V{@r00|Nu4 zzeJ02jNFvxyLUqC(S$_wq!Wh^TQuT;qI~nl(^CX7wMIjOgW){(10vIVgL`x5Df?A3 zI+7X5&`(iP6{7Mt{?Uz+DM>ygF zR}0vL@|6~?*`3H;M_bmjcb5sD5nu4dYA8g6H>)0NO*%`PWdWrEG!$CJ#lPB6KVyoE|OMe#YVg%Bv4`Na0Mw}YZBu*|6db0ap9;}fx)dgRAk(rtK z`iBJoW7z%2cN;S8O3mI!s|anz?!9CrnvRzi)8@XX8dZBY?H@5V41cxJnHs|DtDI|E z={(J=FIRGleKN%41;hDG=OR%Qe9J%Fg3LR!V9h~|H6k8ZunA7kt0kPOd29Lb!Go2u zqOQN)#7nuzrXW~_YOgjy{?=~FK5yoTAZ}6O2MysawJ~E;zUYGRPA>CDN{~mb{#>W}#y`HX+H_*V;V`B*Hi(Po zEq=A6TszUH+6K|AfYs+Jpi;XiGD3rRN}e7FpPK0}(P{?_peOfw)Ge0;it?VqAQ-de zkBM~8z2rxQhE41?{9UGkyT)3L4(R;wV|{PVp(*pI{M85weDw}puAmQ>jqZex2Xm;c zyaqx`C*nZF5b+9UyQg*E6!8`1cIsvWHkf=i8|;kRzw7|vI`ZS5?%%;H8=HE+RZ{_` z#YhF20~(a-pvKh!P@~^htVc|j2Vvg8{L+#!$fm8g_+|Uju~6rJN~pg-)j=AX<@VFJ zu(Hhwu}y(GdDv->;ZMBJg}p)|W-TkeeN(HmwHb9zPEDPWCKC7Qw70W6Q8?djvoQ9H z)k{?-ML)nA|D*_oH5G{0zMV3(dtWtSjIZOvq<^)qyLRvX3SIPJX3yD?z`nyrc-}$; z%&jYR0A%Q+-onM&Q2uuq^KuCKOjJ%8rUQG~)z<ddmhpO!vdbG$Ws;o;szI%5Z%z>O}ZH5Lb zoX;uNdP6YH2`vfFaW?4h4j;>lkPcDw2@n5~YnIWGJ!L=9Z0i9x=lRw8Anxbb4-Onz zaE9y1!>4U_fE%~xy&Nxgpza{^ygoI5F?#5W0Kw8>^co236rlIiV@7%^Awu84ZDtv z%-JALZBF2WetxQZ>DsAf8|-rP^Z!=T&LGa>5us}3)}setn1D)_NowqRj6_Rnt>=zot5176b!c#KzkEh4ud(sH)$zDHS9CiwD~QyJ z>@ZG(8c!ahFViAHE`v|};X_Hhx~io zuh~>5#jIgw*nvxbrJaGF?>CmwgFo$*35cV|$;o);k&sx_^K7F6*7XbOYk4=5BGv`p z&-d&{&rK;3f2%3h=qNweY!E}-oi9vMA6|#3Ql)4V)xwSDzZ7jdpG`gL|C;jFxv5`} zATx}IT9&>Tr#2g`_Dw?&73I652jkWFe44Ts#|8+mG`k$(_Kz1NJ)NrqA|U~*wGV(P z&;8XP$i@dHbA>CRM!kTaQx1LJ`MaNZAi^2%vffL$^=f%cm}n*i!7k{ONQ+V8!p$Y} zon-r&PY(E*vrmq+T+t`DV34ezVPtMC+3NGvKpevjU*)Be z{JV~~PkVbyb9Kl|b9H6t7iP@)0|9ei5E1b>r;q#XOf+6h?PzpYt%VF#hQ9s4b8j4h5Z?~~CJqi{ zTJxr)7!y$&eJh$GU^$4&-BYq%45O}(U-nt1-yEzBa=UI!@_D6t zuwY6*3D_x9rEhSsPaHi#b^Yl6Ct&i_^5eF)mlzotUwWS|nA=)+gu?a;L5f!u@eQAv zFrbB1F5Y;jXLJ&AvS?Lj#)8PLLW{pB&lMJN@;Ws0q59`Uo%b+$N^qM(zVkJYmjTd9Q8fTS?$jw!U`l z+Un})B|5$@f_-bcdU|-b-^*N^j$UMZW;-8?>4{H%wO%$_yZj%8Hw>+_bDtxaBSK3^ zbu;dZhxq%)eEXQ!q+al}W6*^1J5-7Sk9pGZu#a?~ew}D|7LjJB%5WB1OK;Kn*^fD@9FP=ParX3aA928X=Q*G67FBAnncJlP^{Nk zv=bfK;n!W|(^NScAox4^PUN1MqP7scsWjX990{k%R<@CH%GdI7GCe{@B_XPpMy!{R zoIE>k=n>IJOGv!<@-8qVoeLRCm)_BJEczcWBqgYJUVwxXfvD|9T*hE>jzAL(fCM$; z%1YDnCW$7Vw`W3Owt3{H1JwfLutG!*XFMp46$*RFZ%%#+ZU0}emGPR}Ry#;G5ux#< zc(E|2e5luVYj~J;C%JPKh=%t%7i2o+<$NN_;s`RdKdUP%g(-@Or@^q82=QIA0hPOB z0v*q`@N|zq>gNPH0LU^ia(VE5O_QF`FH#>^eL8yWS&j9Ux4*v?5lEbTyoO)#(|MfgCFE6d0-stE3`}Z#{*g2*Ny5z+XG;eYr$roNCv8w!) zv|h#A11i}Lknx&Wr$Ykrzbx5d`|0g|rS^3pP*bv_uVF?yfPIq=py^SM4(joHEdCYg zH0c*uUG|KRTUY(C5}=3RN92-1kGM7*$g$?9!XPMvy&En%35oy4&xyKuWs?=*3(WdX z@g=@%>abMWqt}c=yTyG>@w_^0h(q#K&EWhe^YLl(;Y?zjq9@Os@q^7lC6g^iBCmh^ zenjN;xM5Wp8P(G@TqtAwkNE=89gfbG_q;@Qo%-a-K5kIhuzS*iAf&d1J3ITy{R$XZ zA{7$Sk9w?X3O+62@;c#B_Tz_u>{{p&$E8cF2L--dm~<>zj?=36K@El3KudGssvsf4 z6#B6P^o~D2^=vpVO>=)tNZi-IBKq+2o4r(Kj4!B|S&dB%r@k1dl6&TxQY8}32J+$; zpR!ujGui2^maG<9$W#< zP*2lJ(Wr}#nX17Jc=*NnG6KlpsDU{|B8DZM!)Zap{gB&Ew;R_KTZJ#M8Qn>2IeP5a z_?m*h#J!6YL>OUw!uEu~(+xU=EtZv60iv_EldqIKbBO17R%td@(DGrEqNOieN1A?? zNFig|uIfZ}weyzXrr}OsCN^Y}9kiROtF1*$ti#GfSy-BguRM4l`s`ZHfpfW(M}+oc z<6S$O6g12Aj)CEMl(w{SU$OodQBF?IlcJ&}cbpe^s-nFT4>L@4o#@FyaPaLs^UHLi zTg>|UYbD#xnZ?aZnpP9J83rvmHulySP}d4#`2rk(7gy90Zu>&bmU0&Rg( zOcsjgjyP9TRnc5ZkE*Jxn{rH02xbkeQ4+41n`li|t*)(=LJB=A3C+;Zkh5a|Us*`Z z*M-ii=km{@uenE`6Z|hNfa{)Ym|S?WGBX!^Zl8%evgf9loSfWJ(>G~x@oM}QC-c$a zy3gNVWIpo43jXL?Ja2kndFpqh)=6itEzWZ+gl1WhW*e)QPId7T0_z$Z-&T645^QQc z&*wJR?{BxBiS=XEyRO##P<%Ldy`}QDYx?YeUOu2BgXDW{Vb#L8 zWS$kPI!z+(Du^PQEK&p+G}zCy=#Bg^xyZ{Qjg@yZNtLudT$+#uYga?Zb>iPOqM>!M)s#Jf?7J9jSVG{@`PZCc&kUN$Bu>6#{`LxBN!5)MFLzDjGM*!RMx5bVEYgTwv zJ%TSyo(yDY4Y`(Qx45hfPl&NZ&kG|8Ck`Pue}6Xl*cCLEpW-@O%jSPgC&JPH2#HyI z{4GpE4i|WhqrJnO{0}n^;|HTdShBHqzVdkNBH}Y#Q)g^oN~gN>s9VMH%sRu!5Vj9fx5Dlxg3ea6g23=D_3yngu86Kw`7*>8{E8nT)Z0mtf%oKr5#v7JT5nt+P7 z!i0loqR_8kfhDRg6%6;}_bS^k8)=#wxmxE)kWh%k-8pAjvOz1bpxv3d`m(!w9e9v; zbF<`5GBGa4H6_9agm3J;YU|tKVNqz6Nucj*3ae%13-eoY$|N$#I+W1-0f|WLn#EsR z63;8&?-(57mP-9;)Sc_0QOHs9N9ys|sj@P$@z^`9jWUsi4z|(k4bWDY{ZYQKx@rqR z<#}di3B|~2i;_GN-49~=QcKwEZE5L&22skf{cG~_9O($|hkg(8w1MGj8xR_xulK`f z-2d|Ta^H-Tc*F1VY375e1pjvceUpLy;b+(b0l?|hcHa=egrBkLWxdPfcM6SCl_G*6vwqfRus{heTrr84YaHu9gHoD%I^ zzR;I+M!WJ!u2p+ckJ1$=oO5fidU#nJq_Tfg(#I>A8(&f?)f}CW<{d~ z*2^uMFml*O3K3U&hDFxgt*O$BpEhBRQ$eK1)#srqlWf=b_U?Hx`-9dviu(vbBxvH@ryS`E-2jF+w3or&TSifzRWJIEq_*>lC?`Ek_(d3 zZTWcB#au3-`QUeiKnpd<|FPeenR2B6T3#L{&_6gn-T}Qz=)H4C;v%djW|YoCYYhDp z(Q!<5UavI+i#9tSqHONA`^BsnYeI1hU$h)#;Jr!f8YQ(;r+2-0@I9k8c8&!D2+#of zP8X`)J#=V`QB+iRW^0U~V(Vt2;xr5q z)M^83L1%o+Lk*pI{5=pWKPguv`M$viz)V>xbAt-O0cjDx%%^g|=9cO-D~psp;3RU$vE$u^Bf`bp-hP z>p1;?gm|HaP>v zF}MXEUBzsWPSk0`4m+ZWd7h9&Pfz3BMmv`TUy=)<{qwvRRSR+^NlLEOmM0`tSbqj_;;fgN|Ly_rqdtaJz84o z{nh0f*yI6Bd&z1~3uJSLCH!Mtz5ePPKOO%Z1+R%lIgXQofkaH&Bsp=Ul3Vu%G3B12 zpFaokt5lG|t2CUqd#vNP|H^N1- zzkTLV9-gZ^-78j;ty!1^roft~R!rW$ER?sWEJMI-@S7+R*5_Ql)nsr0tC9?Wk8V18 zdXvu1&ekI9nO^vs8}x+E%V4(4&3-M6T#$xd+3*>-grpcvM4=;-@6V7 zxIZW&q63HK*k-?^&O>+Wu>3~}w)aSB1M*UvCBTu)Ho z(iS`N@L|+#$pXZl4V?3rpyt>=)LZ0?E&5xfN8e=U(}`w`{0W56iJVSoMHE~jf>*S} z-mUm`WJINX`SMfsceYVtyn2_%!P6q;m9aZq$b{qN+mcn`=88bjH93?)ND;mTI|Ug& zIz+=BQooVkN&da2rlKa11eQ8SeukH`H#!|JojUc*xQ8sw=I>tUrYm7Pm~2^vgdP#w zPm%cLd;F3bin3cnmC2S7sewwbm2#m4p96s=QG!8Zqr7)#c7_M2 zIboc#;`^{L@dy1+keHle4`%!W3Stm4$g6=_Rt6~i0dMcC=Z>sG3>-o)_$i2+IXKVa z`cc8BWElA!W7xJuCy+_*ysb~PvgQdt=~KdW5U`#uAFjS${o}`j>F#}G6xu&UkByJC zJjd$r#a%*OnxS>`44};>R@3C9C&&0q=|XsKVHP~&!GlA)cCS*OJ{=Xfup8T#A05u9 z6JMmn#aGwOrZ5ca0cK8i&u?w6hhQx^7JNvPR$#fOjjtav&vQ_6J9A;z+5X{b-_`A{ zyu%++d$!fp)zu)VyqV~|M9e7aFF(>wDyktq({3Dh5(x^e5c#h+mzNKPE3gQoS!|d) z(&TO^n^I9h4~l?#b#;}{7>n(r`Q1RN(_834gj7n;xe?aCZJOj(GjJmZVSy7r?#Vy= z^y$6#HI#>FtY7k5d^*Nm8TYeUHy}W9Ct1B#*-lMDD~;L-b$?xd>2s8|Uv%rN3Cj{+ zynFXCDf77qymBx)V|e{uU@Ed?z@MM)9WXz=a5;VK(q}KKpq=KprQUh_X z0`W~N8y1?~-NA?G=rFxT1oHoTsmWpLRH)~;?4KS8@KRGQt(keY{gAYrD`{ocDHfaho0J|Dr z4DYk`4m}b$Zz+^gV*!>}(+THCV2%qk9QuEz63v#LaMjma5lANtPC{-6b#uxTXeZYY z)x$1%Dk_~1OlD?hc2{weQ4HOZ6!bs>{ME#fgaI2f=ac<|d(E30Jhz`(fLx;kn0 z`g;ZHadHW!Rz^rq@wIHA zvSQuG%{_lDEtBMXP|z|S*ul$mFJ=#6I(*W)AeXsOd(#3<1qLN)RhPl(w+SL9SbuvvQPf7 zn_F1mZ4#f@n?n7>e)#s@JryphMmNM#PM>*n;Q8|m3{z-Qt&h5-SDNhwjZlJISbsl1 zV(SQ*SZ($Q@@@4}XBZd()b>ko33Et}A9A~q(?A`k$T6XO!=@n1sLKr-9Wh!QiDifN zC3TH^5-;wYA)wh7c*)<=k0qg`S@p?%#k_|OaeV;Nf?c2iiAgZU9M#aE$COZu$n$=(q3;jV3B5<61hRKj zio>$GL%g(0av%ie#a5p)$xGBzFDM%&EfWpLb zE<;5ks|lM!M;2T)!c1p#`8Xxvp66hJD=jRz0TG{rgJ^k?xzbrPJelYCod%NHXhzSu1aB_-Ej44}_7 zrDW()5Yr)uh>{z3eiBuBc`@=>9&K$M!Tbs@+(Ym-dyqu_Yg3b5G>O-h>ua^|ZbF6d zh|2^q-(Gk;RkAnUW0u#Ql+b-KlBx%AB>jwJ;Km>bYWC2#X=%H03s?GGjIp@MC@3T` z>H1TF^Gt)N$zXGW4ff%SPuklqC|}$sTH;0s(rXZ*Wt0&?8~-CFytM+~R0_}?zGK{`R$;cGXM=uKq2n54_TYxW7Iqo6$>DS|W#Q4nr`H{D~Brhk+ zXyubRq|31ot4M_lfs+yFE{WKErRDRbvF^MEcauMImBL=*Hcg8C4=VHB=PfK3IuQXyQ*ElsRK@jxX4&1TT@TW2IJg%$te(O= zk|yD;g{H0cE+zYv4`-(;JuDTI-dt$S$3Ln72Q6#LSe5+#r_S&H;xx(aVx+ZDILVJ;aaO zf2uBTR52_!8|FOeaOvX2M7?V>t10RwKR1PSrH&%c)AN_%e2WsL(|x`NUmp{?qBC4U zNp9C7`L?3}>7Xgm*Y}y{Z77%x0$6BOICmrukbIQ{ll)biA`EfTAsHol#MNO;1mDLR z4zU~@0NdUYF~K1*1$z$aH zcJ8}EfgQwz0XzM!hB4`LBESNAFQa+8bT6@Ge0%>5s%mVtvNAID#dt@CvTw%+2jyDJ z%09813Yt?tVs#>mZG98~BuRO_b30eVzF_ zBj@%vo+e1og>0Yx&wf|+e%60`exX-+w$*$4i+5w{-`h(bDgOTZ5GOh7HiZkibHEl| z!9N{!?=CzGQ-ec8%OtN%0(L7P;Ya}FC&47NU_T6TjOrH+vu*}5S{;g^vAZeCNnOKbVHYQ(Qe1SkoQ9&5>Hg&yVN77Jm1b+5PV|CFFkNC4{~t)bDo`{Vc0Pn}tYT>Esbl}%5Gk{cc=!*bT41+*QD|L#t0e1!72kV;?&Gq9%?cl8n^R&iylbz;=Gr}k^thsz z?I}7BgGQ{QyV0_4}a8=zU$TgeU0`hxmKEY`*xEW)*$Bni><|xg9i;UPVB+r z#43iXe%Brn(GT0#@{EMc@@r+R&>=TJgv)+yZdO&x+-wj`;ZMEPR$f_>%cYQR-#Z6=md8TswHe`pVWBS(g4i60)*7O|j=- zd{B&k?we)Tgwgihz_|$hXON37>EjssAymRk(!#o zTY~^n5WHi$zO>K5vC3lM@daktO8GcX!TtN||Fj?U099BtGc-H<_mOTdqN{=)mKV1Q zM+7_#0%r8TfdNdpc;hZ8HQ5>#uly?<2S5Dr#H01}%)*;{JUz1(rZq2vO_T6vkv1^c z1GYWgs7s=;ajUYi@i=czEc(k=A3jWNEOl*vM`u3v^MNOw+tnC3PP4%r++!Nu2G7c} zvK_FxbvSG;ssRv?x$>0;;VDLhSfoe8DjOU5ho~+UwEuN+8D;dfg@`iyo9OkcHmZ-; z;h>%R)1KxjD>ClkA$=1;voF9)0@E%pv_1SE93X!=S-s#HRx+oZrK~}-=}B|}i0{`c zeUSjesB4}@n|xlnOUfqh@fi*d8jjTc(J|^w{HsSLVtmYo%7TOiiMTW5ET=jn088D^ zG3M;aUxls8H9kIKF(A)$;4(;^(_#*9pF6=n z$Bk6n;rcLDs1PuGR10pp9UQ64gyyv~s|Q#2lj;m~pcC2TS4?N=2y^iqHXfq1O`23H zu%eZ^@h$h-sv&u*7oFR$#jsz$D6D2Io~95oY{0eBqneD44u!#lpNgfuXv|9ub@lD8 zQM9udZ2mSgvj!x6y{u?5VZp}9GGnZj0Q@+gmAr^iWoox3wE%h}zIBTRI8X(1#DW;R zsMJ)avE8LlsHA$hw6(G`^ctwqL-!O=o;*2Vtan+kR}C55bcsin0wyEd#K90FMLjoi?&F;X;o8yif=H|h<# zbN$(GY4(}H^1Xd%=^5|qrxC$l0Sd{24?_ju1bYY(x}Ot0od zk@dGX4PVgEH7B@3Cd+f&BY0`5zZCfRRiv1hZWhlnIDck@I%RS)6D| z)YsMheG1!@@cClwK}gqEM{oM~hWKx`T{DCjm=dD@6t*m+n({3ENKF+}>plowfpX(KoMeS)hd=>Mxkde(+>tc6PkdgGb$HwEvFp!UF5}k=I87 zgdtwsx4oTSmP!61TvlTQ^@tS?}{32(s+N=|r031Zvo8JP_0-dJcF?Sk6uowph zSP7~a7{u-EUpue+a_2AG*^B0~BuWLPudK_W>A#3z-G@Ivnn5h+(%s#Ct!5oHHN5r_ zCxnB4rH_zD$7-Asusf;gz$sy^X{^*%nXg@OR`TgsQQ!CPyAl-MDzH=lim(`!Aw(8| z@ts|ssRyn>j9}Dv$hestQIC8f9Cb?;QNwrS3Me zM5}#6I9vXd8DyKqt4uGUMZiNgKi?oavDT8T>U{B^L!D@L_OU0X0}?R7Nw2W5$)73e zN>^ZpFKcRY$B?Ff#-zAU^_95eQkZW$QKPEHG;JCM7OIl%Emm9GyuAz}7>8OsIyW+} zkh&GFAxw5BIhb21b*m0?f;+MATvNPQ)H`2<@HSap(kd-gO{Nt6T^GZ~fw(cZ(> z^iv>5e||T{qJ~h=$oxu>XYf4HBZ~;fFWC^5>e3=wC5Il@fD_~2J}X)cHi&8;6XH97 zglPma*Y{fo0L4@HEW5tP^~G69-7!z$J=50ytV(Q|l#g?!AT(j- z3jk0`tWAwCG%5`!CvgXqK5G``xTWU4ib?dUw_pxK$hjxE~|UVe<%nCY2uKFxKr z{{Xv$Q>89M={<}E!_^cR>%`#Vny~cpd0HB$m>6Yo=&SuxUfse@`mpnH+WJ_#_HfT>a#Q8F{r{0L0_)|_yf&u)PTN%OICF`rRtk5L5y z57#uaWN>^eDM{@l@M zb==GXPioBz)k0v+NJ03KE_5@oD#@3rTykE_ZlJSD2L#tZ?NE>M*ZXu_|J0@k0*#r@ zJ-!T+@1xOr54$E`v70w9nhz_We`oZ*4aFQx32N#g_@^T%lRxJqA^rzw4JIJJ8tWuM zja1j3#tjY8zGpEpm!4_RUPnv!Uc$pN#|D&#(&IG+{KO-BTs4wzX)AtK@WPw^lp)z^r6FETDrPoUD;uI&Z0=OOMZX*jO$!$ZdZs&^rYiH2u~FYp6H; z{XC&$!tSuPyxcY!m6;_~YA1EddyL(@Jza+sE1G5^ib&lf*D!FP+Bfr3V^gyn>Ez9G z-5fL#F+FmOeaRZdusx|mP~8S13LY!YP%l#wC0qaD;zXGXA;5Ad=Ru2 zMuy{+s9%s7Ju;=w3RmbVPDEDG!aq;o9UF#=H~wkdtO;QfqerY}Q{@tla-I3$cDN)) zr-ssI;h7>UmpMJAT6O1|NzV|q-yv4w`+a?RM(dG(H)_qjGj%zCe|8Pm#i~E--vaJvZv$hbk zvC!1X9RApL;gNW$rZw|f`ld~Zc_cEDS+FV(x5W>Xxg9o#f9*N;Ffvhjw3!UYJ$}fX z^5z2zn)%MlOO*JWyTRo2^fVNLbubI=r*8SJDTabTP67d z4(`z5?T-$tZ()~4g!*%WYBDs`;P45N09xM0T(i?25ZWP~Mi^iM0f*dP@6#=^Ie&f> zMeLh&otlS+s?Rg@eBC@XUIOBJ_;3s8V~e3?YWO>U){=qm-XE^z)rHf41&X;cTW;L^ zx#ii<`MSqJX$81PZHUYwfTj@7=awpzQB`GSK1ilvl3IC% zz7cRmG)+c-YAgfY2TBYIn`rM;yumd88&!tW_Ga5PGeRBu=+Q-qm>tgB7YRQ{EGp8d zs~$5yQ+^)#0mFxvKkF!<&7(qmZ#11cB%GX1py(YH-M(L6>H@xPlwtSopsJic8Qq1k zal5~;-Mxfr6RSR2k&QQi!|NkXO@i_j1qpQfFEnyHO7hG?Ztp2d#=S_?U!SEC~%4<702vR2mC zZq0#jCYfqExw|;y)yhnB)TFU7L(qK%5H|I3yjDJd#uQ7Qbty9r`$#TQ&^)HKIZbW> zEMR@3#B%8q*U86Insm~M`1-JDlzmf9p1gpgy_Hj# zM4)WJhh?B$kP4^UFZn?H_H<%mU#C%&QyY{0njvd?xIa6^jXWXv`@--c(2PSz@-*ZO z^GE3*p54Xmvi~5n> zk>gSy#}#S20#t*bUchi%=*HV1__rvq;FoTIo13=DR$YPqiXJN+uU<)V$>bm7Fq#EB zvqjO~h4)q0GfWgU?@YZl%#i08`uM3*Tx;QT_w?EKDw}^pZtuekGCBtLF3g&i1Hpwwc^#b1m7Q@U6)#JYF5TUlCR>vMFXAQA8^~2%b-a3urzTuv) zUWsmfu_0)bkRfmu2*fn0A|Q@Ky7%w9MRk84_9pzn`F1*`o_+fx#kerIpZR@!x5*oe zVL#|jQN&sO*+72pt%KK8$C|BB?(qE@8h!G#02Vz zrm-gfyZZWDSEpY2Y(+pt%;PX^4WSiDsvGso!tOoW#g>Z*GU~HuC(k~-!G7}=gIe56 zW=0VQ#3TL(bwc^NKLp%Ya?*DYcAqGRdIqEMy$@T{T_+|Kuz#t=Rg{EW0}^)ZZxHP_ za1Z$E2t_MgnhxirzY75zsLM2R_CDgJ+xhhef&JFV*zS9Y1)_ud-35&A;x@c6mU=N{ zpMA3i#1%cP1i_S?a$zwhZbBM7K|$}hs_N>x+CMBvm(civSKkjlGA2545l`L9VuR+S z2yWCPcKe4r?1L1pJu7OulBXT?H@vF^3H3i9A!HKcv&jJds>5QJXUcSU?vzG&y(~{Q zei1fB`j?RR15w15Y}NizE4%3HO++InzLI?K%LYr;X^<;83|5wPqNLi>H8Y=Q)Z^07 zFY~r?mv{y7W&NN=K^`MC3NmbSdVku8aS?c<*Ad+>q`06*nv8@GC2t#5FM|K zj*gm3f*K7PYOIi!@hW_!R~IQBuG2fC90lG=_laq~k?_IK`4bwxGVjipO$F%Xv%9_( zv=gHq{BxvaK6>b#33@Q$7vS$-QXjXq?X8xeHY^izO&^s~g*eZX@AExc_eFGmEJsV? zPX|!X{mmr2FPhucA)NH!Ier~Xf>;~V2XMET$X@(-<5~)9czMG~o3xUK+35$*p38dNerWhQbxJ7z6|>v(NUK7ME^&+~ z+Jr=D%)q$bd4L%2IpBT2ik1m_dm4NDU4H&s131+&ty7eCko@` z=>ph{O?-DQ~D`?g20F>vxvLVx6Ei6TqXrhbEW= zD%-lW{$ZeZsWkfFqW{t8{H&_#0Vv;x4TggKz)&R*I|0_g!F3c;#;*>*6dRJ;?_k6H z31b&0-;-ROGCRA)!w6rkAsnNj{Bu_Amt(Jto5Qjm&h2z%@1sgr=tqibk0V{1yB5VDx3gIvG>Ep*ZI9%oYsgV%1JKrG_V-3w$Nuh6e>fVHej2@Bvn!Gq+dzx3VXc?MmsDZvNwk>df z;Ucx`&_{cs-IL?piG%n?@$h`d8VVQzSiCnNUWm;~e~v8BpQWSRDecCv79=i!`kFKi(Z#Sd_M%?a(jSu{sP;4 zn2D6PNsM1dN*}MC_`>+obl(R8WWH}gc5dho1|hVsnp{#4tH8WqY5ZU7MRx%+onQ(L z9yrhoqd$_bE0@6_k=+EmvIQ)~V|GhT}Ljn*EsR%9**ac{0%a-;POkI2Z|4?A0iulAp9pAFLxi8h;skYDfCi{6C zhIjvwFMNF3X?TgnuMG_c&rou=ZIm&QDyS~w*gnY z^O`Kd$%X7tUh4^khYu@)uZk!SYK#ddyIPH;>mJ<4NdM0MU%~f#$g@o$YTCX3)+K9e zHef%__d2cd{0f@9Z-|rczBep>=iDy*YnXj6Ap&Gqe&X=Hg#}`Zn*|OBARO$4QcFT0 zHTYz2OS|*uDUAZ@;Xv# zG&Hm>=3-g=%LQ(=p~Ti~Hm*;PRWe&ysVuJj9*j)3Ycu)uiMyjr_kM?NUCe3Mr%}oB z8~r{T$WJ#n45}Ml7Exjd$D$%YR zr1@J*|C#e=2*S#)f;NjEPz?TPYz#n3?9N|d63#`g1`Z2N1H&)3#QYYw{C{QTCO==C z8MhMubTp4uN{R%v&1aupynkLphn3kYR$~`=PXd~ ztM}VuUdA)a-h1J>ue2s*FQI8fG0bN_wRW4;S!w(257w6pAb!zVU!ESmEqLCh<@@2N zR)9N6zalR=p0;|a*Vy0HKQyF1I8+_>7$V6miIfOwe($GGc}1y89@X8`%~(|J!%IoaF;_val%lx3tKd&*)Ne` zJY<#FycB&C`6r5iY2*|YkFgABWf^P9X|{F4uhT!&9DoBGEelCBQ$Kxa0megRI5Rgc zb+xhfs|}>wcVG>`8c2|j<5q;-_5_pD?}$&Iu7FhJqLgIQ6D3?KaNp62@ZF%16tX#R zHbfA2m3GJTW4lcb8h0O}$cSJRZJsG-&xhpk=d=CtpR%}XpKQ~4BWQA5LxZj=Vr|;c z9gNbiBn?qC&B=MubAxn_1)~lPRUiPF(~l?Zpqc-b*`1~%F6%Q%h=G>AxZwi|* z2|n+e`Ju&08b;8@6CFA1BQ47lbMY0~2hFA{Ey}Byr+xoEM@p2Ua$(H4^EUiD2|POD1m5eEJ%R`@T4kUiLCpkq^7EO7O5qX_my$IX z&hYc2X(kBJ2g`|(-W)Z_!j#4&4WH&@(SwZnL>|(vQQgvrJ}CoI|NE;I>$Q(U>351K zZ>4Okif6e|?Cj-#|HlHov7Nbsgdy)iUEdDm(70gQM(oljTv3S8_e4P;sLj#UKqlv# zGS#6AXiyEd8mFexC^7C_eVWp3Zf2%i8AOG5;1I2l)>Ne5kA&fuAG2|X$vzk{{SQxT zDEb7D3nDR;5Y826G!DMfWk;@WdEPc!LGJA~ri0g&l+Ya!>bSO07sro zPn+$dJ5*KfZ$|K1Zmd22^-hif&^kyvx_rCVwzeQp>%102H@umG#}_i66;wh~8CO}? z^7wGP(vLar`pLw2CDwEsGuoxeji*uFEaouskJ3c;6LPP7TN4an&63+5C)pD$NqpcYUlikI=CH7X`b8U`4%k*h=N|*nk zehJ@;-71w~i*>vdaqjiJI5(PTg9ZV3iHF>|`*H1vHLOXjj*-Uq zv|TZ;#yfKEQ*-UTkgU#Y+;*sQuC+B}d3hgCovt_!K~d}fS$mS0%#Zbu$D}+G?@w&b zMV*1L9BRP|yv|?yKH&+6@8kn#jMJ(C7uXgXTdSVw-u!`q4ub9Zu+Vfyk-sbSmQ7Ta zXq7s1gR<()!8pO!n&HQ#$MLQb{;9Wj`@T=@-p`2JGzN?%grDyoAHTb`$p{+LVb#DH zYitE{0BBFwMWzih=dx*qOv5M7b$4~S;JqLDLALviqKb;-t-Bb;3yS>Nrr-V+cNB4X z)akG?!px*sdjNjru&-7}1i8au;XcjF2@oTCeW|eS;-k5rKkon&ER$tgL5-XWdUnLWJFJj7i%j;qQiNS^KX3SCrz1fnOqh2Va{VFDFgA^diP0OM zT^sQ4vSWYpnOzkVpPlf^)=0|0+T&>fwb;7Dr#?D1eY_?w$8x9)$!>`}>=(|Hzl^!c zp^+!#`Q;08ZTB;Zxb&B8!K%ZB1*R53L2rc2cH?vd762H$tf?2HV4 z@B>FWO5UFDhq`|kP&vEGmtLLa;lg#Ebp0^%qI-^>uqOUa%O|k?&RY!0EzSmxNO2%A zIDOxXP__bD4%^q3`g-pE9u6dJa)K6a$Ukv@0HMOg|YeF@NmcM3AOd|a;(%^IKmpafJ8_CO4YkRu! z+QXi`J5AW&^XmB(-HG&QTxJF7jEDI@3VM4_O;7jkICO}+zqih1bHnj>-UYmEVp;RDU0d+3nCMa1;JF=-K+5 zxw6BO1wJXa#M3^Xx?nj^mR@)>(~!&0e~Q=6Qk&2-3#wQ!J#(eA^5)IZ3XuXY(3?;* zbJU72PHy=A{24gW6*1>%Yh!uN@9pKlPl*m~Eu%q z;?sIne2_667|8o-0&?aMYZb!awxP;kmLXC@BV^xUA$mbUG6>qG(H4@HomyJ-R8&_# z(V)RvW`muTuIz($zTFXDU(V4wX7)p$qbbnsScczy;498!{kG48_?5ijQ&Y{&;>@=v zgKF&Hqes;P<$?oZ$A(6h4-j4Z*w|ObyA-DAhq)Z4+Y zU-RI`e3_F&g{bKJdJ<Ij;tS84&{7h+viFP%A0qQvw6XJkci}miL2EjaHg$fDZpwLqvD}L! zqA29z#i;7WHc*9MDJqE-N9GeNDm@{U@Tv$EoH{4%CW$baZ7N?sv%cn4M&vd!K~GR# zzWVVYQLMx5)ovl$VeOCQeLI0K+I-LuUC!}PY=1VG+lCsf z01n+~=Pw81R8O`G15CBH7SK#KJ0Nu77V-9?u#1pRLOX+8T4~htvbLZ1k}2saI`8J@ zU_iMjo_(vX{Z-kDDY6J;tP_v6J`?kig#9|??b{Ftg-JXeMK46{JN+>%cVACMpauTe zVQ}XIic%#K*~VHWBXw#g)vG497FFe+l2m(miC;$KEn@0;>xn)8WV*XkW#~DU;cuGz z-M0Qyxh#7Rq6A`dWR)c3)nY}^PS8^qYe}+iI&i98cp$t1&0R6737#ox8@5fOmNzs4 zf0XGT_x0^o%}VlG*Lo6PnX#VbEW6#M=f^>YFRs}KO3Eb%6#Oi@1FEa#V^!AYNRpy0 zb`O}vz(>b|@96l&y*0j9Utb80QhO~bS<)bM%ueGODJkBD^_5{c*x~?(+JF091fdJ+ z(`Sfoelfl5#Bq4j%yWUlQT*Agg{ZG`#sk!ZYh&oGc)CkYMu+=$-m+Sh#m4=k%*=n% zY~id&#LJ*V!SKl?;p|U8&5E($oIF`>p5p6TdjCUIu6_G-s2DiYM<>$e;g@s0H(&6oHN6r%XFOWM93UKry)equxo z%@;~dA2VOPphdc?V2;Hwo19#B8e~MrdO4z_FMyu(l9>&UV4%4{q7o}3?)r4s%y1O@ zToc6JX-V3JZx9t8BjaV~=DxqAD4OKQtFS?>LPS}5GPXxy594*PxgML23x@Vg3!^1uLc^~otzwZ?_YQ?v!7i(=?(OvW;p8< za?Gh9tFSLfKYO-*Q?iVs7{v~r6$tM{7D)|n_IPu(|J%39IF)3c9}xdy)=!_I|9pDn ziZ^FE;z>%qH{SS29zj;)bI4a-b~M+g@8dUY9E1++drLMuF!pCfPj}Ga$15nvH#I%& z3={1dEo0^S zYe&iR=thiFj%}>1fmP5348S0sr}`RArDVbFkEmF*YUfrh*p=2RJn38z5g&@?bmnfQ zgsW(13S$u5+-_c6JwA@q`XFHC8G6-{IVEU|g#qdn)Kt_731oxMAIu{Z{m_v~`OBBj z;vy!n6o9l?Qtd z@A%z2(Uq)JwX*6Fk*27YsRFGRx%Ld(w~L{)GxSPW$I^=H2emRUDo(vhqtxw1uT*}O z5G_r1+J3a#qRv@3m`A%JShPU*@`w{IE+cDH{Mh zTEoQ|Ud8r{+Su>HB24Qpb-pqv;tOh~@H>?h$Lw=l-3P39H=yKH6Cp?>-3ov?m|Zh_Qp(yo zsKa?O&twf8lF=^5qo{0*yK#nB6DHo)jI_qosiMt|_C32_^mXJ2)kM7N zFCojHUfQC?#gG42Qa8i+)r#Sg%@;CO`A`_%ZSeA3?Ge`gJVJV$`MT+Nb2nbaIDEUv zDLH_DX0l6h05e^1t*sY*%_%MFlTq=v^YcQ4%rG0dgiAVWN(|#9xZj*K^ZWPJ0e@u& z)5j)?cY4l&xd@nggAif0=2YW$vK#65MezLSjQk?6ulLi)U*+`Oas8-`%%PficAx#L z4`(_XNo85(F5{XRMUnZ&IGB98XA7{Egm&gW=0T1|@0IiEII{{b%r7lDSs19jFY-5% z5J#cx17BD%)%hOu%v?40VQiOGP^gh#fie+K9lpg%VK&lNCF8nnI*2s5_92}( zl_r~8|J~Fr|B*4#mYKf9=0W3oCBcG2S({&6Yb*VtPd#|VuG>Be_FF-cOP>k<<|j`+3{N_@rk@BE zboQa=AEQp!D_ve&V&^bikpI)K@uJ<|GU=AdIGg)PUc1ix5>!O-aVdnjwvbw71?49` zBAF*m;*0%s--*E~|8Zqk*7#-3f+GTxatOS-H`W*@Q?@vZz?9Vg=`QEe&U~-K8W)b*sDCG!OzhP)>FI*#0>s945xkHJ<$govt?&c;zc!_U z1`(1$^*bY%FPL`;sR4YQR3PV3($ixr+;UR!{xB~x$2Q7Ao|llfpW#c6ZPR8421Q>M z51hc_7VTQun?oHrYPC&^8ZSJAixDa@+Wf~qxUDwhsDLSPZAoFKOYTDr%G+w3c6J=w zw()wJTh~T1N@3=z4$ZGznTy9q&Qn#*HE8L~AUO1HkEiEhRD~$S{`8YvpXMs_nPL}M z+%37~;9c%7IXqN7zPu*;34$DG-`Gx@Qg=I0url$ezN1A+M6`Uc503AnJ9e$6A%H-} zXVVqq+kNrp`$^GgqLA?X}?CD!hY;Z-3sv$7A@Dnn3! z{L@^<$NSDq9}lpnlbAkj=1)Au5ootKf3H0&6SgHEgykJ1?FbV&S}@3Lms z6+-NqefaTG^OxLgr@O)sy)p=bKKFmtEt7A1uBas2d(fhb@2ay|JK=68z|C!UAmzjHxi z#6thS5`=y0iQPivpPYc;kg~6cgfppnHWKzOk?=R$;G1obzJ6l2R{Lc@j~vp*v++(F z?;BHj7Ws)?*!T5SA?XVTQJnl04QO52mY#~J_Ar_EY7#Xg=BU`W94vF)g2N)&ZT}`OR zjrbE*Q(fWJ(<{*VzLnl%;p%E$JPZbVWt|9-HsiXEjwXzFYmY9I;X#NJmX?Plmh_fS z@C?i9xU|QiIM134T%@Tg3@$x|vJoOyN$A+La&XA|okz8M=XRHKM^D^GYpYtm!71|H zJC$Qj|0%Ehq*&aw=Qed;o1FzAf&&>;f!*JlP`H9vDq{30DPsy#Nk~U6ci&d8o8&tM zI^@-szWrO)cJIf_LC!);1No!uAKA_sj$MER8P;j?%}rliITy1ZMcTF{G;Iwu!4;}} zMEtV;HzI9XS;^4)u7}GF#Gxq)ai*<%`LkzWK7YGj` zuwyjC$@m`MdU%c@GHMUS5GIJ#tLenbGBY2k$ainb=Z&%S)>eeQPsOt%YKj~F0yzSr zuJWj3Q-W!OG*y+|<=pf-dJx2|I+0<6s!cZM&EDrGu$0Z{epqOfmhndTVb@M#aV;5d zAON%7D9?zKC-vTLy*fX&@5s7@KYQWl7irszv}AEb_RLsIV_j?*_4J0sRO;Tn?KIr$ zxV%N9a=LZO7SBAqasAo8(JCz9F2fnj7~rL)mn);9-l2r@7&OOwY|^Xip!0mbi_8zK zLZ8|=E4~e4p#MI2s@Fo=xo#g`X-qe7&ra65Zn3_+$==*Raq!GDc>464uS|EJOIBxC z8S&A{gt*4b=DBc^Qy%wccdq&FF{f=O zsiC1^TYPE&>_0iRKmasiFKKv+Fy~(32sB^84rQ)7hvvke{sHS|v}~uQ+FPD--;#Kb zx#i7ST^2ug4Uz`4xgje|qCdx)wBg9qLfof^ zQaqtZ{jg{jB1A-OY*!fExgz+D@*LKeXEx9yTPZsAMJ40C{}pef;cQ2bD;s8eI)PJe zA3mG|BmiPk7Brc#%_jgp`2;?(f<%TmD6nRd1^$aORzA~NYA_ZX!!;MY2DBrwco_)h0@bFj^=>=4B zdVrp$V9a;NxDsS6gY~mD5*=@pPr98%zq#xXHM5wrNx5kNsG!i}uG1ySLJ5@6K@u17 zpkZi7>tnmEjRI(7=$WF*u{Dt+_UT?XWsEWU1%pYyg ze{n?;zuhpWyh(RWq!%olrbi_5YNvanPigXbp$iuqsA#NRj`1><6X2UtQU&YT$_YKJ z(S_=yp`^dtMPW^)KgCsvC;M3Ts~6M3Q^Wh|Kc5cWf#E(BRo;_n$cdrlA`tLT{IVU@IdR5G5s z`9BsusI!i(?a37x(q{|;r+!p?Jayr@H&}(cgePAqVwILlijd7};VP}|?-oSg&_;IibBDaBoF#rvvKW(!z zlLJyqbo7VM6*`q*GNbG-tuC%fIjd9VRJ^gaBxJ`Iy1d+vM&MeYeYixa+ptx7e`{@x zz!-k;;2C<1W(rY9p0LR6V>(j&Y=7nQNNnwmPj@(=1-S5(gln_ONZ}~C7!!w;j4?nV zYcn&0xT_q>;bOLD`>&0&03ba8?WikpFV5~F;5BPYCi<9ZmRA-4iFR~qHN^V}qHW z_Tl?L3h@^S=aj|pvokK~%+|nreAfiA~6cTyp)BYu}IRPnpTzp%TVp^u2W@ zs(c7?!}_=9Ez;A|rx*T|zc?uD|46cMTFlmiC@;SZ(SwCEl{{f5wF{1;laKl6H$sRC zIpfBTFhS=M_9)MHxARFlzRb|*>9LNsHBkTtICYa&>1M|jSZoGGL?Q?!_jUik{`~yz zD0N2^QyBs>XWLD74W@}ZET02svYC+tJm7(IgD`^iIIco42b>&e>g4{1X-|82hOn6H8iKwn|m@QXbM1wTRR&RTe+ZQ!tXrCxf57@ zke(5ho1bfMgvU@a=bi+LX{U46_}^(4_SSYbH-3Il&>OA|$=~_zf(xYAhT1)Uf1}E? zqE*^N$-y9T`g*b9C=ET?5fq|p3snYPq~n^U6LEc8Ql4-nvRaD>M2>AABPAb&^VX&< z^*$>RF2~gYTEUVZVkLVVF}Wc|f>v^qH+E+qp4007B&g_h;nhEIE|4P=R(8XH0LP9m z!n4x1{8;er{|MntGdExG^t5Ci&N=^-+V=2~3viO0WH-*vP9He>`M5j(A-GFEeKIQ3|GOpcZ+Q<7QNq3r%(?@*$$Rfwe zD);rhdSX+iQH!^z#gIaqzt-NJuGhW(CO9;*PQ65O*in9d_H})@b%@@C4G(N@%QD`7 zjLJI2MV8a1B=SKDzyTL#De9h;Wt(W5uy8*1 zj=_0KA80l4TWc}Ie07aI+z<>Cdd$($D{9>4a85=hGN=8p>hvK?oe~D`<~Hxf5vL;#7inp?v}d$0o$i*8=4?(K&c@6koKY7o18#d zq~j_|8!T9!gzIpYNetY7RuPe*5YH)e%M<81B!kZauW4Y7;^W}0V${1-GsVpSsz%1- z(m+b0dLnF&xCtSaK4K(mKAu$e%X>u7b%EBq^>p_Q3__%bQ<3^dpdJ=k3TLR*Q}{6U z>#3QJNcH`TTzUN`;%%ZG8g@TCt@$*OX(93?<_Nyu8fa>+f6zeeV6Z z{cy*U)wkl}v7GjxQyS^y{N?APcHB@AdU2S*E-2Uf!X{VNVDYZ*cqk;8?A5Ew3#;xj z8#}e8K6oD%Ej6Vx9$TLQdPin(xINYMCEOK7AGnMccT7L~wT$YzV#?K#e{Gw-r#NXgEXLl@K z`HJ6ZOmj13%(H>lbC1|D9QuzIz#5G)tNy=KOk!fQ@dsY*>-QNfPmGm(WPHmT^Up!b zc_cV0I6w4`IU+7G7-ph(=&;xe!V5J!aCfLS>UePWqs|Zj;JoJdl@}*kFT3vz98B-P zl>zw}DrR2+C@FC$t50q}2j&w@xs0%L2VNOoaHe0W@ zE~3uO_lid6*ZnA2GAsD=@p`JPRPi;Fv&@qdjPj@&^T zvqZWtwHWdvX!2bnfTE4x##nPkW z=oVldc?)46KXulj3gI5{Fc=RA8+g$nHMywqcYozrUp7)fuc1 zhP)8XDpEn*5sxUPgxTZE?f|cd$KbMaXH`#wa(A3&W*Z=%xW^_YdHJGsU#(~W1r_1l zAy~)&mfgL3g@lL48R&6v_cw$lEXXq)JSO`Do2bEH>yTvV*V^_mS_G^L=rrJTWe29w54G{$` zg5kQA@B90CeNk3^7C$u*8SKZ}1K+52-_{{O^QkL#+Oc#-xi?9^e~dmiO+vo0k>7o@ zEx_QlwgwJi++1e0i{B%qz=Dyd!0=WVn}CC@&ZBW3&gHyQD~RT&JgMpyAzFw{^1$fm zNpp>*$sHK;=8GM%$(CXC1Y-L$rzXOV zZ#*pIG`J$8sPi297FigLTH3$L-L3Gv{dnq= zeC}CAQnmLz3sMoux>Fy+wrysUOZ2BtK)^s*(6B5f3G5Kn6ldOlfkIq5Nx!HCS0F zv8O^*R(HZ>`Sr1WPfK-eEdhFE7TqVUuIR zD-r-pOcCcQ1I6mb#b}?EU~O)?(bE<~^eZO$H6Y-ZexJcS(n2aa-lp-QTFa$JvItIK zVI)p~{{g{#GrH2**Wm&#g+D{^$5%x$d8;St&JMWGG9ny_4*45=}+}?c0KqKhw z+Y|o)$a_Q>(*|NdN1Mt@&o%-Fx@Ef!9kREgR=0F<^RV z8=W3@Z!%g8CF#%JX9C77>@0Catsw@k=ldw^c!DG=Q=rdD$reY_5eI)dOn?h#Y~Yh8 zbjY?0{|A*|QwpygD37uLB!u${V#Cny-wVOM4+6gPWL(>WOqh7BY~|Sz{Tp3*EA~J` zpc-k&v5+Kafc{39s=!+?^EEQW)$g>oFB4l;h!~T{4*Wr-2$|zcglrl7S$d7ZO7Xn) z@R(hr<IomfJo2dG;$BLFQw<^hHJ5vn6Dl|BxPL*4D$QX_b~W>BSN#Cof;rE_!J*QgZF# zKAhPG9bfq2U()R@HjUli(eYycO_v^4l^b$DEqE>TjshwCQ9iohal)>@lppZf(c#U^ zPoFp%<4Z|(stDS(rEW6nP|OzRj$(U7?fZq12K}Ep;{%bF`Q;-_6BN65rb-eR%p%w1 zR823j7uhBdJ2?Ap`4zI0@9uJdAfqVyLT>rbOR-=Xv6y&+K7IY#)C&vA8NI5q#^m-V z7+3ozCX`fED4{<9Q4(?f>2@Tx-D~=2OSHV=jzih_QP+CqgE{JNMbY$l@J3opXrVLt z-u6|j5KhQ=rHHpu#P+s3TL0RIdB`F})?rzC5Rzz%< ze^5|{&@e4AwV$r>gSk@& zsJ<#(xP8CM4m_bWWJi0?GyL^5{KaJ8xcKYY$n$_!)dOQ;-{7D!MjnuQy!WI}yr$R` z5EXsZc(uRdona<@gwk`>1Qz~aD&2t>F)U>ro!_jk6t@PQ87iT=_`Q6Vy73mum zq{5$&V6b_Tc)<~T4J4m_C2NyyffN_n@KZpFRuL;ZN_Z~763lvDk5>6!s&hWk-t_HoCwF{{OV}g72fDK)&eA<`qGi{C=H?FCvPGX+Cs#9b$jp+5O#75fR7{4k+BQk$Lw8_9A2hO*Q~>I)9#b z&wj?LVt2_3-+QED&OTiKa6|umqBdS9YN3 z8vzi3_Y#hEoI)VAC>X+C-uybx9v$6lyToFEp#7KJd%Wto}@b^@H=3k`^ z^0U8KjhlcT_YGYozkVGdga^Qj+=F01CElBXQ@v^kl1JNt{S3{S-wOV>+UGf>A-%l_ z9c5`q(^19}Qe5mVe3I5;JXU{cvU--5FtpHUFPH0rC6TeCzh|J){6Rr-66D`de3Zbi zbX{5IRy#JO!k`1sIec;7j@hY9DVneJ2;YgLL%aBPhxHeVooS3c~$4tBGf3)vB})mC|%AFU38 z;42Gq&#q~0I-R)kae;jIZR+yJ=@~VL0hL#tLnS{n+4;R}D8P;y9j54=JqhWh zm-jA`11x9FFGjBRm)Rq={S>asqVj};$m?=s6BmRVyxJ8EhuQi=#l3ihC57X;p#goS5M=|(%CX+SdS`ox*e_nP(JD~;-W_Pd$b)XHi>^#tWD$l=gS@`X{^P>Z~7e3H@H;QIT~j4aNP z+Z$s4415EEJBZz1iD*@JT@&1~N~|8*J2s|C_u@6nXn{=Z%5e#a&CjLX`Q$hL0 zErFjMvhIA&am-?mu6u9;;-~eTf0Qc||%wIQ<41utSKA@&RQKs}JM*Zezr`@Yqr?*zZhM zCy1;FHCD2L9Q+!ej)sE(g9!1&cneSO{3r#~uwcv9OdPpzs8Qh;>p(V%o4jA+x%dX0 zutpoJ3(N?-%MwpK&0D)MVu) z6}{XCt&_({e`NuY-PTdIq22IOeXp+%t(9OXnIGMD$?rR+Tk}qsaepo?88(gG(bZLS z-+KV}BamM{fW-#Q6StaEB1|lmqxg-)BjV_*99}8e!7l$ms1~`(5_EE^^|z2XtnI2Ud|ywm zJ|n)xpOgBKVdkp4pb5HDJpI*T%N}(}b2q1(UQ zHZal+mYb;jQYiHtC48z08Vw$ZGuJ70OZ}Z^ON{09$B!SKmlnw+lkQ+lKpvjU@82aL z7~W(5KtyHbKjaMHkP=K{1B$JXR`d=HoyTHG=#^VrG_K^myX(b^Y4*RlJqWb_og-gh z?m25UrV8OHx)Y_sBRV08KX~w9tU==kR*NCG*FiyW!Hq-qp@^xMmhZtSj6YkeD>Q%2 z1=CFDkBtVf9sl6dQ}{}1n`G%S51K8ji5y*z$4N!oFqu9!Gt*#|t50(X{aCJFkgRgz zY^J7hLF&UxegSa}qc5pd-a|9&qotujHxkUWGB(HOD0x1M{`8qfWl0%1zjP~+TL+WX z!|>0&q@9lrVv&nY<&pC{@GIdeM>47g{oeJ-k!@u?-D}Q{t9lTG(3?=|-uxvy0`W`G zg;N%RwWLAVN zh6yCUeLNKnKL)|4IQO%G*QD$H_HIMGZL?K&diUR%0afs3Y=0FIv14YYj38?QhHw@R z3$W-&qa`5wZc4id8Tl7qEg_Wp^5u$>?FHOGO|_3M_N9;oT-JTTA{V#Ku^=Dubc>>R z>K@!-r0uq_6p4`WV~JCWuMA*Gc;lj|zOmABJDZw~iP=Hq{N0#lJ(@GTyrQS%{0=9} z`mxB%`AO^&$@%id?ULX90E(iX)qst?$?Azn&}`}YD?eR(a>eD?m>g}$+=DP#@Lj&$U&5y8(6HFH8~2{*T%;3tznZU zL73Am>G$T%1&Eob!?Jl?)UI1w0Rk$@F%DOX*BT!hT0}$dEwb7>{V5j(AC|M%COyx| z`Jq z<1_y)@L+Qazm=mlJ0Hx31z7rwHH{ylq`U}%GN7Vt>*3eOOqcpgx%QAP4dVMZ|9kc> zmu0f;o$S&S*asSRP{4V^N<*pVR@`N-nsASD-n){HtAZ)F#bq(O;9GeHNzZ4)CiG2- zDn+jI`yA1)`QA6x?X&pD9!mlmtv9xG!*_kFHU6Ig`HsShDtE(Fymr_LIaTJ3 zGk99xH(>IT~T9p)+g;`lI>OXoES=K60)f*7Di|ojqyS`f`fqUJh;+qUfExY{v z{Yf9L2|3QALHyIV*|PHHO8!QklPC9}ThLYvI;zI4R9->BV8o|d66KWnhlhIx1_su2 zbll{)RsTNjZb{AiO;*K zJQx0mmxPsf&Uc;C33w<0etS^oyqINC*O7HlBtnV3-7+81@JjE^g=yxToheR6otAN`(l34Ak6Ehu#(7!5#0)n)zJHSv2U z!eMK3iy`dYdx?Olj3;#)x1i&Wi11Qh^Vtg_%y!$UQ5P3pg3eadItgz}4q{8vU)KbE zBVRM;-UYeV{+^N!0d8Jii;0Z3FC1AZ$L|O9cwGcx*(I`%eXFicYty;WrudQ23VL+~ z45PaDO9<|D--9w61PDCC3hK!eMIrHRy7bYT`L4fdg8qTV7jwh?FwpM>sA9l(x6pRZ z>auOi~>&cMUw z(EG_8v&6zXh0$3uoqP9IQN?$_pT%JN^rhH31<+?&Gh(xssk7~_exWa*-6Go)VbYqh zdgWO`N1@_*$E|je&V2h^m9DGy>Ubb=ktQc-WlyF- z)^jgPzq7Rss&-p%uk)C!udfpPK_$=JfyxOX<`|y0hh2H$ur1Sfc0<%s)R<5JQ8(u0 znoI8?>yNcxbtP6?nXC10gmdlLeyy|C51qU0r(%ai&$zPRyHd}_imt-c#KdtGIX|}T zbRrRt%%Ku{Iqa*i{<*5qu>bau$@;a{&(1mr);>OL8uunJuz@2clPl5iNBDOaI6kKf z6f|m%JgFvufKO3~AHw4|5YnxW6oq|sXCslw$RgGuSj#pItiwy{M7Cj*2h^5mF`)nq zba!!LAzWl3tjsaci^RM{?7N&XJ&7c6M6kbw7v-PRv|!v#$>32m?F>{z;Ja zHC2W|3QZR%i$MR{saImY6p>9#yz_(9Jl@~iMW++WriDIh{@G&6qg(rJ_m9YqRBZFJ zc_fOcUC`U~)54+it2-nnv)^~UxlQd1JV*Ci$&Vj#@;7gGG#3Y@E|HlJe+U=0@LGR- zerYVVaPydU2q`sfVu)y}0s3ttweJ?GQQ!^#)zrj)J6fgVg@;GZ=EntF&AqFC3Qx82 zlqfO8WalI5_{s@|*#%qDd*jVbNMAbR6BWut$hL%n>04L9m|CSX13AHzb!ekH9|}3; zYuYA63p3sAnd5s0P7wi9=5879a(v=j_2PxeY~b)v^FG0By;=Rg4D^*Cpb@#jf)fA( zsVfog&wh5E;?$dOn6T8a*8I2lL)d%AbG`rn!`h{xQe=cu$P7hxAwpIpBV?D6>`jZ3kdZx-tb~xg8g{mjy+X*| z`?|l+IiJt@es91zg@a%5ff9aerDk1pxdEvy zr(B7_B&6`KN-*}p%B#%ALYr~p%Lt_KLM{klHAqxVXZ~B@nA({4Gh;{tyqy&03&j5R zLuQHeN+ReA5i;@wLjToy3TE0i$!_jHMt^=%?A+~GEeuD!mP2uP|F;6g6!nvkcGiSl z)Fz;EMP?{r&u|mKlESQF4d2)fpi{#Jx0&U=77a{$h@r(TFQ;*#usmqi6?l%mar6^{ z@4SJP<^63LSb@V8yt1F0FLqV9xEHQR{rUEAn=7|2|9dcLn-zb2^Ke)ZayxR!Ic zUlm^t2n%~zR78I>x%D(Cg}D)VB<*Wb-5d?G=>G#fZ!Hve~p zPW00Z6LdI&+p76(*%}Z~0A+o^T2YhPo@)`h{xzKL*)38rQMzT{H`+uETTWpKIkeBt zND=(Cjc?6Pe~S9+bbicB3Y6U_2!I%%>u9SP#+q z!~;hsP^Z6t7s?loTdU&_gGTvY0+J0@2;NG{hxeM-5duzYztla6?E5eE91$1_5ew{@ zVPLj0p5_%2`ud&8EqQFy_&*2^03t=jN4Pikz@b}OPSa07rHum0W4GGk35+qIj0Zrn(8h(Br_`?ANCCc6y}Ek71H-LdiP+@#OJw}3_9rLc z*&8ywFaEiXGSkg_4XbgwHYpq+Ht9naE&{LD#RKZPF&oy1X}~tfslN9o{@qE6-TWA*aiAEJrCC? z9a==24=vBQ5MF-Q4Uekghyo`W=9`vhgg0~jXv1E=t^xoBK)w$ViwJ2!uy-tYn=RSzi5B$atq0B5QzI!}ty<)scp8HX$TZV84HKVKl3!1J z=vmy3FGc4;Leh^oiM)=eiy3W@=+Sdoo)vO*ejz7GQ}AwzQ9yu-#P<-;>HUzg;pbc9 zDp}<{Is?zs-?J`wOC9Lore{JcK~;V-TiaIQGur%Qn6>Hnxf{p4CFq}-%gD>eTHj-V zN~zKKB9Zvjl(UzXxlwxeAEf`+(y(#m}gK|oIT(eaf=0l^U!+mrdA z-#74_o|t&)3G~o-m$;q5e@jG&A%e`l^vjncEXf&`KNGvoah#D7O|F&71YiLn-LX`f9|+8Z%hd27gobPXRviGMgi*+RxkVCs zNSLQnuF66q|ND2X#0I#j8#nyhi(L->YX~tY8AV0B14y%NJDi~@eD=rJ=J#~WpAm}1 zm=K4+w^`HQP}h+%q%tK=&aulc0a5o$rE z;GHLlAb2`Txq3W+(f2%ml(q;0?cBO=Dwa-#rLP&y9&r0QEr2TZkdEUrcA6Q8hB=j`bG)WTayEiD zN0Td}e$VbYBzKRZswWB(S+YynITYz|E&K&L;UOVDC@)`-o^(N{ zIB7=1>?uP2cxf_ZdDh(cINbvgU05jrxump zx17#ar95`!!s%;Iudzz))xGz}MDa&mTDFRw?;Ez5d&kWbFFbx)`Iwb^ZjCk?7hqo?W8?3entD{^a&mR?wMf6ps*M8mjydkUm_n&~^&kc+X4LJs8`xzczfVPM_qeogX zKVtQQh9tgx@iMT5@CSVuYZUxHXh{QfKWGX>A3ZCrm>NNWl$Wx4b0RPfBVBm`FsPK3 zz6%NT)hx7^tDd{9=~Qi*xw;U3 z>%O-LeA%pB&{Ebis94K>0L!s^@ymAn_`sr z`C$U__zJEjbwjiZq&kLuAcC)2LR_2(PuueH(+sN-0u{{h-TWCz^fgP%qd-ur#;x~j z?SM`>1-NX27>gsh#r4kjQ8IoEBAraRx^F!>TGIY;^Ips(c2($X6P8S;*- zHPyvVtzu`1sBD{aFD|9Hh-l_pQ^3od(B?C_k!D*s*|EUw?CcnW_JIqPx5$D$4miAD zE3&?KqGZE12%j8*xxi1&-bdl=bXf7qba|#z`^3dMA-3HmFSFmiwIx@tp`zomBu3;W zqG=o7zhErpSWahmKsH|P|#wG*u-u%j@v+pbeyL1 z+*r$LC@Hyh#GV2Fa&ug9wcmT6x6A2?E&G<@LRn|-k>MAs6U@R}ByxB~d(H={84t*v zk)u2xvs&{uBhPj9;1bUUYsopK%>~!`1g1Gou?WGH9mB&x_yahdT8!R>B=Xe-zXOyP zhC|Ju5)TK)&z3?rmvPCBY4np!w6xsSd)&rW16302$2G{}WGfx$A5;e(dFr0RY}~vH z?!ols)jIppkx?6Z0j0A3w84!v*+ia%MAOv$MU4q&wBKtDmP|;edNK) zhFzlS;=wX{Rz?)2a3;&nt6#i)iYO1ATn&QOMJYk<8+k|FcpZo2Wb{-+vaVk3NLzss z*yGgoH(=%0jeSIBn+`=6E3GgR?>f76W5jvY}>S2)&x?*E(EUvEpi-M;-+8_iW+ z8T26MOg%rHeiq)}kPzl5)t^HpFW(Uk5Ho#)#PdEpjx51UOx4achYwQmE21})+;B?` zkg{WP>9HWKB9G$6fX88+JrK_N1zHC~0YZAxMS;?nO= z+4ffeai2fm2fJX?Um}{dYsQRc&r)b>+ugg~(v(4ohJ|;cyQ~Te83rf1cgV<4fy&|J z;VEy)VuZRjuv~v*V*~^>0|0yJ??LRB>%1=Ge;EjnUp+!f>JAwK-5vHK$BVIMoxT*@ z48LAeD}9;MGc|n~-1cj`nTfGFa**XXN^KRV-|D69mXtKA4(4_0pIC2GC^X))^Ko!3 z9z=0TTK$dHh&X9<{z*g&e?zgvL7bkRUTbQSssf4(s!_Bsx1K(&y94T@AkU{_KJ4L( zzt}D#(a&LPLnSwV5!RBMt6I>dtzVOpGHlNf%E&J-FK0SNjOhlY1H-dJmvCH!zzA}s z<$d<;!V@f{#{lF>$1Gm`XA*iPrr3Qwh~?ImCY7WATz>?b4-8GulzQa#PWAT4%n!HKYyfg%q^7b*;Kf?Z7dkUK8+9JDbzSt3uDLWM&csy zSm@~Kp+?uj(ahL43FW~oAa~N=y9%29sRI-PjQGBF zJBz%%g&h#3)t;(4dt*qMD!tk!R_(RiXoQ_F z=UMKel5q@Ys-~8u9^7KUkNU0Ci8=X}WJCI3g7xp|eb^cddyCod=1cO>gnw&J@2#m} zY|04@r9ejnD(3M*Am!p2dMidcH{ajP+)J!pIzJlwZtBNaf?1-nbbAQvuj~9KgJT^} zU?e|GBYcRSo*ts4hq*LcgN2o@iA-kX2GlMTh3_{vP;m`TRXWJ|V)718$&y{>XDMSW z#h8vs_jW}3kj%Aa;7WKHhFWfB zcR$?LgK!P+D53CyN#Vy3msA!^wN~JTS{N7bfBpL0z8CUQg4d;YUO>cJ1Tyt@F)3M;OfrPaqL=oEa`_VWL^d z-#^{sdm`ZJX}8k5#UmKZ_UQ5(puP=)BIKxdOcZoW02_5PIZ89ktn7uFWA91+dA7#J zJ&z(nGW8@kIVC&gM8C3~GdzAA8#u$M{-8ev7*$YyME>3fa?-ThE3cuz6A91`vsVxN zWml&iC*xNYk96>Y5wFEE`lU0D*+mUq3F+imH8s##)_k`^_E~; z)yA6VOPcQeICJD8mWvf^vId9hMI;H<606}F&f%KS&&a}=O^NpNJGHjXPpfxj^KQ9) zF#Ey5ukOvrzb3ycxQHY~geUv|`0)&0L7ZuO7!ydA$CC4Q?mjd$)*|DOtr08nS3&sF zeZhVEwoY_OI9*psQqC}x-O0(Rcw+?-W0>OkZoXG-L=E@)`tHNDZgUhqkNa!}t}cqz z>*BJo!97g3CbyH^g30bZ)utZL#z~G+9;Iyi zxv)^1e$mxA_ln4;1@mnY5&V6>emwFbug|o;$K>Nv7s#aen4@^_Zn`u2yNJ*?R%@e; zJLvUN-9J~!vF+Z6Zek9@G^_2p;_0|Roo72iyr29&hAZlgTj&Rqix$5AVEQ!F7G6)p zgrL>%4h`iK7Cr@A7Tu`4fq?-eu{6Rf`b3bPf39GBx-edXt=hagDCIH&!Jt|{N<}4x z<{wWVVKn@4@$f9d*dN$aB!sLpCOE(`nlYZy=Obk}@XpR$UMkr5S0&wW%}juG3W1lv zENfwH%^obYUDtQ@k`X)a=5+P)^0`+Trmii?4BrAG0g;F&OSesLu zi%DL-=%`)low|(MIJxaS7kBi!Kzah=e2FmCdKIia2o36qlOYFV>6wzUBSD@vUaN?~ zacyj3f?;&QWpl+I|C!9zrWR&fv>`wC_AcrXW<1lSJ5=3%iJw3AM$+%5GEJ4#B43!C zSANI#IP&1msJ7m8-CWt}>KYB|oa*-N{Hg)n`;g{UuXkmcoXj%e{gD|N?Qy5XRr}h^ zkCv>24-*g-DP$UIBFE;jx9q{B3B}kh5S~cEi+k$seI-Suf1t@5CrqMU-CUE%kHGq{ zi#`KoG6NGr?&c-kObghBhPv!}^X5o0jn?!~%MskBuaf3N$7+hKVKD$E2!y>Di|Axv z0PJi@X~`*f4Q^`Y8$wEZ>K;9eJZi(ec~*`7!+N;m42sFzY4qzZa%qhzVd!UaNgIdk zim`ox-__X-Q`{GPULZ7}9NdS1n}CrS?-w0r4LL4rJTet|hPC-2p*PYm z6&`bxO0xG2lAazn&!XUt_x-^^Lcz6}=R#oq?2E`av_$jcySpW?p>wh2a=beQ*{~S) zg!JsxFOWhnxK2@iNHIg&jou|bo63cyh0_hCx6$#_*fa&Dw(96@=b5r&MDR3zu#>a4 z`W(vLR+$<+-j;?^IsLI8_x9cuA@Z}Tm5&ydUhM{Jc9kqmPxtLRdpvZ;hBd0SP`HC* z^1`(M@5)u@^@HWUBt}y`=9QK9qR7HU#3w29Yk!Cqr@xUDyvw~~X7)YLigTCa_>Jk+ z7>dD`)}3sXQxHH;AqzQa-l6P;3lXcDf2KN~j6m-dbW6*bU%yEut9GYvJJI7OR$4)g zGyyF>F+`F4d5uW{;qz+El2jQSOzOl(2ZgtsBUtZ83Obx`b1M1y^8^=H6rPFh+iRyL zHa|&tci;iCT(P8%cILvbk2Z;h186qFeposC{P}Z&sK6^A!0SpUUfct;J!jiiq3!=# zl@$Ad*0l9QiglWandT1nuP1^L*3>b5#cq_)NHws~e$>k98wb3_Hd4P`ne%`jf``i2Yw&A*kt)si|?_&_%V?%ugSJ%ujkZS)RXWa(jLquMsZl z?t-?e`2==tpV%8`_q#6ZFrx9je|AVa&z>^~tHl`xhUxxiMKBca8L5wcYuY|bNWa*> z-{gLG{-MuUx`FzLs*^GEEFSamNioP*hO^XfR2>WEQN{$HPsR(|O15ZZ;-twO^Hm{; zANeovmrUXZTm?#@i&J z-k=By;t_P14S@{+WB;q^=``>-7a`-0u^!EUBO(wW@9*};mQsXw?-%n}MseuABCdyv z6CwnD0A$zGrCz&ufaiLoo=t*H-h7sv(IMXnt_n&FSb=A+9RC2FUhKrMlKuUPf0 z2v3!X5LA=O0JE0MGPb=@)7X8>tVlSHE8Mu{PkZJF75>GST#MCY$!$of)zi_b#Ragy zU~aR-$-8k;GqMD-d*n;D!M%N6yXf-4d{<*19i59ixw&YhW_~Di78l24RB70En}}Jhq~;4z5-#>h#vr(j|Re*Zp@Xt0sO)3ITxxMKX(- z526GeSj%>yE+H@P?5))GS=~eNeOU&Thf4&%YnLvk^ewzO&nYKxf5>KP4_|t`QT>b09XUcprFY(Udf{MMRgz1p%WbWN$Ve+o_6gU9 zhN4tIKR;GivthUD>FFlO{GZ^AX}xJ>Ql$*G^^( zMm0x|yrEjV$lvI3LV$-FyB!|p;6JJ+OKBJ{4VH*KR#!3kAUw$A+|;uOgW7-q(z%jc zEusN7E73GO@i85hUwC!TwrV_`bJZ6*oP7e%k88 zhd=tOO1Qi%>}adrNj=%OPwmT8Nrg1;BV4qoGAt|iCMc&R<8Cyr*{^GH3E~t@Rd7Mc|qL>`B@ym9LCL5eXC09kgaAnX}Zrlai96*j1nnhH<{UjrS!6 zEX8^wKI2ihFy37|w_o`(J$*tJaalApv7n1M%{pC?VS5vO=4S-flA^j|CGSD?Q{RHq zk!s<>40b>X6_ub5HRuD*QokC&kb)bR8(NkhshZJ%E-**wHNK6+E69GyK1Rz4`7kFa zD5MBpUO=1vS9%YWMc`?#Uc4!0XtbN!?ChM{g`G#aQc? zZIN-EXL`ESsrj?faA8*IwOjD;@B|GVqP$RIFtNF4u>9VsXiU4AZ}YcyMYus*a;m&> zmh|k9L38m&#ci}2iFv$4keG66TcK#o<+vL|j<}#No4r>~AEI8;}mIr-%?bk0wKHA}egozRFYDni5&|RdGdSGO-+g=dDuK8vZr@Q); zY(?C%e7P$v3ZBFwWAdG8&mWgx>W+AesII)8wc2PAwPd%psb|(}N=P@sC!3TsYfzk- znYl3g+^*+b+K^0-OGM17$N4}z$`{eENR868idb2if7n@!mLp~7Ja10mP+3@u%tgMC zk}c{d9L4u6I|_XYVtz(bos|hX&BCH&`yp%UBye&4CE|RSqG3T}n%~64l;s%)y~Rzg zqJ&tW{{ZYS4tO7WeQK=55M;OwH;^j_Wfl3%*)s^!Jcrma- zBEmaBJ&SU-g4W`HAgcM+_u#y!tDs$i>tMJm-^TmRn|_2`*b)I>euVAOY0>!!rZwn} zWJa5&Dy@?+j( zX5V4Zl3en=*d?5RE1?k^qaq5|qiaIBuY{c;%Cn7R@61X2TAwDevF7_$gO_Cc_T5%U z1IA)R*;SHnb5gCqR+zBF{d4nZbcPXO^Y;RjsG4oM`xX5hx1L9u{t`eQfZJVNyEE^1 z2mk3Qih8ogPI{#LiG6~|c&svri}9JBq=;|n5BMsByoPtN>lH9P!0$eq(-V5BS8;$|y30`a3U z+%{*88^LNBQ0A4;99wZ1c?h9GozWtj%QrJ(O>U8Qn@GfZqlA|+)U6}TH-Am@nB%M0 z%xYr`NqI3&MUauYA#PoXap0G~}SGt*`TZX_eLM$4j+Hq6IiFY9>5h}uf(9lz5?l?*OBO;!r zqf{aW;0;3Bu{tv*vTCB1V-9!%Y^=rYim?#9psNLE1Z9u z&9M0+QLKz1t;3fb1?T$!>^u{8@es;MfpqF;iQE2-wGp9QR(qk`jkehNZ&aj|YvLVS z0Ph{be=ZJ*_)V`Xxpy zwG$7_>mny!sp#5Twj|Yb;*P6C$`k}RycWjkN89T6lLm~qX`C(@T;Xqb>Dj28T1BN9tM;aK(xhQ+htQJ$ zTaH=&b1!;JcsRz?E793%M9_rA@!Dl_DN}bZ`)X^ug+G65thX^wHEFi0=BgCG?lvX+ zL+n{`97O#YLm^i5LPC*<-bSJ_d$X`+o+UzXgjZ4x>6oZTNX|yujw)3pF_}r2$qBYs z#_4{4`zfg(8jRvie*ebUgrdE3d0Z$Kadt7fRx*xV3d)^@DjDe8GQ@-oV}*PMXp;`$D5jcdcBteR=a zF7|9VWlxMO2%ty)-OytkC10XPg8j~2Y^7hnhJl@a6&iXaoQJkLyG1VQg{~U}M})y9 z%DwtE+ufc*7r&o~k@(W>V(<48sItT0FwgJ2v5N92goK%_$g#Ko{PF6bT4jfnoC&y+_9z_^EmIrABP6B5d$P`N1vu@_&#M{ENAOwS#mI@@d>N6 z)-Rjc!V))4tshyhXlb4M7#M74-{@7y=ecgwJLkyA$b75kFgoh?`5}kC!C(K{eCyi> zt&=lTRNdPM%Lis(s1Sak#gX-PZsa*738KDVzrKz(KihXmtF$iC1b1;oN7fw1s;kf# zA#n_H4+6LYPXx)CHN1w)tNAFC_ri4qGqSgk6AxOO__VYF&^PfYF76;cs}odIfM5e~ ziDc+iP&PFyp(^8BPf>WHcF8#$5k!0rUjdXZ{|ay|Eft6PW8dBonKZ3h)Ld)9gE8}( zTINdQ%<0vdF4Kf}XROAQe^|Az|E6CudY|JkM~skxpsDY-*wjBIT=h!GGgJK;Vq`4; z&8yDgla#!CS+`56%)Rf2b+;2Tw??~S-`ZLsGy^8Dk6AX5jj$jUEs%g5u}?}u;DGP^ zJ=bF6oew{j1~sGJM8*A~6If=EOeS4e_!v@=Dm;VtuvYzl5=ptHQYmOBkah)M=6_+3 z2oY{i1C%5Si=1wxs2^n4%zp?>?z*f@!<#EgfI{{F#sjD07rOFvYr}lU8^h|rxcR9m zIJ;<(>?kVwRTiXIqDrk?hRdIy+kjq~o?k&?^&TiluKbNkj5Nh*U$PoL&ugwVl$_>z zXVKK{hEf0=stHm7JmQjW2)DN;!fRu(v1&lZ`txf`amH+$(>AJd2j&>*QPq zYvsbtABEN9?>-hXYkM(o*$14f`-FuF zadHHdkBoIM{7Ou~Hef>&MofD!^ww3TAnXqb3pZmHk&cyMv#=av3NLJ#o-A0{yZ1TW z`3Fo;2gMMUdth)xHe(mcJDrI4qr`pacqzR7QrE9Tt@&4^YFde_QRQKgcKv`GNszro z@t6q@fN(q^;z~xOqGGE%yU6wq06_i1;-9(JXGXqHI;^POPo018g}bGBnrjV>puJef z?X=XL@}JvC!C8Ub{V29|oZ;Jk|4gSsVoCz;`rN#O4D6Fe+2-1^ubEX6TbTX*k2)-M zJ6?}kKMRbZy3KWI^2zh(KR?IIdZA2WJLo|-E3z}9t@ z;e&cg>&#%(hbY6&zc*ctqisIETU3<}M`5oyi@ZKi@fTs3-%UV>Bl%%(AZ*T1Zu;Zu z8$Wo)xTmtV(*AM6$Qk3d`wtV0(4(R1hv+9@wS>|9N0Jz|P=0Vj!)rkDbC{!mIv*t? zYsIK}QnEtjCFO#(!=vS8s-Hi9S?{&AJycq;C5uBNu$uay|EEucLXhjKKaCL;z$gSokM^^__Dyuy=-@L)dSKnwuYaKK|4hk<;l1z=LsVB6`TOULQi?xy z*)^r+0mQ(M8idTxUwG;5T~$*f9@o?s!^6eJ{A%|kcG&5~D378ICA2tq{ML?s5qskt zj57zQ$Uein-4tK@%#l9_AK%^1MLqBxRUK@%Qbl8YaD>~>9U&#e9Fh1oUJ|hT`c3as zYmU4?2jC=7bu)`m)$nSa=S^cxj=p7-2H)bB($c3m{GdcXaaQ`*bMs&}jgLO6DJm%8 zFmU~qWBt+3ud!rP$mJ~y3(J1cP@^1d6Q^*i+z?f0_$4l|vNGuFCFmMahi92U)aGZg zptC1QqwNR^E6^Q*?~Sb2oU_3h1MIh133fm~re8`Z-REVl-J z=2}QaO+bwNkAy^C^sC739E$Uw!z~6^(VKW4Yl}&%_+ipHYtK&1~h@Ibz`*G?HEBea`=1*Xf0So zu5`rT*OY`okwfP6EPU1eRwHuwNr-VU`s17h%@H48hExnbz+UuBcQ5t21t6qe*B1!342&djfc-IDjh|W(=cw)u6awQ5FxBppr{M=ZH zFr%Ew&ORg>D^55sA8(z|(b0oun57{b%*pmU(|vNdJ_pCg5yox&sFRq4wjzL09?Hd$ zyI@@78a9nDS^w66Now0eKpi&119!Kh;aY)h%HU-8&Z4OV zdAIldx%Zj}jIyI?|Kj|HuSJs{y-%PE!OU*G9)SNF3_eW}EGyP@i|rrA$AI>{%v^aUZ=&}n(U1E1nq zI=aU=tglV%*~9VHVJ@3htI!Ky7;^%*^Rl?q7TFsmM&99?m9YMAJHVktB1aPiKugj= z8RY9r*JNEPb9(Rhp`&eid43q{CnT`Rm-&*|3A8BObq__`*qCyEOTp~)gb#m$)-9s@UAfi%XJeXdp(_Y%KR~i2T^|HoUbd2e%V&&_hwGWF zFFz=9{2v2;Q+7wy?$2l{^nB4FTOTDh+7RQVtewf4v6!8meNnAoanF;rn8*uv7q#c6 zW`~^OGUn&e-ohmNV0tg!v~M+`Ci<=d{Mr64H25@#kXT8GL2n9g0Ps>1T|#l0!MGS7 zo|=n%{XWNv-AL$&`ZD$RI9YfbjLn_OS2Iw$MCV!Ya+zz<=~Z|fIrd8m%GMBGj)ypP z#U<_&5c+rV37h3 z!q-g_07F#Nw!i1EP{9=$Tu8MqDU$h|7SF)NbqeBag!DOMjc5UGZ)?pquc`%vFW z;KN_LHq%S)=Cm3|I#sG_G66%FFn`Fa_OwZO5p zwfZmB@AH3XS5E{r9A#V7 zU6QeeT*n7IH*8kk+3CI1;}pGz#q%8d-RwjT)wYX+74?RrO$voY2^rA$2`|5aGT=l1RLK^C z@-;8l?Vy7Mi0E@w6?9(ip=xK}t7HwWP36q3O{F`OUxfAxLKI-0$mrRr*447CoH^`7 zpasx8!Ua6~PxsovXy+yp^5FZYCH6(_!{Y>PP>C_`PL30@FPm$>;rkV^GR`hc5XiVB z^%f7MghS|L+dx#0VB5L{9zrM;4e+?G&o}RD--z>-=O_}qS-j5s^yy1HLj=MS0j75h z4dp6)G^M2T>AQ2(H98dm(Ws<^$pU%>;5>xC7vj7wRms^e+m8zKan2k9vWBf`9PnOM zu}klR$u21b0*Mj=qisz^z?z={_X>s?W57Y<9|%|qefg4+K)PU?rfZ+-?hF`hmQ=)Y zGW0#%Vx&$4!})0pgi%qXe2&%}3uAngHN8+eO)s?h3A(O7FBRW-ooemU)RTtkCeHN~ z&MdTQ`bWNd=aiA|{tqdOAeS2Ct-W(zFKLi}&ii2379#EHm!H(qINJhMFv z^hd=0A3@=rbV+q+)vdSc1SqLzGOj>ZFm1XP(?8bIOTa-=Gz!S1FR#b?I%b--=VUN8 z{LNvl+Ytiy`oAVYBlW8x#vB6sZ>ZA5?@UX0alycC`xkpB#}oAxdnrb}Op`WsP;%~& z58X;Fm9nK3cK-Zy-;+zO>jD7CET;Po;Ul^Vm7>AIHhhj>U!8J|5OR84?ybS)>Ri`c zyl-C)f?b_AY|h}#0^muIh~X55^o2^Z;1HV9T9lJ?-PKc0pF8IVga!r`ZOhH|bI87s zf`BVYrPc>@4ZxtqI9lyTeP#$)zeeClTwTt*n){qkP>}G4*JWe%IC$9W3JPa{EMAYe z6paTd{a^YC1}bhMycG|uP1%yS+O$i)cYMmIUMZ>oHBhPh_&x-yGiOp+gl&XEeV0} z8IY{42OyXOM^ghr8u`;WFb*RUgfLkX0d5tG7N$SJJ30ET(r&7UeLn9PA>>KY=MO!| zJS07yWn(+ek{l7d*Y?k{^os<7C>7m11oR2B|3E{`)(jRG0If0l1eg^?wP>w7jv=qf zgs~*o@V=J2`+l&76)y7wspScf=p3QUKZ@fH=N|+cC_g(wryF>g?)=O9FPrPWSzDd1 zbm)IC>Mni5xr)UNV{B=A`*DE+b;qS(k6C3iKmn3CDBxl`g01{o9x9_#n_Nr~`5Skl zJ?2}&{OF(*-ghjbS{bC|O94GD8CVox@+c<}`SZ?k!4CbxRWpNYgggT%Detw6?Enx8 z7@_jpvn4Ab!bSVe*?~KB!)2{l=QEKxlC{rpD-~0UE{rYun|sVIfs+&ue%bTzl?K<(uhfQ)f)`H&h>hyaH}x<-cnnK6?O1EUn?uGHO)1CC`Jb= zGVC8hvQ0#YE8W~&BQZ6bKwv;crxWwTsCD;K8gQWv_4jjzA%qGdJ=DVB#XC;4V$Kge zEQZq<6{>9tA5<;Sr;FCY+S*nH#EEV?>N{&Wv9BIuQ8h_2$i0#D_80 zbICe0sb!o&Pyj-?I3;|eMZYs#9i2*T}gqr=Sm za%C2!;XKCAK9JL$L^w$apNJi9Ba#*Y!} z5e5qJ(%p!%JY7)V0vlej*+DRS7-xcNHsOrY=R*>4;70Nnh0V?Jv=RI1KCRS=du#6s zv_VD2x%M~4UbrqBJ)DFu%aeUx=PMmP2qy$ z^;>W~2>90q^~0W=Ces{mHZw;>$EHVo9@478@&zOn>R?3{-uNT}S-m8*PH(U7S>F)S zzd=qp)@q{L^o4&61Gp%>fnP;L3J{cY(!s8h z91M4r{+HVBm%1%vci<70N1{t`0_@saw~D+GCyfy0yIy39H8roh*vnf5^?#e-m(*iT-E4M`jEr2!c7{KHmX0od#b``wjCE)(<= z9mxlhq8PFf^~g&iMtDH;bFE{s%Ub{W`C27K_>JyWD*^}i{75v{{o5kc)MHkoO}iMb zpLmXYn?S2&o3X%a@ArkrW-yGW!(s`EuT4w9#0c}Yv3kV6TkUr7mq$-9UV{&Z!;r5`u!jXQ0hn*Tj~LmAJB2|2X#krN3a=Oy6}JM0{KM8%h+yT| z%_!vU?Tyh$EKWMeajD8`csU)LDil3;bZ@+DP@u&!m-OG=+cT=DukQ%7i*J^SCSB}D z>WUEX9GGWirBA~4Un;7l&()Z=q$7*!!GE~9h_&z%kB*i}a+GeK$&3}qeshJFc8g=4 z)Iq53+~L9_f3$3!yshNDzHr2*K!DG5jDc&S{qbQ6zFojCKBP?CZK-~pXSGA$Jgkt( zu#Va*ZR$V~BSPHNC2=h)r(V(E9aFo{{wwWvUH;t$ZCXcgj;ERSCTV-I+s&!q_F)Wsm+U6b5Ok79=oyZ8 zNZjtKho2>E+m7N&8!GgHQdK5v`GGJElZPD8hUDSw8xqp_iQ@CqT zZ{WGDRn{MOnNlfWagBrmpOjh<;?59eZ#~Zwm^%Lth6`bn4X`m~KR#W;OgNnH9mClO z3GigMOr;Xb+`m+dP_ol@y8o;F;&(;v-`tAJu;3quS;_8*k7}8=yZqG)op>M7OD-ZG z>Ere+v<&X1jaDF(?A__5ll=NlTLiEQaVsyuk+Qn5|AdHep~A%7Osf&~qem@inh@#v z{g%Y6gT3aOr?yX*NN>!ovhuL{GQcDhmyTj!300UmUoM!dRU~iRp zd4>1*Ga!k^EykB`cggSE!=VdC5^wF4+5-8;cI_A~ws2s}!W%Rlsg13~NFl{Y89 zNkxYGFzPs70pvb}i+Pbv+-rQh!QCb=FOLW31z>CbuSa!_Zn5+t(4Bj<)2=j=k5G}datF`hKuzd3 z_*?lte0Z;Se^XgRu{1GfPwffw|CgW`Kg6BYd5-74C0~|j(6k}$_v!(uhQ=PO@$W2J z5OzLW%lrLq_o^7o=AO79pi&F;9u=*#85(MNeKYycwFzI!ArAxNleItxU`WT*RrmgqCi&-Q1ONZPbs@i*e;1S_=Lx$hVW=Vxns$6rWgtEzUzVSR z5nC9}5MsbumjpyywnGj$zHGtK#zji1gd3T#Uux#(qCC4Qg!7d02h~v6vlOAp6%|!E zd^~Ghn|2QYu=S?O(Oh% zxnhgf_1y(Cs%kg)U}t2=G4K5aXcNAwzJjUjG0!ZM_2#`%QxGx4h;5)pj{yn^0;BMc zN^lqd(%(#DkJbz0rkmG$h<9!m3uM;}!@EFn`!pX1UTLusSNiB=GcgM(yT^;&cH>-k z8%{hi$Uks$?AAjbwgqcjpi6HOneG<1#C&74caqmxp7!KAC;{NtnLxbcK46B5iw_7S z;V(AI=ZVXsZ za7W-R`X=6>2hcv}m|y>Yv;a=>1`A_*k&YSIoItXr;m@sg7sG?dW^N^vpGbB21|P{g z3yE%v7M%F-Vd*bsRakq!e5sIZRnBNrp-6w4=g5g=J~5B$uU;Rwos|Ksd|+l(o^$_B z4kEJ{OU+}%v4U62HU4jA72^MzRjd}o5ZYS(zsD;$KM9C6L9agjjRxG{Bgn?a*u)zC zW0=r>kSC?dxdcZLx}AJQV;V>;mS#q;s;h@7FU{3ga2om0KG~gzomuvFm#_82D#c*M zvu5}{6I&`vJ8U+_VaE*Oh^_+FHrl9nEygG59}yr=#|~DwSG-DF=Q@B;*UMj_QE>5t z^16NGYx%Atk~kCH_H~CO)Q%smC$JXpH4hhFo~0bT$eZ&E##qz#4798kAl;-ATs5D| z>Vqh~l82_(bFh`R=a^@HdYZulk1rkk0nmP?-uBcREI)fS-|g|%?li6~)@s$Y_jAAB zmMUxoMn$oQCogl*Y3Yy_&irQpdhBU*%pZ~X8IUHAB19ST%nw0Ekw(XvI9@)tyVIxe z^{dK|$()+$xPMfX+{{4P%z}+k|JR9K?*k&7qxr1X6_b>~y2XDs+lT2hTqC$S!1sP$ z^MmW}T)spzoo9%LNnb z6<~2QGrYucj6qb~Mm|V|*^Q+AzLDtIsv2h?F6_HfIR>6zrmOV&aNxKk@8)1zTQ9>~ zxIm*_zZJ=fd^d+p+$lyvOi#9hQ$8Hd9Y~wPps)RCSle|w*pTDT@=dL~x&?U0{;Wj` zv_U6IWojBFAFilysg72ff1)YDUrDj!Wk-a4hM!DX(A9fN(~f?TNdwbuGn*R>%Hc}N zJZ5rFH4si| zeC`)aT7w_~8~pwIWtPoBEW6;m(86`a*nDZyhE?^W`)G3!#ifQ|_-_mhC^h~E){QF! z6+Oz=3-{uLku^mQNiVbql(?<*dkW1jSqwPgG(0095N%;G&E=KB$#f zgI!*(n4?Tnq=fH-78E$kR4-|1<-qA+OP!tWcY)+Zf0IC(m=~)_jJMJrrF8@RT|h`c z!U7K^?|{yc++-b$j!gr5s4j*CiqsYX+XBn1HZ>Ic#K1< zkclIS+(T7Vjn00DLuf!O0ua#qw*Q;QO35d1&jj^Up(}JyNDcXq$Cd~dKg=dlP;~nI z>!ejqHmn!fT9>sXg!r-4x2CY{C7%72S?~NYBjZ~euX36Xnnk)@b`l|NI>zJ{36bsO z`U~vIgxT!j&!0+{__K${)97)Qdq7$b->$&FIBgWJ1qZYp;1n6L`*u871RlAcQ=P|Qze0@YRf4@1XE#vwhtKITh_qP# zYf*6BxERzF_nphE;|5>|f0LT#4Xps}djl+&Q6zeTtJD{q_u>EgO0u+GZuUKyB>Wnv z394O40UEgHMz$#*gf}wRDv9wfNg3qx-GQqGVve=1zTs$XGkL^aw!L=#72Q#{?cu=oFAJjNAS{>i9@iN}6NtonSth~$8eP0OTSFe_N$r zWJBuQ??(FVJ47mQii2R?M@;DfS2uW@=7J>!BDe-Qow8|@RZb$LYw83K>t%JW(Y2{) zX(8NsQmev$gSthF0EsC0KXDfq>#Way_sz%vc){0NN! zbnrtSnJy?fI5uG~3=X0{RzcI=DiPLD^P%;R`rc65MTn|s!DJLsU2uA zT$;>6cF++#A!ng|H&h}ep%HR?3dze>yTH`PM4u^=l7b7IKR@z{EB<-$_Vi-VoANX^ zGSi>OS>Entq9eO@S%LK83%2x_qu!Jzx*s=98}}Y1)%cT6_t^dI=j>iuee=a8@zT52 zJtH#~?dXuJ>F(wp>B-}!JxUsF*a=W;LN#ZSMLo;XzXdfKk8`f9Ek;{n#FOxuN9{)J z`HLGyuW!h4a?Gu*t}_$d7r5qs7{8v^8a|QIVho)iN{!b-_EGTmDc$ft&&9Q!?(A8$ z*{iXQm6o5Eq?#39xqVV+lQ!6F%P6|<@}=O3&PxHeP3x!uU-cA;gk~LmeeoMj+(>ys z6e9rEUm@~nYCc(7I4?S-xm9>Trt7pKzoL=34+xJ~aO z-Y?^J`+0Ia!yqhPM)%$ru8Vw=b~aNnQ9%b>4quGO{S$Uu>vJURnlB80EAaYIx62rh z?LU`O`=`Dtz%Nnxp4#d%0&X(RID~`_#x-4AWg8ROFE&5;a?^@)o%-unTLZqfDgM)A zdw0@a;yat+AoU=Vbcb8pVNXJ4&EB0`?Ck9Ko5qpJ_!5v2IL)s)z3iVWjE=#+9B(_} z@u#;0^nbyxy9stv{Tck3Mg>rYU%P#q_0%aXlq4N^h#D);f&%UWJ9EfFCDY`$Z3_8Y0EH>QDRN zws*&^3D937iiqk1wu+DFOB)+AqmvSy4erNTieGJHqwK5U5xyOYDpWdJxlilH&6h;& zA=&)e>qadlRZsLzH9+G441RDZu%BiaCPyua9FXx)VVCm===2--GEnCFK{fr^L}$s_ zbE6c4X}n?JeED}s+6DcP^iTljFMDJRWlESZ@a z&;6>3rJm^QXsy7fL)zo7TqziV08EGvV?fGB(>{@ zwZTbSAzjbUKP6%oft{&C=Ynev;l<%3vuWC-6(Rsn02R9e=JOpp@&wk!`qAT=Phk>6=LU2K~9f{Kca&!4MGiHcGq z;OR?k3I|rw<8e3q%4mf=TxwE_UcDL>7ys~1CRiBuM4U?0t*zN1;pBC#j2p|=!!=t~ zleA|TgyWQxEcv3>?GBWE_rhakX6qre9Dg&~^4peo_AGth!E2`nUo+o~Gmv2g8ona*M2H8R35(VDZkBWMzT$$WmkiQtBXcIau$WN!^_E3vjVokG zxsEwHk&MjMw-u7gXK-kceO{g^PBTL|#?HkFuR9HIK9CnZ-eMq06_MvVM$=homR=ie z-Wg2dnWEjT(dDY(F4cZgMpm{AWhLM*ccANFgw@~zrT3qB%ySbkVBQR}44s*wSZEp# zLTcVeqk4wXDX4mH6gv-@euuBdi}?6^g@Q#9eti^-ER2(LoBlkerpA$`vvW_{al-8S z>jksycfV<;<~{c6?qq?r3szH?awt??Gq27()_8r4ocuc?8zE|&H|bO_apl~x$EV`w zCAUoja<5(HQFD7p`t-Mte8jDdG z%8*OI70*>p?jy3v4-%uAbUHNup8AFYPus4p(cWyg6*jW7T5KM83}Em_&Fvi7{kd?r zF{G@qrKj6%OH@u`1_fNLRCFsZ$mRcG>^q>j?)$&BlZsL#M1`^vlI%*Ep(wJmQd!w# zRYFF{OjfdzWQCMb*?VPYWbeJ_^ZM0w|F8Rbp7WgZoO7RZ-KXnZ!teY2eBSTZY!n_w z+Md2t@EM;Zqg>M7Hu>h|BC0ptR${!W0Gus$k2?$671+tj5GcJ}-W{zb!!}gNeuB{L<=hek`i2 zDOB4ZwY2gCw|1gD0xys@*03w$k@PGh+aWr|yE604jU(D}wEBX8&&zUZ53gi3s%OzU z;=`|^-eJLiaNpp_V@OtdhFV@q`mg975HhKK!z{8sCxm#EJO^?Ah=_7h5yR~kORF6E zwQm$Z-ERo&>${?@v-zW~EeMGSQkgXoLM-m6Q*o3W5k>V6@%{(`FzU~=EUn!gEpAtS z{VwrNmq4g5AO^hQiL|t|Q)bo5Z|X*+dKsf{?BSL<;nQ`PhNqyG6dTvT2cit&HLuYHw+))x+2W$Fgp;rwBoqq`Gpf8b4Uq6)zB`J z6b7ZI8|0lb*`o4k>4>@c?AGb4Qxh;(>?R>$z_*HX1P@ow$Vf#~QX+(p<2REvf}=z` zu;~(Yc6vUv7?bd%2p?*$d3oN5AJ~h`F%j?JPnH= z*K5(BeVLb__a*hln~B|U3sQp;u7CGHAl_E~Pb&L>aQ6Lh(QM5$dU5X6DTYFjpF%mg zqJQ3ZhkCpDqpr@Ps#~}I0@=thJxxjw=Qyl*1zgGA$9ae<--c7=ktPS%h7X;OZld`7 zio~P3S$w}e7AMgb`&V7 zVYa`c-+Wo>8cdl#-Nb#4oz*SX9ciw)eJ`4FnspXV;2EO0ZM2YV~}h@F5R*=U}A zw>DyVYF}aB_^La&BY&o@!iLVijSzQPT;U#yOSM}oVA*F*iYS~K*G)N?P69i^hu3-!#e$f5ShA=$op;>;O; zC{xJQ)R?GqLQ_LOySr08$WS?2>FnHm1KDxP4&XM?ja~PkU*&=8>A+&h6w>XiFDS(C zlt+W5#@JQQ0i(w?Y+T1^awcL`H}9T$^pSF`X;WIZnrxxz)KNb757c=kExVEwo#pQb z#H!srU@dywG*&(&_C@98FBu3`rZCB}a`psPS+=4oZ z9H9Ytw-c|3O`yv~YFxiLf9y&%^0ASwnH{0|*EUT@;mUW#-d^oV%cHrW-v+I~5UF&n z_syPZcL;7*N^BH#SXt6ESyaDVc=rjt(~-_(TPnVytVN!ku`w~eVPR{T9ZU4J1|dha z4cafp`FvgZIEW+vTG$emv9SXcr}j}KYxUvsC!@*nhES>=XX&qwa401ZlFY396y5T=c~~%W zXKeqLhxzhu-4@?B{A03N)2AU_|0KG`rF8pbTRGtn_o;bjzk1ew>D1@10=*Lx*QBK6 zBSvX)!;_zK3|jm8XgaVX9r6o!3tLdmX>s5nUp)qmxl#=!Q$Rx(ONzH^{ z_021W6uW1{uh*W#3y2x%laT>BC>#LO(M$6csGa6sITE0H&GSWWg&$)&Nx2aP`%It( z6A4fPE#*!WTnx6GkX(zq?Ms41h-hia-rdDzhx0Bul+KH7-~ItL>$G@I;lonSeI$au zL;aiKv$d7FluCPBQ*~%fO;eL~735@>8-8VzZ#j_P$x}#C{*?6KdUt1nLXBWx zGl|`}Z$z}CHcR?d4Sjcu=*x5CnAXlt`wFCkdDR83P+Q)$!b z;grgWlh(-PKFx12#MEfg(I)vQi34#a;TZ-_)tPjzlAgzRfc zE|z#r`!yrm(pP*J|8g*Fmj6)jZt}`Z%fX=Qu8~J$d|C(#B?c`kg1dEVuYkcA|^) zGDy24TuAimQ=(4dNFHEhv)zID0qr@Q5Wb&wqhz{wmxQdW zZsidZ*$6L&^9vlv#=(WPFVZQ`6#(_r`eK)_pWl`C%t&+`rf2kz=OS@>r+mf(nFmdk zHY=JY75J+N1z1%^6ROLGa4T@Fw3sc7-9XHdTdo7^p*=-iP!J7Q+W!mt_Lg^RN`grPjQ4RiGJDb9;|7 z6#BovW#AVu=LI#i)OeQRa%x{Q>X>Xd1b3Lv{=il0jnhQ_U9C95(hISH*;tE@{8;_4 z1)JuvZ|V9zD3$lYM1)k)^H)8CzzGFv6~w{e_dx8$48sMRqZ%3{pUoI|>gXuId4D?m zD^$_C?VDI}U9xSpCOUInd}@>mi#zq8KgLv4_qM3ySB@>3k;S*~k}JS30#IPO%`_Vg zO&j-vpCT(i+}-7fiKn$Ya}L|s?klQK+Y7Ll;e>YJA!#J7Beh7qN7eCOVW{S_PzlK6Cg|6pg+5R_gK_M#qST|M@^g^f)2DxLXc zSH8bagyoDb!_gNzO(u7sw$Qb<_Qm#{vcFg6E0AD)#e>$>wh>c-y9fWJuT~vHt>(KS z3-)9IqWT=%aY65M#m%EmPD(^H zv;t6ODdT~Wxc4qAp!rL7Rd2AScM1wA5oINAzb2}YV{<(7jnghN^3Pkp8{E;mH6B=0 zHp_Z%gXQu-k!SFu*!5qt4L(YY`IpD|>M{&OzF3Vbz4-^y?t6g{-jLwaH{Rx`B>5HI z2W?ytyo>CxQs`77-rsgwt|$e{6u z3{r^u?%sH`i~_<2v~?z- zafSK~Q&tAyKLH6i(EXjZwM|OmdA!(*M>ckDJ-ys}#7kuTl3?@$hT$kc_Zqd1P<^+#*Axe#2KZ;jRMjJxv049C=;K5c@1e0Q1b zz!9wrPYf{crrCj=c{G1is_ON8w&m!aqb~@4130!k5)(PF%k^~Ts>+YKyYpQobpPPz z0^r1H92R*fnutZQ(uT;oJYYkf27c&+0HwBLdsaLRsQ^tJTEUAep12~zC7Q&87&of6g@#Wm4J!< z`fRFfHSySRl@w3bHOI|$HYBozBb|iPpy{BXkovujHuus}TEniIA7+dH(E@C+gT{}8 zcA20p;}>_uj8F4;Xh;EXTbw+jK~Il1Vc$3;ZP4^dXMTiUIp1y}p#46+lDLmHv&yFn z5fQT?eC7ViY*nh-Xp)7t45?|dVe1svCiY9dcTImKHd zm-|qy@s1Nx2xLOf03yY@A7$3RS4OM=X4*RB z5wqTU-!j!?+%M16X?RjZaa|kE|Faa5q8ApsTYD@x*uC} zC9(A)5h7Z&f1Z}}pv=-mx8B8Kt9sWBMh3yRw^I)ij!%?+^iMite=ylzaD-R)xvIDA zYuWgs*499gjSHtdN%!v`k9~FbxiDqhXH)k8pDk)%4!y{A7-h?L*E;rU`H1e=mF2Nk za=^hjmR`em1uXcjN`}g(2Z5>Ar6;3*BP({ez8~U-W1f_&=_Xx@DDkVPjWR|f{9|DU zv6-P8AJ~$2&_esK)BVl#qHFamvKkUJa;vE~&TZ!qz1F>F`{Z%xq93)N`Rhov5#dbB z%Cg=*aqrw~_z{?fSGIxiL?d=6kHO_(?8e9od@JsA9N(2Uj_@xQ!*UIANn1W!FuTI0 z;|c<1TWwN15x(P@KFO^?L9r-)I`5lmj(R5G&b4ozY$In{+CtTCwX)2PtA-e=qa8Td zmzH0|;qwb=a}VnHiI0OO%Vg6%Bjd#f+V!TYzrZ$5*_bUcUD^0DXCHmyb=h-xE6N;i zW@d6p>+9-c_s=%*5VyC{0xEKU~R7ha$sJV8}{dv z{NO{EsI*I(Q_6%St@tIDPJQd>%JEU=oA1a}l3cZm*f1CrRerc06l$^368L)MGKKzJ zzn@=39US)*XXc6vPC|HpdAPM<2Wp7XQ47^4dRys-e;IXr;cwoEkB^VKd6eoChfsyH zV&Y40s^YP-{YEJuB@sOv;`&=iM2gZu57ta{}) zFUCs6>y~lVFT#F9k~aChy-Ap2cPCF<)@A@M3rT_ZeF6H*t3DMot7r)2Mm2>fg}~n4 z_KA+)&#<2lRKAqoTkZ~cnsGRBOq&4zBiEqrL56aVsF+%)Phj9ata0T{bpP2Vd62cB z{4s#7k{dlBhLR zBSnL8pBjRgfEV3ssoer(dv<^}#)|8|Rzr*g+s@idF(8WZaq=W8MP>2~g>3yUW<1Ey zSWPF}EqrAzHCDH*9?F*|Q&W0#W5Z9g79SFn>$r6M{K>H=Ax-RML_{%0Kv=->i8^D4 z)OA1LdZevUA=B{c+qbf02U7i>J-eX1Oc*P)Nxx+pC4w>_bKWWATl5ZpR;OG^Bd*bu z7ZE4Z4kfP>%33es8qw$b7>`%|bM|~ch96v&nA?2vH!olS2bYO7j))8VRxvnJKN&1C z<5hp`<*rd+9;~`4dO42#Kq|rkYtrVU^lP-7Ocr^c`kx{#tA2SrNyPyvlST**J>j(a zru3lnY}@46|4wO~SryjZ_@5cjq~lAFPDCT5T5)o8mFufc$o=EQ2z#;W^}csXH5zz+ z&5!HokOQXL(72(A7hM z@4Ta<5DIypUYX3^GW!n%CWHTz+kV?>J`duZAG|Sh5DDyyli#^YGv*GRY^YLn7d8O!*cCV0h4wl2l=9_jmMKP zw)zhZ4UJn_Sru`~wTU@WIyHS1En`|v9S5>eBceGgJ9v-?mn%B2Sbl!&mHPs?!>}j-N-=1eLVYoih*|Xrxa_v#$BW7l1hEu1~3|rL%g+$>VD(L7yR(_@) zv)y3zKA2M&);kiLYYmmo^tqIlh69?i7^-F0oZpAGlQg$WP$n#jS>IMkJ@NeINg;U5 z{i{2|_$t!bssBaQv%|;Rn-5Zla)ziU$lpSd=Un-DLQwF{pTzV!^{tJTcOypQVq*H1 z9LQ3Yr!+4I#`Q}qvvjZ|X!2y1T;b#Lz#=W{I z{^t7Wsm0CLTzV{hWkEhQr?+lX+D6sY3#kfyLlkcx&?Jg8VUlPhf=$64+rUAZ9E!he zi(ZMhC7dUKDf?%BW`ei$q%cBf-*ja}`23SkId5c}&F&RA)I8A$6rItdr*8U}-q>@# zxSuE3%hR)e>UYQ7qzJ#}_>hRtuhKC6^_dE-VLM+s;kl*x^ULE?y|bt_2w3Q(G>F>q zbSpzXs&pCdq;SygKMvI z+iuNDp^*3W4N-O5{9aP0ERf(eSR61s|%Lk$eq(?Zx?%yiy=Pa z-R-*9dk%jfz^j|9T^A1?JceD53QO3NCy5~!QhARb|6RZBMxv72S)Jm`@NfQ@8y5ZS zu)32l#p_jANsY6q^hv9zu&}GxS7QDLcCi20u}jF-W2vkn!6nBI`sKv=g)_ieU<-Us z!7e;7P{j(C258z*sBrLOzb^9B$4wo9h}$}B&@1!QJCH~$uIJGH*_0Wgi=wI|xy*Hz z8*e{ZXb1{%52)fiFXqUn(Q1h6|M{WyqLtw3dq*L#Ae?T7Mx$B}RGud&Y$F*8otpG- zR!h4UVum(09!(<*1-F7Gt*vyc(|dX*1`~zIrbpEY1FW#boU0g%*x8~JZM$nYD`DLv;ru-75uv;s|OmZL1iK9N@~=7@1k)_zpy1-&C@v&03l zfLHpgh-7ylD`iXmra;^^;yeB2^jM~)N=}?mEZb>Q;Hg)jUWtoBx-~A}kyD3WRLIiLQK^ zy0?r+&VCDAo)yA$n!R6}a7e^A)F&v&{U`|5!Ww|Bx%MwsA)ls8^`juankUM3?ZSph zZjKEq+6gdH>Db6Bwq#vAEuuchob~e9HO5fZ$|EWDD5#(2&!j)Kk!N2d*m03o z(55H9yDn5~sP=;@$--D`;BhCP|# z`0oSKLG~P~md7ZqBT<+@1c)R2)hkV4lE)t7d4MWEurdo9_nW$Vkp0sW=@eJ?Eq2w+ z%+|Eys5%G?=sOe|O-bR;y?%XP81Lfx!%vy~z?{Xb*7Ee2klNC04GDVt*z-3x(4^z4 z$5(>+wZDx+uI6~XEn!7RkY3~c+BZ~Sw{@_$r}bX-q$p`H7sdfz*lxGw*fD3#{*#+> z{#|M(v(^}S%~UMIDX*+O$^s_y|3lt=|8`UkwYpOa`%!89Q~GMo|BJedv7KE&Ch_Cf zJfj4SQ&^aAZ%@&^VTW+p;4&Za`k=!hK2+49@*mY0fsTp;hL#QYfUMP)O=GMk&p}mB zQo6tVeEs9i*&2bVsnRcIw<1fi0l>b@%(w%q3E81f6mS7!#W%GWdyWY;Z*xPH;>@pS z7;Rzs)Ak+K;P?H zL7OQ`Ebj#!>*jOkt+(G&2f0((}K6c$-yp0@BVSS3b%_;qd zGUJ{bM2MtH62%KKQ34jz_KC+gwVdax+ZJ>dg5*}fw}St-Yrmntp{^Tl{IX$gL=;p| zYF;a-Pdf+FFUT9KT}62?tCFP3s~K2H8bbf{ z)a?tBmo>J9-aj3<$+pIsLzme2AVvq#Cg1U>I66jS!A0h8LG0nr{NaiVPR8qd_Pk~i z;P6d-H#{jvUtzlqqN%;a+j4((R7|8IZ;JB?>k<+EBQL2yTu-_uPR^^|(A`VJ#B?_% zF3)%02Y2_Gj;%0b=sG)E{Ywo-MNxpqtn; zf0XENkBB&~mhVW6*A=2@P?d@t=9jtee6s;REFmRzkn&6zq5YTZYe;+3sfUlc{;YLN zzNuMR9D6SimGB&`iZvgsPIw$F+u7FME+A;PFqR`5FMW=S>sGF*co!Ec@t{<|p@Yl~ zhxQ4Ky^BN+YRnqHn$0r)8;U?|0NYMOtsL({UaMvZ{ z&!2VGqwZlegO&<7B0=UHNfX|Wit6xDvyM2cscuOG z+!0Lkocgjyh>1zvU*t+({vkTiu{t<2{I3FPKTS(@jmYF19Ds026*M&Lpbl;Gq7~T2 zo0XSFy9@kHF+9aK8-i4-?JHoE!?Bv3ePp48xdo!py_}r!PrL%dAa9b8cwW$Qp;x&L zQYHfW3^GunfA4Us`H?MK{8Lg+mv3(HzJk(TAx5J3eIMZdvIK>f7_pr(VG<^);mzRr zin0Wsv78}hxS6p<)|hn)Gjs+Dj_T!jL{6%(HLY$8)fFtR@T>p1ZPTcK&7Th3^O|>( ze&2^}JH7mAOGx7$2^3V-x&oS^^4UcoR`aatj6E1(qrWlpQHz1!#l z({zBwibmgnNDHkBcMKZ zOY@%c_#)4BT;dn_=6|DZ+fVGeii%2JR!T#A<%HH}B`tu+7@$1%Q3suM%rSW~tOgTz z^GS?bxQiUeyOt{cYhISF03Q`tloD23a#%<%f+0n#KpQNEzfL$D+CWg48u}_o{#h=b zwAA}Yn&<13@FQ*B&nj@MZ9X}9q*+hlmPd0-4>J`G?cQJ=GDj$QxPf40Sl0T=s3}k$ z+qKVXA5-ff{KN2QZm3Ck2@sWlOYwGU56N&YXsH8aDN>3b72=Q88wh+IfQx=FeM3lN z*H>WqXYnXL_OeU)_>tT6;XT$s)oiomvCZ!841C+MFz5nGm+BW@j_pw39C=!`Z;0ioM2TM?X59!;+qX9i1MBhnT!nQL=GjdG;W+|& z@O!uAso{A%))$);-S&5Av~d*7rroQfAVRsttMTbd;T^k@`_&N~ruyue4VQM|Ib3DI z<2(;EUI|#ANZ0462qxWONxRBrRxXlWLF?}qk!sK^Cg$~OMa-dowt$qHaOVS;O%pPH zRbkwEa6v;e-ji7E`!08P$zpP;aQ^v91>1G{Sh_oN&KuzZytgyQBHha%i7PkUxx*o} zNYP5trSqfkjj5^KeXAN4z)zoULNfIV-R-8E8?>1AaAxcSMe4XZ&Ne^NYCbz~D{tcw z66cOFFbWlwm%FCw=s)b2+6#e1!p*YRn3y0}J09GL7%5&C;Y?UIe-HBRJb6+FG_%>- z3pW>s>Zdz?v#AXg{7iTPTv@9#C(tidXxfpQUhICbt%Gg)0^O3KAD?}&eS z3pF9nu|<0pa6&5aAZhCT#8xRD11`=w-!f(z*H z0SesLl1fM5LI1Mcl}(CP>wAf(19~#P+C3ioMeX-$DIitnD{}w2Srk7J<_qOtUD&U@ zy=g# zK#4EOf_FV0Xt5tDJ^)blazR|!dqroW(Ayg$$cFC&K%X>lPDJM(LqZTNXYQ;@XHZ>n z0hvK(vAb&h{t@yI)9SW=Jjkqiq;a(TV{4>{9GaT~gV;ratmemlCY*9wxAaF$2XdN- z_o{{K)z8<*9s!uw4M5n74rRq9;1^r}+0ilIF!ZNQu3CP9;%K+VHrB)k$zk+;ya_`c zcDExcylIvnT<%ZS77#gPaUwAC*`Gk#r=*9jMvJ|8EiNt|iGjAbuC6Zi;=)_85JU|- z5|fkro9%JA3~@;|>$iem<(L-nmqP)e`>h3xfV2V-P{OI0Ja9Wc@AUN zh3tp{Ay1IC2Ax4M;1QF&wR#`Wm!`7=dW5(URJ@?j;8-AwPVf*oA@gbNpLTXyr^#|E zK4|8@>MbF?qpj@${%B>v z?8m>0*Vc0S|V<`_}i1-3$|Q-0KIz01YMyfBd6Q+g}V}*zmu|Y5G=rnin8c06xn}lZ40n{ zNLlHzB(!F*hT)T!Kq>o?LiPIht^3un4GC;x zEm{SrbkJ`5bO|`xcDx1zvc+z-$uAO*Ej(B3{b7oV%K2_k2{E#d?>NkIThhPZlY*~4 zPDUSs07+)m| z`r_isGot*<5#?MR`I(^ez}Q$rE>>QBOT@M>fWBYl{LIMAJfn;0E;u5>Q7-Db+Nvt` zVk{xV^L{;QrHEs7N+w`0(9PDwaaB<&Mo z3B+k~yr^TW$H-OWy_%8U#GstWdU}7)>|mK~TNBDi2bm}I7ew!&4T9mOCUke6K|^~g7R1#;}QGu;fAtMHKltrY`9NFRdW zvGDWb(mig;PmB1CosN#DD)R?euZEgx~HbhRduo4!iymhPZU5OXY|ufk3RKp?gFR{N z1db8tS7D6_8$2)jFrd|^#>n{T^!Jro@5&{Z=J5ppC+I}N$nTW zVsf=6;*9b+YGAcunDfByMuWzC=CXrJrx>|c^?FwSux2|+BMM)N zASt}xnX?Un5Pmtj1A?FaC3v-U6vVB(|4VpWq1UxII%mCVy8Fo+q86%!?odUC@_n1U zZ602~+~x1Hkq0@c;)R9;Fc85CTg6_K+e-I`ZLc8lKnMuf)?l24uKPkgqIGsbPIMdQ zp5EeRU1kydcz0_wicy`DpLQ{a;Hx!XlqzpHd4QB!R@u;e&}j7p*;?~G)Cf?;$}3+> zxH)o@<<<`u63U32%a&Im-}rhJ%@RnsGEPMoO|Pj2>%TuWcp&! zbrO_Mh|o+IE$Oegqo=~-@Fg#r;qNd5>X!PJwSLSa&&e13ydl_s-Nx`_R?&H*VA;~v2>6AbeIuw1w3fPja?>}b^Ar7;0 znqgk@C1@lnahqzk23HQ^_dsa>aL=;7m$zmEHq2r51k~bd6(l6v>CV1C$1eV3QiiVk zeqcVG>iG|mb|u+W-)2JDJqAqs9;{} z0po*}w`@c+`=IFhiVQ-X6vQG=SQGTC_;W)1I0meWg>i!r5vP+B6cj{+7d_g0L{7xP zM?N9Oq^l0f*z@O(@<2bUwKBJiMeS}w+@?-vPMP1%`(R)QT1kT@`MZ@zWbX}$(d%fp zrD!55?<$%mTEAMGN36_4sYf`eE`HM`Xi|;ClE;>k^N)!p+?+v#e}Ym?1XPtX^Udw) z_QfL>>~80OEz%6#;){8c$2+=pV$P&Je~rTPpvm3XfzTX^D%OzM0(|3lTjiH6;RgAK z2>tTS@bbp&by4K^ZfdBu}%C^amfP3>R=GCSRMLIr;;>xY$P+rTRyctzq>feD2sS z5sC{hR1E%rK;w3I-v_(XkUn@_vTr>(-}pKf#*jO!Kxk}ivn3+0cI9zsen0ugE3rY4@5akuPc@x3$`&UDQq^S}KPPU^`{8T5?>CRb1Xb$8i}pU1GQ>n0U@0)~ut z@BESRRG+G2J$yTm<$UXdZ`2QdcI7$XT56Jb6z1+;!;mB|3aP0ll+xwF$(6ACrY%J^ z+i<{Pst{MHGp+3enWyaEMa3_6qx5BiUhf1Zct*)rVB<`uwGZJmM-~EPPuultj`jP? zJsNx$-G=E9p;6m4yKWp}y<7G(;SvEcNm3LA$ATa;DoN)XtOr%bS{$+!>a4D)yQlsNh(akdblV_?X<;mvK*{ zER2rgoL+eVVFcS@%$slf?)X0&sQtr#7cwaV-nu=PLv88S`N#jK8?5nvqm+`*y;~UO z=4!t}^i%?%%56VNa8aeI1LyV;oN0ElOt1YO0M^<*G1pXG+GrKStQWWkpzPe z=Cki^Qn)~me$W6Ta zl8>JvpGt-C%W zE%Hgl$otU@!ej$DG^zeoN2aZ~Iuao&t{d`hW#=Te{4?$+C^)C2o5KviKIKzv>A0Fh{HXe60_cAMzOrcf*xnwl5NLFq@>hM{SVQ68N)%zMxiWSo zn>+gEQAF^D>0NIm%?zpY^ffqlRLo}~4lWMZQG1|W1giVnESHW5%}RbRmXbX)hN@M&H*f zG`Oq)AeSE`7Ja!`xqe1@W_^F@A4adwH6z3FI0=boJrSTyVlsTbBZsdY;eGJ)otH|| z83YNgEiHCAIW39NIP7x&%lz!nmQGwhb&9L6F4_$~i_D8{IK=37x=#1q>b-fXn1@iC zqErhh)s+C1BqmI?Jw@zYX-e7AKK&;s?FDq>o5Lsrq+DW3?gPG9nGe0I`VoNwORGMp zrnAJPar{0eg06t)&jaPN|F9jKk%2vbGX~hC*8#>IZ@-+a{#9;zo|e!s3ohRqSiZQ0h> z{^^t9GBLCVebc=c9yFG}?@e`b+Agw|5&<|i&2e3c&%n`q+{>GVzHn&X#3PV%Gst?>3pWSa%XQ19?HJ+M^8 zOLBzg!J~-wYbYVBWE(9o3_b5q)mLVIJEw&XeYXAzbdYfrY^--l%7qUiN%j=xc`n$w z-rhVa{l$NC(P{O5eat?XQZ>pDu2f0~{H^tirDbOO#$kr!gB58f<8OmTJcBocAg|YS z5<-g#ORSV-d3pylhhY~?A0HFi<0v3Ncr2+x%z5b|Z{RmxZN46+tpoGiuMUxTymy3S z9hRN`*0?_sG#+u08GqHIXeuL+LT@3fski%=MmlNsJ?k0xjm)DlA?Ef4fj#ieZReVZ zzRM)QUPllLIVnL@FB|@dNMdsv4khKdEx8YWi=5v(>O(6a+7y8!Pt$&SAAh)atn}bn zM|-)g+nT4wvv#G8n_REWsvpInF$Yfk%Q0vmLOwXHnBQ3nJv+BN^;?yzy>)&Ro4oCa z5+tuN%^hF(^!X-wXBpv=j!N6?;sMli6$BAz2vl7-q#2Z;n0%nsd*d~y$WXF!m#+6$ zGd-xAY|1*hD`ozR%#l}houA7w&Z(+${e2-7;}3M_c*!efJ^na7frJoAw54%~io6@z zCAfak3SvZ5RQQ$y_Pu$x;oH?*Si z@kBc&7m>xvXA7~gJaAIZNPed185#hLijC@fq&7e2)YiCQKL|g;#rogMwee; z;FHL%)4E(jC}de$G0-$KOS|8dw`t1{J^+u2;c_ZuiU9lo$?Ivg%94>T_%`bfXK=Bh?yV%=7a6skx5wcZ%2~$5H*Saz|H>u>h*&=?jhvuQwkjHtw1?&x!2<%fKZHm;bW_nH z`vDS#;P7RW*f>rJt#9E9ag4Gnk@VlGZPfAD%j=xI zL;ms8rJ{BxRaUdI}xK##DlaGz2$I!3Yv8Os_(lPo6mwB(nJnb=Nx)^<}>@+;Um-A+yo` z@I_%QW8)&oA5+r}rk^^RYY1{aX5C%$=A6k$@{b<_jCGktl;K<2^&3B%nukA8xkR@8 z5}C(9clUK(h>o_>o@G;aRn#E+2C zKAWuXw6-MtA&DCK5*Hlpabq}fnso9nOsvOV&+(=WCnoI@la)O`F=39{U?zyH(rr@d zhKETldcp*({qS%j7@Gc!+H;086I>9aOG-RPv*JClUsquPz+1nqx|;4rg1p{Dr_5Hf z_&aTBi~%_7{Xn)oc(4b!Nm0ANt1|yxb*VZW_>YQ0xZS1~_7`{N@i_1DX>{z(1*IBx zAvMxRGxR-uTu8*A2Kyl zQtuZ+8G-D3N;Dg>owM^3i-y6&V{Ux(M^jQ43SP;fwqkrNyXgo2IAcr8xfAT;!hl!m zslM&NEzFM)LkKV&e?!DZ!QKX$nFP*0e9${D4puwBRj~i%OE>5dd{RvhBb!iCO6np@ zV9&rnh41n3SKRs;)!ppil9*y*I|z?q5EJw3cWqP$%pup~IgGkCgp4AB;-!NZ`7G}7;%9m*7kNBP(DrejgF4bG zo=r^|!K;Q7Yv^afRD;E`IZVECLwzZ-ve~4RIkVohot=N+^bUvp1bd^X+p)gBzUOLF z>>mNH;a5#e`3OPltfwyXyqs8VoOF4i63zXXq&BhnVpv#bL9_LC6h=_99zVXHgoOId(yzJI$!LfIZ@;yh zUMtyhEkbY?`kJ!MONQ%uMf29o(5uMq86N)T9N#DW&WJGle72n(p%!|)Iv}jdhD(d^ zzvP!l&uD}Oj5k<<;qGI8E-o|5H;(nD%Y6L&BU$(A-ipw_l!_fa{rU5nIWY5*XT%#9 z_;SUwjOplKN??uPA8kFw*fCHS&4$lRJj&NUeEnT5{ncr+=4{ThXA$<{$#2SUWx;g1 z)R{?!2I;o2ENcDO?gX?FOyKu#-`gt+m6HUo1x} za%>e~FR7}0-7l79>|p7QB7ie+KO)7!T_x!Bih|9x9JcP9{Vb7gx3KoSOPA%5YFJReB0`*DyNAB{6~L^eeQN$Rga% zsBgIWH`o!rdy!2+VQU4J!*X81?YvSM6&8AWdK4@QDJDPfof{e*954~EGKBc^qL)`W zB@0OJ3V}?$3UBl^4gM~;27=@L_~`5f0jI*RlN&y7-f(ytrK8=xOp9cp-_~QKV#g($ z455!ctO-vS!(7&_Ywj7U9k#L89O%z@jLz>A1Ep71n%{-rK_RhY#CMIlfGkkzmaf3; zN@K~q{?-0Cm&qv4e99UpwOFZJ7Cqp!`(|jkxQ^xL=-xNK7cy4mBz$Xc_nyDc#Sdw1 zuy`Ng;5tl8L(>^3!LWkdOC{}_H-9Q{ENSFBI*9Jt<)#6KyiQtHc7yghFa+Uc@{GZ6 zMMbnk0$+okxi}=M*KEMlI5$)m`R-jb{y-YVi4Lodu3uMAjkV6sDl|f66-R!Gn>*ag zYuAw@N9sQ)Q-f&%rd|~xq)Ir+a_y`=y$JmwCr(&3WEv^KAp5C84dCw+@D=0j*6{!s z2~!j{NT-c#6r(Z$Nj>agx#{@6x=rpWeLzx9UaV5G+-~BKs`5b1;W5ZMyk+wVb-F8a zRM#;5pe8%E_Gsqxbo1?$Z=OI{VOpPZia)jSG>j%&7SD*`P%W|ja(_G+YqlBDv>haI z2PqcVb00Z)B^fCY$}9o{+55`_Ic`$Ckt9cFv;K zfTDG6wm~!LZW2}Z=xFlC3l}coR1az%q!?2r88FVwl!4Uty9>$7tHoub)avT-X3H~t z@FvyeZ%%2C8a0ln1ND)zS~xj=UP#Dcpwg6MrhvL9+*R~%~lV(S9NR#R-ZNyT<-eqkNq z&n+KRQ=?Oo-!aKY!ZH#uZR*hKargI>1){u zFJw+mbaAX4`_i3jv(dY!Eywoo`bsur8z5Iu3#bG3rk;8B6Q4!r>J{xCb~G)ppJS~K zjT=fPCH_IJyISs)XTI{eX^@c_u!N`D+?UVe9Bql6!uaLrza$Htr#~?!n=UDBXq-Ei zx%zza;sPZzz-x z52(wi1YP|AZX?BfkZF9BRD?$H-qCkGh_gnG@eaV@1xwSYc)ua7?<7$gc928sWyHo~ zUtc~OyIsLK)8FzO@^2vT6gjpFeLsE}^hS=7rZ1RWGkd71Z9cD;)o(O2%j?83%oVfn zEX^xHKH-yQJ<&a2&M@x;vNXAq?|SaRzvnRun|OGrtQYxU&rQ8K?J*((PswN#J0Y!> zUoSVumD{9KWui+?Z*k(R>t5zHmxGtcI@LUAcn(l+Myw>n_ct)I_@ticZh9l@T!lo! z{?-UxmeD*@cwN=hg=!n@R;*lHcQ&Nz$e~fngI!_DAxhFeh(_et#!tRG$6k_*@PFl) zzq0tGu{}_)a;l11Jk*-^{$`9Bj@c0Il0&aIc+WnRPtEto7;V02EFYE84}|##s@h;c zy=myMI2jL!;vm7Mb+0R{tGXBS-l4DgF_%Rt4`Q!yx$KQFO2n6a!wY{sA>iEop3>(B z6r>NG60{ePPdKLjbzw_)dEhJqQ|DXr!5<19o9l}*Pn~n0dkcFziwb7l3>7Vv= zN{7CFt)(rmuxjq8QdTC31aIdj+r)*lrxb2u6nEbB_5SL7$+}EX;Yi~w)p?&8gAY?XZXO2!6ms!h>Lq+wEv^v`m3T0s{-Eic z-TU6R(LVmZWQ#4|RZp+w`Qk0;Eg=!Pq$m$ej_Poj;lq)O@Lum?9cH*xVU$A1M!9dcInuk3W4Fbar`e$L)?C$l+zfC8bqlkA5NoplquTr4#l`S#*i5OhjbI8n@lb>qhAzEWMTuyBz$ zsl((Db#24UMTE2OARS#rPm$KI&j+OM-8+lbjNm9kXzrHm$aTjVNdp+%;BcTtfCM?# zT*9ad)FUO!L?)bH@#jaQvj5t2+cVcM7PwX|O_u}$W0Q#%t3t7o3~sHDACK9u&);Q| zJBAp26DBr8p1i!1P#>a+5Ph_FFd<_WY8&kvUEN0nT9a*>Z*h$8&ChKwlAoqka!Mz5 z=UUh-E$DkFLEi)&%}n1@IcSES#IDH8nj)8LQ*2)+#Z|$yQ#pZ`Ma_396%=IkP6$7q zni{7Ops0pFEZdUR8;l|6qq$YsmM?u>Ul_lDd6NjDrOSgYPr*=C{!EBGK#}4{1dhUlgi9KewFk@9PuX z^yDCnlO|CEpv|!VTs`UF;85}D(l%m2mNdxvxV_iy9+Xep&FgrX=iqR4Kc2!+U&omoa!NJt1tNJ0{l zmAywsvXi~Dvqi|h&sX)muJ3h!f5-8=@8h^TuD?Fx`tW|gUeD+GI3MRoeI{7rejD?> z#GI($59iRsdHMJ69|&5ia2DLO{B&lpN)D~_p(glgOX`zJNl+)=K6iA}`CaOwb?v-? z&_Ks-G24K}C3<3KVuTaZexG{G> zK_=0=RTH&6@9k4o!#cf_qw%s&G7O) zo#!94eQ6% zB4olp;-kR*@G>jwCJD6lE|(b4yGP4kUZIoiWhEIUtHVV#RVea2fOYuJ{P^8ZK64-c zjKIg(Ct0xUBKn7L3mawPIaFc}gLLrA>rsr(jt?S8|uj4K2Y;L63A zjvkbE%IWX@l@kgqQHYcE>({UGuN%!REl;i^COfL2V9ox=j~^-zB6T|zezOO}zt{4x zpgWac) zoyW=v|5&y>Kf{}e_)IU7(odhR0cE_EJrTqnik>Sy01}!9xKaN>1%}|tO5pBYoYFD0 zm;jf}7$awn@7rdgwkWc9enzUT0ig8{72M&+n0Hn7495Ghca(kUoZh z@$|i}nV|=Z_ILBMv+u=0nw52RV^Qf_rt{}D3}fye|23pOy@Ppb9i+u=-_TRqxBaZB zsHxGfs@(06$&124v52Q~v9kLoLbN{eT1Uw`qb@N@_DIk$Sn*95HQAk={b4a8G4ILS zUbuVMG^j%7^Pu@eh{K&}Ciq=7E1w^RivI9f8&d60_lq#F{nuBfuWe?g(F@UNrTLvZ zzgDoJ3^6x1->H^ob6x%AO>Y`r9ujf{I1GDHa;)ui4KOk4*$Kc>U2XYZK30M0N28%t z1hYeGO3D|5({(HR!f*g3zFG2lCIPFNYWB7_;k!4U|IF-E`10Aat6-tSVw2d;KAk%X z5!Z>Imx8CYva_-%+nM|;E=%RRNJK%5ay&M+;`_)5anPWOSwc*VI#oXj1PL9)J)lbZ zRu|lnYO@_fgD5jXai+MeMz3KxtXt+ul3}*KK~a$c*Q8RqAu}ZD=se%An!TswllKwP zL@6^Zt@m9bmftrPtjx&4-Iq99YUt?aCvFveEm65?ql${aC*SqQaf)@R_e{=m1q;Kz zL2#e^q^TtM$&Vg4AapB7kFD0k%Izj1p9>ro7{>f1j^WUtHk+zTPQLAW;Rw24FHiie z&enaKX3}xPJ|9U+_`Tjbt=BE~x|^l7RFv!Ajjdg@mCOxsVGt+Zw>^pelon&&kBp?1 zVSyN5BZn}j5U4CQG{P}Lz*N@(H8dF>ivB5)z=(_Gv$J(^u__C+054RWn)}w)w5iTi zdO@km5Hx&eW?%z~MWco8K^oV?29blITl2Cfy_`;@AUxfO((i@McI$<?22*74uh_b?`*X2d_rQRT_O0u_ z7;+(3FCTB~Nx3)Cg1<=czRu2*jq$go(KnmrxXJ*Wy6fOCp^J|!5jZJLgrmVGw!e)D zuX)gkBRpg0FSUm1`3JUk+O?VNcKu2yqENEHO8s8`{Z9S5u+=%Lk}I^dv~e5Qp#8Qu z3%B=mrL^RDxAo`dIkt-afpx5FK)>3J$CG0CnV6ZkT)cQO)TGBD^YI2!G57+65lvn5 z_KF7a>fnk0HraI)Id#f?zi{L4W(GI#_efBxJFTlay-0V` ze&({gCnSy|m(9#Syl~O}O3;yX=DhKHf*!K5h>V$dYCF2$Q(U`EnsPM7O2UZ(0H(OB~&uf>lBu!cfiw?Tl@+p=304Z2( z%oYqmCahtm(3R_a{hirzF9a7^;exZwFzc8nrR6`1ft&5H_3iYcqBAGe__y=&YMhF4 z*j+m*DOB&EId@N&iu=ArW&Kc>R6Av7qHOHVbi>4XD`fB8Zu=T5Z)Mz-GvDKGfLg?t z1g7uPu1cXTYs+6|c3d_g#qr}s`?Q8bXw|t^s47nSgkq|b!<%7E4zEqR`z-=m<|-xJ zqOT~G?R6cNV9GsZ>TD(3U8T4Xs+Z)2yRpdf~*B<~Gn2o6X*2A6)rw}jBpP&a4i z^R(Y&K{j`%+#dA8#qlIAZj09eDQ3)gI0OKpB;^~gV?KWKEO>)2m@m6+V?5@~AiNSm`GEYpq~nT-f`w~28@?bV z{GWowPrhxbioJtpAa)ZQS(#{wl~YvFSQ8!}sMv~Y8jayUZM(7LA<+;w=0VR0^Gpd(P-QMp>0TgWu&lckd1lhqpX` zSGVJTEH0KOq1^U(+M9z-kjTMvSsJ^m!a@8 zhA(dS2oMq_yCnzm9aR7TB%wUC0tb8~qKaDlPNQwV?u6 zybid1+UG`jnaRI*Xh?-Ad1--uO(HGwEbOqat*15|V>i>(bOoPSmn@o8P(N$@^?^1= zF73l>)KMWa7j|t-$m1Q(Td(X3xq<6Zf8;A00=Z+!m5&qfyLh(m+c(b7=(L7hbJh@Q zoa$7;6CKbAbO4tZGWu6EVi09!U}S8lOi8Ed<9c(EEt4;wAy}T8eIc zE=ipfIYeiW7@r{B6Z&*lObwX;Zt=J=c?L!bBMUAd?Pt&SJe7#z@4y8;-D58h~uvdYHAHPf3~YFz)u&B5G!=0@;UCNEDQ<=U5^ zG{dGV%Q}VM^>Jl%=U6V%!@KcS*cpD^USUel$y}JbxPo!Np2q&bW4RMcj0+uR!&AAl z4J|D#fmKx%GkWb+g(l@b-t8-UzZ6)%c+p6R4(%4`O0lsUOT%Ja!)hk)Ap}viM)l0w z@uJuH+XU@)&3u4X85W0Ziq67qCcj6ZuSgn9dYzO+Je8wS(a~XW;%ksjpLEHT3gJnJ zk&WF0$Xw=%Fi>X~@1%mC)wC;Hv)UU}+0XBi zIG$uyVTKc;y|C*|*o%JO*L@W+G}YjM0t{}t(m%wvQ;7sbaA%Mq%o;yBTb0dA^zvND>%$S z45Zn#S21sWI4vL6IDDYRdTwHw>f^_581y^4hB4|(c`T_uU{h)Spj$=#=}EA(a=Sxl zf&IedhYMC`ZudPdT)&Bn^PNIX+Lw%ni~4lgg6^+g8NZdi9l?`sIL8jOj6ji7=|(CC z-ZwO7oInI$)}14J9&DkIO-@TY(I&b-OlkgN!1cVg}b)y4f=HD)hYLva$ep^@+>3uk;3Q-j8b6Ro|k9d@?w3iWd{y8 zX{|mfe#<*dM~{*KZ^j5Hfstk*OID&_D4skWl2$s@TxIHYcmNG!$QslC@zBstd&VW zEvle!0C%pd>qbta=53)4aSEGyM@OB*)GLIy!!~$c^V`ckEus483jyT)(O6EFl<1Tw zQr%v7s^X)AM@>^uS72sEUC&DX+p4GSd)0M9nWYcGuzCFHvd-#@Qw@^)hn1F7`dnSB zKi1SJ{^Wi*9Vj>O&ZG6$LZgfjn@bhTP|gDt7ycbQ%gI^+l)QT8W6eA6O?JL@FflZI z8G1vswRoEm}F?E`Tq3BrwmmI z>O%CCl-9WAB%3CA+u9srnR6)OyAw}pPb!DpAEGUn@X@7`vq^uqkD6gUOTgiKT8>4y zs`9Sx`+Xhc#VRLGpGFb}MR7@Hs&+Y3x04gWZT=PO5GqZ-TL|cHoq14=v}zrbadY0b49CB0dzB|2K9P^f{!#YTU7=>s9gZl*~HRjJ^ zqu}8vw#$|GQIxJwXu-@U@2Ybn`X*z|6Qt>laDCERgHt!R^5Y+H#3Jn z+2xYS@ifBkbj(YoA98oLCy7L<;+EaNQ1Nh@10t6^tL6liVvGm%ExfPwYWRVXv641h zTU%!O%Y%`eHXJB&CF54gYo*}j6@ef59D^UHVWTBv0yW`IrkfDmdiw6&AYu`5;lllh zB^-;cx%MPDU^saaQ6V!}SYE322fg5e_5^ytSC2IF-|S{^@FuXE-^sr8?2zz=dsY$zjBGj|5$W*F9s^$`~-4qI0i6a4>&w0MdK>FI199=x#{g&y~uFkV8F z)et*H)P^sO*@1b-k8&tB)|wCa5nB6T&X3`MK3sp4Hk(kk4r(ACTs+%mGkl${iZ8RX zZL`6)261z8+Hmmm+gTVI8s5Bre}%iQ{sysh*4FNCmWY~xbf|d{nIMDDMeW_zu{xe! zTMj>vtARhcJjz!r$L4>MW<7fJsE9yS9rPPOxI zM)wgE;MZNGS;Z>lWx5O)z$k+}NN@)qJ$`&4mRzJzcjLw<4S`Jt=K54EExeZ!6pr{0 zu2p;<tc;!~ng=umH37e9zF3f@vQ-7OMU7`;8@@rJOL5%d{s)_yX z;edbu2s9$J$~m~cg6DYsRd5|o-mC2heH%X8$h_`Q620Z+$&0~X`S zM5^*cd(tT`7Ma0HQ76eHP*+H|G%g-IF__09Zpu z4BpG1`q3-`szoSfR;d3MITrq(*VwQfym|FI;O6k`bZ3h|!M( z@AYQGCN3gYzAgcvl1;y_R0$@VJz$A+xY{h@BylwQ*ODZ@mmN$U+QItV_}20BHalha zrkttj>QnaJo-Az_Ha8%2WU1SJ)pja>O*F7Va;L-n1Ei1~bD`zo6j+1_-gabvkbG}W z@SV?s?(5m}=OhoZv(x8GD)ZJejYrf4?=c2~;_RHJs?CjXU zSz9Z!1c;G5?|nUO#Q5jZM!tvipS9u9W5;&w;@l8?^%M5tcx?B2Tq@QNml|l%XyL{l z0nwEpF(`=Tr1qz)EuSQ%@+I$lpxoy6O4wmD>MM^xDP#d2q_a!k0-98S_@e4+c)V^F z;5z}XM48EX=qmo+pX92Mvk?`Kc2uEQg9eP!6E{&Ib`4>7{DKe-LTGvL0LT0>?0`kR zcv5vL$iFsBX&c=1QP1BzUB%Jk2T^a#@IQa$vygqotMZ9M5p;p-S9MI{dX=dQ7>16M zL^4;c-qKHwYjHP-ep37tCZ^aCoHn5gbgGCam|wcCEr0aIZVq13`rA+8cXsgDO!mx~3rm=!Zv2pIe%8KWIQL&^hg%mS&%oJyIKe@X&Zde%(zp z0^GV42N{S2A)!Q$Jvbyh7f5PT>FZDWHdXi#2^|JbKIrMyX+Ft|1@Q%6x>c}TQ$p1> z36Gx$62&I!-_v(*?466@exTBjqADH9bAvjc=J^|z|Iz})f7*KCzFT!;VV%&dv0I%~ zSI%7cFOygTfG9a|1(Wmg_Am#sUdau63zCW7BkA|UePw)Ng7tEgtQ^3S?fTlP9JXUd zB$Zmz8CU$7nsm5=PdtsfcD%M6<&{BYKdX{xK(Kl4x4^IR2(l;h>_fQ0iD3{Y12h}^ zWMn8a%rwd$?+!y~wm1A|GZ0B4%m?|>cd^;RkJRLm`yYq{bY{(qQw1w4vxetf@*Rxu zB_W&RsNj7X5_-q82bXT|`CKugkyC{4k z@E1_2@(j(ErDbI}FU}#NC0b_vA$|xP^pDfhmQ@QKJ>I_EIFV*kQL&!)!i$Yy%pOj^ z0%_reW)tE^ooJtXeOG(S%hPv{Vjr%O=@?U!z@l)vdFa-rGe*q^%%(I61pts61;v8^eRZBbFxNSG_k4Ue$qD%bl_b;Z28im9p%s)6YYyeWAxlQrUrr51r zAvK!Nf?|taeWhYfq%n5(a7uEQ1btWG8S!FqiW_B#VqG~?PoJ5)Uv$5RbOb`Ru>}L^4cvy# zFJ5r-iB?$EhKOB9OIA}ugEl0i*sP5J zWar#-2ycoTPKDYr;|bKzsIdVJfKA;V4_78BCR=!`7Bfb8d8Typu}dxLI}8*o+nt zR4?wELdaSkKUOl0wo>20p&sm@nZ~j`L@oY@gHaAkzXmd#HGflaolY`OD|O6T%2$?_miQOw5XDsArZG*Y^+Su0rM0#B zhP_A~?t(Kt+3ydZ_tGqBpoi;`4zTA>`+mG~B87fGL5ytPoE>+gz(j-wRA+5mI#=Fr zRq?~af|2+p6*nHm<*D89_3K-})9SWV{r)P$_c{=cwm&F^^!GLhY6XDS;7o^U9udkQ zfXDr;|L~!j4WM^)e5zxC8#eJO?8)x`^kePHU4SHe0ib|`mjCDReFQdyA=?dk3CDk) z-gNG-__LioKmxLBR%~p+FD%5?Mx1xii&tAd13lY7bHW&aJH+W1SpvBJE@M#w0{~}P zoAfRFkN7puXJ&>kR$f9+j~~$lQL^gCGg;Uv1gu#8!THvnIi-GlfmQl$GG4LLj%5q{ z1)r--7a9DpzVEs~yy+wuc(4sWd}eN^)4D_I=ZwL@I1F*eElq800ZV*{ABNXVoe}KB zty?|MUcQX?4qB(K802#^FMCrPrx}K*WP$Pabfx9>6=Dm0vo#Z%VAsO+gIwGVgoBTa z>@H#MN7>`K$wu5n%KPjcdgN^j<2LQjbN_((5B~=7XmH|r<=bnwl}PW%SBG)${Vev zP|rp`tr~1MYu(4pGI|i%NwAI=yjIAk>#Ng`4qG`Fb1H|1?JvESbg+%R_Jf8V~U%hUjzqXS{b4svp3B7frK*sq;CcSiH^@!iJkCKMSN z>BKtrD=Bh1TvnQQ%J6H-N$u_&D;LB=Km-HRLv?l7YRS8QFHAv5SP~t3MHbxE~cpZGqLeG3LY|>`W9m<`SB)DXEch6L%Cq?BGyje0{85<+V`1u z7cIBm(%$}<7?HzAb)-Go1B3d3lg2%C!!5mETV@+*emhD~ipg4K%zY7QcvW%~ELF`@UYQY#P@H z|IXK1rS*{@16)D>HP2RsU1QDbcEh7t+-+` ziII&9+@!9aJr##-p|f&&^_8o6SKN2jg7V9II>ty$S?M}3jf>$-f{?fGqstZwQ|w%y zk9m^ zpGZ!9dWq`Ka_r%>VMTSd&S+z&^QXSRsb>{B{Mjm)qI~EnIBqy>(%!$1*5MU8J+N{l z_C}JiqbEG_4ozK=F!%n}W?s)+QCW%d=TmiTYayeyUDgA{y?{8=pOh|{&}DiaEOK~Q zADNE;APVeyQY}XgV7|v@_Gv)C`Pm_p;4@X;!Q2Kv7Zung4nOEI}*3`ppTJ z2MKAYK2=5U&|xAye`cU4$U)gGAL2sDdkLSFGpPU)l#44X1AqNu{k5E=*^*cT;aF*F z7R%fiZv@mw5Hpt1I~gAV-vt7WFsMyVrt;ZxJ(LPjKq1P_P<|#UYDANfLXUpOYEJWq zmIe+Kr8EO>I=YJ=KD;X*tQ!81o?cQ^^!Qc@)9yp#$gGNih6^BHg=TE1X6(|Xaa2EU zCMq_-`Gag8f?Y52U!3C(EWjB#@9Y5MWV6uKeMm5iMqHek7+?lI(`V&wA$j`Jj>r-` zz_Am70XK17HF5w&7oY=)y~KXXGp2zwME&A8t_% z4e^wz)Bj%5A3#9dY5cP0?_v1*=1xIxDkCE!LP<{_t`=y8#Ka)9SUn1W9Imdm))T~Q`AlELrZ3_sKq;dUPwY<7}0awTKKs*By?iB0is{%vMTCqID4`V)D z+tVInpvy%CKJ6pm-R8|p*ndqo$dr#X#qHkX@!WCs5o~RWkfBSpBu*6$aNF7^sAReV zk-kYXJ2%lDXgStQfu`scUz_VQaCb7d$C{_`dN9Dim~ZcdF0%IoY692yEbtzEth}cxJL09V^n-X680G>) zg_>_KNZO;%I-}eHK_!JlGX4LxGlcnXZK}C5+ymMQV4*al3_YEr2fk}!2|bGg z3ft>%6(Z#bB$=7a&5ykv$+OK(HCJfL`aDwukw5oG5BRIpX1ys?lD+OcOF)F|V8(Tb z=6>6z+PM~;dNA8%-J4(_fd{fNQEkCvu42&q{S9tiVBN#k+XiuB!jh;=l9Eavk(8uS zTHm*zN~ltJ2twipOMtUjWO6`-4i&D-7EI07g6{8+vLOd{x;x)K7n(SBwSxP6b9{|I z6wqkYo;Pap?2igA%YI>Jbo3dGdlr8_z%Z|r>N#}XeOZdB~CcNzBF z9Z0~tixmo;aJ5d+gL~vuTt1Ggsu0-jGn?u~euEpNEVI&ZP)5P#9WRri`+_6o8R$bwrRaYHK;%joPA&I@|o%BX63E#3X(Bv+=|!=)g6NjLLugpzobrBZJTW7zx~|TA%?{ zbABpD*u9k{GwHZjhKd5j;QfQS#uXCVWH>Rg_dN1PDm2~a6Wr1d(zrRaR z%QRQ)GTg+Ds}LurLtuSip9(uO^KkGej6v52=8@z|`oVTqVuEt~?|B7Jm(+$0Wl4+5 z$m4cA%*PjdDH;CZUHb-pG+OPG=VV^N9uFZ==P?`=u4XtBd%+B21rM$LR3~qvARYbT#Nt#4C?N4Wd;ga;2EZR&FIn(rKDPNMb0e-s?7Fs- z6t3Re`8hP#u`6elWMysnSm@01{NTMA5SaCC1$Zt(5jx;7t=i5isMPKM2Ed*5Is(@+ z_qX#{8klOKi^78BzirDPY}@c4uBAMu133afQNq*!yAiO&sKR=(41`BzMH5|;cLV?n7$~*az zM?0jjw1=tR>WwP9?>~(&#um;Bj@pH|KHA)m71|&5)TggAw1}|$=e1hyB+<{VTc!7- zP9$@2G%g(}V|&w;MZx)`o%)ym{)*-|YVa!edftdOT#=Ic)YRmHC-aLzBXkH9;EUk_ ziB)cr5Apw-0q~zDcZi^l3atu1dNepaw<;F1`ad{6a;m;hNCSXInox+tI00SNE?Nij z2d@uP!0SgSx$DA6pGsJC7{O_cdQBYXV;1>C#OVu1$ccZEduiFq($X0`;xuOr|H~K< z8kPFjo{nx6xfq}Qc+W-#u7fm)M8Pi#4gc;J|BvWBTD}y;knK6yi=$~Di;EwD(PUTS zM@zfKWyxINI(qwg|tU$ZUf4I4SN`#+2gTurV)AMr;XBX4ZeC}@eJtZ=N6w&K}=I)fLQk09{%AUGW6 z*2lZ7Rc{Q^7yYQq4`SOHcy_nzogb<{DyGe?85urVITC~Nh!B1Q+a&M-XM{xuagb2rah-y27E?Aep}G%O6ws_AbXw{6>Y$9mzgfPg>0mGRqt+C~t0#=*$3wejKiG5Ito@?({zWxaM#h@G^=ojTnQs z3w^%5o3^CLS=$4ZHMnk+K4_8_t}W3*8$s(Gq9Sf=LW_4vfR;ZGiB}A4Y{4#D7O<5p z!6?DHy6g)?PeH)8?(WsL>{&@n-S5PnL6+fHq2rB; zm`Loj>?2c_%q=X8RBzt=1>5txP0$gR%72%y<`4j3#dP(B=%q^syK)O_&;tO$J$krC z$lAgFcXny$H@)8lIAeeakX&mgDG3RNurT#YqO|COhL5<+l`OS#T)#cd4Tm*Z5Jz}P z>08gV`xEV(Hg0xADM$a)3LS&=m$J*FV`FkRZ$5Stl|ugq0#jG3gu?pl;NS_fBv(?( z#LxOpetq>j7Id#dp(s;5Od_(Hb|dGbbi}TOs^8?z^!<_cIVaVEmCTTD5>*4Ezxz;N1*^ zzpv}8fu`mIkUNnlDrv1J+ArN~6$94Zj4DaJbM+*e2JblVqC_af+0NED<}DeDlbo1h ztLs|Dh57?~-m#U*-YF5)rIoQ}lLz5F4F8adbJ~0es{Q@_jU$9-sWV-fZE0z_pkMjjBGlWs%MG}BUb@y zbL27JYES!^w>-IPva@1sfgy0ircH}F`ubqPjvxOVgT+5SGWQIV+*4NXnd21Po*O!q zc_Lxlr+2hH44F7cPJH(H^VIFu52qp`gwYtFWo%qI*%eado&5T6IE4BPK~+^<(Qmu+ zMNr4OOL+bM&Z&G}a`EyZyl%tQREVE7!ApHX^V@MCJ(~G>sVrOW{YWaYgbRLVtNwLD z&bG04d=2dH5V{BNOSx=-q-HouBc76*nkMN#y z`~~pa&R3Ztr9(GIWv~WsXF8_V;t_Fks++!daBc(A>h~l1hN&|rz|+lbKVH9-+j3{^ z?3SuShDG)C9!W2^wFN^pt*NQ`Id{sjno{E=aS#P@lwYx(@?-SVrRyNR-sHZ0>+yjr zE9)z>yS7tG6Eecn2GgE@zS$QcDnCZ!LNUqjvbD|rx}=i%6(7@&y&^ktHKcqe4_qxc zBh;Q9XX_QS|H)xhq0msrm5$RfcYE($+21r&8^GHPSJ+s;c-MM!f@Q&yAr*vN?A9T0 zl=#0mC=BvY{RJCiWsnjtJY>*Oem~xiM#8UqYzMa-v8oznfh%S=_Zo#fk;$g6A%MZi9W@o{RX9A2I?5BFxVU2=G3u8eBBbR-Nj({fu?uwhD=&V#{VU z(kez=YsHzeek0f+Kc1mbYB^Pu*GqvSRYqN%Zu92N@cgrpsO1)j-n+-t+iL;KnrQ5V zFKvgoeB-Ux-x>P8*K^YeOoHZtV(Q2Iq)bav@3Cwo)i%wp_pN4rYmxiRlIsL@7*7Cl68u!-+KZxuT-D zocZ|`|Lz#!)``xIy^fRipou6bEHGgntr@-5& zV;0|vWK^@weQ0>sj+_{whg~)~BT>yG97>Xh(+}&7+ER2E;1j(JhX-kttS#BKF6$)m zm^&60+@!`xZX7~F_nL%{$bO{6P!f(9Z^*x*?*(=<3Tx3gVb5aPX=M>PM~KPO~Z7LwtL# z7#i-e8f!;qp%<`6WapZ|y`P8AobdpU-#2(>i_`iWW?ePa_P$}tN14{^PTEVpaYpv{ z9VkgY++Vc*KC-$X!+Y$QUyhYmv`=#KU5LHp2WHkK$Z~Tjg-)rY6w(SbBXjZs)}VY& z!UrCF_;8!JATc$`MoFAmS@Dd1IMQ10f_nPDFj8w;fta9n*-1-F9{>*_<=nq%(I(7tZtS(y1El_v{nD@AWk;B>Cu|gQx%XDLdH0^5O&_XJsn1)yC?z=C>ab15r=XzV zofGTUV(#I3Q};ct!!KfnF9DFC2~f);N;K7D?6=q)MUq&6eZ)(1dDBFM0ZY(s#+9vG ze?9l1)rf)pB{TzGe2D8(A@hHe+EaqOQV=}&gSkw!KEPmXlEl*{ zNpO?MDxHGeQ#~<$C#Ea;{ZE_Xl~Ti%DHDZa%`~^{4Xs)qFCg4cFO*WV*l%^ z-wFi(b-!&sa6sXe2z^zwR4<5eXOJ42dU_Sr!Qnye=-T?^`e+I2Fr2vzBO?`9mrL1Q zm{*tn*HueO8N>rC|1A?W3Zt(k-{&=iCkQF@OLwDbGww5{xT0wsi~_g|MKByjiGg>T%1C_ zxMyT*g38GKxh5`zTO_0kvX1c}X)aPSNPWCxff1%0yLiVxA3jSJ9+$5XF7EPEb9ZOn zA+q=~#csjJ*rR;V{J1203dn}}tc^);Wj}o? zM^~1t!0s@9Imwbp8G+5`Z4^2!NO&2vb|)t@A3u5WFy|eXO%SuoDB zk!Z{8rv8i<{h;uDiENb7FO&XBxA^fzW9Z@ZanG32@AZ)~!DBr({SKiEMlEYc^GzF~ zQ-9{1Z8PjC5D%V+SI-YYRmqRl1&s}dgQ}>6>^47m-nel~67)kZ%?Y{RhAEjQmKTQw zEZaw$;zUT$uaK15*`CAR+bdADJV_6?}J~{Zp)E+i^<*4&?wANWzXC+FD@$TaQ?bUhXie2f?`rwGW3X{ zVv(n=N=y4lUcTIVBY2gJf&*9ft&;mnDMufytO)X3+IW|^I}!1LG&J_(6CodrT3Yhv zn$Mw$&BI&BSt3en;PVJP_~A)~>K`%4y`A5)x1VeqHB@YBw!@)EPTu6Cx_D9hlP`tV zV5KJh-jBH*0U15X{gSY99ywV}!N^GTaBd}Ad9=%V4m^dqH*s7G1L6tBh# zR$KQZFfucH;X))M3%)eb&a>~p0iu6;+9n*}^{q*?v>FVpauDfWQfM~8qPH6002kfx zuOAM`*Ft$Rhs5BmSFe=oKSVIHD%S2L&H7Ev2+AQ!lL4b~$)m*-+`CyhIsN_I*D52~ z)dd*`Z+abYkTQ5D6MLWd86qwge#2$(z^H{i*=gMu?bF*Z_qMj3d2^jne<%G~K$K)A zr+)3m&EyA5+S9jxuC3Mi(YKx`Y0~+N3hH*|)0SM>+14lqXXl-VT6gz;s~7BQcF+q3 z;C@I&vD7D@&@1Q9hds|+{N);$?NqTcrJmh|pqtNib&(SL<=_a5c35s%{MkTqh&H5u zpwSbtScgqi4y^-0V|H6vIk17?5^lDh-nM=F_a-CF*boYCZtfSHz4`V-;VxV3Q?<%e zp@Q;Em|&IlG11W}{)1+aXK4!(L4IjvW_I@NiU3lV;iZY`={wtzF@Y`#Kc5NwJ{XF? z4}S%`bdz2aG;I9I{H&$mOkT5pQa*OP)B6IJKO3DtzX1=GHr#Vp!wyMYx>R2ztEx(V z_wFf@Cx;eA0@-)Ka7`W@Ohtb1oAl+!6ri~L+xhN%V@`x3PQGz>wDcT2a9a`-s>a*; z51tuiV^=*}f?p0g$Y{E(4YRUc^|H38H?a#%#f_sGTj#IyU^@A69?t0;}a>jQ%$Yptc9)?)W+ zBqtRp!z?kEobtW~dY#)}O9P6Ebb&KZIV|lVG%Kk!2y2%^7Fk~2(9@8Ri(Uta-4a2d zh~eu2K?928Md7;7r>`mB$)M<>3HWiH_+TI|NhvN~pE+P{O|iB({7jne23NVKZ{bZn zRB1Om-|g3vn4&rTA;xj_4b7msZJEb|2QqxNGsm%}KOZajM3p@Tvmth+7uD6-6%$|i z&s%}Z5?}>u;YdgCUdo!>8@h=}Q4!6d~8=@ge_2fxI6esrt zRECSHLyUawN2S9*yc|9ppy^>Y6pnEnVr z{zsSm)8mz~lS_pA}YJH{U;h1Ye+s*~r&(kj!DF0?fzB#RWZwi$AmP zo2JS&lZIX1VhO1`iZ}|5{oC27>e6m+S4th)i}v7$3UOscMdv)F{_qe=ef``Tl`15o zEt&eLjF+Xe8u_a9`nWIl&Z^mqtuBqS6HP`WCGLeNCEW!iK=k&2uiKPv7=SH=d+g|KL`oZ$iSkNOAJrdpSwdnEWo5UTz}BC4;{ zgA@rv?qCu@NLZ%Q7 zi+gt?jvaHK_Ncs!Lc+EUuf=w3*Q=q9OI-&t!`w=JBTfPGg(LB*RMkI6E>_fWzz@c$ zk`d1&B(#Y+Mgg|&oaz^FSb*|*Cojqy+09zecMnU(qJauh*ix?#6>+{!t?4R^!I6D; z?f%IS9=B92QO;AR$~k#6VM!;;G~F*Wp=oM5_l=pDg8*d6Zer{FJhLc&_Bc0p9M|lr zs2NUB9a9~M;yy!!!Vz=obw*042ru9@>+9#Zo~lRdxV|b*qHY^S1zv`1XV@jNPc^a= z`^@5?+RC$4*U{4>fnGobv53_VHfUST@E|=*2h!5$2I6r!mTpiVIM$M+rKQC%Xsc_o z{Fi&GsAxfqQM6ia%db8!QG#`w89a;sAh%P&fXbPR}J1# zU=aYrq(peQ#Eok#>tQfnoH%hMs_*L6CoOy##PE(=5j?DIzxRUWjQ+0QPmJzUR23~Z z|1=m*9AfkA5x?ZRo7UkuSg}+`hoe}*rruxV!7)=%KySW0&jzvSR(!rk$f>@PZgGz$ z=19CM8#j6Dm3h){-9}xbV&?F*7FAas4~A!lgU&zHMEVC7fM-BQ$7<3Jmgdad9~Un@m#=>Q+?LR8?P=L6#CZ6C=ic zrLL)|2@DA}pxvi%)MOlx(JQ)XbIGqKdbRCMh-jRrv0Q?JB;|7wz`F}^3X{HFrXY^+ zltHp(Y}m49CKm2#xPCtB?a^ej9(Hx7RW+;}i?MRZUzaYHv-tldv^qVgqXbz5@9#u5 zjm^XQ0F&kUImpRLt|f)hnia10GNxOMw+g>`vy)Vmw8>X?=_JoQ2bkMa248GW)Qz>6 zm0rxW7*pVf2t8VczRtaS!EthKksv9YNz32FC@#%%*cz{`m5}XJS1}#89!_Uoh^8N_ zuS-!Yqw@eKSQWKmrl;A;sX;P7z8Hu>t9OKNHwje5K=nTs=-F3e!eMkDYgV(2c2-M` ze%F2OhtnjU`+(*I<+(^{jj@*X&F7Zqg-BlTnt7+ymh=meAO&pwLpk%-1KXU8P}L3)N|Y-}E~U5iixLzguLY=`ZtE)K@r>bc#!y%2(N9?X-oa}``J zTFvpNFuD`NW^6%6KE}%8DkC~DSW(Tie0wT}!|Ngpo2Y;NsxGguA92>E#9OOQj#`nW z2SBvWZeSBkU{R{aL^DN-5_`VcquO_^tR|3+AoEY=bBUK&ND)&f_Q=^>M#XqOQ`OZ*rq3zuc)|cJV2#<8=SQ7;+ z=FB)ncN7^&d@B^3x{mGy397vOp5X;>3YCX&XSYsvx&ImOON6%E@tPZN3xe+`P}x+! z<+2@H(AX_)ZH>ErWEYNkKHlnYdW{5O3-my)#9FS*i`W0v{ZM>28+Psc$rlk(08ab) zGPmPI`?2|{b-%S$@!p9pdVyRqm

9J>eGmBU1 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 gzxnm?>E4BvUvm>8cKRMXM1ij}(sEKUCpGW Date: Fri, 18 Aug 2023 17:06:44 +0100 Subject: [PATCH 066/105] Remove logging if logic mistake --- tactool/window.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/tactool/window.py b/tactool/window.py index 025d63f..95886a4 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -564,11 +564,8 @@ def add_analysis_point( _label_text_item=label_text_item, ) self.table_model.add_point(analysis_point) - - if self.logger.level == logging.DEBUG: - self.logger.debug("Created Analysis Point: %s", analysis_point) - else: - self.logger.info("Creating Analysis Point with ID: %s", analysis_point.id) + self.logger.debug("Created Analysis Point: %s", analysis_point) + self.logger.info("Creating Analysis Point with ID: %s", analysis_point.id) # Update the status bar messages and PyQt Table View self.toggle_status_bar_messages() From 355e345c5bda1ea2fc244d04e00c213ae84cab58 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Mon, 21 Aug 2023 10:54:23 +0100 Subject: [PATCH 067/105] Move transformation methods to recoordinate_dialog.py --- tactool/analysis_point.py | 52 ---------------------------------- tactool/recoordinate_dialog.py | 52 ++++++++++++++++++++++++++++++++-- test/test_transformation.py | 2 +- 3 files changed, 51 insertions(+), 55 deletions(-) diff --git a/tactool/analysis_point.py b/tactool/analysis_point.py index e22a7e8..971c512 100644 --- a/tactool/analysis_point.py +++ b/tactool/analysis_point.py @@ -6,9 +6,6 @@ """ import dataclasses - -import numpy as np - from csv import ( DictReader, writer, @@ -297,52 +294,3 @@ def reset_id(analysis_point: AnalysisPoint) -> AnalysisPoint: """ analysis_point.id = None return analysis_point - - -""" -Notes on affine transformation: -An affine transformation converts one set of points into another via rotation, -skewing, scaling and translation. It can be achieved mathematically by matrix -multiplication of a point vector by a transformation matrix. It is slightly -complicated by the fact that a 2D transformation requires "homogeneous" -coordinates with 3 dimensions. The transformation matrix can be calculated by -solving a linear equation involving the source and destination coordinate sets. -The following articles are helpful: -+ https://junfengzhang.com/2023/01/17/affine-transformation-why-3d-matrix-for-a-2d-transformation/ -+ https://medium.com/hipster-color-science/computing-2d-affine-transformations-using-only-matrix-multiplication-2ccb31b52181 # noqa -""" - - -def affine_transform_matrix( - source: list[tuple[float, float]], - dest: list[tuple[float, float]], -) -> np.ndarray: - # Convert the source and destination points to NumPy arrays - source_array = np.array(source) - dest_array = np.array(dest) - - # Add a column of ones to make the points homogeneous coordinates - ones_column = np.ones((source_array.shape[0], 1)) - source_homogeneous = np.hstack((source_array, ones_column)) - dest_homogeneous = np.hstack((dest_array, ones_column)) - - # Perform linear least squares regression to find the affine transformation matrix - matrix, _, _, _ = np.linalg.lstsq(source_homogeneous, dest_homogeneous, rcond=None) - - return matrix.T - - -def affine_transform_point( - matrix: np.ndarray, - point: tuple[float, float], -) -> tuple[int, int]: - """Apply an affine transformation to a 2D point""" - # Convert the source point to 3D NumPy array - # Adding z=1 makes point "homogeneous" - src = np.array([*point, 1]) - - # Apply the affine transformation - dest = matrix @ src - dest = (round(dest[0]), round(dest[1])) # to 2D integer coordinate - - return dest diff --git a/tactool/recoordinate_dialog.py b/tactool/recoordinate_dialog.py index 8c887de..0741cef 100644 --- a/tactool/recoordinate_dialog.py +++ b/tactool/recoordinate_dialog.py @@ -1,6 +1,7 @@ """ The Recoordinate Dialog is used for allowing the user to provide a CSV to be recoordinated. """ +import numpy as np from PyQt5.QtCore import ( pyqtSignal, @@ -19,8 +20,6 @@ from tactool.analysis_point import ( AnalysisPoint, - affine_transform_matrix, - affine_transform_point, parse_sem_csv, export_sem_csv, ) @@ -255,3 +254,52 @@ def closeEvent(self, event=None) -> None: Function which is run by PyQt when the application is closed. """ self.closed_recoordinate_dialog.emit() + + +""" +Notes on affine transformation: +An affine transformation converts one set of points into another via rotation, +skewing, scaling and translation. It can be achieved mathematically by matrix +multiplication of a point vector by a transformation matrix. It is slightly +complicated by the fact that a 2D transformation requires "homogeneous" +coordinates with 3 dimensions. The transformation matrix can be calculated by +solving a linear equation involving the source and destination coordinate sets. +The following articles are helpful: ++ https://junfengzhang.com/2023/01/17/affine-transformation-why-3d-matrix-for-a-2d-transformation/ ++ https://medium.com/hipster-color-science/computing-2d-affine-transformations-using-only-matrix-multiplication-2ccb31b52181 # noqa +""" + + +def affine_transform_matrix( + source: list[tuple[float, float]], + dest: list[tuple[float, float]], +) -> np.ndarray: + # Convert the source and destination points to NumPy arrays + source_array = np.array(source) + dest_array = np.array(dest) + + # Add a column of ones to make the points homogeneous coordinates + ones_column = np.ones((source_array.shape[0], 1)) + source_homogeneous = np.hstack((source_array, ones_column)) + dest_homogeneous = np.hstack((dest_array, ones_column)) + + # Perform linear least squares regression to find the affine transformation matrix + matrix, _, _, _ = np.linalg.lstsq(source_homogeneous, dest_homogeneous, rcond=None) + + return matrix.T + + +def affine_transform_point( + matrix: np.ndarray, + point: tuple[float, float], +) -> tuple[int, int]: + """Apply an affine transformation to a 2D point""" + # Convert the source point to 3D NumPy array + # Adding z=1 makes point "homogeneous" + src = np.array([*point, 1]) + + # Apply the affine transformation + dest = matrix @ src + dest = (round(dest[0]), round(dest[1])) # to 2D integer coordinate + + return dest diff --git a/test/test_transformation.py b/test/test_transformation.py index 4b213f7..ddd3fa6 100644 --- a/test/test_transformation.py +++ b/test/test_transformation.py @@ -9,7 +9,7 @@ from pathlib import Path from tactool.main import TACtool -from tactool.analysis_point import ( +from tactool.recoordinate_dialog import ( affine_transform_point, affine_transform_matrix, ) From ce16e527b9519453d1b9331144e9851eaf7a0e5f Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Mon, 21 Aug 2023 10:56:25 +0100 Subject: [PATCH 068/105] Update import formatting --- tactool/window.py | 1 - test/test_import_export.py | 1 + test/test_transformation.py | 5 ++--- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/tactool/window.py b/tactool/window.py index 95886a4..417685e 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -1,4 +1,3 @@ -import logging from textwrap import dedent from typing import ( Callable, diff --git a/test/test_import_export.py b/test/test_import_export.py index a9e45f1..0c4f5bb 100644 --- a/test/test_import_export.py +++ b/test/test_import_export.py @@ -2,6 +2,7 @@ import pytest from PyQt5.QtGui import QPixmap + from tactool.main import TACtool from tactool.analysis_point import ( AnalysisPoint, diff --git a/test/test_transformation.py b/test/test_transformation.py index ddd3fa6..82c1775 100644 --- a/test/test_transformation.py +++ b/test/test_transformation.py @@ -1,13 +1,12 @@ """ Tests for functions in the transformation module """ -import pytest - import numpy as np - from csv import DictReader from pathlib import Path +import pytest + from tactool.main import TACtool from tactool.recoordinate_dialog import ( affine_transform_point, From 7c671b26bf072638860f0f2955ae146298a856be Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Fri, 25 Aug 2023 12:41:11 +0100 Subject: [PATCH 069/105] Add test for reload_analysis_points with no arguments --- tactool/window.py | 3 ++- test/test_integration.py | 57 +++++++++++++++++++++++++++++++++++----- 2 files changed, 53 insertions(+), 7 deletions(-) diff --git a/tactool/window.py b/tactool/window.py index 417685e..55e9502 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -624,7 +624,8 @@ def reload_analysis_points( self.clear_analysis_points() # Iterate through each previously existing Point and recreate it for analysis_point in current_analysis_points: - analysis_point = transform(analysis_point) + if transform is not None: + analysis_point = transform(analysis_point) self.add_analysis_point( x=analysis_point.x, y=analysis_point.y, diff --git a/test/test_integration.py b/test/test_integration.py index 7ac3980..5075c9f 100644 --- a/test/test_integration.py +++ b/test/test_integration.py @@ -53,12 +53,13 @@ def test_add_and_remove_points(tactool: TACtool, public_index: int): AnalysisPoint(3, "RefMark", 240, 240, 50, 2.0, "#333333", "sample_x67", "mount_x15", "duck", "", None, None, None), ] + assert len(tactool.table_model.analysis_points) == len(expected_data) # Iterate through each actual Analysis Point and compare to expected Analysis Point - for index, analysis_point in enumerate(tactool.table_model.analysis_points): + for analysis_point, expected_analysis_point in zip(tactool.table_model.analysis_points, expected_data): # Using list slicing to compare just the public attributes of the Analysis Points, i.e. up to the last 3 - assert analysis_point.aslist()[:public_index] == expected_data[index].aslist()[:public_index] + assert analysis_point.aslist()[:public_index] == expected_analysis_point.aslist()[:public_index] # Compare the size of the actual ellipse to the mathematically expected size - expected_ellipse = (expected_data[index].diameter * expected_data[index].scale) + offset + expected_ellipse = (expected_analysis_point.diameter * expected_analysis_point.scale) + offset assert analysis_point._outer_ellipse.boundingRect().width() == expected_ellipse # Remove the Analysis Point with an ID value of 3 @@ -81,12 +82,13 @@ def test_add_and_remove_points(tactool: TACtool, public_index: int): AnalysisPoint(2, "Spot", 202, 202, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", "", None, None, None), AnalysisPoint(3, "Spot", 404, 404, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", "", None, None, None), ] + assert len(tactool.table_model.analysis_points) == len(expected_data) # Iterate through each actual Analysis Point and compare to expected Analysis Point - for index, analysis_point in enumerate(tactool.table_model.analysis_points): + for analysis_point, expected_analysis_point in zip(tactool.table_model.analysis_points, expected_data): # Using list slicing to compare just the public attributes of the Analysis Points, i.e. up to the last 3 - assert analysis_point.aslist()[:public_index] == expected_data[index].aslist()[:public_index] + assert analysis_point.aslist()[:public_index] == expected_analysis_point.aslist()[:public_index] # Compare the size of the actual ellipse to the mathematically expected size - expected_ellipse = (expected_data[index].diameter * expected_data[index].scale) + offset + expected_ellipse = (expected_analysis_point.diameter * expected_analysis_point.scale) + offset assert analysis_point._outer_ellipse.boundingRect().width() == expected_ellipse @@ -122,6 +124,49 @@ def test_clear_points(tactool: TACtool): assert tactool.table_model.analysis_points == [] +def test_reload_analysis_points_no_args(tactool: TACtool, public_index: int): + """ + Test the functionality of reloading analysis points. + """ + # Arrange + # The 1st Analysis Point has default settings + tactool.graphics_view.left_click.emit(101, 101) + + # Adjust the settings for the 2nd Analysis Point + tactool.window.update_point_settings( + sample_name="sample_x83", + mount_name="mount_x81", + material="rock", + label="Spot", + diameter=50, + scale=2.0, + colour="#222222", + ) + tactool.graphics_view.left_click.emit(202, 202) + + # Adjust the settings for the 3rd Analysis Point + # Purposefully making it overlap the 2nd Analysis Point + tactool.window.update_point_settings( + sample_name="sample_x67", + mount_name="mount_x15", + material="duck", + label="RefMark", + colour="#333333", + ) + tactool.graphics_view.left_click.emit(240, 240) + expected_data = tactool.table_model.analysis_points + + # Act + tactool.window.reload_analysis_points() + + # Assert + assert len(tactool.table_model.analysis_points) == len(expected_data) + # Iterate through each actual Analysis Point and compare to expected Analysis Point + for analysis_point, expected_analysis_point in zip(tactool.table_model.analysis_points, expected_data): + # Using list slicing to compare just the public attributes of the Analysis Points, i.e. up to the last 3 + assert analysis_point.aslist()[:public_index] == expected_analysis_point.aslist()[:public_index] + + def test_reset_id_values(tactool: TACtool): """ Function to test the functionality of the Reset IDs button. From 21c6c2c2dad2911f82208cda0fee4496ef0ccc19 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Fri, 25 Aug 2023 12:54:39 +0100 Subject: [PATCH 070/105] Add extra tests for incrementing IDs --- test/test_model.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/test/test_model.py b/test/test_model.py index 33375e5..c3f8cb9 100644 --- a/test/test_model.py +++ b/test/test_model.py @@ -91,11 +91,13 @@ def test_model(model: TableModel): "_inner_ellipse", "_label_text_item", ] + assert model.next_point_id == 1 # Add Analysis Points to the PyQt Table Model and check that it has added correctly for row in expected_data: model.add_point(AnalysisPoint(*row)) assert model._data == expected_data + assert model.next_point_id == 4 # Check that the PyQt Table Model does not return non existent Analysis Points assert model.get_point_by_ellipse("non-existent ellipse") is None @@ -109,12 +111,19 @@ def test_model(model: TableModel): # Check that the PyQt Table Model does not change the data when removing a non existent Analysis Point model.remove_point(4) assert model._data == expected_data + assert model.next_point_id == 4 # Check that the PyQt Table Model does remove the correct Analysis Point model.remove_point(1) assert model._data == expected_data[1:] + assert model.next_point_id == 4 # Check that the PyQt Table Model does return the correct Analysis Point using the Point's ID value analysis_point_3 = model.get_point_by_apid(3) assert analysis_point_3 == AnalysisPoint(3, "Spot", 123, 456, 10, 1.0, "#ffff00", "sample_x67", "mount_x15", "duck", "note3", "outer_ellipse3", "inner_ellipse3", "label_item3") + + # Check that the PyQt Table Model does remove the correct Analysis Point + model.remove_point(3) + assert model._data == expected_data[1:2] + assert model.next_point_id == 3 From 6e763947b2c712750055f567b6f610a014ab40a0 Mon Sep 17 00:00:00 2001 From: leorud Date: Thu, 17 Aug 2023 16:31:10 +0100 Subject: [PATCH 071/105] Add initial ghost point experimentation --- tactool/graphics_scene.py | 7 +++++-- tactool/graphics_view.py | 37 ++++++++++++++++++++++++++++++++++- tactool/window.py | 41 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+), 3 deletions(-) diff --git a/tactool/graphics_scene.py b/tactool/graphics_scene.py index c3d31dc..5e461b6 100644 --- a/tactool/graphics_scene.py +++ b/tactool/graphics_scene.py @@ -47,6 +47,7 @@ def add_analysis_point( diameter: int, colour: str, scale: float, + alpha: int = 200, ) -> tuple[QGraphicsEllipseItem, QGraphicsEllipseItem, QGraphicsTextItem]: """ Draw an Analysis Point onto the Graphics Scene. @@ -56,7 +57,9 @@ def add_analysis_point( # Set the drawing colours to use the given colour # pen just provides an outline of an object # brush also fills the object - pen = QPen(QColor(colour)) + qcolour = QColor(colour) + qcolour.setAlpha(alpha) + pen = QPen(qcolour) brush = QBrush(pen.color()) # Calculate the scaled diameter size in pixels based on the given scale @@ -86,7 +89,7 @@ def add_analysis_point( # Create the label as a PyQt graphic and set it's attributes appropriately label_text_item = QGraphicsTextItem(label_text) label_text_item.setPos(x, y) - label_text_item.setDefaultTextColor(QColor(colour)) + label_text_item.setDefaultTextColor(qcolour) label_text_item.setFont(QFont("Helvetica", 14)) # Add the label to the Graphics Scene self.addItem(label_text_item) diff --git a/tactool/graphics_view.py b/tactool/graphics_view.py index d4e5b2d..052c2a9 100644 --- a/tactool/graphics_view.py +++ b/tactool/graphics_view.py @@ -1,5 +1,7 @@ import math +from typing import Optional + from PyQt5.QtCore import ( pyqtSignal, QPointF, @@ -21,6 +23,7 @@ QGraphicsView, ) +from tactool.analysis_point import AnalysisPoint from tactool.graphics_scene import GraphicsScene from tactool.utils import LoggerMixin @@ -38,6 +41,9 @@ class GraphicsView(QGraphicsView, LoggerMixin): # Tracks the users mouse movement on the Graphics View whilst in scaling mode scale_move_event = pyqtSignal(float) + # Tracks the position for a ghost analysis point + ghost_point_move = pyqtSignal(int, int) + def __init__(self) -> None: super().__init__() @@ -52,6 +58,7 @@ def __init__(self) -> None: self.scaling_mode = False self.scale_start_point = QPointF() self.scale_end_point = QPointF() + self.ghost_point: Optional[AnalysisPoint] = None # Create the Graphics Scene which is displayed in the Graphics View self.graphics_scene = GraphicsScene() @@ -107,15 +114,31 @@ def mouseMoveEvent(self, event: QMouseEvent) -> None: parent PyQt class, QGraphicsView, at the end of the function to handle all other event occurences. """ + event_position = self.mapToScene(event.pos()).toPoint() + + # Check to ensure a ghost point is not left behind when it shouldn't exist + if self.disable_analysis_points and self.ghost_point is not None: + self.remove_ghost_point() + if self.scaling_mode: # If there is a current start point but not an end point of a scaling line if not self.scale_start_point.isNull() and self.scale_end_point.isNull(): # Emit a signal that the mouse has been moved # Passing the start point of the scaling line and the coordinates of the mouse - start, end = self.scale_start_point, self.mapToScene(event.pos()).toPoint() + start, end = self.scale_start_point, event_position pixel_distance = round(math.sqrt((start.y() - end.y())**2 + (start.x() - end.x())**2), 2) self.graphics_scene.draw_scale_line(start, end) self.scale_move_event.emit(pixel_distance) + + # Check if ghost points should be active + if not self.disable_analysis_points: + # If there is already a ghost point, then remove it + if self.ghost_point is not None: + self.remove_ghost_point() + # If the cursor is on the image and navigation mode is not enabled + if self._image.isUnderMouse() and not self.navigation_mode: + # Add a new ghost point + self.ghost_point_move.emit(event_position.x(), event_position.y()) super().mouseMoveEvent(event) @@ -301,3 +324,15 @@ def reset_scaling_elements(self) -> None: self.scale_start_point = QPointF() self.scale_end_point = QPointF() self.graphics_scene.remove_scale_items() + + + def remove_ghost_point(self) -> None: + """ + Remove the current ghost point. + """ + self.graphics_scene.remove_graphics_items([ + self.ghost_point._outer_ellipse, + self.ghost_point._inner_ellipse, + self.ghost_point._label_text_item, + ]) + self.ghost_point = None diff --git a/tactool/window.py b/tactool/window.py index 55e9502..f41d425 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -220,6 +220,7 @@ def connect_signals_and_slots(self) -> None: # Connect Graphics View interactions to handlers self.graphics_view.left_click.connect(self.add_analysis_point) self.graphics_view.right_click.connect(self.remove_analysis_point) + self.graphics_view.ghost_point_move.connect(self.add_ghost_point) # Connect Table interaction clicks to handlers self.table_view.selected_analysis_point.connect(self.get_point_settings) @@ -608,6 +609,46 @@ def remove_analysis_point( self.logger.info("Deleted Analysis Point: %s", analysis_point.id) + def add_ghost_point(self, x: int, y: int) -> None: + """ + Add a ghost point to the GraphicsScene. + """ + apid = self.table_model.next_point_id + label = self.label_input.currentText() + diameter = self.diameter_input.value() + colour = self.point_colour + scale = float(self.scale_value_input.text()) + # Get the graphics items for the ghost point + outer_ellipse, inner_ellipse, label_text_item = self.graphics_scene.add_analysis_point( + x=x, + y=y, + apid=apid, + label=label, + diameter=diameter, + colour=colour, + scale=scale, + alpha=100, + ) + # Create a fake AnalysisPoint object for the ghost point + ghost_point = AnalysisPoint( + x=x, + y=y, + id=apid, + label=label, + diameter=diameter, + scale=scale, + colour=colour, + sample_name="", + mount_name="", + material="", + notes="", + _outer_ellipse=outer_ellipse, + _inner_ellipse=inner_ellipse, + _label_text_item=label_text_item, + ) + self.graphics_view.ghost_point = ghost_point + + def reload_analysis_points( self, index: Optional[QModelIndex] = None, From bf8494de2ffc577432d52dd28575965fc1eed05a Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Fri, 18 Aug 2023 14:16:25 +0100 Subject: [PATCH 072/105] Combine analysis point and ghost point creation into a single function --- tactool/window.py | 87 ++++++++++++++++++----------------------------- 1 file changed, 34 insertions(+), 53 deletions(-) diff --git a/tactool/window.py b/tactool/window.py index f41d425..5d1b007 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -390,7 +390,7 @@ def load_tactool_csv_data(self, filepath: str) -> None: extends_boundary = False image_size = self.graphics_view._image.pixmap().size() for analysis_point in analysis_points: - self.add_analysis_point(**analysis_point, from_click=False) + self.add_analysis_point(**analysis_point, use_window_inputs=False) ap_x = analysis_point["x"] ap_y = analysis_point["y"] if ap_x > image_size.width() or ap_x < 0 or ap_y > image_size.height() or ap_y < 0: @@ -511,18 +511,22 @@ def add_analysis_point( mount_name: str = "", material: str = "", notes: str = "", - from_click: bool = True, + use_window_inputs: bool = True, + ghost: bool = False, ) -> None: """ Add an Analysis Point to the PyQt Graphics Scene. The main ways a user can do this is by clicking on the Graphics Scene, or by importing a TACtool CSV file. If the Analysis Point has been created from a click, get the values from the window settings. - Otherwise, from_click is set to False and the Analysis Point settings are retrieved from the CSV columns. + Otherwise, use_window_inputs is set to False and the Analysis Point settings are retrieved from the CSV columns. + + The ghost option is used to determine if the AnalysisPoint is a transparent hint used on the + GraphicsView/GraphicsScene, or a genuine Analysis Point. """ - if from_click: + # Assign attributes + if use_window_inputs: # Get the required input values from the window input settings - # Coordinates and the Point ID are taken from the arguments, notes defaults to None label = self.label_input.currentText() diameter = self.diameter_input.value() colour = self.point_colour @@ -530,12 +534,15 @@ def add_analysis_point( sample_name = self.sample_name_input.text() mount_name = self.mount_name_input.text() material = self.material_input.text() - # If no analysis point ID is given, assign it the next ID available if not apid: apid = self.table_model.next_point_id # Get the graphics items for the analysis point + if ghost: + alpha = 100 + else: + alpha = 200 outer_ellipse, inner_ellipse, label_text_item = self.graphics_scene.add_analysis_point( x=x, y=y, @@ -544,6 +551,7 @@ def add_analysis_point( diameter=diameter, colour=colour, scale=scale, + alpha=alpha, ) # Place the new point data into an Analysis Point object @@ -563,13 +571,26 @@ def add_analysis_point( _inner_ellipse=inner_ellipse, _label_text_item=label_text_item, ) - self.table_model.add_point(analysis_point) - self.logger.debug("Created Analysis Point: %s", analysis_point) - self.logger.info("Creating Analysis Point with ID: %s", analysis_point.id) - # Update the status bar messages and PyQt Table View - self.toggle_status_bar_messages() - self.table_view.model().layoutChanged.emit() + if ghost: + self.graphics_view.ghost_point = analysis_point + else: + self.table_model.add_point(analysis_point) + if self.logger.level == logging.DEBUG: + self.logger.debug("Created Analysis Point: %s", analysis_point) + else: + self.logger.info("Creating Analysis Point with ID: %s", analysis_point.id) + + # Update the status bar messages and PyQt Table View + self.toggle_status_bar_messages() + self.table_view.model().layoutChanged.emit() + + + def add_ghost_point(self, x: int, y: int) -> None: + """ + Add a ghost Analysis Point. + """ + self.add_analysis_point(x=x, y=y, use_window_inputs=True, ghost=True) def remove_analysis_point( @@ -609,46 +630,6 @@ def remove_analysis_point( self.logger.info("Deleted Analysis Point: %s", analysis_point.id) - def add_ghost_point(self, x: int, y: int) -> None: - """ - Add a ghost point to the GraphicsScene. - """ - apid = self.table_model.next_point_id - label = self.label_input.currentText() - diameter = self.diameter_input.value() - colour = self.point_colour - scale = float(self.scale_value_input.text()) - # Get the graphics items for the ghost point - outer_ellipse, inner_ellipse, label_text_item = self.graphics_scene.add_analysis_point( - x=x, - y=y, - apid=apid, - label=label, - diameter=diameter, - colour=colour, - scale=scale, - alpha=100, - ) - # Create a fake AnalysisPoint object for the ghost point - ghost_point = AnalysisPoint( - x=x, - y=y, - id=apid, - label=label, - diameter=diameter, - scale=scale, - colour=colour, - sample_name="", - mount_name="", - material="", - notes="", - _outer_ellipse=outer_ellipse, - _inner_ellipse=inner_ellipse, - _label_text_item=label_text_item, - ) - self.graphics_view.ghost_point = ghost_point - - def reload_analysis_points( self, index: Optional[QModelIndex] = None, @@ -679,7 +660,7 @@ def reload_analysis_points( mount_name=analysis_point.mount_name, material=analysis_point.material, notes=analysis_point.notes, - from_click=False + use_window_inputs=False, ) # Index is given when the user edits a cell in the PyQt Table View From a8a2a7d0279accfc1dbd71839cc6c43de8d7180e Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Fri, 18 Aug 2023 14:24:34 +0100 Subject: [PATCH 073/105] Add remove_analysis_point to GraphicsScene rather than remove_graphics_items --- tactool/graphics_scene.py | 25 +++++++++++++++++++------ tactool/graphics_view.py | 6 +----- tactool/window.py | 12 ++---------- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/tactool/graphics_scene.py b/tactool/graphics_scene.py index 5e461b6..8370c28 100644 --- a/tactool/graphics_scene.py +++ b/tactool/graphics_scene.py @@ -21,6 +21,8 @@ QGraphicsTextItem, ) +from tactool.analysis_point import AnalysisPoint +from tactool.table_model import TableModel from tactool.utils import LoggerMixin @@ -47,13 +49,19 @@ def add_analysis_point( diameter: int, colour: str, scale: float, - alpha: int = 200, + ghost: bool = False, ) -> tuple[QGraphicsEllipseItem, QGraphicsEllipseItem, QGraphicsTextItem]: """ Draw an Analysis Point onto the Graphics Scene. Returns the newly created graphics items. """ - self.logger.debug("Adding new Analysis Point") + # The alpha changes for ghost points + if ghost: + alpha = 100 + else: + alpha = 200 + self.logger.debug("Adding new Analysis Point") + # Set the drawing colours to use the given colour # pen just provides an outline of an object # brush also fills the object @@ -97,12 +105,17 @@ def add_analysis_point( return outer_ellipse, inner_ellipse, label_text_item - def remove_graphics_items(self, items: list[QGraphicsEllipseItem | QGraphicsTextItem]) -> None: + def remove_analysis_point( + self, + ap: AnalysisPoint, + log: bool = True, + ) -> None: """ - Remove a given list of QGraphicsItems from the GraphicsScene. + Remove the QGraphics items belonging to the given AnalysisPoint from the GraphicsScene. """ - self.logger.debug("Removing %s graphics items", len(items)) - for item in items: + if log: + self.logger.debug("Removing graphics items for analysis point ID: %s", ap.id) + for item in [ap._inner_ellipse, ap._outer_ellipse, ap._label_text_item]: self.removeItem(item) diff --git a/tactool/graphics_view.py b/tactool/graphics_view.py index 052c2a9..96dd0ad 100644 --- a/tactool/graphics_view.py +++ b/tactool/graphics_view.py @@ -330,9 +330,5 @@ def remove_ghost_point(self) -> None: """ Remove the current ghost point. """ - self.graphics_scene.remove_graphics_items([ - self.ghost_point._outer_ellipse, - self.ghost_point._inner_ellipse, - self.ghost_point._label_text_item, - ]) + self.graphics_scene.remove_analysis_point(self.ghost_point, log=False) self.ghost_point = None diff --git a/tactool/window.py b/tactool/window.py index 5d1b007..02b2c87 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -539,10 +539,6 @@ def add_analysis_point( apid = self.table_model.next_point_id # Get the graphics items for the analysis point - if ghost: - alpha = 100 - else: - alpha = 200 outer_ellipse, inner_ellipse, label_text_item = self.graphics_scene.add_analysis_point( x=x, y=y, @@ -551,7 +547,7 @@ def add_analysis_point( diameter=diameter, colour=colour, scale=scale, - alpha=alpha, + ghost=ghost, ) # Place the new point data into an Analysis Point object @@ -618,11 +614,7 @@ def remove_analysis_point( if analysis_point is not None: self.table_model.remove_point(analysis_point.id) - self.graphics_scene.remove_graphics_items([ - analysis_point._outer_ellipse, - analysis_point._inner_ellipse, - analysis_point._label_text_item, - ]) + self.graphics_scene.remove_analysis_point(analysis_point) # Update the status bar messages and PyQt TableView self.toggle_status_bar_messages() self.table_view.model().layoutChanged.emit() From b18cccdbc970c8d67f88254282883d7c3657e11f Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Fri, 18 Aug 2023 14:29:31 +0100 Subject: [PATCH 074/105] Add logic to fix AnalysisPoint deletion when using ghost points --- tactool/window.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tactool/window.py b/tactool/window.py index 02b2c87..b67fa4b 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -599,6 +599,11 @@ def remove_analysis_point( Remove an Analysis Point from the PyQt Graphics Scene and Table Model. The Point is specified using it's coordinates or it's ID value. """ + # If a ghost point exists, it must be deleted before deleting the genuine AnalysisPoint + # Because when getting a point by ellipse, the ghost point becomes the selected point for deletion otherwise + if self.graphics_view.ghost_point is not None: + self.graphics_view.remove_ghost_point() + analysis_point = None # If a target ID is provided, get the Analysis Point using it's ID if apid: @@ -621,6 +626,9 @@ def remove_analysis_point( self.logger.info("Deleted Analysis Point: %s", analysis_point.id) + # Re-add the ghost point + self.graphics_view.ghost_point_move.emit(x, y) + def reload_analysis_points( self, From da5183d44d31d4b059115164021664a25a967fc2 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Fri, 18 Aug 2023 14:46:38 +0100 Subject: [PATCH 075/105] Add Ghost Point option to toolbar --- tactool/window.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tactool/window.py b/tactool/window.py index b67fa4b..b48f123 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -110,6 +110,10 @@ def setup_ui_elements(self) -> None: self.menu_bar_file_export_tactool_csv = self.menu_bar_file.addAction("Export TACtool CSV") self.menu_bar_file.addSeparator() self.menu_bar_recoordinate_csv = self.menu_bar_file.addAction("Recoordinate SEM CSV") + # Create the tools drop down + self.menu_bar_tools = self.menu_bar.addMenu("&Tools") + self.menu_bar_tools_ghost_point = self.menu_bar_tools.addAction("Ghost Point") + self.menu_bar_tools_ghost_point.setCheckable(True) # Create the status bar self.status_bar = QStatusBar(self) @@ -524,6 +528,10 @@ def add_analysis_point( The ghost option is used to determine if the AnalysisPoint is a transparent hint used on the GraphicsView/GraphicsScene, or a genuine Analysis Point. """ + # If it is meant to be a ghost point but ghost points are disabled, just return and end the process + if ghost and not self.menu_bar_tools_ghost_point.isChecked(): + return + # Assign attributes if use_window_inputs: # Get the required input values from the window input settings From 901c7d32bb44153495b01f6ad10b67f59165be99 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Fri, 18 Aug 2023 17:26:22 +0100 Subject: [PATCH 076/105] Fix logging logic mistake --- tactool/window.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tactool/window.py b/tactool/window.py index b48f123..8de7d01 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -580,10 +580,8 @@ def add_analysis_point( self.graphics_view.ghost_point = analysis_point else: self.table_model.add_point(analysis_point) - if self.logger.level == logging.DEBUG: - self.logger.debug("Created Analysis Point: %s", analysis_point) - else: - self.logger.info("Creating Analysis Point with ID: %s", analysis_point.id) + self.logger.debug("Created Analysis Point: %s", analysis_point) + self.logger.info("Creating Analysis Point with ID: %s", analysis_point.id) # Update the status bar messages and PyQt Table View self.toggle_status_bar_messages() From e53a6e206cef5fa6438f4a88b8fc5fa6b2177766 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Mon, 21 Aug 2023 11:06:06 +0100 Subject: [PATCH 077/105] Fix rebase changes --- tactool/graphics_scene.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tactool/graphics_scene.py b/tactool/graphics_scene.py index 8370c28..e20a398 100644 --- a/tactool/graphics_scene.py +++ b/tactool/graphics_scene.py @@ -22,7 +22,6 @@ ) from tactool.analysis_point import AnalysisPoint -from tactool.table_model import TableModel from tactool.utils import LoggerMixin From f15da135741ba43cbe802758538a554fac776559 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Mon, 21 Aug 2023 11:15:53 +0100 Subject: [PATCH 078/105] Add ghost handling when entering special modes --- tactool/graphics_view.py | 8 +++++--- tactool/window.py | 3 +++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/tactool/graphics_view.py b/tactool/graphics_view.py index 96dd0ad..7503199 100644 --- a/tactool/graphics_view.py +++ b/tactool/graphics_view.py @@ -192,6 +192,7 @@ def keyPressEvent(self, event: QKeyEvent) -> None: # Enable navigation mode self.navigation_mode = True self.setDragMode(QGraphicsView.ScrollHandDrag) + self.remove_ghost_point() super().keyPressEvent(event) @@ -328,7 +329,8 @@ def reset_scaling_elements(self) -> None: def remove_ghost_point(self) -> None: """ - Remove the current ghost point. + Remove the current ghost point if it exists. """ - self.graphics_scene.remove_analysis_point(self.ghost_point, log=False) - self.ghost_point = None + if self.ghost_point is not None: + self.graphics_scene.remove_analysis_point(self.ghost_point, log=False) + self.ghost_point = None diff --git a/tactool/window.py b/tactool/window.py index 8de7d01..07cfc35 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -213,6 +213,7 @@ def connect_signals_and_slots(self) -> None: self.menu_bar_file_import_tactool_csv.triggered.connect(self.import_tactool_csv_get_path) self.menu_bar_file_export_tactool_csv.triggered.connect(self.export_tactool_csv_get_path) self.menu_bar_recoordinate_csv.triggered.connect(self.toggle_recoordinate_dialog) + self.menu_bar_tools_ghost_point.triggered.connect(self.graphics_view.remove_ghost_point) # Connect button clicks to handlers self.clear_points_button.clicked.connect(self.clear_analysis_points) @@ -797,6 +798,8 @@ def toggle_main_input_widgets(self, enable: bool) -> None: widget.setEnabled(enable) self.graphics_scene.toggle_transparent_window(self.graphics_view._image) self.graphics_view.disable_analysis_points = not enable + # Ensure no ghost points are left behind + self.graphics_view.remove_ghost_point() def set_scale(self, scale: float) -> None: From 4c01b92ebe4ecdd2b275fe10fde5b950235458ce Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Mon, 21 Aug 2023 12:19:33 +0100 Subject: [PATCH 079/105] Update ghost point to move upon mouse movement --- tactool/graphics_scene.py | 13 +++++++++++++ tactool/graphics_view.py | 11 +++++------ tactool/window.py | 31 ++++++++++++++++++++++++------- 3 files changed, 42 insertions(+), 13 deletions(-) diff --git a/tactool/graphics_scene.py b/tactool/graphics_scene.py index e20a398..90349ff 100644 --- a/tactool/graphics_scene.py +++ b/tactool/graphics_scene.py @@ -118,6 +118,19 @@ def remove_analysis_point( self.removeItem(item) + def move_analysis_point( + self, + ap: AnalysisPoint, + x_change: int, + y_change: int, + ) -> None: + """ + Move the QGraphics items belonging to the given AnalysisPoint on the GraphicsScene. + """ + for item in [ap._inner_ellipse, ap._outer_ellipse, ap._label_text_item]: + item.moveBy(x_change, y_change) + + def get_ellipse_at(self, x: int, y: int) -> Optional[QGraphicsEllipseItem]: """ Get an Ellipse Item from the Graphics Scene at the given coordinates. diff --git a/tactool/graphics_view.py b/tactool/graphics_view.py index 7503199..0fe8ff1 100644 --- a/tactool/graphics_view.py +++ b/tactool/graphics_view.py @@ -42,7 +42,7 @@ class GraphicsView(QGraphicsView, LoggerMixin): scale_move_event = pyqtSignal(float) # Tracks the position for a ghost analysis point - ghost_point_move = pyqtSignal(int, int) + move_ghost_point = pyqtSignal(int, int) def __init__(self) -> None: @@ -117,7 +117,7 @@ def mouseMoveEvent(self, event: QMouseEvent) -> None: event_position = self.mapToScene(event.pos()).toPoint() # Check to ensure a ghost point is not left behind when it shouldn't exist - if self.disable_analysis_points and self.ghost_point is not None: + if (self.disable_analysis_points and self.ghost_point is not None) or not self._image.isUnderMouse(): self.remove_ghost_point() if self.scaling_mode: @@ -132,13 +132,10 @@ def mouseMoveEvent(self, event: QMouseEvent) -> None: # Check if ghost points should be active if not self.disable_analysis_points: - # If there is already a ghost point, then remove it - if self.ghost_point is not None: - self.remove_ghost_point() # If the cursor is on the image and navigation mode is not enabled if self._image.isUnderMouse() and not self.navigation_mode: # Add a new ghost point - self.ghost_point_move.emit(event_position.x(), event_position.y()) + self.move_ghost_point.emit(event_position.x(), event_position.y()) super().mouseMoveEvent(event) @@ -332,5 +329,7 @@ def remove_ghost_point(self) -> None: Remove the current ghost point if it exists. """ if self.ghost_point is not None: + ghost_point_id = self.ghost_point.id self.graphics_scene.remove_analysis_point(self.ghost_point, log=False) self.ghost_point = None + self.logger.info("Deleted Ghost Point: %s", ghost_point_id) diff --git a/tactool/window.py b/tactool/window.py index 07cfc35..cd93608 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -225,7 +225,7 @@ def connect_signals_and_slots(self) -> None: # Connect Graphics View interactions to handlers self.graphics_view.left_click.connect(self.add_analysis_point) self.graphics_view.right_click.connect(self.remove_analysis_point) - self.graphics_view.ghost_point_move.connect(self.add_ghost_point) + self.graphics_view.move_ghost_point.connect(self.add_ghost_point) # Connect Table interaction clicks to handlers self.table_view.selected_analysis_point.connect(self.get_point_settings) @@ -578,22 +578,39 @@ def add_analysis_point( ) if ghost: + point_type = "Ghost" self.graphics_view.ghost_point = analysis_point else: + self.graphics_view.remove_ghost_point() + point_type = "Analysis" self.table_model.add_point(analysis_point) - self.logger.debug("Created Analysis Point: %s", analysis_point) - self.logger.info("Creating Analysis Point with ID: %s", analysis_point.id) - # Update the status bar messages and PyQt Table View self.toggle_status_bar_messages() self.table_view.model().layoutChanged.emit() + self.logger.debug("Created %s Point: %s", point_type, analysis_point) + self.logger.info("Creating %s Point with ID: %s", point_type, analysis_point.id) + def add_ghost_point(self, x: int, y: int) -> None: """ - Add a ghost Analysis Point. + Add a ghost point or move the existing ghost point. """ - self.add_analysis_point(x=x, y=y, use_window_inputs=True, ghost=True) + # If a ghost point doesn't exist + if self.graphics_view.ghost_point is None: + self.add_analysis_point(x=x, y=y, use_window_inputs=True, ghost=True) + else: + # Calculate movement change + x_change = x - self.graphics_view.ghost_point.x + y_change = y - self.graphics_view.ghost_point.y + # Update metadata coordinates + self.graphics_view.ghost_point.x = x + self.graphics_view.ghost_point.y = y + self.graphics_scene.move_analysis_point( + ap=self.graphics_view.ghost_point, + x_change=x_change, + y_change=y_change, + ) def remove_analysis_point( @@ -634,7 +651,7 @@ def remove_analysis_point( self.logger.info("Deleted Analysis Point: %s", analysis_point.id) # Re-add the ghost point - self.graphics_view.ghost_point_move.emit(x, y) + self.graphics_view.move_ghost_point.emit(x, y) def reload_analysis_points( From cb36481ef0bd5c7a4d44cf054943e9ab79483de4 Mon Sep 17 00:00:00 2001 From: Leo Rudczenko Date: Mon, 21 Aug 2023 15:54:51 +0100 Subject: [PATCH 080/105] Update log message --- tactool/window.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tactool/window.py b/tactool/window.py index cd93608..6ff280b 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -589,7 +589,7 @@ def add_analysis_point( self.table_view.model().layoutChanged.emit() self.logger.debug("Created %s Point: %s", point_type, analysis_point) - self.logger.info("Creating %s Point with ID: %s", point_type, analysis_point.id) + self.logger.info("Created %s Point with ID: %s", point_type, analysis_point.id) def add_ghost_point(self, x: int, y: int) -> None: From 469faecba97e1ca45a5ebc27167ec74da62c61c6 Mon Sep 17 00:00:00 2001 From: leorud Date: Tue, 22 Aug 2023 10:08:13 +0100 Subject: [PATCH 081/105] Add initial ghost point tests --- test/conftest.py | 37 +++++++++++++++++++++++++++++++++++++ test/test_integration.py | 27 +++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/test/conftest.py b/test/conftest.py index 29bc3bd..824f4cc 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -1,7 +1,18 @@ """ Definitions for test fixtures used within other tests. """ +from typing import ( + Callable, + Any, +) + import pytest +from PyQt5.QtCore import ( + Qt, + QEvent, + QPoint, +) +from PyQt5.QtGui import QMouseEvent from tactool.table_model import TableModel from tactool.main import TACtool @@ -36,3 +47,29 @@ def public_index(model: TableModel): The index in the list of headers where the public headers end. """ return len(model.public_headers) + + +def create_mock_event( + x: int = 0, + y: int = 0, +) -> QMouseEvent: + """ + Create a QEvent object for tests to simulate mouse/keyboard input from user. + """ + event = QMouseEvent( + QEvent.MouseMove, + QPoint(x, y), + Qt.NoButton, + Qt.MouseButtons(Qt.NoButton), + Qt.KeyboardModifiers(Qt.NoModifier), + ) + return event + + +def create_function_return(value: Any) -> Callable[[Any], Any]: + """ + Return a function which returns the given value. + """ + def new_function(*args, **kwargs) -> Any: + return value + return new_function diff --git a/test/test_integration.py b/test/test_integration.py index 5075c9f..aeaf2be 100644 --- a/test/test_integration.py +++ b/test/test_integration.py @@ -8,6 +8,7 @@ """ from tactool.main import TACtool from tactool.analysis_point import AnalysisPoint +from conftest import create_mock_event, create_function_return def test_add_and_remove_points(tactool: TACtool, public_index: int): @@ -24,6 +25,12 @@ def test_add_and_remove_points(tactool: TACtool, public_index: int): # The 1st Analysis Point has default settings tactool.graphics_view.left_click.emit(101, 101) + # Override the function with a new function which always returns True, to avoid genuine mouse detection during test + tactool.graphics_view._image.isUnderMouse = create_function_return(True) + # Ensure the ghost point is not created as it is disabled by default + tactool.graphics_view.mouseMoveEvent(create_mock_event(x=203, y=305)) + assert tactool.graphics_view.ghost_point is None + # Adjust the settings for the 2nd Analysis Point tactool.window.update_point_settings( sample_name="sample_x83", @@ -36,6 +43,14 @@ def test_add_and_remove_points(tactool: TACtool, public_index: int): ) tactool.graphics_view.left_click.emit(202, 202) + # Enable the ghost point and create it with a mouse movement event + tactool.window.menu_bar_tools_ghost_point.setChecked(True) + tactool.graphics_view.mouseMoveEvent(create_mock_event(x=203, y=305)) + # Check that the ghost point inherits the correct settings + assert tactool.graphics_view.ghost_point.aslist()[:public_index] == AnalysisPoint( + 3, "Spot", 203, 305, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", "", None, None, None + ).aslist()[:public_index] + # Adjust the settings for the 3rd Analysis Point # Purposefully making it overlap the 2nd Analysis Point tactool.window.update_point_settings( @@ -71,6 +86,12 @@ def test_add_and_remove_points(tactool: TACtool, public_index: int): # Nothing should change tactool.graphics_view.right_click.emit(0, 0) + # Check that the ghost point uses the newly deleted ID value of 3 + tactool.graphics_view.mouseMoveEvent(create_mock_event(x=176, y=301)) + assert tactool.graphics_view.ghost_point.aslist()[:public_index] == AnalysisPoint( + 3, "RefMark", 176, 301, 50, 2.0, "#333333", "sample_x67", "mount_x15", "duck", "", None, None, None + ).aslist()[:public_index] + # Adjust the settings for the 4th Analysis Point to match those of the 2nd Analysis Point # This is done by emitting a signal from the PyQt Table View of the selected Analysis Point tactool.table_view.selected_analysis_point.emit(expected_data[1], 0) @@ -91,6 +112,12 @@ def test_add_and_remove_points(tactool: TACtool, public_index: int): expected_ellipse = (expected_analysis_point.diameter * expected_analysis_point.scale) + offset assert analysis_point._outer_ellipse.boundingRect().width() == expected_ellipse + # Check that the ghost point inherits the correct settings + tactool.graphics_view.mouseMoveEvent(create_mock_event(x=82, y=288)) + assert tactool.graphics_view.ghost_point.aslist()[:public_index] == AnalysisPoint( + 4, "Spot", 82, 288, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", "", None, None, None + ).aslist()[:public_index] + def test_clear_points(tactool: TACtool): """ From baefbcfa8bde40b94b2a0919306c2eac9439a758 Mon Sep 17 00:00:00 2001 From: leorud Date: Tue, 22 Aug 2023 10:08:52 +0100 Subject: [PATCH 082/105] Increase pytest verbosity --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2180a1d..1ef2f8a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -29,4 +29,4 @@ jobs: shell: bash -l {0} run: | export PYTHONPATH=. - pytest -vs test/ + pytest -vvs test/ From 8eff73aad5f2287d3c4c54e91a525b223fc714b1 Mon Sep 17 00:00:00 2001 From: leorud Date: Tue, 22 Aug 2023 10:42:48 +0100 Subject: [PATCH 083/105] Rename scaling_rect to transparent_window --- tactool/graphics_scene.py | 18 +++++++++--------- test/test_scaling.py | 6 +++--- test/test_transformation.py | 8 ++++---- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/tactool/graphics_scene.py b/tactool/graphics_scene.py index 90349ff..ba9202c 100644 --- a/tactool/graphics_scene.py +++ b/tactool/graphics_scene.py @@ -34,9 +34,9 @@ def __init__(self) -> None: super().__init__() # Defining variables used in the Graphics Scene for scaling mode - self.scaling_rect: Optional[QGraphicsRectItem] = None self.scaling_group: Optional[QGraphicsItemGroup] = None self.scaling_line: Optional[QGraphicsLineItem] = None + self.transparent_window: Optional[QGraphicsRectItem] = None def add_analysis_point( @@ -155,25 +155,25 @@ def toggle_transparent_window(self, graphics_view_image: QGraphicsPixmapItem) -> """ Toggle a transparent grey overlay ontop of the image for scaling mode. """ - if self.scaling_rect is not None: + if self.transparent_window is not None: self.logger.debug("Removing transparent window") # Remove the PyQt Rect from the PyQt Item Group and reset the scaling_rect variable - self.removeItem(self.scaling_rect) - self.scaling_rect = None + self.removeItem(self.transparent_window) + self.transparent_window = None else: self.logger.debug("Adding transparent window") # Convert the current image to a pixmap image_pixmap = graphics_view_image.pixmap() image_width, image_height = image_pixmap.width(), image_pixmap.height() # Create a PyQt Rect Item matching the size of the current image - self.scaling_rect = QGraphicsRectItem(QRectF(0, 0, image_width, image_height)) + self.transparent_window = QGraphicsRectItem(QRectF(0, 0, image_width, image_height)) # Set the Rect Item to be 50% transparent and grey in colour - self.scaling_rect.setOpacity(0.5) - self.scaling_rect.setBrush(Qt.gray) + self.transparent_window.setOpacity(0.5) + self.transparent_window.setBrush(Qt.gray) # Creating a PyQt Item Group to store all Graphics Scene scaling items within one variable self.scaling_group = self.createItemGroup([]) - self.scaling_group.addToGroup(self.scaling_rect) + self.scaling_group.addToGroup(self.transparent_window) def draw_scale_line(self, start_point: float, end_point: float) -> None: @@ -223,7 +223,7 @@ def remove_scale_items(self) -> None: # Iterate through the items and remove them if they are not # the transparet PyQt Rect, this is removed separately for item in self.scaling_group.childItems(): - if item != self.scaling_rect: + if item != self.transparent_window: self.removeItem(item) # Reset the scaling_line variable self.scaling_line = None diff --git a/test/test_scaling.py b/test/test_scaling.py index d244b82..3c8c65c 100644 --- a/test/test_scaling.py +++ b/test/test_scaling.py @@ -11,7 +11,7 @@ def test_toggle_scaling_mode(tactool: TACtool): for widget in tactool.window.main_input_widgets: assert widget.isEnabled() is True assert tactool.graphics_view.disable_analysis_points is False - assert tactool.graphics_scene.scaling_rect is None + assert tactool.graphics_scene.transparent_window is None # Start the scaling mode tactool.window.toggle_scaling_mode() @@ -22,7 +22,7 @@ def test_toggle_scaling_mode(tactool: TACtool): for widget in tactool.window.main_input_widgets: assert widget.isEnabled() is False assert tactool.graphics_view.disable_analysis_points is True - assert tactool.graphics_scene.scaling_rect is not None + assert tactool.graphics_scene.transparent_window is not None # Set the scale, following the same steps as the user would tactool.window.set_scale_dialog.scale_value.setText(str(2.0)) @@ -34,7 +34,7 @@ def test_toggle_scaling_mode(tactool: TACtool): for widget in tactool.window.main_input_widgets: assert widget.isEnabled() is True assert tactool.graphics_view.disable_analysis_points is False - assert tactool.graphics_scene.scaling_rect is None + assert tactool.graphics_scene.transparent_window is None def test_set_scale(tactool: TACtool): diff --git a/test/test_transformation.py b/test/test_transformation.py index 82c1775..8855ffa 100644 --- a/test/test_transformation.py +++ b/test/test_transformation.py @@ -74,7 +74,7 @@ def test_toggle_recoordinate_dialog(tactool: TACtool): for widget in tactool.window.main_input_widgets: assert widget.isEnabled() is True assert tactool.graphics_view.disable_analysis_points is False - assert tactool.graphics_scene.scaling_rect is None + assert tactool.graphics_scene.transparent_window is None # Add 2 RefMark points tactool.graphics_view.left_click.emit(336, 472) @@ -91,7 +91,7 @@ def test_toggle_recoordinate_dialog(tactool: TACtool): for widget in tactool.window.main_input_widgets: assert widget.isEnabled() is True assert tactool.graphics_view.disable_analysis_points is False - assert tactool.graphics_scene.scaling_rect is None + assert tactool.graphics_scene.transparent_window is None # Add the 3rd RefMark point tactool.graphics_view.left_click.emit(268, 469) @@ -105,7 +105,7 @@ def test_toggle_recoordinate_dialog(tactool: TACtool): for widget in tactool.window.main_input_widgets: assert widget.isEnabled() is False assert tactool.graphics_view.disable_analysis_points is True - assert tactool.graphics_scene.scaling_rect is not None + assert tactool.graphics_scene.transparent_window is not None # Close the RecoordinateDialog tactool.recoordinate_dialog.cancel_button.click() @@ -116,7 +116,7 @@ def test_toggle_recoordinate_dialog(tactool: TACtool): for widget in tactool.window.main_input_widgets: assert widget.isEnabled() is True assert tactool.graphics_view.disable_analysis_points is False - assert tactool.graphics_scene.scaling_rect is None + assert tactool.graphics_scene.transparent_window is None @pytest.mark.parametrize( From 77ef2e6c9b9e28fed07019fb2d60943e3789b85a Mon Sep 17 00:00:00 2001 From: leorud Date: Tue, 22 Aug 2023 10:53:00 +0100 Subject: [PATCH 084/105] Add more ghost point tests and toggle_main_input_widgets test --- test/test_integration.py | 106 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 98 insertions(+), 8 deletions(-) diff --git a/test/test_integration.py b/test/test_integration.py index aeaf2be..0c22350 100644 --- a/test/test_integration.py +++ b/test/test_integration.py @@ -6,6 +6,8 @@ tactool fixtures start a running QApplication for the context of the test. """ +from PyQt5.QtWidgets import QGraphicsRectItem + from tactool.main import TACtool from tactool.analysis_point import AnalysisPoint from conftest import create_mock_event, create_function_return @@ -25,12 +27,6 @@ def test_add_and_remove_points(tactool: TACtool, public_index: int): # The 1st Analysis Point has default settings tactool.graphics_view.left_click.emit(101, 101) - # Override the function with a new function which always returns True, to avoid genuine mouse detection during test - tactool.graphics_view._image.isUnderMouse = create_function_return(True) - # Ensure the ghost point is not created as it is disabled by default - tactool.graphics_view.mouseMoveEvent(create_mock_event(x=203, y=305)) - assert tactool.graphics_view.ghost_point is None - # Adjust the settings for the 2nd Analysis Point tactool.window.update_point_settings( sample_name="sample_x83", @@ -43,10 +39,11 @@ def test_add_and_remove_points(tactool: TACtool, public_index: int): ) tactool.graphics_view.left_click.emit(202, 202) - # Enable the ghost point and create it with a mouse movement event + # Enable ghost point and override function to detect mouse position is on image + tactool.graphics_view._image.isUnderMouse = create_function_return(True) tactool.window.menu_bar_tools_ghost_point.setChecked(True) - tactool.graphics_view.mouseMoveEvent(create_mock_event(x=203, y=305)) # Check that the ghost point inherits the correct settings + tactool.graphics_view.mouseMoveEvent(create_mock_event(x=203, y=305)) assert tactool.graphics_view.ghost_point.aslist()[:public_index] == AnalysisPoint( 3, "Spot", 203, 305, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", "", None, None, None ).aslist()[:public_index] @@ -303,3 +300,96 @@ def test_reference_point_hint(tactool: TACtool): ref_points_status = tactool.window.status_bar_messages["ref_points"]["status"] assert ref_points_status is not None assert ref_points_status in tactool.window.status_bar.children() + + +def test_ghost_point_delete_analysis_point(tactool: TACtool, public_index: int): + # Enable ghost point and override function to detect mouse position is on image + tactool.graphics_view._image.isUnderMouse = create_function_return(True) + tactool.window.menu_bar_tools_ghost_point.setChecked(True) + + # Ensure ghost point initially exists + tactool.graphics_view.mouseMoveEvent(create_mock_event(x=203, y=305)) + assert tactool.graphics_view.ghost_point.aslist()[:public_index] == AnalysisPoint( + 1, "RefMark", 203, 305, 10, 1.0, "#ffff00", "", "", "", "", None, None, None + ).aslist()[:public_index] + + # Add an Analysis Point + tactool.graphics_view.left_click.emit(215, 215) + + # Ensure ghost point has newly incremented ID + tactool.graphics_view.mouseMoveEvent(create_mock_event(x=83, y=106)) + assert tactool.graphics_view.ghost_point.aslist()[:public_index] == AnalysisPoint( + 2, "RefMark", 83, 106, 10, 1.0, "#ffff00", "", "", "", "", None, None, None + ).aslist()[:public_index] + + # Remove the Analysis Point + tactool.graphics_view.right_click.emit(218, 218) + + # Ensure the ghost point has the new next ID (back to 1) + tactool.graphics_view.mouseMoveEvent(create_mock_event(x=176, y=301)) + assert tactool.graphics_view.ghost_point.aslist()[:public_index] == AnalysisPoint( + 1, "RefMark", 176, 301, 10, 1.0, "#ffff00", "", "", "", "", None, None, None + ).aslist()[:public_index] + + +def test_ghost_point_enable_disable(tactool: TACtool, public_index: int): + # Ensure ghost point does not initially exist (it is disabled by default) + tactool.graphics_view.mouseMoveEvent(create_mock_event(x=203, y=305)) + assert tactool.graphics_view.ghost_point is None + + # Enable ghost point and override function to detect mouse position is on image + tactool.graphics_view._image.isUnderMouse = create_function_return(True) + tactool.window.menu_bar_tools_ghost_point.setChecked(True) + + # Ensure ghost point is now created + tactool.graphics_view.mouseMoveEvent(create_mock_event(x=83, y=106)) + assert tactool.graphics_view.ghost_point.aslist()[:public_index] == AnalysisPoint( + 1, "RefMark", 83, 106, 10, 1.0, "#ffff00", "", "", "", "", None, None, None + ).aslist()[:public_index] + + # Disable the ghost point + # We have to set the check state and trigger the click separately + tactool.window.menu_bar_tools_ghost_point.setChecked(False) + tactool.window.menu_bar_tools_ghost_point.trigger() + + # Ensure the ghost point does not exist + assert tactool.graphics_view.ghost_point is None + + +def test_toggle_main_input_widgets(tactool: TACtool): + # Enable ghost point and override function to detect mouse position is on image + tactool.graphics_view._image.isUnderMouse = create_function_return(True) + tactool.window.menu_bar_tools_ghost_point.setChecked(True) + + # Trigger a mouse movement event + tactool.graphics_view.mouseMoveEvent(create_mock_event(x=83, y=106)) + + # Ensure everything is enabled by default + for widget in tactool.window.main_input_widgets: + assert widget.isEnabled() is True + assert tactool.graphics_scene.transparent_window is None + assert tactool.graphics_view.disable_analysis_points is False + assert isinstance(tactool.graphics_view.ghost_point, AnalysisPoint) + + # Disable main widgets + tactool.window.toggle_main_input_widgets(enable=False) + # Trigger a mouse movement event + tactool.graphics_view.mouseMoveEvent(create_mock_event(x=83, y=106)) + + # Ensure everything is disabled + for widget in tactool.window.main_input_widgets: + assert widget.isEnabled() is False + assert isinstance(tactool.graphics_scene.transparent_window, QGraphicsRectItem) + assert tactool.graphics_view.disable_analysis_points is True + assert tactool.graphics_view.ghost_point is None + + # Enable main widgets + tactool.window.toggle_main_input_widgets(enable=True) + # Trigger a mouse movement event + tactool.graphics_view.mouseMoveEvent(create_mock_event(x=83, y=106)) + + # Ensure everything is enabled again + for widget in tactool.window.main_input_widgets: + assert widget.isEnabled() is True + assert tactool.graphics_scene.transparent_window is None + assert isinstance(tactool.graphics_view.ghost_point, AnalysisPoint) From de2c43df48fe4752cd39b3c07f9358947c38e645 Mon Sep 17 00:00:00 2001 From: leorud Date: Thu, 25 Jan 2024 10:07:19 +0000 Subject: [PATCH 085/105] Replace show_message method with standard QMessageBoxes --- tactool/recoordinate_dialog.py | 25 +++----- tactool/window.py | 108 +++++++++------------------------ test/conftest.py | 12 +++- test/test_transformation.py | 2 +- 4 files changed, 46 insertions(+), 101 deletions(-) diff --git a/tactool/recoordinate_dialog.py b/tactool/recoordinate_dialog.py index 0741cef..46ed05e 100644 --- a/tactool/recoordinate_dialog.py +++ b/tactool/recoordinate_dialog.py @@ -14,6 +14,7 @@ QHBoxLayout, QLabel, QLineEdit, + QMessageBox, QPushButton, QVBoxLayout, ) @@ -30,8 +31,6 @@ class RecoordinateDialog(QDialog, LoggerMixin): """ PyQt QDialog class for creating the recoordination dialog box. """ - # Used for showing messages with methods from the main window - show_message = pyqtSignal(str, str, str) # Tracks when the Recoordinate Dialog Box is closed closed_recoordinate_dialog = pyqtSignal() @@ -149,12 +148,7 @@ def recoordinate_and_export(self) -> None: if result: self.closeEvent() else: - # Create a message informing the user that their input value is invalid - self.show_message.emit( - "Invalid Paths", - "Please select an input and output CSV first.", - "warning", - ) + QMessageBox.warning(None, "Invalid Paths", "Please select an input and output CSV first.") def recoordinate_sem_points( @@ -191,12 +185,11 @@ def recoordinate_sem_points( point_dicts, csv_headers = parse_sem_csv(filepath=input_csv, required_headers=required_sem_headers) except KeyError as error: self.logger.error(error) - self.show_message.emit( + string_headers = "\n".join(required_sem_headers) + QMessageBox.warning( + None, "Invalid CSV File", - "\n".join(["The given file does not contain the required headers:"] + [ - " " + header for header in required_sem_headers - ]), - "warning", + f"The given file does not contain the required headers:\n\n{string_headers}", ) return False @@ -240,11 +233,7 @@ def recoordinate_sem_points( if extends_boundary: message = "At least 1 of the recoordinated points goes beyond the current image boundary" self.logger.warning(message) - self.show_message.emit( - "Recoordination Warning", - message, - "warning", - ) + QMessageBox.warning(None, "Recoordination Warning", message) return True diff --git a/tactool/window.py b/tactool/window.py index 6ff280b..da4d2bb 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -1,4 +1,3 @@ -from textwrap import dedent from typing import ( Callable, Optional, @@ -229,7 +228,6 @@ def connect_signals_and_slots(self) -> None: # Connect Table interaction clicks to handlers self.table_view.selected_analysis_point.connect(self.get_point_settings) - self.table_model.invalid_label_entry.connect(self.show_message) self.table_model.updated_analysis_points.connect(self.reload_analysis_points) @@ -341,7 +339,7 @@ def import_image_get_path(self) -> None: self.image_filepath = filepath self.setWindowTitle(f"TACtool: {self.image_filepath}") except Exception as error: - self.data_error_message(error) + self.qmessagebox_error(error) def export_image_get_path(self) -> None: @@ -361,7 +359,7 @@ def export_image_get_path(self) -> None: try: self.graphics_view.save_image(filepath) except Exception as error: - self.data_error_message(error) + self.qmessagebox_error(error) def import_tactool_csv_get_path(self) -> None: @@ -379,7 +377,7 @@ def import_tactool_csv_get_path(self) -> None: self.load_tactool_csv_data(filepath) self.csv_filepath = filepath except Exception as error: - self.data_error_message(error) + self.qmessagebox_error(error) def load_tactool_csv_data(self, filepath: str) -> None: @@ -406,11 +404,7 @@ def load_tactool_csv_data(self, filepath: str) -> None: if extends_boundary: message = "At least 1 of the imported analysis points goes beyond the current image boundary" self.logger.warning(message) - self.show_message( - "Imported Points Warning", - message, - "warning", - ) + QMessageBox.warning(None, "Imported Points Warning", message) # A KeyError and UnicodeError usually occur with an incorrectly formatted CSV file except (KeyError, UnicodeError): @@ -425,7 +419,7 @@ def load_tactool_csv_data(self, filepath: str) -> None: "Plese use a CSV file with the following headers:", *required_headers, ]) - self.show_message("Error loading data", message, "warning") + QMessageBox.warning(None, "Error Loading Data", message) def export_tactool_csv_get_path(self) -> None: @@ -451,7 +445,7 @@ def export_tactool_csv_get_path(self) -> None: analysis_points=self.table_model.analysis_points, ) except Exception as error: - self.data_error_message(error) + self.qmessagebox_error(error) def validate_current_data(self, validate_image: bool = False) -> bool: @@ -465,38 +459,28 @@ def validate_current_data(self, validate_image: bool = False) -> bool: if validate_image: # If there is currently no image in the PyQt Graphics View if self.graphics_view._empty: - message = dedent(""" - Image not found. - - There is no image to save. - """) - # This is an information dialog, meaning it can only return True - if self.show_message("Warning", message, "warning"): - return False + QMessageBox.warning(None, "Image Not Found", "There is no image to save.") + return False # If there are less than 3 reference points if len(self.table_model.reference_points) < 3: default_label = self.default_settings["label"] - message = dedent(f""" - Missing reference points. - - There must be at least 3 points labelled '{default_label}'. - - Do you still want to continue? - """) - # If the user presses Cancel - if not self.show_message("Warning", message, "question"): + choice = QMessageBox.question( + None, + "Missing Reference Points", + f"There must be at least 3 points labelled '{default_label}.\n\nDo you still want to continue?", + ) + if choice == QMessageBox.No: return False # If the scale value has not been changed if self.scale_value_input.text() == self.default_settings["scale"]: - message = dedent(""" - A scale value has not been set. - - Do you still want to continue? - """) - # If the user presses Cancel - if not self.show_message("Warning", message, "question"): + choice = QMessageBox.question( + None, + "No Scale Set", + "A scale value has not been set.\n\nDo you still want to continue?", + ) + if choice == QMessageBox.No: return False # If all checks are passed then continue @@ -877,7 +861,6 @@ def toggle_recoordinate_dialog(self) -> None: # Connect the Recoordinate dialog buttons self.recoordinate_dialog.closed_recoordinate_dialog.connect(self.toggle_recoordinate_dialog) - self.recoordinate_dialog.show_message.connect(self.show_message) # Else when the program is in recoordination mode, reset the Recoordination Dialog value else: @@ -885,57 +868,20 @@ def toggle_recoordinate_dialog(self) -> None: # Enable main window widgets self.toggle_main_input_widgets(True) else: - self.logger.error("Missing 3 references points for recoordination") - self.show_message( - "Reference Points", - "3 Reference points are required to perform recoordination.", - "warning", + self.logger.error("Missing 3 references points for re-coordination") + QMessageBox.warning( + None, + "Missing Reference Points", + "3 Reference points are required to perform re-coordination" ) - def data_error_message(self, error: Exception) -> None: + def qmessagebox_error(self, error: Exception) -> None: """ Show an error message to the user in the event that an error occurs when loading in data. """ - self.show_message( - "Error loading data", - f"An unexpected error occured: {error}", - "warning", - ) - - - def show_message(self, title: str, message: str, type: str) -> bool: - """ - Show a given message to the user in a PyQt QMessageBox. - """ - # In testing mode, the user cannot select an option for the message dialog - if not self.testing_mode: - # Creating the PyQt Message box and formatting it - self.current_message = QMessageBox() - self.current_message.setWindowTitle(title) - self.current_message.setText(message) - self.current_message.setStandardButtons(QMessageBox.Ok) - - # Set the type of message - type_dict = { - "warning": QMessageBox.Warning, - "information": QMessageBox.Information, - "question": QMessageBox.Question, - } - self.current_message.setIcon(type_dict[type]) - if type == "question": - self.current_message.setIcon(QMessageBox.Question) - self.current_message.setStandardButtons(QMessageBox.Yes | QMessageBox.Cancel) - - # Show the message box - message_box = self.current_message.exec_() - - self.current_message = None - # If the user presses the Cancel button on the message box - if message_box == QMessageBox.Cancel: - return False - return True + QMessageBox.warning(None, "Error Loading Data", f"An unexpected error occured: {error}") def closeEvent(self, event=None) -> None: diff --git a/test/conftest.py b/test/conftest.py index 824f4cc..e79a95c 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -13,6 +13,7 @@ QPoint, ) from PyQt5.QtGui import QMouseEvent +from PyQt5.QtWidgets import QMessageBox from tactool.table_model import TableModel from tactool.main import TACtool @@ -49,12 +50,21 @@ def public_index(model: TableModel): return len(model.public_headers) +@pytest.fixture() +def monkeypatch_qmsgbox_question_yes(monkeypatch: pytest.MonkeyPatch) -> None: + """ + A monkeypatch to prevent QMessageBox warning and information popups from showing during tests. + """ + for attribute in ["warning", "information"]: + monkeypatch.setattr(QMessageBox, attribute, lambda *args: QMessageBox.Ok) + + def create_mock_event( x: int = 0, y: int = 0, ) -> QMouseEvent: """ - Create a QEvent object for tests to simulate mouse/keyboard input from user. + Create a QEvent object for tests to simulate mouse movement input from user. """ event = QMouseEvent( QEvent.MouseMove, diff --git a/test/test_transformation.py b/test/test_transformation.py index 8855ffa..a8f66f6 100644 --- a/test/test_transformation.py +++ b/test/test_transformation.py @@ -64,7 +64,7 @@ def test_affine_transform_matrix(): np.testing.assert_array_almost_equal(matrix, expected, decimal=10) -def test_toggle_recoordinate_dialog(tactool: TACtool): +def test_toggle_recoordinate_dialog(tactool: TACtool, monkeypatch_qmsgbox_question_yes: pytest.MonkeyPatch): # close recoord window # check that toggling off works, main widgets, grey rect, disable graphics scene points From 1191fda164565aa362872467f729fb406c63a224 Mon Sep 17 00:00:00 2001 From: leorud Date: Thu, 25 Jan 2024 10:23:32 +0000 Subject: [PATCH 086/105] Rename menu toolbar variables --- tactool/window.py | 28 ++++++++++++++-------------- test/test_integration.py | 14 +++++++------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/tactool/window.py b/tactool/window.py index da4d2bb..f67790e 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -102,17 +102,17 @@ def setup_ui_elements(self) -> None: # Create the file drop down self.menu_bar_file = self.menu_bar.addMenu("&File") # Add buttons to the file drop down - self.menu_bar_file_import_image = self.menu_bar_file.addAction("Import Image") - self.menu_bar_file_export_image = self.menu_bar_file.addAction("Export Image") + self.import_image_button = self.menu_bar_file.addAction("Import Image") + self.export_image_button = self.menu_bar_file.addAction("Export Image") self.menu_bar_file.addSeparator() - self.menu_bar_file_import_tactool_csv = self.menu_bar_file.addAction("Import TACtool CSV") - self.menu_bar_file_export_tactool_csv = self.menu_bar_file.addAction("Export TACtool CSV") + self.import_tactool_csv_button = self.menu_bar_file.addAction("Import TACtool CSV") + self.export_tactool_csv_button = self.menu_bar_file.addAction("Export TACtool CSV") self.menu_bar_file.addSeparator() - self.menu_bar_recoordinate_csv = self.menu_bar_file.addAction("Recoordinate SEM CSV") + self.recoordinate_sem_csv_button = self.menu_bar_file.addAction("Recoordinate SEM CSV") # Create the tools drop down self.menu_bar_tools = self.menu_bar.addMenu("&Tools") - self.menu_bar_tools_ghost_point = self.menu_bar_tools.addAction("Ghost Point") - self.menu_bar_tools_ghost_point.setCheckable(True) + self.ghost_point_button = self.menu_bar_tools.addAction("Ghost Point") + self.ghost_point_button.setCheckable(True) # Create the status bar self.status_bar = QStatusBar(self) @@ -207,12 +207,12 @@ def connect_signals_and_slots(self) -> None: """ self.logger.debug("Connecting signals and slots") # Connect menu bar clicks to handlers - self.menu_bar_file_import_image.triggered.connect(self.import_image_get_path) - self.menu_bar_file_export_image.triggered.connect(self.export_image_get_path) - self.menu_bar_file_import_tactool_csv.triggered.connect(self.import_tactool_csv_get_path) - self.menu_bar_file_export_tactool_csv.triggered.connect(self.export_tactool_csv_get_path) - self.menu_bar_recoordinate_csv.triggered.connect(self.toggle_recoordinate_dialog) - self.menu_bar_tools_ghost_point.triggered.connect(self.graphics_view.remove_ghost_point) + self.import_image_button.triggered.connect(self.import_image_get_path) + self.export_image_button.triggered.connect(self.export_image_get_path) + self.import_tactool_csv_button.triggered.connect(self.import_tactool_csv_get_path) + self.export_tactool_csv_button.triggered.connect(self.export_tactool_csv_get_path) + self.recoordinate_sem_csv_button.triggered.connect(self.toggle_recoordinate_dialog) + self.ghost_point_button.triggered.connect(self.graphics_view.remove_ghost_point) # Connect button clicks to handlers self.clear_points_button.clicked.connect(self.clear_analysis_points) @@ -514,7 +514,7 @@ def add_analysis_point( GraphicsView/GraphicsScene, or a genuine Analysis Point. """ # If it is meant to be a ghost point but ghost points are disabled, just return and end the process - if ghost and not self.menu_bar_tools_ghost_point.isChecked(): + if ghost and not self.ghost_point_button.isChecked(): return # Assign attributes diff --git a/test/test_integration.py b/test/test_integration.py index 0c22350..4fa4c2d 100644 --- a/test/test_integration.py +++ b/test/test_integration.py @@ -41,7 +41,7 @@ def test_add_and_remove_points(tactool: TACtool, public_index: int): # Enable ghost point and override function to detect mouse position is on image tactool.graphics_view._image.isUnderMouse = create_function_return(True) - tactool.window.menu_bar_tools_ghost_point.setChecked(True) + tactool.window.ghost_point_button.toggle() # Check that the ghost point inherits the correct settings tactool.graphics_view.mouseMoveEvent(create_mock_event(x=203, y=305)) assert tactool.graphics_view.ghost_point.aslist()[:public_index] == AnalysisPoint( @@ -305,7 +305,7 @@ def test_reference_point_hint(tactool: TACtool): def test_ghost_point_delete_analysis_point(tactool: TACtool, public_index: int): # Enable ghost point and override function to detect mouse position is on image tactool.graphics_view._image.isUnderMouse = create_function_return(True) - tactool.window.menu_bar_tools_ghost_point.setChecked(True) + tactool.window.ghost_point_button.toggle() # Ensure ghost point initially exists tactool.graphics_view.mouseMoveEvent(create_mock_event(x=203, y=305)) @@ -339,7 +339,7 @@ def test_ghost_point_enable_disable(tactool: TACtool, public_index: int): # Enable ghost point and override function to detect mouse position is on image tactool.graphics_view._image.isUnderMouse = create_function_return(True) - tactool.window.menu_bar_tools_ghost_point.setChecked(True) + tactool.window.ghost_point_button.toggle() # Ensure ghost point is now created tactool.graphics_view.mouseMoveEvent(create_mock_event(x=83, y=106)) @@ -348,9 +348,9 @@ def test_ghost_point_enable_disable(tactool: TACtool, public_index: int): ).aslist()[:public_index] # Disable the ghost point - # We have to set the check state and trigger the click separately - tactool.window.menu_bar_tools_ghost_point.setChecked(False) - tactool.window.menu_bar_tools_ghost_point.trigger() + # We have to toggle the state and trigger the click separately + tactool.window.ghost_point_button.toggle() + tactool.window.ghost_point_button.trigger() # Ensure the ghost point does not exist assert tactool.graphics_view.ghost_point is None @@ -359,7 +359,7 @@ def test_ghost_point_enable_disable(tactool: TACtool, public_index: int): def test_toggle_main_input_widgets(tactool: TACtool): # Enable ghost point and override function to detect mouse position is on image tactool.graphics_view._image.isUnderMouse = create_function_return(True) - tactool.window.menu_bar_tools_ghost_point.setChecked(True) + tactool.window.ghost_point_button.toggle() # Trigger a mouse movement event tactool.graphics_view.mouseMoveEvent(create_mock_event(x=83, y=106)) From 7c54f47a306259e58d21e591c1bbbac384b1bb9b Mon Sep 17 00:00:00 2001 From: leorud Date: Thu, 25 Jan 2024 10:31:26 +0000 Subject: [PATCH 087/105] Normalise documentation --- tactool/recoordinate_dialog.py | 2 +- tactool/window.py | 13 ++++++------- test/test_import_export.py | 11 +---------- test/test_integration.py | 16 ---------------- test/test_model.py | 7 ------- test/test_scaling.py | 9 --------- 6 files changed, 8 insertions(+), 50 deletions(-) diff --git a/tactool/recoordinate_dialog.py b/tactool/recoordinate_dialog.py index 46ed05e..f865349 100644 --- a/tactool/recoordinate_dialog.py +++ b/tactool/recoordinate_dialog.py @@ -60,7 +60,7 @@ def __init__( def setup_ui_elements(self) -> None: """ - Function to create the elements of the Set Scale dialog box User Interface. + Create the elements of the Set Scale dialog box User Interface. Also sets the layout for the dialog box. """ self.logger.debug("Setting up UI elements") diff --git a/tactool/window.py b/tactool/window.py index f67790e..099c740 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -325,7 +325,7 @@ def toggle_status_bar_messages(self) -> None: def import_image_get_path(self) -> None: """ - Function to create a PyQt File Dialog, allowing the user to visually select an image file to import. + Create a PyQt File Dialog, allowing the user to visually select an image file to import. """ pyqt_open_dialog = QFileDialog.getOpenFileName( parent=self, @@ -344,7 +344,7 @@ def import_image_get_path(self) -> None: def export_image_get_path(self) -> None: """ - Function to create a PyQt File Dialog, allowing the user to visually select a directory to export an image file. + Create a PyQt File Dialog, allowing the user to visually select a directory to export an image file. """ if self.validate_current_data(validate_image=True): current_filepath = self.image_filepath if self.image_filepath else "" @@ -364,7 +364,7 @@ def export_image_get_path(self) -> None: def import_tactool_csv_get_path(self) -> None: """ - Function to create a PyQt File Dialog, allowing the user to visually select a TACtool CSV file to import. + Create a PyQt File Dialog, allowing the user to visually select a TACtool CSV file to import. """ pyqt_open_dialog = QFileDialog.getOpenFileName( parent=self, @@ -424,8 +424,7 @@ def load_tactool_csv_data(self, filepath: str) -> None: def export_tactool_csv_get_path(self) -> None: """ - Function to create a PyQt File Dialog, - allowing the user to visually select a directory to save a TACtool CSV file. + Create a PyQt File Dialog allowing the user to visually select a directory to save a TACtool CSV file. """ if self.validate_current_data(): current_filepath = self.csv_filepath if self.csv_filepath else "" @@ -644,7 +643,7 @@ def reload_analysis_points( transform: Optional[Callable[[AnalysisPoint], AnalysisPoint]] = None, ) -> None: """ - Function to reload all of the existing Analysis Points. + Reload all of the existing Analysis Points. Takes an index which indicates if the TableView should be automatically scrolled to a specific point. Also takes a transform function to transform the existing Analysis Points before replacing them. """ @@ -813,7 +812,7 @@ def set_scale(self, scale: float) -> None: def toggle_scaling_mode(self) -> None: """ - Function to toggle the program's scaling mode functionality. + Toggle the program's scaling mode functionality. """ # Toggle the scaling mode for the Graphics View self.graphics_view.toggle_scaling_mode() diff --git a/test/test_import_export.py b/test/test_import_export.py index 0c4f5bb..53f9565 100644 --- a/test/test_import_export.py +++ b/test/test_import_export.py @@ -11,9 +11,6 @@ def test_export_image(tactool: TACtool, tmp_path: Path): - """ - Function to test the functionality of exporting an image. - """ tmp_image_path = tmp_path / "exported_image.png" # Add some Analysis Points @@ -85,9 +82,6 @@ def test_import_tactool_csv( filepath: str, expected_points: list[AnalysisPoint], ): - """ - Function to test the functionality of importing a TACtool CSV file. - """ # Check that the PyQt Table Model data is empty assert tactool.table_model.analysis_points == [] @@ -119,9 +113,6 @@ def test_import_tactool_csv( def test_export_tactool_csv(tactool: TACtool, tmp_path: Path): - """ - Function to test the functionality of exporting a TACtool CSV file. - """ # Check that the PyQt Table Model data is empty assert tactool.table_model.analysis_points == [] @@ -159,7 +150,7 @@ def test_export_tactool_csv(tactool: TACtool, tmp_path: Path): assert_csv_data(csv_path, expected_headers, expected_data) -def assert_csv_data(csv_path: str, expected_headers: list[str], expected_data: list): +def assert_csv_data(csv_path: str, expected_headers: list[str], expected_data: list) -> None: """ Function to assert that the CSV data in the given file matches the given expected data. """ diff --git a/test/test_integration.py b/test/test_integration.py index 4fa4c2d..183c7b8 100644 --- a/test/test_integration.py +++ b/test/test_integration.py @@ -14,9 +14,6 @@ def test_add_and_remove_points(tactool: TACtool, public_index: int): - """ - Function to test the functionality of adding and removing Analysis Points via mouse clicks. - """ # Test for empty model (ensures no leakage between apc fixtures) assert tactool.table_model.analysis_points == [] @@ -117,10 +114,6 @@ def test_add_and_remove_points(tactool: TACtool, public_index: int): def test_clear_points(tactool: TACtool): - """ - Function to test the functionality of the Clear Points button. - Some points are purposefully overlapping for the test. - """ # Check that the PyQt Table Model data is empty assert tactool.table_model.analysis_points == [] @@ -192,9 +185,6 @@ def test_reload_analysis_points_no_args(tactool: TACtool, public_index: int): def test_reset_id_values(tactool: TACtool): - """ - Function to test the functionality of the Reset IDs button. - """ # Add some Analysis Points tactool.graphics_view.left_click.emit(101, 101) tactool.graphics_view.left_click.emit(202, 202) @@ -218,9 +208,6 @@ def test_reset_id_values(tactool: TACtool): def test_reset_settings(tactool: TACtool): - """ - Function to test the functionality of the Reset Settings button. - """ # Adjust the settings tactool.window.update_point_settings( sample_name="sample_x83", @@ -265,9 +252,6 @@ def test_reset_settings(tactool: TACtool): def test_reference_point_hint(tactool: TACtool): - """ - Function to test the functionality of the RefMark Points reminder in the Status Bar. - """ # Check reference Points hint is visible ref_points_status = tactool.window.status_bar_messages["ref_points"]["status"] assert ref_points_status is not None diff --git a/test/test_model.py b/test/test_model.py index c3f8cb9..7b490dc 100644 --- a/test/test_model.py +++ b/test/test_model.py @@ -50,10 +50,6 @@ def test_analysis_point_public_attributes_match( expected_data: AnalysisPoint, match_status: bool, ): - """ - Function to test the functionality of comparing Analysis Point public attributes. - For this, only the public attributes must match the existing Analysis Point. - """ analysis_point = AnalysisPoint(1, "RefMark", 123, 456, 10, 1.0, "#ffff00", "sample_x67", "mount_x15", "duck", "note1", None, None, None) # Compare just the public attributes of the points, i.e. up to the last 3 @@ -61,9 +57,6 @@ def test_analysis_point_public_attributes_match( def test_model(model: TableModel): - """ - Function to test the functionality of the PyQt Table Model of TACtool. - """ expected_data = [ [1, "RefMark", 123, 456, 10, 1.0, "#ffff00", "sample_x83", "mount_x15", "rock", "note1", "outer_ellipse1", "inner_ellipse1", "label_item1"], diff --git a/test/test_scaling.py b/test/test_scaling.py index 3c8c65c..03b1d64 100644 --- a/test/test_scaling.py +++ b/test/test_scaling.py @@ -2,9 +2,6 @@ def test_toggle_scaling_mode(tactool: TACtool): - """ - Function to test the functionality of the scaling mode. - """ # Check that the SetScaleDialog does not exist assert tactool.window.set_scale_dialog is None # Check that the main input widgets are enabled @@ -38,9 +35,6 @@ def test_toggle_scaling_mode(tactool: TACtool): def test_set_scale(tactool: TACtool): - """ - Function to test the functionality of setting the scale. - """ # Set the scale, following the same steps as the user would scale = 2.0 tactool.window.toggle_scaling_mode() @@ -59,9 +53,6 @@ def test_set_scale(tactool: TACtool): def test_scale_hint(tactool: TACtool): - """ - Function to test the functionality of the Set Scale reminder in the Status Bar. - """ # Check Set Scale hint is not visible set_scale_status = tactool.window.status_bar_messages["set_scale"]["status"] assert set_scale_status is None From 8acb93f523b0fdca11385cf8720c1bb486716719 Mon Sep 17 00:00:00 2001 From: leorud Date: Thu, 25 Jan 2024 10:33:02 +0000 Subject: [PATCH 088/105] Use pytest.approx to compare floats --- test/test_scaling.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/test_scaling.py b/test/test_scaling.py index 03b1d64..3ca2ad0 100644 --- a/test/test_scaling.py +++ b/test/test_scaling.py @@ -1,3 +1,5 @@ +import pytest + from tactool.main import TACtool @@ -49,7 +51,8 @@ def test_set_scale(tactool: TACtool): # Iterate through each actual Analysis Point for analysis_point in tactool.table_model.analysis_points: # Check that the scale value is equal to expected - assert analysis_point.scale == scale + # We use pytest.approx to compare the floats due to potential computing errors in floating point numbers + assert analysis_point.scale == pytest.approx(scale) def test_scale_hint(tactool: TACtool): From 0fd88347610d9a190a8928568e77fcb2397ec323 Mon Sep 17 00:00:00 2001 From: leorud Date: Thu, 25 Jan 2024 10:47:00 +0000 Subject: [PATCH 089/105] Use monkeypatch during tests when checking if image is under mouse --- test/conftest.py | 14 -------------- test/test_integration.py | 27 ++++++++++++++------------- 2 files changed, 14 insertions(+), 27 deletions(-) diff --git a/test/conftest.py b/test/conftest.py index e79a95c..797a636 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -1,11 +1,6 @@ """ Definitions for test fixtures used within other tests. """ -from typing import ( - Callable, - Any, -) - import pytest from PyQt5.QtCore import ( Qt, @@ -74,12 +69,3 @@ def create_mock_event( Qt.KeyboardModifiers(Qt.NoModifier), ) return event - - -def create_function_return(value: Any) -> Callable[[Any], Any]: - """ - Return a function which returns the given value. - """ - def new_function(*args, **kwargs) -> Any: - return value - return new_function diff --git a/test/test_integration.py b/test/test_integration.py index 183c7b8..edb4c53 100644 --- a/test/test_integration.py +++ b/test/test_integration.py @@ -6,14 +6,15 @@ tactool fixtures start a running QApplication for the context of the test. """ +import pytest from PyQt5.QtWidgets import QGraphicsRectItem from tactool.main import TACtool from tactool.analysis_point import AnalysisPoint -from conftest import create_mock_event, create_function_return +from conftest import create_mock_event -def test_add_and_remove_points(tactool: TACtool, public_index: int): +def test_add_and_remove_points(tactool: TACtool, public_index: int, monkeypatch: pytest.MonkeyPatch): # Test for empty model (ensures no leakage between apc fixtures) assert tactool.table_model.analysis_points == [] @@ -36,8 +37,8 @@ def test_add_and_remove_points(tactool: TACtool, public_index: int): ) tactool.graphics_view.left_click.emit(202, 202) - # Enable ghost point and override function to detect mouse position is on image - tactool.graphics_view._image.isUnderMouse = create_function_return(True) + # Enable ghost point and monkeypatch function to detect mouse position is on image + monkeypatch.setattr(tactool.graphics_view._image, "isUnderMouse", lambda: True) tactool.window.ghost_point_button.toggle() # Check that the ghost point inherits the correct settings tactool.graphics_view.mouseMoveEvent(create_mock_event(x=203, y=305)) @@ -286,9 +287,9 @@ def test_reference_point_hint(tactool: TACtool): assert ref_points_status in tactool.window.status_bar.children() -def test_ghost_point_delete_analysis_point(tactool: TACtool, public_index: int): - # Enable ghost point and override function to detect mouse position is on image - tactool.graphics_view._image.isUnderMouse = create_function_return(True) +def test_ghost_point_delete_analysis_point(tactool: TACtool, public_index: int, monkeypatch: pytest.MonkeyPatch): + # Enable ghost point and monkeypatch function to detect mouse position is on image + monkeypatch.setattr(tactool.graphics_view._image, "isUnderMouse", lambda: True) tactool.window.ghost_point_button.toggle() # Ensure ghost point initially exists @@ -316,13 +317,13 @@ def test_ghost_point_delete_analysis_point(tactool: TACtool, public_index: int): ).aslist()[:public_index] -def test_ghost_point_enable_disable(tactool: TACtool, public_index: int): +def test_ghost_point_enable_disable(tactool: TACtool, public_index: int, monkeypatch: pytest.MonkeyPatch): # Ensure ghost point does not initially exist (it is disabled by default) tactool.graphics_view.mouseMoveEvent(create_mock_event(x=203, y=305)) assert tactool.graphics_view.ghost_point is None - # Enable ghost point and override function to detect mouse position is on image - tactool.graphics_view._image.isUnderMouse = create_function_return(True) + # Enable ghost point and monkeypatch function to detect mouse position is on image + monkeypatch.setattr(tactool.graphics_view._image, "isUnderMouse", lambda: True) tactool.window.ghost_point_button.toggle() # Ensure ghost point is now created @@ -340,9 +341,9 @@ def test_ghost_point_enable_disable(tactool: TACtool, public_index: int): assert tactool.graphics_view.ghost_point is None -def test_toggle_main_input_widgets(tactool: TACtool): - # Enable ghost point and override function to detect mouse position is on image - tactool.graphics_view._image.isUnderMouse = create_function_return(True) +def test_toggle_main_input_widgets(tactool: TACtool, monkeypatch: pytest.MonkeyPatch): + # Enable ghost point and monkeypatch function to detect mouse position is on image + monkeypatch.setattr(tactool.graphics_view._image, "isUnderMouse", lambda: True) tactool.window.ghost_point_button.toggle() # Trigger a mouse movement event From fd8bfbcd7253925b4f1ca5d3ab0922645314eb8d Mon Sep 17 00:00:00 2001 From: leorud Date: Thu, 25 Jan 2024 10:49:23 +0000 Subject: [PATCH 090/105] Rename create_mock_event -> create_mock_mouse_event for clarity --- test/conftest.py | 2 +- test/test_integration.py | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/test/conftest.py b/test/conftest.py index 797a636..8acee66 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -54,7 +54,7 @@ def monkeypatch_qmsgbox_question_yes(monkeypatch: pytest.MonkeyPatch) -> None: monkeypatch.setattr(QMessageBox, attribute, lambda *args: QMessageBox.Ok) -def create_mock_event( +def create_mock_mouse_event( x: int = 0, y: int = 0, ) -> QMouseEvent: diff --git a/test/test_integration.py b/test/test_integration.py index edb4c53..f0ccab2 100644 --- a/test/test_integration.py +++ b/test/test_integration.py @@ -11,7 +11,7 @@ from tactool.main import TACtool from tactool.analysis_point import AnalysisPoint -from conftest import create_mock_event +from conftest import create_mock_mouse_event def test_add_and_remove_points(tactool: TACtool, public_index: int, monkeypatch: pytest.MonkeyPatch): @@ -41,7 +41,7 @@ def test_add_and_remove_points(tactool: TACtool, public_index: int, monkeypatch: monkeypatch.setattr(tactool.graphics_view._image, "isUnderMouse", lambda: True) tactool.window.ghost_point_button.toggle() # Check that the ghost point inherits the correct settings - tactool.graphics_view.mouseMoveEvent(create_mock_event(x=203, y=305)) + tactool.graphics_view.mouseMoveEvent(create_mock_mouse_event(x=203, y=305)) assert tactool.graphics_view.ghost_point.aslist()[:public_index] == AnalysisPoint( 3, "Spot", 203, 305, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", "", None, None, None ).aslist()[:public_index] @@ -82,7 +82,7 @@ def test_add_and_remove_points(tactool: TACtool, public_index: int, monkeypatch: tactool.graphics_view.right_click.emit(0, 0) # Check that the ghost point uses the newly deleted ID value of 3 - tactool.graphics_view.mouseMoveEvent(create_mock_event(x=176, y=301)) + tactool.graphics_view.mouseMoveEvent(create_mock_mouse_event(x=176, y=301)) assert tactool.graphics_view.ghost_point.aslist()[:public_index] == AnalysisPoint( 3, "RefMark", 176, 301, 50, 2.0, "#333333", "sample_x67", "mount_x15", "duck", "", None, None, None ).aslist()[:public_index] @@ -108,7 +108,7 @@ def test_add_and_remove_points(tactool: TACtool, public_index: int, monkeypatch: assert analysis_point._outer_ellipse.boundingRect().width() == expected_ellipse # Check that the ghost point inherits the correct settings - tactool.graphics_view.mouseMoveEvent(create_mock_event(x=82, y=288)) + tactool.graphics_view.mouseMoveEvent(create_mock_mouse_event(x=82, y=288)) assert tactool.graphics_view.ghost_point.aslist()[:public_index] == AnalysisPoint( 4, "Spot", 82, 288, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", "", None, None, None ).aslist()[:public_index] @@ -293,7 +293,7 @@ def test_ghost_point_delete_analysis_point(tactool: TACtool, public_index: int, tactool.window.ghost_point_button.toggle() # Ensure ghost point initially exists - tactool.graphics_view.mouseMoveEvent(create_mock_event(x=203, y=305)) + tactool.graphics_view.mouseMoveEvent(create_mock_mouse_event(x=203, y=305)) assert tactool.graphics_view.ghost_point.aslist()[:public_index] == AnalysisPoint( 1, "RefMark", 203, 305, 10, 1.0, "#ffff00", "", "", "", "", None, None, None ).aslist()[:public_index] @@ -302,7 +302,7 @@ def test_ghost_point_delete_analysis_point(tactool: TACtool, public_index: int, tactool.graphics_view.left_click.emit(215, 215) # Ensure ghost point has newly incremented ID - tactool.graphics_view.mouseMoveEvent(create_mock_event(x=83, y=106)) + tactool.graphics_view.mouseMoveEvent(create_mock_mouse_event(x=83, y=106)) assert tactool.graphics_view.ghost_point.aslist()[:public_index] == AnalysisPoint( 2, "RefMark", 83, 106, 10, 1.0, "#ffff00", "", "", "", "", None, None, None ).aslist()[:public_index] @@ -311,7 +311,7 @@ def test_ghost_point_delete_analysis_point(tactool: TACtool, public_index: int, tactool.graphics_view.right_click.emit(218, 218) # Ensure the ghost point has the new next ID (back to 1) - tactool.graphics_view.mouseMoveEvent(create_mock_event(x=176, y=301)) + tactool.graphics_view.mouseMoveEvent(create_mock_mouse_event(x=176, y=301)) assert tactool.graphics_view.ghost_point.aslist()[:public_index] == AnalysisPoint( 1, "RefMark", 176, 301, 10, 1.0, "#ffff00", "", "", "", "", None, None, None ).aslist()[:public_index] @@ -319,7 +319,7 @@ def test_ghost_point_delete_analysis_point(tactool: TACtool, public_index: int, def test_ghost_point_enable_disable(tactool: TACtool, public_index: int, monkeypatch: pytest.MonkeyPatch): # Ensure ghost point does not initially exist (it is disabled by default) - tactool.graphics_view.mouseMoveEvent(create_mock_event(x=203, y=305)) + tactool.graphics_view.mouseMoveEvent(create_mock_mouse_event(x=203, y=305)) assert tactool.graphics_view.ghost_point is None # Enable ghost point and monkeypatch function to detect mouse position is on image @@ -327,7 +327,7 @@ def test_ghost_point_enable_disable(tactool: TACtool, public_index: int, monkeyp tactool.window.ghost_point_button.toggle() # Ensure ghost point is now created - tactool.graphics_view.mouseMoveEvent(create_mock_event(x=83, y=106)) + tactool.graphics_view.mouseMoveEvent(create_mock_mouse_event(x=83, y=106)) assert tactool.graphics_view.ghost_point.aslist()[:public_index] == AnalysisPoint( 1, "RefMark", 83, 106, 10, 1.0, "#ffff00", "", "", "", "", None, None, None ).aslist()[:public_index] @@ -347,7 +347,7 @@ def test_toggle_main_input_widgets(tactool: TACtool, monkeypatch: pytest.MonkeyP tactool.window.ghost_point_button.toggle() # Trigger a mouse movement event - tactool.graphics_view.mouseMoveEvent(create_mock_event(x=83, y=106)) + tactool.graphics_view.mouseMoveEvent(create_mock_mouse_event(x=83, y=106)) # Ensure everything is enabled by default for widget in tactool.window.main_input_widgets: @@ -359,7 +359,7 @@ def test_toggle_main_input_widgets(tactool: TACtool, monkeypatch: pytest.MonkeyP # Disable main widgets tactool.window.toggle_main_input_widgets(enable=False) # Trigger a mouse movement event - tactool.graphics_view.mouseMoveEvent(create_mock_event(x=83, y=106)) + tactool.graphics_view.mouseMoveEvent(create_mock_mouse_event(x=83, y=106)) # Ensure everything is disabled for widget in tactool.window.main_input_widgets: @@ -371,7 +371,7 @@ def test_toggle_main_input_widgets(tactool: TACtool, monkeypatch: pytest.MonkeyP # Enable main widgets tactool.window.toggle_main_input_widgets(enable=True) # Trigger a mouse movement event - tactool.graphics_view.mouseMoveEvent(create_mock_event(x=83, y=106)) + tactool.graphics_view.mouseMoveEvent(create_mock_mouse_event(x=83, y=106)) # Ensure everything is enabled again for widget in tactool.window.main_input_widgets: From 66b4373e48fd4ff72aff9378f1b7241385b4632b Mon Sep 17 00:00:00 2001 From: leorud Date: Thu, 25 Jan 2024 16:20:23 +0000 Subject: [PATCH 091/105] Load re-coordinated SEM points into TACtool rather than exporting them --- tactool/analysis_point.py | 52 ++++++++------ tactool/recoordinate_dialog.py | 128 +++++++++++---------------------- tactool/window.py | 33 ++++++--- 3 files changed, 97 insertions(+), 116 deletions(-) diff --git a/tactool/analysis_point.py b/tactool/analysis_point.py index 971c512..aaab1de 100644 --- a/tactool/analysis_point.py +++ b/tactool/analysis_point.py @@ -17,6 +17,13 @@ QGraphicsTextItem, ) +SEM_HEADERS = { + "id_header": "Particle ID", + "ref_col": "Mineral Classification", + "x_header": "Laser Ablation Centre X", + "y_header": "Laser Ablation Centre Y", +} + @dataclasses.dataclass class AnalysisPoint: @@ -249,43 +256,42 @@ def convert_export_point(analysis_point: AnalysisPoint, headers: list[str]) -> l return analysis_point_row -def parse_sem_csv(filepath: str, required_headers: list[str]) -> tuple[list[dict[str, Any]], list[str]]: +def parse_sem_csv(filepath: str) -> list[dict[str, str | int | float]]: """ - Parse an SEM CSV file. - Returns a list of dictionary rows, and the list of headers in the same order they are in the current file. + Parse an SEM CSV file into a list of dictionaries. + We only retain the integer ID value and the coordinates of the points. + The ID can be used later in the lab workflow to re-link the points to extra metadata. """ point_dicts = [] with open(filepath) as csv_file: reader = DictReader(csv_file) # Check that the given CSV file has the required headers - reader.fieldnames - for header in required_headers: + for header in SEM_HEADERS.values(): if header not in reader.fieldnames: - raise KeyError(f"Missing required header: {header}") + raise KeyError(f"SEM CSV missing required header: {header}") # Iterate through each line in the CSV file for item in reader: - # Convert the required coordinate headers to floats - for header in required_headers: - item[header] = float(item[header]) - point_dicts.append(item) - return point_dicts, reader.fieldnames + point_dict = { + "x": float(item[SEM_HEADERS["x_header"]]), + "y": float(item[SEM_HEADERS["y_header"]]), + } + # Sometimes the ID is not an integer, we ignore those + if item[SEM_HEADERS["id_header"]].isnumeric(): + point_dict["apid"] = int(item[SEM_HEADERS["id_header"]]) -def export_sem_csv(filepath: str, headers: list[str], points: list[dict[str, Any]]) -> None: - """ - Write the given header data and point data to the given filepath. - This is specifically for SEM data. - """ - with open(filepath, "w", newline="") as csvfile: - csvwriter = writer(csvfile) - csvwriter.writerow(headers) - for point in points: - # Convert the dictionary to a list of values matching the header positions - csv_row = [point[header] for header in headers] - csvwriter.writerow(csv_row) + # Apply the correct label + if item[SEM_HEADERS["ref_col"]] == "Fiducial": + point_dict["label"] = "RefMark" + else: + point_dict["label"] = "Spot" + + point_dicts.append(point_dict) + + return point_dicts def reset_id(analysis_point: AnalysisPoint) -> AnalysisPoint: diff --git a/tactool/recoordinate_dialog.py b/tactool/recoordinate_dialog.py index f865349..8db3136 100644 --- a/tactool/recoordinate_dialog.py +++ b/tactool/recoordinate_dialog.py @@ -20,9 +20,9 @@ ) from tactool.analysis_point import ( + SEM_HEADERS, AnalysisPoint, parse_sem_csv, - export_sem_csv, ) from tactool.utils import LoggerMixin @@ -47,13 +47,16 @@ def __init__( # Setting the Dialog Box settings self.setWindowTitle("Recoordination") - self.setMinimumSize(300, 200) + self.setMinimumSize(300, 150) self.setWindowFlags( Qt.Window | Qt.WindowCloseButtonHint ) self.setup_ui_elements() self.connect_signals_and_slots() + # This is used later to save recoordinated points + self.recoordinated_point_dicts: list[dict[str, str | int | float]] = [] + if not self.testing_mode: self.show() @@ -70,12 +73,7 @@ def setup_ui_elements(self) -> None: self.input_csv_filepath_label = QLineEdit("") self.input_csv_filepath_label.setDisabled(True) - output_csv_label = QLabel("Output CSV") - self.output_csv_button = QPushButton("Select Output CSV", self) - self.output_csv_filepath_label = QLineEdit("") - self.output_csv_filepath_label.setDisabled(True) - - self.recoordinate_button = QPushButton("Recoordinate and Export") + self.recoordinate_button = QPushButton("Import and Re-coordinate") self.cancel_button = QPushButton("Cancel", self) # Arrange the main layout @@ -83,9 +81,6 @@ def setup_ui_elements(self) -> None: layout.addWidget(input_csv_label) layout.addWidget(self.input_csv_button) layout.addWidget(self.input_csv_filepath_label) - layout.addWidget(output_csv_label) - layout.addWidget(self.output_csv_button) - layout.addWidget(self.output_csv_filepath_label) # Add the final 2 buttons alongside eachother bottom_button_layout = QHBoxLayout() @@ -103,8 +98,7 @@ def connect_signals_and_slots(self) -> None: """ self.logger.debug("Connecting signals and slots") self.input_csv_button.clicked.connect(self.get_input_csv) - self.output_csv_button.clicked.connect(self.get_output_csv) - self.recoordinate_button.clicked.connect(self.recoordinate_and_export) + self.recoordinate_button.clicked.connect(self.import_and_recoordinate_sem_csv) self.cancel_button.clicked.connect(self.closeEvent) @@ -122,90 +116,58 @@ def get_input_csv(self) -> None: self.logger.info("Selected input CSV: %s", input_csv) - def get_output_csv(self) -> None: - """ - Get the output CSV file for the recoordination results. - """ - pyqt_save_dialog = QFileDialog.getSaveFileName( - parent=self, - caption="Export Recoordinated CSV", - directory=self.input_csv_filepath_label.text(), - filter="*.csv", - ) - output_csv = pyqt_save_dialog[0] - self.output_csv_filepath_label.setText(output_csv) - self.logger.info("Selected output CSV: %s", output_csv) - - - def recoordinate_and_export(self) -> None: + def import_and_recoordinate_sem_csv(self) -> None: """ - Get the given CSV files, if they are both valid then perform the recoordination process. + Get the given CSV file, if it is valid then perform the recoordination process. """ + # Check the given paths input_csv = self.input_csv_filepath_label.text() - output_csv = self.output_csv_filepath_label.text() - if input_csv != "" and output_csv != "": - result = self.recoordinate_sem_points(input_csv, output_csv) - if result: - self.closeEvent() - else: - QMessageBox.warning(None, "Invalid Paths", "Please select an input and output CSV first.") - + if input_csv == "": + QMessageBox.warning(None, "Invalid Path", "Please select an input SEM CSV first.") + return - def recoordinate_sem_points( - self, - input_csv: str, - output_csv: str, - invert_x_axis_dest: bool = True, - x_header: str = "Laser Ablation Centre X", - y_header: str = "Laser Ablation Centre Y", - ref_col: str = "Mineral Classification", - ref_label: str = "Fiducial", - ) -> bool: - """ - Recoordinate the given input SEM CSV file points using the current Analysis Points as reference points. - Saves the resulting SEM data to the given output CSV file. - Returns a bool which signals if the recoordination successfully completed. - - invert_x_axis_dest determines if the X axis coordinate values of the - destination coordinates should be inverted. - This is used because the origin of the PyQt GraphicsScene is at the top left, - but the origin of the SEM coordinates of at the top right. - Therefore, we use the size of the image to invert the X axis origin of the destination coordinates - to account for this difference. - - The x_header, y_header, ref_col and ref_label values can be changed to allow recoordination - of CSV files with different headers and data. - For example, using the following values would allow recoordination for TACtool CSV files: - invert_x_axis_dest=False, x_header="X", y_header="Y", ref_col="Type", ref_label="RefMark" - """ - # Parse the SEM CSV data - required_sem_headers = [x_header, y_header] + # Get the points from the SEM CSV try: self.logger.info("Loading SEM CSV: %s", input_csv) - point_dicts, csv_headers = parse_sem_csv(filepath=input_csv, required_headers=required_sem_headers) + point_dicts = parse_sem_csv(filepath=input_csv) except KeyError as error: self.logger.error(error) - string_headers = "\n".join(required_sem_headers) + string_headers = "\n".join(SEM_HEADERS.values()) QMessageBox.warning( None, "Invalid CSV File", f"The given file does not contain the required headers:\n\n{string_headers}", ) - return False + return + + # Invert all of the X coordinates because the SEM has an origin at the top right + # but TACtool has an origin at the top left + for idx, point_dict in enumerate(point_dicts): + point_dict["x"] = self.image_size.width() - point_dict["x"] + point_dicts[idx] = point_dict + self.recoordinated_point_dicts = self.recoordinate_sem_points(point_dicts) + self.closeEvent() + + + def recoordinate_sem_points( + self, + point_dicts: list[dict[str, str | int | float]], + ) -> list[dict[str, str | int | float]]: + """ + Recoordinate the given input SEM CSV file points using the current Analysis Points as reference points. + """ # Calculate the matrix self.logger.debug("Calculating recoordination matrix") - # For source and dest points, only use the first 3 reference points - # Format the source and dest points into lists of tuples of x and y values + # For source and dest points, we only use the first 3 reference points + # Format the points into lists of tuples of x and y values source = [ - (item[x_header], item[y_header]) + (item["x"], item["y"]) for item in point_dicts - if item[ref_col] == ref_label + if item["label"] == "RefMark" ][:3] - # Check if the destination points (from TACtool) need the y axis inverted to change the origin dest = [ - (self.image_size.width() - point.x, point.y) - if invert_x_axis_dest else (point.x, point.y) + (point.x, point.y) for point in self.ref_points ][:3] matrix = affine_transform_matrix(source=source, dest=dest) @@ -214,10 +176,10 @@ def recoordinate_sem_points( # Track if any of the new points extend the image boundary extends_boundary = False for idx, item in enumerate(point_dicts): - point = (item[x_header], item[y_header]) + point = (item["x"], item["y"]) new_x, new_y = affine_transform_point(matrix=matrix, point=point) - point_dicts[idx][x_header] = new_x - point_dicts[idx][y_header] = new_y + point_dicts[idx]["x"] = new_x + point_dicts[idx]["y"] = new_y # Check if the new point extends the image boundary if new_x > self.image_size.width() or new_x < 0 or new_y > self.image_size.height() or new_y < 0: extends_boundary = True @@ -225,17 +187,13 @@ def recoordinate_sem_points( self.logger.debug("Transformed point %s to %s", point, (new_x, new_y)) self.logger.info("Transformed %s points", len(point_dicts)) - # Export the new points to the output CSV - self.logger.info("Saving recoordination results to: %s", output_csv) - export_sem_csv(filepath=output_csv, headers=csv_headers, points=point_dicts) - # Create a message informing the user that the recoordinated points extend the image boundary if extends_boundary: message = "At least 1 of the recoordinated points goes beyond the current image boundary" self.logger.warning(message) QMessageBox.warning(None, "Recoordination Warning", message) - return True + return point_dicts def closeEvent(self, event=None) -> None: diff --git a/tactool/window.py b/tactool/window.py index 099c740..f18d902 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -108,7 +108,7 @@ def setup_ui_elements(self) -> None: self.import_tactool_csv_button = self.menu_bar_file.addAction("Import TACtool CSV") self.export_tactool_csv_button = self.menu_bar_file.addAction("Export TACtool CSV") self.menu_bar_file.addSeparator() - self.recoordinate_sem_csv_button = self.menu_bar_file.addAction("Recoordinate SEM CSV") + self.recoordinate_sem_csv_button = self.menu_bar_file.addAction("Import and Re-coordinate SEM CSV") # Create the tools drop down self.menu_bar_tools = self.menu_bar.addMenu("&Tools") self.ghost_point_button = self.menu_bar_tools.addAction("Ghost Point") @@ -507,7 +507,8 @@ def add_analysis_point( The main ways a user can do this is by clicking on the Graphics Scene, or by importing a TACtool CSV file. If the Analysis Point has been created from a click, get the values from the window settings. - Otherwise, use_window_inputs is set to False and the Analysis Point settings are retrieved from the CSV columns. + Otherwise, use_window_inputs is set to False and the Analysis Point settings are retrieved from + the given input values where possible. The ghost option is used to determine if the AnalysisPoint is a transparent hint used on the GraphicsView/GraphicsScene, or a genuine Analysis Point. @@ -518,11 +519,17 @@ def add_analysis_point( # Assign attributes if use_window_inputs: - # Get the required input values from the window input settings - label = self.label_input.currentText() - diameter = self.diameter_input.value() - colour = self.point_colour - scale = float(self.scale_value_input.text()) + # Get the required input values from the window input settings if they are not given + # We only do this for the settings fields, not the metadata, because the settings are required + # but the metadata is optional + if label is None: + label = self.label_input.currentText() + if diameter is None: + diameter = self.diameter_input.value() + if scale is None: + scale = float(self.scale_value_input.text()) + if colour is None: + colour = self.point_colour sample_name = self.sample_name_input.text() mount_name = self.mount_name_input.text() material = self.material_input.text() @@ -861,9 +868,19 @@ def toggle_recoordinate_dialog(self) -> None: # Connect the Recoordinate dialog buttons self.recoordinate_dialog.closed_recoordinate_dialog.connect(self.toggle_recoordinate_dialog) - # Else when the program is in recoordination mode, reset the Recoordination Dialog value + # Else when the program is in recoordination mode, end the recoordination process else: + # Keep the recoordinated points and close the dialog + recoordinated_point_dicts = self.recoordinate_dialog.recoordinated_point_dicts self.recoordinate_dialog = None + + # Clear the current points + self.clear_analysis_points() + # Add the recoordinated points as new Analysis Points to the canvas + for point_dict in recoordinated_point_dicts: + # We use the window inputs to fill the Analysis Point empty settings + self.add_analysis_point(**point_dict, use_window_inputs=True) + # Enable main window widgets self.toggle_main_input_widgets(True) else: From 85cb0a9f1ed53c8b63c2880590a4b29162c5b791 Mon Sep 17 00:00:00 2001 From: leorud Date: Fri, 26 Jan 2024 12:12:23 +0000 Subject: [PATCH 092/105] Update re-coordination tests for new functionality --- tactool/analysis_point.py | 3 +- test/test_import_export.py | 35 ++++++++++++++ test/test_transformation.py | 91 +++++++++++++++++-------------------- 3 files changed, 79 insertions(+), 50 deletions(-) diff --git a/tactool/analysis_point.py b/tactool/analysis_point.py index aaab1de..e285f88 100644 --- a/tactool/analysis_point.py +++ b/tactool/analysis_point.py @@ -10,6 +10,7 @@ DictReader, writer, ) +from pathlib import Path from typing import Any from PyQt5.QtWidgets import ( @@ -256,7 +257,7 @@ def convert_export_point(analysis_point: AnalysisPoint, headers: list[str]) -> l return analysis_point_row -def parse_sem_csv(filepath: str) -> list[dict[str, str | int | float]]: +def parse_sem_csv(filepath: str | Path) -> list[dict[str, str | int | float]]: """ Parse an SEM CSV file into a list of dictionaries. We only retain the integer ID value and the coordinates of the points. diff --git a/test/test_import_export.py b/test/test_import_export.py index 53f9565..09110b7 100644 --- a/test/test_import_export.py +++ b/test/test_import_export.py @@ -7,6 +7,7 @@ from tactool.analysis_point import ( AnalysisPoint, export_tactool_csv, + parse_sem_csv, ) @@ -172,3 +173,37 @@ def assert_csv_data(csv_path: str, expected_headers: list[str], expected_data: l # Attributes from the expected Analysis Point are converted to a string because # the raw CSV data will all be a string type assert csv_attribute == str(item_attribute) + + +def test_parse_sem_csv_good(): + # Arrange + sem_csv = Path("test/data/SEM_co-ordinate_import_test_set.csv") + expected_point_dicts = [ + {"label": "RefMark", "x": 91.576, "y": 67.762}, + {"label": "RefMark", "x": 86.01, "y": 55.893}, + {"label": "RefMark", "x": 98.138, "y": 49.417}, + {"apid": 509, "label": "Spot", "x": 96.764747, "y": 49.303754}, + {"apid": 577, "label": "Spot", "x": 97.520798, "y": 55.785059}, + {"apid": 662, "label": "Spot", "x": 93.746436, "y": 60.03264}, + {"apid": 705, "label": "Spot", "x": 91.770031, "y": 62.312733}, + {"apid": 759, "label": "Spot", "x": 92.415936, "y": 67.080603}, + ] + + # Act + actual_point_dicts = parse_sem_csv(sem_csv) + + # Assert + assert expected_point_dicts == actual_point_dicts + + +def test_parse_sem_csv_bad(): + # Arrange + sem_csv = Path("test/data/analysis_points_complete.csv") + expected_error = "SEM CSV missing required header: Particle ID" + + # Act + with pytest.raises(KeyError) as excinfo: + parse_sem_csv(sem_csv) + + # Assert + assert expected_error in str(excinfo.value) diff --git a/test/test_transformation.py b/test/test_transformation.py index a8f66f6..f511d43 100644 --- a/test/test_transformation.py +++ b/test/test_transformation.py @@ -2,8 +2,7 @@ Tests for functions in the transformation module """ import numpy as np -from csv import DictReader -from pathlib import Path +from typing import Any import pytest @@ -65,9 +64,6 @@ def test_affine_transform_matrix(): def test_toggle_recoordinate_dialog(tactool: TACtool, monkeypatch_qmsgbox_question_yes: pytest.MonkeyPatch): - # close recoord window - # check that toggling off works, main widgets, grey rect, disable graphics scene points - # Check that the RecoordinateDialog does not exist assert tactool.window.recoordinate_dialog is None # Check that the main input widgets are enabled @@ -120,70 +116,67 @@ def test_toggle_recoordinate_dialog(tactool: TACtool, monkeypatch_qmsgbox_questi @pytest.mark.parametrize( - ["input_csv", "expected_coordinates", "recoordinate_args", "non_coord_headers"], + ["input_csv", "expected_points_data"], [ - ( - "test/data/analysis_points_complete.csv", - [(336, 472), (318, 394), (268, 469), (340, 527), (380, 362)], - {"invert_x_axis_dest": False, "x_header": "X", "y_header": "Y", - "ref_col": "Type", "ref_label": "RefMark"}, - ["Name", "Type", "diameter", "scale", "colour", "mount_name", "material", "notes"], - ), ( "test/data/SEM_co-ordinate_import_test_set.csv", - [(460, 472), (478, 394), (528, 469), (525, 458), (509, 483), (487, 466), (476, 458), (464, 477)], - {"invert_x_axis_dest": True, "x_header": "Laser Ablation Centre X", "y_header": "Laser Ablation Centre Y", - "ref_col": "Mineral Classification", "ref_label": "Fiducial"}, - ["Particle ID", "Mineral Classification", "Effective Diameter m", - "Feret Max Diameter m", "Feret Min Diameter m", "F (N)", "Cl (N)"], + [ + [1, "RefMark", 336, 472, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", ""], + [2, "RefMark", 318, 394, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", ""], + [3, "RefMark", 268, 469, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", ""], + [509, "Spot", 271, 458, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", ""], + [577, "Spot", 287, 483, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", ""], + [662, "Spot", 309, 466, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", ""], + [705, "Spot", 320, 458, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", ""], + [759, "Spot", 332, 477, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", ""], + ], ), ( "test/data/SEM_co-ordinate_import_test_set_4_refs.csv", - [(460, 472), (478, 394), (528, 469), (472, 447), (525, 458), - (509, 483), (487, 466), (476, 458), (464, 477)], - {"invert_x_axis_dest": True, "x_header": "Laser Ablation Centre X", "y_header": "Laser Ablation Centre Y", - "ref_col": "Mineral Classification", "ref_label": "Fiducial"}, - ["Particle ID", "Mineral Classification", "Effective Diameter m", - "Feret Max Diameter m", "Feret Min Diameter m", "F (N)", "Cl (N)"], + [ + [1, "RefMark", 336, 472, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", ""], + [2, "RefMark", 318, 394, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", ""], + [3, "RefMark", 268, 469, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", ""], + [4, "RefMark", 324, 447, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", ""], + [509, "Spot", 271, 458, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", ""], + [577, "Spot", 287, 483, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", ""], + [662, "Spot", 309, 466, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", ""], + [705, "Spot", 320, 458, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", ""], + [759, "Spot", 332, 477, 50, 2.0, "#222222", "sample_x83", "mount_x81", "rock", ""], + ], ), ], ) -def test_recoordinate_sem_points( - tmp_path: Path, +def test_import_and_recoordinate_sem_csv( tactool: TACtool, + public_index: int, input_csv: str, - expected_coordinates: list[tuple[int, int]], - recoordinate_args: dict[str, str], - non_coord_headers: list[str], + expected_points_data: list[list[Any]], ): # Arrange - output_csv = tmp_path / "recoordinated_output.csv" - print(output_csv) # Place 4 Analysis Points which will be used for recoordination # Only the first 3 should be used tactool.graphics_view.left_click.emit(336, 472) tactool.graphics_view.left_click.emit(318, 394) tactool.graphics_view.left_click.emit(268, 469) tactool.graphics_view.left_click.emit(87, 392) - # Toggle recoordinate dialog so that the recoordinate_dialog is callable - tactool.window.toggle_recoordinate_dialog() + # Modify the Analysis Point settings as these should be applied to the recoordinated points + tactool.window.update_point_settings( + sample_name="sample_x83", + mount_name="mount_x81", + material="rock", + label="Spot", + diameter=50, + scale=2.0, + colour="#222222", + ) # Act - tactool.recoordinate_dialog.recoordinate_sem_points(input_csv, output_csv, **recoordinate_args) + # Toggle recoordinate dialog so that the recoordinate_dialog is callable + tactool.window.toggle_recoordinate_dialog() + tactool.recoordinate_dialog.input_csv_filepath_label.setText(input_csv) + tactool.recoordinate_dialog.import_and_recoordinate_sem_csv() # Assert - with open(input_csv) as input_file, open(output_csv) as output_file: - input_reader = DictReader(input_file) - output_reader = DictReader(output_file) - - # Check that the headers remain the same - assert input_reader.fieldnames == output_reader.fieldnames - - # Iterate through CSV file lines - for input_item, output_item, (expect_x, expect_y) in zip(input_reader, output_reader, expected_coordinates): - # Check that the non coordinate fields remain the same - for header in non_coord_headers: - assert input_item[header] == output_item[header] - # Check that the coordinate fields are correct - assert int(output_item[recoordinate_args["x_header"]]) == expect_x - assert int(output_item[recoordinate_args["y_header"]]) == expect_y + for expected_point, actual_point in zip(expected_points_data, tactool.table_model.analysis_points): + assert expected_point == actual_point.aslist()[:public_index] From 2ebd3dc159fd862b53f51d45dc173f0263c9ab03 Mon Sep 17 00:00:00 2001 From: leorud Date: Fri, 26 Jan 2024 14:05:16 +0000 Subject: [PATCH 093/105] Remove list of tests from README --- README.md | 29 ----------------------------- 1 file changed, 29 deletions(-) diff --git a/README.md b/README.md index 15c6f26..e96de78 100644 --- a/README.md +++ b/README.md @@ -357,35 +357,6 @@ Ensure you have setup your Python path. Then you can run the tests with: pytest -vv test/ ``` -#### List of Tests - -**test_import_export.py** -- test_export_image -- test_import_tactool_csv -- test_export_tactool_csv - -**test_integration.py** -- test_add_and_remove_points -- test_clear_points -- test_reset_id_values -- test_reset_settings -- test_reference_point_hint - -**test_model.py** -- test_analysis_point_public_attributes_match -- test_model - -**test_scaling.py** -- test_toggle_scaling_mode -- test_set_scale -- test_scale_hint - -**test_transformation.py** -- test_affine_transform_point -- test_affine_transform_matrix -- test_toggle_recoordinate_dialog -- test_recoordinate_sem_points - ### Create a standalone executable using PyInstaller ``` From 7db379fe72e0a0574e17ea1cdd1cc0cb243cde6b Mon Sep 17 00:00:00 2001 From: leorud Date: Fri, 26 Jan 2024 14:19:46 +0000 Subject: [PATCH 094/105] Normalise docstrings and spelling --- tactool/analysis_point.py | 7 ------- tactool/recoordinate_dialog.py | 5 +---- tactool/utils.py | 3 --- tactool/window.py | 6 +++--- test/conftest.py | 3 --- test/test_integration.py | 8 -------- test/test_model.py | 5 ----- test/test_transformation.py | 3 --- 8 files changed, 4 insertions(+), 36 deletions(-) diff --git a/tactool/analysis_point.py b/tactool/analysis_point.py index e285f88..5f36f5f 100644 --- a/tactool/analysis_point.py +++ b/tactool/analysis_point.py @@ -1,10 +1,3 @@ -""" -Includes the Analysis Point data class, -functions for parsing TACtool CSV data ready for Analysis Points, -functions for exporting current Analysis Points into a CSV format, -and functions for transformation of existing Analysis Points. -""" - import dataclasses from csv import ( DictReader, diff --git a/tactool/recoordinate_dialog.py b/tactool/recoordinate_dialog.py index 8db3136..362ffce 100644 --- a/tactool/recoordinate_dialog.py +++ b/tactool/recoordinate_dialog.py @@ -1,6 +1,3 @@ -""" -The Recoordinate Dialog is used for allowing the user to provide a CSV to be recoordinated. -""" import numpy as np from PyQt5.QtCore import ( @@ -73,7 +70,7 @@ def setup_ui_elements(self) -> None: self.input_csv_filepath_label = QLineEdit("") self.input_csv_filepath_label.setDisabled(True) - self.recoordinate_button = QPushButton("Import and Re-coordinate") + self.recoordinate_button = QPushButton("Import and Recoordinate") self.cancel_button = QPushButton("Cancel", self) # Arrange the main layout diff --git a/tactool/utils.py b/tactool/utils.py index 77948e5..8e63645 100644 --- a/tactool/utils.py +++ b/tactool/utils.py @@ -1,6 +1,3 @@ -""" -Module for utilities and functions to help with development. -""" import logging from PyQt5.QtCore import pyqtRemoveInputHook diff --git a/tactool/window.py b/tactool/window.py index f18d902..e66cec1 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -108,7 +108,7 @@ def setup_ui_elements(self) -> None: self.import_tactool_csv_button = self.menu_bar_file.addAction("Import TACtool CSV") self.export_tactool_csv_button = self.menu_bar_file.addAction("Export TACtool CSV") self.menu_bar_file.addSeparator() - self.recoordinate_sem_csv_button = self.menu_bar_file.addAction("Import and Re-coordinate SEM CSV") + self.recoordinate_sem_csv_button = self.menu_bar_file.addAction("Import and Recoordinate SEM CSV") # Create the tools drop down self.menu_bar_tools = self.menu_bar.addMenu("&Tools") self.ghost_point_button = self.menu_bar_tools.addAction("Ghost Point") @@ -884,11 +884,11 @@ def toggle_recoordinate_dialog(self) -> None: # Enable main window widgets self.toggle_main_input_widgets(True) else: - self.logger.error("Missing 3 references points for re-coordination") + self.logger.error("Missing 3 references points for recoordination") QMessageBox.warning( None, "Missing Reference Points", - "3 Reference points are required to perform re-coordination" + "3 Reference points are required to perform recoordination" ) diff --git a/test/conftest.py b/test/conftest.py index 8acee66..f0af84e 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -1,6 +1,3 @@ -""" -Definitions for test fixtures used within other tests. -""" import pytest from PyQt5.QtCore import ( Qt, diff --git a/test/test_integration.py b/test/test_integration.py index f0ccab2..2fb4ccb 100644 --- a/test/test_integration.py +++ b/test/test_integration.py @@ -1,11 +1,3 @@ -""" -Integration tests to confirm that classes interact correctly. - -It tests the connection of signals and slots by emitting signals to trigger changes and simulating button clicks. -Analysis Points are added and removed by emitting corresponding click signals. - -tactool fixtures start a running QApplication for the context of the test. -""" import pytest from PyQt5.QtWidgets import QGraphicsRectItem diff --git a/test/test_model.py b/test/test_model.py index 7b490dc..aba0136 100644 --- a/test/test_model.py +++ b/test/test_model.py @@ -1,8 +1,3 @@ -""" -Tests for classes and functions within model.py - -qapp fixture starts a running QApplication for the context of the test. -""" import pytest from tactool.analysis_point import AnalysisPoint diff --git a/test/test_transformation.py b/test/test_transformation.py index f511d43..5fa7d53 100644 --- a/test/test_transformation.py +++ b/test/test_transformation.py @@ -1,6 +1,3 @@ -""" -Tests for functions in the transformation module -""" import numpy as np from typing import Any From 8313576c1545f64d315ada0d303dda7c43ba6c75 Mon Sep 17 00:00:00 2001 From: leorud Date: Fri, 26 Jan 2024 14:56:28 +0000 Subject: [PATCH 095/105] Do not clear existing reference points if user cancels recoordination process --- tactool/window.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/tactool/window.py b/tactool/window.py index e66cec1..6b404a1 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -874,12 +874,14 @@ def toggle_recoordinate_dialog(self) -> None: recoordinated_point_dicts = self.recoordinate_dialog.recoordinated_point_dicts self.recoordinate_dialog = None - # Clear the current points - self.clear_analysis_points() - # Add the recoordinated points as new Analysis Points to the canvas - for point_dict in recoordinated_point_dicts: - # We use the window inputs to fill the Analysis Point empty settings - self.add_analysis_point(**point_dict, use_window_inputs=True) + # If the user confirmed the recoordination process + if len(recoordinated_point_dicts) > 0: + # Clear the current points + self.clear_analysis_points() + # Add the recoordinated points as new Analysis Points to the canvas + for point_dict in recoordinated_point_dicts: + # We use the window inputs to fill the Analysis Point empty settings + self.add_analysis_point(**point_dict, use_window_inputs=True) # Enable main window widgets self.toggle_main_input_widgets(True) From e28d2fb7a183817e3a2088f6032b38f8353ffc22 Mon Sep 17 00:00:00 2001 From: leorud Date: Fri, 26 Jan 2024 16:49:56 +0000 Subject: [PATCH 096/105] Remove unused methods --- tactool/table_model.py | 21 +++++++-------------- tactool/window.py | 1 - 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/tactool/table_model.py b/tactool/table_model.py index d844b5d..447719f 100644 --- a/tactool/table_model.py +++ b/tactool/table_model.py @@ -1,4 +1,3 @@ -from textwrap import dedent from typing import ( Any, Optional, @@ -10,7 +9,10 @@ QModelIndex, Qt, ) -from PyQt5.QtWidgets import QGraphicsEllipseItem +from PyQt5.QtWidgets import ( + QGraphicsEllipseItem, + QMessageBox, +) from tactool.analysis_point import AnalysisPoint from tactool.utils import LoggerMixin @@ -20,8 +22,6 @@ class TableModel(QAbstractTableModel, LoggerMixin): """ PyQt QAbstractTableModel for storing AnalysisPoints. """ - # Tracks if a new edited input in the PyQt Table Model is invalid - invalid_label_entry = pyqtSignal(str, str, str) # Tracks if a new edited input in the PyQt Table Model is accepted updated_analysis_points = pyqtSignal(QModelIndex) @@ -73,7 +73,6 @@ def data(self, index: QModelIndex, role: int) -> Optional[str]: It is called when displaying values in the cells, also called when editing (doubleclick). Internal method for PyQt. """ - if role == Qt.DisplayRole or role == Qt.EditRole: row = index.row() col = index.column() @@ -103,16 +102,10 @@ def setData(self, index: QModelIndex, value: str, role: Qt.ItemDataRole = Qt.Edi value = "RefMark" # If the new label is not one of the required label values else: - # Create a message informing the user that their input value is invalid - message = dedent(f""" - '{value}' is not a valid label. - - Please use either 'Spot' or 'RefMark'. - """) - self.invalid_label_entry.emit( + QMessageBox.warning( + None, "Invalid Label", - message, - "warning", + f"'{value}' is not a valid label.\n\nPlease use either 'Spot' or 'RefMark'.", ) return False diff --git a/tactool/window.py b/tactool/window.py index 6b404a1..38ea60a 100644 --- a/tactool/window.py +++ b/tactool/window.py @@ -71,7 +71,6 @@ def __init__(self, testing_mode: bool) -> None: self.table_view = TableView(self.table_model) self.set_scale_dialog: Optional[SetScaleDialog] = None self.recoordinate_dialog: Optional[RecoordinateDialog] = None - self.current_message: Optional[QMessageBox] = None self.setup_ui_elements() self.connect_signals_and_slots() self.status_bar_messages = self.create_status_bar_messages() From a87f85a83e7c10f1e7abf2d3247eb71b5263e3d9 Mon Sep 17 00:00:00 2001 From: leorud Date: Fri, 26 Jan 2024 16:50:25 +0000 Subject: [PATCH 097/105] Update instructions to reflect new recoordination process --- instructions.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/instructions.md b/instructions.md index 36c4f5b..85af16c 100644 --- a/instructions.md +++ b/instructions.md @@ -164,14 +164,17 @@ By default, the exported file will be a `CSV` file. However, you can add your ow _Note: Upon export, the `sample_name` and `id` columns will be concatenated into a single column labeled `Name`, using the character pattern `_#` to join them._ -### Recoordinate SEM CSV +### Import and Recoordinate SEM CSV -_Recoordinate a given SEM CSV file, using the current reference points in TACtool._ +_Import and recoordinate a given SEM CSV file, using the current reference points in TACtool._ - Ensure you currently have 3 analysis points with the label `RefMark` placed in TACtool. -- Press the `Recoordinate SEM CSV` button. +- Press the `Import and Recoordinate SEM CSV` button. - Select an input `CSV` file by clicking on the `Select Input CSV` button and then use the file picker. -- Select an output `CSV` file by clicking on the `Select Output CSV` button and then use the file picker. -- Press the `Recoordinate and Export` button. +- Press the `Import and Recoordinate` button. +- The SEM points from the given CSV file will then be imported as Analysis Points and recoordinated based on the initially placed reference points. -_Note: If there are more than `3` analysis points with the label `RefMark` in TACtool, the recoordination process will only use the first `3` reference points from the Analysis Points Table Data._ \ No newline at end of file +_Notes:_ +- _Imported SEM points will retain their existing `Particle ID` values, as they will be used to assign the Analysis Point `id` values._ +- _When the SEM points are imported using this method, they will adopt any of the current Analysis Point settings applied in the TACtool window._ +- _If there are more than `3` analysis points with the label `RefMark` in TACtool, the recoordination process will only use the first `3` reference points from the Analysis Points Table Data._ From 61c6ff8d54eb1b326d66da161400ec48e097410f Mon Sep 17 00:00:00 2001 From: leorud Date: Fri, 26 Jan 2024 16:53:33 +0000 Subject: [PATCH 098/105] Update class relationship diagram fully --- README.md | 71 ++++++++++++++++++++++--------------------------------- 1 file changed, 28 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index e96de78..27892e7 100644 --- a/README.md +++ b/README.md @@ -103,14 +103,15 @@ pre-loaded into the GraphicsView. +table_view: TableView +set_scale_dialog: Optional[SetScaleDialog] +recoordinate_dialog: Optional[RecoordinateDialog] - +current_message: Optional[QMessageBox] +menu_bar: QMenuBar +menu_bar_file: QMenu - +menu_bar_file_import_image: QAction - +menu_bar_file_export_image: QAction - +menu_bar_file_import_tactool_csv: QAction - +menu_bar_file_export_tactool_csv: QAction - +menu_bar_recoordinate_csv: QAction + +import_image_button: QAction + +export_image_button: QAction + +import_tactool_csv_button: QAction + +export_tactool_csv_button: QAction + +recoordinate_sem_csv_button: QAction + +menu_bar_tools: QMenu + +ghost_point_button: QAction +status_bar: QStatusBar +sample_name_input: QLineEdit +mount_name_input: QLineEdit @@ -138,20 +139,21 @@ pre-loaded into the GraphicsView. +load_tactool_csv_data(filepath) +export_tactool_csv_get_path() +validate_current_data(validate_image) - +add_analysis_point(x, y, label, diameter, scale, colour, notes, apid, sample_name, mount_name, material, from_click) + +add_analysis_point(x, y, apid, label, diameter, scale, colour, sample_name, mount_name, material, notes, use_windows_inputs, ghost) + +add_ghost_point(x, y) + +remove_analysis_point(x, y, apid) +reload_analysis_points(index, transform) +clear_analysis_points() - +remove_analysis_point(x, y, apid) - +set_point_colour() + +get_point_colour() + +set_point_colour(colour) +get_point_settings(analysis_point, clicked_column_index) +reset_settings() - +update_point_settings(sample_name, mount_name, material, label, diameter, scale, colour) + +update_point_settings(label, diameter, scale, colour, sample_name, mount_name, material) +toggle_main_input_widgets(enable) +set_scale(scale) +toggle_scaling_mode() +toggle_recoordinate_dialog() - +data_error_message(error) - +show_message(title, message, type) + +qmessagebox_error(error) +closeEvent(event) } @@ -186,7 +188,6 @@ pre-loaded into the GraphicsView. +remove_point(target_id) +get_point_by_ellipse(target_ellipse) +get_point_by_apid(target_id) - signal: invalid_label_entry(title, message, type) signal: updated_analysis_point(index) } @@ -212,22 +213,6 @@ pre-loaded into the GraphicsView. +aslist() } - class analysis_point{ - Functions for AnalysisPoint processing - --- - - +parse_tactool_csv(filepath, default_settings) - +parse_row_data(item, fields) - +export_tactool_csv(filepath, headers, analysis_points) - +convert_export_headers(headers) - +convert_export_point(analysis_point, headers) - +parse_sem_csv(filepath, required_headers) - +export_sem_csv(filepath, headers, points) - +reset_id(analysis_point) - +affine_transform_matrix(source, dest) - +affine_transform_point(matrix, point) - } - class GraphicsView{ QGraphicsView Manage user interaction and visual display of GraphicsScene @@ -253,21 +238,24 @@ pre-loaded into the GraphicsView. +show_entire_image() +toggle_scaling_mode() +reset_scaling_elements() + +remove_ghost_point() +signal: left_click(x, y) +signal: right_click(x, y) +signal: scale_move_event(pixel_distance) + +signal: move_ghost_point(x, y) } class GraphicsScene{ QGraphicsScene Manage items painted on image --- - +scaling_rect: QGraphicsRectItem +scaling_group: QGraphicsItemGroup +scaling_line: QGraphicsLineItem + +transparent_window: QGraphicsRectItem - +add_analysis_point(apid, x, y, label, diameter, scale, colour, notes, sample_name, mount_name, material) - +remove_analysis_point(x, y, apid) + +add_analysis_point(x, y, apid, label, diameter, colour, scale, ghost) + +remove_analysis_point(ap) + +move_analysis_point(ap, x_change, y_change) +get_ellipse_at(x, y) +toggle_transparent_window(graphics_view_image) +draw_scale_line(start_point, end_point) @@ -307,21 +295,18 @@ pre-loaded into the GraphicsView. +testing_mode: bool +ref_points: list[AnalysisPoint] +image_size: QSize + +recoordinated_point_dicts: list[dict[str, str | int | float]] +input_csv_button: QPushButton +input_csv_filepath_label: QLineEdit - +output_csv_button: QPushButton - +output_csv_filepath_label: QLineEdit +recoordinate_button: QPushButton +cancel_button: QPushButton +setup_ui_elements() +connect_signals_and_slots() +get_input_csv() - +get_output_csv() - +recoordinate_and_export() - +recoordinate_sem_points(input_csv, output_csv, invert_x_axis_dest, x_header, y_header, ref_col, ref_label) + +import_and_recoordinate_sem_csv() + +recoordinate_sem_points(point_dicts) +closeEvent(event) - signal: show_message(title, message, type) signal: closed_recoordinate_dialog() } @@ -332,18 +317,18 @@ pre-loaded into the GraphicsView. Window *-- RecoordinateDialog TableView *-- TableModel TableModel *-- AnalysisPoint - AnalysisPoint *-- analysis_point GraphicsView *-- GraphicsScene Window <.. TableView : selected_analysis_point(analysis_point, column) + Window <.. TableModel : updated_analysis_point(index) + Window <.. GraphicsView : left_click(x, y) + Window <.. GraphicsView : right_click(x, y) + Window <.. GraphicsView : scale_move_event(pixel_distance) + Window <.. GraphicsView : move_ghost_point(x, y) Window <.. SetScaleDialog : clear_scale_clicked() Window <.. SetScaleDialog : set_scale_clicked(scale) Window <.. SetScaleDialog : closed_set_scale_dialog() - Window <.. RecoordinateDialog : show_message(title, message, type) Window <.. RecoordinateDialog : closed_recoordinate_dialog() - Window <.. GraphicsView : left_click(x, y) - Window <.. GraphicsView : right_click(x, y) - Window <.. GraphicsView : scale_move_event(pixel_distance) From 22f8efd1867d470e5fb4e30bfc167202651cd3ed Mon Sep 17 00:00:00 2001 From: leorud Date: Fri, 26 Jan 2024 17:05:08 +0000 Subject: [PATCH 099/105] Use mermaid code in README rather than image file --- README.md | 10 ++-------- class_relationship_diagram.png | Bin 322301 -> 0 bytes 2 files changed, 2 insertions(+), 8 deletions(-) delete mode 100644 class_relationship_diagram.png diff --git a/README.md b/README.md index 27892e7..b6aff85 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,6 @@ TACTool was initially developed within the British Geological Survey by: The original idea was by Connor Newstead and Matt Horstwood. - ## Development ### Installation @@ -66,9 +65,7 @@ pre-loaded into the GraphicsView. ### Class Relationship Diagram -

- Mermaid JS Code - +```mermaid classDiagram direction LR @@ -329,10 +326,7 @@ pre-loaded into the GraphicsView. Window <.. SetScaleDialog : set_scale_clicked(scale) Window <.. SetScaleDialog : closed_set_scale_dialog() Window <.. RecoordinateDialog : closed_recoordinate_dialog() - -
- -![TACtool - Class Relationship Diagram](class_relationship_diagram.png) +``` ### Testing diff --git a/class_relationship_diagram.png b/class_relationship_diagram.png deleted file mode 100644 index 7f09fc3ece3055b380308e5b156c7d746f3a9302..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 322301 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 Date: Fri, 26 Jan 2024 17:09:29 +0000 Subject: [PATCH 100/105] Add local directory to gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index ae9a085..e52ac1d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ __pycache__ build dist -.pytest_cache \ No newline at end of file +.pytest_cache +_LOCAL_LEO \ No newline at end of file From 1ef36b5ccfebe5c6fe0a66083292f2a71fe3d846 Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 7 Feb 2024 09:47:10 +0000 Subject: [PATCH 101/105] Add note to instructions on inverted x axis --- instructions.md | 1 + 1 file changed, 1 insertion(+) diff --git a/instructions.md b/instructions.md index 85af16c..5fa1b86 100644 --- a/instructions.md +++ b/instructions.md @@ -176,5 +176,6 @@ _Import and recoordinate a given SEM CSV file, using the current reference point _Notes:_ - _Imported SEM points will retain their existing `Particle ID` values, as they will be used to assign the Analysis Point `id` values._ +- _When SEM points are imported from a CSV file, it is assumed that the origin for their coordinates will be **top right**, but the origin in TACtool is **top left**. To account for this, `SEM` coordinates automatically have their `x` axis inverted according to the currently loaded image, thus making their effective origin **top left**. - _When the SEM points are imported using this method, they will adopt any of the current Analysis Point settings applied in the TACtool window._ - _If there are more than `3` analysis points with the label `RefMark` in TACtool, the recoordination process will only use the first `3` reference points from the Analysis Points Table Data._ From 7725e41b26918d23453d29075899b8053d1e88d9 Mon Sep 17 00:00:00 2001 From: leorud Date: Wed, 7 Feb 2024 09:49:17 +0000 Subject: [PATCH 102/105] Fix typos --- instructions.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/instructions.md b/instructions.md index 5fa1b86..1d217b7 100644 --- a/instructions.md +++ b/instructions.md @@ -50,7 +50,7 @@ The following fields can be modified after placing an analysis point. To modify ## Analysis Point Metadata and Settings -When creating a new analysis point, any current metadata field values and analysis point settings will be applied to that new analysis point. Therefore analysis point metadata fields and settings should be selected before an analysis point is created. +When creating a new analysis point, any current metadata field values and analysis point settings will be applied to that new analysis point. Therefore, analysis point metadata fields and settings should be selected before an analysis point is created. ### Metadata Fields @@ -131,7 +131,7 @@ To access file functionality, press the `File` button in the toolbar, located at _Import an image into the application._ - Press the `Import Image` button. -- Select a image file using the file picker. +- Select an image file using the file picker. ### Export Image @@ -162,7 +162,7 @@ _Export the current analysis point data to a TACtool CSV file._ By default, the exported file will be a `CSV` file. However, you can add your own file extension to the filename if you wish to create a different file type, though this is not recommended. -_Note: Upon export, the `sample_name` and `id` columns will be concatenated into a single column labeled `Name`, using the character pattern `_#` to join them._ +_Note: Upon export, the `sample_name` and `id` columns will be concatenated into a single column labelled `Name`, using the character pattern `_#` to join them._ ### Import and Recoordinate SEM CSV @@ -176,6 +176,6 @@ _Import and recoordinate a given SEM CSV file, using the current reference point _Notes:_ - _Imported SEM points will retain their existing `Particle ID` values, as they will be used to assign the Analysis Point `id` values._ -- _When SEM points are imported from a CSV file, it is assumed that the origin for their coordinates will be **top right**, but the origin in TACtool is **top left**. To account for this, `SEM` coordinates automatically have their `x` axis inverted according to the currently loaded image, thus making their effective origin **top left**. +- _When SEM points are imported from a CSV file, it is assumed that the origin for their coordinates will be **top right**, but the origin in TACtool is **top left**. To account for this, `SEM` coordinates automatically have their `x` axis inverted according to the currently loaded image, thus making their effective origin **top left**._ - _When the SEM points are imported using this method, they will adopt any of the current Analysis Point settings applied in the TACtool window._ - _If there are more than `3` analysis points with the label `RefMark` in TACtool, the recoordination process will only use the first `3` reference points from the Analysis Points Table Data._ From 16fe57995ee6971bf0e996b6aa7e19917ad1c4fa Mon Sep 17 00:00:00 2001 From: leorud Date: Tue, 13 Feb 2024 13:29:16 +0000 Subject: [PATCH 103/105] Update environment to reduce compiled exe file size --- .gitignore | 3 +- README.md | 2 + environments/macos-environment.yml | 74 +++++++++++---------- environments/unversioned-environment.yml | Bin 0 -> 938 bytes environments/windows-environment.yml | 78 +++++++++++++---------- 5 files changed, 90 insertions(+), 67 deletions(-) create mode 100644 environments/unversioned-environment.yml diff --git a/.gitignore b/.gitignore index e52ac1d..cf299cb 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ __pycache__ build dist .pytest_cache -_LOCAL_LEO \ No newline at end of file +_LOCAL_LEO +*.spec diff --git a/README.md b/README.md index b6aff85..dc8b31f 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,8 @@ conda env create -f environments/macos-environment.yml conda activate tactool-macos ``` +_Note: Both environments have been generated using `environments/unversioned-environment.yml`._ + ### Running the Program To run the program, first you need to setup your Python path. diff --git a/environments/macos-environment.yml b/environments/macos-environment.yml index 7b8bf2f..85e9f70 100644 --- a/environments/macos-environment.yml +++ b/environments/macos-environment.yml @@ -1,46 +1,52 @@ name: tactool-macos channels: + - conda-forge - defaults dependencies: - - blas=1.0=mkl + - blas=2.121=openblas + - blas-devel=3.9.0=21_osx64_openblas - bzip2=1.0.8=h1de35cc_0 - - ca-certificates=2023.05.30=hecd8cb5_0 - - intel-openmp=2023.1.0=ha357a0b_43547 - - libcxx=14.0.6=h9765a3e_0 + - ca-certificates=2023.12.12=hecd8cb5_0 + - libblas=3.9.0=21_osx64_openblas + - libcblas=3.9.0=21_osx64_openblas + - libcxx=16.0.6=hd57cbcb_0 + - libexpat=2.5.0=hf0c8a7f_1 - libffi=3.4.4=hecd8cb5_0 - - mkl=2023.1.0=h59209a4_43558 - - mkl-service=2.4.0=py311h6c40b1e_1 - - mkl_fft=1.3.6=py311hdb55bb0_1 - - mkl_random=1.2.2=py311hdb55bb0_1 + - libgfortran=5.0.0=13_2_0_h97931a8_3 + - libgfortran5=13.2.0=h2873a65_3 + - liblapack=3.9.0=21_osx64_openblas + - liblapacke=3.9.0=21_osx64_openblas + - libopenblas=0.3.26=openmp_hfef2a42_0 + - libsqlite=3.45.1=h92b6c6a_0 + - libzlib=1.2.13=h8a1eda9_5 + - llvm-openmp=17.0.6=hb6ac08f_0 - ncurses=6.4=hcec6c5f_0 - - numpy=1.25.0=py311h728a8a3_0 - - numpy-base=1.25.0=py311h53bf9ac_0 - - openssl=3.0.9=hca72f7f_0 - - pip=23.1.2=py311hecd8cb5_0 - - python=3.11.4=hf27a42d_0 + - numpy=1.26.4=py312he3a82b2_0 + - openblas=0.3.26=openmp_h6794695_0 + - openssl=3.2.1=hd75f5a5_0 + - pip=24.0=pyhd8ed1ab_0 + - python=3.12.1=h9f0c242_1_cpython + - python_abi=3.12=4_cp312 - readline=8.2=hca72f7f_0 - - setuptools=67.8.0=py311hecd8cb5_0 - - sqlite=3.41.2=h6c40b1e_0 - - tbb=2021.8.0=ha357a0b_0 - - tk=8.6.12=h5d9f67b_0 - - tzdata=2023c=h04d1e81_0 - - wheel=0.38.4=py311hecd8cb5_0 - - xz=5.4.2=h6c40b1e_0 - - zlib=1.2.13=h4dc903c_0 + - setuptools=69.0.3=pyhd8ed1ab_0 + - tk=8.6.13=h1abcd95_1 + - tzdata=2023d=h04d1e81_0 + - wheel=0.42.0=pyhd8ed1ab_0 + - xz=5.4.5=h6c40b1e_0 - pip: - - altgraph==0.17.3 - - flake8==6.0.0 + - altgraph==0.17.4 + - flake8==7.0.0 - iniconfig==2.0.0 - - macholib==1.16.2 + - macholib==1.16.3 - mccabe==0.7.0 - - packaging==23.1 - - pluggy==1.2.0 - - pycodestyle==2.10.0 - - pyflakes==3.0.1 - - pyinstaller==5.13.0 - - pyinstaller-hooks-contrib==2023.6 - - pyqt5==5.15.9 - - pyqt5-qt5==5.15.2 - - pyqt5-sip==12.12.2 - - pytest==7.4.0 + - packaging==23.2 + - pluggy==1.4.0 + - pycodestyle==2.11.1 + - pyflakes==3.2.0 + - pyinstaller==6.4.0 + - pyinstaller-hooks-contrib==2024.1 + - pyqt5==5.15.10 + - pyqt5-qt5==5.15.12 + - pyqt5-sip==12.13.0 + - pytest==8.0.0 prefix: /usr/local/miniconda/envs/tactool-macos diff --git a/environments/unversioned-environment.yml b/environments/unversioned-environment.yml new file mode 100644 index 0000000000000000000000000000000000000000..869175d61e6e355ba8c5473a99ad10a35f0f071e GIT binary patch literal 938 zcmZvb%TB{E5JhK=#6Lvp+5`|#K;kP{A{K2PO+?$YO#+mU2hO!glZI*($DX-!=i%|s zcVdOjY>i~LwAvo++|DdQ9A9D;mK21uoc+!g;D(5lbB?{myTM;J={9`w)S6hyf5<(7 z``Ke;%WcoPhC70z02|pH#uCnyeTXdGl1Q~jRjfOZDY(RYDAyI7@{&Gc{q&anPZ!}^ z+LzbOJyXD`#y+y5Es@GTK!>bSb~SNYR&mH+?dA!~&D;Zkl7V>pu5jq-jP&JD0K0>V{5vYgT5=PDT%8{{ Date: Tue, 13 Feb 2024 13:40:59 +0000 Subject: [PATCH 104/105] Run test workflow on environment changes --- .github/workflows/test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1ef2f8a..2118af4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -4,6 +4,8 @@ on: push: paths: - '**.py' + - 'environments/*.yml' + - '.github/workflows/test.yml' jobs: test: From 17b2a7f1ef7453205865f83beb63925e96e0ef66 Mon Sep 17 00:00:00 2001 From: leorud Date: Tue, 13 Feb 2024 13:58:40 +0000 Subject: [PATCH 105/105] Specify python=3.11 --- environments/macos-environment.yml | 10 +++++----- environments/unversioned-environment.yml | Bin 938 -> 972 bytes environments/windows-environment.yml | 10 +++++----- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/environments/macos-environment.yml b/environments/macos-environment.yml index 85e9f70..9a6d6a6 100644 --- a/environments/macos-environment.yml +++ b/environments/macos-environment.yml @@ -21,17 +21,17 @@ dependencies: - libzlib=1.2.13=h8a1eda9_5 - llvm-openmp=17.0.6=hb6ac08f_0 - ncurses=6.4=hcec6c5f_0 - - numpy=1.26.4=py312he3a82b2_0 + - numpy=1.26.4=py311hc43a94b_0 - openblas=0.3.26=openmp_h6794695_0 - openssl=3.2.1=hd75f5a5_0 - pip=24.0=pyhd8ed1ab_0 - - python=3.12.1=h9f0c242_1_cpython - - python_abi=3.12=4_cp312 + - python=3.11.7=h9f0c242_1_cpython + - python_abi=3.11=4_cp311 - readline=8.2=hca72f7f_0 - - setuptools=69.0.3=pyhd8ed1ab_0 + - setuptools=68.2.2=py311hecd8cb5_0 - tk=8.6.13=h1abcd95_1 - tzdata=2023d=h04d1e81_0 - - wheel=0.42.0=pyhd8ed1ab_0 + - wheel=0.41.2=py311hecd8cb5_0 - xz=5.4.5=h6c40b1e_0 - pip: - altgraph==0.17.4 diff --git a/environments/unversioned-environment.yml b/environments/unversioned-environment.yml index 869175d61e6e355ba8c5473a99ad10a35f0f071e..7cfe2de4669f0b82784bc036a9744b46ef332987 100644 GIT binary patch delta 33 pcmZ3*eujO+E+)|ehDwGKh75*$hCBva24e<2215qJ$!nSZ0sx+M2

GXOj=ogggZ@bXu2D%Cq4I4#gKKJzOiq_b;*$ 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