From 462fe9afd7967ffdacbb06f6ab81ea7d8cc420a6 Mon Sep 17 00:00:00 2001 From: Filippo <52816133+filimarc@users.noreply.github.com> Date: Tue, 7 Jan 2025 09:05:58 +0100 Subject: [PATCH 1/2] docs: New documentation (#858) * Renew placement documentation * Renew Connectivity docs * Renew region and partition doc * Fix deprecated setup-python@v1 * Remove outdated strategies * docs: Update connectivity documentation * docs: Improve english * docs: fix doc refs and initialisms * docs: update placement documentation * docs: add note for packing error * docs: update cell types documentation * docs: small updates to partition * docs: Add getting started for Simulations * docs: Update Simulation intro page * docs: update simulation * docs: update nest simulation page * docs: fix nest simulation docs * docs: fix configuration usage in gs | remove refs to bsb-plotting * docs: reshape welcome page and toctrees * docs: fix refs in regions doc * fix: bsb commands related to config creation from template. * fix: bsb simulate command output option. Now is used to specify the output folder. * docs: update analyze page in gs * docs: add json recap for simulation gs * docs: update top-level guide * docs: improve wording in installation and top level guide. * docs: improve getting-started_reconstruction.rst. Make sure the getting-started files match the default json config. Rewrote top level guide Improve installation section and dev sections * docs: Refactor documentations Remove guides Add toc for every documentation section Rewrite getting-started add morphologies and move configurations to subfolder Separate bsb core classes (Configuration, Scaffold and Storage) from components * docs: update README * docs: update GS config templates and line refs * docs: Fix installations tabs. fix configurations for simulations * docs: add targetting doc in simulation page * docs: fix targetting section * docs: remove neuromorfo uri scheme ref in gs * docs: Rewrite simulation. Update workflow figure. * docs: update placement set * docs: add connectivity-set page * docs: Merge examples for accessing storage data. Move tutorials python script in examples/tutorials Fix label_cells and repeated_simulations Minor fixes in interfaces documentation * docs: Rewrite analyse_spike_results, reorganize configuration section. * docs: Add example to display morphologies, rewrite project tutorial * docs: update tutorials * docs: Minor fixes to tutorial on python projects section * docs: Add documentation to ConnectionStrategy Add connect_cells function to Scaffold to mirror place_cells used in Placement. * docs: Add tutorial on writing components separated from components.rst * docs: First draft of the tutorial for writing placement strategy Added utility classes to indicator.py partition.py and _distributions.py * docs: Fix tutorial placement strategy Added utility classes to _distributions.py * docs: Fix some typos and config for nest simulation tutorial. * docs: separate neuron and nest tutorials. merge python projects in getting started and move the rest to dev. * docs: simplify the placement class for the tutorial * docs: add missing nest config * docs: add tutorial-template files for NEURON sim | update gs * docs: Update neuron simulation guide * docs: Add section for analyze neuron results | update neuron parts of gs * docs: WIP on guide for neuron simulation move images in the images folder. The morphology and python stellate model should be removed from the repo when they will be available on the dbbs models public repo. * docs: fix naming in neuron gs * docs: fix ref number in neuron gs * docs: add section for simulation results * docs: fix guide neurons json indent and lines * docs: Add explanation on distribution placement. fix and comment distrib_placement.py * docs: Rework guides for simulations Make analysis more uniform * docs: simplify writing components tutorial by splitting connection and placement * docs: Add FAQ for BSB-MUSIC related issue May be sufficient for dbbs-lab/bsb-nest#13 * docs: fix strategy in yaml gs * docs: Add figures and rewrite scaffold page. * docs: Improve documentation on parallelization + minor fixes * test: add tests for bsb new split copy_configuration_template into two functions. * fix: add bsb-json dependencies for bsb project tests --------- Co-authored-by: filimarc Co-authored-by: drodarie --- .gitignore | 1 + README.md | 4 +- bsb/cli/commands/_commands.py | 17 +- bsb/cli/commands/_projects.py | 2 +- bsb/config/__init__.py | 23 +- bsb/config/_distributions.py | 30 + .../detailed/voxel_intersection.py | 5 + bsb/connectivity/strategy.py | 44 +- bsb/core.py | 20 +- bsb/mixins.py | 8 +- bsb/morphologies/__init__.py | 6 +- bsb/morphologies/selector.py | 2 +- bsb/placement/indicator.py | 4 + bsb/storage/interfaces.py | 23 +- bsb/topology/partition.py | 14 +- docs/bsb/modules.rst | 2 + docs/cells/intro.rst | 202 +- docs/cli/cli-toc.rst | 5 +- docs/cli/commands.rst | 4 +- docs/cli/intro.rst | 8 +- docs/components/components-toc.rst | 16 + docs/{guides => components}/components.rst | 71 +- docs/conf.py | 4 +- docs/config/_empty_root_nodes.rst | 3 + docs/config/configuration-toc.rst | 6 +- docs/config/files.rst | 6 +- docs/config/nodes.rst | 412 +-- docs/config/parsers/json.rst | 2 +- docs/config/reference.rst | 12 +- docs/config/types.rst | 320 +- docs/connectivity/component.rst | 2 - docs/connectivity/connection-strategies.rst | 119 +- docs/connectivity/connectivity-set.rst | 63 + docs/connectivity/connectivity-toc.rst | 4 + docs/connectivity/defining.rst | 172 +- docs/core/core-toc.rst | 11 + docs/core/job-distribution.rst | 71 + docs/core/scaffold.rst | 64 + docs/core/storage.rst | 18 + docs/dev/dev-toc.rst | 15 + docs/dev/documentation.rst | 19 +- docs/dev/faq.rst | 44 + docs/dev/guidelines.rst | 13 +- docs/dev/installation.rst | 10 +- docs/dev/plugins.rst | 4 +- docs/dev/projects.rst | 66 + docs/examples/atlas/atlas_placement.rst | 2 +- docs/examples/label_cells.rst | 55 + docs/examples/networks/create.rst | 24 - docs/examples/networks/data.rst | 35 - docs/examples/networks/load.rst | 8 - docs/examples/place_distribution.rst | 227 ++ docs/examples/plot_morpho.rst | 22 + docs/examples/toc.rst | 13 +- docs/getting-started/basics.rst | 91 +- .../{ => configs}/getting-started.json | 14 +- docs/getting-started/configs/guide-nest.json | 127 + docs/getting-started/configs/guide-nest.yaml | 95 + .../getting-started/configs/guide-neuron.json | 130 + .../{ => configs}/include_morphos.json | 23 +- .../{ => configs}/include_morphos.yaml | 13 +- docs/getting-started/data/StellateCell.swc | 3232 +++++++++++++++++ docs/getting-started/getting-started.rst | 216 -- .../getting-started_reconstruction.rst | 280 ++ docs/getting-started/getting_started.py | 34 - docs/getting-started/guide_components.rst | 256 ++ docs/getting-started/include_morphos.py | 51 - docs/getting-started/include_morphos.rst | 194 - docs/getting-started/installation.rst | 87 +- docs/getting-started/labels.rst | 70 - docs/getting-started/layer.rst | 144 - docs/getting-started/projects.rst | 110 - .../simulations/analyze_analog_signals.rst | 85 + .../simulations/analyze_spikes.rst | 87 + .../simulations/guide_nest.rst | 364 ++ .../simulations/guide_neuron.rst | 274 ++ .../simulations/include_morphos.rst | 222 ++ .../simulations/toc_multi_comp.rst | 10 + .../simulations/toc_point_neurons.rst | 9 + docs/getting-started/toc.rst | 10 +- docs/getting-started/top-level-guide.rst | 102 +- docs/guides/packaging.rst | 7 - docs/guides/toc.rst | 9 - docs/images/plot_alpha.png | Bin 0 -> 50482 bytes docs/images/raster_base_types.png | Bin 0 -> 50540 bytes docs/images/synapse_recorder_example.png | Bin 0 -> 21707 bytes docs/images/vrecorder_example.png | Bin 0 -> 23700 bytes docs/images/workflow.excalidraw | 611 ++-- docs/images/workflow.png | Bin 102853 -> 111155 bytes docs/images/workflow_dark.png | Bin 114053 -> 121804 bytes docs/index.rst | 109 +- docs/morphologies/intro.rst | 31 +- docs/morphologies/morphology-set.rst | 2 +- docs/morphologies/morphology-toc.rst | 3 + docs/placement/placement-indicators.rst | 4 +- docs/placement/placement-set.rst | 46 +- docs/placement/placement-toc.rst | 3 + docs/simulation/arbor.rst | 5 + docs/simulation/intro.rst | 212 ++ docs/simulation/nest.rst | 350 ++ docs/simulation/neuron.rst | 34 + docs/simulation/simulation-toc.rst | 8 +- docs/simulation/simulation.rst | 318 -- docs/topology/intro.rst | 12 +- docs/topology/partitions.rst | 13 +- docs/topology/topology-toc.rst | 3 + examples/cells/label_cells.py | 32 + examples/morphologies/usage.py | 4 +- examples/networks/access_config.py | 12 - examples/networks/access_placement.py | 12 - examples/networks/create_default.py | 5 - examples/networks/create_from_cfg.py | 18 - examples/networks/load.py | 4 - examples/networks/reconfiguring.py | 6 - .../plotting/plotting_with_branch_colors.py | 41 +- .../simulation/nest/repeated_simulations.py | 24 +- examples/tutorials/Stellate.py | 179 + examples/tutorials/analyze_analog_results.py | 44 + examples/tutorials/analyze_spike_results.py | 23 + examples/tutorials/dist_connection.py | 44 + examples/tutorials/distrib_placement.py | 89 + examples/tutorials/getting_started.py | 52 + examples/tutorials/include_morphos.py | 67 + examples/tutorials/load_data.py | 25 + examples/tutorials/nest-simulation.py | 48 + examples/tutorials/neuron-simulation.py | 113 + pyproject.toml | 1 + tests/test_projects.py | 65 +- 128 files changed, 9021 insertions(+), 2354 deletions(-) create mode 100644 docs/components/components-toc.rst rename docs/{guides => components}/components.rst (57%) create mode 100644 docs/connectivity/connectivity-set.rst create mode 100644 docs/core/core-toc.rst create mode 100644 docs/core/job-distribution.rst create mode 100644 docs/core/scaffold.rst create mode 100644 docs/core/storage.rst create mode 100644 docs/dev/dev-toc.rst create mode 100644 docs/dev/faq.rst create mode 100644 docs/dev/projects.rst create mode 100644 docs/examples/label_cells.rst delete mode 100644 docs/examples/networks/create.rst delete mode 100644 docs/examples/networks/data.rst delete mode 100644 docs/examples/networks/load.rst create mode 100644 docs/examples/place_distribution.rst create mode 100644 docs/examples/plot_morpho.rst rename docs/getting-started/{ => configs}/getting-started.json (88%) create mode 100644 docs/getting-started/configs/guide-nest.json create mode 100644 docs/getting-started/configs/guide-nest.yaml create mode 100644 docs/getting-started/configs/guide-neuron.json rename docs/getting-started/{ => configs}/include_morphos.json (80%) rename docs/getting-started/{ => configs}/include_morphos.yaml (90%) create mode 100644 docs/getting-started/data/StellateCell.swc delete mode 100644 docs/getting-started/getting-started.rst create mode 100644 docs/getting-started/getting-started_reconstruction.rst delete mode 100644 docs/getting-started/getting_started.py create mode 100644 docs/getting-started/guide_components.rst delete mode 100644 docs/getting-started/include_morphos.py delete mode 100644 docs/getting-started/include_morphos.rst delete mode 100644 docs/getting-started/labels.rst delete mode 100644 docs/getting-started/layer.rst delete mode 100644 docs/getting-started/projects.rst create mode 100644 docs/getting-started/simulations/analyze_analog_signals.rst create mode 100644 docs/getting-started/simulations/analyze_spikes.rst create mode 100644 docs/getting-started/simulations/guide_nest.rst create mode 100644 docs/getting-started/simulations/guide_neuron.rst create mode 100644 docs/getting-started/simulations/include_morphos.rst create mode 100644 docs/getting-started/simulations/toc_multi_comp.rst create mode 100644 docs/getting-started/simulations/toc_point_neurons.rst delete mode 100644 docs/guides/packaging.rst delete mode 100644 docs/guides/toc.rst create mode 100644 docs/images/plot_alpha.png create mode 100644 docs/images/raster_base_types.png create mode 100644 docs/images/synapse_recorder_example.png create mode 100644 docs/images/vrecorder_example.png create mode 100644 docs/simulation/arbor.rst create mode 100644 docs/simulation/intro.rst create mode 100644 docs/simulation/nest.rst create mode 100644 docs/simulation/neuron.rst delete mode 100644 docs/simulation/simulation.rst create mode 100644 examples/cells/label_cells.py delete mode 100644 examples/networks/access_config.py delete mode 100644 examples/networks/access_placement.py delete mode 100644 examples/networks/create_default.py delete mode 100644 examples/networks/create_from_cfg.py delete mode 100644 examples/networks/load.py delete mode 100644 examples/networks/reconfiguring.py create mode 100644 examples/tutorials/Stellate.py create mode 100644 examples/tutorials/analyze_analog_results.py create mode 100644 examples/tutorials/analyze_spike_results.py create mode 100644 examples/tutorials/dist_connection.py create mode 100644 examples/tutorials/distrib_placement.py create mode 100644 examples/tutorials/getting_started.py create mode 100644 examples/tutorials/include_morphos.py create mode 100644 examples/tutorials/load_data.py create mode 100644 examples/tutorials/nest-simulation.py create mode 100644 examples/tutorials/neuron-simulation.py diff --git a/.gitignore b/.gitignore index f65a9eb24..8bbbac269 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,7 @@ htmlcov/ *.io .vscode/ .idea/ +.vs/ bsb-*/ diff --git a/README.md b/README.md index 0ba7a0ed2..5369f0a2f 100644 --- a/README.md +++ b/README.md @@ -25,14 +25,14 @@ Any package in the BSB ecosystem can be installed from PyPI through `pip`. Most will want to install the main [bsb](https://pypi.org/project/bsb/) framework: ``` -pip install "bsb~=4.1" +pip install "bsb" ``` Advanced users looking to control install an unconventional combination of plugins might be better of installing just this package, and the desired plugins: ``` -pip install "bsb-core~=4.1" +pip install "bsb-core" ``` Note that installing `bsb-core` does not come with any plugins installed and the usually diff --git a/bsb/cli/commands/_commands.py b/bsb/cli/commands/_commands.py index 1696e501a..d60ea956b 100644 --- a/bsb/cli/commands/_commands.py +++ b/bsb/cli/commands/_commands.py @@ -3,6 +3,8 @@ """ import itertools +import os +import pathlib from uuid import uuid4 import errr @@ -12,6 +14,7 @@ from ...core import Scaffold, from_storage from ...exceptions import NodeNotFoundError from ...option import BsbOption +from ...reporting import report from ...storage import open_storage from . import BaseCommand @@ -115,10 +118,10 @@ def _flatten_arr_args(arr): class MakeConfigCommand(BaseCommand, name="make-config"): def handler(self, context): - from ...config import copy_template + from ...config import copy_configuration_template args = context.arguments - copy_template(args.template, args.output, path=args.path or ()) + copy_configuration_template(args.template, args.output, path=args.path or ()) def get_options(self): return {} @@ -204,6 +207,12 @@ def handler(self, context): for name, sim in extra_simulations.items(): if name not in network.simulations and name == sim_name: network.simulations[sim_name] = sim + root = pathlib.Path(getattr(context.arguments, "output_folder", "./")) + if not root.is_dir() or not os.access(root, os.W_OK): + return report( + f"Output provided '{root.absolute()}' is not an existing directory with write access.", + level=0, + ) try: result = network.run_simulation(sim_name) except NodeNotFoundError as e: @@ -211,7 +220,7 @@ def handler(self, context): append += ", ".join(f"'{name}'" for name in extra_simulations.keys()) errr.wrap(type(e), e, append=append) else: - result.write(getattr(context.arguments, "output", f"{uuid4()}.nio"), "ow") + result.write(root / f"{uuid4()}.nio", "ow") def get_options(self): return { @@ -222,7 +231,7 @@ def get_options(self): def add_parser_arguments(self, parser): parser.add_argument("network") parser.add_argument("simulation") - parser.add_argument("-o", "--output") + parser.add_argument("-o", "--output_folder") class CacheCommand(BaseCommand, name="cache"): # pragma: nocover diff --git a/bsb/cli/commands/_projects.py b/bsb/cli/commands/_projects.py index bcec867f0..1955d3f3e 100644 --- a/bsb/cli/commands/_projects.py +++ b/bsb/cli/commands/_projects.py @@ -51,7 +51,7 @@ def handler(self, context): input(f"Config filename [network_configuration.{ext}]: ") or f"network_configuration.{ext}" ) - config.copy_template(template, output=root / output) + config.copy_configuration_template(template, output=root / output) with open(root / "pyproject.toml", "w") as f: toml.dump( { diff --git a/bsb/config/__init__.py b/bsb/config/__init__.py index 7218aa5c0..5591c7eeb 100644 --- a/bsb/config/__init__.py +++ b/bsb/config/__init__.py @@ -76,7 +76,14 @@ def get_config_path(): return [*itertools.chain((os.getcwd(),), env_paths, *plugin_paths.values())] -def copy_configuration_template(template, output="network_configuration.json", path=None): +def get_configuration_template(template, path=None): + """ + Returns the configuration template files matching the provided name. + + :param str template: name of the configuration template + :param list path: list of paths to search for configuration templates + :rtype: List[str] + """ path = [ *map( os.path.abspath, @@ -90,7 +97,19 @@ def copy_configuration_template(template, output="network_configuration.json", p raise ConfigTemplateNotFoundError( "'%template%' not found in config path %path%", template, path ) - copy_file(files[0], output) + return files + + +def copy_configuration_template(template, output="network_configuration.json", path=None): + """ + Copy the first configuration template file matching the provided name to the provided + output filename. + + :param str template: name of the configuration template + :param str output: name of the output file + :param list path: list of paths to search for configuration templates + """ + copy_file(get_configuration_template(template, path)[0], output) def format_configuration_content(parser_name: str, config: "Configuration", **kwargs): diff --git a/bsb/config/_distributions.py b/bsb/config/_distributions.py index fa1454953..dffe1aa1b 100644 --- a/bsb/config/_distributions.py +++ b/bsb/config/_distributions.py @@ -27,7 +27,9 @@ class Distribution: distribution: str = config.attr( type=types.in_(_available_distributions), required=True ) + """Name of the scipy.stats distribution function""" parameters: dict[str, typing.Any] = config.catch_all(type=types.any_()) + """parameters to pass to the distribution""" def __init__(self, **kwargs): if self.distribution == "constant": @@ -42,8 +44,36 @@ def __init__(self, **kwargs): ) def draw(self, n): + """Draw n random samples from the distribution""" return self._distr.rvs(size=n) + def definition_interval(self, epsilon=0): + """ + Returns the `epsilon` and 1 - `epsilon` values of + the distribution Percent point function. + + :param float epsilon: ratio of the interval to ignore + """ + if epsilon < 0 or epsilon > 1: + raise ValueError("Epsilon must be between 0 and 1") + return self._distr.ppf(epsilon), self._distr.ppf(1 - epsilon) + + def cdf(self, value): + """ + Returns the result of the cumulative distribution function for `value` + + :param float value: value to evaluate + """ + return self._distr.cdf(value) + + def sf(self, value): + """ + Returns the result of the Survival function for `value` + + :param float value: value to evaluate + """ + return self._distr.sf(value) + def __getattr__(self, attr): if "_distr" not in self.__dict__: raise AttributeError("No underlying _distr found for distribution node.") diff --git a/bsb/connectivity/detailed/voxel_intersection.py b/bsb/connectivity/detailed/voxel_intersection.py index 2c1f8c2a2..6433d625d 100644 --- a/bsb/connectivity/detailed/voxel_intersection.py +++ b/bsb/connectivity/detailed/voxel_intersection.py @@ -17,6 +17,11 @@ class VoxelIntersection(Intersectional, ConnectionStrategy): """ This strategy finds overlap between voxelized morphologies. + + :param contacts: number or distribution determining the amount of synaptic contacts one cell will form on another + :param voxel_pre: the number of voxels into which the morphology will be subdivided. + :param voxel_post: the number of voxels into which the morphology will be subdivided. + :param favor_cache: choose whether to cache the pre or post morphology. """ contacts = config.attr(type=types.distribution(), default=1) diff --git a/bsb/connectivity/strategy.py b/bsb/connectivity/strategy.py index d4de5ccff..5dc7e588c 100644 --- a/bsb/connectivity/strategy.py +++ b/bsb/connectivity/strategy.py @@ -12,6 +12,7 @@ from ..mixins import HasDependencies from ..profiling import node_meter from ..reporting import warn +from ..storage._chunks import Chunk if typing.TYPE_CHECKING: from ..cell_types import CellType @@ -82,7 +83,12 @@ def _get_rect_ext(self, chunk_size): class HemitypeCollection: - def __init__(self, hemitype, roi): + """ + Class used to iterate over an ``Hemitype`` placement sets within a list of chunks, + and over its cell types. + """ + + def __init__(self, hemitype: Hemitype, roi: typing.List[Chunk]): self.hemitype = hemitype self.roi = roi @@ -91,6 +97,13 @@ def __iter__(self): @property def placement(self): + """ + List the placement sets for each cell type, filtered according to the class + morphology labels and list of chunks. + + + :rtype: List[bsb.storage.interfaces.PlacementSet] + """ return [ ct.get_placement_set( chunks=self.roi, @@ -151,6 +164,17 @@ def __repr__(self): @abc.abstractmethod def connect(self, presyn_collection, postsyn_collection): + """ + Central method of each connection strategy. Given a pair of + ``HemitypeCollection`` (one for each connection side), should connect + cell population using the scaffold's (available as ``self.scaffold``) + :func:`~bsb.core.Scaffold.connect_cells` method. + + :param bsb.connectivity.strategy.HemitypeCollection presyn_collection: + presynaptic filtered cell population. + :param bsb.connectivity.strategy.HemitypeCollection postsyn_collection: + postsynaptic filtered cell population. + """ pass def get_deps(self): @@ -162,6 +186,19 @@ def _get_connect_args_from_job(self, pre_roi, post_roi): return pre, post def connect_cells(self, pre_set, post_set, src_locs, dest_locs, tag=None): + """ + Connect cells from a presynaptic placement set to cells of a postsynaptic placement set, + and produce a unique name to describe their connectivity set. + The description of the hemitype (source or target cell population) `connection location` + is stored as a list of 3 ids: the cell index (in the placement set), morphology branch + index, and the morphology branch section index. + If no morphology is attached to the hemitype, then the morphology indexes can be set to -1. + + :param bsb.storage.interfaces.PlacementSet pre_set: presynaptic placement set + :param bsb.storage.interfaces.PlacementSet post_set: postsynaptic placement set + :param List[List[int, int, int]] src_locs: list of the presynaptic `connection location`. + :param List[List[int, int, int]] dest_locs: list of the postsynaptic `connection location`. + """ names = self.get_output_names(pre_set.cell_type, post_set.cell_type) between_msg = f"between {pre_set.cell_type.name} and {post_set.cell_type.name}" if len(names) == 0: @@ -187,10 +224,7 @@ def connect_cells(self, pre_set, post_set, src_locs, dest_locs, tag=None): else: name = tag - cs = self.scaffold.require_connectivity_set( - pre_set.cell_type, post_set.cell_type, name - ) - cs.connect(pre_set, post_set, src_locs, dest_locs) + self.scaffold.connect_cells(pre_set, post_set, src_locs, dest_locs, name) def get_region_of_interest(self, chunk): """ diff --git a/bsb/core.py b/bsb/core.py index 05f7d643a..22bed0355 100644 --- a/bsb/core.py +++ b/bsb/core.py @@ -577,6 +577,24 @@ def get_placement_sets(self) -> typing.List["PlacementSet"]: """ return [cell_type.get_placement_set() for cell_type in self.cell_types.values()] + def connect_cells(self, pre_set, post_set, src_locs, dest_locs, name): + """ + Connect cells from a presynaptic placement set to cells of a postsynaptic placement set, + and into a connectivity set. + The description of the hemitype (source or target cell population) connection location + is stored as a list of 3 ids: the cell index (in the placement set), morphology branch + index, and the morphology branch section index. + If no morphology is attached to the hemitype, then the morphology indexes can be set to -1. + + :param bsb.storage.interfaces.PlacementSet pre_set: presynaptic placement set + :param bsb.storage.interfaces.PlacementSet post_set: postsynaptic placement set + :param List[List[int, int, int]] src_locs: list of the presynaptic `connection location`. + :param List[List[int, int, int]] dest_locs: list of the postsynaptic `connection location`. + :param str name: Name to give to the `ConnectivitySet` + """ + cs = self.require_connectivity_set(pre_set.cell_type, post_set.cell_type, name) + cs.connect(pre_set, post_set, src_locs, dest_locs) + def get_connectivity( self, anywhere=None, presynaptic=None, postsynaptic=None, skip=None, only=None ) -> typing.List["ConnectivitySet"]: @@ -778,7 +796,7 @@ def create_job_pool(self, fail_fast=None, quiet=False): ) try: # Check whether stdout is a TTY, and that it is larger than 0x0 - # (e.g. MPI sets it to 0x0 unless an xterm is emulated. + # (e.g. MPI sets it to 0x0 unless a xterm is emulated. tty = os.isatty(sys.stdout.fileno()) and sum(os.get_terminal_size()) except Exception: tty = False diff --git a/bsb/mixins.py b/bsb/mixins.py index d04e20559..e6c65baa9 100644 --- a/bsb/mixins.py +++ b/bsb/mixins.py @@ -27,7 +27,13 @@ def _all_chunks(iter_): def _queue_connectivity(self, pool: "JobPool"): - # Get the queued jobs of all the strategies we depend on. + """Get the queued jobs of all the strategies we depend on. + + Parameters + ---------- + param pool : pool where the jobs will be queued + type pool: bsb.services.pool.JobPool + """ deps = set(_gutil.ichain(pool.get_submissions_of(strat) for strat in self.get_deps())) # Schedule all chunks in 1 job pre_chunks = _all_chunks(self.presynaptic.cell_types) diff --git a/bsb/morphologies/__init__.py b/bsb/morphologies/__init__.py index 298967981..4a0940d03 100644 --- a/bsb/morphologies/__init__.py +++ b/bsb/morphologies/__init__.py @@ -397,7 +397,7 @@ def bounds(self): @property def branch_adjacency(self): """ - Return a dictonary containing mapping the id of the branch to its children. + Return a dictionary containing mapping the id of the branch to its children. """ idmap = {b: n for n, b in enumerate(self.branches)} return {n: list(map(idmap.get, b.children)) for n, b in enumerate(self.branches)} @@ -529,7 +529,9 @@ def label(self, labels, points=None): def rotate(self, rotation, center=None): """ - Point rotation + Rotate the entire Subtree with respect to the center. + The rotation angles are assumed to be in degrees. + If the center is not provided, the Subtree will rotate from [0, 0, 0]. :param rotation: Scipy rotation :type rotation: Union[scipy.spatial.transform.Rotation, List[float,float,float]] diff --git a/bsb/morphologies/selector.py b/bsb/morphologies/selector.py index ceae8636a..455bea8dc 100644 --- a/bsb/morphologies/selector.py +++ b/bsb/morphologies/selector.py @@ -82,7 +82,7 @@ def pick(self, morphology): @config.node class NeuroMorphoSelector(NameSelector, classmap_entry="from_neuromorpho"): - _url = "https://neuromorpho.org/" + _url = "http://cng.gmu.edu:8080/neuroMorpho/" # "https://neuromorpho.org/" _meta = "api/neuron/select?q=neuron_name:" _files = "dableFiles/" diff --git a/bsb/placement/indicator.py b/bsb/placement/indicator.py index 88fd4c838..e0746c46a 100644 --- a/bsb/placement/indicator.py +++ b/bsb/placement/indicator.py @@ -46,6 +46,10 @@ def cell_type(self): def get_radius(self): return self.assert_indication("radius") + @property + def partitions(self): + return self._strat.partitions + def use_morphologies(self): return bool(self.indication("morphologies")) diff --git a/bsb/storage/interfaces.py b/bsb/storage/interfaces.py index e1f43ac95..e83446af7 100644 --- a/bsb/storage/interfaces.py +++ b/bsb/storage/interfaces.py @@ -372,9 +372,10 @@ class PlacementSet(Interface): @abc.abstractmethod def __init__(self, engine, cell_type): - self._engine = engine + super().__init__(engine) self._type = cell_type self._tag = cell_type.name + self._morphology_labels = None @abc.abstractmethod def __len__(self): @@ -444,7 +445,7 @@ def exists(engine, cell_type): pass @classmethod - def require(cls, engine, type): + def require(cls, engine, cell_type): """ Return and create a placement set, if it didn't exist before. @@ -459,9 +460,9 @@ def require(cls, engine, type): :returns: A placement set :rtype: bsb.storage.interfaces.PlacementSet """ - if not cls.exists(engine, type): - cls.create(engine, type) - return cls(engine, type) + if not cls.exists(engine, cell_type): + cls.create(engine, cell_type) + return cls(engine, cell_type) @abc.abstractmethod def clear(self, chunks=None): @@ -533,10 +534,6 @@ def count_morphologies(self): def __iter__(self): pass - @abc.abstractmethod - def __len__(self): - pass - @abc.abstractmethod def append_data( self, @@ -636,10 +633,8 @@ def label(self, labels, cells): @abc.abstractmethod def get_labelled(self, labels): """ - Should return the cells labelled with given labels. + Should return the ids of the cells labelled with given labels. - :param cells: Array of cells in this set to label. - :type cells: numpy.ndarray :param labels: List of labels :type labels: list[str] """ @@ -650,8 +645,6 @@ def get_label_mask(self, labels): """ Should return a mask that fits the placement set for the cells with given labels. - :param cells: Array of cells in this set to label. - :type cells: numpy.ndarray :param labels: List of labels :type labels: list[str] """ @@ -739,7 +732,7 @@ class MorphologyRepository(Interface, engine_key="morphologies"): @abc.abstractmethod def all(self): """ - Fetch all of the stored morphologies. + Fetch all the stored morphologies. :returns: List of the stored morphologies. :rtype: List[~bsb.storage.interfaces.StoredMorphology] diff --git a/bsb/topology/partition.py b/bsb/topology/partition.py index b4a67c5e6..fc7f4a97a 100644 --- a/bsb/topology/partition.py +++ b/bsb/topology/partition.py @@ -18,7 +18,6 @@ ConfigurationError, LayoutError, NodeNotFoundError, - RequirementError, ) from ..storage._chunks import Chunk from ..storage._files import NrrdDependencyNode @@ -110,6 +109,19 @@ def chunk_to_voxels(self, chunk): # pragma: nocover """ pass + def to_voxels(self): + """ + Voxelize the partition's occupation. + """ + + chunk_size = self.scaffold.network.chunk_size + return VoxelSet.concatenate( + *( + self.chunk_to_voxels(Chunk(chunk, chunk_size)) + for chunk in self.to_chunks(chunk_size) + ) + ) + @abc.abstractmethod def rotate(self, rotation): # pragma: nocover """ diff --git a/docs/bsb/modules.rst b/docs/bsb/modules.rst index af3500c99..93bfd2b1d 100644 --- a/docs/bsb/modules.rst +++ b/docs/bsb/modules.rst @@ -1,3 +1,5 @@ +.. _whole-api: + bsb === diff --git a/docs/cells/intro.rst b/docs/cells/intro.rst index 378196cfe..3f0e6d04a 100644 --- a/docs/cells/intro.rst +++ b/docs/cells/intro.rst @@ -8,83 +8,118 @@ morphologies and orientations associated with them. On top of that, both cells a entities support additional arbitrary properties. A cell type is an abstract description of the population. During placement, the concrete -data is generated in the form of a :class:`~.storage.interfaces.PlacementSet`. These can +data is generated in the form of a :doc:`PlacementSet `. These can then be connected together into :class:`ConnectivitySets <.storage.interfaces.ConnectivitySet>`. Furthermore, during simulation, cell types are represented by **cell models**. .. rubric:: Basic configuration -The :guilabel:`radius` and :guilabel:`density` are the 2 most basic *placement -indicators*, they specify how large and dense the cells in the population generally are. +The :guilabel:`radius` and :guilabel:`density` are the 2 most basic :doc:`placement +indications `, they specify how large and dense the cells in the population generally are. The :guilabel:`plotting` block allows you to specify formatting details. -.. code-block:: json - - { - "cell_types": { - "my_cell_type": { - "spatial": { - "radius": 10.0, - "density": 3e-9 - }, - "plotting": { - "display_name": "My Cell Type", - "color": "pink", - "opacity": 1.0 +.. tab-set-code:: + + .. code-block:: json + + "cell_types": { + "my_cell": { + "spatial": { + "density": 3e-9, + "radius": 10 + } + "plotting": { + "display_name": "My Cell Type", + "color": "pink", + "opacity": 1.0 + } + } } - } - } - } + + .. code-block:: python + + config.cell_types.add( + "my_cell", + spatial=dict(radius=10, density=3e-9) + plotting=dict(display_name=" My Cell Type", color="pink",opacity="1.0") + ) .. rubric:: Specifying spatial density You can set the spatial distribution for each cell type present in a -:class:`~.topology.partition.NrrdVoxels` partition. +:ref:`NrrdVoxels ` partition. To do so, you should first attach your nrrd volumetric density file(s) to the partition with either the :guilabel:`source` or :guilabel:`sources` blocks. Then, label the file(s) with the :guilabel:`keys` list block and refer to the :guilabel:`keys` in the :guilabel:`cell_types` with :guilabel:`density_key`: -.. code-block:: json - - { - "partitions": { - "declive": { - "type": "nrrd", - "sources": ["first_cell_type_density.nrrd", - "second_cell_type_density.nrrd"], - "keys": ["first_cell_type_density", - "second_cell_type_density"] - "voxel_size": 25, - } - } - "cell_types": { - "first_cell_type": { - "spatial": { - "radius": 10.0, - "density_key": "first_cell_type_density" - }, - "plotting": { - "display_name": "First Cell Type", - "color": "pink", - "opacity": 1.0 +.. tab-set-code:: + + .. code-block:: json + + { + "partitions": { + "declive": { + "type": "nrrd", + "sources": ["first_cell_type_density.nrrd", + "second_cell_type_density.nrrd"], + "keys": ["first_cell_type_density", + "second_cell_type_density"] + "voxel_size": 25, + } } - }, - "first_cell_type": { - "spatial": { - "radius": 5.0, - "density_key": "second_cell_type_density" - }, - "plotting": { - "display_name": "Second Cell Type", - "color": "#0000FF", - "opacity": 0.5 + "cell_types": { + "first_cell_type": { + "spatial": { + "radius": 10.0, + "density_key": "first_cell_type_density" + }, + "plotting": { + "display_name": "First Cell Type", + "color": "pink", + "opacity": 1.0 + } + }, + "second_cell_type": { + "spatial": { + "radius": 5.0, + "density_key": "second_cell_type_density" + }, + "plotting": { + "display_name": "Second Cell Type", + "color": "#0000FF", + "opacity": 0.5 + } + } } } - } - } + + .. code-block:: python + + + config.partitions.add( + "declive", + type="nrrd", + sources= ["first_cell_type_density.nrrd", + "second_cell_type_density.nrrd"], + keys= ["first_cell_type_density", + "second_cell_type_density"], + voxel_size=25, + + ) + + config.cell_types.add( + "first_cell_type", + spatial=dict(radius=10, density_key="first_cell_type_density") + plotting=dict(display_name="First Cell Type", color="pink",opacity="1.0") + ) + config.cell_types.add( + "second_cell_type", + spatial=dict(radius=10, density_key="second_cell_type_density") + plotting=dict(display_name="First Cell Type", color="#0000FF",opacity="0.5") + ) The nrrd files should contain voxel based volumetric density in unit of cells / voxel volume, where the voxel volume is in cubic unit of :guilabel:`voxel_size`. @@ -92,30 +127,39 @@ i.e., if :guilabel:`voxel_size` is in µm then the density file is in cells/µm^ .. rubric:: Specifying morphologies -If the cell type is represented by morphologies, you can list multiple :class:`selectors -<.morphologies.selector.MorphologySelector>` to fetch them from the -:doc:`/morphologies/repository`. - -.. code-block:: json - - { - "cell_types": { - "my_cell_type": { - "spatial": { - "radius": 10.0, - "density": 3e-9, - "morphologies": [ - { - "select": "by_name", - "names": ["cells_A_*", "cell_B_2"] + +To associate a cell type with a specific morphology, add the desired morphology to the cells by referencing +the corresponding name stored in the :doc:`morphology repository `. + +.. tab-set-code:: + + .. code-block:: json + + + { + "cell_types": { + "my_cell_type": { + "spatial": { + "radius": 10.0, + "density": 3e-9, + "morphologies": ["cells_A_*", "cell_B_2"] + }, + "plotting": { + "display_name": "My Cell Type", + "color": "pink", + "opacity": 1.0 } - ] - }, - "plotting": { - "display_name": "My Cell Type", - "color": "pink", - "opacity": 1.0 + } } } - } - } + + .. code-block:: python + + config.cell_types.add( + "my_cell_type", + spatial=dict(radius=10, density=3e-9,morphologies=["cells_A_*", "cell_B_2"]) + plotting=dict(display_name=" My Cell Type", color="pink",opacity="1.0") + ) + +In this case we add two different morphologies labels: +:guilabel:`cell_B_2` add the morphology with this name, :guilabel:`cells_A_*` add all the stored morphologies with name starting with ``cells_A_`` prefix. \ No newline at end of file diff --git a/docs/cli/cli-toc.rst b/docs/cli/cli-toc.rst index c93486cbf..fa9c4cf50 100644 --- a/docs/cli/cli-toc.rst +++ b/docs/cli/cli-toc.rst @@ -1,5 +1,8 @@ +Command-Line Interface +====================== + .. toctree:: - :maxdepth: 2 + :maxdepth: 1 :caption: CLI intro diff --git a/docs/cli/commands.rst b/docs/cli/commands.rst index f13f33984..bcf99be3c 100644 --- a/docs/cli/commands.rst +++ b/docs/cli/commands.rst @@ -17,7 +17,7 @@ Create a project .. code-block:: bash - bsb [OPTIONS] new [--quickstart] [--exists] + bsb [OPTIONS] new [--quickstart] [--exists] [--json] Creates a new project directory at ``folder``. You will be prompted to fill in some project settings. @@ -26,6 +26,8 @@ project settings. * ``parent-folder``: Filesystem location where the project folder will be created. * ``quickstart``: Generates an exemplary project with basic config that can be compiled. * ``exists``: With this flag, it is not an error for the ``parent-folder`` to exist. +* ``json``: With this flag, the configuration file will be written in the JSON format + instead of YAML format used by default. .. _bsb_make_config: diff --git a/docs/cli/intro.rst b/docs/cli/intro.rst index bec9600f1..d8c2a7f31 100644 --- a/docs/cli/intro.rst +++ b/docs/cli/intro.rst @@ -1,9 +1,11 @@ +.. _cli-guide: + ############ Introduction ############ -The command line interface is composed of a collection of `pluggable `_ commands. Open up your favorite terminal and enter the ``bsb --help`` command +The command line interface is composed of a collection of pluggable commands. +Open up your favorite terminal and enter the ``bsb --help`` command to verify you correctly installed the software. Each command can give command specific arguments, options or set `global options @@ -18,6 +20,8 @@ Each command can give command specific arguments, options or set `global options # Overriding the global verbosity option bsb compile --verbosity 4 +The list of BSB commands are listed in the :doc:`following section ` . + ========================= Writing your own commands ========================= diff --git a/docs/components/components-toc.rst b/docs/components/components-toc.rst new file mode 100644 index 000000000..e40f1fc9b --- /dev/null +++ b/docs/components/components-toc.rst @@ -0,0 +1,16 @@ +.. _main-components: + +List of Components +================== + +.. toctree:: + :maxdepth: 1 + :caption: BSB Components + + /topology/topology-toc + /cells/cells-toc + /morphologies/morphology-toc + /placement/placement-toc + /connectivity/connectivity-toc + /simulation/simulation-toc + /components/components \ No newline at end of file diff --git a/docs/guides/components.rst b/docs/components/components.rst similarity index 57% rename from docs/guides/components.rst rename to docs/components/components.rst index df0ee145c..8e5d80313 100644 --- a/docs/guides/components.rst +++ b/docs/components/components.rst @@ -4,42 +4,18 @@ Writing components ================== -.. todo:: - - * Write this skeleton out to a full guide. - * Start this out in a Getting Started style, where a toy problem is tackled. - * Then, for each possible component type, write an example that covers the interface and - common problems and important to know things. - -The architecture of the framework organizes your model into reusable components. It offers +The architecture of the BSB framework organizes your model into reusable components. It offers out of the box components for basic operations, but often you'll need to write your own. -.. rubric:: Importing - -To use --> needs to be importable --> local code, package or plugin - -.. rubric:: Structure - -* Decorate with ``@config.node`` -* Inherit from interface -* Parametrize with config attributes -* Implement interface functions +If you want to read a step by step tutorial on how to make your own component, check this +:doc:`page ` -.. rubric:: Parametrization +For each component, BSB provides interfaces, each with a set of functions that you must +implement. If these functions are present, the framework knows how to use your class. -Parameters defined as class attributes --> can be specified in config/init. Make things -explicitly visible and settable. +Hence, the framework allows you to plug in user code pretty much anywhere. Neat. -Type handling, validation, requirements - -.. rubric:: Interface & implementation - -Interface gives you a set of functions you must implement. If these functions are present, -framework knows how to use your class. - -The framework allows you to plug in user code pretty much anywhere. Neat. - -Here's how you do it (theoretically): +Here is how you do it (theoretically): #. Identify which **interface** you need to extend. An interface is a programming concept that lets you take one of the objects of the framework and define some functions on it. @@ -91,36 +67,3 @@ you can now access: Share your code with the whole world and become an author of a :ref:`plugin `! |:heart_eyes:| - -Main components -=============== - -Region ------- - -Partition ---------- - -PlacementStrategy ------------------ - -ConnectivityStrategy --------------------- - -Placement components -==================== - -MorphologySelector ------------------- - -MorphologyDistributor ---------------------- - -RotationDistributor -------------------- - -Distributor ------------ - -Indicator ---------- diff --git a/docs/conf.py b/docs/conf.py index 161396a98..1aff02d81 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -79,6 +79,7 @@ "mpi4py": ("https://mpi4py.readthedocs.io/en/stable/", None), "arbor": ("https://docs.arbor-sim.org/en/latest/", None), "neo": ("https://neo.readthedocs.io/en/latest/", None), + "bsb": ("https://bsb.readthedocs.io/en/latest", None), } # Add any paths that contain templates here, relative to this directory. @@ -91,9 +92,6 @@ "_build", "Thumbs.db", ".DS_Store", - "getting-started/labels.rst", - "getting-started/blender.rst", - "getting-started/layer.rst", ] autoclass_content = "both" diff --git a/docs/config/_empty_root_nodes.rst b/docs/config/_empty_root_nodes.rst index bf2e1338f..eca52c07f 100644 --- a/docs/config/_empty_root_nodes.rst +++ b/docs/config/_empty_root_nodes.rst @@ -7,6 +7,9 @@ "network": { }, + "morphologies": [ + + ], "regions": { }, diff --git a/docs/config/configuration-toc.rst b/docs/config/configuration-toc.rst index 682002fde..7e1946aa9 100644 --- a/docs/config/configuration-toc.rst +++ b/docs/config/configuration-toc.rst @@ -1,5 +1,9 @@ +Configuration +============= + + .. toctree:: - :maxdepth: 2 + :maxdepth: 1 :caption: Configuration files diff --git a/docs/config/files.rst b/docs/config/files.rst index 0ced215eb..419d6b435 100644 --- a/docs/config/files.rst +++ b/docs/config/files.rst @@ -18,10 +18,10 @@ The :guilabel:`regions`, :guilabel:`partitions`, :guilabel:`cell_types`, :class:`PlacementStrategies <.placement.strategy.PlacementStrategy>` and :class:`ConnectionStrategies <.connectivity.strategy.ConnectionStrategy>` respectively. -When you're configuring a model you'll mostly be using configuration :ref:`attributes +When you are configuring a model you will mostly be using configuration :ref:`attributes `, :ref:`nodes `, :ref:`dictionaries `, :ref:`lists `, and :ref:`references `. These configuration units -can be declared through the config file, or programatically added. +can be declared through the configuration file, or programatically added. Code #### @@ -58,7 +58,7 @@ and handle the values: value1 = config.attr(type=int) thingy2 = config.list(type=int, size=2, required=True) -For more information on creating your own configuration nodes see :doc:`nodes`. +For more information on creating your own configuration nodes see :doc:`/config/nodes`. JSON #### diff --git a/docs/config/nodes.rst b/docs/config/nodes.rst index 55c6d584b..a77ef8f59 100644 --- a/docs/config/nodes.rst +++ b/docs/config/nodes.rst @@ -4,12 +4,11 @@ Nodes .. _config_nodes: -Nodes are the recursive backbone backbone of the Configuration object. Nodes can contain -other nodes under their attributes and in that way recurse deeper into the configuration. -Nodes can also be used as types in dictionaries or lists. +Nodes are the recursive backbone of the `Configuration` object. Nodes can contain +other nodes as attributes and in that way recurse deeper into the configuration. -Node classes contain the description of a node type in the configuration. Here's an example -to illustrate: +Node classes should describe how to parametrize them in the configuration file. +Here is an example to illustrate: .. code-block:: python @@ -21,7 +20,13 @@ to illustrate: color = config.attr() radius = config.attr(type=float, required=True) -This node class describes the following configuration: +This node class has 3 attributes: + +- ``name`` string attribute used as the key of the node +- ``color`` also a string attribute (not required) +- ``radius`` a required float attribute + +This class description can be translated into the following configuration: .. code-block:: json @@ -32,6 +37,48 @@ This node class describes the following configuration: } } +Root node +========= + +The root node is the Configuration object and is at the basis of the tree of nodes. + +Node inheritance +================ + +Classes decorated with node decorators have their class and metaclass machinery rewritten. +Basic inheritance works like this: + +.. code-block:: python + + @config.node + class NodeA: + pass + + @config.node + class NodeB(NodeA): + pass + +However, when inheriting from more than one node class you will run into a metaclass +conflict. To solve it, use :func:`.config.compose_nodes`: + +.. code-block:: python + + from bsb import config, compose_nodes + + @config.node + class NodeA: + pass + + @config.node + class NodeB: + pass + + @config.node + class NodeC(compose_nodes(NodeA, NodeB)): + pass + + + Dynamic nodes ============= @@ -62,15 +109,16 @@ further process the node. .. note:: - The child class must inherit from the dynamic node class. + The child class must inherit from the dynamic node class. Configuring the dynamic attribute --------------------------------- The same keyword arguments can be passed to the ``dynamic`` decorator as to regular -`attributes `_ to specify the properties of the dynamic attribute; As an -example we specify a new attribute name with ``attr_name="example_type"``, allow the +:ref:`attributes ` to specify the properties of the dynamic attribute. + +As an example, we specify a new attribute name with ``attr_name="example_type"``, allow the dynamic attribute to be omitted ``required=False``, and specify a fallback class with ``default="Example"``: @@ -148,12 +196,6 @@ classmap as well: class MappedChild(Example, classmap_entry="short"): pass - -Root node -========= - -The root node is the Configuration object and is at the basis of the tree of nodes. - Pluggable nodes =============== @@ -167,9 +209,9 @@ provide an attribute with the same name. .. note:: - Currently the provided attribute slots enforce just the presence, not any kind of - inheritance or deeper inspection. It's up to a plugin author to understand the purpose - of the slot and to comply with its intentions. + Currently the provided attribute slots enforce just the presence, not any kind of + inheritance or deeper inspection. It's up to a plugin author to understand the purpose + of the slot and to comply with its intentions. Consider the following example: @@ -200,340 +242,6 @@ that fast so caching them is recommended). The returned plugin objects should be configuration node classes. These classes will then be used to further handle the given configuration. -Node inheritance -================ - -Classes decorated with node decorators have their class and metaclass machinery rewritten. -Basic inheritance works like this: - -.. code-block:: python - - @config.node - class NodeA: - pass - - @config.node - class NodeB(NodeA): - pass - -However, when inheriting from more than one node class you will run into a metaclass -conflict. To solve it, use :func:`.config.compose_nodes`: - -.. code-block:: python - - from bsb import config, compose_nodes - - @config.node - class NodeA: - pass - - @config.node - class NodeB: - pass - - @config.node - class NodeC(compose_nodes(NodeA, NodeB)): - pass - - -.. _config_attrs: - -Configuration attributes -======================== - -An attribute can refer to a singular value of a certain type, a dict, list, reference, or -to a deeper node. You can use the :func:`config.attr <.config.attr>` in node decorated -classes to define your attribute: - -.. code-block:: python - - from bsb import config - - @config.node - class CandyStack: - count = config.attr(type=int, required=True) - candy = config.attr(type=CandyNode) - -.. code-block:: json - - { - "count": 12, - "candy": { - "name": "Hardcandy", - "sweetness": 4.5 - } - } - -.. _config_dict: - -Configuration dictionaries -========================== - -Configuration dictionaries hold configuration nodes. If you need a dictionary of values -use the :func:`types.dict <.config.types.dict>` syntax instead. - -.. code-block:: python - - from bsb import config - - @config.node - class CandyNode: - name = config.attr(key=True) - sweetness = config.attr(type=float, default=3.0) - - @config.node - class Inventory: - candies = config.dict(type=CandyStack) - -.. code-block:: json - - { - "candies": { - "Lollypop": { - "sweetness": 12.0 - }, - "Hardcandy": { - "sweetness": 4.5 - } - } - } - -Items in configuration dictionaries can be accessed using dot notation or indexing: - -.. code-block:: python - - inventory.candies.Lollypop == inventory.candies["Lollypop"] - -Using the ``key`` keyword argument on a configuration attribute will pass the key in the -dictionary to the attribute so that ``inventory.candies.Lollypop.name == "Lollypop"``. - -.. _config_list: - -Configuration lists -=================== - -Configuration dictionaries hold unnamed collections of configuration nodes. If you need a -list of values use the :func:`types.list <.config.types.list>` syntax instead. - -.. code-block:: python - - from bsb import config - - @config.node - class InventoryList: - candies = config.list(type=CandyStack) - -.. code-block:: json - - { - "candies": [ - { - "count": 100, - "candy": { - "name": "Lollypop", - "sweetness": 12.0 - } - }, - { - "count": 1200, - "candy": { - "name": "Hardcandy", - "sweetness": 4.5 - } - } - ] - } - -.. _config_ref: - -Configuration references -======================== - -References refer to other locations in the configuration. In the configuration the -configured string will be fetched from the referenced node: - -.. code-block:: json - - { - "locations": {"A": "very close", "B": "very far"}, - "where": "A" - } - -Assuming that ``where`` is a reference to ``locations``, location ``A`` will be retrieved -and placed under ``where`` so that in the config object: - -.. code-block:: python - - >>> print(conf.locations) - {'A': 'very close', 'B': 'very far'} - - >>> print(conf.where) - 'very close' - - >>> print(conf.where_reference) - 'A' - -References are defined inside of configuration nodes by passing a `reference object -`_ to the :func:`.config.ref` function: - -.. code-block:: python - - @config.node - class Locations: - locations = config.dict(type=str) - where = config.ref(lambda root, here: here["locations"]) - -After the configuration has been cast all nodes are visited to check if they are a -reference and if so the value from elsewhere in the configuration is retrieved. The -original string from the configuration is also stored in ``node._reference``. - -After the configuration is loaded it's possible to either give a new reference key -(usually a string) or a new reference value. In most cases the configuration will -automatically detect what you're passing into the reference: - -.. code-block:: - - >>> cfg = from_json("mouse_cerebellum.json") - >>> cfg.cell_types.granule_cell.placement.layer.name - 'granular_layer' - >>> cfg.cell_types.granule_cell.placement.layer = 'molecular_layer' - >>> cfg.cell_types.granule_cell.placement.layer.name - 'molecular_layer' - >>> cfg.cell_types.granule_cell.placement.layer = cfg.layers.purkinje_layer - >>> cfg.cell_types.granule_cell.placement.layer.name - 'purkinje_layer' - -As you can see, by passing the reference a string the object is fetched from the reference -location, but we can also directly pass the object the reference string would point to. -This behavior is controlled by the ``ref_type`` keyword argument on the ``config.ref`` -call and the ``is_ref`` method on the reference object. If neither is given it defaults to -checking whether the value is an instance of ``str``: - -.. code-block:: python - - @config.node - class CandySelect: - candies = config.dict(type=Candy) - special_candy = config.ref(lambda root, here: here.candies, ref_type=Candy) - - class CandyReference(config.refs.Reference): - def __call__(self, root, here): - return here.candies - - def is_ref(self, value): - return isinstance(value, Candy) - - @config.node - class CandySelect: - candies = config.dict(type=Candy) - special_candy = config.ref(CandyReference()) - -The above code will make sure that only ``Candy`` objects are seen as references and all -other types are seen as keys that need to be looked up. It is recommended you do this even -in trivial cases to prevent bugs. - -.. _quick-reference-object: - -Reference object ----------------- - -The reference object is a callable object that takes 2 arguments: the configuration root -node and the referring node. Using these 2 locations it should return a configuration node -from which the reference value can be retrieved. - -.. code-block:: python - - def locations_reference(root, here): - return root.locations - -This reference object would create the link seen in the first reference example. - -Reference lists ---------------- - -Reference lists are akin to references but instead of a single key they are a list of -reference keys: - -.. code-block:: json - - { - "locations": {"A": "very close", "B": "very far"}, - "where": ["A", "B"] - } - -Results in ``cfg.where == ["very close", "very far"]``. As with references you can set a -new list and all items will either be looked up or kept as is if they're a reference value -already. - -.. warning:: - - Appending elements to these lists currently does not convert the new value. Also note - that reference lists are quite indestructible; setting them to `None` just resets them - and the reference key list (``._references``) to ``[]``. - - -Bidirectional references ------------------------- - -The object that a reference points to can be "notified" that it is being referenced by the -``populate`` mechanism. This mechanism stores the referrer on the referee creating a -bidirectional reference. If the ``populate`` argument is given to the ``config.ref`` call -the referrer will append itself to the list on the referee under the attribute given by -the value of the ``populate`` kwarg (or create a new list if it doesn't exist). - -.. code-block:: json - - { - "containers": { - "A": {} - }, - "elements": { - "a": {"container": "A"} - } - } - -.. code-block:: python - - @config.node - class Container: - name = config.attr(key=True) - elements = config.attr(type=list, default=list, call_default=True) - - @config.node - class Element: - container = config.ref(container_ref, populate="elements") - -This would result in ``cfg.containers.A.elements == [cfg.elements.a]``. - -You can overwrite the default *append or create* population behavior by creating a -descriptor for the population attribute and define a ``__populate__`` method on it: - -.. code-block:: python - - class PopulationAttribute: - # Standard property-like descriptor protocol - def __get__(self, instance, objtype=None): - if instance is None: - return self - if not hasattr(instance, "_population"): - instance._population = [] - return instance._population - - # Prevent population from being overwritten - # Merge with new values into a unique list instead - def __set__(self, instance, value): - instance._population = list(set(instance._population) + set(value)) - - # Example that only stores referrers if their name in the configuration is "square". - def __populate__(self, instance, value): - print("We're referenced in", value.get_node_name()) - if value.get_node_name().endswith(".square"): - self.__set__(instance, [value]) - else: - print("We only store referrers coming from a .square configuration attribute") - -todo: Mention ``pop_unique`` - .. _configuration-casting: Casting diff --git a/docs/config/parsers/json.rst b/docs/config/parsers/json.rst index 1be34ecd9..12e9eff98 100644 --- a/docs/config/parsers/json.rst +++ b/docs/config/parsers/json.rst @@ -80,7 +80,7 @@ In this document the deepest JSON path is ``/walk/down/the/path``. .. warning:: - Pay attention to the initial ``/`` of the reference clause! Without it, you're making + Pay attention to the initial ``/`` of the reference clause! Without it, you are making a reference relative to the current position. With an initial ``/`` you make a reference absolute to the root of the document. diff --git a/docs/config/reference.rst b/docs/config/reference.rst index 036cf2959..7285bf3d2 100644 --- a/docs/config/reference.rst +++ b/docs/config/reference.rst @@ -15,7 +15,7 @@ Storage .. note:: - Storage nodes host plugins and can contain plugin-specific configuration. + Storage nodes host plugins and can contain plugin-specific configuration. .. autoconfig:: bsb.storage.interfaces.StorageNode @@ -49,7 +49,7 @@ Regions .. note:: - Region nodes are components and can contain additional component-specific attributes. + Region nodes are components and can contain additional component-specific attributes. .. autoconfig:: bsb.topology.Region @@ -63,7 +63,7 @@ Partitions .. note:: - Partition nodes are components and can contain additional component-specific attributes. + Partition nodes are components and can contain additional component-specific attributes. .. autoconfig:: bsb.topology.Partition @@ -118,7 +118,7 @@ Placement .. note:: - Placement nodes are components and can contain additional component-specific attributes. + Placement nodes are components and can contain additional component-specific attributes. .. autoconfig:: bsb.placement.PlacementStrategy @@ -149,8 +149,8 @@ Connectivity .. note:: - Connectivity nodes are components and can contain additional component-specific - attributes. + Connectivity nodes are components and can contain additional component-specific + attributes. .. autoconfig:: bsb.connectivity.ConnectionStrategy diff --git a/docs/config/types.rst b/docs/config/types.rst index 5d48bed0c..cbfde9fac 100644 --- a/docs/config/types.rst +++ b/docs/config/types.rst @@ -1,6 +1,34 @@ -############### +.. _config_attrs: + +######################## +Configuration attributes +######################## + +An attribute can refer to a singular value of a certain type, a dict, list, reference, or +to a deeper node. You can use the :func:`config.attr <.config.attr>` in node decorated +classes to define your attribute: + +.. code-block:: python + + from bsb import config + + @config.node + class CandyStack: + count = config.attr(type=int, required=True) + candy = config.attr(type=CandyNode) + +.. code-block:: json + + { + "count": 12, + "candy": { + "name": "Hardcandy", + "sweetness": 4.5 + } + } + Type validation -############### +=============== Configuration types convert given configuration values. Values incompatible with the type are rejected and the user is warned. The default type is ``str``. @@ -11,12 +39,282 @@ more complex combinations of types. Every configuration node itself can be used .. warning:: - All of the members of the :mod:`.config.types` module are factory methods: they need to - be **called** in order to produce the type handler. Make sure that you use - ``config.attr(type=types.any_())``, as opposed to ``config.attr(type=types.any_)``. + All of the members of the :mod:`.config.types` module are factory methods: they need to + be **called** in order to produce the type handler. Make sure that you use + ``config.attr(type=types.any_())``, as opposed to ``config.attr(type=types.any_)``. + +.. _config_dict: + +Configuration dictionaries +========================== + +Configuration dictionaries hold configuration nodes. If you need a dictionary of values +use the :func:`types.dict <.config.types.dict>` syntax instead. + +.. code-block:: python + + from bsb import config + + @config.node + class CandyNode: + name = config.attr(key=True) + sweetness = config.attr(type=float, default=3.0) + + @config.node + class Inventory: + candies = config.dict(type=CandyStack) + +.. code-block:: json + + { + "candies": { + "Lollypop": { + "sweetness": 12.0 + }, + "Hardcandy": { + "sweetness": 4.5 + } + } + } + +Items in configuration dictionaries can be accessed using dot notation or indexing: + +.. code-block:: python + + inventory.candies.Lollypop == inventory.candies["Lollypop"] + +Using the ``key`` keyword argument on a configuration attribute will pass the key in the +dictionary to the attribute so that ``inventory.candies.Lollypop.name == "Lollypop"``. + +.. _config_list: + +Configuration lists +=================== + +Configuration dictionaries hold unnamed collections of configuration nodes. If you need a +list of values use the :func:`types.list <.config.types.list>` syntax instead. + +.. code-block:: python + + from bsb import config + + @config.node + class InventoryList: + candies = config.list(type=CandyStack) + +.. code-block:: json + + { + "candies": [ + { + "count": 100, + "candy": { + "name": "Lollypop", + "sweetness": 12.0 + } + }, + { + "count": 1200, + "candy": { + "name": "Hardcandy", + "sweetness": 4.5 + } + } + ] + } + +.. _config_ref: + +Configuration references +======================== + +References refer to other locations in the configuration. In the configuration the +configured string will be fetched from the referenced node: + +.. code-block:: json + + { + "locations": {"A": "very close", "B": "very far"}, + "where": "A" + } + +Assuming that ``where`` is a reference to ``locations``, location ``A`` will be retrieved +and placed under ``where`` so that in the config object: + +.. code-block:: python + + >>> print(conf.locations) + {'A': 'very close', 'B': 'very far'} + + >>> print(conf.where) + 'very close' + + >>> print(conf.where_reference) + 'A' + +References are defined inside of configuration nodes by passing a `reference object +`_ to the :func:`.config.ref` function: + +.. code-block:: python + + @config.node + class Locations: + locations = config.dict(type=str) + where = config.ref(lambda root, here: here["locations"]) + +After the configuration has been cast all nodes are visited to check if they are a +reference and if so the value from elsewhere in the configuration is retrieved. The +original string from the configuration is also stored in ``node._reference``. + +After the configuration is loaded it is possible to either give a new reference key +(usually a string) or a new reference value. In most cases the configuration will +automatically detect what you are passing into the reference: + +.. code-block:: + + >>> cfg = from_json("mouse_cerebellum.json") + >>> cfg.cell_types.granule_cell.placement.layer.name + 'granular_layer' + >>> cfg.cell_types.granule_cell.placement.layer = 'molecular_layer' + >>> cfg.cell_types.granule_cell.placement.layer.name + 'molecular_layer' + >>> cfg.cell_types.granule_cell.placement.layer = cfg.layers.purkinje_layer + >>> cfg.cell_types.granule_cell.placement.layer.name + 'purkinje_layer' + +As you can see, by passing the reference a string the object is fetched from the reference +location, but we can also directly pass the object the reference string would point to. +This behavior is controlled by the ``ref_type`` keyword argument on the ``config.ref`` +call and the ``is_ref`` method on the reference object. If neither is given it defaults to +checking whether the value is an instance of ``str``: + +.. code-block:: python + + @config.node + class CandySelect: + candies = config.dict(type=Candy) + special_candy = config.ref(lambda root, here: here.candies, ref_type=Candy) + + class CandyReference(config.refs.Reference): + def __call__(self, root, here): + return here.candies + + def is_ref(self, value): + return isinstance(value, Candy) + + @config.node + class CandySelect: + candies = config.dict(type=Candy) + special_candy = config.ref(CandyReference()) + +The above code will make sure that only ``Candy`` objects are seen as references and all +other types are seen as keys that need to be looked up. It is recommended you do this even +in trivial cases to prevent bugs. + +.. _quick-reference-object: + +Reference object +---------------- + +The reference object is a callable object that takes 2 arguments: the configuration root +node and the referring node. Using these 2 locations it should return a configuration node +from which the reference value can be retrieved. + +.. code-block:: python + + def locations_reference(root, here): + return root.locations + +This reference object would create the link seen in the first reference example. + +Reference lists +--------------- + +Reference lists are akin to references but instead of a single key they are a list of +reference keys: + +.. code-block:: json + + { + "locations": {"A": "very close", "B": "very far"}, + "where": ["A", "B"] + } + +Results in ``cfg.where == ["very close", "very far"]``. As with references you can set a +new list and all items will either be looked up or kept as is if they're a reference value +already. + +.. warning:: + + Appending elements to these lists currently does not convert the new value. Also note + that reference lists are quite indestructible; setting them to `None` just resets them + and the reference key list (``._references``) to ``[]``. + + +Bidirectional references +------------------------ + +The object that a reference points to can be "notified" that it is being referenced by the +``populate`` mechanism. This mechanism stores the referrer on the referee creating a +bidirectional reference. If the ``populate`` argument is given to the ``config.ref`` call +the referrer will append itself to the list on the referee under the attribute given by +the value of the ``populate`` kwarg (or create a new list if it doesn't exist). + +.. code-block:: json + + { + "containers": { + "A": {} + }, + "elements": { + "a": {"container": "A"} + } + } + +.. code-block:: python + + @config.node + class Container: + name = config.attr(key=True) + elements = config.attr(type=list, default=list, call_default=True) + + @config.node + class Element: + container = config.ref(container_ref, populate="elements") + +This would result in ``cfg.containers.A.elements == [cfg.elements.a]``. + +You can overwrite the default *append or create* population behavior by creating a +descriptor for the population attribute and define a ``__populate__`` method on it: + +.. code-block:: python + + class PopulationAttribute: + # Standard property-like descriptor protocol + def __get__(self, instance, objtype=None): + if instance is None: + return self + if not hasattr(instance, "_population"): + instance._population = [] + return instance._population + + # Prevent population from being overwritten + # Merge with new values into a unique list instead + def __set__(self, instance, value): + instance._population = list(set(instance._population) + set(value)) + + # Example that only stores referrers if their name in the configuration is "square". + def __populate__(self, instance, value): + print("We're referenced in", value.get_node_name()) + if value.get_node_name().endswith(".square"): + self.__set__(instance, [value]) + else: + print("We only store referrers coming from a .square configuration attribute") + +.. todo: Mention ``pop_unique`` Examples --------- +======== .. code-block:: python @@ -34,7 +332,7 @@ Examples required_string = config.attr(type=str, required=True) # Float some_number = config.attr(type=float) - # types.float / types.int + # types.float / types.int bounded_float = config.attr(type=types.float(min=0.3, max=17.9)) # Float, int or bool (attempted to cast in that order) combined = config.attr(type=types.or_(float, int, bool)) @@ -48,10 +346,10 @@ Examples list_of_numbers = config.attr( type=types.list(type=float, size=3) ) - # A scipy.stats distribution - chi_distr = config.attr(type=types.distribution()) - # A python statement evaluation - statement = config.attr(type=types.evaluation()) + # A scipy.stats distribution + chi_distr = config.attr(type=types.distribution()) + # A python statement evaluation + statement = config.attr(type=types.evaluation()) # Create an np.ndarray with 3 elements out of a scalar expand = config.attr( type=types.scalar_expand( diff --git a/docs/connectivity/component.rst b/docs/connectivity/component.rst index 4e6af5bdc..6c673e57e 100644 --- a/docs/connectivity/component.rst +++ b/docs/connectivity/component.rst @@ -2,8 +2,6 @@ Writing a component =================== -.. bsb_component_intro:: - You can create custom connectivity patterns by creating a Python file in your project root (e.g. ``my_module.py``) with inside a class inheriting from :class:`~.connectivity.strategy.ConnectionStrategy`. diff --git a/docs/connectivity/connection-strategies.rst b/docs/connectivity/connection-strategies.rst index 6b5863bf5..7ababc845 100644 --- a/docs/connectivity/connection-strategies.rst +++ b/docs/connectivity/connection-strategies.rst @@ -16,6 +16,36 @@ presynaptic neurons. * ``indegree``: Number of neuron to connect for each postsynaptic neuron. +.. tab-set-code:: + + .. code-block:: json + + "connectivity": { + "A_to_B": { + "strategy": "bsb.connectivity.FixedIndegree", + "presynaptic": { + "cell_types": ["A"] + }, + "postsynaptic": { + "cell_types": ["B"] + }, + "indegree": 2 + } + + .. code-block:: python + + config.connectivity.add( + "A_to_B", + strategy="bsb.connectivity.FixedIndegree", + presynaptic=dict(cell_types=["A"]), + postsynaptic=dict(cell_types=["type_B"]), + indegree= 2 + ) + +.. note:: + In this example every cell of type B is connected to two cells of type A. + + :class:`FixedOutdegree <.connectivity.general.FixedOutdegree>` ============================================================== @@ -29,8 +59,8 @@ postsynaptic neurons. This strategy voxelizes morphologies into collections of cubes, thereby reducing the spatial specificity of the provided traced morphologies by grouping multiple compartments -into larger cubic voxels. Intersections are found not between the seperate compartments -but between the voxels and random compartments of matching voxels are connected to eachother. +into larger cubic voxels. Intersections are found not between the separate compartments +but between the voxels and random compartments of matching voxels are connected to each other. This means that the connections that are made are less specific to the exact morphology and can be very useful when only 1 or a few morphologies are available to represent each cell type. @@ -43,4 +73,87 @@ cell type. .. note:: The affinity only affects the number of cells that are contacted, not the number of - synaptic contacts formed with each cell. \ No newline at end of file + synaptic contacts formed with each cell. + +.. tab-set-code:: + + .. code-block:: json + + { + "A_to_B": { + "strategy": "bsb.connectivity.VoxelIntersection", + "presynaptic": { + "cell_types": [ + "A" + ], + }, + "postsynaptic": { + "cell_types": [ + "B" + ], + }, + "affinity": 0.5, + "contacts": 1 + } + } + + .. code-block:: python + + config.connectivity.add( + "A_to_B", + strategy="bsb.connectivity.VoxelIntersection", + presynaptic=dict(cell_types=["A"]), + postsynaptic=dict(cell_types=["type_B"]), + affinity= 0.5, + contacts= 1 + ) + +The previous example demonstrates a strategy to connect cells of type A with cells of type B, +where only half of the computed overlaps are considered, and one synapse is placed for each connection. +It is also possible to define the number of synapse per connection with a distribution: + +.. tab-set-code:: + + .. code-block:: json + + { + "A_to_B": { + "strategy": "bsb.connectivity.VoxelIntersection", + "presynaptic": { + "cell_types": [ + "A" + ], + }, + "postsynaptic": { + "cell_types": [ + "B" + ], + }, + "affinity": 0.5, + "contacts": { + "distribution": "norm", + "loc": 10, + "scale": 2 + } + } + } + + .. code-block:: python + + config.connectivity.add( + "A_to_B", + strategy="bsb.connectivity.VoxelIntersection", + presynaptic=dict(cell_types=["A"]), + postsynaptic=dict(cell_types=["type_B"]), + affinity= 0.5, + contacts= dict( + distribution="norm",loc=10,scale=2 + ) + ) + +In this case, the number of synapses is randomly drawn from a normal distribution +with a mean of 10 and a standard deviation of 2. + +.. note:: + Normal distribution is just one option but all the distributions available in your scipy package + can be used. \ No newline at end of file diff --git a/docs/connectivity/connectivity-set.rst b/docs/connectivity/connectivity-set.rst new file mode 100644 index 000000000..06b503076 --- /dev/null +++ b/docs/connectivity/connectivity-set.rst @@ -0,0 +1,63 @@ +################# +Connectivity sets +################# + +The :class:`ConnectivitySet <.storage.interfaces.ConnectivitySet>` represents the +ensemble of all connections established in your network. +It is constructed from the :class:`~.storage.Storage` and can be used to retrieve +information about pre- and post-cell types, as well as the connections between them. + +Retrieving a ConnectivitySet +============================ + +It is possible to list all the ``ConnectivitySet`` stored in your scaffold, here, +loaded from the network file ``"my_network.hdf5"``: + +.. code-block:: python + + from bsb import from_storage + + scaffold = from_storage("my_network.hdf5") + + cs_list = scaffold.get_connectivity_sets() + for cs in cs_list: + print (f"ConnectivitySet {cs.tag} has {len(cs)} connections") + +Alternatively, is possible to load the set by its name: + +.. code-block:: python + + cs = scaffold.get_connectivity_set("my_CS") + +The cell type information is accessible through the attributes :guilabel:`pre_type` and :guilabel:`post_type`: + +.. code-block:: python + + # Get the pre-/post-synaptic cell types + ct_pre = cs.pre_type + ct_pos = cs.pos_type + + # Get the name of the pre-/post-synaptic cell types + print(f"My pre-type is {cs.pre_type_name}") + print(f"My post-type is {cs.post_type_name}") + +Connections +=========== + +A list of all the cell pairs for every ``ConnectivitySet`` can be loaded with the +method :meth:`~.storage.interfaces.ConnectivitySet.load_connections`. + +.. code-block:: python + + for (src_locs, dest_locs) in cs.load_connections(): + print(f"Cell id: {src_locs[0]} connects to cell {dest_locs[0]}") + +Here, ``src_locs`` and ``dest_locs`` contains for each ``pair``: + +- the cell id +- the cell morphology branch id +- the cell morphology branch point id + +.. note:: + If the pre-/post-synaptic neuron does not have a morphology then + their branch and point id in the connection is ``-1`` \ No newline at end of file diff --git a/docs/connectivity/connectivity-toc.rst b/docs/connectivity/connectivity-toc.rst index 05742ab79..66483aa0f 100644 --- a/docs/connectivity/connectivity-toc.rst +++ b/docs/connectivity/connectivity-toc.rst @@ -1,3 +1,6 @@ +Connectivity +============ + .. toctree:: :maxdepth: 2 :caption: Connectivity @@ -6,3 +9,4 @@ component connection-strategies geometric + connectivity-set diff --git a/docs/connectivity/defining.rst b/docs/connectivity/defining.rst index 576bc9d4c..4f563cf43 100644 --- a/docs/connectivity/defining.rst +++ b/docs/connectivity/defining.rst @@ -1,27 +1,40 @@ ==================== -Defining connections +Connectivity ==================== +The connection between cells is managed with ``ConnectivityStrategy`` objects. A strategy +present all the rules to apply for the definition of connection among cells. In BSB is implemented +a set of strategies ready to use (here is a :doc:`list `), but it also possible to build a customised strategy. +Once created the connectivity are stored in :class:`ConnectivitySets <.storage.interfaces.ConnectivitySet>`. + Adding a connection type ======================== Connections are defined in the configuration under the ``connectivity`` block: -.. code-block:: json +.. tab-set-code:: + .. code-block:: json + + "connectivity": { + "type_A_to_type_B": { + "strategy": "bsb.connectivity.VoxelIntersection", + "presynaptic": { + "cell_types": ["type_A"] + }, + "postsynaptic": { + "cell_types": ["type_B"] + } + } + } + .. code-block:: python + + config.connectivity.add( + "type_A_to_type_B", + strategy="bsb.connectivity.VoxelIntersection", + presynaptic=dict(cell_types=["type_A"]), + postsynaptic=dict(cell_types=["type_B"]), + ) - { - "connectivity": { - "type_A_to_type_B": { - "strategy": "bsb.connectivity.VoxelIntersection", - "presynaptic": { - "cell_types": ["type_A"] - }, - "postsynaptic": { - "cell_types": ["type_B"] - } - } - } - } * :guilabel:`strategy`: Which :class:`~.connectivity.strategy.ConnectionStrategy` to load. * :guilabel:`pre`/:guilabel:`post`: The pre/post-synaptic @@ -47,58 +60,109 @@ Each hemitype (:guilabel:`presynaptic` and :guilabel:`postsynaptic`) accepts an additional list of labels to filter the cell populations by. This can be used to connect subpopulations of cells that are labelled with any of the given labels: -.. code-block:: json - - { - "components": ["my_module.py"], - "connectivity": { - "type_A_to_type_B": { - "class": "my_module.ConnectBetween", - "min": 10, - "max": 15.5, - "presynaptic": { - "cell_types": ["type_A"], - "labels": ["subgroup1", "example2"] - }, - "postsynaptic": { - "cell_types": ["type_B"] +.. tab-set-code:: + + .. code-block:: json + + { + "connectivity": { + "type_A_to_type_B": { + "strategy": "bsb.connectivity.AllToAll", + "presynaptic": { + "cell_types": ["type_A"], + "labels": ["subgroup1", "subgroup2"] + }, + "postsynaptic": { + "cell_types": ["type_B"] + } } } - } - } + + .. code-block:: python + + config.connectivity.add( + "type_A_to_type_B", + strategy="bsb.connectivity.AllToAll", + presynaptic=dict(cell_types=["type_A"],labels=["subgroup1","subgroup2"]), + postsynaptic=dict(cell_types=["type_B"]), + ) This snippet would connect only the cells of ``type_A`` that are labelled with either -``subgroup1`` or ``example2``, to all of the cells of ``type_B``, within 10 to 15.5 -micrometer distance of each other. +``subgroup1`` or ``subgroup2``, to all of the cells of ``type_B``. Specifying subcellular regions using morphology labels ====================================================== -You can also specify which regions on a morphology you're interested in connecting. By +You can also specify which regions on a morphology you are interested in connecting. By default axodendritic contacts are enabled, but by specifying different :guilabel:`morphology_labels` you can alter this behavior. This example lets you form dendrodendritic contacts: -.. code-block:: json - - { - "components": ["my_module.py"], - "connectivity": { - "type_A_to_type_B": { - "class": "my_module.ConnectBetween", - "min": 10, - "max": 15.5, - "presynaptic": { - "cell_types": ["type_A"], - "morphology_labels": ["dendrites"] - }, - "postsynaptic": { - "cell_types": ["type_B"], - "morphology_labels": ["dendrites"] +.. tab-set-code:: + .. code-block:: json + + { + "connectivity": { + "type_A_to_type_B": { + "strategy": "bsb.connectivity.VoxelIntersection", + "presynaptic": { + "cell_types": ["type_A"], + "morphology_labels": ["dendrites"] + }, + "postsynaptic": { + "cell_types": ["type_B"], + "morphology_labels": ["dendrites"] + } + } } } - } - } + + .. code-block:: python + + config.connectivity.add( + "type_A_to_type_B", + strategy="bsb.connectivity.VoxelIntersection", + presynaptic=dict(cell_types=["type_A"],morphology_labels= ["dendrites"]), + postsynaptic=dict(cell_types=["type_B"],morphology_labels= ["dendrites"]), + ) + In general this works with any label that is present on the morphology. You could process your morphologies to add as many labels as you want, and then create different -connectivity targets. \ No newline at end of file +connectivity targets. + +Define an order for the execution of your Connectivity Strategies +================================================================= + +It may be necessary to establish certain connections only after specific strategies have been executed. +In such cases, you can define a list of strategies as dependencies. +For example, you can create a :guilabel:`secondary_connection` that is established only after the +:guilabel:`type_A_to_type_B` connectivity has been completed. + +.. tab-set-code:: + .. code-block:: json + + { + "connectivity": { + "secondary_connection": { + "strategy": "bsb.connectivity.VoxelIntersection", + "presynaptic": { + "cell_types": ["type_B"], + }, + "postsynaptic": { + "cell_types": ["type_C"], + }, + "depends_on": ["type_A_to_type_B"] + } + } + } + + .. code-block:: python + + config.connectivity.add( + "secondary_connection", + strategy="bsb.connectivity.VoxelIntersection", + presynaptic=dict(cell_types=["type_B"]), + postsynaptic=dict(cell_types=["type_C"]), + depends_on= ["type_A_to_type_B"] + ) + diff --git a/docs/core/core-toc.rst b/docs/core/core-toc.rst new file mode 100644 index 000000000..5791f91db --- /dev/null +++ b/docs/core/core-toc.rst @@ -0,0 +1,11 @@ +BSB core +======== + +.. toctree:: + :maxdepth: 2 + :caption: BSB core + + /core/scaffold + /config/configuration-toc + /core/storage + /core/job-distribution diff --git a/docs/core/job-distribution.rst b/docs/core/job-distribution.rst new file mode 100644 index 000000000..1f05303c9 --- /dev/null +++ b/docs/core/job-distribution.rst @@ -0,0 +1,71 @@ +Workflow parallelization +======================== + +The BSB includes a full `MPI` interface to distribute the reconstruction jobs across the cores +allocated to the reconstruction and simulation of your networks. You would have to install the +MPI library and the BSB interface to benefit from this feature (see the corresponding section in +the :doc:`/getting-started/installation`) + + +Job parallelization +------------------- + +Let us see how the BSB jobs are created: + +The BSB decomposes your `Scaffold` topology (`Region` and `Partition`) into a list of +:class:`Chunk <.storage._chunks.Chunk>` (parallelepipeds) of same size (and volume). The idea +is to consider the `Chunk` as independent from each other so that you can also decompose each +reconstruction task into a list of small tasks to apply to each `Chunk`. All reconstruction +jobs that happen after the creation of the topology follow this strategy. + +The size and shape of the `Chunk` have a strong impact on the efficiency of the BSB parallelization. +Indeed, having a lot of very small `Chunk` would result in a lot of reading and writing in +the `Storage`. On the other hand, a short list of large `Chunk` will take longer to be completed +by each process, as bigger volumes imply a larger amount of constrains to fulfill. + +The Chunks' dimensions in µm can be set in the `Configuration` in the ``Network`` node: + +.. tab-set-code:: + + .. code-block:: json + + "network": { + "x": 200.0, + "y": 200.0, + "z": 200.0, + "chunk_size": [50, 20, 10] + } + + .. code-block:: yaml + + network: + x: 200 + y: 200 + z: 200 + chunk_size: + - 50 + - 20 + - 10 + + .. code-block:: python + + config.network.x = 200.0 + config.network.y = 200.0 + config.network.z = 200.0 + config.network.chunk_size = [50, 20, 10] + +As you can see the dimensions of the Chunks can differ according to each dimension. + +Running the BSB in parallel +--------------------------- + +You can run any bsb command or python scripts with MPI with the ``mpirun`` command, +specifying the number of core to allocate: + +.. code-block:: bash + + # run the BSB reconstruction with 5 cores + mpirun -n 5 bsb compile my-config.json -v 3 + + # run a python script in parallel with 4 cores + mpirun -n 4 python my-script.py diff --git a/docs/core/scaffold.rst b/docs/core/scaffold.rst new file mode 100644 index 000000000..092671c4e --- /dev/null +++ b/docs/core/scaffold.rst @@ -0,0 +1,64 @@ +######## +Scaffold +######## + +:class:`~.core.Scaffold` is the main object of the BSB infrastructure (see the +:doc:`/getting-started/top-level-guide` for an introduction to this class). + +Properties +---------- + +The Scaffold object tights together the network description +of the ``Configuration`` with the data stored in the :class:`~.storage.Storage`. +You can access the latter classes with respectively the +:meth:`scaffold.configuration <.core.Scaffold.configuration>` and the +:meth:`scaffold.storage <.core.Scaffold.storage>` attributes. +Scaffold also provides a direct access to all of its main configuration components as class attributes: + +- :attr:`scaffold.network <.core.Scaffold.network>` -> :class:`~.config._config.NetworkNode` +- :attr:`scaffold.regions <.core.Scaffold.regions>` -> :class:`~.topology.region.Region` +- :attr:`scaffold.partitions <.core.Scaffold.partitions>` -> :class:`~.topology.partition.Partition` +- :attr:`scaffold.cell_types <.core.Scaffold.cell_types>` -> :class:`~.cell_types.CellType` +- :attr:`scaffold.morphologies <.core.Scaffold.morphologies>` -> :class:`~.morphologies.Morphology` +- :attr:`scaffold.morphologies <.core.Scaffold.morphologies>` -> :class:`~.cell_types.CellType` +- :attr:`scaffold.placement <.core.Scaffold.placement>` -> :class:`~.placement.strategy.PlacementStrategy` +- :attr:`scaffold.connectivity <.core.Scaffold.connectivity>` -> :class:`~.connectivity.strategy.ConnectionStrategy` +- :attr:`scaffold.simulations <.core.Scaffold.simulations>` -> :class:`~.simulation.simulation.Simulation` +- :attr:`scaffold.after_placement <.core.Scaffold.after_placement>` -> :class:`~.postprocessing.AfterPlacementHook` +- :attr:`scaffold.after_connectivity <.core.Scaffold.after_connectivity>` -> :class:`~.postprocessing.AfterConnectivityHook` + +There are also a list of methods starting with ``get_`` that allows you to retrieve these components with some +additional filtering parameters (:meth:`get_cell_types <.core.Scaffold.get_cell_types>`, +:meth:`get_placement <.core.Scaffold.get_placement>`, +:meth:`get_placement_of <.core.Scaffold.get_placement_of>`, +:meth:`get_connectivity <.core.Scaffold.get_connectivity>`) + +Workflow methods +---------------- + +Scaffold contains also all the functions required to run the reconstruction pipeline, and to simulate +the resulting networks. +You can run the full reconstruction with the :meth:`compile <.core.Scaffold.compile>` method or any of its sub-step: + +- Topology creation / update: :meth:`resize <.core.Scaffold.resize>` +- Cell placement: :meth:`run_placement <.core.Scaffold.run_placement>` +- After placement hook: :meth:`run_after_placement <.core.Scaffold.run_after_placement>` +- Cell connectivity: :meth:`run_connectivity <.core.Scaffold.run_connectivity>` +- After placement hook: :meth:`run_after_connectivity <.core.Scaffold.run_after_connectivity>` +- Run a simulation: :meth:`run_simulation <.core.Scaffold.run_simulation>` + +Similarly, you can clear the results of the reconstruction stored so far with the :meth:`clear <.core.Scaffold.clear>` +or any of its sub-step: + +- Cell placement: :meth:`clear_placement <.core.Scaffold.clear_placement>` +- Cell connectivity: :meth:`clear_connectivity <.core.Scaffold.clear_connectivity>` + +Get Stored data +--------------- + +You can also inspect the data produced during the reconstruction from the storage: + +- :class:`~.storage.interfaces.PlacementSet` from :meth:`get_placement_set <.core.Scaffold.get_placement_set>`, + :meth:`get_placement_sets <.core.Scaffold.get_placement_sets>` +- :class:`~.storage.interfaces.ConnectivitySet` from :meth:`get_connectivity_set <.core.Scaffold.get_connectivity_set>`, + :meth:`get_connectivity_sets <.core.Scaffold.get_connectivity_sets>` diff --git a/docs/core/storage.rst b/docs/core/storage.rst new file mode 100644 index 000000000..7184c6fbe --- /dev/null +++ b/docs/core/storage.rst @@ -0,0 +1,18 @@ +####### +Storage +####### + +**to do** + +Storage engines +=============== +**to do** + +FS +-- + +**to do** + +HDF5 +---- +**to do** diff --git a/docs/dev/dev-toc.rst b/docs/dev/dev-toc.rst new file mode 100644 index 000000000..9281a7b77 --- /dev/null +++ b/docs/dev/dev-toc.rst @@ -0,0 +1,15 @@ +Developer guides +================ + +.. toctree:: + :maxdepth: 2 + :caption: Developer guides + + guidelines + installation + documentation + services + projects + plugins + hooks + reference \ No newline at end of file diff --git a/docs/dev/documentation.rst b/docs/dev/documentation.rst index f6886b024..594d47b2c 100644 --- a/docs/dev/documentation.rst +++ b/docs/dev/documentation.rst @@ -2,13 +2,14 @@ Documentation ############# -Install the documentation dependencies of the BSB: +The libraries necessary for building the documentation can be installed through: .. code-block:: bash pip install -e .[docs] -Then navigate to the ``docs`` directory and run: +You should have it if you install it with the ``dev`` flag. +You can build the documentations by navigate to the ``docs`` directory and run: .. code-block:: bash @@ -17,9 +18,23 @@ Then navigate to the ``docs`` directory and run: The output will be in the ``/docs/_build`` folder. +.. note:: + Note that the command ``make html`` by default does not show you warnings in the documentations. + These warnings will not pass the tests on the Github repository. To test if the documentations + was properly implemented, prefer the command: + + .. code-block:: bash + + sphinx-build -nW -b html . _build/html + Conventions =========== +| Except for the files located at the root of the project (e.g.: README.md), the documentation is written in + `reStructuredText `_ . Docstrings + in the python code should therefore be in the reStructuredText (``reST``) format. +| In the documentation, the following rules should be implemented: + * Values are marked as ``5`` or ``"hello"`` using double backticks (\`\` \`\`). * Configuration attributes are marked as :guilabel:`attribute` using the guilabel directive (``:guilabel:`attribute```) diff --git a/docs/dev/faq.rst b/docs/dev/faq.rst new file mode 100644 index 000000000..54532a572 --- /dev/null +++ b/docs/dev/faq.rst @@ -0,0 +1,44 @@ +.. _faq: + +### +FAQ +### + +.. dropdown:: How to make the BSB work with NEST and MUSIC in an MPI context? + :animate: fade-in-slide-down + + .. rubric:: Context + + When I simulate/reconstruct my BSB network in a context with `NEST` and `MUSIC` in parallel + (with `MPI`), I encounter the following bug: + + .. code-block:: bash + + [ERROR] [2024.11.26 16:13:3 /path/to/nest-simulator/nestkernel/mpi_manager.cpp:134 @ MPIManager::init_mpi()] : + When compiled with MUSIC, NEST must be initialized before any other modules that call MPI_Init(). Calling MPI_Abort(). + -------------------------------------------------------------------------- + MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD + with errorcode 1. + + NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes. + You may or may not see output from other processes, depending on + exactly when Open MPI kills them. + -------------------------------------------------------------------------- + + .. rubric:: Explanation + + This issue happens because MUSIC requires you to prepare the NEST context before the MPI context. + In other words, you should import ``nest`` before importing ``mpi4py`` if you have installed NEST + with MUSIC. Yet, the BSB leverages MPI for parallelizing the tasks of reconstructing or simulating + your network, so it imports mpi4py. + + Using the BSB with NEST and MUSIC is therefore only possible through python scripts. + At the start of the python scripts that needs to import bsb, add an extra line before to import + nest even if you are not using it: + + .. code-block:: python + + import nest + from bsb import Scaffold + + # rest of your code here. diff --git a/docs/dev/guidelines.rst b/docs/dev/guidelines.rst index 708fb3171..3529a4333 100644 --- a/docs/dev/guidelines.rst +++ b/docs/dev/guidelines.rst @@ -1,3 +1,5 @@ +.. _development-section: + #################### Developer Guidelines #################### @@ -8,9 +10,6 @@ the communication with its maintainer and smoothen the process of integration an Please, read first our `code of conduct `_ to understand how to interact with the BSB community |:heart:| -Development process -------------------- - Raise issue on Github ~~~~~~~~~~~~~~~~~~~~~ If you wish to contribute or raise an issue on the BSB project, you should first check the list of known @@ -23,14 +22,18 @@ If you need to create an issue on Github, please provide as much context as poss Fork and create a Pull Request ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -If you are not part of the BSB maintainers, you should fork the bsb repository on your own account to modify the code. +If you are not part of the BSB maintainers, you should +`fork `_ +the bsb repository on your own account to modify the code. If you introduce new features to BSB, please provide the associated documentation (docstrings or general documentation), and unittests. We are trying to improve the coverage for both and would appreciate greatly your contribution. The documentation, tests and code style (black, isort) is controlled for each commit on the repository, so please install the :doc:`pre-commit hooks ` and run the following tests before pushing on the repository: -To install:: +To install: + +.. code-block:: bash cd bsb-core black . diff --git a/docs/dev/installation.rst b/docs/dev/installation.rst index 0fed7cddb..81855afee 100644 --- a/docs/dev/installation.rst +++ b/docs/dev/installation.rst @@ -2,15 +2,21 @@ Developer Installation ###################### -To install:: +.. start-dev-install + +To install bsb from the source code: + +.. code-block:: bash git clone git@github.com:dbbs-lab/bsb-core cd bsb-core pip install -e .[dev] pre-commit install +The ``dev`` installation contains all the necessary libraries to run bsb, perform the unittests and build the +bsb documentation. You can test your installation with: -Test your install with:: +.. code-block:: bash cd tests/ python -m unittest discover -s ./ diff --git a/docs/dev/plugins.rst b/docs/dev/plugins.rst index e97442ad9..a1a690cb2 100644 --- a/docs/dev/plugins.rst +++ b/docs/dev/plugins.rst @@ -16,7 +16,9 @@ The plugin system detects pip packages that define ``entry_points`` of the plugi category. Entry points can be specified in your package's ``setup`` using the ``entry_point`` argument. See the `setuptools documentation `_ for a full -explanation. Here are some plugins the BSB itself registers:: +explanation. Here are some plugins the BSB itself registers: + +.. code-block:: python entry_points={ "bsb.adapters": [ diff --git a/docs/dev/projects.rst b/docs/dev/projects.rst new file mode 100644 index 000000000..19021065c --- /dev/null +++ b/docs/dev/projects.rst @@ -0,0 +1,66 @@ +.. _projects: + +#################################### +Configuring your BSB Python Projects +#################################### + +* ``[tools.bsb]``: The root configuration section: + You can set the values of any :doc:`/cli/options` here. + + * ``[tools.bsb.links]``: Contains the :ref:`file link ` definitions. + + * ``[tools.bsb.links."my_network.hdf5"]``: Storage specific file links + In this example for a storage object called "my_network.hdf5" + +.. code-block:: toml + + [tools.bsb] + verbosity = 3 + + [tools.bsb.links] + config = "auto" + + [tools.bsb.links."thalamus.hdf5"] + config = [ "sys", "thalamus.json", "always",] + +.. _file_link: + +File links +========== + +Remember that the `Storage` keeps copies of your `Configuration` and any data attached to it. +For instance, a copy of each unique `Morphology` attached to your cell types is stored within +your `Storage`. Now, these copies might become outdated during development. +Fortunately, you can automatically update them, using file links. + +.. warning:: + It is recommended that you only specify links for models that you are actively developing, + to avoid overwriting and losing any unique configs or morphologies of a model. + +Config links +------------ + +Configuration links (``config =``) can be either *fixed* or *automatic*. + +- Fixed config links will always overwrite the stored data of your `Scaffold` with the + contents of the file, if it exists. +- Automatic config links do the same, but keep track of the path of the last saved config + file, and stay linked with that file. + +Syntax +------ + +For each file to link, you need to provide a list of 3 parameters: + +- The first argument is the *provider* of the link (i.e., the engine to access the file): + Most of the time, your will use ``sys`` for the file system (your folder). Note that you + can also specify any of the BSB :doc:`storage engines ` such as ``fs``. +- The second argument is the path to the file, +- the third argument is when to update, but is unused! For automatic config links you can + simply pass the ``"auto"`` string. + +.. note:: + + Links in ``tools.bsb.links`` are active for all models in your project! It's better to + specify them on a per model basis using the ``tools.bsb.links."my_model_name.hdf5"`` + section. diff --git a/docs/examples/atlas/atlas_placement.rst b/docs/examples/atlas/atlas_placement.rst index a414b4637..5d7905429 100644 --- a/docs/examples/atlas/atlas_placement.rst +++ b/docs/examples/atlas/atlas_placement.rst @@ -22,7 +22,7 @@ the CCFv3 mouse brain annotation atlas volume from the Allen Institute website. Use :guilabel:`mask_source` to provide your own nrrd annotation volume. The :guilabel:`struct_name` refers to the Allen mouse brain region acronym or name. -You can also replace that with :guilabel:`struct_id`, if you're using the numeric identifiers. +You can also replace that with :guilabel:`struct_id`, if you are using the numeric identifiers. You can find the ids, acronyms and names in the Allen Brain Atlas brain region hierarchy file. If we now place our ``my_cell`` in the ``declive``, it will be placed with a fixed diff --git a/docs/examples/label_cells.rst b/docs/examples/label_cells.rst new file mode 100644 index 000000000..3a7efce56 --- /dev/null +++ b/docs/examples/label_cells.rst @@ -0,0 +1,55 @@ +How to label neurons +******************** + +After placing cells inside the scaffold model, it is possible to define postprocessing +functions that modify some features of the scaffold. For instance, it is possible to +define a function that, given a specific cell type, assigns a label to each cell belonging +to that cell type (e.g., subdivide a certain population into different subpopulations +according to their position in the 3D space.) + +Postprocessing functions can be configured in the ``after_placement`` dictionary of the +root node of the configuration file, specifying each postprocessing function with its +name, e.g. "Labels": + +.. code-block:: json + + { + "after_placement": { + "Labels": { + "strategy": "my_model.postprocessing.LabelCellA", + "cell_type": "cell_A" + } + } + } + +For more information on linking your Python classes to the configuration file see +:doc:`this section `. + +Example of a Python class for labeling neurons +---------------------------------------------- + +.. literalinclude:: /../examples/cells/label_cells.py + :language: python + :lines: 2- + +In this example, we can see that the ``LabelCellA`` class must inherit from +``AfterPlacementHook`` and it must specify a method ``postprocess`` in which the +neural population ``cell_A`` is subdivided into two populations. + +Here, along the chosen axis, cells placed above the mean position of the population +will be assigned the label ``cell_A_type_1`` and the rest ``cell_A_type_2``. + +You can then filter back these cells like so: + +.. code-block:: python + + from bsb import from_storage + + scaffold = from_storage("my_network.hdf5") + ps = scaffold.get_placement_set("cell_A") + subpopulation_1 = ps.get_labelled(["cell_A_type_1"]) + subpopulation_2 = ps.get_labelled(["cell_A_type_2"]) + + # or alternatively directly filter when loading the placement set + ps_1 = scaffold.get_placement_set("cell_A", labels=["cell_A_type_1"]) + ps_2 = scaffold.get_placement_set("cell_A", labels=["cell_A_type_2"]) diff --git a/docs/examples/networks/create.rst b/docs/examples/networks/create.rst deleted file mode 100644 index 12e002b83..000000000 --- a/docs/examples/networks/create.rst +++ /dev/null @@ -1,24 +0,0 @@ -Creating networks -================= - -Default network ---------------- - -The default configuration contains a skeleton configuration, for an HDF5 storage, without -any components in it. The file will be called something like -``scaffold_network_2022_06_29_10_10_10.hdf5``, and will be created once you construct the -:class:`~.core.Scaffold` object: - -.. literalinclude:: /../examples/networks/create_default.py - :language: python - :lines: 2- - -Network from config -------------------- - -You can also first load or create a :class:`~.config.Configuration` object, and create a -network from it, by passing it to the :class:`~.core.Scaffold`: - -.. literalinclude:: /../examples/networks/create_from_cfg.py - :language: python - :lines: 2- diff --git a/docs/examples/networks/data.rst b/docs/examples/networks/data.rst deleted file mode 100644 index 1d0835eeb..000000000 --- a/docs/examples/networks/data.rst +++ /dev/null @@ -1,35 +0,0 @@ -Accessing network data -====================== - -Configuration -------------- - -The configuration of a network is available as ``network.configuration``, the root nodes -such as ``cell_types``, ``placement`` and others are available on ``network`` as well. - -.. literalinclude:: /../examples/networks/access_config.py - :language: python - :lines: 2- - -Placement data --------------- - -The placement data is available through the :class:`.storage.interfaces.PlacementSet` -interface. This example shows how to access the cell positions of each population: - -.. literalinclude:: /../examples/networks/access_placement.py - :language: python - :lines: 2- - -.. seealso:: - - :meth:`~.storage.interfaces.PlacementSet.load_morphologies`, - :meth:`~.storage.interfaces.PlacementSet.load_rotations`. - -.. todo:: - - Document best practices for the morphology data - -.. todo:: - - Document best practices for the connectivity data diff --git a/docs/examples/networks/load.rst b/docs/examples/networks/load.rst deleted file mode 100644 index d6016d9b1..000000000 --- a/docs/examples/networks/load.rst +++ /dev/null @@ -1,8 +0,0 @@ -Loading a network from file -=========================== - -You can load a stored network from file using :meth:`bsb.core.from_storage`: - -.. literalinclude:: /../examples/networks/load.py - :language: python - :lines: 2- diff --git a/docs/examples/place_distribution.rst b/docs/examples/place_distribution.rst new file mode 100644 index 000000000..9dee32d43 --- /dev/null +++ b/docs/examples/place_distribution.rst @@ -0,0 +1,227 @@ +Distribution-based Placement Strategy +===================================== + +.. note:: + This example presents in more advanced tutorial to write BSB components. + If you are not familiarized with BSB components, check out + the getting started :doc:`section ` + on writing components. + +We will start from the following configuration file (corresponds to the first network file +from the getting started tutorial): + +.. literalinclude:: /getting-started/configs/getting-started.json + :language: json + +Let's save this new configuration in our project folder under the name ``config_placement.json`` + +Description of the strategy to implement +---------------------------------------- + +We want here to implement a distribution placement strategy: cells will be placed within +their `Partition` following a probability ``distribution`` along a certain ``axis`` and +``direction``. For instance, let us use the +:doc:`alpha random distribution `: + +.. figure:: /images/plot_alpha.png + :figwidth: 90% + +The ``distribution`` should be a density function that produces random numbers, according +to the distance along the ``axis`` from a border of the Partition. + +Here, we want to control the distribution of the cells within the ``base_layer`` +with respect to the border with the ``top_layer``. + +Components boiler plate +----------------------- + +We will write our `PlacementStrategy` class in a ``placement.py`` file, + +.. code-block:: python + + from bsb import config, PlacementStrategy + + @config.node + class DistributionPlacement(PlacementStrategy): + + # add your attributes here + + def place(self, chunk, indicators): + # write your code here + pass + +Here, our class will extend from +:class:`PlacementStrategy <.placement.strategy.PlacementStrategy>` which is an +abstract class that requires you to implement the +:meth:`place <.placement.strategy.PlacementStrategy.place>` function. + +Note that this strategy leverages the ``@config.node`` `python decorator`. +The :doc:`configuration node decorator` allows you to pass the parameters +defined in the configuration file to the class. It will also handle the +:doc:`type testing ` of your configuration attributes (e.g., make sure your +``axis`` parameter is a positive integer). We will see in the following sections how +to create your class configuration attributes. + +Add configuration attributes +---------------------------- + +For our strategy, we need to pass a list of parameters to its class +through our configuration file: + +- a density function ``distribution``, defined by the user, from the list of + :doc:`scipy stats ` functions. +- an ``axis`` along which to apply the distribution. The latter should be in [0, 1, 2] +- a ``direction`` that if set will apply the distribution along the ``"negative"`` direction, + i.e from top to bottom (``"positive"`` direction if not set). + +This translates into 3 configuration attributes that you can add to your class: + +.. code-block:: python + + from bsb import config, PlacementStrategy, types + + @config.node + class DistributionPlacement(PlacementStrategy): + + distribution = config.attr(type=types.distribution(), required=True) + axis: int = config.attr(type=types.int(min=0, max=2), required=False, default=2) + direction: str = config.attr(type=types.in_(["positive", "negative"]), + required=False, default="positive") + + def place(self, chunk, indicators): + # write your code here + pass + +| In this case, ``distribution`` is required, and should correspond to a + :class:`distribution <.config._distributions.Distribution>` node which interface scipy distributions. +| ``axis`` here is an optional integer attribute with a default value set to 2. +| Finally, ``direction`` is an optional string attribute that can be either the string ``"positive"`` + or ``"negative"`` (see :func:`in_ <.config.types.in_>`). + +At this stage, you have created a python class with minimal code implementation, you should +now link it to your configuration file. To import our class in our configuration file, we +will modify the :guilabel:`placement` block: + +.. code-block:: json + + "placement": { + "alpha_placement": { + "strategy": "placement.DistributionPlacement", + "distribution": { + "distribution": "alpha", + "a": 8 + }, + "axis": 0, + "direction": "negative", + "cell_types": ["base_type"], + "partitions": ["base_layer"] + }, + "top_placement": { + "strategy": "bsb.placement.RandomPlacement", + "cell_types": ["top_type"], + "partitions": ["top_layer"] + } + } + +Implement the python methods +---------------------------- +The `place` function will be used here to produce and store a +:class:`PlacementSet <.storage.interfaces.PlacementSet>` for each `cell type` population +to place in the selected `Partition`. +BSB is parallelizing placement jobs for each `Chunk` concerned. + +The parameters of `place` includes a dictionary linking each cell type name to its +:class:`PlacementIndicator <.placement.indicator.PlacementIndicator>`, and the `Chunk` +in which to place the cells. + +We need to apply our distribution to each Partition of our circuit to see how +the cells are distributed within, along our directed axis. +Let's make two for loops to iterate over the Partitions of each indicator. +Then, we extract the number of cells to place within the total Partition, using +the :meth:`guess <.placement.indicator.PlacementIndicator.guess>` function. +For that, we will convert the partition into a list of voxels. + +.. literalinclude:: /../examples/tutorials/distrib_placement.py + :language: python + :lines: 54-62 + +Now, our function is supposed to place cells within only one Chunk. Fortunately, +Partitions can be decomposed into Chunks. So, we can retrieve from the +distribution the number of cells to place within the ``chunk`` parameter of the +function, according to its position along the directed ``axis``. + +To do so, we need to define the interval occupied by the chunk within the partition. +We will leverage the lowest and highest coordinates of the chunk and partition with +respectively the attributes ``ldc`` and ``mdc``. + +.. literalinclude:: /../examples/tutorials/distrib_placement.py + :language: python + :lines: 63-68 + +``bounds`` is here the interval of ratios of the space occupied by a Chunk within the Partition +along the chosen axis. + +We also need to take into account the case where the direction is negative. In this case, we should +invert the interval. E.g., if the ``bounds`` is [0.2, 0.3] then the inverted interval is [0.7, 0.8]. + +.. literalinclude:: /../examples/tutorials/distrib_placement.py + :language: python + :lines: 68-73 + +Great, we have the interval on which we want to place our cells. +Now, we will check how many cells to place within this interval according to our distribution +along the provided axis, knowing the total number of cells to place within the partition. +We will create a separate function for this called ``draw_interval``. +Additionally, we also need to take into account the two other dimensions. We will compute the +ratio of area occupied by the chunk along the two other directions: + +.. literalinclude:: /../examples/tutorials/distrib_placement.py + :language: python + :lines: 75-82 + +So, your final place function should look like this + +.. literalinclude:: /../examples/tutorials/distrib_placement.py + :language: python + :lines: 54-89 + +``draw_interval`` will leverage an +`acceptance-rejection method `_ . +In short, this method will draw n random values within [0, 1] and return the number which value +is less than the probability according to the the distribution to fall in the provided interval +boundaries. +We will retrieve the interval of definition of the distribution and within boundaries of our +provided ratio interval. + +.. literalinclude:: /../examples/tutorials/distrib_placement.py + :language: python + :lines: 34-41 + +From the distribution, we can retrieve the probability for a drawn random value be lesser than +the upper bound and the probability for it to be greater than the lower bound. + +.. literalinclude:: /../examples/tutorials/distrib_placement.py + :language: python + :lines: 42-45 + +Finally, we apply the acceptance-rejection algorithm to see how much of the cells to place in +the partition should be placed in the chunk: + +.. literalinclude:: /../examples/tutorials/distrib_placement.py + :language: python + :lines: 46-52 + +We are done with the Placement! Here is how the full strategy looks like: + +.. literalinclude:: /../examples/tutorials/distrib_placement.py + :language: python + +Enjoy +----- + +You have done the hardest part! Now, you should be able to run the reconstruction once again +with your brand new component. + +.. code-block:: bash + + bsb compile config_placement.json --verbosity 3 diff --git a/docs/examples/plot_morpho.rst b/docs/examples/plot_morpho.rst new file mode 100644 index 000000000..653aa90c9 --- /dev/null +++ b/docs/examples/plot_morpho.rst @@ -0,0 +1,22 @@ +Display morphologies from a compiled network +============================================ + +There are several tools that you can use to visualize morphologies. Among them, you can use: + +- `NeuroTessMesh `_ +- `Brayns `_ (efficient for large scale networks) +- `NeuroMorphoVis `_ +- Matplotlib but only for a couple of morphologies + +Here is a small code snippet showing how you can extract and display points of the morphology in 3D: + +.. literalinclude:: /../examples/plotting/plotting_with_branch_colors.py + :language: python + :lines: 2- + +Remember that you can also load morphologies directly from their swc files: + +.. code-block:: python + + from bsb import parse_morphology_file + morpho = parse_morphology_file("path/to/file.swc") diff --git a/docs/examples/toc.rst b/docs/examples/toc.rst index 4b49a14cc..c0ab2ea95 100644 --- a/docs/examples/toc.rst +++ b/docs/examples/toc.rst @@ -5,14 +5,9 @@ Examples .. toctree:: :maxdepth: 2 - :caption: Basics - - networks/create - networks/load - networks/data - -.. toctree:: - :maxdepth: 2 - :caption: Atlas + :caption: BSB Examples + label_cells + plot_morpho atlas/atlas_placement + place_distribution diff --git a/docs/getting-started/basics.rst b/docs/getting-started/basics.rst index 81cbfe979..4400647c3 100644 --- a/docs/getting-started/basics.rst +++ b/docs/getting-started/basics.rst @@ -1,9 +1,88 @@ -====================== -Managing network files -====================== +======================= +Managing Scaffold files +======================= -.. include:: /examples/networks/create.rst +.. note:: -.. include:: /examples/networks/load.rst + This guide is a continuation of the + :doc:`Getting Started guide `. + +In this tutorial, we assume that you have successfully reconstructed a network with BSB. +In this guide, you will learn how to access the data stored in your produced network + +Loading a scaffold from file +============================ + +To retrieve the information from your network file, you need to open it with Python. +To follow this tutorial, either create a new python file ``"load_data.py"`` in your project +folder. You can load a stored network from file using the method +:meth:`from_storage `: + +.. literalinclude:: /../examples/tutorials/load_data.py + :language: python + :lines: 3-5 + :emphasize-lines: 3 + +Once you have loaded the `Scaffold` object, you have access to its `Configuration` +and `Storage`. + +.. tip:: + + Remember that the storage is filled with the data produced during the reconstruction + while the configuration describes the process to obtain the data + (read again :doc:`this section ` if it is not clear to you). + +Accessing Scaffold data +======================= + +Configuration +------------- + +The Configuration of a Scaffold is available as ``scaffold.configuration``. +Its root components such as ``cell_types``, ``placement`` and others are +also directly available in the Scaffold object, so you can avoid some +needless typing and repetition. + +.. literalinclude:: /../examples/tutorials/load_data.py + :language: python + :lines: 8-11 + :emphasize-lines: 1 + +Placement data +-------------- + +The placement data is available through the :class:`PlacementSet <.storage.interfaces.PlacementSet>` +interface. You can access stored placement sets through their name or their cell type. +This example shows how to access the cell positions of each population: + +.. literalinclude:: /../examples/tutorials/load_data.py + :language: python + :lines: 14-19 + :emphasize-lines: 2 + +Take some time to familiarize yourself with `PlacementSet` methods +:doc:`here `. + +Connectivity data +----------------- + +The connectivity data is available through the +:class:`ConnectivitySet <.storage.interfaces.ConnectivitySet>` interface. +Remember that connection sets are labelled by default according to the connection strategy +used to obtain them (and the pre and postsynaptic cell types in case their are more than one). + +Here we are going to retrieve one connection set using its name (``"A_to_B"``) and print the neuron +id of each connected pair. + +.. literalinclude:: /../examples/tutorials/load_data.py + :language: python + :lines: 23-25 + :emphasize-lines: 1 + +See more info on how to manipulate `ConnectivitySet` :doc:`here `. + +What is next? +============= +At this stage, you can either learn about modeling :doc:`multi-compartment networks ` +or :doc:`point-neuron networks ` . -.. include:: /examples/networks/data.rst diff --git a/docs/getting-started/getting-started.json b/docs/getting-started/configs/getting-started.json similarity index 88% rename from docs/getting-started/getting-started.json rename to docs/getting-started/configs/getting-started.json index f0ccb32e6..417370e27 100644 --- a/docs/getting-started/getting-started.json +++ b/docs/getting-started/configs/getting-started.json @@ -5,9 +5,9 @@ "root": "network.hdf5" }, "network": { - "x": 400.0, - "y": 600.0, - "z": 400.0 + "x": 200.0, + "y": 200.0, + "z": 200.0 }, "regions": { "brain_region": { @@ -28,19 +28,19 @@ "cell_types": { "base_type": { "spatial": { - "radius": 2, - "density": 1e-3 + "radius": 2.5, + "density": 3.9e-4 } }, "top_type": { "spatial": { "radius": 7, - "count": 10 + "count": 40 } } }, "placement": { - "base_placement": { + "example_placement": { "strategy": "bsb.placement.RandomPlacement", "cell_types": ["base_type"], "partitions": ["base_layer"] diff --git a/docs/getting-started/configs/guide-nest.json b/docs/getting-started/configs/guide-nest.json new file mode 100644 index 000000000..72d65032d --- /dev/null +++ b/docs/getting-started/configs/guide-nest.json @@ -0,0 +1,127 @@ +{ + "name": "Starting example", + "storage": { + "engine": "hdf5", + "root": "network.hdf5" + }, + "network": { + "x": 200.0, + "y": 200.0, + "z": 200.0 + }, + "regions": { + "brain_region": { + "type": "stack", + "children": ["base_layer", "top_layer"] + } + }, + "partitions": { + "base_layer": { + "type": "layer", + "thickness": 100 + }, + "top_layer": { + "type": "layer", + "thickness": 100 + } + }, + "cell_types": { + "base_type": { + "spatial": { + "radius": 2.5, + "density": 3.9e-4 + } + }, + "top_type": { + "spatial": { + "radius": 7, + "count": 40 + } + } + }, + "placement": { + "example_placement": { + "strategy": "bsb.placement.RandomPlacement", + "cell_types": ["base_type"], + "partitions": ["base_layer"] + }, + "top_placement": { + "strategy": "bsb.placement.RandomPlacement", + "cell_types": ["top_type"], + "partitions": ["top_layer"] + } + }, + "connectivity": { + "A_to_B": { + "strategy": "bsb.connectivity.AllToAll", + "presynaptic": { + "cell_types": ["base_type"] + }, + "postsynaptic": { + "cell_types": ["top_type"] + } + } + }, + "simulations": { + "basal_activity": { + "simulator": "nest", + "resolution": 0.1, + "duration": 5000, + "cell_models": { + "base_type": { + "model": "iaf_cond_alpha" + }, + "top_type": { + "model": "iaf_cond_alpha", + "constants": { + "t_ref": 1.5, + "V_m": -62.0 + } + } + }, + "connection_models": { + "A_to_B": { + "synapse": { + "model": "static_synapse", + "weight": 300, + "delay": 1 + } + } + }, + "devices": { + "background_noise": { + "device": "poisson_generator", + "rate": 10, + "targetting": { + "strategy": "cell_model", + "cell_models": [ + "base_type" + ] + }, + "weight": 40, + "delay": 10 + }, + "base_layer_record": { + "device": "spike_recorder", + "delay": 0.1, + "targetting": { + "strategy": "cell_model", + "cell_models": [ + "base_type" + ] + } + }, + "top_layer_record": { + "device": "spike_recorder", + "delay": 0.1, + "targetting": { + "strategy": "cell_model", + "cell_models": [ + "top_type" + ] + } + } + } + } + } +} \ No newline at end of file diff --git a/docs/getting-started/configs/guide-nest.yaml b/docs/getting-started/configs/guide-nest.yaml new file mode 100644 index 000000000..67932071f --- /dev/null +++ b/docs/getting-started/configs/guide-nest.yaml @@ -0,0 +1,95 @@ +name: Starting example +storage: + engine: hdf5 + root: network.hdf5 +network: + x: 200 + y: 200 + z: 200 +regions: + brain_region: + type: stack + children: + - base_layer + - top_layer +partitions: + base_layer: + type: layer + thickness: 100 + top_layer: + type: layer + thickness: 100 +cell_types: + base_type: + spatial: + radius: 2.5 + density: 3.9e-4 + top_type: + spatial: + radius: 7 + count: 40 +placement: + example_placement: + strategy: bsb.placement.RandomPlacement + cell_types: + - base_type + partitions: + - base_layer + top_placement: + strategy: bsb.placement.RandomPlacement + cell_types: + - top_type + partitions: + - top_layer +connectivity: + A_to_B: + strategy: bsb.connectivity.AllToAll + presynaptic: + cell_types: + - base_type + postsynaptic: + cell_types: + - top_type +simulations: + basal_activity: + simulator: nest + resolution: 0.1 + duration: 5000 + cell_models: + base_type: + model: iaf_cond_alpha + top_type: + model: iaf_cond_alpha + constants: + t_ref: 1.5, + V_m: -62.0 + connection_models: + A_to_B: + synapse: + model: static_synapse + weight: 300 + delay: 1 + devices: + background_noise: + device: poisson_generator + rate: 10 + targetting: + strategy: cell_model + cell_models: + - base_type + weight: 40 + delay: 10 + base_layer_record: + device: spike_recorder + delay: 0.1 + targetting: + strategy: cell_model + cell_models: + - base_type + top_layer_record: + device: spike_recorder + delay: 0.1 + targetting: + strategy: cell_model + cell_models: + - top_type diff --git a/docs/getting-started/configs/guide-neuron.json b/docs/getting-started/configs/guide-neuron.json new file mode 100644 index 000000000..865d26b85 --- /dev/null +++ b/docs/getting-started/configs/guide-neuron.json @@ -0,0 +1,130 @@ +{ + "name": "DBBS test stellate rand circuit v4.0", + "storage": { + "engine": "hdf5", + "root": "my_network.hdf5" + }, + "network": { + "x": 100.0, + "y": 200.0, + "z": 300.0, + "chunk_size": [100, 100, 100] + }, + "partitions": { + "stellate_layer": { + "thickness": 300.0 + } + }, + "regions": { + "example_cortex": { + "type": "stack", + "children": ["stellate_layer"] + } + }, + "morphologies": [ + { + "file": "StellateCell.swc", + "parser":{ + "tags": { + 16: ["dendrites", "proximal_dendrites"], + 17: ["dendrites", "distal_dendrites"], + 18: ["axon", "axon_initial_segment"] + } + } + } + ], + "cell_types": { + "stellate_cell": { + "spatial": { + "radius": 4.0, + "density": 0.000005, + "morphologies": [ + { + "names": ["StellateCell"] + } + ] + } + } + }, + "placement": { + "stellate_placement": { + "strategy": "bsb.placement.RandomPlacement", + "partitions": ["stellate_layer"], + "cell_types": ["stellate_cell"] + } + }, + "connectivity": { + "stellate_to_stellate": { + "strategy": "bsb.connectivity.VoxelIntersection", + "presynaptic": { + "cell_types": ["stellate_cell"], + "morphology_labels" : ["axon"] + }, + "postsynaptic": { + "cell_types": ["stellate_cell"], + "morphology_labels" : ["dendrites"] + } + } + }, + "simulations": { + "neuronsim": { + "simulator": "neuron", + "duration": 100, + "resolution": 0.025, + "temperature": 32, + "cell_models": { + "stellate_cell": { + "model": "Stellate.definitionStellate", + "parameters": [] + } + }, + "connection_models": { + "stellate_to_stellate": + { + "synapses": [{"synapse": "GABA", "weight": 0.001, "delay": 1}] + } + }, + "devices": { + "spike_generator": { + "device": "spike_generator", + "start": 9, + "number": 1, + "weight": 0.01, + "delay": 1, + "targetting": { + "strategy": "by_id", + "ids": {"stellate_cell": [0]} + }, + "locations": { + "strategy": "branch", + "labels": ["dendrites"] + }, + "synapses" : ["AMPA", "NMDA"] + }, + "vrecorder": { + "device": "voltage_recorder", + "targetting": { + "strategy": "sphere", + "radius" : 100, + "origin" : [50, 100, 150], + "cell_models" : ["stellate_cell"] + } + }, + "synapses_rec":{ + "device": "synapse_recorder", + "synapse_types": ["AMPA", "NMDA", "GABA"], + "targetting": { + "strategy": "sphere", + "radius" : 100, + "origin" : [50, 100, 150], + "cell_models" : ["stellate_cell"] + }, + "locations":{ + "strategy": "branch", + "labels": ["dendrites"] + } + } + } + } + } +} diff --git a/docs/getting-started/include_morphos.json b/docs/getting-started/configs/include_morphos.json similarity index 80% rename from docs/getting-started/include_morphos.json rename to docs/getting-started/configs/include_morphos.json index 9530a07dd..a9ac494aa 100644 --- a/docs/getting-started/include_morphos.json +++ b/docs/getting-started/configs/include_morphos.json @@ -5,19 +5,15 @@ "root": "network.hdf5" }, "network": { - "x": 400.0, - "y": 600.0, - "z": 400.0 + "x": 200.0, + "y": 200.0, + "z": 200.0 }, "morphologies": [ "neuron_A.swc", { "name": "neuron_B", "file": "neuron2.swc" - }, - { - "name": "neuron_NM", - "file": "nm://cell005_GroundTruth" } ], "regions": { @@ -39,20 +35,17 @@ "cell_types": { "base_type": { "spatial": { - "radius": 2, - "density": 1e-3, - "morphologies": [ - "neuron_A" - ] + "radius": 2.5, + "density": 3.9e-4, + "morphologies": ["neuron_A"] } }, "top_type": { "spatial": { "radius": 7, - "count": 10, + "count": 40, "morphologies": [ - "neuron_B", - "neuron_NM" + "neuron_B" ] } } diff --git a/docs/getting-started/include_morphos.yaml b/docs/getting-started/configs/include_morphos.yaml similarity index 90% rename from docs/getting-started/include_morphos.yaml rename to docs/getting-started/configs/include_morphos.yaml index f68a10608..512b075fa 100644 --- a/docs/getting-started/include_morphos.yaml +++ b/docs/getting-started/configs/include_morphos.yaml @@ -3,9 +3,9 @@ storage: engine: hdf5 root: network.hdf5 network: - x: 400 - y: 600 - z: 400 + x: 200.0 + y: 200.0 + z: 200.0 morphologies: - neuron_A.swc - name: neuron_B @@ -28,15 +28,16 @@ partitions: cell_types: base_type: spatial: - radius: 2 - density: 0.001 + radius: 2.5 + density: 3.9e-4 morphologies: - neuron_A top_type: spatial: radius: 7 - count: 10 + count: 40 morphologies: + - neuron_B - neuron_NM placement: base_placement: diff --git a/docs/getting-started/data/StellateCell.swc b/docs/getting-started/data/StellateCell.swc new file mode 100644 index 000000000..736217d90 --- /dev/null +++ b/docs/getting-started/data/StellateCell.swc @@ -0,0 +1,3232 @@ +1 1 0.000000 0.000000 0.000000 1.087524 -1 +2 1 -0.027451 0.000000 -0.436272 1.906058 1 +3 1 -0.054901 0.000000 -0.872543 2.629511 2 +4 1 -0.082344 0.000000 -1.308815 3.123143 3 +5 1 -0.109795 0.000000 -1.745094 3.497705 4 +6 1 -0.137245 0.000000 -2.181366 3.786798 5 +7 1 -0.164688 0.000000 -2.617638 4.009215 6 +8 1 -0.192139 0.000000 -3.053917 4.176433 7 +9 1 -0.219589 0.000000 -3.490189 4.287353 8 +10 1 -0.247040 0.000000 -3.926460 4.350748 9 +11 1 -0.274483 0.000000 -4.362740 4.371357 10 +12 1 -0.301933 0.000000 -4.799011 4.350748 11 +13 1 -0.329384 0.000000 -5.235283 4.287353 12 +14 1 -0.356827 0.000000 -5.671555 4.176433 13 +15 1 -0.384277 0.000000 -6.107834 4.009215 14 +16 1 -0.411728 0.000000 -6.544106 3.786798 15 +17 1 -0.439171 0.000000 -6.980377 3.497705 16 +18 1 -0.466621 0.000000 -7.416656 3.123143 17 +19 1 -0.494072 0.000000 -7.852928 2.629511 18 +20 1 -0.521515 0.000000 -8.289200 1.906058 19 +21 16 -0.548965 0.000000 -8.725479 1.021649 20 +22 16 -1.299561 -0.009999 -8.055565 0.330000 21 +23 16 -1.579559 0.150001 -8.665565 0.320000 22 +24 16 -1.929558 0.150001 -9.005562 0.310000 23 +25 16 -2.039558 0.150001 -9.245560 0.310000 24 +26 16 -2.209564 0.610001 -9.455559 0.320000 25 +27 16 -2.409561 0.670000 -9.705559 0.320000 26 +28 16 -2.659561 0.290000 -10.035561 0.335000 27 +29 16 -2.719559 -0.080000 -10.355560 0.335000 28 +30 16 -2.819557 -0.380000 -10.685562 0.325000 29 +31 16 -2.939560 -0.730000 -10.945564 0.335000 30 +32 16 -2.909561 -1.630000 -11.235565 0.330000 31 +33 16 -2.879562 -2.299999 -11.485565 0.330000 32 +34 16 -2.839561 -3.110000 -11.635559 0.340000 33 +35 16 -3.159561 -3.679999 -11.745560 0.320000 34 +36 16 -0.548965 0.000000 -8.725479 1.021649 20 +37 16 -3.489563 0.220000 -5.895561 0.425000 36 +38 16 -3.959564 0.240001 -6.625565 0.425000 37 +39 16 -4.409561 0.380000 -7.195564 0.425000 38 +40 16 -4.899559 0.380000 -7.735565 0.425000 39 +41 16 -5.579559 0.450001 -8.135559 0.425000 40 +42 16 -5.579559 0.450001 -8.135559 0.415000 41 +43 16 -6.449562 0.530001 -8.015564 0.415000 42 +44 16 -7.269562 0.720000 -7.975563 0.415000 43 +45 16 -7.769562 0.480000 -7.645561 0.415000 44 +46 16 -8.199562 -0.190000 -7.205559 0.415000 45 +47 16 -8.459564 -0.469999 -6.875565 0.415000 46 +48 16 -8.749557 -0.349999 -6.645561 0.415000 47 +49 16 -8.979561 -0.440000 -6.405563 0.415000 48 +50 16 -9.149559 -0.370000 -5.875565 0.415000 49 +51 16 -9.259560 -0.660000 -5.265564 0.415000 50 +52 16 -9.319557 -0.870000 -4.815559 0.415000 51 +53 16 -9.369560 -0.960000 -4.555565 0.415000 52 +54 16 -9.469559 -0.950000 -3.965561 0.415000 53 +55 16 -9.609558 -1.030000 -3.665565 0.415000 54 +56 16 -9.609558 -1.070000 -3.605560 0.415000 55 +57 16 -9.739563 -1.089999 -3.385559 0.415000 56 +58 16 -9.869560 -1.160000 -3.085564 0.415000 57 +59 16 -10.009560 -1.219999 -2.725563 0.415000 58 +60 16 -10.229561 -1.420000 -2.425560 0.415000 59 +61 16 -10.389565 -1.639999 -2.135559 0.415000 60 +62 16 -10.559563 -2.059999 -1.795563 0.415000 61 +63 16 -10.749557 -2.120000 -1.505562 0.415000 62 +64 16 -11.049561 -2.150000 -1.115562 0.415000 63 +65 16 -11.269562 -2.210000 -0.715561 0.415000 64 +66 17 -11.449562 -2.360000 -0.335564 0.415000 65 +67 17 -11.449562 -2.360000 -0.335564 0.340000 66 +68 17 -11.689560 -2.460000 0.064438 0.300000 67 +69 17 -11.979561 -2.420000 0.524437 0.240000 68 +70 17 -12.139565 -2.509999 0.824440 0.265000 69 +71 17 -12.379562 -2.520000 1.164436 0.300000 70 +72 17 -12.659561 -2.540000 1.484436 0.300000 71 +73 17 -12.919563 -2.599999 1.804436 0.300000 72 +74 17 -13.139565 -2.420000 2.144440 0.300000 73 +75 17 -13.419563 -2.420000 2.424438 0.300000 74 +76 17 -13.419563 -2.420000 2.424438 0.305000 75 +77 17 -13.419563 -2.559999 2.424438 0.305000 76 +78 17 -13.589561 -2.480000 2.764435 0.315000 77 +79 17 -13.689560 -2.450000 2.954437 0.325000 78 +80 17 -13.779564 -2.420000 3.134438 0.330000 79 +81 17 -13.899559 -2.420000 3.774437 0.250000 80 +82 17 -13.889565 -2.580000 4.104439 0.230000 81 +83 17 -13.959564 -2.799999 4.504440 0.195000 82 +84 17 -14.039558 -3.030000 4.784439 0.195000 83 +85 17 -14.029564 -3.170000 5.304436 0.225000 84 +86 17 -14.179558 -3.330000 5.804436 0.225000 85 +87 17 -14.189560 -3.330000 5.894440 0.220000 86 +88 17 -14.229561 -3.360000 6.224434 0.205000 87 +89 17 -14.219559 -3.440000 6.544441 0.230000 88 +90 17 -14.289558 -3.360000 7.074440 0.265000 89 +91 17 -14.499557 -3.299999 7.704437 0.315000 90 +92 17 -14.569557 -3.200000 8.044441 0.200000 91 +93 17 -14.739563 -3.299999 8.324440 0.200000 92 +94 17 -14.739563 -3.299999 8.324440 0.205000 93 +95 17 -15.439560 -3.830000 8.574440 0.205000 94 +96 17 -15.759560 -3.700000 8.544441 0.205000 95 +97 17 -16.049561 -3.700000 8.604439 0.175000 96 +98 17 -16.219559 -3.700000 8.634438 0.175000 97 +99 17 -16.339561 -3.700000 8.654434 0.175000 98 +100 17 -16.629562 -3.700000 8.714439 0.175000 99 +101 17 -16.919563 -3.670000 8.734436 0.185000 100 +102 17 -17.209564 -3.559999 8.674438 0.220000 101 +103 17 -17.529564 -3.559999 8.554436 0.220000 102 +104 17 -17.839561 -3.299999 8.374435 0.180000 103 +105 17 -18.099564 -3.210000 8.184441 0.225000 104 +106 17 -18.379562 -3.210000 8.004440 0.245000 105 +107 17 -18.679558 -3.130000 7.834435 0.265000 106 +108 17 -18.959564 -3.049999 7.684441 0.310000 107 +109 17 -19.239563 -3.040000 7.504440 0.365000 108 +110 17 -19.289558 -3.040000 7.434441 0.365000 109 +111 17 -19.419563 -3.049999 7.224434 0.365000 110 +112 17 -19.559563 -3.040000 6.924438 0.335000 111 +113 17 -19.989563 -2.500000 6.344437 0.190000 112 +114 17 -20.269562 -2.259999 6.164436 0.190000 113 +115 17 -20.329559 -2.070000 6.124435 0.190000 114 +116 17 -20.659561 -1.980000 5.844437 0.180000 115 +117 17 -20.999557 -2.290000 5.704437 0.175000 116 +118 17 -21.309563 -2.690000 5.504440 0.195000 117 +119 17 -21.399559 -2.690000 5.404434 0.205000 118 +120 17 -21.559563 -2.690000 5.224434 0.220000 119 +121 17 -21.809563 -2.950000 4.994438 0.255000 120 +122 17 -22.249557 -2.940000 4.724434 0.255000 121 +123 17 -22.559563 -3.089999 4.584435 0.310000 122 +124 17 -22.899559 -3.089999 4.364441 0.310000 123 +125 17 -22.909561 -3.089999 4.354439 0.310000 124 +126 17 -22.909561 -3.089999 4.354439 0.290000 125 +127 17 -22.909561 -3.080000 4.354439 0.290000 126 +128 17 -23.249557 -3.509999 4.404434 0.295000 127 +129 17 -23.529564 -3.410000 4.364441 0.290000 128 +130 17 -23.829559 -3.589999 4.354439 0.255000 129 +131 17 -24.279564 -3.599999 4.354439 0.190000 130 +132 17 -24.699562 -3.690000 4.484436 0.205000 131 +133 17 -25.049561 -3.630000 4.554436 0.150000 132 +134 17 -25.349564 -3.700000 4.594437 0.150000 133 +135 17 -25.519562 -3.839999 4.714439 0.175000 134 +136 17 -25.829559 -4.150000 4.934441 0.235000 135 +137 17 -26.199562 -4.460000 5.354439 0.240000 136 +138 17 -26.309563 -4.450000 5.724434 0.240000 137 +139 17 -26.539558 -4.549999 6.104439 0.205000 138 +140 17 -26.739563 -4.700000 6.264435 0.205000 139 +141 17 -27.019562 -4.820000 6.354439 0.195000 140 +142 17 -27.319557 -5.150000 6.364441 0.195000 141 +143 17 -27.599564 -5.450000 6.344437 0.235000 142 +144 17 -27.909561 -5.630000 6.274437 0.240000 143 +145 17 -28.189560 -5.679999 6.294441 0.300000 144 +146 17 -28.489563 -6.080000 6.454437 0.310000 145 +147 17 -28.769562 -6.089999 6.544441 0.390000 146 +148 17 -28.769562 -6.089999 6.554436 0.390000 147 +149 17 -29.079559 -6.120000 6.604439 0.440000 148 +150 17 -29.369560 -6.130000 6.664436 0.480000 149 +151 17 -29.659561 -6.210000 6.804436 0.480000 150 +152 17 -29.939560 -6.270000 6.974434 0.470000 151 +153 17 -30.229561 -6.219999 7.094437 0.415000 152 +154 17 -30.509560 -6.219999 7.104439 0.415000 153 +155 17 -30.509560 -6.219999 7.104439 0.225000 154 +156 17 -30.509560 -6.299999 7.104439 0.225000 155 +157 17 -30.769562 -6.299999 7.054436 0.225000 156 +158 17 -31.099564 -6.270000 6.974434 0.235000 157 +159 17 -31.419563 -6.299999 6.824440 0.165000 158 +160 17 -31.969559 -6.299999 6.684441 0.165000 159 +161 17 -31.969559 -6.299999 6.684441 0.215000 160 +162 17 -31.969559 -6.270000 6.684441 0.215000 161 +163 17 -32.229561 -6.429999 6.844437 0.240000 162 +164 17 -32.529564 -6.710000 6.944435 0.245000 163 +165 17 -32.859558 -6.929999 7.134438 0.245000 164 +166 17 -32.949562 -6.980000 7.174438 0.230000 165 +167 17 -33.259560 -7.169999 7.334435 0.180000 166 +168 17 -33.809563 -7.060000 7.544441 0.195000 167 +169 17 -34.149559 -6.989999 8.034439 0.190000 168 +170 17 -34.449562 -6.570000 8.444435 0.210000 169 +171 17 -34.649559 -6.599999 8.714439 0.220000 170 +172 17 -34.839561 -6.639999 8.964439 0.255000 171 +173 17 -35.059563 -6.740000 9.204437 0.255000 172 +174 17 -35.379562 -6.730000 9.374435 0.305000 173 +175 17 -35.669563 -6.530000 9.564438 0.255000 174 +176 17 -35.889565 -6.490000 9.764435 0.255000 175 +177 17 -36.219559 -6.389999 10.114441 0.200000 176 +178 17 -36.559563 -6.270000 10.464439 0.255000 177 +179 17 -36.789558 -6.170000 10.784439 0.255000 178 +180 17 -37.039558 -6.179999 10.934441 0.235000 179 +181 17 -37.299561 -6.200000 11.084435 0.215000 180 +182 17 -37.819557 -5.969999 11.284439 0.210000 181 +183 17 -38.159561 -5.940000 11.494438 0.195000 182 +184 17 -38.459564 -5.990000 11.744438 0.195000 183 +185 17 -38.729561 -6.139999 11.964439 0.180000 184 +186 17 -38.999557 -6.530000 12.204437 0.235000 185 +187 17 -39.279564 -6.509999 12.474434 0.265000 186 +188 17 -39.329559 -6.509999 12.504440 0.265000 187 +189 17 -39.589561 -6.530000 12.664436 0.265000 188 +190 17 -39.919563 -6.559999 12.904434 0.220000 189 +191 17 -40.309563 -6.639999 13.164436 0.235000 190 +192 17 -40.379562 -6.660000 13.224434 0.240000 191 +193 17 -40.599564 -6.730000 13.424438 0.250000 192 +194 17 -40.819557 -6.929999 13.754440 0.245000 193 +195 17 -41.089561 -6.900001 14.094437 0.265000 194 +196 17 -41.259560 -6.880000 14.564438 0.310000 195 +197 17 -41.639565 -7.089999 14.974434 0.310000 196 +198 17 -41.929558 -7.400001 15.054436 0.310000 197 +199 17 -42.259560 -7.589999 15.054436 0.280000 198 +200 17 -42.519562 -7.589999 15.014435 0.280000 199 +201 17 -42.519562 -7.589999 15.014435 0.245000 200 +202 17 -42.479561 -8.190000 15.724434 0.245000 201 +203 17 -42.579559 -8.360000 16.304436 0.165000 202 +204 17 -42.549561 -8.409999 16.344437 0.175000 203 +205 17 -42.389565 -8.829999 16.604439 0.230000 204 +206 17 -42.169563 -9.050000 16.924438 0.230000 205 +207 17 -41.989563 -9.169999 17.224434 0.185000 206 +208 17 -41.969559 -9.110000 17.224434 0.185000 207 +209 17 -41.809563 -9.009999 17.514435 0.300000 208 +210 17 -41.619560 -9.089999 17.784439 0.300000 209 +211 17 -41.309563 -9.280000 18.064438 0.250000 210 +212 17 -41.039558 -9.589999 18.364441 0.200000 211 +213 17 -40.739563 -9.800000 18.704437 0.200000 212 +214 17 -42.519562 -7.589999 15.014435 0.280000 199 +215 17 -42.519562 -7.589999 15.014435 0.250000 214 +216 17 -42.809563 -7.950000 14.964439 0.250000 215 +217 17 -43.129562 -8.200000 14.814438 0.260000 216 +218 17 -43.429558 -8.310000 14.624435 0.300000 217 +219 17 -43.699562 -8.319999 14.404434 0.300000 218 +220 17 -43.999557 -8.419999 14.154434 0.280000 219 +221 17 -44.279564 -8.419999 13.944435 0.270000 220 +222 17 -44.559563 -8.329999 13.824440 0.265000 221 +223 17 -44.899559 -8.230000 13.834435 0.180000 222 +224 17 -45.219559 -8.200000 13.884438 0.130000 223 +225 17 -45.519562 -8.200000 13.944435 0.130000 224 +226 17 -45.889565 -8.110000 14.004440 0.120000 225 +227 17 -46.089561 -8.060000 14.094437 0.120000 226 +228 17 -46.089561 -8.060000 14.094437 0.215000 227 +229 17 -46.729561 -7.890000 14.514435 0.215000 228 +230 17 -46.999557 -7.849999 14.864441 0.210000 229 +231 17 -47.259560 -8.130000 15.164436 0.210000 230 +232 17 -47.529564 -8.179999 15.404434 0.185000 231 +233 17 -47.809563 -8.370000 15.694435 0.180000 232 +234 17 -48.149559 -8.470000 16.094437 0.165000 233 +235 17 -48.459564 -8.419999 16.394440 0.200000 234 +236 17 -48.779564 -8.509999 16.794441 0.245000 235 +237 17 -48.829559 -8.499999 16.844437 0.245000 236 +238 17 -49.089561 -8.440000 17.124435 0.245000 237 +239 17 -49.249557 -8.530000 17.474434 0.195000 238 +240 17 -49.499557 -8.319999 17.964439 0.195000 239 +241 17 -49.749557 -8.370000 18.374435 0.185000 240 +242 17 -46.089561 -8.060000 14.094437 0.120000 226 +243 17 -46.089561 -8.060000 14.094437 0.175000 242 +244 17 -46.609558 -8.200000 14.074440 0.175000 243 +245 17 -47.049561 -8.380000 13.854439 0.175000 244 +246 17 -47.379562 -8.310000 13.654434 0.190000 245 +247 17 -47.769562 -8.450000 13.514435 0.150000 246 +248 17 -48.009560 -8.589999 13.364441 0.150000 247 +249 17 -48.329559 -8.589999 13.274437 0.150000 248 +250 17 -48.739563 -8.480000 13.194435 0.235000 249 +251 17 -48.999557 -8.499999 13.164436 0.265000 250 +252 17 -49.309563 -8.440000 13.174438 0.265000 251 +253 17 -49.649559 -8.550000 13.144440 0.305000 252 +254 17 -49.669563 -8.579999 13.144440 0.310000 253 +255 17 -49.979561 -8.599999 12.994438 0.310000 254 +256 17 -50.379562 -8.530000 12.934441 0.285000 255 +257 17 -50.729561 -8.710000 12.934441 0.210000 256 +258 17 -51.139565 -8.800000 12.914436 0.205000 257 +259 17 -51.389565 -9.050000 12.864441 0.205000 258 +260 17 -51.679558 -9.060000 12.794441 0.225000 259 +261 17 -51.939560 -9.120000 12.724434 0.225000 260 +262 17 -52.209564 -9.140000 12.734436 0.200000 261 +263 17 -52.619560 -9.079999 12.684441 0.185000 262 +264 17 -31.969559 -6.299999 6.684441 0.165000 159 +265 17 -31.969559 -6.299999 6.684441 0.260000 264 +266 17 -31.959564 -6.240000 6.314438 0.260000 265 +267 17 -31.959564 -6.420000 6.044441 0.190000 266 +268 17 -32.149559 -6.309999 5.544441 0.170000 267 +269 17 -32.279564 -6.400000 5.114441 0.155000 268 +270 17 -32.629562 -6.509999 4.484436 0.215000 269 +271 17 -32.719559 -6.639999 4.254440 0.215000 270 +272 17 -32.749557 -6.710000 4.184441 0.215000 271 +273 17 -32.929558 -6.540000 3.784439 0.160000 272 +274 17 -33.119560 -6.290000 3.314438 0.170000 273 +275 17 -33.229561 -6.059999 3.034439 0.170000 274 +276 17 -33.329559 -6.190000 2.704437 0.185000 275 +277 17 -33.439560 -6.190000 2.394440 0.255000 276 +278 17 -33.559563 -6.160000 2.134438 0.255000 277 +279 17 -33.689560 -6.179999 1.844437 0.235000 278 +280 17 -33.819557 -6.200000 1.574440 0.225000 279 +281 17 -33.939560 -6.150000 1.294441 0.225000 280 +282 17 -34.179558 -6.270000 0.694435 0.195000 281 +283 17 -34.359558 -6.270000 0.404434 0.155000 282 +284 17 -34.529564 -6.270000 0.174438 0.155000 283 +285 17 -34.749557 -6.030000 -0.115562 0.225000 284 +286 17 -34.779564 -6.040000 -0.205559 0.225000 285 +287 17 -34.829559 -6.049999 -0.345566 0.225000 286 +288 17 -34.999557 -5.969999 -0.865562 0.195000 287 +289 17 -35.589561 -5.580000 -1.455559 0.180000 288 +290 17 -35.879562 -5.770000 -1.625565 0.230000 289 +291 17 -35.879562 -5.770000 -1.625565 0.230000 290 +292 17 -36.169563 -5.620000 -1.935562 0.280000 291 +293 17 -36.449562 -5.660000 -2.255562 0.280000 292 +294 17 -36.669563 -5.710000 -2.505562 0.255000 293 +295 17 -36.989563 -5.799999 -2.745560 0.225000 294 +296 17 -37.549561 -6.270000 -3.025566 0.200000 295 +297 17 -38.129562 -6.270000 -3.315559 0.190000 296 +298 17 -38.419563 -6.270000 -3.485565 0.190000 297 +299 17 -38.729561 -5.790000 -3.645561 0.270000 298 +300 17 -39.039558 -5.799999 -3.845566 0.290000 299 +301 17 -39.309563 -5.730000 -4.025566 0.295000 300 +302 17 -39.419563 -5.790000 -4.175560 0.295000 301 +303 17 -39.599564 -5.880000 -4.405563 0.295000 302 +304 17 -39.839561 -6.070000 -4.875565 0.195000 303 +305 17 -39.939560 -6.099999 -5.175560 0.195000 304 +306 17 -30.509560 -6.219999 7.104439 0.415000 153 +307 17 -30.509560 -6.219999 7.104439 0.240000 306 +308 17 -30.609558 -6.710000 7.794441 0.240000 307 +309 17 -30.629562 -6.679999 8.244438 0.195000 308 +310 17 -30.589561 -6.759999 8.684441 0.195000 309 +311 17 -30.589561 -6.759999 8.704437 0.195000 310 +312 17 -30.469559 -7.190000 9.274437 0.190000 311 +313 17 -30.449562 -7.099999 9.554436 0.160000 312 +314 17 -30.519562 -7.069999 9.824440 0.165000 313 +315 17 -30.649559 -7.089999 10.204437 0.165000 314 +316 17 -30.809563 -7.220000 10.504440 0.205000 315 +317 17 -31.009560 -7.120000 10.894440 0.220000 316 +318 17 -31.219559 -7.239999 11.224434 0.210000 317 +319 17 -31.509560 -7.030000 11.494438 0.325000 318 +320 17 -31.699562 -7.140000 11.994438 0.325000 319 +321 17 -31.909561 -7.360000 12.254440 0.225000 320 +322 17 -32.259560 -7.579999 12.374435 0.225000 321 +323 17 -32.549561 -7.749999 12.504440 0.230000 322 +324 17 -32.839561 -8.009999 12.684441 0.235000 323 +325 17 -22.909561 -3.089999 4.354439 0.310000 124 +326 17 -22.909561 -3.089999 4.354439 0.240000 325 +327 17 -22.999557 -3.280000 3.964439 0.240000 326 +328 17 -23.289558 -2.940000 3.484436 0.220000 327 +329 17 -23.349564 -2.880000 3.234436 0.205000 328 +330 17 -23.529564 -3.059999 2.904434 0.190000 329 +331 17 -24.039558 -2.679999 2.334435 0.310000 330 +332 17 -24.259560 -2.549999 2.024437 0.310000 331 +333 17 -24.419563 -2.700000 1.704437 0.260000 332 +334 17 -24.579559 -2.730000 1.394440 0.225000 333 +335 17 -24.719559 -2.770000 1.124435 0.225000 334 +336 17 -24.899559 -2.990000 0.824440 0.195000 335 +337 17 -14.739563 -3.299999 8.324440 0.200000 92 +338 17 -14.739563 -3.299999 8.324440 0.290000 337 +339 17 -14.609558 -3.389999 8.644440 0.290000 338 +340 17 -14.549561 -3.299999 8.924438 0.290000 339 +341 17 -14.469559 -3.299999 9.184441 0.290000 340 +342 17 -14.329559 -3.370000 9.474434 0.240000 341 +343 17 -14.119560 -3.520000 9.814438 0.155000 342 +344 17 -13.959564 -3.339999 10.124435 0.155000 343 +345 17 -13.809563 -3.380000 10.424438 0.195000 344 +346 17 -13.789558 -3.290000 10.804436 0.230000 345 +347 17 -13.779564 -3.250000 10.984436 0.250000 346 +348 17 -13.809563 -3.599999 11.684441 0.210000 347 +349 17 -13.849564 -3.610000 12.054436 0.220000 348 +350 17 -13.859558 -3.610000 12.134438 0.220000 349 +351 17 -14.049561 -3.440000 12.704437 0.225000 350 +352 17 -14.139565 -3.400000 13.014435 0.225000 351 +353 17 -14.199562 -3.360000 13.304436 0.225000 352 +354 17 -14.289558 -3.360000 13.594437 0.215000 353 +355 17 -14.389565 -3.230000 13.884438 0.180000 354 +356 17 -14.409561 -3.270000 13.964439 0.180000 355 +357 17 -14.489563 -3.360000 14.184441 0.180000 356 +358 17 -14.599564 -3.700000 14.764435 0.210000 357 +359 17 -14.649559 -3.700000 15.054436 0.210000 358 +360 17 -14.649559 -3.700000 15.144440 0.215000 359 +361 17 -14.649559 -3.700000 15.344437 0.215000 360 +362 17 -14.549561 -3.349999 15.904434 0.275000 361 +363 17 -14.489563 -3.059999 16.194435 0.275000 362 +364 17 -14.379562 -2.969999 16.514435 0.275000 363 +365 17 -14.259560 -2.940000 16.814438 0.275000 364 +366 17 -14.189560 -2.940000 16.934441 0.275000 365 +367 17 -14.089561 -2.940000 17.104439 0.295000 366 +368 17 -13.909561 -2.950000 17.384438 0.285000 367 +369 17 -13.749557 -2.960000 17.674438 0.270000 368 +370 17 -13.709564 -2.990000 17.744438 0.295000 369 +371 17 -13.619560 -3.089999 17.944435 0.230000 370 +372 17 -13.359558 -3.200000 18.344437 0.210000 371 +373 17 -13.349564 -3.210000 18.404434 0.210000 372 +374 17 -13.269562 -3.250000 18.804436 0.210000 373 +375 17 -13.239563 -3.259999 18.984436 0.210000 374 +376 17 -13.109558 -3.130000 19.574440 0.215000 375 +377 17 -12.959564 -2.880000 20.144440 0.215000 376 +378 17 -12.699562 -2.980000 20.474434 0.280000 377 +379 17 -12.289558 -3.139999 21.064438 0.280000 378 +380 17 -12.219559 -3.139999 21.334435 0.280000 379 +381 17 -12.109558 -3.139999 21.614441 0.280000 380 +382 17 -11.599564 -3.000000 22.504440 0.295000 381 +383 17 -11.419563 -3.070000 22.774437 0.240000 382 +384 17 -11.219559 -2.960000 23.044441 0.260000 383 +385 17 -10.989563 -2.870000 23.314438 0.260000 384 +386 17 -10.789558 -2.820000 23.594437 0.285000 385 +387 17 -10.589561 -2.940000 23.894440 0.285000 386 +388 17 -10.439560 -2.849999 24.184441 0.245000 387 +389 17 -10.279564 -2.990000 24.404434 0.220000 388 +390 17 -10.239563 -3.059999 24.464439 0.210000 389 +391 17 -9.999557 -3.059999 24.754440 0.210000 390 +392 17 -9.989563 -3.059999 24.824440 0.210000 391 +393 17 -9.909561 -3.059999 25.124435 0.220000 392 +394 17 -9.559563 -3.110000 26.134438 0.260000 393 +395 17 -9.429558 -3.110000 26.544441 0.260000 394 +396 17 -9.429558 -3.110000 26.544441 0.180000 395 +397 17 -9.049561 -2.750000 26.164436 0.180000 396 +398 17 -8.539558 -2.809999 26.014435 0.180000 397 +399 17 -8.189560 -2.549999 25.924438 0.180000 398 +400 17 -7.849564 -2.120000 25.724434 0.220000 399 +401 17 -7.469559 -1.809999 25.414436 0.195000 400 +402 17 -7.319557 -1.610000 25.164436 0.195000 401 +403 17 -7.249557 -1.450000 25.044441 0.195000 402 +404 17 -7.159561 -1.170000 24.524437 0.170000 403 +405 17 -9.429558 -3.110000 26.544441 0.260000 394 +406 17 -9.429558 -3.110000 26.544441 0.260000 405 +407 17 -9.429558 -2.950000 26.544441 0.260000 406 +408 17 -9.389565 -3.099999 26.824440 0.225000 407 +409 17 -9.269562 -3.120000 27.174438 0.205000 408 +410 17 -9.149559 -3.059999 27.434441 0.205000 409 +411 17 -8.929558 -3.160000 27.664436 0.265000 410 +412 17 -8.779564 -3.150000 28.034439 0.415000 411 +413 17 -8.609558 -3.139999 28.264435 0.415000 412 +414 17 -8.539558 -3.139999 28.374435 0.415000 413 +415 17 -8.469559 -3.170000 28.714439 0.370000 414 +416 17 -8.359558 -3.280000 28.994438 0.315000 415 +417 17 -8.269562 -3.330000 29.264435 0.280000 416 +418 17 -7.979561 -3.660000 29.564438 0.255000 417 +419 17 -7.689560 -3.960000 29.884438 0.250000 418 +420 17 -7.419563 -4.250000 30.404434 0.270000 419 +421 17 -7.189560 -3.920000 31.104439 0.240000 420 +422 17 -7.089561 -3.849999 31.614441 0.175000 421 +423 17 -6.839561 -3.910000 31.984436 0.175000 422 +424 17 -6.719559 -3.730000 32.334435 0.175000 423 +425 17 -6.779564 -3.509999 32.864441 0.180000 424 +426 17 -6.839561 -3.030000 33.424438 0.240000 425 +427 17 -6.849564 -2.960000 34.124435 0.240000 426 +428 17 -6.539558 -2.920000 34.654434 0.265000 427 +429 17 -6.499557 -2.910000 34.724434 0.265000 428 +430 17 -6.329559 -2.820000 34.994438 0.390000 429 +431 17 -6.179558 -2.700000 35.254440 0.390000 430 +432 17 -6.019562 -2.710000 35.564438 0.390000 431 +433 17 -5.839561 -2.799999 35.874435 0.345000 432 +434 17 -5.719559 -2.839999 36.144440 0.330000 433 +435 17 -5.579559 -2.830000 36.444435 0.315000 434 +436 17 -5.479561 -2.849999 36.724434 0.285000 435 +437 17 -5.439560 -2.849999 36.894440 0.260000 436 +438 17 -5.399559 -2.860000 37.084435 0.240000 437 +439 17 -5.319557 -2.910000 37.384438 0.235000 438 +440 17 -5.249557 -2.929999 37.674438 0.230000 439 +441 17 -5.169563 -3.009999 37.954437 0.230000 440 +442 17 -5.179558 -3.059999 38.294441 0.195000 441 +443 17 -5.189560 -2.910000 38.654434 0.195000 442 +444 17 -5.239563 -2.849999 38.934441 0.215000 443 +445 17 -5.189560 -2.980000 39.244438 0.215000 444 +446 17 -5.019562 -3.309999 39.794441 0.220000 445 +447 17 -4.839561 -3.360000 40.224434 0.300000 446 +448 17 -4.869560 -3.070000 40.764435 0.275000 447 +449 17 -4.939560 -3.049999 41.054436 0.275000 448 +450 17 -4.989563 -3.320000 41.624435 0.275000 449 +451 17 -5.099564 -3.299999 42.354439 0.295000 450 +452 17 -5.329559 -3.170000 42.744438 0.310000 451 +453 17 -5.379562 -3.130000 42.824440 0.315000 452 +454 17 -5.479561 -3.099999 43.404434 0.230000 453 +455 17 -5.529564 -3.210000 43.874439 0.230000 454 +456 17 -5.579559 -3.009999 44.374439 0.230000 455 +457 17 -5.629562 -3.000000 44.934437 0.230000 456 +458 17 -5.579559 -2.820000 45.424438 0.280000 457 +459 17 -5.409561 -3.190000 45.984436 0.240000 458 +460 17 -5.369560 -3.580000 46.534439 0.220000 459 +461 17 -4.889565 -4.349999 47.544437 0.360000 460 +462 17 -5.039558 -4.370000 48.064438 0.455000 461 +463 17 -5.099564 -4.650000 48.614437 0.455000 462 +464 17 -5.339561 -4.920000 49.264439 0.220000 463 +465 17 -5.409561 -4.990000 49.634438 0.205000 464 +466 17 -5.469559 -4.990000 49.924438 0.195000 465 +467 17 -5.409561 -4.990000 50.214439 0.175000 466 +468 17 -5.389565 -4.990000 50.874439 0.240000 467 +469 17 -5.679558 -5.020000 51.464439 0.290000 468 +470 17 -5.869560 -5.280000 52.154438 0.215000 469 +471 17 -5.969559 -5.400000 52.664436 0.200000 470 +472 17 -6.139565 -5.599999 53.294437 0.260000 471 +473 17 -6.229561 -5.690000 53.604439 0.260000 472 +474 17 -6.279564 -5.490000 54.154438 0.200000 473 +475 17 -6.449562 -5.170000 54.664436 0.200000 474 +476 17 -6.569557 -4.940000 55.194439 0.200000 475 +477 17 -6.519562 -5.030000 55.714439 0.245000 476 +478 17 -6.589561 -5.759999 56.544437 0.255000 477 +479 17 -6.679558 -5.750000 56.944439 0.250000 478 +480 17 -6.799561 -5.929999 57.424438 0.265000 479 +481 17 -6.909561 -5.759999 57.894436 0.265000 480 +482 17 -6.929558 -5.870000 58.174438 0.250000 481 +483 17 -6.979561 -5.799999 58.454437 0.250000 482 +484 17 -7.399559 -5.469999 59.104439 0.220000 483 +485 17 -7.959564 -5.179999 59.444439 0.165000 484 +486 17 -8.199562 -5.520000 60.284439 0.150000 485 +487 17 -8.419563 -5.880000 61.014439 0.155000 486 +488 17 -8.609558 -6.270000 61.314438 0.155000 487 +489 17 -8.779564 -6.270000 61.604439 0.155000 488 +490 17 -8.989563 -6.929999 62.234436 0.245000 489 +491 17 -9.339561 -7.530000 63.004436 0.285000 490 +492 17 -9.889565 -7.560000 63.584438 0.240000 491 +493 17 -10.249557 -7.349999 64.184437 0.170000 492 +494 17 -10.659561 -7.099999 64.744438 0.170000 493 +495 17 -10.809563 -7.089999 65.124439 0.175000 494 +496 17 -10.989563 -7.560000 65.734436 0.165000 495 +497 17 -11.129562 -7.749999 66.244438 0.165000 496 +498 17 -11.229561 -7.560000 66.664436 0.150000 497 +499 17 -11.279564 -7.560000 66.954437 0.150000 498 +500 17 -11.419563 -7.630000 67.344437 0.155000 499 +501 17 -11.889565 -7.919999 68.134438 0.275000 500 +502 17 -12.099564 -8.210000 68.454437 0.310000 501 +503 17 -12.449562 -8.200000 68.754436 0.310000 502 +504 17 -12.739563 -8.200000 69.044437 0.410000 503 +505 17 -13.029564 -8.200000 69.334438 0.410000 504 +506 17 -13.419563 -2.420000 2.424438 0.300000 74 +507 17 -13.419563 -2.420000 2.424438 0.290000 506 +508 17 -13.779564 -3.059999 2.144440 0.290000 507 +509 17 -14.139565 -3.009999 2.094437 0.290000 508 +510 17 -14.409561 -3.210000 1.984436 0.255000 509 +511 17 -14.699562 -3.549999 1.974434 0.230000 510 +512 17 -14.989563 -3.770000 1.964439 0.215000 511 +513 17 -15.269562 -4.110000 1.954437 0.215000 512 +514 17 -15.559563 -4.070000 1.974434 0.210000 513 +515 17 -15.879562 -4.120000 2.004440 0.210000 514 +516 16 -16.459564 -4.120000 2.204437 0.210000 515 +517 16 -16.459564 -4.120000 2.204437 0.210000 516 +518 16 -16.459564 -4.990000 2.204437 0.210000 517 +519 16 -16.609558 -4.330000 1.564438 0.325000 518 +520 16 -16.889565 -4.270000 1.174438 0.325000 519 +521 16 -17.499557 -4.170000 0.464439 0.250000 520 +522 16 -17.809563 -3.849999 0.324440 0.380000 521 +523 16 -18.099564 -3.780000 0.224434 0.380000 522 +524 16 -18.479561 -3.839999 0.004440 0.325000 523 +525 16 -19.249557 -3.719999 -0.295563 0.315000 524 +526 16 -19.539558 -3.870000 -0.395561 0.415000 525 +527 16 -19.829559 -3.830000 -0.495560 0.415000 526 +528 16 -20.389565 -4.040000 -0.705559 0.310000 527 +529 16 -20.769562 -3.660000 -0.715561 0.310000 528 +530 16 -21.119560 -3.490000 -0.755562 0.255000 529 +531 16 -21.569557 -3.420000 -0.685562 0.275000 530 +532 17 -22.549561 -3.700000 -0.815559 0.275000 531 +533 17 -22.549561 -3.700000 -0.815559 0.275000 532 +534 17 -22.549561 -3.620000 -0.815559 0.275000 533 +535 17 -22.729561 -3.740000 -0.845566 0.275000 534 +536 17 -23.129562 -4.070000 -0.915565 0.275000 535 +537 17 -23.419563 -3.910000 -0.985565 0.195000 536 +538 17 -23.729561 -3.580000 -1.145561 0.195000 537 +539 17 -24.119560 -3.650000 -1.405563 0.275000 538 +540 17 -24.609558 -3.700000 -1.785561 0.275000 539 +541 17 -24.609558 -3.700000 -1.785561 0.225000 540 +542 17 -24.749557 -4.000000 -1.405563 0.225000 541 +543 17 -24.989563 -3.900000 -1.055565 0.185000 542 +544 17 -25.249557 -3.270000 -0.725563 0.185000 543 +545 17 -25.579559 -3.160000 -0.415565 0.185000 544 +546 17 -26.129562 -3.030000 0.074440 0.175000 545 +547 17 -26.439560 -2.839999 0.244438 0.160000 546 +548 17 -26.759560 -2.700000 0.394440 0.220000 547 +549 17 -27.049561 -2.920000 0.644440 0.245000 548 +550 17 -27.319557 -2.969999 0.924438 0.210000 549 +551 17 -27.539558 -2.639999 1.344437 0.210000 550 +552 17 -24.609558 -3.700000 -1.785561 0.275000 539 +553 17 -24.609558 -3.700000 -1.785561 0.275000 552 +554 17 -24.719559 -3.660000 -2.135559 0.275000 553 +555 17 -24.979561 -4.200000 -2.635559 0.275000 554 +556 17 -25.219559 -4.589999 -3.115562 0.275000 555 +557 17 -25.509560 -4.130000 -3.725563 0.185000 556 +558 17 -25.819557 -4.170000 -3.945564 0.210000 557 +559 17 -26.329559 -4.049999 -4.105560 0.210000 558 +560 17 -26.329559 -4.030000 -4.105560 0.210000 559 +561 17 -26.979561 -4.299999 -4.305565 0.275000 560 +562 17 -27.879562 -4.929999 -4.485565 0.280000 561 +563 17 -28.099564 -4.910000 -4.555565 0.275000 562 +564 17 -28.459564 -4.889999 -4.665565 0.270000 563 +565 17 -28.769562 -4.870000 -4.715561 0.290000 564 +566 17 -29.089561 -4.780000 -4.745560 0.290000 565 +567 17 -29.369560 -4.809999 -4.745560 0.290000 566 +568 17 -29.649559 -4.679999 -4.795563 0.280000 567 +569 17 -30.079559 -4.900000 -4.955559 0.270000 568 +570 17 -30.509560 -4.770000 -5.195564 0.270000 569 +571 17 -30.839561 -5.170000 -5.345566 0.270000 570 +572 17 -31.139565 -5.429999 -5.535561 0.265000 571 +573 17 -31.439560 -5.509999 -5.655563 0.260000 572 +574 17 -31.729561 -5.660000 -5.775566 0.260000 573 +575 17 -32.079559 -5.839999 -5.805565 0.210000 574 +576 17 -32.419563 -5.940000 -5.725563 0.210000 575 +577 17 -32.729561 -5.900000 -5.625565 0.195000 576 +578 17 -33.039558 -5.929999 -5.575562 0.190000 577 +579 17 -33.389565 -6.309999 -5.505562 0.175000 578 +580 17 -33.809563 -6.210000 -5.535561 0.170000 579 +581 17 -33.929558 -6.179999 -5.535561 0.170000 580 +582 17 -34.609558 -6.160000 -5.785561 0.230000 581 +583 17 -34.949562 -6.219999 -5.875565 0.260000 582 +584 17 -35.219559 -6.179999 -5.955559 0.245000 583 +585 17 -35.529564 -6.240000 -6.085564 0.245000 584 +586 17 -35.819557 -6.349999 -6.225563 0.245000 585 +587 17 -36.109558 -6.259999 -6.405563 0.245000 586 +588 17 -36.399559 -5.990000 -6.685562 0.240000 587 +589 17 -36.579559 -5.599999 -6.955559 0.230000 588 +590 17 -36.819557 -5.150000 -7.355560 0.275000 589 +591 17 -37.139565 -4.809999 -7.595566 0.275000 590 +592 17 -37.319557 -4.900000 -7.755562 0.260000 591 +593 17 -37.539558 -5.030000 -7.935562 0.245000 592 +594 17 -37.809563 -5.110000 -8.155563 0.230000 593 +595 17 -38.419563 -5.429999 -8.675560 0.240000 594 +596 17 -38.419563 -5.530000 -8.675560 0.245000 595 +597 17 -38.689560 -5.150000 -9.135559 0.245000 596 +598 17 -38.989563 -5.179999 -9.515564 0.250000 597 +599 17 -39.469559 -5.040000 -10.035561 0.275000 598 +600 17 -39.769562 -4.969999 -10.195564 0.275000 599 +601 17 -39.969559 -4.920000 -10.295563 0.275000 600 +602 17 -40.239563 -4.900000 -10.635559 0.280000 601 +603 17 -40.549561 -4.790000 -10.975563 0.230000 602 +604 17 -40.919563 -4.880000 -11.305565 0.230000 603 +605 17 -41.199562 -5.020000 -11.495560 0.200000 604 +606 17 -41.489563 -4.880000 -11.745560 0.190000 605 +607 17 -41.779564 -4.790000 -12.005562 0.250000 606 +608 17 -42.029564 -4.799999 -12.245560 0.270000 607 +609 17 -42.259560 -4.719999 -12.575562 0.250000 608 +610 17 -42.489563 -4.700000 -12.855560 0.245000 609 +611 17 -42.799561 -4.820000 -13.125565 0.235000 610 +612 17 -43.069557 -4.900000 -13.335564 0.205000 611 +613 17 -43.349564 -4.730000 -13.495560 0.195000 612 +614 17 -43.349564 -4.730000 -13.495560 0.195000 613 +615 17 -43.889565 -4.910000 -13.685562 0.195000 614 +616 17 -44.299561 -4.559999 -13.795563 0.290000 615 +617 17 -44.629562 -4.570000 -13.745560 0.290000 616 +618 17 -44.899559 -4.530000 -13.645561 0.290000 617 +619 17 -45.209564 -4.509999 -13.415565 0.290000 618 +620 17 -45.489563 -4.429999 -13.245560 0.290000 619 +621 17 -45.789558 -4.400000 -13.085564 0.240000 620 +622 17 -46.129562 -4.589999 -12.915565 0.190000 621 +623 17 -46.529564 -4.710000 -12.755562 0.190000 622 +624 17 -46.859558 -4.540000 -12.695564 0.210000 623 +625 17 -47.209564 -4.910000 -12.495560 0.210000 624 +626 17 -47.479561 -4.740000 -12.395561 0.210000 625 +627 17 -47.779564 -4.410000 -12.275566 0.210000 626 +628 17 -48.069557 -4.429999 -12.115562 0.210000 627 +629 17 -48.379562 -4.230000 -11.885559 0.160000 628 +630 17 -48.589561 -4.099999 -11.775566 0.150000 629 +631 17 -48.639565 -4.040000 -11.745560 0.145000 630 +632 17 -48.939560 -3.700000 -11.685562 0.130000 631 +633 17 -49.229561 -3.700000 -11.565559 0.130000 632 +634 17 -49.529564 -3.700000 -11.395561 0.105000 633 +635 17 -49.819557 -3.700000 -11.215561 0.105000 634 +636 17 -50.099564 -4.030000 -11.025566 0.195000 635 +637 17 -50.399559 -4.230000 -10.865562 0.210000 636 +638 17 -50.519562 -4.299999 -10.865562 0.210000 637 +639 17 -50.729561 -4.420000 -10.865562 0.210000 638 +640 17 -51.089561 -4.610000 -10.735565 0.175000 639 +641 17 -51.579559 -4.389999 -10.725563 0.170000 640 +642 17 -52.189560 -4.740000 -10.545563 0.155000 641 +643 17 -52.629562 -4.900000 -10.375565 0.155000 642 +644 17 -53.129562 -4.639999 -10.365562 0.265000 643 +645 17 -53.209564 -4.639999 -10.395561 0.265000 644 +646 17 -53.419563 -4.660000 -10.485565 0.270000 645 +647 17 -53.719559 -4.660000 -10.635559 0.270000 646 +648 17 -53.719559 -4.660000 -10.635559 0.250000 647 +649 17 -53.719559 -4.690000 -10.635559 0.250000 648 +650 17 -54.059563 -4.670000 -10.695564 0.250000 649 +651 17 -54.419563 -4.889999 -10.645561 0.250000 650 +652 17 -54.819557 -5.009999 -10.775566 0.155000 651 +653 17 -55.189560 -4.960000 -10.885559 0.150000 652 +654 17 -55.189560 -4.920000 -10.875565 0.155000 653 +655 17 -55.599564 -4.670000 -11.015564 0.175000 654 +656 17 -55.949562 -4.780000 -11.115562 0.265000 655 +657 17 -56.049561 -4.820000 -11.145561 0.250000 656 +658 17 -56.649559 -5.070000 -11.365562 0.195000 657 +659 17 -57.259560 -4.910000 -11.655563 0.175000 658 +660 17 -57.649559 -4.870000 -11.845566 0.275000 659 +661 17 -58.329559 -5.280000 -12.315559 0.250000 660 +662 17 -58.419563 -5.339999 -12.595566 0.230000 661 +663 17 -58.569557 -5.480000 -13.175560 0.220000 662 +664 17 -58.739563 -5.929999 -13.635559 0.165000 663 +665 17 -58.879562 -6.170000 -14.045563 0.165000 664 +666 17 -58.879562 -6.270000 -14.065559 0.165000 665 +667 17 -59.059563 -6.270000 -14.355560 0.175000 666 +668 17 -59.409561 -6.270000 -14.585564 0.205000 667 +669 17 -59.769562 -5.719999 -14.825562 0.220000 668 +670 17 -59.939560 -5.589999 -14.825562 0.220000 669 +671 17 -60.059563 -5.440000 -14.825562 0.220000 670 +672 17 -60.309563 -5.219999 -14.825562 0.200000 671 +673 17 -60.349564 -4.990000 -14.825562 0.175000 672 +674 17 -60.599564 -4.370000 -14.815559 0.170000 673 +675 17 -60.889565 -4.230000 -14.815559 0.175000 674 +676 17 -61.189560 -3.849999 -14.925560 0.200000 675 +677 17 -61.489563 -3.839999 -15.075562 0.235000 676 +678 17 -61.779564 -3.580000 -15.245560 0.235000 677 +679 17 -62.079559 -3.160000 -15.475563 0.165000 678 +680 17 -62.369560 -3.139999 -15.635559 0.250000 679 +681 17 -62.649559 -3.049999 -15.765564 0.250000 680 +682 17 -62.659561 -3.049999 -15.765564 0.250000 681 +683 17 -62.949562 -3.040000 -15.845566 0.250000 682 +684 17 -63.219559 -3.040000 -15.875565 0.250000 683 +685 17 -63.499561 -3.080000 -15.955559 0.250000 684 +686 17 -63.829559 -3.190000 -16.115562 0.265000 685 +687 17 -64.099560 -3.320000 -16.205559 0.245000 686 +688 17 -64.349560 -3.420000 -16.305565 0.240000 687 +689 17 -64.669559 -3.240000 -16.365562 0.210000 688 +690 17 -65.269562 -3.710000 -16.555565 0.185000 689 +691 17 -65.559563 -3.589999 -16.585564 0.150000 690 +692 17 -65.559563 -3.679999 -16.575562 0.185000 691 +693 17 -65.849560 -3.559999 -16.635559 0.180000 692 +694 17 -53.719559 -4.660000 -10.635559 0.270000 646 +695 17 -53.719559 -4.660000 -10.635559 0.165000 694 +696 17 -54.169563 -4.719999 -11.245560 0.165000 695 +697 17 -54.169563 -4.400000 -11.595566 0.185000 696 +698 17 -54.229561 -4.349999 -11.915565 0.185000 697 +699 17 -54.209564 -4.309999 -12.275566 0.260000 698 +700 17 -54.199562 -4.299999 -12.335564 0.275000 699 +701 17 -54.329559 -4.380000 -12.795563 0.275000 700 +702 17 -54.329559 -4.240000 -13.165565 0.240000 701 +703 17 -54.349564 -4.040000 -13.765564 0.240000 702 +704 17 -54.269562 -4.110000 -14.165565 0.250000 703 +705 17 -54.199562 -3.820000 -14.725563 0.175000 704 +706 17 -22.549561 -3.700000 -0.815559 0.275000 531 +707 17 -22.549561 -3.700000 -0.815559 0.275000 706 +708 17 -22.039558 -3.030000 -1.285561 0.275000 707 +709 17 -21.879562 -2.730000 -1.515564 0.200000 708 +710 17 -21.689560 -2.420000 -1.915565 0.180000 709 +711 17 -21.589561 -2.360000 -2.275566 0.225000 710 +712 17 -21.569557 -2.230000 -2.555565 0.225000 711 +713 17 -21.649559 -2.410000 -2.825562 0.225000 712 +714 17 -21.799561 -2.270000 -3.085564 0.220000 713 +715 17 -21.919563 -2.259999 -3.325562 0.220000 714 +716 17 -22.499557 -2.049999 -3.945564 0.250000 715 +717 17 -22.689560 -1.969999 -4.185562 0.270000 716 +718 17 -23.019562 -1.770000 -4.445564 0.235000 717 +719 17 -23.169563 -1.630000 -4.565559 0.210000 718 +720 17 -23.819557 -1.520000 -5.055565 0.245000 719 +721 17 -23.939560 -1.620000 -5.175560 0.245000 720 +722 17 -24.059563 -1.740000 -5.275566 0.245000 721 +723 17 -24.299561 -2.150000 -5.515564 0.255000 722 +724 17 -24.609558 -2.270000 -5.805565 0.215000 723 +725 17 -24.649559 -2.099999 -5.815559 0.250000 724 +726 17 -24.829559 -2.059999 -6.115562 0.245000 725 +727 17 -25.039558 -2.179999 -6.465561 0.230000 726 +728 17 -25.369560 -1.660000 -6.965561 0.215000 727 +729 17 -25.529564 -1.610000 -7.225563 0.200000 728 +730 17 -25.559563 -1.610000 -7.275566 0.205000 729 +731 17 -25.799561 -1.599999 -7.735565 0.225000 730 +732 17 -25.919563 -1.610000 -8.145561 0.230000 731 +733 17 -26.179558 -1.770000 -8.455559 0.230000 732 +734 17 -26.379562 -2.179999 -8.865562 0.230000 733 +735 17 -26.609558 -2.120000 -9.345566 0.260000 734 +736 17 -26.719559 -2.309999 -9.775566 0.260000 735 +737 17 -26.789558 -2.150000 -10.255562 0.205000 736 +738 17 -26.849564 -1.929999 -10.525566 0.220000 737 +739 17 -26.879562 -1.920000 -10.615562 0.225000 738 +740 17 -26.939560 -1.910000 -10.785561 0.230000 739 +741 17 -26.919563 -1.889999 -11.435562 0.280000 740 +742 17 -26.889565 -1.900000 -11.635559 0.280000 741 +743 17 -26.879562 -1.900000 -11.695564 0.280000 742 +744 17 -26.859558 -1.780000 -11.975563 0.280000 743 +745 17 -26.839561 -1.809999 -12.155563 0.280000 744 +746 17 -26.829559 -1.830000 -12.235565 0.280000 745 +747 17 -26.939560 -1.770000 -12.515564 0.280000 746 +748 17 -27.099564 -1.690000 -12.825562 0.255000 747 +749 17 -27.199562 -1.630000 -13.165565 0.220000 748 +750 17 -27.249557 -1.559999 -13.475563 0.220000 749 +751 17 -27.269562 -1.700000 -13.745560 0.300000 750 +752 17 -27.309563 -1.700000 -13.975563 0.305000 751 +753 17 -16.459564 -4.120000 2.204437 0.210000 515 +754 17 -16.459564 -4.120000 2.204437 0.290000 753 +755 17 -16.529564 -4.750000 2.794441 0.290000 754 +756 17 -16.669563 -5.059999 3.064438 0.265000 755 +757 17 -16.899559 -5.440000 3.464439 0.255000 756 +758 17 -16.949562 -5.809999 3.554436 0.240000 757 +759 17 -17.229561 -6.400000 3.974434 0.200000 758 +760 17 -17.329559 -6.469999 4.054436 0.200000 759 +761 17 -17.589561 -6.700000 4.284439 0.200000 760 +762 17 -17.939560 -6.750000 4.574440 0.230000 761 +763 17 -18.219559 -6.989999 4.804436 0.245000 762 +764 17 -18.419563 -7.150001 4.944435 0.265000 763 +765 17 -18.569557 -7.310000 5.054436 0.285000 764 +766 17 -18.899559 -7.390000 5.354439 0.310000 765 +767 17 -18.909561 -7.390000 5.364441 0.310000 766 +768 17 -19.159561 -7.499999 5.714439 0.310000 767 +769 17 -19.319557 -7.630000 6.054436 0.250000 768 +770 17 -19.769562 -8.060000 6.504440 0.225000 769 +771 17 -20.039558 -8.239999 6.724434 0.235000 770 +772 17 -20.299561 -8.310000 7.024437 0.235000 771 +773 17 -20.559563 -8.349999 7.344437 0.180000 772 +774 17 -20.739563 -8.579999 7.594437 0.180000 773 +775 17 -20.939560 -8.749999 7.914436 0.205000 774 +776 17 -21.259560 -8.839999 8.144440 0.225000 775 +777 17 -21.559563 -8.909999 8.354439 0.225000 776 +778 17 -21.809563 -9.079999 8.594437 0.220000 777 +779 17 -21.989563 -9.159999 8.854439 0.195000 778 +780 17 -22.129562 -9.310000 9.154434 0.185000 779 +781 17 -22.269562 -9.480000 9.474434 0.195000 780 +782 17 -22.329559 -9.310000 9.794441 0.205000 781 +783 16 -11.449562 -2.360000 -0.335564 0.415000 65 +784 16 -11.449562 -2.360000 -0.335564 0.415000 783 +785 16 -10.729561 -2.900000 0.004440 0.415000 784 +786 16 -10.259560 -2.630000 0.434441 0.415000 785 +787 16 -9.899559 -2.809999 1.164436 0.415000 786 +788 16 -9.729561 -2.780000 1.454437 0.415000 787 +789 16 -9.489563 -2.980000 1.794441 0.415000 788 +790 16 -9.189560 -3.059999 2.144440 0.415000 789 +791 16 -9.119560 -3.110000 2.514435 0.415000 790 +792 16 -9.089561 -3.120000 2.624435 0.375000 791 +793 16 -9.069557 -2.839999 3.054436 0.375000 792 +794 16 -8.879562 -2.790000 3.444435 0.375000 793 +795 16 -8.859558 -2.830000 3.734436 0.375000 794 +796 16 -8.779564 -2.960000 4.034439 0.375000 795 +797 16 -8.709564 -2.929999 4.304436 0.375000 796 +798 16 -8.559563 -2.910000 4.984436 0.375000 797 +799 16 -8.349564 -2.929999 5.254440 0.375000 798 +800 16 -8.199562 -2.940000 5.454437 0.415000 799 +801 16 -8.059563 -2.770000 5.754440 0.420000 800 +802 17 -7.909561 -3.059999 6.044441 0.420000 801 +803 17 -7.909561 -3.059999 6.044441 0.420000 802 +804 17 -7.809563 -2.920000 6.344437 0.370000 803 +805 17 -7.379562 -2.500000 6.744438 0.290000 804 +806 17 -7.089561 -2.349999 7.094437 0.320000 805 +807 17 -6.799561 -2.410000 7.384438 0.295000 806 +808 17 -6.589561 -2.410000 7.654434 0.295000 807 +809 17 -6.179558 -2.089999 8.224434 0.195000 808 +810 17 -5.849564 -2.460000 8.734436 0.195000 809 +811 17 -5.379562 -2.650000 8.994438 0.285000 810 +812 17 -4.999557 -2.679999 9.224434 0.285000 811 +813 17 -4.619560 -3.070000 9.544441 0.190000 812 +814 17 -4.289558 -3.210000 10.014435 0.190000 813 +815 17 -3.999557 -3.170000 10.394440 0.170000 814 +816 17 -3.339561 -3.559999 10.864441 0.250000 815 +817 17 -2.929558 -4.210000 11.394440 0.410000 816 +818 17 -2.849564 -4.240000 11.464439 0.410000 817 +819 17 -2.759560 -4.280000 11.554436 0.410000 818 +820 17 -2.619560 -4.349999 11.684441 0.410000 819 +821 17 -2.339561 -4.240000 11.984436 0.410000 820 +822 17 -2.049561 -3.969999 12.284439 0.390000 821 +823 17 -1.689560 -3.969999 12.494438 0.390000 822 +824 17 -1.689560 -3.969999 12.494438 0.270000 823 +825 17 -1.919563 -3.740000 13.174438 0.270000 824 +826 17 -1.939560 -3.679999 13.254440 0.240000 825 +827 17 -1.999557 -3.900000 13.954437 0.240000 826 +828 17 -1.999557 -4.009999 14.254440 0.240000 827 +829 17 -2.089561 -3.900000 14.544441 0.275000 828 +830 17 -2.119560 -3.880000 14.834435 0.285000 829 +831 17 -2.179558 -3.929999 15.104439 0.275000 830 +832 17 -2.219559 -4.059999 15.394440 0.225000 831 +833 17 -2.509560 -3.700000 15.984436 0.260000 832 +834 17 -2.379562 -3.790000 16.574440 0.250000 833 +835 17 -2.359558 -3.820000 16.774437 0.250000 834 +836 17 -2.189560 -3.780000 17.104439 0.275000 835 +837 17 -2.059563 -3.860000 17.424438 0.275000 836 +838 17 -1.949562 -3.960000 17.664436 0.255000 837 +839 17 -1.749557 -4.040000 17.964439 0.195000 838 +840 17 -1.459564 -4.370000 18.274437 0.195000 839 +841 17 -1.689560 -3.969999 12.494438 0.390000 822 +842 17 -1.689560 -3.969999 12.494438 0.260000 841 +843 17 -1.069557 -3.520000 12.854439 0.260000 842 +844 17 -0.809563 -3.799999 13.134438 0.255000 843 +845 17 -0.799561 -4.020000 13.144440 0.250000 844 +846 17 -0.479561 -4.200000 13.444435 0.205000 845 +847 17 -0.239563 -4.349999 13.774437 0.175000 846 +848 17 -0.179558 -4.349999 14.124435 0.175000 847 +849 17 -0.159561 -4.520000 14.444435 0.190000 848 +850 17 -0.129562 -4.730000 14.664436 0.190000 849 +851 17 0.190437 -4.780000 15.064438 0.190000 850 +852 17 0.490440 -4.610000 15.464439 0.205000 851 +853 17 0.790443 -4.440000 15.744438 0.205000 852 +854 17 0.790443 -4.440000 15.744438 0.205000 853 +855 17 1.060432 -4.190000 16.014435 0.205000 854 +856 17 1.190437 -4.009999 16.374435 0.295000 855 +857 17 1.380440 -4.110000 16.754440 0.200000 856 +858 17 1.530434 -4.130000 17.124435 0.195000 857 +859 17 1.850441 -4.349999 17.434441 0.165000 858 +860 17 2.140434 -4.349999 17.724434 0.165000 859 +861 17 2.140434 -4.349999 17.724434 0.170000 860 +862 17 2.550438 -4.349999 17.314438 0.170000 861 +863 17 2.970436 -4.530000 16.874435 0.205000 862 +864 17 3.350441 -4.620000 16.444435 0.215000 863 +865 17 3.840446 -4.610000 15.754440 0.180000 864 +866 17 2.140434 -4.349999 17.724434 0.165000 859 +867 17 2.140434 -4.349999 17.724434 0.165000 866 +868 17 1.850441 -4.349999 17.894440 0.165000 867 +869 17 1.580437 -4.070000 18.244438 0.240000 868 +870 17 1.440437 -3.960000 18.594437 0.240000 869 +871 17 1.270439 -4.020000 18.914436 0.230000 870 +872 17 1.110435 -4.099999 19.174438 0.205000 871 +873 17 0.710442 -4.280000 19.464439 0.200000 872 +874 17 0.440437 -4.389999 19.584435 0.190000 873 +875 17 -0.039558 -4.570000 19.654434 0.210000 874 +876 17 0.790443 -4.440000 15.744438 0.205000 852 +877 17 0.790443 -4.440000 15.744438 0.195000 876 +878 17 0.760437 -4.099999 15.534439 0.195000 877 +879 17 0.930443 -3.630000 15.574440 0.190000 878 +880 17 1.260445 -3.230000 15.494438 0.180000 879 +881 17 1.620445 -2.790000 15.274437 0.175000 880 +882 17 1.850441 -2.160000 14.924438 0.260000 881 +883 17 1.910439 -2.170000 14.784439 0.260000 882 +884 17 2.000435 -2.190000 14.534439 0.260000 883 +885 17 2.120445 -2.420000 14.224434 0.260000 884 +886 17 2.370445 -2.770000 13.964439 0.320000 885 +887 17 2.680443 -2.980000 13.654434 0.320000 886 +888 17 2.710442 -3.070000 13.624435 0.320000 887 +889 17 3.110435 -3.599999 13.104439 0.220000 888 +890 17 3.280434 -3.710000 12.784439 0.205000 889 +891 17 3.660439 -3.570000 12.264435 0.240000 890 +892 17 3.990440 -3.570000 11.954437 0.310000 891 +893 17 4.030434 -3.580000 11.914436 0.310000 892 +894 17 4.250435 -3.610000 11.714439 0.305000 893 +895 17 4.470436 -3.639999 11.504440 0.300000 894 +896 17 5.000435 -3.549999 11.234436 0.245000 895 +897 17 5.430443 -3.589999 10.904434 0.210000 896 +898 17 5.810432 -3.730000 10.674438 0.210000 897 +899 17 6.160439 -3.790000 10.224434 0.275000 898 +900 17 6.370445 -3.920000 10.044441 0.275000 899 +901 17 6.810432 -3.950000 9.654434 0.215000 900 +902 17 6.860435 -3.950000 9.614441 0.210000 901 +903 17 7.100441 -4.000000 9.424438 0.200000 902 +904 17 7.470436 -4.009999 9.254440 0.200000 903 +905 17 7.780434 -3.920000 9.094437 0.265000 904 +906 17 8.020439 -3.920000 8.904434 0.350000 905 +907 17 8.160439 -3.880000 8.664436 0.350000 906 +908 17 8.260445 -3.889999 8.384438 0.305000 907 +909 17 8.290443 -3.880000 8.104439 0.225000 908 +910 17 8.550438 -3.759999 7.214439 0.260000 909 +911 17 8.600441 -3.759999 6.934441 0.305000 910 +912 17 8.670433 -3.790000 6.664436 0.305000 911 +913 17 8.960442 -3.969999 5.754440 0.205000 912 +914 17 9.150444 -3.910000 5.484436 0.220000 913 +915 17 9.370445 -3.920000 5.254440 0.205000 914 +916 17 9.610435 -4.190000 5.024437 0.190000 915 +917 17 9.900444 -4.440000 4.534439 0.235000 916 +918 17 10.220436 -4.270000 4.114441 0.210000 917 +919 17 10.280434 -4.349999 3.714439 0.240000 918 +920 17 10.340446 -4.349999 3.424438 0.225000 919 +921 17 10.410439 -4.440000 2.974434 0.225000 920 +922 17 10.440437 -4.460000 2.844437 0.225000 921 +923 17 10.440437 -4.349999 2.534439 0.270000 922 +924 17 10.500435 -4.200000 2.264435 0.225000 923 +925 17 10.700432 -4.110000 1.994438 0.195000 924 +926 17 11.000435 -4.070000 1.514435 0.205000 925 +927 17 11.140434 -4.020000 1.244438 0.230000 926 +928 17 11.460442 -4.290000 0.834435 0.205000 927 +929 17 11.680443 -4.620000 0.274437 0.205000 928 +930 17 11.870445 -4.660000 -0.045563 0.180000 929 +931 17 12.010445 -4.630000 -0.305565 0.225000 930 +932 17 12.280434 -4.179999 -0.825562 0.235000 931 +933 17 12.550438 -3.839999 -1.365562 0.280000 932 +934 17 12.600441 -3.610000 -1.725563 0.285000 933 +935 17 12.900444 -3.469999 -2.365562 0.420000 934 +936 17 12.950432 -3.490000 -2.505562 0.385000 935 +937 17 13.200432 -3.589999 -3.155563 0.220000 936 +938 17 13.250435 -3.530000 -3.285561 0.220000 937 +939 17 13.500435 -3.190000 -3.895561 0.240000 938 +940 17 14.160439 -2.780000 -5.005562 0.215000 939 +941 17 14.490440 -3.059999 -5.595566 0.215000 940 +942 17 14.790443 -3.230000 -5.925560 0.195000 941 +943 17 15.220436 -3.110000 -6.415565 0.170000 942 +944 17 15.400444 -3.099999 -6.805565 0.320000 943 +945 17 15.450432 -3.099999 -6.925560 0.370000 944 +946 17 15.480446 -3.099999 -6.985565 0.390000 945 +947 17 15.540443 -3.160000 -7.405563 0.390000 946 +948 17 15.450432 -3.059999 -7.845566 0.120000 947 +949 17 15.390434 -3.059999 -8.135559 0.120000 948 +950 17 15.270439 -2.860000 -8.445564 0.205000 949 +951 17 15.080437 -2.889999 -8.725563 0.265000 950 +952 17 14.880440 -2.780000 -9.035561 0.265000 951 +953 17 14.410439 -2.420000 -9.765564 0.130000 952 +954 17 14.110435 -2.420000 -9.935562 0.130000 953 +955 17 13.840446 -2.589999 -10.155563 0.190000 954 +956 17 13.580437 -2.530000 -10.485565 0.195000 955 +957 17 -7.909561 -3.059999 6.044441 0.420000 801 +958 17 -7.909561 -3.059999 6.044441 0.255000 957 +959 17 -7.859558 -3.120000 7.434441 0.255000 958 +960 17 -7.739563 -2.969999 7.754440 0.275000 959 +961 17 -7.639565 -2.969999 7.984436 0.300000 960 +962 17 -7.619560 -2.980000 8.024437 0.310000 961 +963 17 -7.469559 -2.980000 8.364441 0.310000 962 +964 17 -7.359558 -3.000000 8.674438 0.300000 963 +965 17 -7.349564 -3.009999 8.724434 0.300000 964 +966 17 -7.349564 -3.120000 9.044441 0.295000 965 +967 17 -7.329559 -3.259999 9.334435 0.285000 966 +968 17 -7.359558 -3.190000 9.634438 0.270000 967 +969 17 -7.279564 -3.099999 9.924438 0.185000 968 +970 17 -7.179558 -3.280000 10.524437 0.215000 969 +971 17 -7.109558 -3.410000 10.814438 0.315000 970 +972 17 -7.019562 -3.370000 11.094437 0.315000 971 +973 17 -6.859558 -3.460000 11.694435 0.245000 972 +974 17 -6.789558 -3.420000 11.884438 0.275000 973 +975 17 -6.649559 -3.339999 12.264435 0.330000 974 +976 17 -6.549561 -3.299999 12.554436 0.320000 975 +977 17 -6.439560 -3.250000 12.834435 0.305000 976 +978 17 -6.369560 -3.240000 13.124435 0.260000 977 +979 17 -6.319557 -3.250000 13.324440 0.230000 978 +980 17 -6.299561 -3.259999 13.414436 0.215000 979 +981 17 -6.319557 -3.360000 13.674438 0.215000 980 +982 17 -6.209564 -3.719999 14.174438 0.215000 981 +983 17 -6.109558 -3.700000 14.584435 0.210000 982 +984 17 -6.129562 -3.700000 15.024437 0.210000 983 +985 17 -6.199562 -3.650000 15.404434 0.235000 984 +986 17 -6.219559 -3.639999 15.904434 0.275000 985 +987 17 -6.349564 -3.599999 16.324440 0.240000 986 +988 17 -6.249557 -3.880000 16.904434 0.240000 987 +989 17 -6.159561 -4.089999 17.674438 0.205000 988 +990 17 -6.159561 -4.089999 17.734436 0.205000 989 +991 17 -6.149559 -4.089999 18.254440 0.240000 990 +992 17 -6.149559 -4.089999 18.254440 0.240000 991 +993 17 -6.249557 -4.040000 18.794441 0.180000 992 +994 17 -6.349564 -4.240000 19.134438 0.160000 993 +995 17 -6.439560 -4.520000 19.534439 0.160000 994 +996 17 -6.499557 -4.580000 19.634438 0.170000 995 +997 17 -6.659561 -4.719999 19.874435 0.205000 996 +998 17 -6.819557 -4.790000 20.284439 0.255000 997 +999 17 -6.889565 -4.870000 20.574440 0.260000 998 +1000 17 -6.959564 -4.980000 20.864441 0.310000 999 +1001 17 -7.049561 -5.040000 21.144440 0.330000 1000 +1002 17 -7.109558 -5.049999 21.424438 0.330000 1001 +1003 17 -7.169563 -5.009999 21.714439 0.305000 1002 +1004 17 -7.199562 -4.969999 22.004440 0.295000 1003 +1005 17 -7.259560 -5.059999 22.314438 0.230000 1004 +1006 17 -7.339561 -5.089999 22.564438 0.190000 1005 +1007 17 -7.319557 -5.089999 22.884438 0.240000 1006 +1008 17 -7.319557 -5.030000 23.164436 0.255000 1007 +1009 17 -7.259560 -5.030000 23.504440 0.250000 1008 +1010 17 -7.199562 -5.089999 23.714439 0.255000 1009 +1011 17 -7.169563 -5.110000 23.804436 0.255000 1010 +1012 17 -7.109558 -5.179999 24.064438 0.260000 1011 +1013 17 -7.029564 -5.210000 24.344437 0.265000 1012 +1014 17 -6.819557 -5.500000 24.934441 0.205000 1013 +1015 17 -6.819557 -5.500000 25.014435 0.220000 1014 +1016 17 -6.829559 -5.509999 25.354439 0.275000 1015 +1017 17 -6.879562 -5.440000 26.094437 0.170000 1016 +1018 17 -6.859558 -5.170000 26.554436 0.170000 1017 +1019 17 -6.679558 -5.150000 27.034439 0.230000 1018 +1020 17 -6.849564 -5.200000 27.544441 0.245000 1019 +1021 17 -6.939560 -5.240000 27.894440 0.345000 1020 +1022 17 -7.099564 -5.120000 28.184441 0.345000 1021 +1023 17 -7.219559 -4.990000 28.474434 0.285000 1022 +1024 17 -7.269562 -5.020000 28.804436 0.285000 1023 +1025 17 -7.349564 -5.099999 29.134438 0.345000 1024 +1026 17 -7.459564 -4.960000 29.404434 0.360000 1025 +1027 17 -7.479561 -4.620000 29.964439 0.365000 1026 +1028 17 -7.449562 -4.480000 30.174438 0.360000 1027 +1029 17 -7.409561 -4.219999 30.464439 0.345000 1028 +1030 17 -7.339561 -4.360000 30.684441 0.320000 1029 +1031 17 -7.219559 -4.670000 31.234436 0.295000 1030 +1032 17 -7.219559 -4.990000 31.674438 0.210000 1031 +1033 17 -7.009560 -5.040000 32.004440 0.210000 1032 +1034 17 -6.959564 -5.000000 32.324440 0.175000 1033 +1035 17 -6.909561 -4.980000 32.664436 0.175000 1034 +1036 17 -6.849564 -4.740000 32.944435 0.175000 1035 +1037 17 -6.819557 -4.599999 33.294441 0.215000 1036 +1038 17 -6.899559 -4.730000 33.794441 0.245000 1037 +1039 17 -6.829559 -4.740000 34.384438 0.245000 1038 +1040 17 -6.909561 -4.889999 34.604439 0.220000 1039 +1041 17 -7.019562 -5.179999 34.924438 0.175000 1040 +1042 17 -6.959564 -5.190000 35.304436 0.220000 1041 +1043 17 -6.929558 -5.190000 35.454437 0.235000 1042 +1044 17 -6.939560 -5.280000 35.704437 0.260000 1043 +1045 17 -6.849564 -5.299999 36.164436 0.250000 1044 +1046 17 -6.689560 -5.280000 36.644440 0.220000 1045 +1047 17 -6.559563 -5.280000 37.074440 0.220000 1046 +1048 17 -6.559563 -5.280000 37.074440 0.130000 1047 +1049 17 -5.789558 -4.780000 36.184441 0.130000 1048 +1050 17 -5.349564 -5.139999 36.334435 0.140000 1049 +1051 17 -4.959564 -5.460000 36.314438 0.195000 1050 +1052 17 -4.459564 -5.500000 36.274437 0.305000 1051 +1053 17 -6.559563 -5.280000 37.074440 0.220000 1046 +1054 17 -6.559563 -5.280000 37.074440 0.240000 1053 +1055 17 -6.559563 -5.070000 37.074440 0.240000 1054 +1056 17 -6.549561 -5.080000 37.104439 0.240000 1055 +1057 17 -6.469559 -5.190000 37.484436 0.250000 1056 +1058 17 -6.419563 -5.230000 37.814438 0.295000 1057 +1059 17 -6.349564 -5.309999 38.074440 0.295000 1058 +1060 17 -6.349564 -5.330000 38.084435 0.295000 1059 +1061 17 -6.179558 -5.400000 38.344437 0.295000 1060 +1062 17 -5.889565 -5.420000 38.854439 0.315000 1061 +1063 17 -5.759560 -5.339999 39.214439 0.320000 1062 +1064 17 -5.739563 -5.320000 39.294441 0.320000 1063 +1065 17 -5.669563 -5.339999 39.604439 0.320000 1064 +1066 17 -5.589561 -5.410000 39.914436 0.315000 1065 +1067 17 -5.549561 -5.389999 40.464439 0.160000 1066 +1068 17 -5.569557 -5.290000 41.134438 0.240000 1067 +1069 17 -5.469559 -5.230000 41.404434 0.250000 1068 +1070 17 -5.209564 -5.099999 41.914436 0.265000 1069 +1071 17 -5.189560 -5.139999 42.534439 0.250000 1070 +1072 17 -5.169563 -5.170000 42.724434 0.260000 1071 +1073 17 -5.109558 -5.219999 43.164436 0.285000 1072 +1074 17 -4.949562 -5.210000 43.994438 0.295000 1073 +1075 17 -4.949562 -5.210000 44.004436 0.300000 1074 +1076 17 -4.829559 -4.990000 44.284439 0.355000 1075 +1077 17 -4.829559 -4.990000 44.574436 0.355000 1076 +1078 17 -4.719559 -5.170000 44.854439 0.325000 1077 +1079 16 -5.579559 0.450001 -8.135559 0.425000 40 +1080 16 -5.579559 0.450001 -8.135559 0.425000 1079 +1081 16 -6.379562 0.450001 -8.585564 0.425000 1080 +1082 16 -6.639565 0.300000 -8.885559 0.425000 1081 +1083 16 -6.789558 0.270000 -9.225563 0.425000 1082 +1084 16 -6.959564 0.360001 -9.735565 0.425000 1083 +1085 16 -7.099564 0.150001 -10.285561 0.425000 1084 +1086 16 -7.219559 0.150001 -10.575562 0.425000 1085 +1087 16 -7.329559 0.150001 -10.865562 0.425000 1086 +1088 16 -7.449562 0.230000 -11.345566 0.425000 1087 +1089 16 -7.509560 0.150001 -11.745560 0.425000 1088 +1090 16 -7.569557 0.150001 -12.035561 0.415000 1089 +1091 16 -7.559563 0.150001 -12.325562 0.410000 1090 +1092 16 -7.619560 0.150001 -12.615562 0.390000 1091 +1093 16 -7.679558 0.150001 -12.905563 0.380000 1092 +1094 16 -7.859558 -0.089999 -13.345566 0.330000 1093 +1095 16 -8.099564 -0.299999 -13.765564 0.305000 1094 +1096 16 -8.229561 -0.780000 -14.165565 0.350000 1095 +1097 16 -8.539558 -0.849999 -14.575562 0.390000 1096 +1098 16 -8.699562 -1.160000 -15.005562 0.430000 1097 +1099 16 -8.839561 -1.030000 -15.495560 0.445000 1098 +1100 16 -9.229561 -0.190000 -15.985565 0.395000 1099 +1101 17 -9.229561 0.330000 -15.985565 0.315000 1100 +1102 17 -9.229561 0.330000 -15.985565 0.290000 1101 +1103 17 -8.989563 0.200001 -16.815559 0.290000 1102 +1104 17 -8.969559 0.540000 -17.505562 0.260000 1103 +1105 17 -9.039558 0.890000 -18.015564 0.270000 1104 +1106 17 -9.019562 0.900001 -18.415565 0.260000 1105 +1107 17 -9.009560 1.020000 -18.855560 0.185000 1106 +1108 17 -8.949562 1.030001 -19.375565 0.200000 1107 +1109 17 -8.899559 1.000000 -19.805565 0.200000 1108 +1110 17 -8.849564 0.960000 -20.275566 0.250000 1109 +1111 17 -8.929558 0.800000 -21.015556 0.185000 1110 +1112 17 -8.949562 1.030001 -21.565559 0.230000 1111 +1113 17 -8.949562 1.030001 -21.595558 0.235000 1112 +1114 17 -8.859558 0.900001 -22.165565 0.365000 1113 +1115 17 -8.649559 0.840000 -22.835564 0.365000 1114 +1116 17 -8.339561 0.510000 -23.375557 0.245000 1115 +1117 17 -8.199562 0.420000 -23.755562 0.250000 1116 +1118 17 -7.899559 0.350000 -24.265556 0.250000 1117 +1119 17 -7.829559 0.160001 -24.805565 0.225000 1118 +1120 17 -7.699562 0.670000 -25.345558 0.255000 1119 +1121 17 -7.709564 0.650001 -25.635567 0.255000 1120 +1122 17 -7.639565 0.760000 -25.915565 0.265000 1121 +1123 17 -7.639565 0.770000 -25.945564 0.265000 1122 +1124 17 -7.619560 0.860001 -26.195564 0.265000 1123 +1125 17 -7.529564 0.880000 -26.525566 0.185000 1124 +1126 17 -7.439560 0.690001 -26.895561 0.185000 1125 +1127 17 -7.169563 0.790000 -27.285561 0.190000 1126 +1128 17 -7.039558 0.760000 -27.845558 0.190000 1127 +1129 17 -6.969559 0.750000 -28.365562 0.175000 1128 +1130 17 -6.739563 0.920000 -28.775566 0.190000 1129 +1131 17 -6.369560 1.130000 -29.155556 0.200000 1130 +1132 17 -6.109558 1.080000 -29.585564 0.210000 1131 +1133 17 -6.079559 1.090000 -29.635567 0.230000 1132 +1134 17 -5.929558 1.130000 -29.875557 0.330000 1133 +1135 17 -5.759560 1.090000 -30.155556 0.345000 1134 +1136 17 -5.649559 1.060000 -30.445564 0.345000 1135 +1137 17 -5.559563 1.010000 -30.735558 0.345000 1136 +1138 17 -5.579559 0.790000 -31.215569 0.320000 1137 +1139 17 -5.489563 0.730000 -31.705559 0.210000 1138 +1140 17 -5.449562 0.680000 -31.855568 0.240000 1139 +1141 17 -5.359558 0.560000 -32.235558 0.315000 1140 +1142 17 -5.239563 0.620000 -32.535561 0.275000 1141 +1143 17 -5.119560 0.690001 -32.835564 0.265000 1142 +1144 17 -5.059563 0.790000 -33.125557 0.175000 1143 +1145 17 -5.009560 0.790000 -33.415565 0.175000 1144 +1146 17 -4.879562 0.830000 -33.715569 0.190000 1145 +1147 17 -4.769562 0.670000 -34.165565 0.265000 1146 +1148 17 -4.539558 0.670000 -34.735558 0.265000 1147 +1149 17 -4.539558 0.670000 -34.735558 0.195000 1148 +1150 17 -4.239563 1.230000 -34.465569 0.195000 1149 +1151 17 -3.969559 1.340000 -34.475563 0.195000 1150 +1152 17 -3.629562 1.340000 -34.435570 0.195000 1151 +1153 17 -3.629562 1.340000 -34.435570 0.245000 1152 +1154 17 -3.039558 1.300000 -34.285561 0.245000 1153 +1155 17 -2.419563 1.290000 -34.015556 0.235000 1154 +1156 17 -2.109558 1.840000 -33.975563 0.140000 1155 +1157 17 -1.829559 2.020000 -33.965569 0.140000 1156 +1158 17 -1.499557 2.200000 -33.965569 0.130000 1157 +1159 17 -1.219559 2.290000 -33.955559 0.200000 1158 +1160 17 -0.919563 2.340000 -33.935570 0.205000 1159 +1161 17 -0.649559 2.390000 -33.915565 0.205000 1160 +1162 17 -0.429558 2.370000 -33.925560 0.195000 1161 +1163 17 -3.629562 1.340000 -34.435570 0.195000 1151 +1164 17 -3.629562 1.340000 -34.435570 0.195000 1163 +1165 17 -3.629562 1.460001 -34.435570 0.195000 1164 +1166 17 -3.349564 1.090000 -34.495567 0.195000 1165 +1167 17 -3.089561 0.430000 -34.555565 0.195000 1166 +1168 17 -2.699562 0.190001 -34.505562 0.200000 1167 +1169 17 -2.089561 -0.179999 -34.815559 0.335000 1168 +1170 17 -1.489563 -0.120000 -35.215569 0.210000 1169 +1171 17 -1.099564 0.080000 -35.545555 0.210000 1170 +1172 17 -1.019562 0.150001 -35.615562 0.210000 1171 +1173 17 -1.019562 0.150001 -35.615562 0.175000 1172 +1174 17 -1.499557 0.050000 -36.175560 0.175000 1173 +1175 17 -1.859558 -0.139999 -36.165565 0.195000 1174 +1176 17 -2.059563 -0.469999 -36.045555 0.195000 1175 +1177 17 -2.239563 -0.589999 -35.795555 0.170000 1176 +1178 17 -2.369560 -0.599999 -35.505562 0.195000 1177 +1179 17 -2.619560 -0.530000 -35.065559 0.220000 1178 +1180 17 -2.749557 -0.710000 -34.665565 0.200000 1179 +1181 17 -2.769562 -0.700000 -34.185570 0.200000 1180 +1182 17 -2.869560 -0.759999 -33.745567 0.175000 1181 +1183 17 -2.899559 -0.580000 -33.245567 0.165000 1182 +1184 17 -3.059563 -0.650000 -32.745567 0.160000 1183 +1185 17 -3.249557 -0.690000 -32.275566 0.160000 1184 +1186 17 -3.269562 -0.950000 -31.685570 0.165000 1185 +1187 17 -3.359558 -1.130000 -31.415565 0.165000 1186 +1188 17 -1.019562 0.150001 -35.615562 0.210000 1171 +1189 17 -1.019562 0.150001 -35.615562 0.195000 1188 +1190 17 -0.669563 0.430000 -36.015556 0.195000 1189 +1191 17 -0.529564 0.790000 -36.445564 0.185000 1190 +1192 17 -0.299561 1.040000 -36.755562 0.250000 1191 +1193 17 -0.159561 1.290000 -37.005562 0.265000 1192 +1194 17 -4.539558 0.670000 -34.735558 0.265000 1147 +1195 17 -4.539558 0.670000 -34.735558 0.200000 1194 +1196 17 -4.539558 1.110001 -34.735558 0.200000 1195 +1197 17 -4.519562 1.240000 -35.175560 0.310000 1196 +1198 17 -4.599564 1.320000 -35.445564 0.315000 1197 +1199 17 -4.669563 1.360000 -35.735558 0.315000 1198 +1200 17 -4.669563 1.370000 -36.035561 0.310000 1199 +1201 17 -4.689560 1.430000 -36.325569 0.265000 1200 +1202 17 -4.619560 1.510000 -36.605568 0.205000 1201 +1203 17 -4.529564 1.530000 -37.015556 0.315000 1202 +1204 17 -4.489563 1.540000 -37.205559 0.365000 1203 +1205 17 -4.279564 1.630000 -37.495567 0.365000 1204 +1206 17 -3.999557 1.550000 -37.835564 0.275000 1205 +1207 17 -3.689560 1.660000 -38.155556 0.250000 1206 +1208 17 -3.549561 1.430000 -38.415565 0.250000 1207 +1209 17 -3.379562 1.430000 -38.705559 0.250000 1208 +1210 17 -3.169563 1.680000 -38.995567 0.305000 1209 +1211 17 -3.159561 1.680000 -39.015556 0.305000 1210 +1212 17 -3.029564 1.680000 -39.355568 0.305000 1211 +1213 17 -3.039558 1.600000 -39.815559 0.225000 1212 +1214 17 -3.099564 1.630000 -40.395561 0.275000 1213 +1215 17 -3.039558 1.730000 -40.835564 0.230000 1214 +1216 17 -3.029564 1.430000 -41.265556 0.230000 1215 +1217 17 -2.929558 1.350000 -41.655556 0.245000 1216 +1218 17 -2.749557 1.420001 -42.265556 0.225000 1217 +1219 17 -2.519562 1.550000 -42.655556 0.230000 1218 +1220 17 -2.329559 1.320000 -42.995567 0.245000 1219 +1221 17 -2.129562 1.100000 -43.285561 0.245000 1220 +1222 17 -2.109558 0.970000 -43.305565 0.245000 1221 +1223 17 -1.889565 0.920000 -43.655556 0.325000 1222 +1224 17 -1.739563 0.840000 -44.005562 0.325000 1223 +1225 17 -1.579559 0.770000 -44.295555 0.325000 1224 +1226 17 -1.279564 0.670000 -44.595558 0.320000 1225 +1227 17 -1.169563 0.790000 -44.925560 0.290000 1226 +1228 17 -0.879562 0.730000 -45.285561 0.235000 1227 +1229 17 -0.709564 0.410001 -45.635567 0.375000 1228 +1230 17 -0.559563 0.330000 -45.925560 0.375000 1229 +1231 17 -0.419563 0.140000 -46.395561 0.270000 1230 +1232 17 -0.449562 0.270000 -46.785561 0.355000 1231 +1233 17 -0.629562 0.190001 -47.275566 0.390000 1232 +1234 17 -0.919563 -0.110000 -47.655556 0.270000 1233 +1235 17 -1.259560 -0.420000 -48.105568 0.235000 1234 +1236 17 -1.409561 -0.150000 -48.425560 0.300000 1235 +1237 17 -1.559563 0.230000 -48.755562 0.390000 1236 +1238 17 -1.789558 0.120000 -48.975563 0.350000 1237 +1239 17 -1.929558 0.150001 -49.225563 0.350000 1238 +1240 17 -2.159561 0.150001 -49.515556 0.350000 1239 +1241 17 -2.229561 0.150001 -49.705559 0.345000 1240 +1242 17 -2.269562 0.150001 -49.805565 0.340000 1241 +1243 17 -2.459564 0.070001 -50.075569 0.340000 1242 +1244 17 -2.669563 0.150001 -50.375557 0.310000 1243 +1245 17 -2.799561 0.250000 -50.665565 0.295000 1244 +1246 17 -2.959564 0.290000 -50.975563 0.295000 1245 +1247 17 -3.089561 0.340000 -51.275566 0.315000 1246 +1248 17 -3.149559 0.150001 -51.605568 0.315000 1247 +1249 17 -3.149559 0.130000 -51.665565 0.315000 1248 +1250 17 -3.199562 0.000000 -52.075569 0.315000 1249 +1251 17 -3.189560 0.080000 -52.185570 0.300000 1250 +1252 17 -3.169563 0.080000 -52.455559 0.300000 1251 +1253 17 -3.169563 0.080000 -52.455559 0.210000 1252 +1254 17 -2.829559 0.130000 -52.525566 0.210000 1253 +1255 17 -2.329559 0.420000 -52.695564 0.180000 1254 +1256 17 -1.799561 0.620000 -52.805565 0.180000 1255 +1257 17 -1.509560 0.780001 -52.855568 0.180000 1256 +1258 17 -1.199562 0.900001 -52.915565 0.210000 1257 +1259 17 -0.939560 0.790000 -52.945564 0.210000 1258 +1260 17 -0.649559 0.790000 -53.005562 0.210000 1259 +1261 17 -0.359558 0.790000 -53.065559 0.210000 1260 +1262 17 -3.169563 0.080000 -52.455559 0.300000 1251 +1263 17 -3.169563 0.080000 -52.455559 0.205000 1262 +1264 17 -3.129562 0.600000 -52.815559 0.205000 1263 +1265 17 -3.079559 0.630000 -53.335564 0.205000 1264 +1266 17 -3.059563 0.620000 -53.625557 0.250000 1265 +1267 17 -3.069557 0.740001 -53.935570 0.265000 1266 +1268 17 -3.119560 0.810000 -54.245567 0.270000 1267 +1269 17 -3.199562 0.910001 -54.505562 0.270000 1268 +1270 17 -3.299561 0.820001 -54.755562 0.255000 1269 +1271 17 -3.319557 0.790000 -54.805565 0.250000 1270 +1272 17 -3.439560 0.790000 -55.095558 0.250000 1271 +1273 17 -3.539558 1.060000 -55.375557 0.340000 1272 +1274 17 -3.639565 1.150001 -55.665565 0.340000 1273 +1275 17 -3.729561 1.190001 -55.955559 0.320000 1274 +1276 17 -3.809563 1.180000 -56.245567 0.300000 1275 +1277 17 -3.929558 1.090000 -56.545555 0.250000 1276 +1278 17 -4.079559 0.930000 -56.845558 0.250000 1277 +1279 17 -4.269562 0.410001 -57.155556 0.260000 1278 +1280 17 -4.569557 -0.240000 -57.405556 0.280000 1279 +1281 17 -4.869560 -0.040000 -57.655556 0.280000 1280 +1282 17 -5.459564 0.600000 -58.055565 0.185000 1281 +1283 17 -5.939560 0.370000 -58.065559 0.160000 1282 +1284 17 -6.439560 0.220000 -58.175560 0.155000 1283 +1285 17 -6.939560 0.520000 -58.235558 0.155000 1284 +1286 17 -7.549561 0.640000 -58.305565 0.170000 1285 +1287 17 -7.869560 0.800000 -58.415565 0.195000 1286 +1288 17 -8.139565 0.790000 -58.585564 0.195000 1287 +1289 17 -8.489563 0.790000 -58.645561 0.195000 1288 +1290 17 -8.779564 0.790000 -58.755562 0.205000 1289 +1291 17 -9.119560 0.780001 -58.885567 0.245000 1290 +1292 17 -9.339561 0.840000 -59.125557 0.255000 1291 +1293 17 -9.529564 0.870000 -59.445564 0.245000 1292 +1294 17 -9.669563 0.820001 -59.725563 0.205000 1293 +1295 17 -9.739563 0.950001 -60.055565 0.205000 1294 +1296 17 -9.819557 1.080000 -60.365562 0.205000 1295 +1297 17 -9.819557 1.100000 -60.625557 0.250000 1296 +1298 17 -9.829559 0.990001 -60.635567 0.250000 1297 +1299 16 -9.229561 0.330000 -15.985565 0.315000 1100 +1300 16 -9.229561 0.330000 -15.985565 0.315000 1299 +1301 16 -9.649559 0.330000 -16.575562 0.315000 1300 +1302 16 -9.649559 0.490001 -16.575562 0.340000 1301 +1303 16 -9.649559 0.490001 -16.575562 0.305000 1302 +1304 16 -10.639565 0.470000 -16.875565 0.305000 1303 +1305 16 -10.819557 0.370000 -16.945564 0.305000 1304 +1306 16 -10.929558 0.300000 -16.985565 0.305000 1305 +1307 16 -11.289558 0.450001 -17.015564 0.305000 1306 +1308 16 -11.859558 0.550000 -17.155563 0.305000 1307 +1309 16 -12.019562 0.660001 -17.195564 0.305000 1308 +1310 16 -12.119560 0.780001 -17.225563 0.305000 1309 +1311 16 -12.729561 1.040000 -17.185562 0.305000 1310 +1312 16 -13.369560 0.970000 -17.045563 0.305000 1311 +1313 16 -13.509560 0.940001 -16.995560 0.305000 1312 +1314 16 -13.969559 0.820001 -16.835564 0.305000 1313 +1315 16 -14.509560 1.310000 -16.845566 0.305000 1314 +1316 16 -15.019562 1.390000 -16.875565 0.305000 1315 +1317 16 -15.489563 1.320000 -16.815559 0.305000 1316 +1318 16 -15.519562 1.310000 -16.815559 0.305000 1317 +1319 16 -15.809563 1.430000 -16.675560 0.305000 1318 +1320 16 -16.179558 1.540000 -16.655563 0.305000 1319 +1321 16 -16.589561 1.850000 -16.675560 0.305000 1320 +1322 16 -17.109558 2.090000 -16.605560 0.305000 1321 +1323 16 -17.389565 2.290000 -16.505562 0.305000 1322 +1324 16 -18.159561 2.960001 -16.155563 0.305000 1323 +1325 16 -18.699562 3.130000 -16.015564 0.305000 1324 +1326 16 -19.279564 2.990000 -15.885559 0.305000 1325 +1327 16 -19.709564 2.610000 -15.725563 0.305000 1326 +1328 16 -19.969559 2.510000 -15.625565 0.305000 1327 +1329 16 -20.259560 2.390000 -15.525566 0.305000 1328 +1330 16 -20.739563 2.230000 -15.475563 0.305000 1329 +1331 16 -20.759560 2.230000 -15.475563 0.305000 1330 +1332 16 -21.139565 2.110000 -15.405563 0.305000 1331 +1333 16 -21.629562 2.170001 -15.255562 0.305000 1332 +1334 16 -22.249557 2.410000 -15.305565 0.305000 1333 +1335 16 -22.629562 2.570000 -15.305565 0.305000 1334 +1336 16 -22.849564 2.680000 -15.295563 0.325000 1335 +1337 16 -23.159561 2.740000 -15.505562 0.270000 1336 +1338 16 -23.459564 2.550000 -15.655563 0.235000 1337 +1339 16 -23.779564 2.450000 -15.815559 0.255000 1338 +1340 17 -24.069557 2.130000 -15.955559 0.255000 1339 +1341 17 -24.069557 2.130000 -15.955559 0.260000 1340 +1342 17 -24.389565 1.720000 -16.485565 0.260000 1341 +1343 17 -24.539558 1.440001 -16.815559 0.220000 1342 +1344 17 -24.599564 1.150001 -17.135559 0.205000 1343 +1345 17 -24.539558 1.220000 -17.535561 0.185000 1344 +1346 17 -24.649559 1.430000 -18.015564 0.180000 1345 +1347 17 -24.789558 1.300000 -18.615562 0.180000 1346 +1348 17 -24.959564 1.290000 -18.835564 0.195000 1347 +1349 17 -25.119560 1.470000 -19.075562 0.215000 1348 +1350 17 -25.289558 1.570000 -19.355560 0.280000 1349 +1351 17 -25.429558 1.550000 -19.645561 0.280000 1350 +1352 17 -25.459564 1.560000 -19.985565 0.280000 1351 +1353 17 -25.489563 1.570000 -20.265564 0.280000 1352 +1354 17 -25.499557 1.690001 -20.535561 0.230000 1353 +1355 17 -25.569557 1.440001 -21.025566 0.205000 1354 +1356 17 -25.629562 1.390000 -21.445564 0.195000 1355 +1357 17 -25.679558 1.520000 -21.725563 0.290000 1356 +1358 17 -25.789558 1.630000 -21.935570 0.305000 1357 +1359 17 -25.829559 1.700000 -22.015556 0.315000 1358 +1360 17 -25.929558 1.790000 -22.305565 0.315000 1359 +1361 17 -26.449562 1.850000 -22.615562 0.230000 1360 +1362 17 -26.939560 2.010000 -22.855568 0.230000 1361 +1363 17 -27.479561 2.110000 -22.935570 0.325000 1362 +1364 17 -27.909561 2.430000 -23.155556 0.325000 1363 +1365 17 -28.369560 2.260000 -23.305565 0.285000 1364 +1366 17 -28.929558 2.210001 -23.515556 0.275000 1365 +1367 17 -29.239563 2.260000 -23.445564 0.250000 1366 +1368 17 -29.499557 2.320000 -23.435570 0.245000 1367 +1369 17 -24.069557 2.130000 -15.955559 0.255000 1339 +1370 17 -24.069557 2.130000 -15.955559 0.305000 1369 +1371 17 -24.599564 1.760000 -15.945564 0.305000 1370 +1372 17 -25.329559 1.270000 -15.975563 0.195000 1371 +1373 17 -25.599564 1.140000 -16.075562 0.220000 1372 +1374 17 -25.719559 1.060000 -16.115562 0.235000 1373 +1375 17 -26.049561 0.790000 -16.275566 0.290000 1374 +1376 17 -26.389565 0.790000 -16.355560 0.290000 1375 +1377 17 -26.389565 0.790000 -16.355560 0.275000 1376 +1378 17 -26.389565 0.660001 -16.355560 0.275000 1377 +1379 17 -26.679558 0.690001 -16.595566 0.275000 1378 +1380 17 -26.989563 0.820001 -16.805565 0.275000 1379 +1381 17 -27.529564 1.010000 -16.915565 0.240000 1380 +1382 17 -27.899559 1.160000 -16.985565 0.200000 1381 +1383 17 -28.519562 1.180000 -17.205559 0.215000 1382 +1384 17 -28.799561 1.490000 -17.205559 0.210000 1383 +1385 17 -29.079559 1.520000 -17.175560 0.170000 1384 +1386 17 -29.099564 1.400001 -17.185562 0.210000 1385 +1387 17 -29.369560 1.480000 -17.075562 0.240000 1386 +1388 17 -29.709564 1.430000 -17.025566 0.285000 1387 +1389 17 -29.999557 1.570000 -16.895561 0.275000 1388 +1390 17 -30.299561 1.670001 -16.875565 0.275000 1389 +1391 17 -30.769562 1.860000 -16.985565 0.220000 1390 +1392 17 -31.239563 1.680000 -17.205559 0.235000 1391 +1393 17 -31.699562 1.540000 -17.475563 0.235000 1392 +1394 17 -32.179558 1.240000 -17.745560 0.265000 1393 +1395 17 -32.519562 1.300000 -18.075562 0.275000 1394 +1396 17 -32.869560 1.450000 -18.265564 0.275000 1395 +1397 17 -33.129562 1.540000 -18.375565 0.275000 1396 +1398 17 -33.159561 1.550000 -18.385559 0.275000 1397 +1399 17 -33.259560 1.580000 -18.435562 0.275000 1398 +1400 17 -33.529564 1.890000 -18.585564 0.275000 1399 +1401 17 -34.089561 1.870000 -18.745560 0.275000 1400 +1402 17 -34.419563 1.830000 -18.875565 0.275000 1401 +1403 17 -34.809563 1.730000 -18.985565 0.275000 1402 +1404 17 -35.539558 1.200000 -18.925560 0.220000 1403 +1405 17 -35.709564 1.080000 -18.875565 0.210000 1404 +1406 17 -35.839561 1.080000 -18.835564 0.210000 1405 +1407 17 -35.839561 1.080000 -18.835564 0.220000 1406 +1408 17 -36.009560 0.800000 -19.305565 0.220000 1407 +1409 17 -36.099564 0.790000 -19.415565 0.195000 1408 +1410 17 -36.389565 0.840000 -19.715561 0.180000 1409 +1411 17 -36.619560 0.790000 -19.935562 0.170000 1410 +1412 17 -36.919563 0.770000 -20.345566 0.170000 1411 +1413 17 -37.029564 0.980000 -20.815559 0.200000 1412 +1414 17 -35.839561 1.080000 -18.835564 0.210000 1405 +1415 17 -35.839561 1.080000 -18.835564 0.210000 1414 +1416 17 -35.839561 0.980000 -18.835564 0.210000 1415 +1417 17 -36.179558 0.690001 -18.735565 0.195000 1416 +1418 17 -36.679558 0.510000 -18.585564 0.175000 1417 +1419 17 -37.139565 0.550000 -18.565559 0.290000 1418 +1420 17 -37.419563 0.520000 -18.495560 0.345000 1419 +1421 17 -37.709564 0.380000 -18.275566 0.345000 1420 +1422 17 -37.999557 0.480000 -18.035561 0.260000 1421 +1423 17 -38.379562 0.230000 -17.505562 0.235000 1422 +1424 17 -38.619560 -0.160000 -17.055565 0.235000 1423 +1425 17 -39.079559 -0.240000 -16.755562 0.295000 1424 +1426 17 -39.179558 -0.230000 -16.725563 0.295000 1425 +1427 17 -39.389565 -0.210000 -16.665565 0.295000 1426 +1428 17 -39.669563 -0.170000 -16.525566 0.240000 1427 +1429 17 -39.969559 -0.160000 -16.405563 0.230000 1428 +1430 17 -40.269562 -0.200000 -16.255562 0.230000 1429 +1431 17 -40.579559 -0.160000 -16.175560 0.260000 1430 +1432 17 -40.869560 -0.120000 -16.135559 0.260000 1431 +1433 17 -41.279564 -0.270000 -16.115562 0.255000 1432 +1434 17 -41.679558 -0.059999 -16.125565 0.265000 1433 +1435 17 -42.029564 -0.120000 -16.145561 0.270000 1434 +1436 17 -42.339561 -0.179999 -16.315559 0.270000 1435 +1437 17 -42.619560 -0.210000 -16.465561 0.285000 1436 +1438 17 -42.939560 -0.160000 -16.775566 0.285000 1437 +1439 17 -43.189560 -0.160000 -17.095566 0.245000 1438 +1440 17 -43.329559 -0.190000 -17.365562 0.230000 1439 +1441 17 -43.439560 -0.250000 -17.615562 0.225000 1440 +1442 17 -26.389565 0.790000 -16.355560 0.290000 1375 +1443 17 -26.389565 0.790000 -16.355560 0.145000 1442 +1444 17 -26.249557 0.180000 -15.895561 0.145000 1443 +1445 17 -26.219559 0.150001 -15.465561 0.145000 1444 +1446 17 -26.299561 -0.049999 -15.095566 0.155000 1445 +1447 17 -26.279564 -0.299999 -14.735565 0.155000 1446 +1448 17 -26.099564 -0.570000 -14.305565 0.130000 1447 +1449 17 -25.919563 -0.660000 -13.985565 0.130000 1448 +1450 17 -25.589561 -0.679999 -13.695564 0.305000 1449 +1451 17 -25.109558 -0.730000 -13.495560 0.315000 1450 +1452 17 -9.649559 0.490001 -16.575562 0.340000 1301 +1453 17 -9.649559 0.490001 -16.575562 0.340000 1452 +1454 17 -9.969559 0.490001 -17.085564 0.340000 1453 +1455 17 -10.279564 0.650001 -17.655563 0.275000 1454 +1456 17 -10.459564 0.690001 -18.135559 0.235000 1455 +1457 17 -10.519562 0.720000 -18.395561 0.245000 1456 +1458 17 -10.629562 0.670000 -18.725563 0.175000 1457 +1459 17 -10.819557 0.690001 -19.295563 0.275000 1458 +1460 17 -10.919563 0.630000 -19.575562 0.305000 1459 +1461 17 -11.039558 0.560000 -19.865562 0.325000 1460 +1462 17 -11.179558 0.520000 -20.165565 0.325000 1461 +1463 17 -11.299561 0.520000 -20.455559 0.320000 1462 +1464 17 -11.459564 0.540000 -20.765556 0.320000 1463 +1465 17 -11.619560 0.460000 -21.055565 0.335000 1464 +1466 17 -11.779564 0.400001 -21.355568 0.360000 1465 +1467 17 -11.869560 0.240001 -21.695564 0.360000 1466 +1468 17 -11.979561 0.160001 -21.975563 0.325000 1467 +1469 17 -12.239563 0.100000 -22.395561 0.325000 1468 +1470 17 -12.459564 0.030001 -22.845558 0.325000 1469 +1471 17 -12.639565 0.030001 -23.405556 0.165000 1470 +1472 17 -12.709564 -0.030000 -23.695564 0.165000 1471 +1473 17 -12.669563 -0.130000 -23.985558 0.190000 1472 +1474 17 -12.499557 -0.370000 -24.305565 0.200000 1473 +1475 17 -12.369560 -0.520000 -24.645561 0.165000 1474 +1476 17 -12.259560 -0.830000 -24.925560 0.165000 1475 +1477 17 -12.169563 -0.820000 -25.245567 0.220000 1476 +1478 17 -12.119560 -1.059999 -25.615562 0.195000 1477 +1479 17 -12.119560 -1.059999 -25.615562 0.220000 1478 +1480 17 -11.309563 -1.400000 -25.445564 0.220000 1479 +1481 17 -10.679558 -2.360000 -25.185570 0.195000 1480 +1482 17 -9.949562 -2.410000 -25.385567 0.195000 1481 +1483 17 -9.559563 -2.500000 -25.435570 0.195000 1482 +1484 17 -9.049561 -2.650000 -25.455559 0.280000 1483 +1485 17 -8.779564 -2.820000 -25.385567 0.280000 1484 +1486 17 -8.489563 -3.070000 -25.375557 0.265000 1485 +1487 17 -8.199562 -3.259999 -25.365562 0.250000 1486 +1488 17 -7.719559 -3.480000 -25.365562 0.215000 1487 +1489 17 -7.249557 -3.450000 -25.375557 0.195000 1488 +1490 17 -6.859558 -3.710000 -25.365562 0.195000 1489 +1491 17 -6.459564 -3.700000 -25.395561 0.205000 1490 +1492 17 -6.169563 -3.700000 -25.395561 0.205000 1491 +1493 17 -5.879562 -3.700000 -25.515556 0.260000 1492 +1494 17 -5.479561 -3.480000 -25.695564 0.260000 1493 +1495 17 -5.079559 -3.290000 -25.895561 0.200000 1494 +1496 17 -4.829559 -3.130000 -26.165565 0.200000 1495 +1497 17 -4.669563 -3.110000 -26.495567 0.220000 1496 +1498 17 -4.339561 -3.020000 -26.845558 0.215000 1497 +1499 17 -4.029564 -2.799999 -27.015556 0.210000 1498 +1500 17 -3.389565 -2.650000 -27.245567 0.210000 1499 +1501 17 -2.949562 -2.540000 -27.665565 0.185000 1500 +1502 17 -2.829559 -2.559999 -28.075569 0.240000 1501 +1503 17 -2.639565 -2.420000 -28.515556 0.225000 1502 +1504 17 -12.119560 -1.059999 -25.615562 0.195000 1477 +1505 17 -12.119560 -1.059999 -25.615562 0.195000 1504 +1506 17 -12.159561 -1.270000 -26.065559 0.195000 1505 +1507 17 -12.169563 -1.639999 -26.365562 0.190000 1506 +1508 17 -12.169563 -1.770000 -26.695564 0.190000 1507 +1509 17 -12.209564 -1.839999 -26.985558 0.185000 1508 +1510 17 -12.269562 -1.780000 -27.255562 0.180000 1509 +1511 17 -12.159561 -2.030000 -27.825569 0.200000 1510 +1512 17 -12.159561 -2.030000 -27.825569 0.205000 1511 +1513 17 -12.449562 -2.270000 -27.395561 0.205000 1512 +1514 17 -13.119560 -2.400000 -27.535561 0.195000 1513 +1515 17 -13.539558 -2.570000 -27.565559 0.255000 1514 +1516 17 -13.699562 -2.660000 -27.575569 0.285000 1515 +1517 17 -13.999557 -2.670000 -27.485558 0.310000 1516 +1518 17 -14.299561 -2.759999 -27.375557 0.335000 1517 +1519 17 -14.359558 -2.780000 -27.315559 0.335000 1518 +1520 17 -14.609558 -2.849999 -27.085564 0.340000 1519 +1521 17 -14.789558 -2.929999 -26.795555 0.335000 1520 +1522 17 -14.859558 -3.070000 -26.425560 0.245000 1521 +1523 17 -15.199562 -3.250000 -25.985558 0.285000 1522 +1524 17 -15.849564 -3.089999 -25.595558 0.285000 1523 +1525 17 -15.849564 -3.089999 -25.595558 0.285000 1524 +1526 17 -16.359558 -3.570000 -25.355568 0.285000 1525 +1527 17 -16.879562 -3.660000 -25.205559 0.160000 1526 +1528 17 -17.269562 -3.690000 -24.995567 0.185000 1527 +1529 17 -17.729561 -3.559999 -24.725563 0.185000 1528 +1530 17 -18.069557 -3.610000 -24.505562 0.260000 1529 +1531 17 -18.499557 -3.809999 -24.215569 0.260000 1530 +1532 17 -18.759560 -3.929999 -24.005562 0.290000 1531 +1533 17 -18.899559 -4.000000 -23.885567 0.305000 1532 +1534 17 -19.269562 -4.009999 -23.535561 0.290000 1533 +1535 17 -19.629562 -4.179999 -23.175560 0.305000 1534 +1536 17 -19.929558 -4.360000 -22.885567 0.305000 1535 +1537 17 -20.479561 -4.630000 -22.575569 0.275000 1536 +1538 17 -20.749557 -4.809999 -22.415565 0.250000 1537 +1539 17 -21.289558 -5.009999 -22.105568 0.250000 1538 +1540 17 -21.569557 -5.389999 -21.825569 0.230000 1539 +1541 17 -21.799561 -6.040000 -21.585564 0.190000 1540 +1542 17 -22.419563 -6.219999 -21.195564 0.245000 1541 +1543 17 -22.509560 -6.270000 -21.185570 0.265000 1542 +1544 17 -22.719559 -6.380000 -21.155556 0.320000 1543 +1545 17 -23.019562 -6.429999 -21.155556 0.325000 1544 +1546 17 -23.279564 -6.440000 -21.185570 0.260000 1545 +1547 17 -23.589561 -6.450000 -21.085564 0.250000 1546 +1548 17 -23.899559 -6.480000 -20.985558 0.225000 1547 +1549 17 -24.179558 -6.380000 -20.935570 0.205000 1548 +1550 17 -24.479561 -6.270000 -20.805565 0.155000 1549 +1551 17 -25.069557 -6.299999 -20.655556 0.260000 1550 +1552 17 -25.459564 -6.309999 -20.565559 0.260000 1551 +1553 17 -26.309563 -6.320000 -20.035561 0.210000 1552 +1554 17 -26.659561 -6.559999 -19.665565 0.210000 1553 +1555 17 -26.659561 -6.559999 -19.665565 0.190000 1554 +1556 17 -26.759560 -7.140000 -19.115562 0.190000 1555 +1557 17 -26.689560 -7.730000 -18.825562 0.200000 1556 +1558 17 -26.359558 -8.579999 -18.595566 0.195000 1557 +1559 17 -26.069557 -9.290000 -18.455559 0.205000 1558 +1560 17 -25.759560 -9.650001 -18.175560 0.250000 1559 +1561 17 -25.569557 -9.849999 -17.895561 0.245000 1560 +1562 17 -25.339561 -10.030000 -17.675560 0.245000 1561 +1563 17 -25.049561 -10.409999 -17.425560 0.245000 1562 +1564 17 -24.809563 -10.489999 -17.235565 0.210000 1563 +1565 17 -24.619560 -10.640000 -16.925560 0.180000 1564 +1566 17 -24.439560 -10.650001 -16.635559 0.180000 1565 +1567 17 -24.199562 -10.860000 -16.215561 0.210000 1566 +1568 17 -23.949562 -11.120000 -15.845566 0.210000 1567 +1569 17 -23.649559 -11.169999 -15.455559 0.220000 1568 +1570 17 -23.369560 -11.089999 -14.475563 0.225000 1569 +1571 17 -23.289558 -11.509999 -14.075562 0.225000 1570 +1572 17 -23.309563 -11.810000 -13.675560 0.215000 1571 +1573 17 -23.429558 -12.249999 -13.215561 0.215000 1572 +1574 17 -23.609558 -12.370000 -12.345566 0.245000 1573 +1575 17 -23.749557 -12.890000 -11.865562 0.245000 1574 +1576 17 -23.589561 -13.770000 -11.735565 0.305000 1575 +1577 17 -23.439560 -14.870000 -11.885559 0.275000 1576 +1578 17 -26.659561 -6.559999 -19.665565 0.210000 1553 +1579 17 -26.659561 -6.559999 -19.665565 0.200000 1578 +1580 17 -27.299561 -6.700000 -19.305565 0.200000 1579 +1581 17 -27.849564 -6.570000 -18.895561 0.170000 1580 +1582 17 -28.309563 -6.589999 -18.745560 0.155000 1581 +1583 17 -28.639565 -6.250000 -18.415565 0.200000 1582 +1584 17 -28.959564 -6.000000 -18.075562 0.150000 1583 +1585 17 -15.849564 -3.089999 -25.595558 0.285000 1523 +1586 17 -15.849564 -3.089999 -25.595558 0.260000 1585 +1587 17 -15.669563 -3.080000 -25.295555 0.260000 1586 +1588 17 -15.429558 -3.330000 -24.935570 0.310000 1587 +1589 17 -15.139565 -3.309999 -24.615562 0.310000 1588 +1590 17 -14.719559 -3.679999 -24.365562 0.260000 1589 +1591 17 -14.459564 -3.719999 -24.235558 0.260000 1590 +1592 17 -13.999557 -3.929999 -24.145561 0.210000 1591 +1593 17 -13.599564 -4.020000 -23.965569 0.205000 1592 +1594 17 -13.339561 -3.679999 -23.735558 0.205000 1593 +1595 17 -12.979561 -3.460000 -23.365562 0.200000 1594 +1596 17 -12.899559 -3.219999 -22.915565 0.210000 1595 +1597 17 -12.159561 -2.030000 -27.825569 0.200000 1510 +1598 17 -12.159561 -2.030000 -27.825569 0.200000 1597 +1599 17 -12.119560 -2.080000 -28.215569 0.200000 1598 +1600 17 -12.079559 -2.120000 -28.515556 0.200000 1599 +1601 17 -12.209564 -2.420000 -29.005562 0.220000 1600 +1602 17 -12.389565 -2.420000 -29.295555 0.220000 1601 +1603 17 -12.419563 -2.280000 -29.325569 0.210000 1602 +1604 17 -12.909561 -1.920000 -29.915565 0.190000 1603 +1605 17 -12.999557 -1.880000 -30.325569 0.170000 1604 +1606 17 -13.009560 -1.860000 -30.525566 0.170000 1605 +1607 17 -13.029564 -1.830000 -30.795555 0.180000 1606 +1608 17 -13.009560 -1.759999 -31.105568 0.180000 1607 +1609 17 -12.969559 -1.690000 -31.375557 0.185000 1608 +1610 17 -12.969559 -1.580000 -31.755562 0.185000 1609 +1611 17 -13.099564 -1.440000 -32.235558 0.270000 1610 +1612 17 -13.209564 -1.299999 -32.555565 0.275000 1611 +1613 17 -13.259560 -1.750000 -32.555565 0.280000 1612 +1614 17 -13.259560 -1.719999 -32.555565 0.280000 1613 +1615 17 -13.259560 -1.719999 -32.555565 0.250000 1614 +1616 17 -12.759560 -1.830000 -33.075569 0.250000 1615 +1617 17 -12.629562 -1.700000 -33.385567 0.250000 1616 +1618 17 -12.509560 -1.839999 -33.655556 0.235000 1617 +1619 17 -12.389565 -1.780000 -33.945564 0.235000 1618 +1620 17 -12.239563 -1.860000 -34.255562 0.205000 1619 +1621 17 -12.229561 -1.860000 -34.265556 0.205000 1620 +1622 17 -11.939560 -1.710000 -34.565559 0.205000 1621 +1623 17 -11.669563 -1.570000 -34.835564 0.205000 1622 +1624 17 -11.429558 -1.540000 -35.145561 0.230000 1623 +1625 17 -11.119560 -1.420000 -35.555565 0.280000 1624 +1626 17 -10.989563 -1.370000 -35.725563 0.300000 1625 +1627 17 -10.819557 -1.450000 -36.025566 0.265000 1626 +1628 17 -10.649559 -1.700000 -36.375557 0.240000 1627 +1629 17 -10.399559 -2.030000 -36.825569 0.165000 1628 +1630 17 -10.129562 -2.120000 -37.195564 0.225000 1629 +1631 17 -9.819557 -2.170000 -37.615562 0.230000 1630 +1632 17 -9.789558 -2.190000 -37.685570 0.230000 1631 +1633 17 -9.649559 -2.250000 -37.915565 0.230000 1632 +1634 17 -9.469559 -2.299999 -38.355568 0.265000 1633 +1635 17 -9.469559 -2.299999 -38.365562 0.265000 1634 +1636 17 -9.369560 -2.320000 -38.685570 0.220000 1635 +1637 17 -9.379562 -2.339999 -39.005562 0.195000 1636 +1638 17 -9.349564 -2.250000 -39.295555 0.215000 1637 +1639 17 -9.329559 -2.179999 -39.535561 0.230000 1638 +1640 17 -9.359558 -2.059999 -40.065559 0.230000 1639 +1641 17 -9.319557 -2.179999 -40.615562 0.205000 1640 +1642 17 -9.259560 -2.200000 -41.035561 0.215000 1641 +1643 17 -9.259560 -1.980000 -41.345558 0.245000 1642 +1644 17 -9.249557 -1.910000 -41.435570 0.240000 1643 +1645 17 -9.239563 -1.690000 -41.605568 0.215000 1644 +1646 17 -9.139565 -1.620000 -41.905556 0.205000 1645 +1647 17 -8.999557 -1.190000 -42.465569 0.190000 1646 +1648 17 -8.839561 -1.210000 -42.875557 0.190000 1647 +1649 17 -8.609558 -1.139999 -43.395561 0.190000 1648 +1650 17 -8.419563 -1.070000 -43.675560 0.210000 1649 +1651 17 -8.339561 -1.040000 -43.795555 0.220000 1650 +1652 17 -8.009560 -1.089999 -44.275566 0.220000 1651 +1653 17 -7.809563 -1.130000 -44.575569 0.220000 1652 +1654 17 -7.639565 -1.130000 -44.915565 0.210000 1653 +1655 17 -7.499557 -1.240000 -45.245567 0.210000 1654 +1656 17 -7.399559 -1.170000 -45.805565 0.230000 1655 +1657 17 -7.259560 -1.070000 -46.165565 0.235000 1656 +1658 17 -7.219559 -1.040000 -46.265556 0.240000 1657 +1659 17 -7.039558 -1.190000 -46.665565 0.195000 1658 +1660 17 -6.849564 -1.230000 -47.065559 0.195000 1659 +1661 17 -6.749557 -1.080000 -47.585564 0.200000 1660 +1662 17 -6.559563 -0.719999 -48.625557 0.255000 1661 +1663 17 -6.529564 -0.929999 -49.085564 0.265000 1662 +1664 17 -6.609558 -1.000000 -49.575569 0.320000 1663 +1665 17 -6.579559 -0.980000 -50.095558 0.335000 1664 +1666 17 -6.459564 -0.950000 -50.445564 0.355000 1665 +1667 17 -6.409561 -0.980000 -50.725563 0.355000 1666 +1668 17 -6.399559 -1.000000 -50.805565 0.355000 1667 +1669 17 -6.139565 -1.290000 -51.295555 0.225000 1668 +1670 17 -5.849564 -1.299999 -51.625557 0.225000 1669 +1671 17 -5.729561 -1.320000 -51.905556 0.225000 1670 +1672 17 -5.639565 -1.170000 -52.195564 0.210000 1671 +1673 17 -5.569557 -1.179999 -52.715569 0.170000 1672 +1674 17 -5.449562 -1.309999 -53.345558 0.265000 1673 +1675 17 -5.459564 -1.460000 -53.635567 0.265000 1674 +1676 17 -5.469559 -1.530000 -53.955559 0.255000 1675 +1677 17 -5.439560 -1.630000 -54.235558 0.255000 1676 +1678 17 -5.429558 -1.719999 -54.505562 0.265000 1677 +1679 17 -5.389565 -1.770000 -54.775566 0.265000 1678 +1680 17 -5.289558 -1.780000 -55.095558 0.305000 1679 +1681 17 -5.269562 -1.719999 -55.375557 0.305000 1680 +1682 17 -5.129562 -1.670000 -55.675560 0.285000 1681 +1683 17 -5.059563 -1.690000 -55.955559 0.260000 1682 +1684 17 -4.959564 -1.719999 -56.265556 0.260000 1683 +1685 17 -4.889565 -1.740000 -56.505562 0.260000 1684 +1686 17 -4.769562 -1.780000 -56.845558 0.280000 1685 +1687 17 -4.609558 -1.580000 -57.175560 0.250000 1686 +1688 17 -4.489563 -1.339999 -57.715569 0.310000 1687 +1689 17 -4.199562 -1.349999 -58.155556 0.245000 1688 +1690 17 -4.039558 -1.599999 -58.505562 0.200000 1689 +1691 17 -3.829559 -1.660000 -58.975563 0.200000 1690 +1692 17 -3.719559 -1.780000 -59.425560 0.185000 1691 +1693 17 -3.699562 -1.740000 -59.715569 0.180000 1692 +1694 17 -3.669563 -1.780000 -60.035561 0.175000 1693 +1695 17 -3.609558 -2.170000 -60.635567 0.135000 1694 +1696 17 -3.599564 -2.309999 -60.935570 0.155000 1695 +1697 17 -3.559563 -2.540000 -61.215569 0.190000 1696 +1698 17 -3.579559 -2.460000 -61.205559 0.200000 1697 +1699 17 -3.569557 -2.570000 -61.515556 0.200000 1698 +1700 17 -3.569557 -2.650000 -61.775566 0.200000 1699 +1701 17 -3.569557 -2.420000 -62.045555 0.210000 1700 +1702 17 -3.459564 -2.299999 -62.375557 0.210000 1701 +1703 17 -3.239563 -2.730000 -62.945564 0.355000 1702 +1704 17 -3.149559 -2.950000 -63.255562 0.305000 1703 +1705 17 -3.089561 -3.070000 -63.535561 0.295000 1704 +1706 17 -3.089561 -3.080000 -63.555565 0.285000 1705 +1707 17 -3.029564 -3.219999 -63.785561 0.220000 1706 +1708 17 -3.059563 -3.099999 -64.265556 0.185000 1707 +1709 17 -2.909561 -3.059999 -64.685570 0.210000 1708 +1710 17 -2.869560 -2.880000 -64.995567 0.250000 1709 +1711 17 -2.839561 -2.830000 -65.285561 0.275000 1710 +1712 17 -2.879562 -2.960000 -65.565559 0.275000 1711 +1713 17 -2.839561 -3.139999 -66.135567 0.210000 1712 +1714 17 -2.789558 -3.080000 -66.415565 0.210000 1713 +1715 17 -2.729561 -3.030000 -66.725563 0.190000 1714 +1716 17 -2.649559 -2.710000 -67.205559 0.305000 1715 +1717 17 -2.399559 -2.380000 -67.625557 0.305000 1716 +1718 17 -1.839561 -2.170000 -67.835564 0.185000 1717 +1719 17 -1.529564 -1.630000 -68.125557 0.165000 1718 +1720 17 -13.259560 -1.719999 -32.555565 0.280000 1613 +1721 17 -13.259560 -1.719999 -32.555565 0.280000 1720 +1722 17 -13.489563 -1.719999 -32.835564 0.280000 1721 +1723 17 -13.689560 -1.700000 -33.105568 0.280000 1722 +1724 17 -14.029564 -1.710000 -33.385567 0.280000 1723 +1725 17 -14.309563 -1.679999 -33.695564 0.275000 1724 +1726 17 -14.509560 -1.630000 -34.055565 0.275000 1725 +1727 17 -14.569557 -1.530000 -34.405556 0.190000 1726 +1728 17 -14.629562 -1.389999 -34.995567 0.260000 1727 +1729 17 -14.679558 -1.360000 -35.265556 0.275000 1728 +1730 17 -14.829559 -1.330000 -35.585564 0.295000 1729 +1731 17 -14.939560 -1.370000 -35.875557 0.310000 1730 +1732 17 -14.979561 -1.339999 -36.125557 0.310000 1731 +1733 17 -14.909561 -1.320000 -36.405556 0.270000 1732 +1734 17 -14.919563 -1.309999 -37.015556 0.195000 1733 +1735 17 -15.059563 -1.400000 -37.625557 0.200000 1734 +1736 17 -15.179558 -1.599999 -38.135567 0.210000 1735 +1737 17 -15.439560 -1.650000 -38.775566 0.295000 1736 +1738 17 -15.549561 -1.520000 -39.385567 0.295000 1737 +1739 17 -15.639565 -1.500000 -39.945564 0.235000 1738 +1740 17 -15.669563 -1.540000 -40.115562 0.255000 1739 +1741 17 -15.739563 -1.650000 -40.505562 0.295000 1740 +1742 17 -15.799561 -1.820000 -40.935570 0.260000 1741 +1743 17 -15.849564 -2.030000 -41.145561 0.215000 1742 +1744 17 -15.909561 -2.179999 -41.345558 0.185000 1743 +1745 17 -15.989563 -2.420000 -41.965569 0.205000 1744 +1746 17 -16.029564 -2.650000 -42.285561 0.260000 1745 +1747 17 -16.139565 -2.730000 -42.575569 0.310000 1746 +1748 17 -16.159561 -2.740000 -42.615562 0.320000 1747 +1749 17 -16.419563 -2.690000 -43.005562 0.215000 1748 +1750 17 -16.559563 -2.690000 -43.425560 0.185000 1749 +1751 17 -16.679558 -2.650000 -44.025566 0.245000 1750 +1752 17 -16.629562 -2.820000 -44.585564 0.285000 1751 +1753 17 -16.589561 -2.730000 -44.875557 0.310000 1752 +1754 17 -16.499557 -2.790000 -45.175560 0.315000 1753 +1755 17 -16.469559 -2.839999 -45.455559 0.335000 1754 +1756 17 -16.429558 -2.780000 -45.745567 0.315000 1755 +1757 17 -16.429558 -2.710000 -46.035561 0.260000 1756 +1758 17 -16.409561 -2.710000 -46.335564 0.250000 1757 +1759 17 -16.449562 -2.660000 -46.625557 0.250000 1758 +1760 17 -16.469559 -2.630000 -46.895561 0.270000 1759 +1761 17 -16.469559 -2.580000 -47.155556 0.270000 1760 +1762 17 -16.549561 -2.370000 -47.625557 0.265000 1761 +1763 17 -16.499557 -2.370000 -48.075569 0.265000 1762 +1764 17 -16.489563 -2.410000 -48.545555 0.265000 1763 +1765 17 -16.549561 -2.320000 -48.765556 0.265000 1764 +1766 17 -16.669563 -2.170000 -49.195564 0.265000 1765 +1767 17 -16.709564 -2.219999 -49.505562 0.265000 1766 +1768 17 -16.679558 -2.230000 -49.805565 0.265000 1767 +1769 17 -16.669563 -2.160000 -50.085564 0.265000 1768 +1770 17 -16.619560 -2.170000 -50.365562 0.225000 1769 +1771 17 -16.539558 -2.429999 -50.875557 0.255000 1770 +1772 17 -16.489563 -2.370000 -51.265556 0.190000 1771 +1773 17 -16.439560 -2.480000 -51.545555 0.190000 1772 +1774 17 -16.409561 -2.530000 -51.695564 0.190000 1773 +1775 17 -16.419563 -2.920000 -52.095558 0.310000 1774 +1776 17 -16.499557 -2.969999 -52.405556 0.310000 1775 +1777 17 -16.519562 -3.099999 -52.685570 0.280000 1776 +1778 17 -16.609558 -3.580000 -53.165565 0.220000 1777 +1779 17 -16.629562 -3.700000 -53.585564 0.280000 1778 +1780 17 -16.729561 -3.710000 -53.795555 0.255000 1779 +1781 17 -16.769562 -3.719999 -53.885567 0.245000 1780 +1782 17 -16.809563 -3.650000 -54.155556 0.245000 1781 +1783 17 -16.809563 -3.309999 -54.445564 0.240000 1782 +1784 17 -16.859558 -3.719999 -55.035561 0.245000 1783 +1785 17 -16.859558 -3.719999 -55.035561 0.185000 1784 +1786 17 -17.179558 -4.000000 -55.035561 0.185000 1785 +1787 17 -17.749557 -3.790000 -55.305565 0.165000 1786 +1788 17 -18.189560 -3.700000 -55.665565 0.165000 1787 +1789 17 -18.399559 -3.520000 -55.945564 0.180000 1788 +1790 17 -18.869560 -3.179999 -56.465569 0.265000 1789 +1791 17 -19.209564 -3.009999 -56.685570 0.285000 1790 +1792 17 -19.519562 -2.940000 -56.755562 0.330000 1791 +1793 17 -19.839561 -2.780000 -56.695564 0.330000 1792 +1794 17 -20.119560 -2.830000 -56.625557 0.275000 1793 +1795 17 -20.499557 -2.520000 -56.575569 0.185000 1794 +1796 17 -20.849564 -2.410000 -56.365562 0.255000 1795 +1797 17 -21.089561 -2.309999 -56.235558 0.300000 1796 +1798 17 -21.339561 -2.280000 -56.125557 0.310000 1797 +1799 17 -16.859558 -3.719999 -55.035561 0.245000 1783 +1800 17 -16.859558 -3.719999 -55.035561 0.245000 1799 +1801 17 -16.829559 -3.780000 -55.545555 0.245000 1800 +1802 17 -16.699562 -3.980000 -56.025566 0.175000 1801 +1803 17 -16.479561 -4.139999 -56.555565 0.180000 1802 +1804 17 -16.379562 -4.259999 -56.685570 0.195000 1803 +1805 17 -16.309563 -4.330000 -56.785561 0.210000 1804 +1806 17 -16.249557 -4.389999 -57.085564 0.235000 1805 +1807 17 -16.099564 -3.980000 -57.515556 0.215000 1806 +1808 17 -15.999557 -3.679999 -57.905556 0.195000 1807 +1809 17 -15.979561 -3.630000 -57.975563 0.195000 1808 +1810 17 -15.859558 -3.009999 -58.395561 0.185000 1809 +1811 17 -16.029564 -3.030000 -58.785561 0.190000 1810 +1812 17 -16.079559 -2.910000 -59.155556 0.250000 1811 +1813 17 -16.129562 -2.670000 -59.855568 0.195000 1812 +1814 17 -16.259560 -2.420000 -60.325569 0.235000 1813 +1815 17 -16.389565 -2.120000 -60.595558 0.235000 1814 +1816 17 -16.339561 -1.780000 -60.895561 0.250000 1815 +1817 17 -16.279564 -1.570000 -61.185570 0.260000 1816 +1818 17 -16.179558 -1.200000 -61.445564 0.270000 1817 +1819 16 -0.548965 0.000000 -8.725479 1.021649 20 +1820 16 1.500435 0.360001 -7.545563 0.305000 1819 +1821 16 2.080437 1.020000 -7.855560 0.305000 1820 +1822 16 2.650444 1.310000 -7.895561 0.305000 1821 +1823 16 3.140434 1.640000 -8.225563 0.305000 1822 +1824 16 3.140434 1.640000 -8.225563 0.305000 1823 +1825 16 3.550438 1.720000 -8.715561 0.305000 1824 +1826 16 3.550438 1.720000 -8.715561 0.305000 1825 +1827 16 3.260445 1.740000 -9.445564 0.305000 1826 +1828 16 3.000435 2.460001 -9.785561 0.305000 1827 +1829 16 2.770439 2.380000 -10.665565 0.305000 1828 +1830 16 2.580437 2.590000 -11.235565 0.305000 1829 +1831 16 2.480446 2.650001 -11.785561 0.305000 1830 +1832 16 2.500435 2.720000 -12.465561 0.305000 1831 +1833 16 2.490440 2.390000 -13.025566 0.305000 1832 +1834 16 2.370445 2.280000 -13.415565 0.305000 1833 +1835 16 2.200432 2.210001 -13.725563 0.305000 1834 +1836 16 2.060432 2.190001 -14.225563 0.305000 1835 +1837 16 2.030434 2.310000 -14.435562 0.305000 1836 +1838 16 2.020439 2.360000 -14.525566 0.305000 1837 +1839 16 2.000435 2.480000 -14.695564 0.305000 1838 +1840 16 1.920433 2.570000 -15.185562 0.370000 1839 +1841 16 1.890434 2.470000 -15.465561 0.370000 1840 +1842 16 1.770439 2.460001 -15.925560 0.355000 1841 +1843 16 1.730446 2.400001 -16.325562 0.365000 1842 +1844 16 1.660439 2.400001 -16.615562 0.365000 1843 +1845 16 1.640434 2.270000 -17.075562 0.360000 1844 +1846 16 1.590446 2.290000 -17.515564 0.340000 1845 +1847 16 1.630440 2.350000 -17.805565 0.340000 1846 +1848 16 1.670433 2.250000 -18.075562 0.340000 1847 +1849 16 1.730446 2.250000 -18.365562 0.350000 1848 +1850 16 1.770439 2.230000 -18.655563 0.365000 1849 +1851 16 1.810432 2.310000 -18.945564 0.375000 1850 +1852 16 1.810432 2.260000 -19.245560 0.375000 1851 +1853 16 1.830437 2.200000 -19.535561 0.365000 1852 +1854 16 1.840446 2.250000 -19.815559 0.355000 1853 +1855 16 1.900444 2.230000 -20.095566 0.355000 1854 +1856 16 1.980446 2.220000 -20.385567 0.360000 1855 +1857 16 2.040443 2.260000 -20.685570 0.365000 1856 +1858 16 2.090446 2.410000 -20.975563 0.375000 1857 +1859 16 2.130440 2.480000 -21.265556 0.375000 1858 +1860 16 2.110435 2.480000 -21.555565 0.375000 1859 +1861 16 2.060432 2.510000 -21.855568 0.335000 1860 +1862 16 1.870445 2.330000 -22.435570 0.335000 1861 +1863 16 1.560432 2.320000 -23.035561 0.305000 1862 +1864 16 1.230446 2.480000 -23.435570 0.315000 1863 +1865 16 1.120445 2.410000 -23.565559 0.305000 1864 +1866 16 0.910439 2.270000 -23.815559 0.290000 1865 +1867 16 0.690437 2.530000 -24.265556 0.360000 1866 +1868 16 0.650436 2.510000 -24.615562 0.360000 1867 +1869 16 0.650436 2.500000 -24.695564 0.360000 1868 +1870 16 0.520439 2.410000 -25.165565 0.310000 1869 +1871 16 0.520439 2.330000 -25.635567 0.220000 1870 +1872 16 0.430443 2.140000 -26.035561 0.220000 1871 +1873 16 0.410439 2.050000 -26.105568 0.220000 1872 +1874 16 0.450439 1.940001 -26.535561 0.190000 1873 +1875 16 0.530441 2.220000 -26.975563 0.225000 1874 +1876 16 0.520439 1.610000 -27.385567 0.195000 1875 +1877 16 0.560440 1.780000 -27.555565 0.215000 1876 +1878 16 0.570442 1.800000 -27.565559 0.215000 1877 +1879 16 0.640442 2.260000 -27.875557 0.265000 1878 +1880 17 0.660439 2.310000 -28.395561 0.250000 1879 +1881 17 0.660439 2.310000 -28.395561 0.125000 1880 +1882 17 1.080437 2.150001 -28.355568 0.125000 1881 +1883 17 1.560432 2.080000 -28.595558 0.120000 1882 +1884 17 1.910439 2.080000 -28.655556 0.125000 1883 +1885 17 2.210442 2.270000 -28.695564 0.185000 1884 +1886 17 2.450432 2.230000 -28.715569 0.185000 1885 +1887 17 2.760445 2.340000 -28.725563 0.185000 1886 +1888 17 3.140434 2.430000 -28.685570 0.190000 1887 +1889 17 3.590446 2.710001 -28.665565 0.225000 1888 +1890 17 3.940437 2.720000 -28.535561 0.190000 1889 +1891 17 4.380440 2.950000 -28.415565 0.190000 1890 +1892 17 4.790443 3.220000 -28.275566 0.210000 1891 +1893 17 5.150444 3.690001 -28.235558 0.165000 1892 +1894 17 0.660439 2.310000 -28.395561 0.250000 1879 +1895 17 0.660439 2.310000 -28.395561 0.250000 1894 +1896 17 0.620438 2.320000 -28.835564 0.250000 1895 +1897 17 0.590439 2.270000 -28.955559 0.255000 1896 +1898 17 0.480438 2.120000 -29.295555 0.265000 1897 +1899 17 0.430443 1.950000 -29.725563 0.265000 1898 +1900 17 0.380440 2.250000 -30.255562 0.265000 1899 +1901 17 0.290436 2.170001 -30.685570 0.345000 1900 +1902 17 0.310440 2.170001 -31.245567 0.355000 1901 +1903 17 0.320442 2.220000 -31.545555 0.355000 1902 +1904 17 0.370438 2.260000 -31.985558 0.350000 1903 +1905 17 0.300438 2.370000 -32.325569 0.305000 1904 +1906 17 0.400436 2.330000 -32.755562 0.305000 1905 +1907 17 0.440437 2.260000 -33.145561 0.230000 1906 +1908 17 0.500443 2.300000 -33.665565 0.225000 1907 +1909 17 0.430443 2.460001 -34.015556 0.260000 1908 +1910 17 0.490440 2.500000 -34.405556 0.260000 1909 +1911 17 0.600441 3.020000 -34.855568 0.220000 1910 +1912 17 0.640442 2.910000 -35.365562 0.220000 1911 +1913 17 0.520439 2.980000 -35.805565 0.415000 1912 +1914 17 0.520439 2.890000 -36.185570 0.430000 1913 +1915 17 0.530441 2.880000 -36.575569 0.430000 1914 +1916 17 0.570442 2.730000 -37.005562 0.355000 1915 +1917 17 0.560440 2.750000 -37.085564 0.345000 1916 +1918 17 0.540436 2.850000 -37.475563 0.310000 1917 +1919 17 0.670441 2.750000 -37.945564 0.300000 1918 +1920 17 0.530441 2.840000 -38.385567 0.300000 1919 +1921 17 0.550438 2.790000 -38.945564 0.300000 1920 +1922 17 0.660439 2.900001 -39.355568 0.300000 1921 +1923 17 0.660439 2.900001 -39.365562 0.300000 1922 +1924 17 0.670441 2.660000 -39.855568 0.300000 1923 +1925 17 0.790443 2.920001 -40.505562 0.285000 1924 +1926 17 0.780434 2.950000 -40.995567 0.285000 1925 +1927 17 0.710442 2.900001 -41.535561 0.215000 1926 +1928 17 0.700439 3.190001 -42.275566 0.235000 1927 +1929 17 0.750443 3.550000 -42.765556 0.280000 1928 +1930 17 0.790443 3.620000 -42.905556 0.270000 1929 +1931 17 0.940437 3.940001 -43.475563 0.210000 1930 +1932 17 1.050438 3.560000 -44.105568 0.260000 1931 +1933 17 1.350441 3.620000 -44.735558 0.285000 1932 +1934 17 1.440437 3.350000 -45.455559 0.285000 1933 +1935 17 1.550438 3.250000 -46.015556 0.325000 1934 +1936 17 1.790443 3.180000 -46.605568 0.325000 1935 +1937 17 1.870445 3.170001 -46.905556 0.280000 1936 +1938 17 2.050438 2.820000 -47.195564 0.210000 1937 +1939 17 2.260445 2.080000 -47.425560 0.205000 1938 +1940 16 3.550438 1.720000 -8.715561 0.305000 1824 +1941 16 3.550438 1.720000 -8.715561 0.305000 1940 +1942 16 4.350441 2.020000 -9.025566 0.305000 1941 +1943 16 4.910439 1.840000 -9.305565 0.305000 1942 +1944 17 6.080437 2.400001 -9.675560 0.320000 1943 +1945 17 6.080437 2.400001 -9.675560 0.305000 1944 +1946 17 6.110435 2.830000 -10.315559 0.305000 1945 +1947 17 6.030434 2.980000 -10.835564 0.305000 1946 +1948 17 6.060432 2.650001 -11.325562 0.305000 1947 +1949 17 6.160439 2.550000 -11.725563 0.305000 1948 +1950 17 6.190437 2.610000 -11.945564 0.305000 1949 +1951 17 6.220436 2.670001 -12.135559 0.305000 1950 +1952 17 6.310432 2.460001 -12.665565 0.305000 1951 +1953 17 6.450432 2.330000 -13.105560 0.305000 1952 +1954 17 6.470436 2.120000 -13.825562 0.305000 1953 +1955 17 6.520439 2.320000 -14.335564 0.305000 1954 +1956 17 6.610435 2.230000 -14.825562 0.305000 1955 +1957 17 6.650444 2.140000 -15.095566 0.305000 1956 +1958 17 6.660439 2.130000 -15.145561 0.305000 1957 +1959 17 6.740440 2.000000 -15.455559 0.245000 1958 +1960 17 6.840446 2.140000 -16.005562 0.205000 1959 +1961 17 6.910439 2.410000 -16.485565 0.215000 1960 +1962 17 6.080437 2.400001 -9.675560 0.320000 1943 +1963 17 6.080437 2.400001 -9.675560 0.320000 1962 +1964 17 6.670433 1.540000 -9.925560 0.320000 1963 +1965 17 7.150444 1.190001 -10.005562 0.300000 1964 +1966 17 7.590446 0.800000 -9.825562 0.300000 1965 +1967 17 7.610435 0.790000 -9.825562 0.300000 1966 +1968 17 8.160439 0.700001 -9.685562 0.260000 1967 +1969 17 8.770439 0.610001 -9.445564 0.200000 1968 +1970 17 9.100441 0.710000 -9.385559 0.255000 1969 +1971 17 9.350441 0.780001 -9.345566 0.295000 1970 +1972 17 9.640434 0.740001 -9.285561 0.295000 1971 +1973 17 9.920433 0.700001 -9.215561 0.280000 1972 +1974 17 10.200432 0.580000 -9.145561 0.265000 1973 +1975 17 10.700432 0.200001 -9.115562 0.265000 1974 +1976 17 11.250435 0.280001 -9.115562 0.265000 1975 +1977 17 11.670433 0.050000 -9.165565 0.220000 1976 +1978 17 11.890434 0.000000 -9.115562 0.245000 1977 +1979 17 12.310432 -0.099999 -9.025566 0.290000 1978 +1980 17 12.310432 -0.049999 -9.025566 0.305000 1979 +1981 17 12.310432 -0.049999 -9.025566 0.210000 1980 +1982 17 12.480446 -0.179999 -8.265564 0.210000 1981 +1983 17 12.600441 0.120000 -7.755562 0.235000 1982 +1984 17 12.790443 0.280001 -7.325562 0.260000 1983 +1985 17 13.030434 0.230000 -7.085564 0.290000 1984 +1986 17 13.420433 0.320001 -6.615562 0.265000 1985 +1987 17 13.610435 0.480000 -6.185562 0.210000 1986 +1988 17 13.760445 0.680000 -5.835564 0.205000 1987 +1989 17 13.860435 0.630000 -5.375565 0.205000 1988 +1990 17 14.000435 0.790000 -4.995560 0.225000 1989 +1991 17 14.050438 0.900001 -4.675560 0.205000 1990 +1992 17 14.210442 0.900001 -4.325562 0.205000 1991 +1993 17 14.410439 1.050000 -3.905563 0.250000 1992 +1994 17 14.700432 0.790000 -3.485565 0.280000 1993 +1995 17 14.740440 0.930000 -3.265564 0.275000 1994 +1996 17 14.760445 1.070001 -3.115562 0.275000 1995 +1997 17 14.930443 1.090000 -2.805565 0.275000 1996 +1998 17 15.100441 0.790000 -2.495560 0.230000 1997 +1999 17 15.430443 1.020000 -1.975563 0.285000 1998 +2000 17 15.470436 1.090000 -1.905563 0.305000 1999 +2001 17 15.830437 1.400001 -1.575562 0.330000 2000 +2002 17 16.120445 1.840000 -1.365562 0.330000 2001 +2003 17 16.880440 2.970000 -0.885559 0.200000 2002 +2004 17 17.850441 4.360000 -0.275566 0.235000 2003 +2005 17 17.880440 4.540000 0.184441 0.325000 2004 +2006 17 12.310432 -0.049999 -9.025566 0.305000 1979 +2007 17 12.310432 -0.049999 -9.025566 0.305000 2006 +2008 17 12.690437 -0.049999 -9.025566 0.305000 2007 +2009 17 13.190437 -0.160000 -9.095566 0.305000 2008 +2010 17 13.470436 -0.309999 -9.155563 0.245000 2009 +2011 17 14.030434 0.070001 -9.405563 0.205000 2010 +2012 17 14.840446 -1.030000 -9.605560 0.225000 2011 +2013 17 15.250435 -1.030000 -9.945564 0.260000 2012 +2014 17 15.620445 -1.030000 -10.125565 0.260000 2013 +2015 17 15.620445 -1.030000 -10.125565 0.205000 2014 +2016 17 15.860435 -0.990000 -9.705559 0.205000 2015 +2017 17 16.170433 -0.900000 -9.335564 0.185000 2016 +2018 17 16.480446 -1.150000 -9.135559 0.210000 2017 +2019 17 16.670433 -1.030000 -9.025566 0.200000 2018 +2020 17 16.810432 -0.929999 -8.955559 0.195000 2019 +2021 17 17.140434 -0.990000 -8.775566 0.195000 2020 +2022 17 17.430443 -1.120000 -8.615562 0.205000 2021 +2023 17 17.740440 -1.179999 -8.455559 0.205000 2022 +2024 17 18.010445 -1.380000 -8.265564 0.205000 2023 +2025 17 18.280434 -1.500000 -8.065559 0.295000 2024 +2026 17 18.510445 -1.559999 -7.645561 0.340000 2025 +2027 17 18.750435 -1.380000 -7.125565 0.225000 2026 +2028 17 18.970436 -1.530000 -6.625565 0.225000 2027 +2029 17 19.220436 -1.780000 -6.155563 0.210000 2028 +2030 17 19.340446 -1.500000 -5.725563 0.295000 2029 +2031 17 19.420433 -1.360000 -5.185562 0.375000 2030 +2032 17 19.510445 -1.500000 -4.645561 0.310000 2031 +2033 17 19.720436 -1.559999 -4.225563 0.310000 2032 +2034 17 19.980446 -1.389999 -3.915565 0.270000 2033 +2035 17 20.400444 -1.460000 -3.665565 0.270000 2034 +2036 17 20.830437 -1.770000 -3.435562 0.270000 2035 +2037 17 21.280434 -2.120000 -3.015564 0.205000 2036 +2038 17 21.610435 -2.219999 -2.695564 0.255000 2037 +2039 17 21.920433 -2.280000 -2.445564 0.295000 2038 +2040 17 21.950432 -2.290000 -2.435562 0.300000 2039 +2041 17 22.250435 -2.389999 -2.345566 0.330000 2040 +2042 17 22.920433 -2.710000 -2.275566 0.330000 2041 +2043 17 23.020439 -2.839999 -2.315559 0.335000 2042 +2044 17 23.580437 -3.799999 -2.495560 0.405000 2043 +2045 17 24.040443 -4.110000 -2.235565 0.335000 2044 +2046 17 24.020439 -4.370000 -1.825562 0.270000 2045 +2047 17 23.870445 -4.599999 -1.435562 0.210000 2046 +2048 17 23.550438 -5.380000 -1.065559 0.210000 2047 +2049 17 23.530434 -5.490000 -0.755562 0.210000 2048 +2050 17 23.560432 -5.370000 -0.195564 0.235000 2049 +2051 17 23.740440 -5.509999 0.254440 0.190000 2050 +2052 17 23.830437 -5.500000 0.674438 0.185000 2051 +2053 17 24.000435 -5.190000 1.254440 0.265000 2052 +2054 17 24.370445 -4.820000 1.734436 0.270000 2053 +2055 17 24.470436 -4.660000 1.844437 0.270000 2054 +2056 17 24.530434 -4.540000 1.924438 0.270000 2055 +2057 17 24.630440 -4.190000 2.034439 0.265000 2056 +2058 17 15.620445 -1.030000 -10.125565 0.260000 2013 +2059 17 15.620445 -1.030000 -10.125565 0.255000 2058 +2060 17 15.880440 -0.730000 -10.585564 0.255000 2059 +2061 17 16.060432 -0.809999 -11.025566 0.240000 2060 +2062 17 16.180443 -0.980000 -11.435562 0.245000 2061 +2063 17 16.190437 -1.030000 -11.475563 0.245000 2062 +2064 17 16.310432 -0.990000 -11.735565 0.255000 2063 +2065 17 16.510445 -0.950000 -12.015564 0.255000 2064 +2066 17 16.510445 -0.950000 -12.015564 0.220000 2065 +2067 17 16.500435 -1.650000 -12.375565 0.220000 2066 +2068 17 16.390434 -1.570000 -12.685562 0.220000 2067 +2069 17 16.350441 -1.320000 -12.955559 0.260000 2068 +2070 17 16.220436 -1.299999 -13.235565 0.260000 2069 +2071 17 16.120445 -1.480000 -13.535561 0.205000 2070 +2072 17 15.870445 -1.650000 -13.915565 0.205000 2071 +2073 17 15.570442 -1.639999 -14.355560 0.235000 2072 +2074 17 15.390434 -1.370000 -14.695564 0.240000 2073 +2075 17 15.200432 -1.440000 -14.915565 0.265000 2074 +2076 17 14.880440 -1.469999 -15.115562 0.265000 2075 +2077 17 14.610435 -1.469999 -15.265564 0.265000 2076 +2078 17 14.580437 -1.420000 -15.315559 0.265000 2077 +2079 17 14.170433 -0.780000 -15.795563 0.315000 2078 +2080 17 14.000435 -0.349999 -16.095566 0.350000 2079 +2081 17 13.820442 -0.349999 -16.445564 0.375000 2080 +2082 17 13.710442 -0.179999 -16.865562 0.295000 2081 +2083 17 13.700432 -0.130000 -16.915565 0.270000 2082 +2084 17 13.600441 -0.200000 -17.325562 0.250000 2083 +2085 17 13.600441 0.150001 -17.755562 0.230000 2084 +2086 17 13.680443 0.120000 -18.035561 0.230000 2085 +2087 17 13.810432 0.010000 -18.335564 0.215000 2086 +2088 17 13.900444 -0.080000 -18.585564 0.215000 2087 +2089 17 14.010445 -0.200000 -18.865562 0.215000 2088 +2090 17 14.180443 -0.349999 -19.175560 0.210000 2089 +2091 17 14.400444 -0.549999 -19.515564 0.210000 2090 +2092 17 14.420433 -0.490000 -19.545563 0.205000 2091 +2093 17 14.530434 -0.639999 -19.745560 0.225000 2092 +2094 17 14.640434 -0.830000 -19.945564 0.250000 2093 +2095 17 14.910439 -1.099999 -20.275566 0.215000 2094 +2096 17 15.030434 -1.440000 -20.565559 0.205000 2095 +2097 17 15.030434 -1.440000 -20.565559 0.205000 2096 +2098 17 15.060432 -1.799999 -20.825569 0.215000 2097 +2099 17 14.950432 -1.599999 -21.395561 0.195000 2098 +2100 17 14.720436 -1.520000 -22.205559 0.205000 2099 +2101 17 14.670433 -1.670000 -22.495567 0.215000 2100 +2102 17 14.600441 -1.620000 -22.815559 0.285000 2101 +2103 17 14.410439 -0.990000 -23.485558 0.285000 2102 +2104 17 14.230446 -0.700000 -24.235558 0.255000 2103 +2105 17 14.140434 -0.790000 -24.825569 0.255000 2104 +2106 17 14.090446 -0.679999 -25.535561 0.225000 2105 +2107 17 13.960442 -0.030000 -26.105568 0.230000 2106 +2108 17 13.910439 -0.059999 -26.435570 0.185000 2107 +2109 17 13.980446 -0.160000 -27.015556 0.190000 2108 +2110 17 13.840446 0.290000 -27.835564 0.175000 2109 +2111 17 13.770439 0.220000 -28.115562 0.205000 2110 +2112 17 13.750435 0.180000 -28.365562 0.205000 2111 +2113 17 13.750435 0.180000 -28.395561 0.205000 2112 +2114 17 13.730446 0.280001 -28.635567 0.205000 2113 +2115 17 13.640434 0.330000 -29.015556 0.285000 2114 +2116 17 13.640434 0.330000 -29.035561 0.290000 2115 +2117 17 13.470436 0.410001 -29.425560 0.290000 2116 +2118 17 13.330437 0.540000 -29.895561 0.165000 2117 +2119 17 13.270439 0.710000 -30.435570 0.225000 2118 +2120 17 13.230446 0.810000 -30.635567 0.230000 2119 +2121 17 13.100441 1.120000 -31.365562 0.245000 2120 +2122 17 13.100441 1.220000 -31.385567 0.250000 2121 +2123 17 13.120445 0.820001 -31.925560 0.250000 2122 +2124 17 13.170433 0.780001 -32.215569 0.245000 2123 +2125 17 13.240440 0.930000 -32.545555 0.205000 2124 +2126 17 13.270439 1.120000 -32.855568 0.205000 2125 +2127 17 13.410439 1.150001 -33.145561 0.205000 2126 +2128 17 13.590446 1.050000 -33.475563 0.255000 2127 +2129 17 13.540443 1.480000 -34.095558 0.240000 2128 +2130 17 13.690437 1.120000 -34.585564 0.215000 2129 +2131 17 13.670433 0.980000 -34.875557 0.200000 2130 +2132 17 13.650444 0.950001 -35.175560 0.170000 2131 +2133 17 13.610435 0.710000 -35.435570 0.170000 2132 +2134 17 15.030434 -1.440000 -20.565559 0.205000 2095 +2135 17 15.030434 -1.440000 -20.565559 0.215000 2134 +2136 17 15.630440 -1.450000 -20.725563 0.215000 2135 +2137 17 16.050438 -1.429999 -20.765556 0.200000 2136 +2138 17 16.380440 -1.309999 -20.785561 0.195000 2137 +2139 17 16.680443 -1.349999 -20.845558 0.195000 2138 +2140 17 16.950432 -1.309999 -20.915565 0.185000 2139 +2141 17 17.380440 -1.080000 -21.065559 0.150000 2140 +2142 17 17.850441 -0.700000 -21.265556 0.150000 2141 +2143 16 16.510445 -0.950000 -12.015564 0.255000 2064 +2144 16 16.510445 -0.950000 -12.015564 0.290000 2143 +2145 16 16.850441 -0.990000 -12.265564 0.290000 2144 +2146 16 17.350441 -0.710000 -12.605560 0.290000 2145 +2147 16 17.750435 -0.650000 -12.595566 0.340000 2146 +2148 16 17.910439 -0.620000 -12.595566 0.360000 2147 +2149 17 18.430443 -0.620000 -12.645561 0.360000 2148 +2150 17 18.430443 -0.620000 -12.645561 0.275000 2149 +2151 17 18.350441 -0.520000 -12.945564 0.275000 2150 +2152 17 18.160439 -0.520000 -13.235565 0.275000 2151 +2153 17 18.010445 -0.599999 -13.515564 0.275000 2152 +2154 17 17.830437 -0.730000 -13.835564 0.215000 2153 +2155 17 17.670433 -0.790000 -14.135559 0.170000 2154 +2156 17 17.520439 -1.070000 -14.355560 0.170000 2155 +2157 17 17.210442 -1.349999 -14.695564 0.190000 2156 +2158 17 17.020439 -1.599999 -14.965561 0.200000 2157 +2159 17 16.870445 -1.809999 -15.265564 0.205000 2158 +2160 17 18.430443 -0.620000 -12.645561 0.360000 2148 +2161 17 18.430443 -0.620000 -12.645561 0.290000 2160 +2162 17 18.430443 -0.250000 -12.645561 0.290000 2161 +2163 17 19.090446 -0.080000 -12.625565 0.325000 2162 +2164 17 19.240440 -0.030000 -12.615562 0.335000 2163 +2165 17 19.850441 -0.139999 -12.565559 0.315000 2164 +2166 17 20.360435 -0.150000 -12.595566 0.315000 2165 +2167 17 20.930443 -0.809999 -12.505562 0.320000 2166 +2168 17 21.030434 -0.830000 -12.525566 0.330000 2167 +2169 17 21.350441 -0.889999 -12.595566 0.350000 2168 +2170 17 21.860435 -1.000000 -12.485565 0.400000 2169 +2171 17 22.330437 -1.450000 -12.325562 0.295000 2170 +2172 17 22.790443 -1.520000 -12.265564 0.305000 2171 +2173 17 23.460442 -1.429999 -12.015564 0.305000 2172 +2174 17 23.630440 -1.509999 -11.965561 0.325000 2173 +2175 17 23.850441 -1.620000 -11.895561 0.360000 2174 +2176 17 24.020439 -1.740000 -11.835564 0.395000 2175 +2177 17 24.440437 -1.559999 -11.805565 0.360000 2176 +2178 17 24.770439 -1.450000 -11.895561 0.340000 2177 +2179 17 25.050438 -1.240000 -12.055565 0.340000 2178 +2180 17 25.320442 -1.110000 -12.185562 0.190000 2179 +2181 17 25.600441 -0.759999 -12.295563 0.190000 2180 +2182 17 25.930443 -0.520000 -12.365562 0.195000 2181 +2183 17 26.410439 -0.469999 -12.405563 0.205000 2182 +2184 17 26.480446 -0.460000 -12.415565 0.205000 2183 +2185 17 26.910439 -0.530000 -12.405563 0.205000 2184 +2186 17 27.390434 -0.610000 -12.505562 0.255000 2185 +2187 17 27.660439 -0.730000 -12.575562 0.265000 2186 +2188 17 27.930443 -0.750000 -12.725563 0.255000 2187 +2189 17 28.180443 -0.839999 -12.915565 0.275000 2188 +2190 17 28.460442 -0.740000 -13.255562 0.275000 2189 +2191 17 28.890434 -1.009999 -13.645561 0.215000 2190 +2192 17 28.940437 -1.110000 -13.685562 0.190000 2191 +2193 17 29.280434 -1.599999 -13.915565 0.195000 2192 +2194 17 29.520439 -1.799999 -14.165565 0.205000 2193 +2195 17 29.800438 -2.139999 -14.405563 0.250000 2194 +2196 17 30.160439 -2.160000 -14.635559 0.310000 2195 +2197 17 30.510445 -2.650000 -14.655563 0.310000 2196 +2198 17 30.810432 -2.719999 -14.765564 0.300000 2197 +2199 17 31.310432 -2.849999 -14.955559 0.265000 2198 +2200 17 31.370445 -2.870000 -14.985565 0.260000 2199 +2201 17 31.630440 -2.870000 -15.115562 0.245000 2200 +2202 17 31.940437 -2.750000 -15.305565 0.240000 2201 +2203 17 32.240440 -2.770000 -15.455559 0.205000 2202 +2204 17 32.530434 -2.670000 -15.575562 0.205000 2203 +2205 17 33.150444 -2.400000 -15.875565 0.290000 2204 +2206 17 33.240440 -2.380000 -15.945564 0.290000 2205 +2207 17 33.370445 -2.360000 -16.045563 0.290000 2206 +2208 17 33.530434 -2.389999 -16.325562 0.255000 2207 +2209 17 33.710442 -2.400000 -16.605560 0.235000 2208 +2210 17 33.960442 -2.450000 -16.835564 0.235000 2209 +2211 17 34.300438 -2.370000 -16.955559 0.260000 2210 +2212 17 34.550438 -2.370000 -16.965561 0.280000 2211 +2213 17 34.840446 -2.309999 -16.985565 0.280000 2212 +2214 17 35.460442 -1.980000 -16.935562 0.205000 2213 +2215 17 35.910439 -2.120000 -16.805565 0.240000 2214 +2216 17 36.020439 -2.160000 -16.775566 0.250000 2215 +2217 17 36.360435 -2.080000 -16.895561 0.175000 2216 +2218 17 36.610435 -1.790000 -16.985565 0.175000 2217 +2219 17 36.890434 -1.610000 -17.045563 0.175000 2218 +2220 17 37.190437 -1.509999 -17.135559 0.210000 2219 +2221 17 37.470436 -1.099999 -17.245560 0.210000 2220 +2222 17 37.840446 -1.070000 -17.295563 0.210000 2221 +2223 17 38.340446 -1.150000 -17.315559 0.200000 2222 +2224 17 38.630440 -1.160000 -17.335564 0.200000 2223 +2225 17 38.940437 -1.230000 -17.485565 0.200000 2224 +2226 17 39.430443 -1.679999 -17.645561 0.190000 2225 +2227 17 39.860435 -1.540000 -17.955559 0.185000 2226 +2228 17 40.240440 -1.660000 -18.035561 0.185000 2227 +2229 17 40.340446 -1.660000 -18.005562 0.185000 2228 +2230 17 40.790443 -1.660000 -17.885559 0.190000 2229 +2231 17 41.280434 -1.299999 -18.005562 0.240000 2230 +2232 17 41.540443 -1.139999 -18.025566 0.345000 2231 +2233 17 41.840446 -0.990000 -18.135559 0.345000 2232 +2234 17 42.320442 -0.920000 -18.365562 0.290000 2233 +2235 17 42.430443 -0.710000 -18.585564 0.285000 2234 +2236 17 42.600441 -0.280000 -18.905563 0.275000 2235 +2237 17 42.850441 -0.270000 -19.265564 0.275000 2236 +2238 17 42.970436 -0.120000 -19.745560 0.220000 2237 +2239 17 43.130440 -0.190000 -20.195564 0.315000 2238 +2240 17 43.230446 -0.349999 -20.455559 0.315000 2239 +2241 17 43.290443 -0.349999 -20.745567 0.315000 2240 +2242 17 43.340446 -0.349999 -20.975563 0.340000 2241 +2243 17 43.350441 -0.349999 -21.035561 0.350000 2242 +2244 17 43.620445 -1.020000 -21.375557 0.415000 2243 +2245 17 43.810432 -0.950000 -21.725563 0.330000 2244 +2246 17 43.890434 -0.920000 -21.875557 0.290000 2245 +2247 17 44.130440 -0.860000 -22.435570 0.280000 2246 +2248 17 44.220436 -0.990000 -22.725563 0.330000 2247 +2249 17 44.350441 -0.880000 -23.005562 0.330000 2248 +2250 17 44.450432 -0.990000 -23.305565 0.295000 2249 +2251 17 44.580437 -0.990000 -23.645561 0.295000 2250 +2252 17 44.580437 -0.990000 -23.645561 0.230000 2251 +2253 17 44.810432 -0.540000 -24.515556 0.230000 2252 +2254 17 45.010445 -1.170000 -24.885567 0.205000 2253 +2255 17 45.210442 -0.490000 -25.685570 0.280000 2254 +2256 17 45.260445 -0.490000 -25.725563 0.280000 2255 +2257 17 45.520439 -0.469999 -25.985558 0.280000 2256 +2258 17 45.810432 -0.299999 -26.245567 0.205000 2257 +2259 17 46.110435 -0.089999 -26.445564 0.205000 2258 +2260 17 46.350441 -0.080000 -26.545555 0.250000 2259 +2261 17 46.570442 -0.080000 -26.835564 0.255000 2260 +2262 17 46.730446 -0.049999 -27.145561 0.255000 2261 +2263 17 46.770439 -0.009999 -27.395561 0.260000 2262 +2264 17 44.580437 -0.990000 -23.645561 0.295000 2250 +2265 17 44.580437 -0.990000 -23.645561 0.285000 2264 +2266 17 44.630440 -0.990000 -23.595558 0.285000 2265 +2267 17 44.780434 -0.080000 -23.865562 0.185000 2266 +2268 17 45.190437 0.610001 -23.605568 0.185000 2267 +2269 17 45.570442 1.180000 -23.445564 0.245000 2268 +2270 17 45.970436 1.260000 -23.465569 0.225000 2269 +2271 17 46.090446 1.290000 -23.475563 0.220000 2270 +2272 17 46.600441 1.370000 -23.555565 0.220000 2271 +2273 17 46.910439 1.860000 -23.875557 0.200000 2272 +2274 17 47.290443 2.470000 -24.045555 0.200000 2273 +2275 17 47.590446 2.750000 -24.175560 0.275000 2274 +2276 17 47.900444 2.800000 -24.295555 0.285000 2275 +2277 17 48.170433 2.710001 -24.355568 0.285000 2276 +2278 17 48.440437 2.620000 -24.415565 0.285000 2277 +2279 17 48.740440 2.490000 -24.405556 0.245000 2278 +2280 17 49.070442 2.390000 -24.415565 0.230000 2279 +2281 17 49.350441 2.380000 -24.435570 0.205000 2280 +2282 17 49.620445 2.220000 -24.415565 0.205000 2281 +2283 17 49.920433 2.220000 -24.415565 0.205000 2282 +2284 17 50.330437 2.060000 -24.365562 0.210000 2283 +2285 17 50.550438 1.930000 -24.285561 0.230000 2284 +2286 17 50.730446 1.780000 -24.215569 0.250000 2285 +2287 17 51.180443 1.620000 -24.165565 0.220000 2286 +2288 17 51.670433 1.340000 -23.945564 0.205000 2287 +2289 17 51.950432 1.160000 -23.795555 0.200000 2288 +2290 17 52.200432 0.500000 -23.675560 0.185000 2289 +2291 17 3.140434 1.640000 -8.225563 0.305000 1822 +2292 17 3.140434 1.640000 -8.225563 0.305000 2291 +2293 17 3.420433 1.430000 -8.025566 0.305000 2292 +2294 17 3.670433 1.640000 -7.565559 0.305000 2293 +2295 17 3.810432 1.410000 -7.025566 0.305000 2294 +2296 17 3.870445 1.070001 -6.465561 0.305000 2295 +2297 17 4.120445 1.270000 -5.855560 0.305000 2296 +2298 17 4.200432 1.100000 -5.435562 0.305000 2297 +2299 17 4.180443 0.860001 -5.055565 0.305000 2298 +2300 17 4.260445 0.790000 -4.565559 0.305000 2299 +2301 17 4.350441 1.230000 -4.105560 0.305000 2300 +2302 17 4.460442 1.200000 -3.595566 0.305000 2301 +2303 17 4.390434 1.090000 -3.175560 0.305000 2302 +2304 17 4.350441 0.860001 -2.605560 0.305000 2303 +2305 17 4.300438 0.820001 -2.195564 0.305000 2304 +2306 17 4.230446 0.610001 -1.745560 0.305000 2305 +2307 17 4.210442 0.650001 -1.305565 0.305000 2306 +2308 17 4.190437 0.810000 -0.675560 0.305000 2307 +2309 17 4.070442 0.920000 -0.035561 0.305000 2308 +2310 17 3.730446 0.780001 0.454437 0.305000 2309 +2311 17 3.310432 0.500000 0.964439 0.305000 2310 +2312 17 3.050438 0.280001 1.324440 0.305000 2311 +2313 17 2.840446 0.150001 1.974434 0.305000 2312 +2314 17 2.630440 0.120000 2.474434 0.305000 2313 +2315 17 2.660439 -0.130000 2.994438 0.305000 2314 +2316 17 2.670433 -0.259999 3.304436 0.305000 2315 +2317 17 2.670433 -0.490000 3.714439 0.305000 2316 +2318 17 2.590446 -0.389999 4.034439 0.305000 2317 +2319 17 2.550438 -0.480000 4.274437 0.305000 2318 +2320 17 2.550438 -0.490000 4.304436 0.305000 2319 +2321 17 2.470436 -0.420000 4.584435 0.285000 2320 +2322 17 2.420433 -0.370000 4.874435 0.330000 2321 +2323 17 2.350441 -0.450000 5.174438 0.285000 2322 +2324 17 2.320442 -0.490000 5.464439 0.285000 2323 +2325 17 2.300438 -0.750000 6.034439 0.220000 2324 +2326 17 2.160439 -0.950000 6.404434 0.220000 2325 +2327 17 2.010445 -0.790000 6.714439 0.220000 2326 +2328 17 1.940437 -0.929999 7.154434 0.260000 2327 +2329 17 1.830437 -1.009999 7.494438 0.270000 2328 +2330 17 1.680443 -1.049999 7.794441 0.275000 2329 +2331 17 1.540443 -1.160000 8.084435 0.290000 2330 +2332 17 1.310432 -1.179999 8.794441 0.270000 2331 +2333 17 1.260445 -1.240000 9.004440 0.265000 2332 +2334 17 1.250435 -1.250000 9.074440 0.260000 2333 +2335 17 1.400444 -1.080000 9.354439 0.235000 2334 +2336 17 1.400444 -1.160000 9.354439 0.235000 2335 +2337 17 1.400444 -1.160000 9.354439 0.235000 2336 +2338 17 1.460442 -1.160000 9.684441 0.235000 2337 +2339 17 1.720436 -1.410000 10.284439 0.235000 2338 +2340 17 1.710442 -1.150000 10.574440 0.235000 2339 +2341 17 1.900444 -1.559999 11.234436 0.175000 2340 +2342 17 1.790443 -1.469999 11.774437 0.180000 2341 +2343 17 1.820442 -1.490000 12.014435 0.180000 2342 +2344 17 1.840446 -1.509999 12.204437 0.180000 2343 +2345 17 2.030434 -2.009999 12.684441 0.270000 2344 +2346 17 2.150444 -2.049999 12.964439 0.270000 2345 +2347 17 2.210442 -1.839999 13.544441 0.270000 2346 +2348 17 2.200432 -1.780000 13.944435 0.175000 2347 +2349 17 2.110435 -1.920000 14.314438 0.175000 2348 +2350 17 1.960442 -1.910000 14.754440 0.175000 2349 +2351 17 2.060432 -2.099999 15.234436 0.220000 2350 +2352 17 2.240440 -2.290000 16.124435 0.220000 2351 +2353 17 2.180443 -2.219999 16.584435 0.175000 2352 +2354 17 2.170433 -2.389999 17.124435 0.165000 2353 +2355 17 2.300438 -2.630000 17.714439 0.195000 2354 +2356 17 2.380440 -1.929999 18.104439 0.230000 2355 +2357 17 2.450432 -1.559999 18.444435 0.260000 2356 +2358 17 2.520439 -1.349999 18.724434 0.305000 2357 +2359 17 2.570442 -1.200000 19.004440 0.305000 2358 +2360 17 2.650444 -0.920000 19.414436 0.240000 2359 +2361 17 2.680443 -0.820000 19.574440 0.215000 2360 +2362 17 2.700432 -0.660000 19.854439 0.185000 2361 +2363 17 2.800438 -0.190000 20.394440 0.180000 2362 +2364 17 2.910439 -0.009999 20.814438 0.160000 2363 +2365 17 3.050438 0.120000 21.094437 0.160000 2364 +2366 17 3.450432 0.070001 21.684441 0.210000 2365 +2367 17 3.770439 -0.080000 22.304436 0.210000 2366 +2368 17 4.070442 -0.110000 22.794441 0.240000 2367 +2369 17 4.260445 -0.210000 23.294441 0.295000 2368 +2370 17 4.360435 -0.330000 23.794441 0.210000 2369 +2371 17 4.470436 -0.490000 24.064438 0.220000 2370 +2372 17 4.560432 -0.440000 24.224434 0.220000 2371 +2373 17 4.730446 -0.339999 24.524437 0.220000 2372 +2374 17 4.990440 -0.360000 25.054436 0.240000 2373 +2375 17 5.250435 -0.080000 25.464439 0.210000 2374 +2376 17 5.320442 -0.009999 25.784439 0.275000 2375 +2377 17 5.350441 0.050000 26.034439 0.330000 2376 +2378 17 5.330437 -0.179999 26.474434 0.330000 2377 +2379 17 5.370445 -0.200000 26.944435 0.210000 2378 +2380 17 5.480446 -0.370000 27.494438 0.205000 2379 +2381 17 5.630440 -0.570000 27.804436 0.210000 2380 +2382 17 5.730446 -0.460000 27.984436 0.210000 2381 +2383 17 5.870445 -0.320000 28.254440 0.210000 2382 +2384 17 6.170433 -0.440000 28.944435 0.245000 2383 +2385 17 6.520439 -0.530000 29.524437 0.245000 2384 +2386 17 6.630440 -0.589999 29.814438 0.310000 2385 +2387 17 6.730446 -0.670000 30.114441 0.340000 2386 +2388 17 6.850441 -0.929999 30.664436 0.230000 2387 +2389 17 6.850441 -0.929999 30.664436 0.220000 2388 +2390 17 6.550438 -0.660000 30.774437 0.220000 2389 +2391 17 6.370445 -0.870000 31.214439 0.195000 2390 +2392 17 6.360435 -0.870000 31.744438 0.195000 2391 +2393 17 6.440437 -1.130000 32.314438 0.175000 2392 +2394 17 6.370445 -1.070000 32.874435 0.195000 2393 +2395 17 6.250435 -1.110000 33.454437 0.190000 2394 +2396 17 6.220436 -1.139999 34.004440 0.175000 2395 +2397 17 6.270439 -1.009999 34.734436 0.285000 2396 +2398 17 6.270439 -1.020000 35.014435 0.285000 2397 +2399 17 6.330437 -1.130000 35.334435 0.175000 2398 +2400 17 6.330437 -1.130000 35.624435 0.175000 2399 +2401 17 6.500435 -1.130000 35.914436 0.155000 2400 +2402 17 6.620445 -1.130000 36.204437 0.155000 2401 +2403 17 7.010445 -1.080000 36.634438 0.210000 2402 +2404 17 7.160439 -0.719999 37.154434 0.200000 2403 +2405 17 7.480446 -0.570000 37.584435 0.145000 2404 +2406 17 7.550438 -0.469999 38.094437 0.185000 2405 +2407 17 7.650444 -0.339999 38.564438 0.180000 2406 +2408 17 7.670433 -0.230000 39.434441 0.165000 2407 +2409 17 7.680443 -0.059999 39.774437 0.145000 2408 +2410 17 7.820442 -0.040000 40.644440 0.185000 2409 +2411 17 7.900444 -0.280000 41.284439 0.230000 2410 +2412 17 8.090446 -0.299999 41.934441 0.230000 2411 +2413 17 8.570442 0.030001 42.474434 0.210000 2412 +2414 17 6.850441 -0.929999 30.664436 0.230000 2387 +2415 17 6.850441 -0.929999 30.664436 0.230000 2414 +2416 17 7.320442 -0.610000 30.914436 0.230000 2415 +2417 17 7.580437 -0.580000 31.124435 0.235000 2416 +2418 17 7.790443 -0.450000 31.344437 0.230000 2417 +2419 17 7.960442 -0.400000 31.644440 0.230000 2418 +2420 17 8.480446 -0.740000 32.444435 0.235000 2419 +2421 17 8.790443 -0.799999 33.184441 0.195000 2420 +2422 17 8.830437 -0.780000 34.174438 0.185000 2421 +2423 17 9.050438 -0.870000 34.724434 0.185000 2422 +2424 17 9.210442 -0.849999 34.984436 0.195000 2423 +2425 17 9.210442 -0.849999 34.984436 0.205000 2424 +2426 17 8.710442 -0.490000 35.044441 0.205000 2425 +2427 17 8.710442 -0.490000 35.254440 0.205000 2426 +2428 17 8.710442 -0.490000 35.334435 0.205000 2427 +2429 17 8.590446 -0.490000 35.624435 0.205000 2428 +2430 17 8.500435 -0.849999 35.934441 0.170000 2429 +2431 17 8.450432 -1.059999 36.294441 0.170000 2430 +2432 17 8.400444 -1.150000 36.574440 0.230000 2431 +2433 17 8.370445 -1.259999 36.834435 0.250000 2432 +2434 17 8.360435 -1.380000 37.124435 0.250000 2433 +2435 17 8.420433 -1.490000 37.424438 0.230000 2434 +2436 17 8.480446 -1.570000 37.694435 0.215000 2435 +2437 17 8.590446 -1.130000 38.004440 0.215000 2436 +2438 17 8.500435 -1.700000 38.254440 0.190000 2437 +2439 17 9.210442 -0.849999 34.984436 0.195000 2423 +2440 17 9.210442 -0.849999 34.984436 0.195000 2439 +2441 17 9.310432 -0.849999 35.184441 0.195000 2440 +2442 17 9.740440 -0.920000 35.554436 0.220000 2441 +2443 17 10.090446 -1.099999 35.824440 0.205000 2442 +2444 17 10.390434 -1.130000 36.094437 0.205000 2443 +2445 17 10.590446 -1.280000 36.214439 0.205000 2444 +2446 17 10.690437 -1.339999 36.264435 0.205000 2445 +2447 17 11.050438 -1.490000 36.724434 0.255000 2446 +2448 17 11.290443 -1.820000 37.284439 0.205000 2447 +2449 17 11.340446 -1.889999 37.624435 0.230000 2448 +2450 17 11.370445 -1.920000 37.814438 0.245000 2449 +2451 17 11.470436 -2.110000 38.114441 0.205000 2450 +2452 17 11.580437 -2.150000 38.424438 0.205000 2451 +2453 17 11.690437 -2.020000 38.734436 0.210000 2452 +2454 17 11.780434 -2.040000 39.024437 0.210000 2453 +2455 17 12.110435 -2.160000 39.444435 0.325000 2454 +2456 17 12.230446 -2.210000 39.614441 0.370000 2455 +2457 17 12.730446 -2.270000 40.124435 0.320000 2456 +2458 17 13.180443 -2.240000 40.644440 0.290000 2457 +2459 17 13.330437 -2.339999 40.944435 0.290000 2458 +2460 17 13.510445 -2.049999 41.364441 0.265000 2459 +2461 17 14.110435 -2.420000 41.904434 0.130000 2460 +2462 17 14.410439 -2.420000 42.194435 0.165000 2461 +2463 17 14.700432 -2.420000 42.484436 0.330000 2462 +2464 17 14.970436 -2.380000 42.794441 0.330000 2463 +2465 17 15.040443 -2.380000 42.864441 0.330000 2464 +2466 17 15.260445 -2.349999 43.104439 0.330000 2465 +2467 17 15.410439 -2.200000 43.394440 0.265000 2466 +2468 17 15.450432 -2.190000 43.504440 0.260000 2467 +2469 17 15.510445 -2.179999 43.664436 0.250000 2468 +2470 17 15.540443 -2.170000 43.754436 0.250000 2469 +2471 17 15.590446 -2.150000 43.934437 0.250000 2470 +2472 17 15.590446 -1.679999 44.554436 0.215000 2471 +2473 17 15.630440 -1.059999 44.954437 0.135000 2472 +2474 17 15.590446 -0.700000 45.414436 0.150000 2473 +2475 17 15.700432 -0.420000 46.034439 0.220000 2474 +2476 17 15.840446 -0.429999 46.464439 0.280000 2475 +2477 17 15.960442 -0.420000 47.014439 0.235000 2476 +2478 17 16.260445 -0.889999 47.744438 0.200000 2477 +2479 17 16.230446 -1.240000 48.164436 0.205000 2478 +2480 17 16.260445 -1.660000 48.504436 0.185000 2479 +2481 17 16.310432 -1.700000 48.874439 0.185000 2480 +2482 17 16.360435 -1.660000 49.164436 0.235000 2481 +2483 17 16.400444 -1.880000 49.464439 0.245000 2482 +2484 17 16.410439 -2.170000 49.744438 0.235000 2483 +2485 17 16.460442 -2.170000 50.044437 0.235000 2484 +2486 17 16.490440 -1.759999 50.424438 0.210000 2485 +2487 17 16.510445 -1.540000 50.904438 0.235000 2486 +2488 17 16.580437 -1.309999 51.424438 0.205000 2487 +2489 17 16.650444 -1.349999 51.704437 0.195000 2488 +2490 17 16.740440 -1.400000 52.074436 0.190000 2489 +2491 17 18.200432 -2.059999 53.204437 0.215000 2490 +2492 17 18.400444 -2.089999 53.694439 0.210000 2491 +2493 17 18.700432 -1.929999 53.984436 0.215000 2492 +2494 17 19.080437 -1.799999 54.434437 0.245000 2493 +2495 17 19.350441 -1.780000 54.924438 0.210000 2494 +2496 17 19.520439 -1.780000 55.214439 0.210000 2495 +2497 17 19.530434 -1.670000 55.534439 0.210000 2496 +2498 17 19.530434 -1.610000 55.764439 0.210000 2497 +2499 17 19.700432 -1.570000 56.354439 0.175000 2498 +2500 17 19.820442 -1.429999 56.984436 0.215000 2499 +2501 17 20.100441 -1.059999 57.384438 0.210000 2500 +2502 17 20.190437 -0.679999 57.714439 0.265000 2501 +2503 17 20.460442 -0.360000 58.094437 0.275000 2502 +2504 17 20.630440 -0.349999 58.454437 0.275000 2503 +2505 17 21.010445 -0.500000 58.954437 0.215000 2504 +2506 17 21.210442 -0.540000 59.284439 0.215000 2505 +2507 17 21.230446 -0.549999 59.314438 0.215000 2506 +2508 17 21.280434 -0.460000 59.614437 0.190000 2507 +2509 17 21.250435 -0.320000 59.924438 0.190000 2508 +2510 17 21.150444 -0.400000 60.274437 0.195000 2509 +2511 17 21.180443 -0.570000 60.604439 0.245000 2510 +2512 17 21.430443 -0.759999 61.124439 0.240000 2511 +2513 17 21.630440 -0.799999 61.604439 0.240000 2512 +2514 17 21.760445 -1.099999 62.164436 0.220000 2513 +2515 17 21.500435 -1.130000 62.534439 0.180000 2514 +2516 17 21.030434 -1.020000 62.734436 0.170000 2515 +2517 17 20.740440 -0.969999 62.934437 0.165000 2516 +2518 17 20.330437 -0.490000 63.174438 0.185000 2517 +2519 17 20.020439 -0.509999 63.564438 0.265000 2518 +2520 17 19.630440 -0.599999 63.904438 0.220000 2519 +2521 17 19.110435 -0.750000 64.414436 0.185000 2520 +2522 17 18.640434 -1.400000 64.574436 0.185000 2521 +2523 17 18.350441 -1.520000 64.614437 0.185000 2522 +2524 17 18.290443 -1.469999 64.624439 0.175000 2523 +2525 17 17.950432 -1.780000 64.624439 0.175000 2524 +2526 17 17.610435 -1.710000 64.504436 0.175000 2525 +2527 17 1.400444 -1.160000 9.354439 0.235000 2335 +2528 17 1.400444 -1.160000 9.354439 0.250000 2527 +2529 17 0.860435 -1.330000 9.484436 0.250000 2528 +2530 17 0.570442 -1.290000 9.764435 0.255000 2529 +2531 17 0.260437 -1.030000 10.094437 0.265000 2530 +2532 17 -0.089561 -0.710000 10.414436 0.315000 2531 +2533 17 -0.369560 -0.349999 10.774437 0.315000 2532 +2534 17 -0.629562 -0.490000 11.184441 0.250000 2533 +2535 17 -0.869560 -1.040000 11.644440 0.250000 2534 +2536 17 -1.229561 -1.130000 11.974434 0.250000 2535 +2537 17 -1.639565 -1.750000 12.674438 0.360000 2536 +2538 17 -2.079559 -1.540000 13.174438 0.360000 2537 +2539 17 -2.369560 -1.330000 13.594437 0.205000 2538 +2540 17 -2.489563 -1.440000 14.014435 0.205000 2539 +2541 17 -2.429558 -1.730000 14.534439 0.255000 2540 +2542 17 -2.579559 -1.540000 15.124435 0.235000 2541 +2543 17 -2.669563 -1.490000 15.444435 0.235000 2542 +2544 17 -2.729561 -1.429999 15.764435 0.220000 2543 +2545 17 -2.809563 -1.460000 16.034439 0.220000 2544 +2546 17 -2.849564 -1.500000 16.294441 0.240000 2545 +2547 17 -2.999557 -1.650000 16.644440 0.260000 2546 +2548 17 -3.069557 -1.670000 16.924438 0.245000 2547 +2549 17 -3.099564 -1.820000 17.264435 0.250000 2548 +2550 17 -3.109558 -1.960000 17.544441 0.270000 2549 +2551 17 -3.039558 -1.980000 17.834435 0.295000 2550 +2552 17 -2.919563 -1.870000 18.144440 0.340000 2551 +2553 17 -2.799561 -1.799999 18.504440 0.340000 2552 +2554 17 -2.789558 -1.940000 18.914436 0.275000 2553 +2555 17 -2.789558 -2.000000 19.074440 0.245000 2554 +2556 17 -2.749557 -2.150000 19.384438 0.200000 2555 +2557 17 -2.739563 -2.230000 19.494438 0.175000 2556 +2558 17 -2.729561 -2.630000 19.964439 0.175000 2557 +2559 17 -2.699562 -2.570000 20.504440 0.225000 2558 +2560 17 -2.679558 -2.420000 20.864441 0.225000 2559 +2561 17 -2.759560 -2.259999 21.144440 0.230000 2560 +2562 17 -2.759560 -2.200000 21.164436 0.235000 2561 +2563 17 -2.789558 -2.270000 21.454437 0.255000 2562 +2564 17 -2.749557 -2.400000 21.764435 0.255000 2563 +2565 17 -2.679558 -2.370000 22.034439 0.275000 2564 +2566 17 -2.529564 -2.509999 22.314438 0.275000 2565 +2567 17 -2.389565 -2.480000 22.624435 0.270000 2566 +2568 17 -2.259560 -2.530000 22.974434 0.270000 2567 +2569 17 -2.199562 -2.540000 23.284439 0.260000 2568 +2570 17 -2.159561 -2.420000 23.594437 0.175000 2569 +2571 17 -2.159561 -2.420000 23.884438 0.175000 2570 +2572 17 -2.229561 -2.610000 24.274437 0.220000 2571 +2573 17 -2.249557 -2.730000 24.754440 0.220000 2572 +2574 17 -2.219559 -2.809999 25.114441 0.220000 2573 +2575 17 -2.319557 -3.000000 25.434441 0.290000 2574 +2576 17 -2.309563 -2.990000 25.924438 0.260000 2575 +2577 17 -2.319557 -2.940000 25.914436 0.245000 2576 +2578 17 -2.339561 -2.780000 26.234436 0.245000 2577 +2579 17 -2.319557 -2.690000 26.504440 0.280000 2578 +2580 17 -2.299561 -2.599999 26.784439 0.280000 2579 +2581 17 -2.299561 -2.480000 27.054436 0.255000 2580 +2582 17 -2.359558 -2.400000 27.344437 0.250000 2581 +2583 17 -2.389565 -2.420000 27.664436 0.175000 2582 +2584 17 -2.419563 -2.420000 27.794441 0.170000 2583 +2585 17 -2.429558 -2.420000 27.874435 0.165000 2584 +2586 17 -2.449562 -2.420000 27.954437 0.160000 2585 +2587 17 -2.439560 -2.599999 28.434441 0.125000 2586 +2588 17 -2.319557 -2.509999 29.094437 0.155000 2587 +2589 17 -2.319557 -2.509999 29.094437 0.155000 2588 +2590 17 -2.139565 -2.780000 29.864441 0.255000 2589 +2591 17 -2.109558 -2.809999 30.264435 0.270000 2590 +2592 17 -2.099564 -2.809999 30.364441 0.275000 2591 +2593 17 -2.169563 -2.690000 30.924438 0.275000 2592 +2594 17 -2.099564 -2.849999 31.404434 0.225000 2593 +2595 17 -2.069557 -2.940000 31.614441 0.200000 2594 +2596 17 -2.249557 -3.030000 32.264435 0.210000 2595 +2597 17 -2.349564 -2.860000 32.544441 0.230000 2596 +2598 17 -2.409561 -2.719999 32.714439 0.245000 2597 +2599 17 -2.469559 -2.809999 32.974434 0.245000 2598 +2600 17 -2.519562 -2.900000 33.244438 0.225000 2599 +2601 17 -2.689560 -3.070000 33.894440 0.215000 2600 +2602 17 -2.729561 -2.839999 34.354439 0.220000 2601 +2603 17 -2.759560 -2.980000 34.754440 0.225000 2602 +2604 17 -2.809563 -2.980000 35.044441 0.225000 2603 +2605 17 -2.809563 -2.980000 35.044441 0.190000 2604 +2606 17 -2.539558 -3.110000 35.404434 0.190000 2605 +2607 17 -2.379562 -3.549999 35.854439 0.155000 2606 +2608 17 -2.129562 -3.299999 36.134438 0.175000 2607 +2609 17 -1.949562 -3.429999 36.434441 0.190000 2608 +2610 17 -1.789558 -3.290000 36.784439 0.205000 2609 +2611 17 -1.559563 -3.270000 37.114441 0.225000 2610 +2612 17 -1.319557 -3.270000 37.324440 0.240000 2611 +2613 17 -0.959564 -3.280000 37.464439 0.265000 2612 +2614 17 -0.679558 -3.210000 37.504440 0.265000 2613 +2615 17 -0.399559 -3.130000 37.524437 0.295000 2614 +2616 17 -0.119560 -2.980000 37.524437 0.295000 2615 +2617 17 0.140442 -2.969999 37.514435 0.315000 2616 +2618 17 0.400436 -2.960000 37.544441 0.315000 2617 +2619 17 -2.809563 -2.980000 35.044441 0.225000 2603 +2620 17 -2.809563 -2.980000 35.044441 0.170000 2619 +2621 17 -2.899559 -3.380000 35.504440 0.170000 2620 +2622 17 -3.009560 -3.210000 36.014435 0.155000 2621 +2623 17 -3.039558 -3.240000 36.554436 0.175000 2622 +2624 17 -2.939560 -3.150000 37.104439 0.175000 2623 +2625 17 -2.879562 -3.089999 37.764435 0.260000 2624 +2626 17 -2.909561 -3.059999 37.874435 0.255000 2625 +2627 17 -3.069557 -2.940000 38.454437 0.220000 2626 +2628 17 -3.169563 -2.660000 38.844437 0.220000 2627 +2629 17 -3.259560 -2.440000 39.374435 0.235000 2628 +2630 17 -3.319557 -2.349999 39.884438 0.265000 2629 +2631 17 -3.319557 -2.349999 39.954437 0.255000 2630 +2632 17 -3.349564 -2.339999 40.324440 0.200000 2631 +2633 17 -3.309563 -2.190000 40.894440 0.200000 2632 +2634 17 -3.129562 -2.200000 41.584435 0.170000 2633 +2635 17 -2.949562 -2.389999 41.924438 0.195000 2634 +2636 17 -2.879562 -2.660000 42.464439 0.280000 2635 +2637 17 -2.879562 -2.759999 42.754440 0.280000 2636 +2638 17 -2.869560 -2.960000 43.284439 0.305000 2637 +2639 17 -2.709564 -3.130000 43.934437 0.215000 2638 +2640 17 -2.619560 -3.150000 44.234436 0.200000 2639 +2641 17 -2.489563 -3.150000 44.874439 0.235000 2640 +2642 17 -2.449562 -3.099999 45.054436 0.250000 2641 +2643 17 -2.369560 -3.009999 45.374439 0.270000 2642 +2644 17 -2.329559 -2.980000 45.934437 0.205000 2643 +2645 17 -2.299561 -3.000000 46.694439 0.205000 2644 +2646 17 -2.289558 -2.920000 47.194439 0.175000 2645 +2647 17 -2.449562 -3.059999 47.774437 0.175000 2646 +2648 17 -2.619560 -2.780000 48.384438 0.295000 2647 +2649 17 -2.699562 -2.830000 48.664436 0.295000 2648 +2650 17 -2.719559 -2.929999 48.944439 0.245000 2649 +2651 17 -2.709564 -3.170000 49.214439 0.220000 2650 +2652 17 -2.709564 -3.299999 49.504436 0.220000 2651 +2653 17 -2.749557 -3.559999 50.124439 0.280000 2652 +2654 17 -2.769562 -3.700000 50.544437 0.260000 2653 +2655 17 -2.809563 -3.809999 50.864437 0.170000 2654 +2656 17 -2.859558 -3.700000 51.254436 0.175000 2655 +2657 17 -2.859558 -3.700000 51.554436 0.180000 2656 +2658 17 -2.959564 -3.660000 51.894436 0.180000 2657 +2659 17 -3.039558 -3.710000 52.124439 0.180000 2658 +2660 17 -3.149559 -3.750000 52.404438 0.160000 2659 +2661 17 -3.269562 -3.920000 53.364437 0.205000 2660 +2662 17 -3.509560 -4.290000 53.884438 0.250000 2661 +2663 17 -3.659561 -4.480000 54.154438 0.200000 2662 +2664 17 -4.149559 -4.599999 54.734436 0.185000 2663 +2665 17 -4.449562 -4.520000 55.034439 0.185000 2664 +2666 17 -4.769562 -4.349999 55.324436 0.165000 2665 +2667 17 -4.949562 -4.349999 55.614437 0.165000 2666 +2668 17 -5.059563 -4.349999 55.904438 0.220000 2667 +2669 17 -5.179558 -4.349999 56.204437 0.220000 2668 +2670 17 -5.179558 -4.349999 56.494438 0.230000 2669 +2671 17 -5.179558 -4.349999 56.784439 0.230000 2670 +2672 17 -5.239563 -4.349999 57.074436 0.230000 2671 +2673 17 -5.179558 -4.349999 57.364437 0.240000 2672 +2674 17 -5.239563 -4.349999 57.654438 0.240000 2673 +2675 17 -5.179558 -4.349999 57.944439 0.195000 2674 +2676 17 -5.249557 -4.389999 58.504436 0.205000 2675 +2677 17 -5.479561 -4.610000 59.114437 0.220000 2676 +2678 17 -5.639565 -4.650000 59.374439 0.200000 2677 +2679 17 -5.859558 -4.639999 59.754436 0.200000 2678 +2680 17 -6.029564 -4.670000 60.074436 0.195000 2679 +2681 17 -6.079559 -4.990000 60.374439 0.195000 2680 +2682 17 -6.099564 -5.349999 60.844437 0.195000 2681 +2683 17 -6.279564 -5.460000 61.304436 0.195000 2682 +2684 17 -6.429558 -5.450000 61.944439 0.225000 2683 +2685 17 -6.889565 -5.820000 62.864437 0.160000 2684 +2686 17 -7.059563 -5.920000 63.144436 0.200000 2685 +2687 17 -7.219559 -5.980000 63.424438 0.205000 2686 +2688 17 -7.399559 -5.950000 63.704437 0.205000 2687 +2689 17 -7.619560 -5.910000 63.954437 0.205000 2688 +2690 17 -7.829559 -5.679999 64.344437 0.205000 2689 +2691 17 -8.079559 -5.830000 64.814438 0.165000 2690 +2692 17 -8.229561 -6.330000 65.164436 0.185000 2691 +2693 17 -8.319557 -6.599999 65.644436 0.185000 2692 +2694 17 -8.609558 -6.730000 66.214439 0.285000 2693 +2695 17 -8.669563 -6.820000 66.774437 0.240000 2694 +2696 17 -8.729561 -6.839999 67.244438 0.225000 2695 +2697 17 -8.839561 -6.909999 67.534439 0.200000 2696 +2698 17 -8.969559 -6.940000 67.884438 0.200000 2697 +2699 17 -9.219559 -7.290000 68.174438 0.165000 2698 +2700 17 -9.499557 -7.579999 68.574436 0.165000 2699 +2701 17 -9.709564 -7.759999 68.984436 0.290000 2700 +2702 17 -9.839561 -8.130000 69.624439 0.290000 2701 +2703 17 -9.949562 -8.200000 69.914436 0.230000 2702 +2704 17 -9.949562 -8.200000 70.204437 0.230000 2703 +2705 17 -10.059563 -8.200000 70.494438 0.240000 2704 +2706 17 -10.119560 -8.200000 70.784439 0.240000 2705 +2707 17 -10.119560 -8.200000 71.364437 0.210000 2706 +2708 17 -10.099564 -8.230000 71.654438 0.210000 2707 +2709 17 -10.129562 -8.220000 71.974438 0.175000 2708 +2710 17 -10.119560 -8.150001 72.204437 0.175000 2709 +2711 17 -10.059563 -8.200000 72.534439 0.175000 2710 +2712 17 -10.069557 -8.280000 72.874439 0.185000 2711 +2713 17 -10.039558 -8.270000 73.114437 0.235000 2712 +2714 17 -9.989563 -8.319999 73.354439 0.235000 2713 +2715 17 -9.459564 -8.650001 74.074436 0.185000 2714 +2716 17 -9.079559 -8.770000 74.674438 0.205000 2715 +2717 17 -9.019562 -8.839999 75.144436 0.220000 2716 +2718 17 -8.899559 -8.839999 75.434437 0.220000 2717 +2719 17 -8.669563 -8.839999 76.014437 0.220000 2718 +2720 17 -8.669563 -8.839999 76.304438 0.220000 2719 +2721 17 -8.569557 -8.860000 76.674438 0.275000 2720 +2722 17 -8.939560 -8.890000 77.084438 0.405000 2721 +2723 17 -9.279564 -8.970000 77.424438 0.405000 2722 +2724 17 -2.319557 -2.509999 29.094437 0.155000 2587 +2725 17 -2.319557 -2.509999 29.094437 0.250000 2724 +2726 17 -2.659561 -2.960000 29.244438 0.250000 2725 +2727 17 -3.159561 -3.070000 29.384438 0.250000 2726 +2728 17 -3.549561 -3.030000 29.684441 0.255000 2727 +2729 17 -3.769562 -3.139999 30.084435 0.165000 2728 +2730 17 -3.909561 -3.400000 30.474434 0.165000 2729 +2731 17 -4.009560 -3.559999 30.784439 0.175000 2730 +2732 17 -3.959564 -3.710000 31.174438 0.190000 2731 +2733 17 -3.939560 -3.520000 31.634438 0.190000 2732 +2734 17 -0.548965 0.000000 -8.725479 1.021649 20 +2735 17 -2.329559 -1.130000 -0.695564 0.305000 2734 +2736 17 -2.389565 -0.490000 -0.635559 0.305000 2735 +2737 17 -2.269562 -0.490000 -0.295563 0.305000 2736 +2738 17 -2.079559 -0.210000 0.164436 0.305000 2737 +2739 17 -1.809563 -0.490000 0.634438 0.305000 2738 +2740 17 -1.929558 -0.490000 1.044441 0.305000 2739 +2741 17 -1.929558 -0.490000 1.394440 0.305000 2740 +2742 17 -1.869560 -0.490000 1.684441 0.305000 2741 +2743 17 -1.749557 -0.490000 1.974434 0.305000 2742 +2744 17 -1.559563 -0.589999 2.604439 0.305000 2743 +2745 17 -1.609558 -0.530000 2.844437 0.305000 2744 +2746 17 -1.639565 -0.490000 2.964439 0.305000 2745 +2747 17 -1.639565 -0.490000 3.254440 0.205000 2746 +2748 17 -1.719559 -0.259999 3.634438 0.215000 2747 +2749 17 -1.689560 -0.290000 4.064438 0.205000 2748 +2750 17 -1.579559 -0.490000 4.474434 0.205000 2749 +2751 17 -1.539558 -0.490000 4.674438 0.205000 2750 +2752 17 -1.519562 -0.490000 4.764435 0.205000 2751 +2753 16 -1.569557 -0.559999 5.114441 0.310000 2752 +2754 16 -1.569557 -0.559999 5.114441 0.305000 2753 +2755 16 -2.029564 -1.040000 5.174438 0.305000 2754 +2756 16 -2.449562 -1.110000 5.434441 0.305000 2755 +2757 16 -2.789558 -1.330000 5.784439 0.305000 2756 +2758 16 -3.039558 -1.110000 6.094437 0.305000 2757 +2759 16 -3.319557 -1.130000 6.454437 0.305000 2758 +2760 16 -3.629562 -1.150000 6.834435 0.305000 2759 +2761 16 -3.909561 -1.520000 7.044441 0.305000 2760 +2762 16 -4.139565 -1.900000 6.994438 0.305000 2761 +2763 17 -1.569557 -0.559999 5.114441 0.310000 2752 +2764 17 -1.569557 -0.559999 5.114441 0.310000 2763 +2765 17 -1.269562 -0.920000 5.664436 0.310000 2764 +2766 17 -1.119560 -0.889999 5.904434 0.265000 2765 +2767 17 -1.079559 -0.889999 5.964439 0.255000 2766 +2768 17 -0.999557 -1.130000 6.274437 0.215000 2767 +2769 17 -1.179558 -1.009999 6.764435 0.240000 2768 +2770 17 -1.269562 -1.160000 7.104439 0.240000 2769 +2771 17 -1.499557 -1.190000 7.464439 0.245000 2770 +2772 17 -1.629562 -0.990000 7.734436 0.260000 2771 +2773 17 -1.909561 -0.730000 8.244438 0.245000 2772 +2774 17 -2.149559 -0.610000 8.694435 0.225000 2773 +2775 17 -2.359558 -0.620000 9.044441 0.230000 2774 +2776 17 -2.469559 -0.620000 9.224434 0.230000 2775 +2777 17 -2.819557 -0.679999 9.584435 0.240000 2776 +2778 17 -3.169563 -1.000000 9.794441 0.215000 2777 +2779 17 -3.449562 -1.349999 9.914436 0.215000 2778 +2780 17 -3.699562 -1.929999 10.174438 0.250000 2779 +2781 17 -3.819557 -2.139999 10.534439 0.255000 2780 +2782 17 -3.989563 -2.139999 10.884438 0.305000 2781 +2783 17 -4.179558 -1.820000 11.114441 0.305000 2782 +2784 17 -4.189560 -1.799999 11.124435 0.305000 2783 +2785 17 -4.399559 -1.780000 11.414436 0.260000 2784 +2786 17 -4.739563 -1.780000 11.604439 0.240000 2785 +2787 17 -5.019562 -1.759999 11.804436 0.235000 2786 +2788 17 -5.239563 -1.780000 12.144440 0.235000 2787 +2789 18 -0.548965 0.000000 -8.725479 1.021649 20 +2790 18 1.860435 0.000000 -0.325562 0.205000 2789 +2791 18 2.350441 0.160001 0.184441 0.205000 2790 +2792 18 2.760445 0.270000 0.254440 0.205000 2791 +2793 18 3.200432 0.100000 0.434441 0.210000 2792 +2794 18 3.500435 -0.110000 0.504440 0.205000 2793 +2795 18 3.810432 -0.290000 0.824440 0.205000 2794 +2796 18 4.170433 -0.280000 1.074440 0.205000 2795 +2797 18 4.590446 -0.240000 1.324440 0.205000 2796 +2798 18 4.950432 -0.070000 1.634438 0.195000 2797 +2799 18 5.170433 -0.070000 1.954437 0.195000 2798 +2800 18 5.500435 0.130000 2.064438 0.195000 2799 +2801 18 5.880440 0.140000 2.174438 0.195000 2800 +2802 18 6.410439 0.380000 2.004440 0.195000 2801 +2803 18 6.850441 0.500000 1.874435 0.205000 2802 +2804 18 7.260445 0.450001 1.704437 0.205000 2803 +2805 18 7.800438 0.350000 1.544441 0.195000 2804 +2806 18 8.330437 0.260000 1.414436 0.195000 2805 +2807 18 8.770439 0.080000 1.334435 0.195000 2806 +2808 18 9.180443 0.140000 1.284439 0.210000 2807 +2809 18 9.540443 -0.089999 1.504440 0.220000 2808 +2810 18 9.860435 -0.509999 1.724434 0.220000 2809 +2811 18 10.170433 -0.450000 1.894440 0.220000 2810 +2812 18 10.390434 -0.580000 2.064438 0.215000 2811 +2813 18 10.760445 -0.730000 2.384438 0.210000 2812 +2814 18 11.080437 -0.670000 2.474434 0.205000 2813 +2815 18 11.390434 -0.540000 2.554436 0.205000 2814 +2816 18 11.730446 -0.370000 2.564438 0.205000 2815 +2817 18 12.020439 -0.240000 2.584435 0.195000 2816 +2818 18 12.280434 -0.130000 2.584435 0.195000 2817 +2819 18 12.590446 0.170000 2.504440 0.195000 2818 +2820 18 12.890434 0.300000 2.434441 0.195000 2819 +2821 18 13.130440 0.470000 2.304436 0.195000 2820 +2822 18 13.410439 0.580000 2.164436 0.190000 2821 +2823 18 13.670433 0.680000 1.994438 0.195000 2822 +2824 18 13.960442 0.980000 1.704437 0.195000 2823 +2825 18 14.430443 0.880000 1.524437 0.195000 2824 +2826 18 14.870445 1.400001 1.314438 0.195000 2825 +2827 18 15.160439 1.650001 1.374435 0.195000 2826 +2828 18 15.430443 1.770000 1.494438 0.195000 2827 +2829 18 15.700432 2.110000 1.654434 0.195000 2828 +2830 18 15.970436 2.080000 1.854439 0.195000 2829 +2831 18 16.320442 2.300000 1.854439 0.205000 2830 +2832 18 16.590446 2.470000 1.934441 0.205000 2831 +2833 18 16.900444 2.600000 2.074440 0.195000 2832 +2834 18 17.190437 2.570000 2.254440 0.195000 2833 +2835 18 17.440437 2.770000 2.384438 0.195000 2834 +2836 18 17.670433 2.710001 2.534439 0.200000 2835 +2837 18 17.940437 2.770000 2.644440 0.210000 2836 +2838 18 18.260445 2.790000 2.724434 0.215000 2837 +2839 18 18.540443 2.740000 2.804436 0.215000 2838 +2840 18 18.830437 2.800000 2.894440 0.220000 2839 +2841 18 19.120445 2.780000 2.994438 0.220000 2840 +2842 18 19.400444 2.850000 3.134438 0.225000 2841 +2843 18 19.660439 2.790000 3.294441 0.215000 2842 +2844 18 19.940437 2.810000 3.584435 0.200000 2843 +2845 18 20.220436 2.960001 3.894440 0.235000 2844 +2846 18 20.440437 2.860000 4.214439 0.205000 2845 +2847 18 20.590446 2.900001 4.594437 0.210000 2846 +2848 18 20.650444 2.760000 4.944435 0.205000 2847 +2849 18 20.560432 2.640000 5.294441 0.205000 2848 +2850 18 20.390434 2.470000 5.584435 0.205000 2849 +2851 18 20.180443 2.430000 5.954437 0.205000 2850 +2852 18 20.010445 2.190001 6.184441 0.215000 2851 +2853 2 20.010445 2.090000 6.184441 0.215000 2852 +2854 2 20.010445 2.090000 6.184441 0.215000 2853 +2855 2 19.780434 2.090000 6.384438 0.215000 2854 +2856 2 19.420433 2.180000 6.524437 0.200000 2855 +2857 2 19.000435 2.200000 6.714439 0.190000 2856 +2858 2 18.690437 2.160000 6.864441 0.190000 2857 +2859 2 18.360435 2.080000 6.974434 0.155000 2858 +2860 2 18.070442 2.080000 7.144440 0.155000 2859 +2861 2 17.820442 2.080000 7.534439 0.195000 2860 +2862 2 17.520439 2.140000 7.794441 0.200000 2861 +2863 2 17.170433 2.080000 8.024437 0.220000 2862 +2864 2 16.930443 2.040000 8.244438 0.230000 2863 +2865 2 16.650444 1.880000 8.444435 0.230000 2864 +2866 2 16.650444 1.880000 8.444435 0.230000 2865 +2867 2 16.650444 1.880000 8.444435 0.175000 2866 +2868 2 16.540443 1.780000 8.834435 0.175000 2867 +2869 2 16.500435 1.430000 9.244438 0.175000 2868 +2870 2 16.500435 1.590000 9.534439 0.175000 2869 +2871 2 16.480446 1.580000 9.784439 0.175000 2870 +2872 2 16.500435 1.430000 10.114441 0.175000 2871 +2873 2 16.470436 1.500000 10.414436 0.140000 2872 +2874 2 16.490440 1.460001 10.664436 0.140000 2873 +2875 2 16.600441 1.480000 11.054436 0.125000 2874 +2876 2 16.630440 1.630000 11.314438 0.125000 2875 +2877 2 16.750435 1.600000 11.624435 0.165000 2876 +2878 2 16.820442 1.600000 11.854439 0.165000 2877 +2879 2 16.960442 1.430000 12.144440 0.145000 2878 +2880 2 17.020439 1.490000 12.434441 0.130000 2879 +2881 2 17.080437 1.430000 12.724434 0.145000 2880 +2882 2 17.210442 1.640000 13.194435 0.170000 2881 +2883 2 17.290443 1.780000 13.594437 0.200000 2882 +2884 2 17.130440 1.530000 14.034439 0.175000 2883 +2885 2 17.040443 1.530000 14.464439 0.175000 2884 +2886 2 17.020439 1.700000 14.754440 0.175000 2885 +2887 2 16.980446 1.630000 15.064438 0.185000 2886 +2888 2 17.020439 1.520000 15.384438 0.195000 2887 +2889 2 17.080437 1.600000 15.594437 0.210000 2888 +2890 2 17.170433 1.820000 15.924438 0.230000 2889 +2891 2 17.250435 1.780000 16.174438 0.230000 2890 +2892 2 17.470436 1.920001 16.494438 0.230000 2891 +2893 2 17.680443 1.860000 16.784439 0.225000 2892 +2894 2 17.940437 1.850000 17.074440 0.220000 2893 +2895 2 18.130440 2.090000 17.414436 0.190000 2894 +2896 2 18.370445 2.350000 17.824440 0.190000 2895 +2897 2 18.550438 2.400001 18.194435 0.175000 2896 +2898 2 18.770439 2.290000 18.574440 0.175000 2897 +2899 2 19.030434 2.610000 18.974434 0.195000 2898 +2900 2 19.160439 3.010000 19.464439 0.195000 2899 +2901 2 19.380440 3.650001 19.914436 0.210000 2900 +2902 2 19.720436 4.110000 20.264435 0.285000 2901 +2903 2 19.940437 4.340000 20.834435 0.290000 2902 +2904 2 20.210442 4.730000 21.204437 0.185000 2903 +2905 2 20.400444 4.910000 21.644440 0.185000 2904 +2906 2 20.620445 4.830000 22.004440 0.215000 2905 +2907 2 20.810432 4.710001 22.254440 0.215000 2906 +2908 2 20.960442 4.720000 22.604439 0.135000 2907 +2909 2 21.150444 4.720000 22.844437 0.125000 2908 +2910 2 21.240440 4.740000 23.264435 0.095000 2909 +2911 2 21.400444 4.560000 23.674438 0.095000 2910 +2912 2 21.520439 4.330000 24.134438 0.265000 2911 +2913 2 21.590446 3.840000 24.564438 0.160000 2912 +2914 2 21.830437 3.650001 25.034439 0.170000 2913 +2915 2 22.000435 3.290000 25.594437 0.200000 2914 +2916 2 22.220436 3.200000 25.884438 0.190000 2915 +2917 2 22.500435 3.490000 26.234436 0.210000 2916 +2918 2 22.900444 3.840000 26.614441 0.155000 2917 +2919 2 23.270439 4.040000 26.994438 0.245000 2918 +2920 2 23.500435 4.050000 27.374435 0.245000 2919 +2921 2 23.770439 4.300000 27.744438 0.265000 2920 +2922 2 24.110435 4.360000 28.144440 0.175000 2921 +2923 2 24.340446 4.400001 28.484436 0.150000 2922 +2924 2 24.610435 4.230000 28.904434 0.115000 2923 +2925 2 24.970436 4.210001 29.424438 0.120000 2924 +2926 2 25.240440 3.790000 29.984436 0.120000 2925 +2927 2 25.350441 3.710001 30.504440 0.120000 2926 +2928 2 25.480446 3.910000 31.034439 0.165000 2927 +2929 2 25.540443 3.810000 31.434441 0.280000 2928 +2930 2 25.580437 3.720000 31.904434 0.240000 2929 +2931 2 25.650444 3.630000 32.294441 0.205000 2930 +2932 2 25.680443 3.360000 32.774437 0.240000 2931 +2933 2 25.750435 3.280000 33.174438 0.205000 2932 +2934 2 25.950432 3.360000 33.634438 0.220000 2933 +2935 2 25.980446 3.490000 34.104439 0.175000 2934 +2936 2 26.140434 3.490000 34.514435 0.115000 2935 +2937 2 26.330437 3.280000 34.894440 0.205000 2936 +2938 2 26.480446 3.060000 35.484436 0.215000 2937 +2939 2 26.910439 2.900001 35.974434 0.185000 2938 +2940 2 27.070442 2.720000 36.264435 0.090000 2939 +2941 2 27.310432 2.360000 36.644440 0.090000 2940 +2942 2 27.460442 2.090000 37.214439 0.145000 2941 +2943 2 27.650444 2.000000 37.624435 0.180000 2942 +2944 2 27.680443 1.960001 37.904434 0.210000 2943 +2945 2 27.710442 2.080000 38.184441 0.210000 2944 +2946 2 27.770439 2.080000 38.474434 0.210000 2945 +2947 2 27.980446 2.110000 38.854439 0.155000 2946 +2948 2 28.130440 2.110000 39.224434 0.155000 2947 +2949 2 28.300438 1.910000 39.634438 0.170000 2948 +2950 2 28.410439 2.290000 39.994438 0.115000 2949 +2951 2 28.560432 2.590000 40.404434 0.115000 2950 +2952 2 28.750435 2.830000 40.844437 0.155000 2951 +2953 2 28.890434 3.080000 41.394440 0.090000 2952 +2954 2 29.100441 3.320000 41.794441 0.175000 2953 +2955 2 29.190437 3.240000 42.214439 0.190000 2954 +2956 2 16.650444 1.880000 8.444435 0.230000 2865 +2957 2 16.650444 1.880000 8.444435 0.160000 2956 +2958 2 16.220436 1.650001 8.584435 0.160000 2957 +2959 2 15.680443 1.630000 8.554436 0.160000 2958 +2960 2 15.380440 1.400001 8.524437 0.185000 2959 +2961 2 15.100441 1.430000 8.424438 0.200000 2960 +2962 2 14.820442 1.260000 8.374435 0.185000 2961 +2963 2 14.510445 1.170001 8.224434 0.145000 2962 +2964 2 14.210442 0.940001 8.124435 0.145000 2963 +2965 2 13.960442 0.850000 8.044441 0.155000 2964 +2966 2 13.580437 0.690001 7.784439 0.140000 2965 +2967 2 13.280434 0.600000 7.384438 0.190000 2966 +2968 2 12.980446 0.550000 7.114441 0.255000 2967 +2969 2 12.660439 0.790000 6.684441 0.210000 2968 +2970 2 12.430443 0.790000 6.454437 0.210000 2969 +2971 2 12.250435 0.790000 6.154434 0.210000 2970 +2972 2 11.970436 0.580000 5.964439 0.255000 2971 +2973 2 11.740440 0.490001 5.684441 0.255000 2972 +2974 2 11.650444 0.430000 5.394440 0.220000 2973 +2975 2 11.660439 0.490001 5.204437 0.215000 2974 +2976 2 11.770439 0.930000 4.924438 0.215000 2975 +2977 2 11.770439 0.930000 4.924438 0.215000 2976 +2978 2 12.230446 1.730000 4.384438 0.170000 2977 +2979 2 12.520439 2.410000 4.154434 0.170000 2978 +2980 2 12.920433 2.640000 3.814438 0.210000 2979 +2981 2 13.340446 2.810000 3.514435 0.320000 2980 +2982 2 13.680443 2.950000 3.234436 0.320000 2981 +2983 2 13.940437 2.720000 2.964439 0.245000 2982 +2984 2 14.290443 2.720000 2.734436 0.205000 2983 +2985 2 14.620445 2.040000 2.584435 0.195000 2984 +2986 2 11.770439 0.930000 4.924438 0.215000 2975 +2987 2 11.770439 0.930000 4.924438 0.320000 2986 +2988 2 11.310432 0.590000 4.934441 0.320000 2987 +2989 2 10.870445 0.430000 4.964439 0.295000 2988 +2990 2 10.150444 -0.219999 5.054436 0.295000 2989 +2991 2 9.780434 -0.259999 4.964439 0.220000 2990 +2992 2 9.320442 -0.139999 4.954437 0.220000 2991 +2993 2 8.650444 -0.490000 5.114441 0.175000 2992 +2994 2 8.320442 -0.349999 5.194435 0.165000 2993 +2995 2 8.040443 0.060000 5.184441 0.165000 2994 +2996 2 7.780434 0.320001 5.214439 0.180000 2995 +2997 2 7.470436 0.300000 5.334435 0.260000 2996 +2998 2 7.170433 0.580000 5.344437 0.240000 2997 +2999 2 6.800438 0.260000 5.584435 0.155000 2998 +3000 2 6.240440 0.700001 5.614441 0.155000 2999 +3001 2 5.860435 0.790000 5.634438 0.175000 3000 +3002 2 5.270439 0.440001 5.764435 0.315000 3001 +3003 2 4.700432 0.150001 5.864441 0.210000 3002 +3004 2 4.410439 0.150001 6.154434 0.200000 3003 +3005 2 4.410439 0.150001 6.154434 0.200000 3004 +3006 2 4.370445 0.540000 6.714439 0.155000 3005 +3007 2 4.390434 0.470000 7.254440 0.145000 3006 +3008 2 4.470436 0.440001 7.594437 0.175000 3007 +3009 2 4.500435 0.360001 7.974434 0.085000 3008 +3010 2 4.650444 0.260000 8.294441 0.085000 3009 +3011 2 4.700432 0.340000 8.764435 0.195000 3010 +3012 2 4.760445 0.460000 9.144440 0.240000 3011 +3013 2 4.720436 0.370000 9.624435 0.335000 3012 +3014 2 4.720436 0.200001 10.044441 0.330000 3013 +3015 2 4.680443 0.050000 10.514435 0.220000 3014 +3016 2 4.670433 -0.190000 11.024437 0.220000 3015 +3017 2 4.860435 0.260000 11.514435 0.215000 3016 +3018 2 4.810432 0.490001 11.974434 0.255000 3017 +3019 2 4.800438 0.520000 12.414436 0.315000 3018 +3020 2 4.850441 0.570001 12.704437 0.315000 3019 +3021 2 4.990440 0.560000 13.124435 0.240000 3020 +3022 2 4.990440 0.450001 13.474434 0.240000 3021 +3023 2 4.990440 0.100000 13.914436 0.235000 3022 +3024 2 4.980446 -0.270000 14.284439 0.245000 3023 +3025 2 4.920433 -0.349999 14.574440 0.340000 3024 +3026 2 4.890434 -0.349999 14.934441 0.340000 3025 +3027 2 4.780434 -0.460000 15.334435 0.220000 3026 +3028 2 4.720436 -0.259999 15.754440 0.270000 3027 +3029 2 4.720436 0.130000 16.214439 0.270000 3028 +3030 2 4.410439 0.150001 6.154434 0.200000 3003 +3031 2 4.410439 0.150001 6.154434 0.110000 3030 +3032 2 4.200432 0.760000 5.724434 0.110000 3031 +3033 2 4.160439 0.790000 5.354439 0.155000 3032 +3034 2 4.270439 0.790000 4.944435 0.155000 3033 +3035 2 4.280434 0.790000 4.594437 0.155000 3034 +3036 2 4.280434 1.180000 4.264435 0.185000 3035 +3037 2 20.010445 2.090000 6.184441 0.215000 2852 +3038 2 20.010445 2.090000 6.184441 0.225000 3037 +3039 2 20.180443 1.860000 6.494438 0.225000 3038 +3040 2 20.320442 1.430000 6.824440 0.225000 3039 +3041 2 20.370445 1.290000 7.114441 0.205000 3040 +3042 2 20.370445 1.050000 7.424438 0.170000 3041 +3043 2 20.280434 0.770000 7.724434 0.170000 3042 +3044 2 20.180443 0.790000 8.014435 0.195000 3043 +3045 2 20.160439 0.650001 8.324440 0.195000 3044 +3046 2 20.230446 0.280001 8.644440 0.195000 3045 +3047 2 20.350441 -0.210000 8.894440 0.195000 3046 +3048 2 20.360435 -0.570000 9.224434 0.185000 3047 +3049 2 20.410439 -0.630000 9.544441 0.185000 3048 +3050 2 20.370445 -1.049999 9.964439 0.185000 3049 +3051 2 20.360435 -1.230000 10.314438 0.175000 3050 +3052 2 20.330437 -1.130000 10.694435 0.150000 3051 +3053 2 20.390434 -1.130000 10.984436 0.145000 3052 +3054 2 20.450432 -1.130000 11.274437 0.150000 3053 +3055 2 20.400444 -1.349999 11.724434 0.200000 3054 +3056 2 20.270439 -1.380000 12.164436 0.200000 3055 +3057 2 20.120445 -1.480000 12.464439 0.200000 3056 +3058 2 20.010445 -1.559999 12.734436 0.200000 3057 +3059 2 19.930443 -1.780000 13.074440 0.195000 3058 +3060 2 19.790443 -1.920000 13.344437 0.195000 3059 +3061 2 19.700432 -2.200000 13.634438 0.195000 3060 +3062 2 19.670433 -2.230000 14.004440 0.190000 3061 +3063 2 19.650444 -2.290000 14.264435 0.180000 3062 +3064 2 19.590446 -2.400000 14.584435 0.165000 3063 +3065 2 19.570442 -2.420000 14.894440 0.165000 3064 +3066 2 19.440437 -2.580000 15.264435 0.160000 3065 +3067 2 19.310432 -2.610000 15.474434 0.170000 3066 +3068 2 19.110435 -2.740000 15.774437 0.170000 3067 +3069 2 18.540443 -3.309999 16.224434 0.170000 3068 +3070 2 18.540443 -3.309999 16.224434 0.180000 3069 +3071 2 17.960442 -3.920000 16.574440 0.180000 3070 +3072 2 17.850441 -3.700000 16.764435 0.165000 3071 +3073 2 17.550438 -3.620000 16.954437 0.165000 3072 +3074 2 17.280434 -3.170000 17.204437 0.195000 3073 +3075 2 17.030434 -3.139999 17.454437 0.195000 3074 +3076 2 16.730446 -3.130000 17.744438 0.220000 3075 +3077 2 16.450432 -3.219999 18.034439 0.235000 3076 +3078 2 16.040443 -3.150000 18.224434 0.245000 3077 +3079 2 15.770439 -3.170000 18.444435 0.245000 3078 +3080 2 15.490440 -3.240000 18.584435 0.215000 3079 +3081 2 14.980446 -3.389999 18.894440 0.130000 3080 +3082 2 14.550438 -3.349999 18.974434 0.160000 3081 +3083 2 14.310432 -3.230000 19.044441 0.160000 3082 +3084 2 13.940437 -3.170000 19.234436 0.160000 3083 +3085 2 13.590446 -3.030000 19.434441 0.150000 3084 +3086 2 12.930443 -3.480000 19.714439 0.320000 3085 +3087 2 12.500435 -3.500000 20.024437 0.285000 3086 +3088 2 12.050438 -3.500000 20.294441 0.285000 3087 +3089 2 11.630440 -3.790000 20.494438 0.185000 3088 +3090 2 11.250435 -4.150000 20.564438 0.180000 3089 +3091 2 10.950432 -4.690000 20.604439 0.185000 3090 +3092 2 10.630440 -4.860000 20.584435 0.175000 3091 +3093 2 10.110435 -4.620000 20.544441 0.175000 3092 +3094 2 9.760445 -4.349999 20.454437 0.170000 3093 +3095 2 9.450432 -4.030000 20.324440 0.170000 3094 +3096 2 9.130440 -3.839999 20.214439 0.170000 3095 +3097 2 8.770439 -3.730000 20.134438 0.170000 3096 +3098 2 8.300438 -3.700000 19.994438 0.120000 3097 +3099 2 8.010445 -3.700000 19.994438 0.120000 3098 +3100 2 7.700432 -3.849999 19.924438 0.135000 3099 +3101 2 7.520439 -3.770000 19.854439 0.135000 3100 +3102 2 7.140434 -3.700000 19.754440 0.175000 3101 +3103 2 6.920433 -3.270000 19.524437 0.165000 3102 +3104 2 6.590446 -3.230000 19.404434 0.250000 3103 +3105 2 6.210442 -3.059999 19.354439 0.145000 3104 +3106 2 5.920433 -2.420000 19.234436 0.145000 3105 +3107 2 5.640434 -1.719999 19.234436 0.145000 3106 +3108 2 5.330437 -1.110000 19.144440 0.150000 3107 +3109 2 5.010445 -0.549999 19.054436 0.200000 3108 +3110 2 4.610435 -0.130000 18.894440 0.200000 3109 +3111 2 4.300438 0.340000 18.884438 0.140000 3110 +3112 2 3.830437 0.150001 18.884438 0.155000 3111 +3113 2 3.550438 0.640000 19.084435 0.205000 3112 +3114 2 18.540443 -3.309999 16.224434 0.170000 3068 +3115 2 18.540443 -3.309999 16.224434 0.205000 3114 +3116 2 19.010445 -3.230000 16.304436 0.205000 3115 +3117 2 19.250435 -3.759999 16.454437 0.205000 3116 +3118 2 19.460442 -4.349999 16.504440 0.240000 3117 +3119 2 19.750435 -4.990000 16.564438 0.240000 3118 +3120 2 20.180443 -5.009999 16.714439 0.185000 3119 +3121 2 20.420433 -5.009999 16.974434 0.165000 3120 +3122 2 20.700432 -4.960000 17.404434 0.200000 3121 +3123 2 20.910439 -5.370000 17.614441 0.215000 3122 +3124 2 21.190437 -5.900000 17.784439 0.215000 3123 +3125 2 21.570442 -6.480000 17.894440 0.180000 3124 +3126 2 21.860435 -6.950000 17.864441 0.185000 3125 +3127 2 22.160439 -7.150001 17.804436 0.175000 3126 +3128 2 22.470436 -7.860000 17.514435 0.185000 3127 +3129 2 22.470436 -7.860000 17.514435 0.185000 3128 +3130 2 22.470436 -7.860000 17.514435 0.240000 3129 +3131 2 22.660439 -8.829999 17.034439 0.240000 3130 +3132 2 22.770439 -9.380000 16.754440 0.240000 3131 +3133 2 22.950432 -9.710000 16.524437 0.240000 3132 +3134 2 23.040443 -10.360000 16.164436 0.220000 3133 +3135 2 23.230446 -11.009999 15.834435 0.220000 3134 +3136 2 23.310432 -11.929999 15.534439 0.210000 3135 +3137 2 23.280434 -12.640000 15.314438 0.195000 3136 +3138 2 23.050438 -13.849999 15.194435 0.195000 3137 +3139 2 22.780434 -14.940000 15.074440 0.210000 3138 +3140 2 22.460442 -16.009999 14.914436 0.250000 3139 +3141 2 22.250435 -17.190000 14.524437 0.250000 3140 +3142 2 22.100441 -18.190000 14.284439 0.250000 3141 +3143 2 21.820442 -19.249999 14.144440 0.270000 3142 +3144 2 21.710442 -20.599999 14.004440 0.260000 3143 +3145 2 21.800438 -21.310000 13.824440 0.260000 3144 +3146 2 21.800438 -22.200000 13.624435 0.260000 3145 +3147 2 21.670433 -23.650001 13.494438 0.220000 3146 +3148 2 21.800438 -24.659999 13.234436 0.190000 3147 +3149 2 21.910439 -25.600001 13.004440 0.190000 3148 +3150 2 21.720436 -26.619998 12.894440 0.150000 3149 +3151 2 21.920433 -27.400001 12.934441 0.150000 3150 +3152 2 21.920433 -27.400001 12.934441 0.145000 3151 +3153 2 21.960442 -28.170001 13.174438 0.145000 3152 +3154 2 22.140434 -28.749999 13.574440 0.150000 3153 +3155 2 22.230446 -29.610000 13.864441 0.180000 3154 +3156 2 22.230446 -30.339999 14.144440 0.215000 3155 +3157 2 22.200432 -31.339999 14.364441 0.220000 3156 +3158 2 22.080437 -32.690001 14.654434 0.235000 3157 +3159 2 21.850441 -34.450000 15.114441 0.220000 3158 +3160 2 22.230446 -35.240001 15.394440 0.190000 3159 +3161 2 22.630440 -36.150001 15.874435 0.190000 3160 +3162 2 22.860435 -36.929999 16.024437 0.190000 3161 +3163 2 22.970436 -37.630000 16.374435 0.185000 3162 +3164 2 23.180443 -38.170001 16.734436 0.180000 3163 +3165 2 23.280434 -38.850001 16.974434 0.180000 3164 +3166 2 23.300438 -39.440001 17.204437 0.200000 3165 +3167 2 23.420433 -39.940001 17.614441 0.200000 3166 +3168 2 21.920433 -27.400001 12.934441 0.150000 3150 +3169 2 21.920433 -27.400001 12.934441 0.200000 3168 +3170 2 22.280434 -27.229999 12.304436 0.200000 3169 +3171 2 22.220436 -27.889998 11.884438 0.200000 3170 +3172 2 22.080437 -28.240001 11.474434 0.210000 3171 +3173 2 22.000435 -28.880000 11.154434 0.210000 3172 +3174 2 21.940437 -29.779998 11.034439 0.195000 3173 +3175 2 21.740440 -30.549998 10.914436 0.195000 3174 +3176 2 21.550438 -31.150001 10.634438 0.195000 3175 +3177 2 21.550438 -31.700000 10.284439 0.195000 3176 +3178 2 21.070442 -32.330001 10.024437 0.105000 3177 +3179 2 20.450432 -33.179999 9.864441 0.105000 3178 +3180 2 20.250435 -33.790000 9.554436 0.165000 3179 +3181 2 20.530434 -34.060000 9.214439 0.190000 3180 +3182 2 20.680443 -34.580001 9.014435 0.185000 3181 +3183 2 22.470436 -7.860000 17.514435 0.185000 3128 +3184 2 22.470436 -7.860000 17.514435 0.210000 3183 +3185 2 22.990440 -7.950000 16.984436 0.210000 3184 +3186 2 23.220436 -8.349999 16.624435 0.210000 3185 +3187 2 23.220436 -8.759999 16.354439 0.210000 3186 +3188 2 23.300438 -8.839999 15.924438 0.220000 3187 +3189 2 23.360435 -8.839999 15.574440 0.210000 3188 +3190 2 23.490440 -8.860000 15.054436 0.185000 3189 +3191 2 23.550438 -8.880000 14.534439 0.185000 3190 +3192 2 23.700432 -8.940000 14.184441 0.185000 3191 +3193 2 23.670433 -9.060000 13.854439 0.160000 3192 +3194 2 23.790443 -9.120000 13.504440 0.235000 3193 +3195 2 23.810432 -9.220000 13.124435 0.235000 3194 +3196 2 23.950432 -9.239999 12.724434 0.210000 3195 +3197 2 24.020439 -9.480000 12.244438 0.195000 3196 +3198 2 23.940437 -9.419999 11.874435 0.125000 3197 +3199 2 23.900444 -9.270000 11.584435 0.125000 3198 +3200 2 23.870445 -9.480000 11.264435 0.120000 3199 +3201 2 23.880440 -9.480000 10.984436 0.140000 3200 +3202 2 23.820442 -9.480000 10.694435 0.145000 3201 +3203 2 23.760445 -9.480000 10.114441 0.120000 3202 +3204 2 23.850441 -9.550000 9.734436 0.160000 3203 +3205 2 23.810432 -9.589999 9.284439 0.170000 3204 +3206 2 23.820442 -9.480000 8.964439 0.190000 3205 +3207 2 23.740440 -9.480000 8.624435 0.195000 3206 +3208 2 23.750435 -9.339999 8.214439 0.195000 3207 +3209 2 23.740440 -9.370000 7.844437 0.190000 3208 +3210 2 23.700432 -9.440000 7.564438 0.190000 3209 +3211 2 23.580437 -9.599999 7.084435 0.210000 3210 +3212 2 23.370445 -9.860000 6.444435 0.175000 3211 +3213 2 23.210442 -9.929999 6.174438 0.175000 3212 +3214 2 23.010445 -10.079999 5.914436 0.175000 3213 +3215 2 22.760445 -10.079999 5.704437 0.215000 3214 +3216 2 22.490440 -9.870000 5.514435 0.210000 3215 +3217 2 22.140434 -9.569999 5.394440 0.210000 3216 +3218 2 21.770439 -9.419999 5.394440 0.175000 3217 +3219 2 21.150444 -9.550000 5.364441 0.175000 3218 +3220 2 20.560432 -9.640000 5.454437 0.240000 3219 +3221 2 20.080437 -9.440000 5.424438 0.270000 3220 +3222 2 19.650444 -9.499999 5.354439 0.220000 3221 +3223 2 19.320442 -9.610000 5.294441 0.210000 3222 +3224 2 18.980446 -9.800000 5.294441 0.210000 3223 +3225 2 18.710442 -9.960000 5.244438 0.210000 3224 +3226 2 18.390434 -10.120000 5.204437 0.135000 3225 +3227 2 17.950432 -10.259999 5.254440 0.135000 3226 +3228 2 17.350441 -10.880000 5.354439 0.185000 3227 +3229 2 16.910439 -11.020000 5.354439 0.185000 3228 +3230 2 16.430443 -10.890000 5.324440 0.185000 3229 +3231 2 16.160439 -10.919999 5.234436 0.185000 3230 +3232 2 15.890434 -10.860000 5.024437 0.195000 3231 diff --git a/docs/getting-started/getting-started.rst b/docs/getting-started/getting-started.rst deleted file mode 100644 index 756a9f31e..000000000 --- a/docs/getting-started/getting-started.rst +++ /dev/null @@ -1,216 +0,0 @@ -.. _get-started: - -################## -Your first network -################## - -Follow the :doc:`/getting-started/installation`: - -* Set up a new environment -* Install the software into the environment - -.. note:: - - This guide aims to get your first model running with the bare minimum steps. If you'd - like to familiarize yourself with the core concepts and get a more top level - understanding first, check out the :doc:`./top-level-guide` before you continue. - -The framework supports both declarative statements in configuration formats, or Python -code. Be sure to take a quick look at each code tab to get a feel for the equivalent forms -of configuration coding! - -Create a project -================ - -Use the command below to create a new project directory and some starter files: - -.. code-block:: bash - - bsb new my_first_model --quickstart --json - cd my_first_model - -The project now contains a couple of important files: - -* ``network_configuration.json``: your components are declared and parametrized here. -* A ``pyproject.toml`` file: your project settings are declared here. -* A ``placement.py`` and ``connectome.py`` file to put your code in. - -The configuration contains a ``base_layer``, a ``base_type`` and an ``example_placement``. -These minimal components are enough to *compile* your first network. You can do this from -the CLI or Python: - -.. tab-set-code:: - - .. code-block:: bash - - pip install bsb-plotting - bsb compile --verbosity 3 --plot - - .. literalinclude:: getting_started.py - :language: python - :lines: -7,32- - -The ``verbosity`` flag increases the amount of output that is generated, to follow along -or troubleshoot. The ``plot`` flags opens a plot |:slight_smile:|. - -.. _getting-started-configurables: - -Define starter components -========================= - -Topology --------- - -Your network model needs a description of its shape, which is called the topology of the -network. The topology exists of 2 types of components: :class:`Regions -<.topology.region.Region>` and :class:`Partitions <.topology.partition.Partition>`. -Regions combine multiple partitions and/or regions together, in a hierarchy, all the way -up to a single topmost region, while partitions are exact pieces of volume that can be -filled with cells. - -To get started, we'll add a second layer ``top_layer``, and a region ``brain_region`` -which will stack our layers on top of each other: - -.. tab-set-code:: - - .. literalinclude:: getting-started.json - :language: json - :lines: 12-29 - - .. literalinclude:: getting_started.py - :language: python - :lines: 9-17 - -The :guilabel:`type` of the ``brain_region`` is ``stack``. This means it will place its -children stacked on top of each other. The :guilabel:`type` of ``base_layer`` is -``layer``. Layers specify their size in 1 dimension, and fill up the space in the other -dimensions. See :doc:`/topology/intro` for more explanation on topology components. - -Cell types ----------- - -The :class:`~.cell_types.CellType` is a definition of a cell population. During -placement 3D positions, optionally rotations and morphologies or other properties will be -created for them. In the simplest case you define a soma :guilabel:`radius` and -:guilabel:`density` or fixed :guilabel:`count`: - -.. tab-set-code:: - - .. literalinclude:: getting-started.json - :language: json - :lines: 30-43 - - .. literalinclude:: getting_started.py - :language: python - :lines: 18 - - -Placement ---------- - -.. tab-set-code:: - - .. literalinclude:: getting-started.json - :language: json - :lines: 44-55 - - .. literalinclude:: getting_started.py - :language: python - :lines: 19-24 - - -The ``placement`` blocks use the cell type indications to place cell types into -partitions. You can use other :class:`PlacementStrategies -<.placement.strategy.PlacementStrategy>` by setting the :guilabel:`strategy` attribute. -The BSB offers some strategies out of the box, or you can implement your own. The -:class:`~bsb.placement.random.RandomPlacement` places cells randomly in the assigned -volume. - -Take another look at your network: - -.. code-block:: bash - - bsb compile -v 3 -p --clear - -.. note:: - - We're using the short forms ``-v`` and ``-p`` of the CLI options ``--verbosity`` and - ``--plot``, respectively. You can use ``bsb --help`` to inspect the CLI options. - -.. warning:: - - We pass the ``--clear`` flag to indicate that existing data may be overwritten. See - :ref:`storage_control` for more flags to deal with existing data. - - -Connectivity ------------- - -.. tab-set-code:: - - .. literalinclude:: getting-started.json - :language: json - :lines: 54-64 - - .. literalinclude:: getting_started.py - :language: python - :lines: 25-30 - - -The ``connectivity`` blocks specify connections between systems of cell types. They can -create connections between single or multiple pre and postsynaptic cell types, and can -produce one or many :class:`ConnectivitySets <.storage.interfaces.ConnectivitySet>`. - -Regenerate the network once more, now it will also contain your connections! With your -cells and connections in place, you're ready to move to the :ref:`simulations` stage. - -.. rubric:: What next? - -.. grid:: 1 1 2 2 - :gutter: 1 - - .. grid-item-card:: :octicon:`flame;1em;sd-text-warning` Continue getting started - :link: include_morphos - :link-type: ref - - Follow the next chapter and learn how to include morphologies. - - .. grid-item-card:: :octicon:`tools;1em;sd-text-warning` Components - :link: components - :link-type: ref - - Learn how to write your own components to e.g. place or connect cells. - - .. grid-item-card:: :octicon:`database;1em;sd-text-warning` Simulations - :link: simulations - :link-type: ref - - Learn how to simulate your network models - - .. grid-item-card:: :octicon:`device-camera-video;1em;sd-text-warning` Examples - :link: examples - :link-type: ref - - View examples explained step by step - - .. grid-item-card:: :octicon:`package-dependents;1em;sd-text-warning` Plugins - :link: plugins - :link-type: ref - - Learn to package your code for others to use! - - .. grid-item-card:: :octicon:`mark-github;1em;sd-text-warning` Contributing - :link: https://github.com/dbbs-lab/bsb-core - - Help out the project by contributing code. - -Recap ------ - -.. tab-set-code:: - - .. literalinclude:: getting-started.json - :language: json - - .. literalinclude:: getting_started.py - :language: python diff --git a/docs/getting-started/getting-started_reconstruction.rst b/docs/getting-started/getting-started_reconstruction.rst new file mode 100644 index 000000000..72a23cd8a --- /dev/null +++ b/docs/getting-started/getting-started_reconstruction.rst @@ -0,0 +1,280 @@ + +################## +Your first network +################## + +Make sure you completed the :doc:`Installation guide` before +running the example in this section. + +.. note:: + + | This guide aims to get your first model running with the minimum number of steps. + | If you would like to familiarize yourself with the core concepts and get a more top level + understanding first, check out the :doc:`/config/files` before you continue. + +The framework supports both declarative statements in configuration formats, or Python +code. Be sure to take a quick look at each code tab to get a feel for the equivalent forms +of configuration coding! + +Create a project +================ + +Use the command below to create a new BSB project directory and some starter files: + +.. code-block:: bash + + bsb new my_first_model --quickstart --json + cd my_first_model + +Projects help you keep your models organized, safe, and neat! Your folder should +contain: + +* ``network_configuration.json``: your configuration file. The components are declared and + parametrized here. +* A ``pyproject.toml`` file: This file uses the TOML syntax to set configuration values for + the BSB and any other python tools your project uses. +* A ``placement.py`` and ``connectome.py`` files if you want to make your own components. + +Python project settings are contained in the ``pyproject.toml`` file. +A lot of Python options can be configured with your ``toml`` file such as the python +libraries necessary to deploy it. If you want to learn more about this configuration tool, +check out `this tutorial `_ and the +:doc:`bsb related options `. + +The configuration contains already a :guilabel:`partition` ``base_layer``, a :guilabel:`cell_type` +``base_type`` and a :guilabel:`placement` strategy ``example_placement``. +These minimal components are enough to *compile* your first network. You can do this from the terminal +or with Python: + +.. tab-set-code:: + + .. code-block:: bash + + bsb compile --verbosity 3 + + .. code-block:: python + + import bsb.options + from bsb import Scaffold, parse_configuration_file + + bsb.options.verbosity = 3 + config = parse_configuration_file("network_configuration.json", parser="json") + scaffold = Scaffold(config) + scaffold.compile() + +Here, the ``verbosity`` flag increases the amount of output (logs) that is generated when the BSB is +running, to follow along or troubleshoot. + +When the BSB compiles a `Scaffold`, it extracts and runs the reconstruction pipeline defined in the +`Configuration` and stores each step's results into the `Storage` (as explained in the +:ref:`previous section `). + +The compile command (or python script) should produce a file ``"network.hdf5"`` located in your project +folder if the BSB could parse the configuration file and complete the reconstruction. This file should +contain your network (configuration and storage) after reconstruction. + +.. note:: + + The configuration file can be written in either ``json`` or ``yaml`` format; + By default, the :guilabel:`new` command uses the yaml format unless the ``--json`` + flag is set. + +If you prefer, instead of loading the configuration from a file, you can create your configuration +directly in Python code with a ``Configuration`` object: + + .. code-block:: python + + import bsb.options + from bsb import Scaffold, Configuration + + bsb.options.verbosity = 3 + config = Configuration.default(storage=dict(engine="hdf5", root="network.hdf5")) + # Implement your code here + + scaffold = Scaffold(config) + scaffold.compile() + +.. _getting-started-configurables: + +Define starter components +========================= + +Network +------- + +The ``network`` component describes the global spatial properties of your circuit, +including its size along the three dimensions :guilabel:`x`, :guilabel:`y`, :guilabel:`z` +(in µm). + +.. tab-set-code:: + + .. literalinclude:: configs/getting-started.json + :language: json + :lines: 7-11 + + .. literalinclude:: /../examples/tutorials/getting_started.py + :language: python + :lines: 7-9 + +Topology +-------- + +Your network model needs a description of its shape, which is called the topology of the +network. The topology consists of 2 components: :doc:`Regions ` +and :doc:`Partitions `. +Regions combine multiple partitions and/or regions together, in a hierarchy, all the way +up to a single topmost region, while partitions are exact pieces of volume that can be +filled with cells. + +To get started, we will add a second layer ``top_layer``, and a region ``brain_region``: + +.. tab-set-code:: + + .. literalinclude:: configs/getting-started.json + :language: json + :lines: 12-27 + + .. literalinclude:: /../examples/tutorials/getting_started.py + :language: python + :lines: 11-20 + +The :guilabel:`type` of the ``brain_region`` is ``stack``. This means it will place its +children stacked on top of each other. The :guilabel:`type` of ``base_layer`` is +``layer``. Layers specify their size in one dimension, and fill up the space in the other +dimensions. See the :doc:`topology section` for more explanation on +these components. + +.. warning:: + The BSB checks the configuration for errors each time the latter is modified. Now, in the + Python code implementation, we are adding components one by one. This means that if + one component refers to another, this latter should already in the configuration. + That is why, in the python code implementation, we created the partitions before the + region because the region uses references to the partitions' name. + +Cell types +---------- + +The :doc:`Cell Types ` define populations of cells. +In the simplest case, you can define a ``cell type`` by its soma :guilabel:`radius` and +the number of cells to place using either a :guilabel:`density` value, or a fixed +:guilabel:`count`, or another +:doc:`placement indication `. + +To populate our new ``top_layer``, we will create an extra cell type ``top_type``; this +time we want to a place 40 of these cells and their soma :guilabel:`radius` of ``7``. + +.. tab-set-code:: + + .. literalinclude:: configs/getting-started.json + :language: json + :lines: 28-41 + + .. literalinclude:: /../examples/tutorials/getting_started.py + :language: python + :lines: 22-29 + + +Placement +--------- + +The :doc:`placement ` blocks are in charge of placing cells in the +partitions using the cell type indications. For each placement component, you should +specify the placement :guilabel:`strategy` to use, the list of :guilabel:`cell_types` +names to place and the list of :guilabel:`partitions` in which you want the placement +to happen. + +Now that we have defined our new ``top_type``, we should place it in our ``top_layer``: + +.. tab-set-code:: + + .. literalinclude:: configs/getting-started.json + :language: json + :lines: 42-53 + + .. literalinclude:: /../examples/tutorials/getting_started.py + :language: python + :lines: 31-42 + +We added here the ``top_placement`` strategy. +``top_placement`` and ``example_placement`` are both following a ``RandomPlacement`` +strategy from the BSB, which assigns a random position to the cells' soma within their +respective partition. + +You should now try to compile your network to check if you did no mistake: + +.. tab-set-code:: + + .. code-block:: bash + + bsb compile -v 3 --clear + + .. code-block:: python + + # bsb.options.verbosity = 3 # if not set previously + scaffold.compile(clear=True) + +.. note:: + + We are using the short forms ``-v`` of the CLI options ``verbosity``. + You can use ``bsb --help`` to inspect the :doc:`CLI options `. + +.. warning:: + + We pass the ``clear`` flag to indicate that existing data may be overwritten. See + :ref:`storage_control` for more flags to deal with existing data. + +Each placement strategy generates a `PlacementSet` in the `Storage` that you can access from the `Scaffold` object +(see :doc:`this section ` for more info). + + +Connectivity +------------ + +The :doc:`connectivity ` component contains the blocks that specify +connections between systems of cell types. +For each :guilabel:`connectivity` component, you should specify the connection :guilabel:`strategy` and +for both :guilabel:`presynaptic` (source) and :guilabel:`postsynaptic` (target) groups, provide the +list of :guilabel:`cell_types` names to connect. + +Here, we are going to connect all ``base_type`` cells to all ``top_type`` cells. + +.. tab-set-code:: + + .. literalinclude:: configs/getting-started.json + :language: json + :lines: 54-65 + + .. literalinclude:: /../examples/tutorials/getting_started.py + :language: python + :lines: 44-49 + +Recompile the network once more, now it will also contain your connections! With your +cells and connections in place, you are ready to move to the next stage. + +.. note:: + For Python, the `compile` function should be called (only once) at the end of your script, + once the configuration is complete. + +Each connection strategy generates a `ConnectivitySet` in the `Storage` for each pair of cell types +that you can access from the `Scaffold` object (see :doc:`this section ` for more info). +Here, the name of the `ConnectivitySet` corresponds to the connection component (``A_to_B``) because +there is only one pair of :guilabel:`cell_type`. + +.. warning:: + If you have more than one pair of cell types connected through the same connection strategy, then the name of + the `ConnectivitySet` is ``NameOfTheComponent`` _ ``NameOfPreType`` _ ``NameOfPostType`` (learn more `here`). + +Final configuration file +------------------------ + +.. tab-set-code:: + + .. literalinclude:: configs/getting-started.json + :language: json + + .. literalinclude:: /../examples/tutorials/getting_started.py + :language: python + +What is next? +============= +Learn how to extract the data from your produced `Scaffold` through :doc:`this tutorial `. diff --git a/docs/getting-started/getting_started.py b/docs/getting-started/getting_started.py deleted file mode 100644 index 5221a1447..000000000 --- a/docs/getting-started/getting_started.py +++ /dev/null @@ -1,34 +0,0 @@ -from bsb_plot import plot_network - -import bsb.options -from bsb import Scaffold, from_json - -bsb.options.verbosity = 3 -config = from_json("network_configuration.json") - -config.partitions.add("top_layer", thickness=100) -config.regions.add( - "brain_region", - type="stack", - children=[ - "base_layer", - "top_layer", - ], -) -config.cell_types.add("top_type", spatial=dict(radius=7, count=10)) -config.placement.add( - "all_placement", - strategy="bsb.placement.RandomPlacement", - cell_types=["base_type", "top_type"], - partitions=["base_layer"], -) -config.connectivity.add( - "A_to_B", - strategy="bsb.connectivity.AllToAll", - presynaptic=dict(cell_types=["base_type"]), - postsynaptic=dict(cell_types=["top_type"]), -) - -network = Scaffold(config) -network.compile() -plot_network(network) diff --git a/docs/getting-started/guide_components.rst b/docs/getting-started/guide_components.rst new file mode 100644 index 000000000..17e4ad80d --- /dev/null +++ b/docs/getting-started/guide_components.rst @@ -0,0 +1,256 @@ +.. _guide_components: + +Create your own components +========================== + +.. note:: + This guide assumes that you have a good understanding of the basis of BSB; i.e., that + you are familiar with the concept of BSB ``components``. You should have read the whole + the getting started :doc:`section `. + +In this tutorial, we are going to guide you through the process of creating your own +component for a new :doc:`Connection strategy `. +We will start from the following configuration file (corresponds to the first network file +from the getting started tutorial): + +.. literalinclude:: /getting-started/configs/getting-started.json + :language: json + +Let's save this new configuration in our project folder under the name ``config_connectome.json`` + +Description of the strategy to implement +---------------------------------------- + +For the connectivity, we will consider that the cells ``base_type`` can connect to all ``top_type`` cells +within a sphere of ``radius`` ``100`` µm. You can consider this as a simplified model of +distance based connectivity. + +Components boiler plate +----------------------- + +BSB components are written as Python classes. When the BSB parses your `Configuration` +component, it resolves the path to its class or function and import it. Hence, your +components should be written as +`importable modules `_. + +In our case, we will place our `ConnectionStrategy` class in ``connectome.py``: + +.. code-block:: python + + from bsb import config, ConnectionStrategy + + @config.node + class DistanceConnectivity(ConnectionStrategy): + + # add your attributes here + + def connect(self, presyn_collection, postsyn_collection): + # write your code here + pass + +The :class:`ConnectionStrategy <.connectivity.strategy.ConnectionStrategy>` here requires you to +implement the :meth:`connect <.connectivity.strategy.ConnectionStrategy.connect>` function. + +.. tip:: + Take the time to familiarize yourself with the class and the function before continuing. + +.. note:: + In this example, we only implemented the required function for the strategy but + you can also overwrite the other functions of the interface, if you need it. + Please refer to the documentation on the classes you want to implement for more + information. + +Note that this strategy leverages the ``@config.node`` +`python decorator `_. +The :doc:`configuration node decorator` allows you to pass the parameters +defined in the configuration file to the class. It will also handle the +:doc:`type testing ` of your configuration attributes (e.g., make sure your +``radius`` parameter is a positive float number). We will see in the following sections how +to create your class configuration attributes. + +Add configuration attributes +---------------------------- + +For our strategy, we need to pass a list of parameters to its class, +through our configuration file. + +Here, we need a radius parameter which translates into the following code in our class: + +.. code-block:: python + + from bsb import config, ConnectionStrategy, types + + @config.node + class DistanceConnectivity(ConnectionStrategy): + + radius: float = config.attr(type=types.float(min=0), required=True) + + def connect(self, presyn_collection, postsyn_collection): + # write your code here + pass + +Here, :guilabel:`radius` is a positive float that is required, this means that the BSB will throw a +:class:`ConfigurationError <.exceptions.ConfigurationError>` if the parameter is not provided. +This will also happen if the parameters provided for the configuration attributes do not match +the expected types. + +At this stage, you have created a python class with minimal code implementation, you should +now link it to your configuration file. To import our class in our configuration file, we +will modify the :guilabel:`connectivity` block: + +.. code-block:: json + + "connectivity": { + "A_to_B": { + "strategy": "connectome.DistanceConnectivity", + "radius": 100, + "presynaptic": { + "cell_types": ["base_type"] + }, + "postsynaptic": { + "cell_types": ["top_type"] + } + } + } + +Implement the python methods +---------------------------- +Starting from now, we introduce the term of `Chunk` which is a volume unit used to decompose +your circuit topology into independent pieces to parallelize the circuit reconstruction +(see :doc:`this section` for more details). + +Here, we are going to use the `connect` function to produce and store +:class:`ConnectivitySets <.storage.interfaces.ConnectivitySet>`. +First some definition: + +| The presynaptic and postsynaptic populations to connect (each can have multiple cell type + populations) are called :class:`Hemitype <.connectivity.strategy.Hemitype>`. An `Hemitype` + serves as the interface to define a connection population and its parameters in the + Configuration. +| The class :class:`HemitypeCollection <.connectivity.strategy.HemitypeCollection>` allows + you to filter the cells of an `Hemitype` according to a list of `Chunk`. +| The `connect` method deals with connecting cells, and split the task into Chunks + (here, each chunk containing a presynaptic cell). + +The parameters of `connect` are therefore the pre- and post-synaptic ``HemitypeCollection``. +This class provides a :meth:`placement <.connectivity.strategy.HemitypeCollection.placement>` +method that we will use to iterate over its cell types populations ``PlacementSet``. + +.. code-block:: python + + def connect(self, presyn_collection, postsyn_collection): + # For each presynaptic placement set + for pre_ps in presyn_collection.placement: + # Load all presynaptic positions + presyn_positions = pre_ps.load_positions() + # For each postsynaptic placement set + for post_ps in postsyn_collection.placement: + # Load all postsynaptic positions + postsyn_positions = post_ps.load_positions() + +The next step is to filter the postsynaptic cells that are within the sphere of each of our +presynaptic cell. We can use the :doc:`norm ` +function to measure the distance between one presynaptic cell and all its potential targets. +The ones we keep are within the ``radius`` defined as attribute of the class. + +.. code-block:: python + + # For each presynaptic cell to connect + for j, pre_position in enumerate(presyn_positions): + # We measure the distance of each postsyn cell with respect to the + # presyn cell + dist = np.linalg.norm(postsyn_positions - pre_position, axis=1) + # We keep only the ids that are within the sphere radius + ids_to_keep = np.where(dist <= self.radius)[0] + nb_connections = len(ids_to_keep) + +Finally, we use the +:meth:`ConnectionStrategy.connect_cells <.connectivity.strategy.ConnectionStrategy.connect_cells>` +function, which will create and store our resulting `ConnectivitySet`. It will also assign it a name +based on the Strategy name and eventually the pre- and post-synaptic populations connected (if there +are more than one pair). +This function requires for each individual pair of cell, their `connection location`: + +- the index of the cell within its ``PlacementSet`` +- the index of the morphology branch +- the index of the morphology branch point. + +Because we are not using morphologies here the second and third indexes should be set to ``-1``: + +.. code-block:: python + + for j, pre_position in enumerate(presyn_positions): + # We measure the distance of each postsyn cell with respect to the + # presyn cell + dist = np.linalg.norm(postsyn_positions - pre_position, axis=1) + # We keep only the ids that are within the sphere radius + ids_to_keep = np.where(dist <= self.radius)[0] + nb_connections = len(ids_to_keep) + # We create two connection location array and set their neuron ids. + pre_locs = np.full((nb_connections, 3), -1, dtype=int) + pre_locs[:, 0] = j + post_locs = np.full((nb_connections, 3), -1, dtype=int) + post_locs[:, 0] = ids_to_keep + + self.connect_cells(pre_ps, post_ps, pre_locs, post_locs) + +You have done it! Congrats! Your final `connectome.py` should look like this: + +.. literalinclude:: /../examples/tutorials/dist_connection.py + :language: python + +.. tip:: + Comment your code! If not for you (because you are going to forget about it in a month), + at least for the other people that will read it afterwards. |:wink:| + +Enjoy +----- + +You have done the hardest part! Now, you should be able to run the reconstruction once again +with your brand new component. + +.. code-block:: bash + + bsb compile config_connectome.json --verbosity 3 + +It is best practice to keep your component code in a subfolder with the same name as +your model. For example, if you are modelling the cerebellum, create a folder called +``cerebellum``. Inside place an ``__init__.py`` file, so that Python can import code from +it. Then you best subdivide your code based on component type, e.g. keep connectivity +strategies in a file called ``connectome.py``. That way, your connectivity components are +available in your model as ``cerebellum.connectome.MyComponent``. It will also make it +easy to distribute your code as a package! + +More advanced component writing +------------------------------- +If you want to see another example on how to write BSB components, you can take a look at +the placement strategy example in :doc:`this section ` + +.. rubric:: Next steps: + +.. grid:: 1 1 1 2 + :gutter: 1 + + .. grid-item-card:: :octicon:`fold-up;1em;sd-text-warning` Start contributing! + :link: development-section + :link-type: ref + + Help out the project by contributing code. + + .. grid-item-card:: :octicon:`tools;1em;sd-text-warning` Command-Line Interface + :link: cli-guide + :link-type: ref + + Familiarize yourself with BSB's CLI. + + .. grid-item-card:: :octicon:`gear;1em;sd-text-warning` Learn about components + :link: main-components + :link-type: ref + + Explore more about the main components. + + .. grid-item-card:: :octicon:`device-camera-video;1em;sd-text-warning` Examples + :link: examples + :link-type: ref + + Explore more advanced examples \ No newline at end of file diff --git a/docs/getting-started/include_morphos.py b/docs/getting-started/include_morphos.py deleted file mode 100644 index 5a08f41ae..000000000 --- a/docs/getting-started/include_morphos.py +++ /dev/null @@ -1,51 +0,0 @@ -from bsb_plot import plot_network - -import bsb.options -from bsb import Scaffold, Stack, from_json - -bsb.options.verbosity = 3 -config = from_json("network_configuration.json") - -config.partitions.add("top_layer", thickness=100) -config.regions["brain_region"] = Stack( - children=[ - "base_layer", - "top_layer", - ] -) -config.morphologies = [ - "neuron_A.swc", - {"name": "neuron_B", "file": "neuron2.swc"}, -] - -config.cell_types.base_type.spatial.morphologies = ["neuron_A"] - -config.morphologies.append( - {"name": "neuron_NM", "file": "nm://cell005_GroundTruth"}, -) - -config.cell_types.add( - "top_type", - spatial=dict( - radius=7, - count=10, - morphologies=["neuron_B", "neuron_NM"], - ), -) -config.placement.add( - "all_placement", - strategy="bsb.placement.RandomPlacement", - cell_types=["base_type", "top_type"], - partitions=["base_layer"], -) -config.connectivity.add( - "A_to_B", - strategy="bsb.connectivity.VoxelIntersection", - presynaptic=dict(cell_types=["base_type"]), - postsynaptic=dict(cell_types=["top_type"]), -) - -network = Scaffold(config) - -network.compile() -plot_network(network) diff --git a/docs/getting-started/include_morphos.rst b/docs/getting-started/include_morphos.rst deleted file mode 100644 index 9ff38fcc6..000000000 --- a/docs/getting-started/include_morphos.rst +++ /dev/null @@ -1,194 +0,0 @@ -.. _include_morphos: - -Adding morphologies -=================== - -.. note:: - - This guide is a continuation of the |:books:| :doc:`Getting Started guide `. - -.. hint:: - - To follow along, download 2 morphologies from - `NeuroMorpho `_ and save them as ``neuron_A.swc`` and - ``neuron2.swc`` locally. - -Previously we constructed a stacked double layer topology, with 2 cell types. We then -connected them in an all-to-all fashion. The next step assigns -:doc:`morphologies ` to our cells, and connects the cells based on -the intersection of their morphologies! - -Morphologies can be loaded from local files or to fetch from remote sources, like NeuroMorpho. - -Using local files ------------------ - -You can declare source morphologies in the root :guilabel:`morphologies` list: - -.. tab-set-code:: - - .. literalinclude:: include_morphos.yaml - :language: yaml - :lines: 9-10 - - .. code-block:: json - - "morphologies": [ - "neuron_A" - ], - - .. literalinclude:: include_morphos.py - :language: python - :lines: 18,19,21 - -In this case a morphology is created from ``neuron_A.swc`` and given the name ``"neuron_A"``. -As a second step, we associate this morphology to the ``base_type`` by referencing it by name -in :guilabel:`cell_types.base_type.spatial.morphologies`: - -.. tab-set-code:: - - .. literalinclude:: include_morphos.yaml - :language: yaml - :lines: 30-36 - :emphasize-lines: 6-7 - - .. literalinclude:: include_morphos.json - :language: json - :lines: 41-50 - :emphasize-lines: 6-8 - - .. literalinclude:: include_morphos.py - :language: python - :lines: 23 - - -By default the name assigned to the morphology is the file name without its extension (here ``.swc``). To -change the name we can use a node with a :guilabel:`name` and :guilabel:`file`: - -.. tab-set-code:: - - .. literalinclude:: include_morphos.yaml - :language: yaml - :lines: 9-12 - :emphasize-lines: 3-4 - - .. literalinclude:: include_morphos.json - :language: json - :lines: 12-17 - :emphasize-lines: 4-5 - - .. literalinclude:: include_morphos.py - :language: python - :lines: 18-21 - :emphasize-lines: 3 - -It is also possible to add a pipeline to perform transformations on the loaded -morphology. Pipelines can be added by adding a :guilabel`pipeline` list to the morphology node. -Each item in the list may either be a string reference to an importable function or a method of -the :class:`~bsb.morphologies.Morphology` class. To pass parameters, use a node with the -function reference placed in the guilabel:`func` attribute, and a :guilabel:`parameters` list. -Here is an example what that would look like: - -.. tab-set-code:: - - .. code-block:: yaml - - morphologies: - - file: my_neuron.swc - pipeline: - - center - - my_module.add_axon - - func: rotate - rotation: [20, 0, 20] - - .. code-block:: json - - "morphologies": [ - { - "file": "my_neuron.swc", - "pipeline": [ - "center", - "my_module.add_axon", - { - "func": "rotate", - "rotation": [20, 0, 20] - }, - ], - } - ] - -.. note:: - - Any additional keys given in a pipeline step, such as :guilabel:`rotation` in the - example, are passed to the function as keyword arguments. - -Fetching with alternative URI schemes -------------------------------------- - -The framework uses URI schemes to define the path of the sources that are loaded. By -default it tries to load from the project local folder, using the``file`` URI scheme (``"file://"``). -It is possible to fetch morphologies directly from `neuromorpho.org -`_ using the NeuroMorpho scheme (``"nm://"``). You can refer to -NeuroMorpho morphologies by their morphology name: - -.. figure:: /images/nm_what.png - :figwidth: 450px - :align: center - -.. tab-set-code:: - - .. literalinclude:: include_morphos.yaml - :language: yaml - :lines: 9-12 - :emphasize-lines: 3-4 - - .. literalinclude:: include_morphos.json - :language: json - :lines: 12-22,41-61 - :emphasize-lines: 7-10,27-28 - - .. literalinclude:: include_morphos.py - :language: python - :lines: 25-36 - :emphasize-lines: 2,10 - - -Morphology intersection ------------------------ - -Now that we have assigned morphologies to our cell types, we can use morphology-based -connection strategies such as :class:`~.connectivity.detailed.voxel_intersection.VoxelIntersection`: - -.. tab-set-code:: - - .. literalinclude:: include_morphos.yaml - :language: yaml - :lines: 54-62 - - .. literalinclude:: include_morphos.json - :language: json - :lines: 72-82 - - .. literalinclude:: include_morphos.py - :language: python - :lines: 43-48 - -.. note:: - - If there's multiple morphologies per cell type, they'll be assigned randomly, unless you - specify a :class:`~.placement.distributor.MorphologyDistributor`. - - -Recap ------ - -.. tab-set-code:: - - .. literalinclude:: include_morphos.yaml - :language: yaml - - .. literalinclude:: include_morphos.json - :language: json - - .. literalinclude:: include_morphos.py - :language: python diff --git a/docs/getting-started/installation.rst b/docs/getting-started/installation.rst index 8bb38f421..dc40476e6 100644 --- a/docs/getting-started/installation.rst +++ b/docs/getting-started/installation.rst @@ -1,17 +1,23 @@ +.. _installation-guide: + ============ Installation ============ - +| The BSB framework is tested and documented for Python versions 3.9, 3.10 and 3.11. +| Support and compatibility are not guaranteed for the other versions of Python. .. tip:: - Use virtual environments! + We highly recommend you to use + `python virtual environments `_ + to install BSB! + The BSB framework can be installed using ``pip``: .. code-block:: bash - pip install "bsb~=4.1" + pip install bsb You can verify that the installation works with: @@ -22,7 +28,7 @@ You can verify that the installation works with: # Create an empty scaffold network with the default configuration. scaffold = Scaffold() -You can now head over to the :doc:`get started `. +You have now the minimal installation required to complete the :doc:`getting started ` section. Parallel support ================ @@ -33,27 +39,60 @@ simulation. To use MPI from Python the `mpi4py `_ package is required, which in turn needs a working MPI implementation installed in your environment. -On your local machine you can install OpenMPI: +On your local machine, first install MPI: + +.. tab-set:: + + .. tab-item:: Ubuntu + :sync: bash + + .. code-block:: bash + + sudo apt-get update && sudo apt-get install -y libopenmpi-dev openmpi-bin + + .. tab-item:: MacOS + :sync: bash + + .. code-block:: bash + + # You need to have xcode installed. + # For Homebrew + brew install openmpi + + # For MacPorts + port install openmpi -.. code-block:: bash - sudo apt-get update && sudo apt-get install -y libopenmpi-dev openmpi-bin + .. tab-item:: Windows -On Windows, install `Microsoft MPI -`_. On -supercomputers it is usually installed already, otherwise contact your administrator. + For Windows, you would need to install C/C++ compiler as well as the + `Microsoft MPI `_ + program. + +On supercomputers it is usually installed already, otherwise contact your administrator. To then install the BSB with parallel MPI support: .. code-block:: bash - pip install "bsb[parallel]~=4.1" + pip install bsb[parallel] + +You can run any bsb command or python scripts with MPI with the ``mpirun`` command, +specifying the number of core to allocate: + +.. code-block:: bash + + # run the BSB reconstruction with 5 cores + mpirun -n 5 bsb compile my-config.json -v 3 + + # run a python script in parallel with 4 cores + mpirun -n 4 python my-script.py Simulator backends ================== -If you'd like to install the scaffold builder for point neuron simulations with -NEST or multicompartmental neuron simulations with NEURON or Arbor use: +If you would like to install the scaffold builder for point neuron simulations with +NEST or multi-compartmental neuron simulations with NEURON or Arbor use: .. code-block:: bash @@ -65,8 +104,22 @@ NEST or multicompartmental neuron simulations with NEURON or Arbor use: # or any combination pip install bsb[arbor,nest,neuron] -.. note:: +.. warning:: + + The NEST simulator is not installed with the `bsb-nest` package and should be set up separately. + It installs the Python tools that the BSB needs to interface NEST. Install NEST following to their + `installation instructions `_ . + +Developer installation +====================== + +.. include:: ../dev/installation.rst + :start-after: start-dev-install + +If you want to have more information about our development guidelines, please read our +:doc:`developer guides` + +What is next +============ - This does not install the simulators themselves. It installs the Python tools that the - BSB needs to support them. Install the simulators separately according to their - respective installation instructions. +You can start learning about the BSB by reading the :doc:`Getting Started section ` \ No newline at end of file diff --git a/docs/getting-started/labels.rst b/docs/getting-started/labels.rst deleted file mode 100644 index ed11fb467..000000000 --- a/docs/getting-started/labels.rst +++ /dev/null @@ -1,70 +0,0 @@ - -!!!!!!!!! CURRENTLY IN EXCLUDEPATTERNS !!!!!!!!! -!! This file is ignored while we restructure !! -!! the documentation !! -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -###### -Labels -###### - -How to label neurons -******************** - -After placing cells inside the scaffold model, it is possible to define postprocessing -functions that modify some features of the scaffold. For instance, it is possible to -define a function that, given a specific cell type, assigns a label to each cell belonging -to that cell type (e.g., subdivide a certain population into different subpopulations -according to their position in the 3D space.) - -Postprocessing functions can be configured in the ``after_placement`` dictionary of the -root node of the configuration file, specifying each postprocessing function with its -name, e.g. "Labels": - -.. code-block:: json - - { - "after_placement": { - "Labels": { - "class": "my_model.postprocessing.LabelCellA", - "targets": ["cell_A"] - } - } - } - -For more information on linking your Python classes to the configuration file see -:doc:`/config/intro`. - -Example of a Python class for labeling neurons. ------------------------------------------------ - -.. code-block:: python - - from bsb import PostProcessingHook - - - class LabelCellA(PostProcessingHook): - ''' Subdivide the cell_A population into 2 subpopulations ''' - - def after_placement(self): - ids = self.scaffold.get_cells_by_type("cell_A")[:, 0] - number_of_cells = len(ids) - subpopulation_1 = ids[0:int(number_of_cells/2)] - subpopulation_2 = ids[int(number_of_cells/2):] - - self.scaffold.label_cells( - subpopulation_1, label="cell_A_type_1", - ) - self.scaffold.label_cells( - subpopulation_2, label="cell_A_type_2", - ) - -In this example, we can see that the ``LabelCellA`` class must inherit from -``PostProcessingHook`` and it must specify a method ``after_placement`` in which the -neural population ``cell_A`` is subdivided into two populations: - -* ``subpopulation_1`` contains the ids of the first half of the population -* ``subpopulation_2`` contains the ids of the second half of the population - -Then, these ids are used to assign the labels ``cell_A_type_1`` and ``cell_A_type_2`` to -``subpopulation_1`` and ``subpopulation_2``, respectively. diff --git a/docs/getting-started/layer.rst b/docs/getting-started/layer.rst deleted file mode 100644 index 5bd1b6dad..000000000 --- a/docs/getting-started/layer.rst +++ /dev/null @@ -1,144 +0,0 @@ - -!!!!!!!!! CURRENTLY IN EXCLUDEPATTERNS !!!!!!!!! -!! This file is ignored while we restructure !! -!! the documentation !! -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - - -###### -Layers -###### - -Layers are partitions of the simulation volume that most placement strategies use as a -reference to place cells in. - -************* -Configuration -************* - -In the root node of the configuration file the ``layers`` dictionary configures all the -layers. The key in the dictionary will become the layer name. A layer configuration -requires only to describe its origin and dimensions. In its simplest form this can be -achieved by providing a ``position`` and ``thickness``. In that case the layer will scale -along with the simulation volume ``X`` and ``Z``. - -Basic usage -=========== - -Configure the following attributes: - -* ``position``: XYZ coordinates of the bottom-left corner, unless ``xz_center`` is set. -* ``thickness``: Height of the layer - -Example -------- - -.. code-block:: json - - { - "layer": { - "granular_layer": { - "position": [0.0, 600.0, 0.0], - "thickness": 150.0 - } - } - } - -Stacking layers -=============== - -Placing layers manually can be sufficient, but when you have layers with dynamic sizes it -can be usefull to automatically rearrange other layers. To do so you can group layers -together in a vertical stack. To stack layers together you need to configure -:ref:`cref_stack` dictionaries in both with the same :ref:`cref_stack_id` and different -:ref:`cref_position_in_stack`. Each stack requires exactly one definition of its -:ref:`cref_stack_position`, which can be supplied in any of the layers it consists of:: - - "partitions": { - "layer_a": { - "thickness": 150.0, - "stack": { - "stack_id": 0, - "position_in_stack": 0, - "position": [10, 0, 100] - } - }, - "layer_b": { - "thickness": 150.0, - "stack": { - "stack_id": 0, - "position_in_stack": 1 - } - } - } - -This will result in a stack of Layer A and B with Layer B on top. Both layers will -have an X and Z origin of ``10`` and ``100``, but the Y of Layer B will be raised from -``0`` with the thickness of Layer A, to ``150``, ending up on top of it. Both Layer A and -B will have X and Z dimensions equal to the simulation volume X and Z. This can be altered -by specifying :ref:`cref_xz_scale`. - -Scaling layers -============== - -Layers by default scale with the simulation volume X and Z. You can change the default -one-to-one ratio by specifying :ref:`cref_xz_scale`:: - - "layer_a": { - "xz_scale": 0.5 - } - -When the XZ size is ``[100, 100]`` layer A will be ``[50, 50]`` instead. You can also use -a list to scale different on the X than on the Z axis:: - - "layer_a": { - "xz_scale": [0.5, 2.0] - } - -Volumetric scaling ------------------- - -Layers can also scale relative to the volume of other layers. To do so set a -:ref:`cref_volume_scale` ratio which will determine how many times larger the volume of -this layer will be than its reference layers. The reference layers can be specified with -:ref:`cref_scale_from_layers`. The shape of the layer will be cubic, unless the -:ref:`cref_volume_dimension_ratio` is specified:: - - "some_layer": { - "volume_scale": 10.0, - "scale_from_layers": ["other_layer"], - # Cube (default): - "volume_dimension_ratio": [1., 1., 1.], - # High pole: - "volume_dimension_ratio": [1., 20., 1.], # Becomes [0.05, 1., 0.05] - # Flat bed: - "volume_dimension_ratio": [20., 1., 20.] - } - -.. note:: - - The ``volume_dimension_ratio`` is normalized to the Y value. - -********* -Scripting -********* - -The value of layers in scripting is usually limited because they only contain spatial -information. - -Retrieving partitions -===================== - -.. code-block:: python - - from bsb import from_json - - config = from_json("mouse_cerebellum.json") - layer = config.partitions.granular_layer - -A :class:`Scaffold <.core.Scaffold>` also stores its configuration: - -.. code-block:: python - - scaffold = from_storage("network.hdf5") - layer = scaffold.partitions.granular_layer diff --git a/docs/getting-started/projects.rst b/docs/getting-started/projects.rst deleted file mode 100644 index fee5b8602..000000000 --- a/docs/getting-started/projects.rst +++ /dev/null @@ -1,110 +0,0 @@ -######## -Projects -######## - -Projects help you keep your models organized, safe, and neat! A project is a folder -containing: - -* The ``pyproject.toml`` Python project settings file: - This file uses the TOML syntax to set configuration values for the BSB and any other - python tools your project uses. - -* One or more configuration files. - -* One or more network files. - -* Your component code. - -You can create projects using the :ref:`bsb.new ` command. - -Settings -======== - -Project settings are contained in the ``pyproject.toml`` file. - -* ``[tools.bsb]``: The root configuration section: - You can set the values of any :doc:`/cli/options` here. - - * ``[tools.bsb.links]``: Contains the :ref:`file link ` definitions. - - * ``[tools.bsb.links."my_network.hdf5"]``: Storage specific file links - In this example for a storage object called "my_network.hdf5" - -.. code-block:: toml - - [tools.bsb] - verbosity = 3 - - [tools.bsb.links] - config = "auto" - - [tools.bsb.links."thalamus.hdf5"] - config = [ "sys", "thalamus.json", "always",] - -.. _file_link: - -File links -========== - -Storage objects can keep copies of configuration and morphologies. These copies might -become outdated during development. To automatically update it, you can specify file -links. - -It is recommended that you only specify links for models that you are actively developing, -to avoid overwriting and losing any unique configs or morphologies of a model. - -Config links ------------- - -Configuration links (``config =``) can be either *fixed* or *automatic*. Fixed config -links will always overwrite the configuration of the model with the contents of the file, -if it exists. Automatic config links do the same, but keep track of the path of the last -saved config file, and stay linked with that file. - -Syntax ------- - -The first argument is the *provider* of the link: ``sys`` for the filesystem (your folder) -``fs`` for the file store of the storage engine (storage engines may have their own way of -storing files). The second argument is the path to the file, and the third argument is -when to update, but is unused! For automatic config links you can simply pass the -``"auto"`` string. - -.. note:: - - Links in ``tools.bsb.links`` are active for all models in your project! It's better to - specify them on a per model basis using the ``tools.bsb.links."my_model_name.hdf5"`` - section. - - -Component code -============== - -It's best practice to keep all of your component code in a subfolder with the same name as -your model. For example, if you're modelling the cerebellum, create a folder called -``cerebellum``. Inside place an ``__init__.py`` file, so that Python can import code from -it. Then you best subdivide your code based on component type, e.g. keep placement -strategies in a file called ``placement.py``. That way, your placement components are -available in your model as ``cerebellum.placement.MyComponent``. It will also make it -easy to distribute your code as a package! - -Version control -=============== - -An often overlooked aspect is version control! Version control helps you track every -change you make as a version of your code, backs up your code, and lets you switch between -versions. The ``git`` protocol is currently the most popular version control, combined -with providers like GitHub or GitLab. - -.. code-block:: diff - - - This was my previous version - + This is my new version - This line was not affected - -This example shows how version control can track every change you make, to undo work, to -try experimental changes, or to work on multiple conflicting features. Every change can be -stored as a version, and backed up in the cloud. - -Projects come with a ``.gitignore`` file, where you can exclude files from being backed -up. Cloud providers won't let neuroscientists upload 100GB network files |:innocent:| diff --git a/docs/getting-started/simulations/analyze_analog_signals.rst b/docs/getting-started/simulations/analyze_analog_signals.rst new file mode 100644 index 000000000..ecad61a37 --- /dev/null +++ b/docs/getting-started/simulations/analyze_analog_signals.rst @@ -0,0 +1,85 @@ +.. _guide_analyze_analog: + +######################################## +Analyze multi-compartment neuron results +######################################## + +.. note:: + + This guide is a continuation of the + :doc:`Simulation guide `. + +After a simulation, BSB will write its outcomes in ``.nio`` files. These files leverage the HDF5 +(Hierarchical Data Format version 5) format, which is widely employed in scientific computing, +engineering, and data analysis. HDF5 files store data in groups (or blocks), in a dictionary +fashion, which allows for efficient management and organization of large datasets. + +The content is read/written using the :doc:`Neo Python package `, a library designed +for handling electrophysiology data. + +In our case, we have only one ``block`` of data since we only ran one simulation. We also have a +unique ``segment`` since all our data is recorded with the same time frame (see +:doc:`Neo docs ` for more details). +Let's extract the simulation block data produced by your last simulation. First, load the content from +your ``simulation-results/NAME_OF_YOUR_NEO_FILE.nio`` file, use the following code: + +.. literalinclude:: /../examples/tutorials/analyze_analog_results.py + :language: python + :lines: 1-8 + +If you followed the previous simulation example, the :guilabel:`analogsignals` attribute in the block +should contain a list of all measured signals: the membrane potential recorded by the +:guilabel:`vrecorder` device and the synapse current obtained from the :guilabel:`synapses_rec` device. + +Each :class:`AnalogSignal ` object contains information about the device name, +the sampling rate, and an array of the simulated measurement values. +Additional information is available through the annotations attribute. + +.. literalinclude:: /../examples/tutorials/analyze_analog_results.py + :language: python + :lines: 10-44 + +This code generates 2 plots: one for a postsynaptic synapse and one for the membrane +potential. The resulting figures are saved in the ``simulation-results`` folder. + +Here are some example of the figures that are produced: + +.. figure:: /images/vrecorder_example.png + :figwidth: 90% + + Example of the membrane potential recorded. + +.. figure:: /images/synapse_recorder_example.png + :figwidth: 90% + + Example of the AMPA synapse current recoded. + +.. rubric:: Next steps: + +.. grid:: 1 1 1 2 + :gutter: 1 + + + .. grid-item-card:: :octicon:`tools;1em;sd-text-warning` Make custom components + :link: guide_components + :link-type: ref + + Learn how to write your own components to e.g. place or connect cells. + + .. grid-item-card:: :octicon:`repo-clone;1em;sd-text-warning` Command-Line Interface + :link: cli-guide + :link-type: ref + + Familiarize yourself with BSB's CLI. + + .. grid-item-card:: :octicon:`gear;1em;sd-text-warning` Learn about components + :link: main-components + :link-type: ref + + Explore more about the main components. + + .. grid-item-card:: :octicon:`device-camera-video;1em;sd-text-warning` Examples + :link: examples + :link-type: ref + + Explore more advanced examples diff --git a/docs/getting-started/simulations/analyze_spikes.rst b/docs/getting-started/simulations/analyze_spikes.rst new file mode 100644 index 000000000..82467f987 --- /dev/null +++ b/docs/getting-started/simulations/analyze_spikes.rst @@ -0,0 +1,87 @@ +.. _guide_analyze_results: + +############################## +Analyze spike activity results +############################## + +.. note:: + + This guide is a continuation of the + :doc:`Simulation guide `. + +After a simulation, BSB will write its outcomes in ``.nio`` files. These files leverage the HDF5 +(Hierarchical Data Format version 5) format, which is widely employed in scientific computing, +engineering, and data analysis. HDF5 files store data in groups (or blocks), in a dictionary +fashion, which allows for efficient management and organization of large datasets. + +The content is read/written using the :doc:`Neo Python package `, a library designed +for handling electrophysiology data. + +Let's extract the spike train data produced by your last simulation. First, load the content from +your ``simulation-results/NAME_OF_YOUR_NEO_FILE.nio`` file, use the following code: + +.. literalinclude:: /../examples/tutorials/analyze_spike_results.py + :language: python + :lines: 1-8 + +In our case, we have only one ``block`` of data since we only ran one simulation. We also have a +unique ``segment`` since all our data is recorded with the same time frame (see +:doc:`Neo docs ` for more details). + +If you followed the previous simulation example, the list ``my_spiketrains`` should contain the +spike trains generated by :guilabel:`background noise`, as well as by :guilabel:`base type` and +:guilabel:`top type` cells. + +Each :class:`SpikeTrain ` object holds information about the device name, +the size of the cell population, and an array of the IDs of spiking cells, accessible through the +annotations attribute: + +.. literalinclude:: /../examples/tutorials/analyze_spike_results.py + :language: python + :lines: 10-23 + +This code should produce one figure with 3 subplots showing the raster plot of spiking activity +for each device created in the simulation. The resulting figure is saved in the +``simulation-results`` folder. The plot for the base type cells should show some spike events: + +.. figure:: /images/raster_base_types.png + :figwidth: 90% + +These events indicates that some cells are receiving more spikes from the generator. + +Various analyses can be perform on spiking data, and several tools facilitate these. +If you want to learn more about spike analysis, we recommend the +`Elephant `_ python package already +integrates `Neo`, and the +`Analysis of Parallel Spike Trains `_ +and the `Neuronal Dynamics `_ books on this topic. + +.. rubric:: Next steps: + +.. grid:: 1 1 1 2 + :gutter: 1 + + + .. grid-item-card:: :octicon:`tools;1em;sd-text-warning` Make custom components + :link: guide_components + :link-type: ref + + Learn how to write your own components to e.g. place or connect cells. + + .. grid-item-card:: :octicon:`tools;1em;sd-text-warning` Command-Line Interface + :link: cli-guide + :link-type: ref + + Familiarize yourself with BSB's CLI. + + .. grid-item-card:: :octicon:`gear;1em;sd-text-warning` Learn about components + :link: main-components + :link-type: ref + + Explore more about the main components. + + .. grid-item-card:: :octicon:`device-camera-video;1em;sd-text-warning` Examples + :link: examples + :link-type: ref + + Explore more advanced examples diff --git a/docs/getting-started/simulations/guide_nest.rst b/docs/getting-started/simulations/guide_nest.rst new file mode 100644 index 000000000..d021154e9 --- /dev/null +++ b/docs/getting-started/simulations/guide_nest.rst @@ -0,0 +1,364 @@ +.. _simulation-guide: + +############################## +Run your first NEST simulation +############################## + +.. note:: + + This guide is a continuation of the + :doc:`Getting Started guide `. + +Install requirements +==================== + +`NEST `_ is one of the supported +simulators of the BSB. +As for the other simulator, its adapter code is stored in a separate repository: +`bsb-neuron `_ + +So, you would need to install it with pip: + +.. code-block:: bash + + pip install bsb-nest + +Unfortunately, the NEST simulator at the moment can not be installed directly by pip, but +fortunately NEST provides +`tutorials `_ +to install it in your python environment. + +Make sure that you can both load BSB and NEST before continuing any further: + +.. code-block:: python + + import nest + import bsb + +Configuration of the simulation +=============================== + +In this tutorial, we assume that you have successfully reconstructed a network with BSB. +We will now guide you through the process of configuring a simulation with BSB for your network. + +We want here to put the circuit reconstructed in a steady state with a low basal activity. + +Let's start by configuring the global simulation parameters. +These include the :guilabel:`simulator` to be used; in our example, we are setting it to +use NEST. +Additionally, you need to define the :guilabel:`resolution` (the time step of the simulation in milliseconds) +and the :guilabel:`duration` (the total length of the simulation in milliseconds). +Therefore, your simulation block should be structured as follows: + +.. tab-set-code:: + + .. code-block:: json + + "simulations": { + "basal_activity": { + "simulator": "nest", + "resolution": 0.1, + "duration": 5000, + "cell_models": { + }, + "connection_models": { + }, + "devices":{ + } + } + + .. code-block:: python + + config.simulations.add("basal_activity", + simulator="nest", + resolution=0.1, + duration=5000, + cell_models={}, + connection_models={}, + devices={} + ) + +.. note:: + + If you are using Python code, we assume that you load your Scaffold and Configuration + from your compiled network file: + + .. code-block:: python + + scaffold = from_storage("network.hdf5") + config = scaffold.configuration + +Cells Models +------------ +For each **cell type population** of your network, you will need to assign a **point neuron model** to +determine how these cells will behave during the simulation (i.e., their inner equations). +The keys given in the :guilabel:`cell_models` should correspond to one of the :guilabel:`cell_types` of your +configuration. + +.. note:: + + If a certain ``cell_type`` does not have a corresponding ``cell_model`` then no cells of that type will be + instantiated in the network. + +Here, we choose one of the simplest NEST models, the +`Integrate-and-Fire neuron model `_: + +.. tab-set-code:: + + .. code-block:: json + + "cell_models": { + "base_type": { + "model": "iaf_cond_alpha" + }, + "top_type": { + "model": "iaf_cond_alpha" + } + }, + + .. code-block:: python + + config.simulations["basal_activity"].cell_models=dict( + base_type={"model":"iaf_cond_alpha"}, + top_type={"model":"iaf_cond_alpha"} + ) + +NEST provides default parameters for each point neuron model, so we do not need to add anything. +Still, you can modify certain parameters, by setting its :guilabel:`constants` dictionary: + +.. tab-set-code:: + + .. code-block:: json + + "cell_models": { + "base_type": { + "model": "iaf_cond_alpha", + "constants": { + "t_ref": 1.5, + "V_m": -62.0 + } + }, + + .. code-block:: python + + config.simulations["basal_activity"].cell_models=dict( + base_type={"model":"iaf_cond_alpha", dict(t_ref=1.5, V_m=-62.0)}, + ) + + +Connection Models +----------------- + +For each connection type of your network, you also need to define a model describing its synapses' dynamics. +Similar to the :guilabel:`cell_models` block, for each :guilabel:`connection_model` you should use a key +that corresponds to a ``ConnectivitySet`` created during reconstruction (as explained in the previous +:doc:`section `). +In this example, we assign the ``static_synapse`` model to the connections :guilabel:`A_to_B`. + +.. tab-set-code:: + + .. code-block:: json + + "connection_models": { + "A_to_B": { + "synapse": { + "model": "static_synapse", + "weight": 100, + "delay": 1 + } + } + }, + + .. code-block:: python + + config.simulations["basal_activity"].connection_models=dict( + A_to_B=dict( + synapse=dict( + model="static_synapse", + weight=100, + delay=1 + ) + ) + ) + +For this model, the synapse model needs ``weight`` and ``delay`` parameters that are set to 100 and 1 ms, +respectively. + +Devices +------- + +In the :guilabel:`devices` block, include all interfaces you wish to use for interacting with the network. +These devices correspond typically to stimulators and measurement instruments. + +Use the :guilabel:`device` key to select the type of device. +We also introduce here the :guilabel:`targetting` concept for the devices: This configuration node allows you to +filter elements of your neuron circuit to which you want to link your devices (see the targetting section on +:doc:`this page ` for more details). + +.. tab-set-code:: + + .. code-block:: json + + "devices": { + "background_noise": { + "device": "poisson_generator", + "rate": 20, + "targetting": { + "strategy": "cell_model", + "cell_models": ["base_type"] + }, + "weight": 40, + "delay": 1 + }, + "base_layer_record": { + "device": "spike_recorder", + "delay": 0.1, + "targetting": { + "strategy": "cell_model", + "cell_models": ["base_type"] + } + }, + "top_layer_record": { + "device": "spike_recorder", + "delay": 0.1, + "targetting": { + "strategy": "cell_model", + "cell_models": ["top_type"] + } + } + } + + .. code-block:: python + + config.simulations["basal_activity"].devices=dict( + general_noise=dict( + device= "poisson_generator", + rate= 20, + targetting= { + "strategy": "cell_model", + "cell_models": ["base_type"] + }, + weight= 40, + delay= 1 + ), + base_layer_record=dict( + device= "spike_recorder", + delay= 0.1, + targetting= { + "strategy": "cell_model", + "cell_models": ["base_type"] + } + ), + top_layer_record=dict( + device= "spike_recorder", + delay= 0.1, + targetting= { + "strategy": "cell_model", + "cell_models": ["top_type"] + } + ) + ) + +In our example, we add a ``poisson_generator`` that simulates cells spiking at ``20`` Hz. +These latter "cells" are each connected one ``top_type`` cell and transmit their spike events with a delay +of `1` ms and the weight of the connection is ``40``. +We also introduce a ``spike_recorder`` to store the spike events of the cell populations. + +Final configuration file +------------------------ + +.. tab-set-code:: + + .. literalinclude:: ../configs/guide-nest.yaml + :language: yaml + + .. literalinclude:: ../configs/guide-nest.json + :language: json + + .. literalinclude:: /../examples/tutorials/nest-simulation.py + :language: python + :lines: 1-45 + + +Running the Simulation +====================== + +Simulations are separated from the reconstruction pipeline (see the +:doc:`top level guide `), +which means you do not need to recompile your network to add a simulation to your stored Configuration. +In this example, we only modified the ``Configuration`` in the :guilabel:`simulations` block but this updates were +not been saved in the network file. +So, you need to update your file, using either the ``reconfigure`` command or the ``store_active_config`` method. + +.. tab-set-code:: + + .. code-block:: bash + + bsb reconfigure network.hdf5 network_configuration.json + + .. code-block:: python + + storage = scaffold.storage + storage.store_active_config(config) + +Once this is done, create a folder in which to store your simulation results: + +.. code-block:: bash + + mkdir simulation-results + +You can now run your simulation: + +.. tab-set-code:: + + .. code-block:: bash + + bsb simulate network.hdf5 basal_activity -o simulation-results + + .. code-block:: python + + from bsb import from_storage + + scaffold = from_storage("network.hdf5") + result = scaffold.run_simulation("basal_activity") + result.write("simulation-results/basal_activity.nio", "ow") + +The results of the simulation will be stored in the ``"simulation-results"`` folder. + +.. note:: + If you run the simulation with the command line interface, the name of the output nio file is randomized by BSB. + +For more detailed information about simulation modules, +please refer to the :doc:`simulation section `. + +Congratulations, you simulated your first BSB reconstructed network with NEST! + +.. rubric:: Next steps: + +.. grid:: 1 1 1 2 + :gutter: 1 + + + .. grid-item-card:: :octicon:`fold-up;1em;sd-text-warning` Analyze your Results + :link: guide_analyze_results + :link-type: ref + + How to extract your data. + + .. grid-item-card:: :octicon:`tools;1em;sd-text-warning` Make custom components + :link: guide_components + :link-type: ref + + Learn how to write your own components to e.g. place or connect cells. + + .. grid-item-card:: :octicon:`gear;1em;sd-text-warning` Learn about components + :link: main-components + :link-type: ref + + Explore more about the main components. + + .. grid-item-card:: :octicon:`device-camera-video;1em;sd-text-warning` Examples + :link: examples + :link-type: ref + + Explore more advanced examples diff --git a/docs/getting-started/simulations/guide_neuron.rst b/docs/getting-started/simulations/guide_neuron.rst new file mode 100644 index 000000000..70f9c0604 --- /dev/null +++ b/docs/getting-started/simulations/guide_neuron.rst @@ -0,0 +1,274 @@ +################################ +Run your first NEURON simulation +################################ + +.. note:: + + This guide uses notions on the BSB reconstructions that are explained in + :doc:`Getting Started guide `. + +In this tutorial, we present how to configure a NEURON simulation for a multi-compartment +neuron network. + +Install requirements +==================== + +`NEURON `_ is one of the supported simulators of the +BSB. As for the other simulator, its adapter code is stored in a separate repository: +`bsb-neuron `_ + +So, you would need to install it with pip: + +.. code-block:: bash + + pip install bsb-neuron[parallel] + +We will also need some model files for NEURON which you can obtain and link to bsb like so: + +.. code-block:: bash + + pip install dbbs-catalogue + +BSB reconstruction for this tutorial +==================================== + +For this example, we will build a network consisting of a single ``layer`` of +``stellate_cells`` connected through axon-dendrite overlap, using the strategy +:doc:`VoxelIntersection `. +The morphology of a custom stellate cell is provided +:download:`here `. +Please save this file in your project folder as ``StellateCell.swc``. + +The network configuration should be as follows: + +.. tab-set-code:: + + .. literalinclude:: /getting-started/configs/guide-neuron.json + :language: json + :lines: 1-68 + + .. literalinclude:: /../examples/tutorials/neuron-simulation.py + :language: python + :lines: 1-54 + +Copy the configuration in you favorite format and put it in the project folder +as ``neuron-simulation.json`` or as ``neuron-simulation.py`` + +Then, the configuration should be compiled: + +.. code-block:: bash + + bsb compile --verbosity 3 neuron-simulation.json + # or + python neuron-simulation.py + +Now we have to configure the simulation block. + +Configuration of the simulation +=============================== + +We want here to see the postsynaptic response of our cells upon receiving an +excitatory input. Each cell will receive one spike on their dendrites and +we will check its effect on the postsynaptic current. + +Let's start by configuring the global simulation parameters: first of all, +define a :guilabel:`simulator`; in our example, we are setting it to +use NEURON. +Then you need to define the :guilabel:`resolution` (the time step of the simulation in +milliseconds), the :guilabel:`duration` (the total length of the simulation in +milliseconds) and the :guilabel:`temperature` (celsius unit). + +.. tab-set-code:: + + .. literalinclude:: /getting-started/configs/guide-neuron.json + :language: json + :lines: 69-74 + + .. literalinclude:: /../examples/tutorials/neuron-simulation.py + :language: python + :lines: 56-61 + +Cell Models +----------- + +For each **cell type** population in your network, you must assign a **NEURON model** +to define the cell's behavior. + +In short, these models encapsulate all the specifications for ion channels and synapses +covering all compartments of the neuron. Discussing NEURON model characteristics is +beyond the scope of this guide; therefore, a ready-to-use Stellate model is provided +:download:`here `. Save it as a ``Stellate.py`` +file in your project folder and review its contents. + +Within the model file, you will find a model definition called +:guilabel:`definitionStellate`, which includes all the customized parameters. This is +the object you will refer to in your configuration. Note also that the parameters for +the ion channel mechanisms are in the attribute :guilabel:`cable_types`. + + +.. tab-set-code:: + + .. literalinclude:: /getting-started/configs/guide-neuron.json + :language: json + :lines: 75-80 + + .. literalinclude:: /../examples/tutorials/neuron-simulation.py + :language: python + :lines: 63-65 + +Connection Models +----------------- + +For each connection type of your network, you also need to provide a NEURON model +describing its synapses' dynamics. Similar to the :guilabel:`cell_models` block, for +each :guilabel:`connection_model` you should use a key that corresponds to a +``ConnectivitySet`` created during reconstruction (as explained in the previous +:doc:`section `). +In this example, to the :guilabel:`stellate_to_stellate` connection is assigned a +reference to one of the :guilabel:`synapse_types`, defined in the ``Stellate.py`` +model file: :guilabel:`GABA`. + +.. tab-set-code:: + + .. literalinclude:: /getting-started/configs/guide-neuron.json + :language: json + :lines: 81-86 + + .. literalinclude:: /../examples/tutorials/neuron-simulation.py + :language: python + :lines: 66-76 + +To each synapse is assigned a :guilabel:`weight` of 0.001 and a :guilabel:`delay` (ms) of 1. + +Devices +------- + +In the :guilabel:`devices` block, include all interfaces you wish to use for interacting with +the network. +These devices correspond typically to stimulators and measurement instruments. + +Use the :guilabel:`device` key to select the type of device. +We also introduce here the :guilabel:`targetting` concept for the devices: This configuration +node allows you to filter elements of your neuron circuit to which you want to link your +devices (see the targetting section on :doc:`this page ` for more details). + +.. tab-set-code:: + + .. literalinclude:: /getting-started/configs/guide-neuron.json + :language: json + :lines: 87-127 + + .. literalinclude:: /../examples/tutorials/neuron-simulation.py + :language: python + :lines: 77-110 + +In this example, a :guilabel:`spike_generator` is used to produce ``1`` spike (attribute +:guilabel:`number`) at ``9`` ms and send it to the cell with ID ``0`` (using the +:guilabel:`targetting`) after ``1`` ms of delay and a :guilabel:`weight` of ``0.01``. +The stimulus targets the ``AMPA`` and ``NMDA`` (excitatory) synapses located on the ``dendrites`` +of the cell. + +The membrane potential is recorded using a :guilabel:`voltage_recorder`, which collects the +signal from within a ``100`` µm radius sphere at the center of the circuit. Hence, not all cells +might be recorded. + +Synapse activity is monitored with a :guilabel:`synapse_recorder` for all the synaptic types on +the cell's dendrites, within the same spherical region. Here too, not all synapses might be recorded. + +Final configuration file +------------------------ + +.. tab-set-code:: + + + .. literalinclude:: /getting-started/configs/guide-neuron.json + :language: json + + .. literalinclude:: /../examples/tutorials/neuron-simulation.py + :language: python + +Running the Simulation +---------------------- + +Simulations are separated from the reconstruction pipeline (see the +:doc:`top level guide `), +which means you do not need to recompile your network to add a simulation to your stored Configuration. +In this example, we only modified the ``Configuration`` in the :guilabel:`simulations` block but this updates were +not been saved in the network file. +So, you need to update your file, using either the ``reconfigure`` command or the ``store_active_config`` method. + +.. tab-set-code:: + + .. code-block:: bash + + bsb reconfigure my_network.hdf5 neuron-simulation.json + + .. code-block:: python + + storage = scaffold.storage + storage.store_active_config(config) + +Once this is done, create a folder in which to store your simulation results: + +.. code-block:: bash + + mkdir simulation-results + +You can now run your simulation: + +.. tab-set-code:: + + .. code-block:: bash + + bsb simulate my_network.hdf5 neuronsim -o simulation-results + + .. code-block:: python + + from bsb import from_storage + + scaffold = from_storage("my_network.hdf5") + result = scaffold.run_simulation("neuronsim") + result.write("simulation-results/neuronsimulation.nio", "ow") + +The results of the simulation will be stored in the ``"simulation-results"`` folder. + +.. note:: + If you run the simulation with the command line interface, the name of the output nio file is randomized by BSB. + +For more detailed information about simulation modules, +please refer to the :doc:`simulation section `. + +Congratulations, you simulated your first BSB reconstructed network with NEURON! + +.. rubric:: Next steps: + +.. grid:: 1 1 1 2 + :gutter: 1 + + + .. grid-item-card:: :octicon:`fold-up;1em;sd-text-warning` Analyze your Results + :link: analyze_analog_signals + :link-type: doc + + How to extract your data. + + .. grid-item-card:: :octicon:`tools;1em;sd-text-warning` Make custom components + :link: guide_components + :link-type: ref + + Learn how to write your own components to e.g. place or connect cells. + + .. grid-item-card:: :octicon:`gear;1em;sd-text-warning` Learn about components + :link: main-components + :link-type: ref + + Explore more about the main components. + + .. grid-item-card:: :octicon:`device-camera-video;1em;sd-text-warning` Examples + :link: examples + :link-type: ref + + Explore more advanced examples + + + diff --git a/docs/getting-started/simulations/include_morphos.rst b/docs/getting-started/simulations/include_morphos.rst new file mode 100644 index 000000000..c395bfc2c --- /dev/null +++ b/docs/getting-started/simulations/include_morphos.rst @@ -0,0 +1,222 @@ +.. _include_morphos: + +################### +Adding morphologies +################### + +.. note:: + + This guide is a continuation of the + :doc:`Getting Started guide `. + +Previously, we constructed a stacked double layer topology, with 2 cell types. We then +connected these cell type populations in an all-to-all fashion. + +In this tutorial, we are going to assign :doc:`morphologies ` to our +cells, and connects the cells based on the intersection of their morphologies! +You will learn how to load morphologies from local files or to fetch +from remote sources, like NeuroMorpho, using the BSB. + +| But first, we need actual morphology files. +| Download your 2 favorite morphologies from `NeuroMorpho `_ + in the swc file format and save them as ``neuron_A.swc`` and ``neuron2.swc`` in your + project folder. + + +Using local files +================= + +:guilabel:`morphologies` is a list component of the BSB configuration responsible +to fetch and load morphology files. Here is the minimal configuration example to add a +morphology to the scaffold: + +.. tab-set-code:: + + .. literalinclude:: ../configs/include_morphos.yaml + :language: yaml + :lines: 9-10 + + .. code-block:: json + + "morphologies": ["neuron_A.swc"] + + .. code-block:: python + + config.morphologies = ["neuron_A.swc"] + +In this case, a morphology is created from ``neuron_A.swc`` and given the name ``"neuron_A"``. +By default the name assigned to the morphology is the file name without its extension (here ``.swc``). + +Next, we need to associate this morphology to one cell type, here the ``base_type``, by +referencing it by name in :guilabel:`cell_types.base_type.spatial.morphologies`: + +.. tab-set-code:: + + .. literalinclude:: ../configs/include_morphos.yaml + :language: yaml + :lines: 28-34 + :emphasize-lines: 6-7 + + .. literalinclude:: ../configs/include_morphos.json + :language: json + :lines: 35-42 + :emphasize-lines: 6 + + .. literalinclude:: /../examples/tutorials/include_morphos.py + :language: python + :lines: 27-34 + :emphasize-lines: 6 + +.. note:: + + If there are multiple morphologies per cell type, they will be assigned randomly, unless you + specify a :ref:`MorphologyDistributor `. + +Let's add the second morphology but this time we will change its name with a morphology node +containing the attributes :guilabel:`name` and :guilabel:`file`: + +.. tab-set-code:: + + .. literalinclude:: ../configs/include_morphos.yaml + :language: yaml + :lines: 9-12 + :emphasize-lines: 3-4 + + .. literalinclude:: ../configs/include_morphos.json + :language: json + :lines: 12-17 + :emphasize-lines: 3-6 + + .. literalinclude:: /../examples/tutorials/include_morphos.py + :language: python + :lines: 22-25 + :emphasize-lines: 3 + +It is also possible to add a pipeline to perform transformations on the loaded +morphology. Pipelines can be added with a :guilabel:`pipeline` list component to the +morphology node. +Each item in the list may either be a string reference to a method of the +:class:`~bsb.morphologies.Morphology` class or an importable function. +If the function requires parameters, use a node with the function reference placed in the +:guilabel:`func` attribute, and a :guilabel:`parameters` list. + +Here is an example what that would look like: + +.. tab-set-code:: + + .. code-block:: yaml + + morphologies: + - file: my_neuron.swc + pipeline: + - center + - my_module.add_axon + - func: rotate + rotation: [20, 0, 20] + + .. code-block:: json + + "morphologies": [ + { + "file": "my_neuron.swc", + "pipeline": [ + "center", + "my_module.add_axon", + { + "func": "rotate", + "rotation": [20, 0, 20] + }, + ], + } + ] + + .. code-block:: python + + config.morphologies = [ + dict( + file= "my_neuron.swc", + pipeline=[ + "center", + "my_module.add_axon", + dict(func="rotate", rotation=[20, 0, 20]) + ] + ) + ] + +In this case, we created a pipeline of 3 steps: + +1. Reset the origin of the morphology, using the :meth:`~.morphologies.SubTree.center` function from the + Morphology class. +2. Run the :guilabel:`add_axon` function from the external file `my_module.py` +3. Rotate the morphology by 20 degrees along the x and z axis, using the + :meth:`~.morphologies.SubTree.rotate` function from the Morphology class. + +.. note:: + + Any additional keys given in a pipeline step, such as :guilabel:`rotation` in the + example, are passed to the function as keyword arguments. + + + +Morphology intersection +======================= + +Now that we have assigned morphologies to our cell types, we can use morphology-based +connection strategies such as :doc:`VoxelIntersection `: + +.. tab-set-code:: + + .. literalinclude:: ../configs/include_morphos.yaml + :language: yaml + :lines: 55-63 + + .. literalinclude:: ../configs/include_morphos.json + :language: json + :lines: 65-75 + + .. literalinclude:: /../examples/tutorials/include_morphos.py + :language: python + :lines: 59-64 + +Note also that with Voxel Intersection, +you can specify which parts of the morphologies should create contacts (e.g, dendrites and axons): + +.. code-block:: json + + "connectivity": { + "A_to_B": { + "strategy": "bsb.connectivity.VoxelIntersection", + "presynaptic": { + "cell_types": ["base_type"], + "morphology_labels": ["axon"] + }, + "postsynaptic": { + "cell_types": ["top_type"], + "morphology_labels": ["dendrites"] + } + } + } + +This happens thanks to the labels that are attached to your morphology points. + +.. tip:: + Do not forget to recompile your network if you are modifying the configuration file. + +Final configuration file +======================== + +.. tab-set-code:: + + .. literalinclude:: ../configs/include_morphos.yaml + :language: yaml + + .. literalinclude:: ../configs/include_morphos.json + :language: json + + .. literalinclude:: /../examples/tutorials/include_morphos.py + :language: python + +What is next? +============= + +Next tutorial is on :doc:`running a simulation ` of your network. diff --git a/docs/getting-started/simulations/toc_multi_comp.rst b/docs/getting-started/simulations/toc_multi_comp.rst new file mode 100644 index 000000000..ab094319e --- /dev/null +++ b/docs/getting-started/simulations/toc_multi_comp.rst @@ -0,0 +1,10 @@ +Guides on Multi-compartment neurons modeling +============================================ + +.. toctree:: + :maxdepth: 2 + :caption: Multi-compartment neuron simulations + + include_morphos + guide_neuron + analyze_analog_signals diff --git a/docs/getting-started/simulations/toc_point_neurons.rst b/docs/getting-started/simulations/toc_point_neurons.rst new file mode 100644 index 000000000..d53a06729 --- /dev/null +++ b/docs/getting-started/simulations/toc_point_neurons.rst @@ -0,0 +1,9 @@ +Guides on Point neurons simulation +================================== + +.. toctree:: + :maxdepth: 2 + :caption: Point neuron simulations + + guide_nest + analyze_spikes \ No newline at end of file diff --git a/docs/getting-started/toc.rst b/docs/getting-started/toc.rst index a17c3db60..2c42eefd8 100644 --- a/docs/getting-started/toc.rst +++ b/docs/getting-started/toc.rst @@ -2,10 +2,12 @@ Getting Started =============== .. toctree:: - :maxdepth: 1 + :maxdepth: 2 :caption: Getting Started - getting-started - include_morphos + top-level-guide + getting-started_reconstruction basics - projects + simulations/toc_point_neurons + simulations/toc_multi_comp + guide_components diff --git a/docs/getting-started/top-level-guide.rst b/docs/getting-started/top-level-guide.rst index d7d59c3d0..b70dba4f2 100644 --- a/docs/getting-started/top-level-guide.rst +++ b/docs/getting-started/top-level-guide.rst @@ -1,56 +1,91 @@ +.. _get-started: + =============== Top Level Guide =============== -.. figure:: /images/bsb_toplevel.png +The Brain Scaffold Builder is a **framework** that allows you to create workflows to +reconstruct and simulate neural network models. + +.. figure:: /images/workflow.png :figwidth: 90% :figclass: only-light -.. figure:: /images/bsb_toplevel_dark.png +.. figure:: /images/workflow_dark.png :figwidth: 90% :figclass: only-dark -The Brain **Scaffold** Builder revolves around the :class:`~.core.Scaffold` object. A -scaffold ties together all the information in the :class:`~.config.Configuration` with the -:class:`~.storage.Storage`. The configuration contains your model description, while the -storage contains your model data, like concrete cell positions or connections. +A typical workflow of the BSB works as follows: -Using the scaffold object one can turn the abstract model configuration into a concrete -storage object full of neuroscience. For it to do so, the configuration needs to describe -which steps to take to place cells, called ``Placement``, which steps to take to connect -cells, called ``Connectivity``, and what representations to use during ``Simulation`` for -those cells and connections. All of these configurable objects can be accessed from the -scaffold object, under ``network.placement``, ``network.connectivity``, -``network.simulations``, ... - -Using the scaffold object, you can inspect the data in the storage by using the -:class:`~.storage.interfaces.PlacementSet` and -:class:`~.storage.interfaces.ConnectivitySet` APIs. PlacementSets can be obtained with -:meth:`scaffold.get_placement_set <.core.Scaffold.get_placement_set>`, and -ConnectivitySets with :meth:`scaffold.get_connectivity_set -<.core.Scaffold.get_placement_set>`. - -Ultimately this is the goal of the entire framework: To let you explicitly define every -component and parameter that is a part of your model, and all its parameters, in such a -way that a single CLI command, ``bsb compile``, can turn your configuration into a -reconstructed biophysically detailed large scale neural network. - -Workflow +1. The user provides a configuration that describes the network they want to reconstruct + and simulate. + + It is interpreted by BSB as a list of tasks to perform. +2. The BSB creates the topology of the network (i.e., its shape and size). +3. The BSB places cells within the network, following a defined strategy. +4. The BSB connects the aforementioned cells according to connectivity rules. +5. The final circuit is simulated with an external simulator, with the BSB serving as an + intermediate to deal with the model. + +For each step of this workflow, the BSB also provides a list of predefined strategies and +tools to create your own with as little difficulty as possible. Hence, for most of your +reconstructions, you may not have to code! + +The BSB acts here as a **black box** with an extended interface to allow you to properly +parametrize it. + +Scaffold ======== -.. figure:: /images/workflow.png +.. figure:: /images/bsb_toplevel.png :figwidth: 90% :figclass: only-light -.. figure:: /images/workflow_dark.png +.. figure:: /images/bsb_toplevel_dark.png :figwidth: 90% :figclass: only-dark +The Brain **Scaffold** Builder revolves around the :doc:`Scaffold ` object. A +scaffold ties together all the information in the :doc:`Configuration ` with the +:doc:`Storage `. The configuration contains your model description, while the +storage contains your model data, like concrete cell positions or connections. + +Using the scaffold object, one can turn the abstract model configuration into a concrete +storage object full of neuroscience. + +To do so, the configuration leverages configurable objects to describe the underlying neural network, +called **components**. Components define which methods and parameters should be used to reconstruct and +simulate the network. The ones that you would probably employ the most are: + +* :guilabel:`Topology` defines the shape and volume of your network, + (it is composed of :guilabel:`Regions` and :guilabel:`Partitions`), +* :guilabel:`Cell Types` allows you to estimate the cellular composition + (and attach :guilabel:`Morphologies` when needed), +* :guilabel:`Placement` places cells, +* :guilabel:`Connectivity` connect cells, +* :guilabel:`Simulation` simulates the resulting network. + +Assembled together these components form a linear workflow that will build your network from scratch. + +| Through this interface, lies the ultimate goal of the entire framework: +| To let you explicitly define every component that is a part of your model, and all its related parameters, + in such a way that a single CLI command, ``bsb compile``, can turn your configuration into a reconstructed + biophysically detailed large scale neural network. + .. _config: Configuration ============= +The ``Configuration`` object is organized as a hierarchical tree. +From the root, the main blocks branch off, consisting of nine main components: :guilabel:`network`, +:guilabel:`storage`, :guilabel:`regions`, :guilabel:`partitions`, :guilabel:`morphologies`, :guilabel:`cell_types`, +:guilabel:`placement`, :guilabel:`connectivity`, and :guilabel:`simulation`. +These blocks contain nested sub-blocks that form the network. +Additionally, there are two optional components: :guilabel:`after_placement` and :guilabel:`after_connectivity`, +where users can define specific hooks to run within the workflow. +All these components will be described in more detail in the following sections. + .. figure:: /images/configuration.png :figwidth: 90% :figclass: only-light @@ -58,3 +93,12 @@ Configuration .. figure:: /images/configuration_dark.png :figwidth: 90% :figclass: only-dark + +The configuration object contains only the description of the model, not its implementation (python code) +nor its data (stored in the storage object). +It can therefore be stored in a separate file (usually Json or Yaml) that can be easily interpreted by BSB. + +What is next? +============= +We are now going to introduce the different components through a tutorial, explaining how to build +:doc:`your first network ` . diff --git a/docs/guides/packaging.rst b/docs/guides/packaging.rst deleted file mode 100644 index f51fe9d90..000000000 --- a/docs/guides/packaging.rst +++ /dev/null @@ -1,7 +0,0 @@ -=================== -BSB Packaging Guide -=================== - -.. todo:: - - Well, writing this guide |:grimacing:| diff --git a/docs/guides/toc.rst b/docs/guides/toc.rst deleted file mode 100644 index ee7e9aefe..000000000 --- a/docs/guides/toc.rst +++ /dev/null @@ -1,9 +0,0 @@ -Guides -====== - -.. toctree:: - :maxdepth: 1 - :caption: Getting Started - - components - packaging diff --git a/docs/images/plot_alpha.png b/docs/images/plot_alpha.png new file mode 100644 index 0000000000000000000000000000000000000000..c29bf0d2b0cf22559cf1b89c9cb82ed614ac2aa2 GIT binary patch literal 50482 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 literal 0 HcmV?d00001 diff --git a/docs/images/raster_base_types.png b/docs/images/raster_base_types.png new file mode 100644 index 0000000000000000000000000000000000000000..f964eafceb3acd2667c8dd11392f303b1221da15 GIT binary patch literal 50540 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

hT^n7 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%0AS?uYS< zxLD~U-p|vLfC*?b{39tQz-P_0WU!!;9|T$rFTx%^4%o(JY}5YL;xpgB#%DL>E(>&w z(=-NW--#{oN$^JXAt<2~DK$#Ivj5F~mB|v@ zLnl!t-TfZ<*ra72Znfy-_3neA@f%gY&B+fLsQDfwa*S%mJU~&#ge*($WJFRx$zh6%tEj7WaJUi4oq1@CS1JD=Rf|#JDA1( z8X{MP$|Fy_n=lOWP)Y;l6m;d-U?to_O#2)mtOdMj?FDBW>G&5Hlc*-M*J|NKviM}c z?Lqy;eLwYX(P$<5NdwTrq(uVGQYX5-90{%?MDWSjWQn9H&}}bME>5GR!Tu?iBBP>0 z%6#vRfpJr*qL$#{rbZ^1dhI6tf(M42g0O80*#}YYAn`B>90%^ zE6Zdh5X7_@h0ez?`66>HKl3@A9W)8;(Z)3hv@FT8Y-tVw@ag^0wjJ8)Xuq)n#-b-Y zKVQGjm3jOX?-kwo8Dn>PF>Poi&1a!oMr}Y;3vxRxLMdhBF4EwqREztyW3G5eVUoxecra6YlJf8JBn!Lmwr7~+0qeVJ~7JZlh^MttZagJt|WlOX)47mCyuRS|a?jJ3t6p@swza zft{?UI=ZdXrkx>#+aSfJ0Moz%o0^)4uSZo>nqSdup)#sRwb|xiPi3_pOes*JF$8OB zHlVW9F%)4+Ef+5_Dd8BveuCP+X{P5;^!;Q`VmSUt+VY_1;9fO+1X@%t1J-~rc}lT&R-2di*-?ItjLo{5=~|qY zF2A%num#Gu3y>v|hH$ zu)?Q_LrYxuf3%zfDjltp5GZS8JDgoqZBY<#wgpDU*H9B9WUScwzz%W9k2IgHJ!gl$ zPE6sLuf<8hO)=tBRu06;RTHuMWn|j$ol+I6%NRx*EsL4E(5OcV4IhAH+7eV4%>aWW zz?xqz-}DJ3-m(w9+nU!$tYBae`pC3^$sRl#sHN-IaaRM~u1wHb^0JtQhuXZ> z@wIPJCGeTdOYHVOs7bF3*jZ>Lh`~3yf}(k3 zvlOLWcK*r+0Ae%JC5WwoxjpbP)tbmjuXF=c}N88uk` zcFUz|BQmRLR~v3$DEM1yfl?iR92wl&E7bvbr9)goLTG)5ppYWbAKtXg;j==ZsyF`@ zObg{yzeAE>-pv{ZM_CnX_}$0MhG&0P_}>9ya&FPh+aLJbuqCcPq!3G>1wG(@#LqJK zOLZ6zZWjlc%O8U+@u3z)c-v*D4d%DItgD5>XkxmfCR)m<2r+Vx>8E0`Curq8|6SCQ zj!zK3%nx&STtvO2MkvmtQcwI8t2rmTZY7h2v#9=*wXFPK+^o2tm{1S)XYH>yq5FWu zGXECtQxoc15IW0=PXez79Z$>!vj{nve+w)Jjpl)#07KMQcA=OxS>j`b&!M9w{quGm zM>;37Yu2xOh*%++wCW>%YrBThevAp0s^)F4658czBf7{10*T>#X=ItZ`qr7x`?^eejl(C~xd{{xD z(oMej9uR=T{v8km?<(?Spz^XW{}-SoJ~nd;q7UxnKNK<}r^8qob}hqb65E<-b6?H9 zVc6l!>HcTWG?ILYC$U(+RqM}MCWfqGB5$nn0ze-;ysq$h%ua)nR9?%%JJFQRgi%!% z0NE`qDeb$OtZ597oSst`ZL&X5E|jTw2{E;&S{RaHaMaqWYHW(B|@X`f7LDqYVl;!p{k8yn<>k`=^-6Y6BWx3ek3avUz#eBd~eQCOEf=a099g_aTT2SAob<(slLH z&g$ePY>$^wzZ8Ojf7fI6+G>r7`|^jZ#cZ$tz7jvssZN^pVeV(>OU>al1QnDirnzg4 z@$l~C6O{*B2k_J@ya_)8nz=2#ZBXw?l`j^r4>NUSU=87MGO55_FxDgBM9sZ8p_M`M ziCk)6#Aw20)Zl9m=6B=W2k+l8Aw05O;}6H$>^6eGs3Co#PeZhc+GuG~3W@PEt>i@A zq(*X@;XsTEYNcL!>gm^;)SM{vsA77owgzq(Q?(U=_Ef-lTam7U)-NjQd2V)xfMcF zdNjCEGFN~p$|q{u0;rzuWQ(-oB{W;+jvgdg=ZQ0VsI*8hqEn-r3Fg9}j*wbWqpk6!DtfOOOhlW2Z|*=i#e$2ZPY$iQTeJf!em*iazW@? zqB8<(TB){T@0Ghbsh%&Ud;UlhrqNofhZzg8Ml|QZZ86Q*bkznT%Wfll_E%j{Od%At zRo47>-)?b_0u@E*itcTk}iKtGm?$w!{f|h=%Wa>itvghfxf;`=P-h7uCJS3sD)2j6?~BHB*w_Pq-yo zF%wiU+oG0lfR0N+KlR#9zFmWf&PvlvGmTnbFH(sgJpt`$F~m-)YhGg51b?2;9%fRLW?VwTHo<@Sw3hi~U@*B}p?7HLzmBbM9u4tW%uR{hnPvpvKIT~ZEEgScTU31iVU<9~*0@J=lr09(iL5z8|* zBxgeH!NXO84Bu*-v~?iz?8C%o5@$U9bgIOom1uwkM-RGiQZ zXi>5!aKVN|dEoZN6;FSV!PmE})(DyX7oUkesQJ)8HZQ^J*&IJKBt5XA#jT^G!{zzKog7I_Wl}c`ESSzRxyGTQ4MF^T>*3+Yg z)56!6o3qBR%vTW|m{q9i(^h5fciMnKWi{!7wDGKZVR6|`-yn7~}3(KeJJ*L|Tm-~Oe98gg> z-t0MH;eiP~%@BnostJdLQ_;tU|HMd-71lypXDezjvM90;LHWZKdmkYbx>{|U$;**L zKfSN*>4rsHF%Mf7tZ=d{S2vpPZsG@C1Fx?C9-lN1sV|&(60#?sKRUN~>qh$7ez?)k z0+5H%;K1+7rBv1is>iD5t$&;1Z^bm8{4LLZOT9`+UMvX zJn~-uO{>8PQQNa;kGB;=`b4Wd1$X9sEl(CGpFTzUKZh~jm>74iWwTY2hR~K@((gvS zbiw287H+(pQFFH7XtSfUh6LDk&y1|}E=~X8E$}$ixZ_(Olj?T(c0xkJJ;XGFhq|OE zo=JQ0`Fy2vn#FF1134O)g8!6F8-O>EV3x}{QghF)w%i4pOS)rF)@bV#St6teg=v4IVR8ZV5T#g(*g+-bpl&{RYOSS1+VUuN&cCXWT>I zbp~D_^(Iv>1k)nBeypIry?<0c?#PY}j%}qjLOhvxDhs;xC%hG&2u@CTIEH1KE2Uvq zaRa-?H>$eyJs&^Gc?OzWOY(PeE+&9F?;2MRON@gIbc+VYr73r*vnSA&pDfHEB2IR{ zz}T3ykeDCvf^F-9eMlO*4LS2u=)3z)**X|&mY3coF%5Pa8{1j+%--Hp#2Z;6IgkI?BrH9gqOS^SNf5f7xr9K1=mq% zBMd+>-O%x)wTE6rc0-xfE_h-W8dyniAR8hDhZtdz2FQU_FYh~)c;hP-$?R<>rA0?NmTqF5|Ll9MFqa*{*|& zk+x*dkWRl_t-#1uwNawsQ8q+V#$!CU5AoP%=idk8S;(ci?AIc7zT#w@wwU^clj6KJfKIp!1 z;X;gz=+UR%?M^cuV*84>BYqsdbu@8hPGB)L5#@;AsrF%?$qPHfHL^m10M|F##U zZ?mSwA)m=#mmQ!EBXnYV-%tcMTu zW~L#pf&9qnvLWIe5%*fH2dWR@)fvvE6vE;~2}i}*AqxYsybT4!I=%BS8W$QH7q>yJ zxUOy@GLE!0)HcG@2Vi5T@jUN;^B$uRBRPzv?GGlF;X|T4gFU}Vt*6sDQxPtu!a9)D z7Czm1VQ>7X+%Rr(?su~maU{__;9+U$B)SvLi|$~RJqP3Wl)QD-WommtW&OTUvs>oO z{YqHu7#GFwbv!UI z$4Pg3h(GB5dkh6o9gkg@B0se+Hb=s98}S=Cex9u<33wp1v(-4ra3OK$Y+#Y2Fa!l1 zBHvY*x03|i&Yd~yd!24)WMl~aE)3RtdL|>L$v>qbc+Tu9zYFDNA^z(Q-CafuDOs$m zvGID5yLV@|$AS>oLzkwnK+*S171Q`Jo@e|~MlruZabn?%q*98QoR;F$hlN?@GO6&$MA zREW-`)uh-5^2#bw`D@&!gdfGQ$U;A`7h?)73WLTYx0WAeXV{@9DGY#Z-7 zgdq07kod%LOZ{o36IzjgtOWem4@nBJ2liUlBFN>a;K1jK2`gsrr5Y$p>UeX)f}Q8) z$K|9_3mLaA@wjGid8NVmKw*0PG*!7#SQZFPz0k7=^f86Pm9}`FW2_>dP!CcPh+Vko zU8|l83ZSXg3YA#n=H1V-86gHPmy1}b9&JBu-Mpz^S`TTkVNxF?H?|%cn&AVhr&3wGYRJlICEMOlc_5OHeWIGGrq@z zw{zFGu$6O)>CIcnDzk*t-*CHy$~DQY@Tk4$pmI;?g32OUonUiALkFRbFGBqI!`ZI^_D=CceHa zZ{YW}WjsbZ)^^(TQQy=&Lx%$-R<SsybRA} zQ3d7ZA^z>H$3hS%pZbPal1m+@SW>NIZgN)!2h@*uI!8oD7tGpR^CKy3*76w}0*GldsYb;^hVAsT4}%}U zZ57GM|GE5mZP}FY%a9&fOJ)fC$NTN+vurhHeUntlo!PFjLL(@ETHw@3so@jS77$!P zxP?-VOt?A-wnFsmmAM6^krNUA{lk?RO$wn0kNb@}#U!LGR1~YCcfDbioTz@Hqn?|Q@oCEo*e?<9RmYnk31^BLK5QA^_B8bE z0{p%Ku9G;FiM`)7NQ%50-Am)=ubReLaIcFsN-XDl_E3&NkXA0Ba#pC zj!dTlh(9#hSRou)NB+tN_UG1;>c*JEsT(N(G-?)ki@H^~F~P2F5wI&Yh~)o-_PMli zF0Q2KZMu?0buYdn#TX3^`W%mW(>#DW$y`iowudNw=f(j5F+8EGhGTh*;Wb9W6A)1f z&oceCqtnuA+CJ5Hzub;J;)7|(aC)KA?yIRA&dnh<2{*4}Y)%2+U`siqQwb^K0O2wB zwpiVHX!`f>FY$->aPo^I`ZGkw(jHd_V&AOQi@zldT4JHzSyUo73?J0uda%TQ=FClX z(o_2~mt@xODo&cV63ZCnZ?u(5`EZl(oF=TxLvL{R9^bXCBl#Iv3k}+yc3Z%ckI5`G zxNGtm#evldBq1Z{M~XKb**yrMqKF8W;oxSP;6XtEwB&NhTG=#D(YlX>;w04B8tX;l z^_L_)#|55&MBi1)sK-VX*>GFKVuYJ{t?Fs#c%tzx4Guu>4NO4nCPM!nqY$S?qDWSL zvWqYI6&^V)NUQUage;dwafdI5-pLL6rn1)mGhqqZgiOS2Em1Z(xjI0wP=!k=>-BG9Oc~ zFW%aMA*o)`1}UA%d^p2uZPLGWEgQlRSJ!c+xBC1*n2unQqw)yI0-OqN!~V-_0E2wB z5uiIIeku|YZu#BKkm1RO$#Ys@3_AG+%hGU!pHLfk1_pe+`DvgQ*+9PPv>Ol{Rdxtz zltG7oFSJ&=v||$xYCMCc53Y&4VmE}o+LQT6oQGo+i1uwPH<52V5s!Rs4QCF;O-nPK z*_KQw?5N(4yS0r8?9!6w?l=G!ntUqXpsqOSJ44KcjrBKGUwR6~rgi~f`NN0p3*-zX zNEC@X(d}7XU6-6+ff)`Z)`1j|8V>T1u3j&hxBypG=?g+edwrE&IWZ@?lkLc|l){L`3^P>8pF9hkUHN)nRaX&lS zm6>_3(bvF>pj)eU*o{h46-p72zakXQhOErN8p!KrI|GP50+k>`Qx#E03K{RfCfMmV*~6k&;Tg39Kvt0 zo<@*@*=%*Pr{~hS+Bo^C=}wncsJA_F-3CDD86fQ{(`ev3>9Cl!Tj|ESYgsr2E2;I|$pmZf*F5{q- zm(BZU-(rtvK~d^Q+WJaCnJJzFAFV%pg&?F$s%0Y zVCt$hJw%1qGc%TV74m0-g@Pr3Tr%8XG?;1~i7x=~`8(p&qlna~|Ct0&nkgW}nC`mA zK}w1U@v5zO^zepndyd>DH6c`HsFT^g^uW%>?GhvVNk(PqU_YI1>OhrMFLY8AGGR1J zFm)WMx-v;A6xY<$+*}C789qr&Hp0y0QG+`C0m*M5ueT%}A%IyCIpZv?OPRyhGIMFY zt#BEh*@t)9dH3>+r&T!9@Od=U7Z(?EeAehT(JjC#mBnJD@9_lQ5`g?FGpFl7bnetM z41I^tS5E1FYS(gzZVYdr3T-I(Pg>wUHn;1QfLKCBTVwn7?d4H=y^-CM`mKa|iZ-VN z)8ayHW+M_ch|10Iu>syI#(L*V1_7Xmc{-YOdZrVpVIa}-M`S0{kmDWepg5XDz8c6t z9?6vgWE)ctrJ38ynC^p+?>zulkcJTsUWg|7%H1il%V@B-8V3QHIr62so#>-xA4J7{lmtQ|2`0mokk5KRQ?!l1jyM>eDyB7V){a%ET$cJm&1U2xwPH)R8%! zvO8sy$zk{Yvf<||RjxuPF3O0ffD}E7q3N9QT~~w4V)M8-6*QR<0Go~?T#SR_)V$z{ z*5I(@WO<-vsbH-z0(xVjj#`5sbhIU=KdrwOW_o?E*Fl||E0)IFFU>3ZFKv#@fwo^t zK1^fhN)@4tiAjQ>%57Xwr~9DG(CR^^c>L=74+wmQm^1#941CDIXJ@8i#FSZ4$Y*Mt z*o+aWODi?_l*s8s>xV*IhSDreZEeRaN9Yf_P`Qdgi5)w35CBe-kB$OH{$5Lf?828I zoB4s7m=Xtrd8Vokcskc2 z#nwjz1rz&5AKfq{2gmW)vCu98g;YfRvGs_?p59f2u}!E{s{Ai&%M4EYw4@73$pku+bt+h8ZxqpYm#s*;;i9gHCytK5m%&=`JzaycU@jPHg2=nS!q(ACjt zBH1NK;b`jU_#*P^{~^b+ZBPb)2DJ4D*h0>&u&@;*{R7#e9$YIq0cIkS?RnZE)~D$V`ntbCDygeE3#>dF*( zlp`sX#w|jOE(rud zBi=cC2nouCQvqQfvnkbq5N87Jwga9TsZl~0C;_CY%YJ^%-_A37L@)~ir3v#uc#}Px z_Bx&-Wg8z9F2Y`W821+Oc>S~dj6JR*<_k?v-_}u`604|!u?CxL>$cG@&dbl2g)Up4 zP#}#cHeYRJpq9WEOMVz&yew|}<6sq)Yx33#PnFd+x{vfh+(N3O4{UImYZfX5ynT}uWI8E3bV6#Kv_Yxjk0CkC`G*hMmRa%-B z=K{i2FCOO7O0APBwOlEt0K0OTplfBZy8d0sbmevq|8_N0{ zj=V#S9h)wGcfTHW-RRC!2%(@6%%5_-Lpi0+)r#{R2U9tw-J_v0ei`DS3Th;AwPa3E zR|z%>aDl0612%FQ((Ou%v69s|P90UD5R3dCJAOgFtkY0?Bu?cl{@3lD>b{YWR zi|w4}h#8K5|)m(>G4$6}& z)%Yr+u>cIi>mNva`nMTv7etFAGkW=ogq3p4uxmW^@&UjHNe-jHaqz$ayJH_#6o#o^ z41ePI(cHOZ@3fD8?tqDoARXs@tSt;W+hY?fu@!E%jUafKJ?eks#tq3_>CCa>@D0L}3Kxk2 zy8($ias7!_g7v_=T}kGa#wOzSrUIoYzO50QXk9H2SMr$Z2D|8hR5km!A5QjZiZ*@=to$!6PDEIo=^(lV|oH}dq78xKl+D(PQ!OQpfngI@ph>782 z^v+>N%5ta|Z8<(%tS8)ZwddovFFG<3acUWjci zH!1hwmb$rf=b8gv0=%`C^Bhoi?z3#hw9xECTVB6TXQpTZf4^BL#D{TH2PD;Y@7_I; zOoXm2KQb=y=@y44JLZ)w@$>WB+>P| zii%QH1{C3+u8gZjCl`ep4Mk6XIwMS;>WQg@ng#~dW~R94yPc=-^ws70DhIHGi*W{$ zxv1MLYEKc_^ANE5r>}qQ8}`F7(ZM81FcphVC*_?}?vSo0o!3p4Q7}58sL`r%lB@*s zZA(R3ba|GRmJ0#<1kV#vaQ(MvY&o&ZkL*x+R?(G+HgDl-}8hV)n>*Zew91_E9Qt9Q%|W8-RvA=%}K=*VK@1bY{?88YPqUu^Z{l0+B%S zyLA|vb_Z9@!FT3F2P!&;;TtN`UF@lI4;0}gLJmGL(SMqeo!DYVO#|?o6l6dv@)kNa za=5n|bhNd#Z4j5i7U-P9kzRP-|I@4H2ip*F!$0dkQCQ{`W9j8-NJrj#awef^O?_DuOF$(6W~(gLJ<s35BWK}Zw?A?C0# z!EXcxr~iNtVYdf*ZkkS(Zl31Pok}CujQ4r{?pe_Yd`sN z`%rmk%=}E!pDgXymB->OPI9n0TbeHO%Ak=dmI3m(-yCqxe5{t1ltdF&15DIS z*4Q{1T-@95!o~=`PWy3>jqMef9#pST?P)CEjV5@$-u~~;S560dOSV#+?a|h+?>#*u zS&A{0-n$E*YfQ@@zm$uhEAHu0en%^+!`*cBcw#@qe5s^;1?l-w{E-dC*J%L1}Eu#E7lh#gyTU2Vri9KRxYM$BL=% zIVR<(B<8fgB9w1Dw<~STu`8*Sb6w~eyy4W4&QbDNTGzE?Jlp=8n1 z?pT}Q9F>)+no{`IZ{Os01uHCjhr($^D}DBDi;ZeEZV1{BGWnVVAdpN1hu$?K$Y8uz=lJkL==htTV4%K{=A;Q$K_L zd`X`6tXp-a~QX|>FC`X{-A-5^QFM4fkx!;NAk#TVD6#Z#uIji{b3Y~cK zzJ>OvKvk^-2iF6%Ps0KXqB7^FS+~JYA8l@bS9ay#<9e{1@0eX@{H)#x_^oI4%$}>w z7qe)WaYoPFy?u?114B*bhfgfIj1PmT#hYG;1%!>~HrtEl{Y^ZOJ1=|aQvZJTp7F8& z&16Q6@V4V+6rni%v}2sNDtaGb4I1G_y>`c5$GD`9MRymyOgqos zP+z;xuijvhXGMw1PbY3SJc|-C{mU~^SCZ&>kyhGC$ z{zY?5dzY)t43mFL#w-SWV)71Cd5QwtE?C(r#Gc~Q2tB%e`*uM=0d9RmLBYcZ4+cpC z)z#Ifr?4)H3kqP**Y3y%d<3wOU}XaX11)1?+FfrxUf%anQG?r(8_XY)CQVs#4@yV_ zMh_mIAHPE@aN20PmrGu%cG>t#M!fF8zaly&@k0)t+KoI#rd@%$Tk^SNPdJ*Ld}_qm z>c*SYR;t{7VqLJNIv#xYm3LpfbQn(=!;P9^Q4td`jgeniT}$^qQNCXta?r0~@GycB z&&rUyQ8Qbz>7rb->0E&bF+R=^2Xu!RX#9I%Y`u^HmxkV`Dvz>$Q0r(GjB*)O-)x(@ip-6nXpri z4kYSK5U{H>Yki(~c${4wbGV;#h}M+4_!ru#$LcP_F()A^y3%@(u{TBBkd#ez z#CtJ0*Ysj1PQ>N+3&+pDFcpW~$BlC}RfQiY#d1b5`!9;l4t}LDEyAMrdlYBv@$q8o zmE_X?xal~E40pOrRZTuSrw8oBq*{;UsZ-y5{9>bFR~4XwFZdrVzP%mXTOJnh+%SSe z5M6{k9y#Yg&qqE{ek5gb%qTT;ry_H}lwh?Y7ZO_Zoj|nb)xBYHS z=y?*PT5q3JZq+&%9FN@uP0P+*sb0?XHI93elErazW`2LUsrmHOhnxMh$T5Yt;6_c4 zejW9fOku65w2u*Sc7g7}n0qSY+$D6SVUnVGH&PKgE5w^`bWQ!M!fAvv>No0?K;);E z3~10PHh6mN_e70T>hy*gU+?i^YU$tZxK%94qoAh4#!Va0J2;AERP>2-H}pEx{LBG^ zXFb#4U67wY_>#gTPrFd(HXolJ!t3CNRh3yQQspD>1IHReKFgi~5bu*3B&Y9x8mh}h zP7JJ#PR}-#5QZlWL{2N8d-QpW6sMVb+B0$z9S!Wbx97&1Q`W7PidOCv%RE$aSq>`v zw%k3hwtRxdbf;p+jbzYbUsSuGz;38z&8@fI>xrimbzNHekHQ-%lNslu1S0NI^jxW; z`ni9e>Nn~y$%!*U4~L#(;5`;RZaUlPcDPf&Qc&nNs;&FgPb{uG+jpZ@{&3n=t!L`b z;-cO0&fnx29XAvD3gko;bd*WqvD6!3H`=V05FqLFNtITL??rNLeYt(P->wALY^BT$@ETKrQ4YBi)Iss_{+M3{Hntk(z-(@Q5MA-HF}jJr3|T#us$6Z zg7yJBdYTW+{=fE~dpN#3K(A|YlfRg1$Teu5T?;HdAMM!&k9Y%xW?}Ck_D=8xd_^UV zWr0JdKX-q{Y~!))oP7B)=x3dOnOxbt&p6#;$>mh~iDfBkM9+9b|KR(05xrCUH^s)c2`|3!)$6`*av||O~TvwoV<3X!>ao}O7#?L!HJ^%iAR!@chUYSkw zz}9p0uHsPMbNhtA`um>yIY*14+CGbql24xItke&yZti%bFET=mw}&*QA1ZA(%eZ?m zgpOM+MOAGoMK|pq_ve{f8q_$^a}IqaqKmuc9XO&(G52j(c6sXE6cuJDtiS1ClZa>QsF`k=x*=~AXzuZPlJ;J?R zxR+LJHe1p6bMuiyCiC5vv_!WK{=9xCaR$Y@y&^^vwQB?P$IrpDdi{wUh*udqzLRpvk@F%-ogv|{YfM$U10dhn1cgx_3`Zn$Yr zI^COlW>LpDQ(nnrI$P4=T(6hwS7s+gz;?wRUe!R?o%fYRS9QTy_MQeE8XU4mf3l^P@$kPD4{zwk(Qh z6~o$7b5R|3OOkBYM#uB;4OgDXrHW`(kt|fW{Wi-J z9mx>QS{UOGMbJ47#Ws#cXDQ*J8a1AfI`cQrY^BdgJSseETK2IY6HX9&hDtE>6PX!l zyY-cB4m_EzWLNj{(~yQW=9hzP`tIPNQ!v!Y;`4k z5N~Nn3`I{PT!JP*@KDXY(2cpbS+(_+8M8_m&S#5YDHHGhX62DZx$Tew=` z-fC3*A8Y<)88+;f-q3R61meb&DCBUM`7LK_k#F*adN+Jlp$ zIh9py*R1Af$rMSgksAv1E#mTOOJ)w4Lz>efo?ZbN_Xx;sN^!iVny3|j(=4??L6_~gbALHnbxGioe~01|CB5lBbKL$X7A%d!|eTOs@!iDiNS=(?BQ0^`9bI|v8%19m;m<25QOtLY1Ce~{{6+{}81PzM*2R!q z-#mG5BK^2R^tavC*}?~^XrwDjStmaRx6RQc&quUtX@1gZol2C5kgx}PkU|( ze^;LGu8tuBR!o(DFh+Z=zxfsq!%t|1D4UTJOWU^N=@!vvDlJQmzXcG1dtEq+L(V#= z@s0g=(wf(O~pd*)(4Z;LFr=oSRn56K;&3-*`#)4jv1I z{X=e>Qsn3Pw96aIKV)1#GFQii)sS?~*anhrZ3X#9*D5Y$_4P@5=6y3g?^bp#45S}( z-nhfYchmE!ai;AJF@W8dtX8F9Q<3LDE!-PoY>GPYFekk)Z=|ceNQf)*EFXFJq!rh! zBcmfI0briU2F|8A_e?X4vUy^jfzbuN;FAQ?fnPLNPrwRlF#H>+DUu9LtbVxIE62|0FFQF1H{Qxktikk<0%qZsg(Fm{_T35(tWD!0Rx?1D z{1J-5n7VIu3eg>n&_k~d*dT*i;n2QIRia{?^6FNm zi1Eu)5b8Mu@n}bWNT9SJ()lL~7H4yvE{a39PA-K>z}OE*fgoEWco|Nqka|5gRM6)x zkGiv?4)x-F!toyh)@Wocnt6~1hc27$le_pbz7Z!_2Ja|4;~W6@!e}!jN(9XcBnBSK ztz2*Q{_{MJ*1TA6YRUfZ@_fP=PSYu0UA?ILfsj_J^;mfhd99I#i$q7;YuMF?<0F3z ziyUv-1Y@IAiHmWB1}-BOW>dKJylqW^uLv$4ZovoHovb|CoP06II(}c*6C9ye@H<6@ zu$-OjAewJ~n!|~U34i3WC9o(S`{SU*jmvgM0(SC>?B0)C-4g%W%j^7;Q;5*4gJiDB zmes&h1onMy*PV+9!y*h$v+(Jq+*@uV5sYrs@nGx}FC-Vm~wX(aw&BF{wgE?uox_GQIZujYfT*-IgwN`ZR~t z*LA=qi1q9srlX?=5${Z!jKMm96*)!@$8sBFuvFI4IV95@^-1=<>*q{CM2!w)gWT8_ z;UjkAfk;H^5|1AgWM-BNlZV5O<+IV93S3GDcFL11p%{+u{5d7v@DYbpE?ZD z%mh_h#7*Q+Q!okw&ri#mTp8VRA}R1uT91?80_T9sDeRUZ+KC9@bV+y7_93@J8!l3f}pfFfo5OzwQjzG@(EF^s-u-B8b% zk83CzNFR=kT7V+`nxaJ1R{0r=UpC7{NJ5s`**wyNn9o%r*7p&>X+%9Ywh`sQ&I-BD z0Dwdn(&^&ET{H$VsazL%9S98(xnOFzv_xIm3MpXl5Q|J+-`qag>w0aeNQ0LPJV`!M zr2#}=Vh>@&KrJJhY#NSG7=oeNOciaoZylM5T1Jbfq$T)0TKtRq>$=9JL{aSqJSd|} z83EB*AQ-;r#ZaJ^T6}i9;bTqHN8Gez^kDh3KQ8gCb1!f)w~sn*@<80pPIc4xpI!NZ z1r*$3(*(3j*DBxMSVvX#*{lMZ3P}%QNh}B=*27`0BxLYu3RjkVOc@ehSt2ePdY|F- zU@Iqu9-5bwX+fYWFmsJsqdWc=dq~Bh%lDhwz-@RIhAT$D*{vA47yLRfne`cUJSH-& z(JgIxTTe4g%;b^)o9^|f3F+40`~~+Ey33YLSXTW)gZats4XnNKdxW;bDQa%5R+tZ? zRk?f0y}He^TNZWF2+dekTB?bDyr5Tcw_93@NqMY_8L{zH=kXK{Dz#Dv!m=cVlEZNs zqBk0dj{#Msx4#*aQ&7h$e)$cdI7B4_9NhIE=rl#p&cPF`biVyBD_E3EzoXRlxy?mH z2pLpbu;*yWV?Tp-Ogc|d@INyv>z{p@OHktKS~c+Yu<_vQk_HB~JOzJI&EH2v$mc!pVzLGM1UDGoD7G99}Ik%+!$ z(GqdIPnINt2fWqlL_GmD_{LLD&$g}XV$x$=D~HLstR?F30Y0)T3ul5{+O$rh{n5ks z5<&b3wiICkWh|^9{LTeEA==HdGMZogKNu5HiH2u(ZP^vq%D7%!L%t@HC{P>Nh*BoOLR__f|eE{zrR#Tvat;#U-4D_Go^AIgtCIXK3z5Kdt= z+q#C=q7kLi(p!w+c?VhJ{mMjT&ays2^lT=^zTkRR?WNKpKtShhXll*h5$vf4#quVi z3^^!zxh?{2kkzlkE5&pY{h@pj7Ui^Px<%I1vC{|{K$Dr6GC;_(SdIw~me;sxKVQ5< zhDS+IqDOnR-e)LhGE-@6zAaHo_(2cUc=R|whc=qJh6P^dA;a~>PQ>D|q?cMiDD&%L zv7@R8F6JZSzPdmNBGgw#T_jEsRiY}!0Qux98o)dSP415J;L@bfW&X?zWay)Yc4XQ6 zFdH*_E_>?uTjN;L@^7ZHlazB(RNjYkVo(T?*XpB7UA;2{kHH^u$Z4!Xtx}(-GqLdr z6g4x{>B@UJsGyNap>O|ZShS#Z4uk#t>YxHmUbiP)bCW(N5M$?#=fuj2Ent|GK(z}{ z=fg?Du5M>X+n*0@?CnR+j&}vjTA-&^R(9XsQeE+Qy-oh7Za<#J<*TJiu;02h;Msg? zTvb^aKi&+|d%$x#1OP6WbjK4J+DAL+`_n=P$|wJE-`5{n#YQQT)!@YAGDz#uK~}v9 z*|ee_*83}?aJ4|tej*JNO1?JsbJa{|P?&h#=g=t{IN4uy-t|CpWjQiAf681#^B;kuu&b75<~%?(32Yp|MU0Y?J8M`{ z3Czf+lOG*RJSJ`jh9)wvjwp2fj#niwiI-jNV_(OeA_p!CJ z>rFjBJ!EqU3!3S&M+zXalPBu2`?(S7@-n_|}Db34M=YCc#kJ{ou()V;h@%TU%Q#b@lYY#IC;84pTX;!C0Ov zP8b6M8=*}~L9f&Dp-Ht$1a^>(*%DejP5A<%$i^7!vzpHvPz8eXmvqkJt_UhVx#3*3 z@#$LED*GS2z{I%p%A`O+j9(t27jl-;%uyb63OqGT_MGwl-rGA0Tmwwq0=wW~W0Su( z>sJAqCE&gDL~&>&U(@{?mDLhhnWN{2v!&m^KRlnqk{kdIq!)LFJMdWP9pznVs}%1X z>KixqzmTd~gSyelqU5E`j|(WNGkcDKsI)(FT%KO4-lf(6O^i&cTUI&u2c~8VL-gNd z-W2}>eYkC)MNw1hV{fVW_O{vy6UTkU=-`#VzrVlmlu&#x(t9c=hgBs}P$feAAl}>m z;lnpNB}VyR5ht>9acR#s`3v|S*#C6x7hiAye#CvXxMrm#2yJCJH=`F zqA4;-k_Khk`H&&#wiz=!%Hwymq?arneFyb>c9*PzCZE5fZoAk@lA@1i_{?s@41#0jpXiAQ_%m?$(E{nhr1R}lbY zb|mIOteQo*bLC_6k;#hC3;NA6aHR;LS=yy(!PMwRCHa!@V-;x{>x&Or0q7AgY)c8v z=JfU~c&-@`gDCZV9rwW4)`kFe+p#S*`Gt;)48}?FzKWXpBemzXlOM4|Sj}XAli{>z zr2EG;%$Q*i36hj2D4}ZcX?mM+#%DB~I}*>#lOA#+fzrVTJyp$i`}h>nKvc%*bw|?L z5zuNSN8k2A@+YE%$*mti=w`PoaP)9N(qB8E^Voe{Z19iiSSfcp)33=wh!-0@$}0}T zEPvoW!yckCSI>1I**arZ|I?S1S5(eP_ZdQ^zytCJ7TO2YTgoE9*BAw={(O2qoP$Pp zPs}lC*xoWBK|swmvLxjpld69+inaBE3c{g%O`a5Xx6a}nKJva0&|oONEJ6S6K#MMo zF<@d;0$61LN!02yQN65Y;TUJ2ADj!9e|D%e!s2k#XffJeaWneU3Z zqRboWl|VHJ{802&X?YR;C2SmPV3F@RfDBLu+2*IKxl*Q=^2NO~ML{RgV`DZ%g&xg0 zXnyRJUseL;NS$}$OXF|h@C;mXkFIOTvD2S!%_~D@ zw-*qV&3a6a&{SIR#S|L!&|I?Su;Dh%GX3#-ZrXmnX)e z1kyd9h-Q*0ws-TWe@)6Q<)Or|*BnfsN9zrz0%g;jE%g}dZOkBk{^9Ep)n3~0Yat|v z9GbwZu_aJJ(aI%4VALr1!X!}GaF_F?ys+spl%dKPYmhW+Mm%zV7_O(et)LN{TXlty zTRBKk+0yMYVa*tNx0TT>I0jE3IxF1xtTzH=5!bMOGpqz7}9Vsul62uUr* zFUqPp#Y8kBMaq+LHPY6L?*HjBKy9q)Ov1kjkm)#->M-tOC))Q5A=W_rDeh9u&`zb+ z^JmPLJ{^*?O#>Hf-2qrQeRmwJO126r$s$6A7(zD9C5Fh(06^go1HufIJ$-Zi6<2Yv z)DoICcdIufa{`e-G3}T4<6lPv5t@j~;#-B0qcwsEK3pMTqq_@1 zIQ(Cg_z_Gr@Uxz0q6qjPUc$6SSwozxsHj{;G93i|abVi<_}^&W;iFD@A}cho3d0#3 z(vj9m={F@>Xy6dJoFVY_P*Lf%KFbR}*fp{9_}s0;iC1qqc>L`R@CkHsDXf|k43UxD zXseKw3k^|_r#=|iaHJrZpZ6RO>7`tWu*q7ou#+)a?fI)aX3={RdO~G^Io$T_WPUc& zV$gyvWr*{Fkm(^tqbe?{JTpA{4-9d`anl-s2SmfB>mrjNG~2oiVl~5@ zX8^1gDjO_ezmSF=G;2HaOq4#JQ2yh_$In$-_7JjHF6BWn#7pqD_ywIzmn3dglluvA z0xE`S4BHem>4To^zoo*@0}LRy^Mh1EqeK2G^a~ZDMWdC~>@My^4&yjdkS!=@R)6S) zE)+}*Y5{>N<;?Vq@Yr)aq5VPbl!ojyj476Vi?pN?vQtOM$~((Jz$L8QG6Rv2L>O1- z5h82lz1ZDT$VZ4g^vV+jH7PYkLY-o$1Cm;DXK~F4=46gVO{;?s)~3>p#K z&#yrQ3DRW)mKTC`0!_x$k|@YxLy*r^fwQ ziNo4{P$Aa*`t@tw<;7|JYCm$|KA1VKnYmYFWKzC3cNQt~pz3SLbY#31@o~S{HOIL3 zay7WJWoM(pc4M6D6Xi06x}{^^KX6o;w`2Au-s9fzcdY$O-ni9%)Isv$KGKl~gbOe{T*=QZ$jFeEygcr|N{%8VFT85bj3E)$$bGSyxrqm0 ze#3rX@jUXj1q%yTs8*UyJFbl_C|p1Rz3+qV-aokuI(iDDMtAJL@dvwSP)IGxuO!=@BX7jR^*I26Sszc*&+ zROOvymFlkpaK6t@7u$yvz`gd1X--u;408u;hk2mgLT!*9>Fqp1R5nU&SwG$oRzl}M zU7)pI=Lzi?(zW_u$i_5BPPMeOI_J0Zii&y~?Dv)isRixhL0&DoKTTom7Bw_H+}jN+ z?ta#Lu7dPc{B<*COBYWf${*&_226UsYp!l;LB)ePBsZ{8MV-%YaTY^5IywbuX$)(h z{v~CFKqxuyafEFd88v3Y!S)cxof zlBFmHnKy8CeSdF(y!cHsw`HZa6!vdxj+>=@q8p!O?!<9y^p_adlWdRRR6Xe;0b08R zNnk5FP9$c5#ZSYeNS)tIJqTn;v=Jo)WFSXX{udI6_<=M#s%FNgu%!9o#2Zz7xr((Y69TR*C= z;Q**!MdcmH;IuR}7!?ibJ&OG#Qdw0JuJ22*u&{viWEiMw_$|KSD-Lb^tgmvKmG}@F z>)~}nNl9t{d^6A#s6uRPY@)M(C#HF zRRR@Mg$mA8ixP8)`;&=7S+0LlW!4jaH$lR`ZlN!^5UhyRQC-tfAa>w)T~KyK-wHy* z;`iCJc9?0_u%@4BOKSuvhgU!t$o2&j}R0Q3v_uSO+_iyz6AwwwsWTrYlUlGWP zhAkq*$qzo?`{@<~ma)@?gn1jf;!ujXFTdZBGcbjf)XTHnh5po1kggH{QJ3dWcM8oG zNReEa0G~|i^z|rKvR`mHt>P-gVdX(bsj1FZhS;KLFMzuq~KRRT*~q*^zaEMUIKMMN-c&wzhu6hjBBRxKs9w_Et{M5 z@q7^g)vhd&W2|#p3#s6H*?)9Twg*{Aax%4 z_+erUoiZMiHJMvG^mzq{fsDI!c8Do8YkDa@HvpdN=7@*_k@k;o3w;^ToFs z4JbyDweW*Ts#->vc2f;co2^h54jG|dlj0mR{)fgtJ*FI}Mck};tFch+vO3U5%x?jC z(7|=$E8Ik*-v8$0#0U1uC)0}(xqN*>GO*4VtpDgn2Z)B@*>#@bmWf9IOY~|%T%<-Z zwN)@03}q77i+gwD-pXsXlz}&79Q^hZJnJAF0QK|mqQs$aVKt!?_oA&PjFjGSWbJ^Y zgiFbCPm&r?n6gAHcpx!A@&PPRi?iglY!r&qIrVl_L( zQ$}Cs%gPypIurW3D3T%#ZEcMkTK{GggfD3@aqCrBzJnPnAVKe5#0vk=1@2|iFN1*`1Y&UkudTVVm=IEIDaJC;x(BpZdBOAh zNyIJIrh1T3wf)DGfD;>I-}NdT2SVtTITvUR0UZdEqz?RoOekWd364r21BY2b?I~nS z(B#3D87Q@?GjL*9iMN}P5mj=p^?Y8=Nv!lcepXnGfkJz*Ag+TfPaS}%*y4Fy!EcGf zEzUGVN_wQu78aRwfoCo-86U=kx{vpaiNmvB$&(5Z%KiH!;Ak z0fZP^1|0!7VFP&c=n+c+BFrF2;YDW+IcCs=n)3;9FmBq*=lhcRweHlE;b@O>@KC^R zD{Ms}A+0C$QUDb{rOa3!l(rUxTNFTS4H$Af)@EPJsR1oKAH6eqO zk_Ra^UC_WyVzDBkVv=qbDNgvSuM9+|cr@iX1CTIt0s`%&mF`X z@BjfjhrHCA>O<}y3w}Y7;H!SYmBdpVnszA+9#H?o^%stT+afp0L=L0ua+1*Vk18#6 z((-D9zb#ZOzg%@U3K3ZaT%H~xYgS*)j50d+>nyr5B>S%+{5%H~OTOeZ-ruKPb+A>@ zn7kXbEQslWpREEe_fdHnt*0z~i<|T-7U^;1!4a4(i9UQN_Azz52}nVEz)iTxnBRt_ z>81X?%mFiK05rY_Hw~r@5CbF&N?ib`ug`1awrDt--8XpYu$%!}FLv%5)O`L-UDq?vFw0 z*4Jsl2p;hd7C}o_Bvt~g2FSoQ{-`TG6_&KCq{B`nwnr}LF_6Q9i(5=r3kYbE?&E!Y zOF}88ClBc`|1e;Juf#EfrPlHtNO|bFbev!HpiQ*hGOG;My^W#^hOE`1UcDPIet}MnE_f(E)6+x zof^vj#)#S7|5m@k(gxr%gGQe!m}@4uAqdNIT{d02xoVbxG8Yb4l>z5Iv|?V5bWOaU zCQkkIntxY!vQjuNF$S`iEa0#|N&>KIeBuiwiGk3nnW)}EBd>&xIggGsdo%Slj{VE~ z|4-7NuhSt2G|W8kr~Z;3Vhe(2!1x}>#NV};o6(xNy~r*d+Sz#qhVbJrwdn8PzyI;5 zuL7l}yuYAfOUgcXTW{)-*Dj{A+@$SGWY|t8iTr!sjse>Bn^e|p9gnN+; zVQm4wKMM5d^oN2>^5LMO6LpPVg2uyJNhz$Lu+ZY5`~RBz7;kjn1ChPhq)}vH|39h5 zkSi4W4iR>6{o~X}tO06%L?#~z34}#JopnDLv&y%AXh>spWF#*mqm9NN6vqBb?!N*G z91q{e#^wmvjah^GY;+dLD(yg(0~9;fhdi97s#QQjzAa1~o8o+0@k3l@3#aK(Jtyl)ks;CcfLl_fSo3`~?mvvtqyG zWkZVJj-vSX7gEJpLg)-QD_M*(*ce!WkN^>jDW&N1e^amX1J zKxKaNUAHN^rI}nx46No{LBQz+^pL=V4K^hlA0Hbu`FZ!Oz9OW*)6Ua&ryFeF1IbF2 z+wxHSq3`kExOs`qwI3CrfV8ISz=8S#Dl*~^=&JaiH?T0qJqOAcy1r|`y{YINT&J1_ zfs{HZ*7F3)U=k9A_9#K^Jzs@h3S0|{zy8o50V%v20O(Z#q@jHGPUyc{liQj3?UtFHYzcasinlESkYj${Lt!?bKYY{22ZU3Kcpkz=W2fL5>GsKeg-yn8tS%XwU#l z`b)MkMD?}I@#62FOWSYbhFN^PuQHVkqA+@itz^6$~s5Gckc3o5k^ViCCjz85kknLK=3yI4dD zh%h+%wf;bWer(|~&~wDTE`l`PJ)mjO0GIu?q>iV%`HY1KP^9prfERwlFHjw`8ODmV z2oeHggSunRxRjE;Px?E7$@cV`;ELogci1z%}sxSTLs3zgXS$LeyK9@Bv~=Q_{oxY-L7- zEfW0i+Z=h&3Ug{oH_WR(PisNGFThHJbK9%Sr4#8iv1wz?|LYDC5WGoyxBopnq3nay zkzV;5(F|n#w{j_(BwDx|bS)`2`7djYl)HkDt~!Qeit}Q?{KJ4a;PHL`{RXI)1!Wk$ z+ZHYU%+qeWgurtIYFs<1Pp#j`TV0K8o9uu%p(}v4|AvcDg279VMJ#l8JN!sU2K1C< za!=t`mk7YjeZXwN{rt8(`=Rb_a)_8OgZ~;&i80Oh8Kl&z|1R*m&ePh?Za&<-6<1w5PxeTRC5~vT~(k&vgu^_zMil zwlpw+F(uw-5J&Dp8GKiLbGb{P96>aL-s2+W2RFUuCS#m#Ur8hKp ziyvXg=GLEkmjHj#{FsXOf0HZbF9lMIM?fSKa9BSJBdL>%!{*YjVHB%_^7H~u6;}Op z#vVVO!gcvHhpB3tUu`ezKqj{r5qQRA9>@XhdHlJy`U2EcFo@O_s&=|OH>UH!W++r5h=P9ZwQXXW-gAcnYc z&v69oT6Uj*cQ53p6)X+m<{sbemn_A=BUgxqwJva0--<>5o*BNpv|;BB(4pJ}f&;Fo zKtX8F0BApG?Nwb5JTt(siOJE5^`?Ovk_&V zK4}1mWgeHElfw?;F_7fk-HZVgVM9YhSvMXYp2f^!)wszpkU3C{RT=^P4nR?Y5$d|S zxgjATc@Y)=1HHR`{u<06hA@?m6H-=FY%(rV^AA8uk==jaoL1P4m&l5_-u+`!O7SLrWPnh4;Re8{Jtz$ab(~ z5zZCY%oMDaHcMW`# zJO!Xb6hYI(?+pWc&}e(7nNa* z$_1jXpU&+B0IQ7xn`1dn^l#pJ$!)zdk`G@23`85u9Ke+E{patT{AB0@j?#gCL=fm^ zlwfts#ZiakO01!y;zc+(7a+{YoJ{H=Dztxx@6Qjb)KM6eKmC3k7PMVK@uT^O|GQe| zVtw{P1>Pa}fWkNn%#1joiWc@SPn$0b!F!j0vM(8vkk0-h3GC8aaFBaTc?G`VOb4Vz zxiFokCbo?Zcwor>cIARR$Q$Q*@!QLMnAQq_7_GLp7TAck>NVO_1T>~!)u=IhWc-qO zd6gn!{RRoC=?DA&>pfR5?uk3g`))c z;TJ~`5lF|uF&!uqhDw|X0Ld!hxFy9+M12DIyZ?HLoCF|8{@sJAjQ;M*-Gg`cp~Zif z9k2%Q1>E1#%RuA?q$l9NC~xQrO+Y>f5RR{+%@T%mSO7p|2e3z8A_MNe<6kq|5>Pm( z|2%?$e`gRl{i{nbq_F~cu>ZRSmJ-0c{*4BLB3Nnw=V~kv?5L}#3pGmVL0NOW^fo*+6dH&pjMkMf zV36XTBe;#o(Ll(G{+k0#u&)Q~AiH`A;0*9OY)exL`A;P{@OM67) z$%r(gpb_;@j@B|Vvfqw{AXJ}-$6EX|S66V-h|*_#wvO35JI8(^;Peq7S7nRq9xaYA z2Cf!}A=hV{;biIO$prReNj9ugVd07XuGRq6aM=y3|LOb^-*$Dx8nR}p7@Szbx+e_0 zoL8_S^1$_3S!zu1c@oXq;va>P01w;0+$|r=DZm*st?*dFXUwdn^YZe-2Z3-fF}1I# zERX(s!?pjuR}UWvjxuqkWdF|%|BFLuCeXNy>$CuMs|%!Spmvr8Dp`h&iq+L1P9%e+ zzcOB$3S_lzAmO$?-1uo;^S@LEf3gnqeRaA~4>sj0;ZfY-=eCgaj6lP>wq$2|nt+K< znO0Q92_Jn@+I&&x-3ae7E~)4D+Jfb#u-0|6@i673p}izf`2w|JF6?Z;4gL#!se>TW z&zDtM{OD)10?OAqfI|eHbP@s9{`@a@AWnS~(`i**9dP8m8mg+{AeQo5_0iBu28g{5 ze0fd``No6uN>ssFAVWVrXN!vsYiy@KyMXwb0P=ME{hS|TVAcczFZ>*)KdS@(9@{ZL z2v@6rf5F)mteJimX5#e=qgbz88YGzGKxFCu_k*s%=h1`er`_b|hk=(hKsdNo*8QX3 z_z*}{SDxeDc?8s(7XZVo0@>tXFrh@=#rbJsO)aRo?*q-E-H%UC;p0V44%Q1{)oywD zU>jFWTYi__nMd~tqS_>$0Kb{FW_j{(AB$Vzl|IKE3C|kXB zvoj!Bz%JHfZ6Y0%F75t){{UArK)8%6l1%sH8OTfmqxcP0U(Pm~l->p7WziMQLhh)& z`3wk1WunUgBh}7>pP7^MO+iVC4-hNnGnPOS9l{LGoS81@ttsqWKR$hJ=$*a1@NED4 zj0)=-jlyL06fIc`UDm(jU9QlQYyD5~2@9WJ8jjVEjEy~v-r3z{QTzv}%uoIQ727FK z&zXBtB~5`=Tz}%?J=|WPA1-87P0A}Qse1^3Qv#3q^8irmNF3k%Q6UctnoouA-P4U> zRe3Dw*#?V@0iUu2tmOl9Bj7oFz>M!@bNefjoC>Rpd@}9s?gm^}E)b0;)ZFIahyi+3 zP|%NV>h<_wyN}7R1VZnQPa``gCw_ecIN}EIHJ_{teJH>oMlbOwU;`P@w@PMFEC9Th zk53)2*EUB(J-s|o`o*grYJ$%2z>P4vaT|h#0h?4(NqJS2z`c_fe2PumcPYSjTN8 zYAPz)0Ra-HO{CZ;=l93Ei*~06>u@)VX5O1vU0$4@^m#UA0=wei;~QS-U9N&_>R|j* zFZObyvv5dRt-@dK0!c52ZplcU`zpWN(xcrS073-r-75s*g|&mV z!#+SW4gh7gJE&#d5)jY^452}DKqD;S0MHklKofaBO#l!|5hx=vt$n&{@y!~LU(ruC zlxF1X7V2luOEx~wUjs-?6BzR-fW(D{judLMn{7AS9?5 zAdqN-gh+%U0wyG+=h@Emcl(1GX2|fpeDA$`&pG$pyIifsM*%WZUr+v{ys0PMbAVe( zSrKHVO_vJ_0wp?Vny2rLUFZ|>O@2r^De`d>UzKH+fK5PrT^q)LO9R2cO|5h@s?LeH19XZ<=f25IFr*BFVp@X|Zbzm~FP{(LNX_ zMzuqgW_S=2=JZtWzRf?uWH);vIRwuztzf3ppa-t+jY`Vhl2jM@@N@nm?6u8=x|`()pxFYE zF+&<&-_|f^O4E-F`v{T3F5ONR-+U%ehu#I6EM75(H6jzF1;m62-FfuB99-OMAx~B- z&U^W7U}l&G`9!zbey4Y-bE2q^ll~1>S5*KLmnu@0pj-?xSDSb)%x%w89=|a0VT0SY zZ6`*{kFZ+@9F*(5Kvk$X2kNS zK&0GA28$F|Rf+H4zfZgDn!8^u6G$(WU+3e-DK^VBr#3(XUxE9w2qu_OSWDz!Z`Mbe zQ|MpeHvgtAbi`F{ra9F4Gc^746?um$HlPHNfeM8p%`BXTxm&?^{8|3g=8tlpnIpFg zEZIPg|9xg$S3AV$O3asOs#XdodJc`FF~cU{v;l1@2M5I$F=oZ7sc^=znrrhuI%awI zWz=24G&b-Vx^9*?)3UO&vkNk2j-mkk3ihcEnIP#rm&>hEYM`86Lh@1J-?(-~QzEFw zOOIJ%WZ7e#0W_0OCYiukvdOBoz1{ubpP?c*yS@^*l@O}dUlfhOkmeSxZ0|(tP!?F8 zSZVy+(Z*=T;BGL#M?9R%TRs(4t#}_&8zXYRByD!`tB96YAig7zK1BdO#I=vyYS$Za z0_mDh^aqY%O5R*ZBA51Yc4LWJ9roFR1+Pf|K}WGOD?DE^)M=O=F}!-yYGqQN3`tn~ zU{}f|fDZTW?rsMd5J-8#)A^Kn2jRBpa2i4Ydj_T&E<1ojM_@*$ki!{&E%hR%0l(zY z?PFSE3j?b{8{4K;+4sI;@_|$;mLa-3euyo;mtAc=+ier^}NEOzLb3K=p(Yo0VY?1?@LB$ghZI5M&ghMwCRpV-(~2T1O* znDnBm;pwl23-w2dV*~U)vxGf0@&1c-U1Qls_3zM2h5CHz?ZHb`_sp#Wf0-EWleQ(z zqyXb4o~#kkr8*8CKp^Bb*1f!JZ1c`cfVcGz7&)xI+p)pCCTu=gT;^LyGfwPNX=xt@ z1qM16{ROj}JFag>TGBgSut?#RZC(OCFP2TU%Qt_oaGu z1sxX;jA>T7prRo`u&h87Pt`Xdkse+bX#_aC7n=xQmV(ZCe(R4d26E0#7`kuC){vm@ zR$#yTwBwr{T`Z!z!KY>+HKM#{Z>M6A#fXE;l%9Okee>(uDju!_Qy_Xbs#v8_s)pu5 za?>IpU&OKTBc?inQGWInvZs!^<ao>swA#I`6u$4)E|Il7Mf& zNHgmnPb`)lz+;J0_ZCjf7>#Bj)u)vFoy@-@rx9Bhg5uA>_!9QpvvbYui>j-usf>jb zr{xsmh>~U7(gxvTJCExF7;Jk~y^kbvq>`w5me5uf^TdtRXzF!30Ck)>2?RnLwl;$j5D;oe@DcbOF_c^&qz%j ZXC&S)e3eC34+1R3WxKmm#nvBw{0kX?L7M;o literal 0 HcmV?d00001 diff --git a/docs/images/vrecorder_example.png b/docs/images/vrecorder_example.png new file mode 100644 index 0000000000000000000000000000000000000000..7c29fe03fbace2d4db26bfe7fea06a14d10a0524 GIT binary patch literal 23700 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 F{}&MFdsc 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%0AUC%R1K`Y?~|T zX5JA%4#p;l{d`+bhi87@As8@Xvk^NG|4UA^yshyjw;_A8%~+zyPDXU_1f%Aa4T}99 zxiFIvMaUmLPM#hOeS~qw_+BViLisJ-_9FzkSq?4%*>kgTkT+OBGKV8Q_}I=dQUh8o zf;hOtpz5Yqnv+a(qe!LJ5}a^p7EU-Mk(X2AMw@IFxW{_cn9eSY=652*a6P!M@I~;g z{njwL3~WG|@%Rf}uE>>bl+ex^r&6dC^ABDvE=?eRL~f1giiNO7(#UnTht{!mESElJ z)8~#oq@*O^QpTENE&|%NZ$>O$Mxrv!`e@gNE5vK%+LvN6~3kq3g6S~Tf!AT zCbDlOO@44Ft>L8a!e!}Z+xqLhv_%OF;A@7M=2Y=P>YF`Ws@7wknO-aA5AAWgI8ShH zMa|Gt@ShtDJJOS(vJfubYtS@t@E;&^Sh2%rtrxG%cD%^D-&JvPYalqeUIAj#eZ@|u zp^Tp(Yqw*wpb#0bG{sOQ5$hcx3iH_9y@5NspEB2Mq}@#@_Q@CvCNfE-RG)rbK@tEaq=jsh zCjQbyVND^00TS11EfO|+>Shi;mNuAoz2l2lcyli-nkLuYsE|5`b_{)oMW=1*hg9de z&kBNhG}tzQc_Q(9Z}hZJ*+lrLnn#rF=C@W$Vz9){CmOMh>6afDG>Xd!o%`NHW-Jfe ze{L`MygEFcAGsJa+bp{6L^i+*!30Cc6>nyry^W!?=k-^+Z;z$veZhvx(|vi($r#e~ zxo)8DJ5SrjgD@%5qOpX!U6q@kpr|Af*$Wwdn+=0Pe$T0`_g%DAdfLD*Y~3)?Ao`(M zp?-k5JU%k0_7L65zMb^m*E4iL{sY16&ck}|{E<@JEt z=8MnE@Xucp?sz12Q0VoTuF(4}7(N&^;J%Ww!h+vD6@SM zk4@4Ip99hB-miS9A@=nE8Ah=MKmLUJJ(4>S-j+$1zumt}#Vy4rpm{YN61xoAe(q3L zV_2PgC}|pAf59o!OH;0-`Z4R>7QL1jS91l>wjlA^-YX>e%eSri-iAN@(?g0`ob{d1 zu((rkj7ajE`)jAr{*H>XQIzV8%gksus8f z^q{S286N(DtsNg2uZ6||>Th*XVmDX}gQ+XuI)DQvWVgQS;K~(HOdwu@|)XgizGnigtSu5h)b4LVuRr+rb9n&P2#d*)Ewt z(VBp`ho=^;e--N-^P&elItW}hW2^9`jLqAW=H6?m15;EZWZ#Ot&;&J{x^FHlW?7zFvR?6ui9|Vb#i5q5C|`Ij^o{q z=@iE6W}JU;q9i2ETx2ozTWr@U9_O~S05CLJY7k<&3b%%w^x_&_7h82BA36~Q`j@Ac zPI8XKlD3EfPc$5bBZL_B2jN?Q0#}#2DWvM+-wekLyY@3uf1(zY3@9c~fs}oi;;T8| zcrMu{ehQhk71Cx3TSYwWzBeb5*t1N^>a9YNYl1Hbv*l#oduRZc{3jnXyxnx%J|6>1 zROohhMkntnMY1~(!iu+Dy5>2H3;t9bzJFS%4oBQ&@EiKsEKfIE3 z+(NwSo^_o5#$gEPr*3bVSW8l|*>5nTXf^9m48120oena+(D^jiQOAgfL6Q)FV#U4s z*mH~PVX=^q2+=L|#rJSlFo5LzdrGMj{4kp6sAyY7YskQ5BBLI*KPIccdP%D4hMWuC zSrL^gH0jb=`SSsoMZO0Ei%ihMnB<<5;lCt8YhV_pcg5W6SHH!c>^ra5bD^I(nbCq| zZ+8X@X3FeSJ*O2IJNJC&{L_yf3X0&s`bGHaV496cT2t7;)yCl*7Z%L8n5ZY*?R_Qg zUMev|^Axh-SoQ9WKuAKL%d&cf#Wx8HdwX>+mji~)?DiP7k_Uv}!n6|!k?R+uVn^y`v#_mc1m`LlC@8u!BI^^8WOCH4ws5Q0*J*J_O&t0?=zP=Z*wdn9UG z6~~Zw=Z;f+VY>aJ`K24zHDbINs~TKfwXqF+V;*8;Q5mTaPz93p@31oIEywZGoGq-k zl{qKfMBCs1d`qhfzU=Fh?DGlir5oiRto{-0p9_?Ro?Ds!e- zmQs%F4@^G&UZ1($*f&r%$nwEr1y6XQEsUe(&X?9zhlD2y>3(tKnv`1{9juC(T)&zJ zmnvXyq4+nOnzkF{8kmr^F8BSECnNt|fv*b=J~|psCO&?kligymU`F(gKN}xUr))tU z|JTI-Y?G^6Uk7;R8kVmkbD6%;UZh)7A{!UaAkaW48AX3<;h*jXd{}6a88X*+vtfX! zxj*BVtdQ<^rrbj<7zLS=|LX1r1XPas1uQ!0uJe_L5R~{?(AHU+QUU)I;Q!ruLXf32 zd0jmD#A7kkV2ZZp0Za8Aa%^6Gr*ppXzv(1fTn0b`$D~nV^UaZD&HM~iYbG+ObFY&y z|3xPGLADn-;xkc}Coa-(fTY4Vu0ziZrmOzIn}5&ypCb4~UT27NZ+XaJ#s6#^k(Fe9 zdbSFKFt7N?y958l;$IJ`;p8auE@Jle|ItQHZ6e97#}@{6gw9m`zoY+i-{F7T$Tb1w xGZ>AhzSa6)IsEmi2WJxH)R+6e-+aQq(e!#5Q|T~0I7LDJ>1Y_Biq)(`{vY0p7mfe` literal 102853 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 diff --git a/docs/images/workflow_dark.png b/docs/images/workflow_dark.png index 3226966fc3475c01b3a5ab758af2f4a3a11319d3..4500009c0b345ed85fe297ed477c060427497414 100644 GIT binary patch literal 121804 zcmZ^~WmsIzwk`^dd*cp`LvSa!OYjf~?rwqLP6NSRg1fuBySuvucPHrK+xt1|o_*Ka zzvk1kYg7%Zsv++TQBsgXK_ozgfPg@ekrw|70RasI0Rf2!5Bu@PGV%1|0fLYb7y0I@ zd#VGckEQyQSwkftjNzV8K$(Xd3*omkT5MKXv?P3K{XRR(H`!WyqJav0UM9SEE_6Yh zks*Uo;{S5Uh`{KyI`;n1p3W_22uQ`_LUPMBa539xyY^te@Oq7-vWJI;1^^(zzQV#F z5D*Ce|NNYyLXU3!Q`DaY^S=xL0iy$yg!!TWGdT!&m;(==EsUG)%4+?e=KrtdvVC1) z|5pYi(1D_0Cf+NMC>TtevF;L;i*Zf-^CD!DBP}M&~j;H`2Vp@gt7fa8{M=8ESxExgjI#9-c zRPBduu%M-Bvqmfxv_;qSrXkx^c&Gabu|K4Jg9zS6`gfZINoM8bkTXz!+BaPi;P!Q zh$Kc9$OJt632(hpSNt4^LTE{?kal?X(;pWK=Uy&sx*fs z-UuD%(O4D{t7jWo7Mj=r{wRRlDN)~h_{vk8!}ZpOlBwh6?hWD51x7YDwjb|rubT++ zN<|Z~hl#=wz6&6(!?diz#c9yx7vr`4UbIyM^m zEj~K>65E?pxihtdQT5d^$Q!Dj{<$mdA>y4*JzDjwEG2LBiRZ;DsNcb$Y6bi3AGZut z(*Hg`+>#enzmrWHT43e=i`uGGtx~uBt2!`XU{F4VI@#6~|*<`2*?bUa8A>J!p3$=m17Er#_yjK!IwCf#nz{A}3ME zq;sM|^O3FqL4+GVj9{gT(wZ7JoteDNDZt^Kd*ZU{a|jTK4Ccw=$#&_%m8!X*Z0?m! z5w$6QvY7Am8-~!oYR7w%$YnWqQ-Ac~iQUC=`p0oQ#eJb2YCh43!B?SMbwR451PrI} z!&`|e<~kAw*X2(NJgmjSk+=$D;yIH5KtVLSn3HA^;x{A%1+Xo4lAh*#>V zKzhFr6uj|aaUU@Vt&nu3ZJzF z{W=*N-^FIEwh0J$t&GE9u7BwWT7tGq*DooFjzwq_cai;kUXLB(+~Mn{`uk~?i2wat zN=xK#4|=RBgM zCn^IkB|Dq5^OAK3Oiavmz~qETR!hwj*O&x%S>lf+4y`1`yE|W}L=+Ekog(NywoEz= zjkD_(#M4*-ks7g+11d3&%_yx#+jTzItt~zg#~?adD0c(fgDg5t><(d4JB-gT zjaWmf^%r1iZLqk7fXiWG>;kortmbj6$xMLzWV$zAD6aqlqs$@OL|TP^WVAb8--+_j zrW}cR`{a7bhpxt_8xmP3F%DT6Q-=QKMKrJ&{$^Wk0Uo>29MT+Id915JG3JaNAuM39B!M#ds;~Rg25M1G^cCZKkbMBA{7f zz#)ED#dCdn(6%WXjYEXB^N^y>Cq?R+H~WXE^4|VP$Csp^1Ox2Ap7-Q#L|a)8)Hmr% z;&0n7AW$e909+9O!7*TFkUqpVpdHknFTPpItjHsnT~KT9tF&bc57V!-@B*D?WH ze96uahh|NhUEOb3p~7N;@3xpDz#Gue$16phXVbkLz4VKMX75D)TIEApVy&zk^Qx2r zkgl5OMM?;TyAuMjITxo8pbhXKV{qx|=;#fek+) zpDw*xKVfhqd>k8Rq7YVH!cCuaf}9!SN8V1)0Np?1x;bEH zB}A!bHGpOzN&X^BP{GB5c3JmbL@NivX&Zi=Lfg2zU-QcCu9o0uSH=Z1e-HxD7G77X z;oN;30GQo|m^PtjIr|Sr{3z;+i`|SSwFQ=1Ti!LT>;X8g&d*)M_8jJ+*?HN348g|5 zR~++{ad4zYJmx<;1P5~J@Autw{zyxzQ5yA7+ruTC6+Oa*b&qNVo+@ufXq~6^ZA)@k zLcbfnR3z(R6u_YSr9|pBPMh1sMmwLMv4zW!*Ph+(=h#K?87DA&sH*GH%wq+iU!YoG z_i)VP!!Y{F+t{m|b633xFtkO17=>$*iPF8JugC#_`XIt8Rh2AGbLQ?gyFBAKa*;zv zID@&&q)nV)WbR|1JN58=jrP(M06X#K*GrTn^*w{`&*-MoKYlIuDxA}vA^yD=USc8o zEBemrcsTVMlv*3v5ov!X`m9o{JNEoN+wg5=dKc>s0a_FrY_r;cVz)%3qEA=V-qGQ0 zE3V$>ba5MR++DYK_4xbDML92;oA13{0j z_@kUDI`@0SF7)u+cFB*i23NWj{Yb1A6eAP`V+Hxks8;(}7Zn%(E%@s$C2E&y%||S^ zt8YX~55Ro3aiGSrQe#^v)1H$UGoi3s4Rl7DK7U#mm>zKrF((Y-sImaMx-@QtwXCC5 z1Qrf2ZXBRX;@S;fIrL`+ZSw#V z8b)GjbOe`yUzO4jLh+SE9l&P6o_6hBF2q)7_J)^=kQF}bzyFqRXs+uuo?u3J_fm>h z1W?H?pDx$RqEab!y->xtokt11HKh&q6>lgDe5ti?>k4Nv|CyEfgT!)TWyVZd?VmG- z4*--#>uIs4T0r63&_Uan&DR}n@YS>s5%Z=SqilF5_1D6TbHe4U-FG7v{6N z09kNqmDwUlZH4dbNXp|uyg*+-(4x#xg-)~ zbD@qXq?PznFCq-GkE?mrcaf(X11+hIvGAd`bWfej8Ws1l@rZ~BEufyho=5Oh!+lWV zkKsQB?M}q!f+VLu?$efiY!qImdc)@ws)>(``jf$8=(bWTbFt83u_`SwRp{a?+ZjN6 z9njPjJkS7E7HrkMW}C1!BMNWIY*miU=Ar#}cVsf;DCdr14BZ)JV-*8vq{r16Bu6Ju zQ<%b~#S(#F9N}9-8plkfArT{swZ1#+MGA)3Uj7|}f4452LUiJ_#N4Lu`7XbIWZF36H)8Q3!X1LmDwvGlW%kX@s}}4x+pC`S0Rz_L`c2x zd3HR(lR3oZ7w->iwIlGtcxEG7ILkJ$nv^=pQwHY^z z)Yw76^AvbmIl*lrPdaUbx#WgEd7-*edfBbsmWitAkaofPaAQzcD6~T)Z$P_?! z@Y3VdP2Zk6#k_5XQS$Bk_X`R}JluO&L(ZXRDUY=xkJbk+fDC?-a8_LSGaspBp% z)CFM=Q8KxL(X6_>X4}YFLbCLp2UqDR{8-qV_)ap#IB~(3>5%Qq!;BdiB%E(r>+CDn zYaulsakTItx$r{CWn(6E{^HebMw}hQi6q^|okTfpN$`;Xlobde!D799kQdkBl#29g z$-=^d9%AUOMZ;z^4AC)f#Eg9$67kdJa@uEyPqxYKqp!5Oi@)_wyjVh*v@B{B#1lQRf4oVUe{n8=q#tKZ*(3JuYW z-}zS_qMZ?7;JM{CE)Y0Mm3+yO#B$kk3?2FllarH407-D}mzEog!qB#VFo)_t>zX@Q z2Tkp7_4A{r-ix~G(2J)UTZH9|_`z3X6_If` zRr@iB^N&XvO+CYCsC_gnp-Hd^+9Qi6Mv#iJ+3i^;NNH``(p8Zq5HkdwdK+qC=B}h< zL%ie67|?QEm>`5q!oP%rjqOBr#z@N^RE8KF?H_nRy>dW%6Snge$G|JHO8_^w(rHcA z&x%H!raP<0_}ym4{E9O)xqz@E2OPc#6xSXMzyf;b3Xwt^LJk^r5q*MZzCZLl1sCeS z-FM5qshEqRLWI!*H=8MygoR}36ggPO7!h8E*-#!bLp}747ArS#R?x76e$t^3i?4{v zPn#=}M7B`ZV;S{exV6qZYOnnQ?!EZeI&z#`6rOh zA`|u#zr^0Xy3Xw4xOFunV|gR7y8UWJGt?4V&S&Q`OL!M$5doqnD}%%}^!bZmHT(=N z>-Y1(wp%23t~8!KhhL%j*VX>MYAVmfZk27apyq^y$9eisiNN&l}f@rQ0xi83`pCcU6JN=bWKS? z55#}~gpOo*ApgrG+mJoc*HjfKn+c^(u0bB@r^T>mBEwjROQke0*G6p;Uqdi+GP($b zT}O2^NA%ywtJp?*yY+1j^0|-(>2z8_z|&m%i`h^kx;i?UIgJfAhb(hfI9JFF_f@yO zDAB_=azrcavEol6b2f)Vb@E*)@GbP3*Slt#uFZ;dFpV9iv zdEmQ=fuWv2bo6N`qt2FmJOpBa%Iv3~q2374yqJ*W;lR?puQga*fsbtMtHU9~2mZ-l zjICm%-m~&Klh)E{*%99aEzSX5fQQJ&%M|zu9r2}w_{0|aK8LybH%@KW;`g!O>j75_MsnP0 zoCH(sz9+`^wOiFH4rSj_%noro>&)~Z6?#kz6iiLLx z0d*+nfr-88+uSJ&jPG<#?Mia3Jyy7 zw`}b+s5Q(GQ#->bT1(sIU}y3)t^*W2m&b|`9mTsZhfaU9?-d)58({coJ+d4~&6}N( zU}&A7bsNx^j5B-1&l(2sw~+ag+S!NW3*Cexdo3KKKlyto?4 zRJwv_i~s`B)Lt@Zm;!nFmcx`fz5Z|NSs>+RVGeSe1YY#O&=Ta;+8>if>qf0{lD)_T z5`GC9%o9&;Pvf(-!bt~>Sk=ks?9nNHhkq*!tt41s%&jAn4H_Ij>6T=xi|b4oddZ3_ z%NiBF^>Q4;YKIMkam{{NV=LYakXiI4!|Mvbh`o;(+_i_?-Bjvqb}lK$P>2k>IZBtN{M#B~(?TJmhA9uaC^AXXG`D67Jvjq<#RXTH zhHaVAgdVg{OK0mf(5_vY>uJO8iMW~`1(t~v5Ck+>{3O14!}&F za*Uzok8Bnmau2Cd)L4qO^KDHg9$CcpxJd8%j3N5enT^yL{I`qKqRUP|<0r?ehljz& z59-t4B$)06sOO{dz=mLeG6`2;Ux9pT3k6sIg_1L4MscH-Tc)w$=`ak0W=WLmea^zy z*;qaZmM5WO_5gl|nDY~oT3z`kNWWihIEg%=PF2BrG$^=b(m$JEknfNl$8meW6?HQq z)gc?`ZOYAv+wpWJRgp&xb_s(1AprN8l=#OcvS%iRi1ztrjNUhd2Y zriH6p zHV9~gnrylQLvy20KvxB@fJP^i$D;V81xRK+P$}HBhVIl41-hXg%bkFz^;-vrc9=EN(k!@a9E$l0$e&XkcS&>zp7OK z9AEx#I(q$QNK=j&$H|No0V=gK#E4!yrzYQcmGC3#68Xi4=w>uVV|($x22Hg=S^l!T@@15WopaobW;^ROT4>cwpCv zMrETzJkNgT3V!Tl`Z6+95D}Ue2GW)@V8DvUpo_03XGeBKBCtUp9Ue2ZXKVp4EWc|| zJ$JPH!FQ=;W@)Gsgo3Q0XP*c;*O-+0$uPZ;Xg*HFd<;%1umxi1@_ZJ!NcQLPoKIeC>;-6glV9Cnbon!G8zHK_m}XPw zPI8#cnno+Rf_z9AMDY-lOa=^i=6b&fX7<&IdDIOP7!d5&Eh_8Nu<@C^2IAB04% zvwObp{)QMo8N_2Z507ubx%%}xHp_1$dKKv_>s#E;C0;?#Yc>%;zdY9eQ$@@Jwn%tM8zKO zdg$l*#Dc;)szT`DoD4ni2_jV9yI*hejB&6Ssrf=hfEWLCUPSS$+*^Tu?M zue2H7Mmn!($yYZXYOhVlBB4%_zX9XF1{lw%h{OLJeXwVn(sIwW0?N6tq-!zyDvVuf9MxgaOqRhCdYP?`BxI2z%EOimFR*T!7>!2zs;pV_n zs$#N)A66XC4d&u2v`)NXIIs&e=8dM~$#*z_Ps7&W+5B-=){Pn_(?2aD z%#jAB^~gN|q`<6xTtY%Zc{I-CXQetD21imQudyGp)zi(y>c&G14Iv9b%deLOmB%QYtH36j#05#fnTGQSG@;01%)C6x)U$DWnTILGb=^(RL}k!VA_wtTj_kxc&2xfBH)BqS+gNeu}VCJFA|#|7z^M z^v%+17%o)#jR23G;m@Z-1T#pPh{OW#P*wq3rXcYES&J(p&0^3Kz;8T7TdS$VVh~@F zA==leDvkZ+BL6Tpzy80v35nOI0bV`@9l^Swa6|Rt6&uLYLSc6p0{q1l1hI`zMZY9o< z^i;SS_a#9~R;z5vm}Rap)`Z=JvI@Qlt#u#fSXauo&O~pUpJd>LtKYd=9g)NEN7Apm z813mD6f%AducIb2hAKY%=eIDdS+c420INggx2QS!Qf+SE`^#U>Rsd$U3ehh zgM{xVb6?l38M}^T$rhfk1G(ZL%RNcigUW+w2T+mNS@+M#zBUhyM4R+yZKcgIX4Wm zp5E9x(zuFCwIH5%PtfdIy+lvQ70)GG!D+?HD+|r7tE2icrtTZIF>fDL!$(#i^*l=d z^l=l#!YlRZwfVa!6E3*Stx!KS=Vsa9$barfAmavOmYK*%hjF?y!8gg;Z3IE&D3aTb zB<+VYbO!mcf~T!O)J)O#DOXCsG&HLNA|}3u}fzfQIAW z%fjPTkn#G6QS;Or6zQmib*H}tReu0$j;_j+HeWwlk;{Ci?4B0+S4{%us1!vfNdI>w zkIJ^|(38{JNi{fBqNHAUiazlzKO-)wR+mByR#`t+XbEk2_NDHwC(4mu@(XHtcX%B7 zQ(oWHK4V=Al8?5Fv1UO|M2K!{7I&eU>O|5GjgE3kSUZGvigs3GOH|@rq2%`) zccmwZ>@JV<>CzjeI%u&?V{+U*Pe9xUG+9bZ@zLsj!GPSKF^Xf#Q`axw?v-0?=Vd+n zrEMW~0x=UO=uq^)8GVO4c0dF4+vr)4Q6JdxuSqMyvc~y6;V>K*!Wqd|N`!xFCv|)D2`kqtt4$HnyIQDpxhJUbZ(zH|m zQB{h7a#HARA!+@2H$r26vBje`C@pGpNtTJP7EE0(;&(5pxI4J^i85MXnwA~;`44s( z3aybvRCmTIv7-#>SA9JG-OehX6~MC4DjR9Gdc(RXB#V#6*jPF#ymmlh0rQ&z$K+oq z4o(DWtYEG|R~~hc*bJ7seDIiKu%tWLN#9L4bT}&~7Cub?E-Ct(8Gv19~*0&+A98Nw4 zTASC?v3U|~=uQ3D;B0_u$nOhgBlSo<VkS#C+xUIFf37OGwT6=7rYd7#Rd0{?7OyIaoS1H$ z{7aU`uuW{JFahriISUZ76S)s5U)9*ih)D_Zqom}BnLWc_bkcp!wTd>>NYcmfx8#X} z?m3EJY}6`VGy0xYJv-)uDZ9@N7X0d&bkg7TZassfZm{AA;gYBCKSEVj1p20wbG0HE&PZnNI&MwCo#lA63ja8x_fe1aE7m{o%5djUTt#(>lTPbPG!_v^KM zh~PbN{7TSC#i1OX6)o6|CHW-`y{XB2U=IIa_iegdK#Ou~+wZS%hLE!4M-~4N4?2ll z!6`D(PM-%l@U}z6QbbeC>hgk%#b=aZjMSu#EZbVt%3kVm1&OSV?dfs)C}{Nua!OK7 zMs<9B{2OY@4h#+$iZvH2$@whXFtt7qw)vh*@k+MGNPV=u8>ZMs;|3tn{^9WbJ|W0q zZCJN&Cwa<)Edp5Q&U97gZ}D~@*`~`&yZUA;;!(jonN>H?YQrg&F%|OLA7picHj6%| z7_zZ^Ysq-i*Z}d>Di<%QiUH3txg`PfDVQZfNyE3W@@~LKLFt;;yc68NjCX4Ay7UJB z1hKeaaN3`?XfgVRf9M%t_)mu1bisoXnmUKKk8}HTB^U(3%2wE%DfMwnl+-pC`1%jZ zqsV;vbKN2cnLUMq29?Y;q92$^w&M>MY)O~@)q{piDFQwLN&FZ(B$t=hp5t%Xf+!*D z;HPzt@dK1h>d;=_8W+O9d|Fh|oh_mj^C z8>8iWOU7P!oKIgf!U$Dkk9=T`*A}Lxs^%><35x>akbWO(kP!th<#uT1=VQ@AtC7lp z{$xmI4ja=KP#n~^Px?10f~K&6Stu^Ofha4=u^x#G8BEMRW8;+~vo0@LWjphpTw2N!G zcs$Lo2pI2~%-Z-@={`^}3JPKd+Xp2Km#Q@a{FmB^cpkElVU`BN%2(1OPiMD}$whIG zCT8f=05H+yazi^Y3?zR9u6x8_lK8dPcUnGBT0kOb>1B8@ZGO25E%v8?q%crl89)&u z&}Qv|CP1g6b+M zTB9Vkiu~H`3nx-P->qeZB8`_nTp`@EH!)_;cEit2&mm`eNHjVMB0yqXg=AV7FukwT zyq^M~hnKtz5qu%~n=V%S!fMfeL=+{C*gUhKTB_E*5Q{(&I^37k__JJM3~D|Yn%v3I zNZgJB_mn>sQ#{b5=T1^Tzur^M*me@iu5PY-KMCJLb3#IcoR%0%A3Y!^YR_z84~7Nu zDMRiPc-EX{g_%R~Zmtc*h?T5!UYk56RXgYiXF~Z)(Tp%vS|HaI@-5Xb1O_Fz9EbPR zNs4*JKAtB}Y|38J%WsDNgb&v+nE!=J$^Hd_m{9cVK_R%%9lj5;WxuizwJq8-8^E}ayMQOAAC69~T=t)W-_-fZDqwvhs7kaq~BYQiQbDF|wKli6R8Rk6ZXjVqM9#-l_fsz^ma=fR#&eB8!8dS&N8SPFly~sY4?er5qkOZe6#N%9 zNl#T1UAp8P?;gTB^gQC#C5c|+K$8EBY~zK8L{viBQ^qN4ru7%Wdb6Z0mGScOaOnc#eG?o7y-3L|@+e*Sl1Wxr8DWq~S z!i@Qlb1d7lq`Gud`otZpebA^|G@@P?FTZkilZ223aPXnq$cdzIGN>tIb zUslohJL|vM#E5#8g0ugV@E`t!^xyRAN-ZLNO47Mx!j6V_w=Mi(_xE&)-RV z#c;*`!5#cN2Ve-`2PhIkm{&7wER}nb>nUJ**F=>htPJUmXf3u4=?Z$EsN4wS^*^ZT zV={20*au{f7j-nc9KjaKpO|aV&5kPAFQMz?17Ws`QIn2M{J$)lMFt80i1@cS5R#XI z`}+E-G6XypoNX1wPyT`L{kxihpZ)=V7L5fQ2L1b=|Lux?;l4mbXnecrwEt~{D9k@l z#)M?x>wm^*eke2gAB-pniYetk^ZhZR2=u{uHXCLR>A!O-JOsMzflj8j{mPGY%iglvNa=~y4@utl!v43m~ z!dS@5)~BxlrA-B22s%bH3bIAw4e?_EKNAsR6L0r~D%ex#jRs4C#VSGG>{l zU1+uTTR5M(l)=!Q?e>rA)f zsZdynP753cNzH$YDzMbOUk|$A8sEKh7jSM}-*s*kKn?1x_j&i8yxi_xFEiVL{|p_V z1o~4T?kN2c%KZQIXN~}AIA^BKN-=_aLJ`PA;1i>-OJN<$h#^P+%vAg}kDTr{J!un~ zWqJFNB=SP}8%ekm58gUFOLt#@ORo#u#4q&O$QlJt-b2hqthr_!YipsG`<>aKORs;9`LZtXeDDg8_WPW8(wm3dn<=@aktb zPMzzmmUTb4g#0I&r7a=H&MAm@%g2i7OJ4+pqRJMzhfk*^?^%k5*Te(NSif~7Tfapf z8||TxL3=G0p*01am-pVOm&8F6@hC1L&|@E1ggfeXyAf99ovdCy^W=6?245;Ycg^*7 zjK;#9dDwNPPGm=pAIhTjgkN@>QB*W51rcUO&~65^G0jZ}KNH%cAK7 z_n`VgJh8ar-o8e=IDc}70u1Fq#be0=_fiX@2?7B~|L*)*4nY0zmE-x+GgemClG&qg zR+g6E%nPy2HM7IjRQvORxm0dhC9wWb9f8Dsb`n#WpNi3WG9TApE=+YiuloBK0#8|u zhc0nRd|sw+8h>n}d#x1H_+XLZD!!VG3E+J;Jf*-Bqm!wAJnwUXV?EOc$UG~IF&c=3 z?|NeZw)o82KG#MVhA&eVWOT60^Lq_uM%8UTu7%!Q$@mHoI z^Nkvb1^L$PQxbJGyK6V%j|u6RrMRR~*t94v-ok$9j%O;%jV6L06NuM?h(R)SK|nnO z>gTI_^yKFm9GUqsH>)2$XbCwr$JPbp%0iu4axehTw{*SB;o-nNN`|x6pP0Q}Y2)L? zVD~UjY!k39uB+pRL;psVyVPI1=)~=TbVgkS%VJO5nJ&JHLSZjeDQ<~~0tpf5l_HYfX>kfIWH`PWmS)i`R-kx~2m9ZQmtguV#U zAS?!~0|VSDvI+KAOH!F)8FE5}8B3#WRK4JK||DH#zcr+ewp9Hr{P?@v4X28 zGR$$8JNz;M&7TRJ2^*F)aTS7nJQ`&Ygt0tZzD%3$ zCvtH!$}T?aM9J+Qn%hba_{>V0>*SUl6mL*JOj9coc2}JoqK3Qb z1jdteTEUwUwAx36U&1qYe2z0tsd)D34UI~mXp=rxgoY(etw*-NdLe*Z8IrT{lc?>I zyAAiiHvnJAAsNtZl6I0xOG`h7qFv)X$2VFpe@H4OB`zKS<(z_AT3m3ICgFQ%AMHjR zi~$GF2={J03%&C-27BfWR940jaF}+ok6v()%UcJqpcS(5V=3hiY+8 zqF%4K;Gz#l$SjcRU7noaThOQ})>^<7mf_7>K0!=b_ORO;S0~1Ev8_o_H(4if8`6C5+vIE%Vcf?%3w`u; z;`G3DGsNll)6$XDUd0Ig<=FbK4jU0ObGg!fr%y~NQyh*>L&IO~tTBKW}snHdj*hQ0f~=SB0^ z-}=p4g1Jrt$^GRuqE#NnNlw;21(35BS#e{?AL*wKuM?E351JYf>q;1Z+GunuSM`u-lML4lpOoyisS+907rMD?a12 zsOLJSdsXU2It%vchaA+}pcb@6&&No`wIH~SA~@_L-FS)5l7EzE9n-auzP-3{q_3D* z2^~`!zz8~_IAtT(gGa7XM3%C52z0VLwsnsg&hQb}gKBiwa(k2k+&jDio8BoQPX*hb zykWTgb75M(lMQn8+wi`YGIj#1Oz}vg~G=__P=2DF^IMl8POE ze%`?~WVx!>!fB_6=$BP^zA`vm=D z5M2}{7b>4=KB_o`ZflHlI2eW=??}RZStIUWbnp)%Fj83#=DeIyaLmDT^D3D%X*dMd(HlJh>Wv zz;w4QBJHD$1I4M$3lwE$IB;R|e42g`yq%k6@3}|TF}z@_mmm;qxET8Cv!K{%*M#_R zXY!0yuJuhVabe5l6YIV;@zgSjTI9ttt>VL!`mnYu^F&ZB=X7PUNe}tU8+vCDerNLi zeAC2B&Ih~U@98(4G<7)B86%t69hI?{QAYBkLhYrVmD%1YlWeK%$;qO#1csJWM_yU= zU0s{n7fTx<-iD{i0l!$In7D#!#FrAY$ADZ>80^E;kP=YGIiEKoCt1>d2rs*frLOsI zMo!v0r*Gj3)|2QN=UY-bzBzAz;@4ggOcCock?$*2VuK3m8Wiq%1T4l+i zxWA71?Kl!o_a_k(y&&kmoO{)fB-_{M zGprRtuB7Q`-*83qPd zRf*-4@TQ^8C|!GVZ%NW5us(H9a4&F{aNcol=w7v>K8diF%qb=TawV;mBW-urtpPNm{4rbqCcJUm3-GH z)fv-X4Nj&3PQ-$LweiP;v8m}yT7!5SoCkbPyAcFOoPxs3^)pfO>90A?A(GxWPfoiTc2y;DFm%kv&{F z>UP&f_WE|(Lk2uB{Jnm?q{-lQz2+z5b5_I@^B}O|Ls_%D)K!Y(jnO1)KI1#o1cE!6 zM`9&E4yX1<$~f)oR8!M-$~N}8y*_wMVi9EC2N-Gs8}=2V@Rk?HxV#H;FoB>vnCO^R zg1C4AytDQtO?KzN4o#WFq{ze(lRzRC(T<6DFG&r3G5D`u*rq=U7(z(ucF6tZj>Z5M z7c?a(+oM(|;Rju+!9DFuIc3r@@{Obp2}X-ldFA11br1vstiF+*vb{lftvdZiFQ3ChHTOuDBv!PN z{!PI+y-2Xc=QD*^Urc{VBuC@hbK^!oO`LIRm@>)JK=1@$%P} zx{6*p{_MQeCE;?-Np)Iri`#F19-DaBIw_BiVS&xlv{oq4P|p`PyE@olCg57%{6 z^ND$sX3duD#kjV(Wx5{RwKHrty&qmbn`PQRY1hfl?9v(r;4?yBYJ ztpK@=InwX%@pI);rx}9n&({6ztbLS~l}jvb4ILd)*N1&G{$g{Ho{TJ`D$00; zFg&}Up#Tp4Len}i0E@Lvc?p;+1KM`vk@=*+=M6Phw?CaSVgsYoF%i4I zot5!^SKC9o)O{*X>mvgmQbJcrSr3w2!DRHO@)jdOaw2VSIAxJ#_VW=zb$2}+-URsC zV*P>!5C=f)DmuQ3!o%u{B)oU=-6W!xJQbBtgJ7-B-WPmkb3GbWu4cRkr5c?^8_=hx zmEl_YomUl2zv+WYtxk?5MZyV|a|!vR1g8|tb9=i^Bzz&)5T`tLy!YARH$gO>N(4Pb z2AoBS66tGA_6|1RjE&zP1Db4T2VX3*A#1>Hg6B=Uf$?!z_y>!A*`&?3>rZ*vy;1bp zShze=U(IdA`UkT6_)$st%}KoD+*0ct7SDB6RaIZ(Fr=`x%=S0mUzr}};;5P6puQA_ z6esv-*HQ}z3VLfzKDx4vn&LpKs(QG0R~AnO8}xejeKy@edW|>Q9gxorLL+UMVJR#X zo<=`Bs3KW!{Vv8QXR2@PUVL8p85k6^WN4Iwwxt^zZ`S=VeDt%~=;Nc}6X_vC>HXo& zh_9*9eHmk?kq`8}{CzwgWXaUEPSglL%&qI@=NBagT%sssSYSl)CBI&WhRRdGp`Lak zzOfl^cL54t+MLf2s;gP~o^DU&0Wc~4P4a}?59{@XCEuOhpU{$!I`K(Y9{=1hGxI&) z&gwQU+eGAzQ_zRF?0dTo4;l30n&jn|fh7PkbM2(wx5EJ`P)_KJx*mJaV||22Qf~qm z&lzF3j2&-3eE!aoB1dE-a(HsDJ3l)dq`3{GnXJ}o3Ae7}eUd1I_$EVJui0)o9?>cIY^j=J+Q1<`*Ty!I@RTX|9vXlQ32%vXsSGD_ z)~Do~=l=aJZ0QG0Hp_6fPKfFZ8rJC%6?U3NGC8tNj~hb9kMHd#Lk=^5R$ zsa>?WGv~)32|$}g>08x{#FT2S@aoIm65(F9)W?bGTOtfh?}W%pt**NLGD_eggg5P! z4->ZGYI|Mvf3X1D^E77r@35!VrZU?*&wrcq($aLfbkbEdtNxJlHaeeanpsG~G{=sz~*`>-B#| z1KoHy-A!5ej}TG>MdS%9$=!6gYIFya`aIe9^y8+#J6juDGZMx2hN;D) z>Q)=}Cv)ritUIXTnRZ^zq?;-5+T3qtGZ4cNjeUE~U)1d^@wwrS-q32Bd4=0+tXEoD{5`|VcET%B&vAR#9}Z`hs5@Tv(q{nqg(EFE8d)LkyILtcwhAAlm-ZiH;C=7JEFWejN2Ke}5xpP%gUyyM0tcg{=sBNU$O}f_P87t!p zW&Tchr&-#tVWii-R`h0~F`J=n+<(GMx}f%EKl;48Ar6Ww4E@bSyKSPvenS!vwpkLJ zvv+ajkjs8EDc+Z<@*Rt*B_fmX^G{<(W4Xy@dPLj|+cOo-g(MdPmFq=p`rog8lZAOv z&3Iv6mTp&HXT`16HCKwvIj$usRel{~TkHg5iQ2_5t_5=-RBhwd7NxFoEDjXRZ;nUx~ld{eb@SDys z7XwWZ09?`bw>2rDq5d>(9Kj`}vBB>z8dW~o6uL+{X30|cn#HWO(+&trBf)~YK#6r1 zaSlIqKR^Qv5sbz6Ew{*Ar2P2YaAO?^e^z`Ut}OMpDrgxQT%k7KD@*C#R&Kvd7qk{y z{^*pY)_eXU)15QOGa;j);pR+tx)R&-i~G_cBqRjYOgw5bl|8h$xVYCu>h}KtsX$i0 zt=@)x_pe;JlKj4;jEuaY2s8F57ao{QX;$7pp>>{FUc77tol8p_mjI8thkS0=vt?z4 zt9iNPtg+`nU@#1BWy?zomoB06$;rt>l(6W>z&uklNi(`HG|z8C;r&Q?QPC=Xe_B@F z-yo#;vAk&MyVhqXB`g1Z$?f@5Sy_Q;9-Eq-|AE%%`crv%5t-PtBPDyx9SD-^Em^k6 z)EXzHr=MU~!v9=SwD?kMooU&*-<1?BC9`wWzdR)~_d1y7_rdrdGRK~obBZF{&RtQs zc)Ar+dqlS{OA8mD+O(fzo`l)U!qTGUpB=;`ZyJ0TqRWbxnDaDY!UWsiI`6;B3Kumo zdr!_B^B{~MR+SemF`57L?A+;y$Kxz6T=aLd&dj_dRkr=1q;NqK|IO6Q{I3t}*>Ty1 z4I4}!N(hc#a_gSgRu?T>%a#N_shNGhQ}S~w2p{|yF3CQ z`W92%lFo2x!F%u_}KAl?>=5#&}kp7RVA!`5x4ty5c=qAi>N_O5i)!R3p zw{`1Q(#EqRIXSPV>{RZ95y1PUg$o$-PK>^0^Ubtrj_Jk4^C?}Azij5%2VvP?25W@5 ztQ`mrY^ri2LQj2CzGCq*vs_m0B-q;{VyqI&HR2~^jO!C7`yQ;>xBDJ2n&b+=4lv}; zBQME2CE#i;_y0kWY*nR&3n?~$d61w0{<5pe3YU>d6FX9~@}CBy{_%=}A1Dq0J4o}5 zG#$yMMN9t3&m|^i^|nVk9`mT$?W>nAr3mo;_A~Q7^E4i~an-6-WX|QkKO<+XuBca+ z7cRMxpG!|4bAqng?*D~0KWpq4Ub{A>e901u-tE6XJMRvJ&~>jUSUSr*mz57I0$(=z zeiuK-`k$RQw_f+${lCIOip}7^9|8#kiRf2cxYT^;)3e8(uj#%#2w2!0(-A*1KYBo{ zGPk6lnKeN6*mr6?bq}s9DIxa?cBE&IdmOg)3(E@^eZkKqrsoc`tI{7mHt7zI$#EGO zvC)e21w;$Dqoic<_JjS0kVBIfl@>4kl%Gq@9G8z!7T1&(E@6TvVniS)J@w=>&bpvf z_s*A!i#sLI5BfnCEW7bO460s%%hQMQA*5FTG0s(4gXRCJ4p zirGu?qXrBa_Bm4ighZ^6P{m91>&PHLf`J}!ag+b^udg13Fzt2FHeDhBW}Acp1U>Rc zhew1()WU4~ESODyo06UTk=tjR_EYgf%7e_A!nf?Qde8FZ^U3F(9T^!JcCQi!{|tRK znD@8n9BHoi)wy1GD)tAKFJC|rXW0Q$_-m1rq%YT;XJw5&&ZTQt$*OH>+42S7@^Xop zx!DMn8-XANW4!eTo?5+nwHrAnyW7HIoDMY1~OjVVd`+W#{E0YT=DwRIfGrlsF;E9_g8_ z`m{%iiOn0SV_d&EL5Fi8)^W}NG2V+9PdIj&rMPS6<6R|hM zvl$8quy{z4{x0a1t3shaE%gDyi(8;y?ev78Q-qm@beR^R;(yD8O6-pIl4`KzjWE6`Bvay zVn0KbY(0=}_2FVetDBZR_GO>se!aY)z|_1aW#*q^mz9gTD?)1On8A`$JrA+zx0Mzw zWmW@pkTzYj$w_c8&^@ZN>?a5nh7B9$jP923jA9FWt$5iyiV)9^l#IMPkT>69A*Q~L#WzF+paq)8Uc{C67;WL+}-fR`9fGPg8@xY!bYu2nW znQyo(JPw9_{>q}oUz>I2Oc$UNVxxv#AA)c+Nld(%Q9C1dQ}82?@? zqs`na98rJuxoU3ZZX8)zSpz(>{i)hLyRWpG@(xFfFIj2^s!Y!w{|aI(yj51b*u(_S$j!Q@ z_9!n}Y|aVhG$y)xuU8vtJU6XbV--k@eHm$!U-{3MA3X&j#$FJAXLi<$icR)$tQ{wy z{bgXrOc#*O>W^r*Ya;-`zya94{RP6ZpqpM&IyPiMN$A_RuW9wwwP!<&zOxX(v-oES z2Bu?gNa(CS@OJS|zJ+~iJOl#+JG(EU{jQAwlxL3KJ$u*T-S{w+bF$-|`4oK|keQu% zg{<03p+FMZJi7Ly+bN?b!9Y$<_MLP7G4nnM)4l+WZz_R1r9(%!(KcHO@cwMvu<^;L zsHj^35T(vzM@rV%KO#clM#K?dmH_7Y%-ow0R$p)MI=)*~{5|EGmC~|Kd>Fy>i=ZX{ zn3v1Q7?$_o~Q3G^Q)WMuSlD$a9cBpkp((E!Gt z`K_m9=Rc1eS)YM<{ueKsnLYMu&nYbYlyV0v5$gz{s}P<$k&`5G)_&bFD)x9{Gb^o za~!hm!@|OaCZkN&0FXxgW5x1CW~PMn?EHI?r*Ai6BUr{iu8&jo&4DEaSr||nKPe+O zceJFblXZ{x6>DI>w9MSgkU?=&N#PRHnt&MXsBS%c(}sDIASrDlzth5&{U<%Nr%Ja}%*6^d*hwW46*eb#ZNXN`TvCuv38 zI)u#=>a@$w;-Z2d%oq-7nd2_d6>mNSKX+K}mtlGE9?~-W*=lu>o;B`iLWyQ-E(S7Ne`L}~9ca;_{GP44Z&$&ZUr)m>UeoD?=M5k{TvT~Naw*Q z--vMd(M>63p-tBLDUHZ-C<^I?L{&)-0b+T^z2H_G8#!JW;lY>-{H$lj7owfbUobk`Y=l_e+ zf`wlh=VkQiZDf6Tbj6B=rqxGMMh^AAc2#k~^Zb4YRDSD|bi^xIVwxu>XXT!bI1y); zS%M<^G0D9PZWs;-3QWyEvQ*rQ>;-ke=~-Uq=&alm5f@=HEIG*P!5V;Zj!#lPwz@pP zlHvhbvTZ0SSYTQxy!qxk7i6TTz0xb8XLV=!k;1K}2i$7bVqSLw$BW|n#F;S`g8NE~ z)&v561i%o%lgD==gjA*_Rxq#u^YbW}pR2Gh^b1CNq78w-p%6gkq&p#Oe*nx+bSEPv z(>n?Jl9VYkJGn2S`7Vw?)t0J$vQwsPRsRLu)FdWYC_#gF#tqfi*_mT`eP^8eh+J+C$yX4YnXxN)b zz(;51ovSLkL(`?2^1`M6rtg59Sz3D$>L0ojV8 z+%jxX-|MV((mm-pV_)_88fTUj6)_X}jO@I#e43Wo=#^f#ro_w0%6~#u?8}Rm&;O9O zm71M<5g66+@Oi%#=NMC)nVmnyD-lC~FrxsSPfE|aSXCWqV4(kC9g|O!>#ahP)Qr5d zV6|{c>GCCJ>OU$E;m6yOR_KS-E+znz*jS5`$oLdQOJj z=C~c$UukV8HEY}r2v*qFRa5=c&p-cML)U=+O~|q^&?-2hIRU{o*;B9oi3?*G{#p5d z(R6KdNzu|*%zh#x0t6CrS-~=spz>#=kY4@f>yMvDDjURDkn%xrjj;A5Sl@T=-hDBi z!wbL=T`2rVgN3?ir!@qO_%C$`ayBZyZ@d}bBp8UX^l*sRf_HI3FxnGs2m}s=00aX! zVV`-XvoqE}xsb0a>etxY&VjJb6yS^569{w$0-#xjE3z^lv{MO~oU=Ql4~J_LX>a== z?d^8ZRL&toMie5;PV(XI3Fta;Kc)&QpgTk%fq-<$B^N*b``hmzcjW_kXY!9VNPe|Y z0GnL0*W+8dr@H#V(J7-J;Q)=!${VjrzBEMk-@;u4(#D*4hUW8~4$c4XEI=x0+2fu- zWPk!5>7UZ!(REKl?c3bnoqnfgkDsh~T_x}@ngC5ROaDji0bst9pmqN}uXFI=!C|op zeLsaZ+mz&_WoM^ox^0@P#(S^TH{D-v{!_Zw^L^Qh0>)IQr{|p{+2jnY7xTaX7x8+L zk>FMh+<#fYL54adJ^M7(=A5K^q$dzWkNNSZ=8QX6*F58X5&b_kFIBe7w^@Vu!5ZK) z5G$k5SJS*dH8m?$w%PAMynrSVVj+BZ3c`aQRu=h#C6XIJZ1>(bz&s!E5|%W{o`AAn zsy^p6){G7?(Z5iWwFy>@K2itXPugt=B+S5mnFv;>DYi>to_{kRdq(2efm($0G-557 zre@jMV@JT^;16C`Q zZ-X!|)$MVQKkxiYClwSds0j88i^$h6!fbm7HrjJTA;?v*$1mCoEd)UH^;Ttdo5$zr z)4O+XGiymOdI`Y*xgos;i-9I?TES>rv>^~^jsOG$S3oK7&(3yjsoGWbdkBvIT2oik zd&rO>`@~EM1UeG|(C{fX+4c$g@H1$ZGdi;`t+fr>?sisj_EYq! zYanpd6<0j@yIZG^fKbT|LGwk&(x`v6P=LTdbloYC-u)HQ?@J*4UIg>{OxVbsh{_j$ zSuLb8iCI~x@S&f9sQ6}JJUWjY_egu^v-5y|98 z^%QQ7J~}i144X~)O>CGtWB&a4US1ZK1D`aw>Zbp%tc>}_r=(<$Q0%tp9$k9YS|_`f zm3t3NLH6((=|Cm(!KwKkl-6$=jfcAbHS*Nx4IpSMvg;OwVkDC+S}ZZ|M;}D z+;BDQYG}Bd_?(bN-=X-PuF+gKZ743@&oIfz7;CqMUtPL{LD#fb;oe{dTg-xqzE@ID_bIm7 z?!>E$We_OTS?;0O&wqy*Z6O@4LM1Vadt;qnuH9AqK#k zD_1Nx1Nc!{3L=Pwun!k9WM-b6rm3DR-KXs-DOzZ{2aL`gKU(p6?}j$tG?7mqgX{;I z@>@l+FIZ9V1M}HUOrJ2!Zu2}0tA&fLljTpx=zJ5xj{D0B7X6Q|4NXcK5E~x*tTi1W zSvYj>+5b)5ZM%Uq-@K0G%45p^=svYWB|I=J`~feC}A&qGbfZJ7A7<`6cf0P&26i84;ga%K;w4X~# zwo@A{D4`nm4^@*Mwx)f|${Kf~SJ8)R9%*mcibW)OmME@+Ecvo9e_yUFUdqxjrljQd zlO4(}y5^maI1}dLPSzzhUAoZgs`)dw5Me12WqCR*HYQszMF7IQHzi&FyEP+1N>2Vn zMUyZ3@0Xu7V65vAh~%`+2v@^=Sn4}?QgZ)Oe(Hfj(I?1$O*(qq*( zHQ0EH_I@1#>({T3?H1i_AsFvU&`pzmU2R9^ZdeR#hVt>Fj4`>5P!a|`?e38om8kV- zMd0S^Z+zkU>#seI*qUQSz}umO+Rp8}H`mtI#GQNTl_^$paJUD2Rk^+5!mV4kHkgcV z*4T64f1P{4wfC9z<>k96#h_1BEy(e3Yc> zQ+)0Nv&zfMO%w6-?6H6L`n(%?^nYSrV-)9KG_U@JH60%HAuV&v8M>mL0tTK%yH8He z94R~O`Orv5LGZv_6X+P6n%b?KJ>vC!mD?}jX78jW53@&JujqOi4|JH5lN007>~F6q zTtp0YlLJ8npVMUDXJrLTx#fW!TK*5iY`rgCx^%9I3HtwmqUnFKGTIqA6UM?7VG4u? zW*Q8N{!jk8jb86pP2(Mmo9ffGsM4avCKJju`i__>2=urb?g$@I$5JwK#!9N~60JeL zf91+WdwFN!9`T_~^4wlnSh$6s15-{p$DgwZX-IJJDqQ<#Sp_$gIYP7PiD1+t!N9Y? zgsEBMVRhjiqbYJRPtiDf^w{pUF!^=}1XghDsBBVtda_-OxV+KhdF7|llJYVG3CwRVG2rtGlZzAHMvG8-2D(F2`Ybf1ET)Dy1OlCf09*;qfDrU^FzEJR_5o(wH$yx7I0(&{V74pT5(u=0 z00aX$cqYHBZKxeFXwV>Y4-6(^mD?&u!h(ksCr^Q(d@Pu4i?##;Eg`^!$GY+?lq&l| zH69EE10Kz*osyY1=3&IR$`vyy5a>(sI07THSchG&V(_NuAL75{I^S&FIYQrJcb_sF{Y6&`Gl>ZN!Cy6))%pYuoQ z_eB?7q^_&j_B6i!z?os*esk?}V#e5kc11gh%s^lwPm%svnm;=Ht_V6@5&UWTl9Nx3 zl#{1Js|mgaLm*u)tl`po+x& ztBQO*QcQlq+fPi)>g|YdKJBje-C_+uNLdim}BgzT{Itl>@1}=eM z;H_W_1|X!Pb$wK4x%6}texjaZ2Z73+mA_F`p{4=cnrXqbP z&j!>PT@h^x1Q-H_U|=RR@}I!U(Tw2~D)5jcrqk}+I4EgUuY`!`a%3bBE;ykwIbF0L zw@jV-=CzZrj(~OW1ul;(61;2u(F#R}3IzxR_$HlZQ*3|NHT{i~&pszX(&YK2#Y@c1 zjJa3m26i_-8(p=x8EA|GY<1^FLvGbYvH+c~%UvkMG5n~85{0L2U{2f72 z-YYCz_yY$$Jv)D#E@{_T;}xW3jrki``|Tyg%bKJE%*@M6@_FRD-1YY9#K4cp$cPV9 z)w7T!Arh(N=2|t%h|2$hE-7zY)BI6jK27uOMf83%0zNe7??`U#&!vWjoA)a%Gw%XT z)-xffFf$E+`JN5Sg^#V43n^J+|0qk|3Z&#iW&!`fnBs8zLpE7?sIYL+208~zg7Y=q z8v*x*Dr>xhl$5MQ#p%2c?ir*}H;?q}asQ{wTDZG*-=nKnuXdBwMTEmX&Es)>vJznN zf-Ie*td+oRU@kwGk}>vfS&{Zy0}!TXkAKjod)LE_f~*Jp{mjbhZPRV%VqsS5y$v6( zD=DdDLIP*_sXk5Fx3X}tIVSYyULW#PA~pcIi?Cx@T3SMsE$ns(50)V#1rt6bRFo;X z001BWNklLDEh%S?S(tYUmn~=QsJrZq*It2o4K>&W$S3^ts zO0We3co!%GLIDJHO#-O4rSGDwK%gTLU_sUtTM-DkVIbr-b!6Rv)&=45tCX?EkAr8E;>8_2mekCY^`C&V!HEwYrBqdn+8Ans1-#^9_ROyM!iSR{PEH<|aeG2^DnUSG7epNJI^X%CN{s_XI^-6L;+K;_4g zX=#0(w(xURS&4y=!Ze8llYXay%ndbrJag8qTh6Q=B#bjPq2K+wuB}6C0A|VHe&hUqT9`L)o-H{k zx#63C|M!X$l1_LoEiF0Tic>JY!`uxa6|@Q1VE+=TCV9cYL9`J%2vCYPSR2g@b|iM} z4Yk-br^fe+H`l<>K}GbWD4 zF21DvqSR~SLk%Uv`Yb9lXUsfZmPFj9P@AAG*dG!MTz&Nwb;yEtzU-FMR*EdS}dZ@$~3dw2W3ntdk@9XfPB(&ss2y7zh>LFE3*;{cEuKQ!^z*X{NEpUEf! z!PLy0Gj-WErp{IK;=1y31}e<>?|?Geg-HE8`aTPIhnNA+$X=Dw0sctk{OR!IblKN< zAL0*~k+!oSJaEg}O_HX+$Aib4kF?COfA>n-0-ky>W6Z=H&FdW?$-cf;=H2MSr>f626=U6D)|;7ku1!%v zTxd(l#ef1G`qc0T;j-});sCtH%TcBWSTZCd`@nttTyoaf(-qx!DzY4~SPTBX=Uoa- zcUDQkk~^*agh1m~r=*s7AQdPrS~NcuDFRiycd`fW4OQDJo`abeGoc|N4PrGoovP#W zWy|JoH0y=cg%8;itT<=njGyh%JRe)#C{i-$4dFaYbbtx#&cmzte3 zLY3uT#Pbp}D-Z}a0=LbW@#&RUTuyOnQXpu)6s~D3M%vMG91)=aA3R>z1K8v$DP2Q) z&WUe&y{=h2`aPMA|37=z0UkxwMczw2+AfYo6^JrNnJ3zwsH9Zz32Y0*O?gG@Z*VkvxQFd^ROt>3! z9cg+=yz7A^=mM&{FSD~#l zt5oSf#Reb|L_nY`7W=UAusw_m< zyY*xlX?SP=KS3}12r0??Jc2vTWaeAZvI81;0P12okR8X&#Pf|xR!D;>aE609iOF(0 zQ?k{*qO3_1fe@)LdV&__=YOT3E~2anPXJx9PtO;CetP5H_bC?27pMW2ihCV56x;@p z`hZ4cWY1>AuY4)W3kK2+XMuYsO!#ut?IUQwsv82$HzClx^K!9* zPlE!L?7ExtzyH2y>a^Ko^PH)vs$sw&|C(ELzp=~d)b^nky%i7nK!LD}C;=foHo~6J zlVjOib9SWOsW)nbHE}lf7pYD;l`Ui$t{>R<-$&Vib^~b5J13j&W+Z8MUiOZ)v<-_5 zPQHOsIFLO;# z79M$0?F$Ht79p(pg&arv&FZ;PQ3FGXx$s>u{oi=*9wk}{%Z_C|++3$~%L#RV1W*q= zCpjd^1e8N6m54-;C3!ZG2zyZ8@S{oqiF?!^>H!S|xA=>mLxD3H5N+NS7$^*23M#Z%ze3^Ijmw`m5a)I)W zCxB$wO}P!Q=(6A?UH<%wOSTT^*Z1nUI9rX951#z>OG%x@XPF(X1=(GK$ymq5+!vcB>R0amp5!~+Gs8OS|nzjz!#b*&j zAB^DjZRlS^FV^%pjQ$J@=q*qg7@%vtQ?)HHfOobHctH+CM%yAxew+h|vKm9a8Bd8} zf&XWL$&>E=YSf4k2k|{msQjL5<Eq*2p zbqX;4<*IQi6$q9{Zuhe)VH_nTlz8!hykoyi)H`|N5**sx-XJ@5p(fH=gn+Jq7Zn>V5%Lk|sb;?1& znoa#>iQBI-=ttO+dx0def1YEP?sEnyg1NP?Q7VO#Mnu{W^^@=y&ei9b|j%aYT>~^9+-(&uCLepOHx2+^iiM z4?#pkLPN%%8H)P+Iw~ArDR~e*ElNCP@2F)Miv8^g-yxgcQ$K!iJA8ih;JzVnoE7zi zNPALy$O}#uMCnDnyd=%gbA%KKEIU-?Y@oaZ2z>0}pc0|N{ySS@djPS}jA3M#p1_da zJC-BOQ8uzeRZobqbsGkBNVFOZq5XHY#CJ8b?BH@)`fOKLdZs$o=;Y*Z*(JPzHv8(w zkD$amKyoZlksKAzS;81VLYshZK`Yr<^un^a-MS~=*{oUP+YtSJs-{VFu;|-~$RRiv zxPmfQ8HG@5l9aXiLt%{V-)#YK49r82aR!|9z?!;JpcJx!XgUny!TvSXr_qmLfxojr zWndr;(9atH{iKqCHM*g!XFJ{td;ZRR{~kShXi~g2ItZgP!vg170PjU2P?j%4uJHHT z#*KuzNAEnx z*so3|vM}s-Psu|Eb8}C(=-RbjXh5B5yv$^yw*N!5P3lzp1&QPFw@Gyhku~m11mS?d za)VIYPaSG)!bN@khc2o7J|Gu+|*>D7I&Zy%@P~us%nU?EJ|5&>pmZT)Y zN_U_<;|_J7-QL~mmRdR=?u)sgD00LIe0WmP4Mgs$dC(dAQm}kJH|H+*)j`g(#jvqhXmFM`+ zfe5^#L8As$<{)49P1~pBwAixoE?R1$Kcf%B0@bmAE-;XTXLD3_&Z((m5KQ|V0gF&u zT*5B=e{49D4pR~s!?BS8Ur;Rp<*i=udC zpZ){3Aj>{fZw!>TKPPzHUssXYvn9UIOVT6y47tS;-%;lHJ6MT-Eh}sD-byF&X-O7; z(mS7&)G(-C_*9VUm+)fvYfk6JQq<7*k!AiY$8+t)a^Z`rQ2eCjaMIo_aBNqz0xTfz z4||Ak9JT$g(0o(fB;2T*(2@N!}g=?2`k-_d)2P2EG@_YzJ?cMj{7WU$ChvCm|C^!?jIWN zdK|hMU*@47 zh#CfrCIPkAS4jO~}Sv{n%5_ zbeuM2QdrAYEoyA>g^4vD5%=e@=v#p3_HdvThS$cAgE6N6o&`|i^1RH*<7+A~0Ou>n z#F@?juH6w?+5P`LiyK#5TP*;{bTsDCtq2|u!?UT)*)=g<>U;rB_9o`2uYshY$qi#O zEKn;ffM+uS>zC!2CkpXwRzaLz>H$*XLCGVni%m@GiSb2T>hT!;8y27zPy+*4^LGT# z-h2d_6>huQxYbxtKyk!=J0W6{%fg2wR&(lXi4QZ3_;YUNjyKOadhrYK?=SN*)4x>r zRY>Zw523z(gTs-cL|QDigz*wFU6JG1I$LktXt3hTgp@G?^I1+#+EHYZ6Nt-MoaZl&{Ic(6d=M2i)b>JSX*Z`3q!9o^6V8~HgIsp!ZXne5apkDAh#;@@u z{FzchG;9wZfP*<%>2Im+QQ1d~CtZJTwA~&li(G3DkT;eWyXm3u= zQM!)?bAm$~&ZQ)YP)X42M1KRC;b}9=WMyQed~j~8iE!-MI6Z1Yc}{}4r-|fxNkvF> z@7|q1QzCp=R^%SDXHVuy_54MPUiz|owon_+?4V}Zh>g;v(YeuJdJ z2xNFP+1r{JA>PC32uj?JtmpH17gyCppGF^s1*&5KB{0D9EAVXoiuHW2>YP(k$57(I z?K`#)pFCyS8yH`3P4#Q^V_4v?EHL=yn>NmxKBE-RWPJn%o~^Bcff@}8D0;vQzX}uV zmhgt*Q?2&odyygXgUsIZsxd9Gi4TY(QwE7UO?r_21_Hk&ti*23$*OP)sZ)w<_SHh! znMYLTlkP`t`E;2PkF$d8pxJE7OTh4+D?NlS`-AkLE#WReI_l+SZP#k^sgo@;(v>FB zf0;_I7iCL)S9W_I&CAQIqG1eX{?;6k?-$EmV9?L}iS}K>kkgT>T@!WmC7Erh z*5K3Qr~_OlwDFV3yl1KoxWbjdnSYgtCmuEbG%%uVaEd?ilzHyjxijNebti@Mn;23D z2n<5A>QoBR#4)`weoimb7Zn>n5pe@HFEdk9N~qu^;Of9h*YsT}c_T{*$`vXcce*K1 zewHK>*_}@V0~Df96$t?E_b{>;BYOBZb91+xu8@a>!UJK>3X7$nU$kW6e2GH3pFSrZQ8ec{&)K9iSSfjP;Qg=@ zI3mt%2x=?`8sX!DtTZjNgM0e6Ne*0?mG#XzgaH&8Se6|9>eG)nJXbal0KO}@gs1up zy!jbb3ewk~I7GFfo+0NUIB*?^2j2kk;09m!X|!)xpgI;P{H^c>!1~A4RA2xB<0S|N z-h>5av+9h`IL5F*ODQr>55 zh6QSa1t{VX<+Zf5_6WY)y=%jm=oo-HZD}@{3+%D+w*tkgA#H2R_>6JKOP5wH(arh^-%^Ect6rdLmBD-;jlFayY(-#{TEn8lO8hkCwkDC8MfY-+& zNT9Iqt6PjUd4|LYQm!LiVW#g4MF5_Whq?vVlHEBuKdZ+@*^(x(L_R4<;z25XXoD1? zo0zWQSU)(lWeuyq_EB@s5aAjRfARjOoL5_y{-~+f4 zhT_8*g|Y|D&PqUq5xe2qA5g~$guxxiO0>&yq|H+IQ7C^PXSz{h{J*6L0LraE)fi-n z)JIKzm?)9-ozCqCR89lHEDJcs^Rt?vr=*Hu&05oYa@HleHdb;&us|rhE(o6G1*o^s z?y)`oUPwU(p)`V$Kf1MX#l-hzIQD9cf4aJll2ZED4O@#~%Jo&Blfx_G2SfDmpKq>iR z`A@-JGY%P^^))#*)Jhj(z6!v5Xk`pOROD;Q&!{OsvV;Pge%bTNSm!Q$N0|z6nupKfuU^oEXPx3dc|4oV(WH=NtW&-totoJSznYr zZWPb3r`-dL=w+RCCjfsxdr-aA~3>+T@J@_^>|v|Kx8gYMMx-Pjfrnd zuZd+$EtTy1$&*}k!{$>MB9@dAarK_e3W$7^ty=;kdq$!>KnqB8iMCr!yy;#z|Mc3G z4ax^_yv^5fQrT2B7@;5;>Nma*vWbi8hc%s?4KxKsT@a33h0=r)N;s&h0-!Wu2Fg0J zOC^uE%bBrRvynYv4s5cIaN-_kdU`>{eU4iMCwOxeQb3z+C?j)i1x|i#XT~`s#8r`z zoz3Pz5Id%85|I^cBz_{Y!d?1ffyTHE@`<+GjB^2*7<=M$Nn(I}IEOlkuwC5`2#4-@ zmC61zDj|ZX^lnaUO=cr_0Nj&Z^HtY(gGAQ z07A?GaMat>#5e%`JS|Dm+t=M zxnHFkM1k0|4E=4IT3=50ajZNF(SfaMZGQy#3QUAG>$A>k8*qZ>NRoU!KPz2PCFtDQ z)|d}8FM^!lU62zzOZQbs1d`_%cj;t3vwf63eh5CE5v*ihM9UL8M#Z%<^L#f*@|_9d z1NZIN@y%|vAB!z%3Kk#)PO+BxrqFw{f5=FQVM|1Y{W3pe%VEk_z_ZLDR%9ID5L5^l zEuE8ENP*-91XFHS+oMqaQ2)9sacyrI9 z^0Ut$$j|?c9#7>MA*t9!kC5nMPqdoA`2j_RDy+Gs@l3;aI|00A6>b?sV|y6i(>;16Wnm&$UKc<}6*v!C_q-DiNzFpVzNIE;P`3!HC( zv7^Uq89#p9A*7{)AyfWHI*cxn=H)D-JYu& zgfi2MyfnE;ET5(l_(fS0014vG=47TQiU4$ruqF56i6@X{_g6Y~ex@~2 zxqP=uf=BmLnL)-(o+)#=pW2<9@dMpwv0M`(u^wogircd@Qxzhi2y5)kENil#FPm7= zU&45fFk#5FKTiMd+!@L2pt`S$QpP z$sbU@gH};dq4i9Gw=*KyDKerv&zX^`9$OJS;4E{*&b0khH`>z1WCrY zMd7p`%l@WH7gA!q(^!+np>e{vDZOF^4uY=#AD zhXqF5dh52SlP4cTkU3Bmqvcx z9tX0%AtK8;0mZ*oEIsqKj)c$@ZB1MVnD#sR+I;wr3q(oY133BXNjaURsXG4_3y=i7JYEu|k09rmsU8O@#@pS5O(BA( zgUq;(l$|-VkIFlq@szzn0~olb#g%p*NLc0wzOg;Q1MrM`KIJPQtXyo8xeiW8iXu}8 zLc|-O`p_2vjtS~XZ z0946_MOot#(bq_KiQfaec5P9l_M&4GpCY1^kDC2+PNh9zJ|z8i6=bHrr#>W|~ErY8GH z)el&i|50SzbvcE!jw%wsJ_~?Qm<4nM{h&$_(eb^&^H2`8#)K2c4=p`>_;49* zmzH~=ynsPDKqBsm^6{+*hA^Y*1(_b$vSka-0WSocd7dLES&$A=)dc;^1iQ?VWbR0Q zRt4%qX%|5Sh9SN49cdIkS+Ngg6sCYWlR?&aK$U*%WJzvfW~Cz1ucuy~~JMeEDca>l6t%@)9W z(GKgEG$c3D5EvL#8?F`e)&p3-&yBXnZRHpsOO4I2KrOPsEyIRwop%3yhcTq!ORYq9 zNrM9FJ%LX3dthI`9&pimsPFzvDko#|^S3Lt;Z%3t9KgOLx@Ba3EB2w@yl!x4qdP#p z=@rrTB5}W0D3jCh2OGm=0wC2u6gy zDZ1qGYCr1uESByaB~G}@BeO5=bZk3B_fwfXMC&D+jtYfP*KfrwC%<6G$iFF;sC1F_K@ z#DcBqIR|rdPeV1Z9b*oD&|TtsXxFX^@pvd|yL0qjTKtyT6O^||& zMd0E=wRfs$5D*f++#`~iYCwT1W#r@(Ox?Hthvl~n9(*$vVaYY|9YL0KC!ndr%)Ggv zQoCIt!!$O-0=2;ccs}PM_&1AjGwmBRZ$Kw9pKZvD7Q+FWj_A39Ix;rH0=3Bkw5$fD z1TR5(XBq;ye;_3G#aQ8VB_kNI0))LeP(rxX7kwCQ8Wy-13s6}=Ka*b$=811n3R#6{ z`(oO?m~#<4pUQAoYxrPP2ZGk}p2BgfHHS-LDX_73;uU#s+!dej& zpvDCuNXCH!2OHi#{;tHmIXQ|V0o~weuV7^PWjNFt=@iXgBg5|Yl={6wv-X{$qg(p% zemy`Wa*SjA&SYn7*`b~fnZj`#L+Uy85O;gGo;)MmER+?`P$A}UNY@az=kdHe2PHt% zHd@NSnz=cmEWHG&zn%1l82i0j;9+Erloax>hhNI1(+TH@n7%L3bu zFlfe;a4?ZEi?MG-&=Bu3m{;H*#-P*590N}$iO zM`SXnoFkP;tYZp%iV?);v$M4T4IdSocrPo;W_=kz#aMwpAk0k|zgC(-9reJFhHF@{ zbf8|Mk#ZgYr4Vvf_AFERCX|u`NnQ_$$8!XfC=UP`xTQzmxocl~uIfEd_-Qi54ERVxR_3*QAX2KVJPOsX;ZXVUn$VS!6+ z0XXXqV)B{;XD9~F(0*Tyr*d(*52%@VWMi{^)sNAxVSx*^fWimEl0}t)0iP4o(s3%8 zPllmNN2@SDX!HApUW0L-VF7Pj07;c5D0SHj0>VvLHx2i8`xnw4=B;cXTXO~t8FHH} z6Q2|3UdR}YbN;&)7|_4pwz;!sQ$+O-cyBf!=&SiNHD#4r6BL*?Zyq~o;v@l!zk9Iw zQ!>aj%PlkPZV>)y8Es^wfe>IDxJ!k%cJ9phH9kH*0D5ktP~Vr!Nv2?jW6L+H@hG#s zi6ecoGtN1hF|n}`vdE4vm)(!;b~=yIVI zh_J-Puq-o8FOx^JjmLG*YDkq;;U^aiWG*~17Qsgiuru}LHGfx8lR znx~E*Tn9IcgpCFa{~>i>ls$12vI`NYp`WJiv)hx}yBVevCzNi2(!g{CFP>CL4n6!X z!h4#c-7-pGNEH@LfqwmgxKPv$3MxwxI(D=-@DDZ*mnHXp+^f@-PBl;Y8)QaW13PId z0ZQOPl00zSY2ZRrnSh;JbAEN6LwSOxltB9cYUJZmSII{uYL18?(4yYB>OX zPEZ>1lZwPp?x`hV62p-IwX}rp1Dc=-2q0fZ;AWuyK2wB+M3`Lta~5rl9Znc?M2;h6 zHWqz@u;?3=nwI)z>sD=+Mn*+6^YsgQ^4Q6%WL{neXzB|P)riHU3Ur0B85XEL7QmwK zegv%^2FE}WI0lq}sV_EUc!nSVvDP3S^o4beHoaj1WbcPz4e~5dE%)PF{ed^y{JS>b z;Lv^|0XMxhtVx*T?~XTqH!M)o7C=xp42Z{H@csS}r36*h$2C0`wLc_W#Ft-Q{^F~v z-q4bImuf6VzlH_Qx4@0pUbp4Z#~uOjnsEb-{sPMCwG!`|uvV=J3ebziBGUpxY(-!o zs!!kkiD2Jv2}kiU)eshY!i{jyV|c>6>u{w0NcUIB_OT9@h>Za;SL6uk))^cCX2Ogp zJbvhYwdNhhfngh|&#d(>j`{;3i^3MU;Tp=>lRiNzjH-&^y5VqxIr&p*F*t@l6 zWZ|(hp3+Ga9#8jmv30w`BufiQiwei-YtAX#KC=1skW*hx3ICAc?@BZLASy7)E>~`T zewN}~SF{`V2qyM}aH!wZ#t&`rN^2S$Vtcg=g zicY-h9~6>6oqJ><+_W4Z-?3w3eEg7rGV#bHmJz=ovgt~wG$`c>ROR4Qk$XJLG3kir zG*tN#P~ETy;Z0h;?Jhk%T1N_rfKc*E1SD4J z2^?d9@DPc+y##W=f=UucAVDTT&aplMGEZpsv?dG&LLv_Gln03I_t+=<@@FNe~T&sQZ)>37)+xCo}yXb>G1Q2X8)n?C6Si?XK+4GyDQ9{1VmQ zeD#0D86t!_M86}Lk^@4k<-Y36XxFg7g;)TN$-VeiJSuslYr~s{XI)4e)j0=9GRiU1 z0}IP5s&l+?jA4PAwg7_1BT%;31xsDV?Y7gg!NSt{gFLU$NfP{i1@DEw;mdj`DbT|~Q0lLvFJ!<}%yCv~E z3bAh+5z#!z9MlKFi$jd)DK3DwsUAzq8)QkW52?PV^<$ufdq5dDIU<%)wSq`n(nF#o zW%4Xvoa@-8WZ!AMy~we1^azEv5wXpK{7p*`^w0=i6b=H;)X$&gU*54}%Rzc>1&2b& z-ISAnavb=x{#(mMsVPbz0)d*?2Sh?o1WHy_*a;;Eu97vJe<+j&wrPy`5w^q!%0%(A z5T3WGWQQmNm<8v*C@(W@sdkM(9)N7{3c1|S=LbaYMnI&>D1{yMDHFzVBopyZoFk!QPD4@d-m+{ z8R1%G{WgFMWT5Pk$NSRpI{zIo{x&R79Sh)_eK!IFk0F?QGfD|GS=H*C`%jKR0AdS{ zKY)eh*ne`Kajap1nz8@_xnuCHexx!mpmF>7s(&C98e^@o8OfBB2vjHesvo0W!vYs$ zfuDZ*$-i!J-BPUW->41WZv^mW0R1_~W=}W>$1CDuuFW{tuz)WtkermX^@Zo3rHBCz z2<%y`_^PlZ@3(xP)%{b=(qC^1MY^_AVVu|em_Wq$z4gfh|)h#MEej+#o>*YC9 zwd^w-)wfxOSp;WO%Z5QF?@f+lmu01=Xp(+0F$p~($#<1RxShFKsapX32x`)z-EER2 zWPy+S)MFdVQ(Dm|$2GC)mWE>#nVjO}&} zE0_Pua-2kw41z1@OUAGC9`F|^1co#d?~%x-ejGDQ=sp_gz+&h&cbVUGRSkj$j){xj~^?i6wXJa9!Nagx+!@JiHYm29W7}$jQVY)B-GTJsQ zaG@4ZON47nU;yi?FQB5+H2LbDt>H%mU+8ri=NT68l?5zT>*f_pmxkf_EJ5k_)CP?k zXnc9T>a#Wm1(a(=R)|8(Uqw`LPNXev5y$Xfs}3=O1PvL#;v0Fw`8ypc8Y{IzOjozz zLIew5Dag)nszw8WAK0>`qxo6sN|u{y*^4ZhTYReU4nXN$dgDgM#P@}RoCIfkrgpwH z;dz#j?KxT7*Q@(z9XhfBnb@b*4@O5PMM|6)M;N&f&~*hqh!TX^tR$`XFtSaR&ZGO4 zV|i)%`8)*C*5tvAB>pb4aw}RRk6^?IiO7fGD7VPV+WxlMf3z)WlbaVu>`G7n{oKC9 z4@@p@dS?E%pXj~{iM=|L7*YC)$_t)5u0mBHg!Ahnv#g&-VD|f&`0lxx+un?{#m_7` zRrmt6OO!q7R*xWNntAT#qTi3dsM?Bh4zPl}Q{b3^CdvIAB>}uD+SbdD_aBZLe698! zTnl!Fun8#H*sTwSDEA;Xah4!Tzf)2}&CV!sU|6naZdSTh>qVsp&Hf=HVS^A=5|Nf- z2qHTUOq0*;&dE`n_sGbe%@}|8Y*8Z57gUy(DEpyOKv?Dnz3u6^IM#GMVWdy9Gg5WW zNy6)lEWJiK6wcWy?rD@4IH?+gx^L#pdH3EkZuFCN0_*gVIr&9En&W)+f~xIe0;8mk zkK*Gn+aMnFwY81*FT?_sTiK!w44>qbX*?Yix?l`9&fn=GhjEWmt1rJ8-V z`Sxlqa@dp*Wcu7k7Gyhf4?(_8W7UtbCd?2)z6Z$tJanPSwIOr=s_2nc=jWt{zi!a;V9molbK3u$rV)qz~RC2D;I;o{}r{( zNPDvKG0V$L(c}ab27Xz*0Sf^a&Z zELN$=hyNE0q9_Lh69V;03l$0qra|B($kP)`LM7r6+`B#cGL$H5;(c^1KrOted!B48 z;U;YSc+JCpX1|@N_vr&WF7AC@|F!P&Gt2e72p9SI|KW5cODajUETRMW1s?Wx`$l_) z1uoVCfHU6!l@40}KORUgEs%Dx?ds1*CU!g=pe05fwKuJ5wB>CJ;Cp=^=B{b7Add`h z628UT?VsNs9Gs1q!xE%2scU$Pa81F<*Zmsp8y5Jd7QnMw23YjlU{@daPtW!C@pwjkb!ZTzQiwO{%Emd7}@tjanTPShHsR z-PiQIdMPrapc1IqD31Un1|vaC_d-=-x}>M!0OshOI=j8cwJzD+9s6cgp3XsOU>WOS z7w6=p0FHldi?Z3G7~((il&5IA3O(;?kG~bn?_G80ljzvk!9?OB^$u<4`1tyMB0CDQ zg?@RC3T}YNn7E;oAW-H^Ly$c`N0vyr4OsuxL}15b429|lqV4ubS>#%?9N!L7gUe(t z*dl<{kCVkjILfq)K?#0{)8V(`hqXv4cK!AYV@B}e{-g%7f@(ECv#?*CG{kaXOAk=NHgrRMCx-a6U3Rx z-mLB0cgDqaZ{?Ca54pwi$96fLzbN+zffq;{j)Bs`X+07^`3=wsjyI1&;6)=rv{<@_ z37l(L$?u`J@8AEqhTNcK6C#n%a8Omu&Q8g1+cvgtolx!xk&!p#JI)1uDo6?4Yjd+Q zH2IDwOZ-68j3pwNqQNOUL4Cl?nny7RGJvmQm1--iJ^5Z*s^N5O(|8@|{UbbU$;;gS zpn6=FF0qYF0qn{gN4gSKt|ZVo{p8cnelcb8gqAH@w&?85m-GC#K*ZS|6X`}QG*iI( zo(`u=<9G07zed}J1^$Tz@SI+a=kp^Vsiq)nsiB+xNgIE6EC|*SylcziV;I9tb&1QCErg zg|>10`0*~_>iQR6 z4hql<#^UcKxWl~=80bI=1Vvt&P~s__yFVvKbEu&)e?KG1F2K%}dULu_C!c4{)3P$s zMymU08GO7)>i&*#ajk+R(}Ny{o1dStwk`KDarLs^+?%dn(rd9i!Vo;{fgksXEhBk*y&K<)D6(EA9jISkjLx${IU>WlTLlR;Zu?lyTZ@ z2_|A5r$3)6Eu1d)eBvoPJ@ouw)Vpu2?9(tj{BZ;!24OLFyZ)NJ{qGaUPYeJuVGKSD zZG9av^!C_|_WnB-C_GwdWliiiK(?TdblHVq40j0NzV zQjVR8V2tVqE)1<)?PA*ef9F!-LCkTxv1a-T0kdJg=)-8!uzizSDbSJ9e};2ngmEzyW<$Wx$V)PQFSqi8JN$;PLtSUzO0~J4Gk7H1p({!XpRo zfc9#s+6FBpfTQX%5!Xfs6bPuC9VX?*JjXV06E-D3v!cGAZXm2%48pw6v$E1OVm&y~ zfif335xDTZEaUzKkcg9RV!8(G`!3=xcI4*fDrAWi+Rw3Em@^~gsdIhD4?@kpH8(R& zBlbhae;5dktO0!UhgIpl2uoZHobme9xz+*!^&8#7%jQo-PHY7EzV?&@K_O{m{d$RF zxszx7ugG<7|BUuUGvvtp59Cc`J0&Ajr3RzzNv}$x{BEA}9DyH@4AU4^7DEF}uWZ?} zMRok4b`W3R6v!+tb`{UupP#P;Ug!pt!|SpruE@{M&)b9aUY_?1kcnWOe#NM zA@&$v*896(-+#!i?DYNWao+wv`kIMxhk>x?9ymk>L5{Z#{1@#Z3w|d#N!}0d7+zF^ z-CmYmoj7`;6Jui1@ti)4=d{Xq*Bcj9$!J}II_jZ-p=x|D-e}us!?1uiEuhr=Gt78! z4D|9f7Y4pjHv-|f1c-sfaJIDh(wo;~v}IVpTNXfI;1t$PYmiX+1L?Q7`lwDj@H4(G zI$PAZ`!&5g;$20BtFc|E1=_W3OF~0Ki6hHrD#aH%w9Edykh*m@fBV&!@kk67qZGUo zO2toj^P(<`pa8w#BZrQbr)Fk6JM88`S{-_nJ;Vn&!vFvv07*naR2h?>OeN{GEH4hF znfuQ~SJ7aawWsHHvBllQ$!sEs`ljiPN3+@@>%S6_!KJFI0EL+QbN)|@jA@RF8lbTC zpnCkWa)CU!7xngP8x@j<98cu(tXzj97mW68ctF-cc6Zt&F-M%v6h-=wZj|jG^!`Wk zvNB$;G6q}nco5m`6+9lsRr-5oP@S+l1%}ye;!LNUJ2q#~V-Bpkbme@WF%XcpmN|&lxcQwNgLc}#HXMoI$Jv<_lAu)VOWf{Rrs%8)z+UO3C zT>c>q3}~76R;~OgvVeHxw`E?wQRPdZh~_=D3@*@z#V&NJ$Ms%U_~hs?Okzg2@QonzwL!hW-$j4*p=Mg}FdB(xO5 zEeg{?^tePXkqEmj1484&DkTf(AB2)t{g{p(IhwWp!wu$JhYgi|4QobV;7ttqDC}*= zWZKJ{9|fbWKeqs!&``)KokH;EKHT3$hMoT20tleC@Z}NKvPEY#hBq}Q7)cwh^yZWjca8c zVQhv4YO4kCyq?7K`aae&6E5W#DZzQ#_Vm3|?!Q0zQjX(t?|a&P_mO^mZzKq?T<(`r zE64BWXa08kwrxG(gM9LB9O z7?Al}YhnVRNB?zYhTRq=6Vn6jTQwV{YSF7kgLeHwMiw`z@btEAuZL4vw1nZ|6r#3X zJ&qFlndHFd^$x94v(A}9SV1^Mnf;@px`)c<@{vT8b10*~-hqTuISzIB4V)QiT9%)- zjsEXs3BT7PdFoT?K^izfeDZ6-BZcN?rz=uMF|kP&py&bjPuF1Soh->s{5bJtJraW2 z!^Hdb6J2HNR1Sd7oo$Uxfqwl#(zt?hG4PW31L65A;Yc2H6`v~L1MA+eav)GbKX)m& zkPmW?)0ZMphuU@ard4966|r4fHDZu*WknMgMd(I$4krxAR+eZAIunA!i!K7 z+~Ukk`B>dg`2uh}kCG29lR?P|{dtpBV#t;4TQzx#-mk9KgaIao>+Z)lo~z|e(@PzOl(eq=TGegl(r|1yBI{cI6vU}m)tSn`$ z9qmAjNcU-+gZBYp}4^PJDW^LDC%d|WptjQH?zufRK z9!qW;BF!U^rRj39FX&&LkI1$I4l0$yJWW+PeA$=LHX#QN90&=m8%j%o=HcFI$Rxuy ze{F%EfBv~%aA5FBOkhvrIi2lodtpKO2u0{%K^fxhwrfj!MnI~z+=+`D2b_-Cm>X`D z%jIi*0sYjE4t*^~Uz6~yx@^{Y7iV4L?915#P_H?m1O^(0O}vEH!BFDCN%u|7+@79p zzl7tsth>JdzA5C^;lrUa1~E2dU5(BA77!(AORgg`0WF)o`HjDjn$Wvf zhXB7iOY<^Q2c7SH3Zk$+Kf9t1o;tb@9T z(sGXQ>l}_Pn$C74e4=Z! zpM)$wj?=RI^f&56i=uoQ+ym_?8DAtEZ73(C^Cok9)dB5nvo-c3=9iF3zZs`!DhtTc ze~n{caGy=aUYf^U%&n6RT zE3Sn)soF-%6&S`;?sRO`;KLEt*qcG@5}TcwHbXs-I_mzx=HcKF5X5rnV~RAO&OeX@ zeHnp$fhr*K%(&_oVmV=@`N?^28M8T@yxi@l7}HfhH(21 z9(`33JSz$iX{mTlI-9w`&}U%b&3e8GimU)PLny}itUAuNZKK13>IJ@bUU>qK0MC0; zdC`MFr~HJ)*iw+7xysySgZmB|J}NgWb&K96-uyTEqBW{VLF%>=GH}{+=gmHhwkj-e z`0(Kd0e%4|09RiKxOx@Tkzu31w!qr8Yq_4?dzK&|`MNK%K?sm#;GJ^=!SS!m@E8H9 zf6p6M_*>x%6fsa#Qq;6{>((0IkT0$f@5K?!Yw2*b2K%CYqs>2B0O%-`nwqCGXPDUy z+BG;^lQsh9P%nmKk}lVvH39>LN-06Zut_y(H+^3xj-9YEJd+Wd)a@6+<8FDW#&J3K zJAK;yWcbjbB)NM}Qd;JN>`5@kzAa8VXSp@~?1;YvYpz!30 z*iM}~UZFPtYR>1gGLx@|qQmijj}@4wRT4b)cxczpgj0G(&&+SJB|hqrr9JsN2LDJ) z0vvg!6i&1zM@R__2@?=0OCEofSwF@ef3N5gHp_nI`25VYSJi%$T7Hg0mOqWk$Z4C+ zmVC8GcAI4e?DkMAh>lGfDGI_ao?{ZSGt-yS1C`8k(-y16GImTsLFy^>*c{AG$AUOBJ2Uko^*CCC9~x+W=J%rV2u7BgvOGCN)eUHHLzN}m zos;vk`fszz@A~5M(hm>h=l@3A0RO>o@E_y|j2KTP4C%3*L9}QF(PG<{P47@q7nGP# z5SiYh#1!nzO4Hc?X&VYzAYq~qn9!VmwT(X`YedPw_o}Kvg`NFwVLZ&6s!~LS(t$XQ zFESye&)8(tPI*4W{|scUwNg zy>HyPQ>Qw3S=;OHzc>F)7a)En1)gp42%acNm1qQ<-t5O{i;%)!3Y)S4EDc0Gi$$0A zOdGbTz6C1lM>iobP(^yQ`YrtbBjEs@#pL)1?u{lD>y376LmNgwsy5sO?~MWLm?a2S zPxyB8x8|Wkhl<{7xoS%w9t=h~9<4cDc_|&OLx&F458wl?3~LhR@YS`}mUat|7v9Qp z?7IlY+<_paMu1!s<2(85$rT_xz6;36HsG$%_^fK8Z*TRX5Xds*EzA*`@{_mPu5LRR z!{bOA-fK%p41$xSsh?H%{QvrKb7syYHw_v{61rVYTrN#e?7wanpIko;3^+4(T!qFN zeB&ElY$umpP=H=AU06!8v?{z|_*D8g&9Y;Hm2xxAsSiMR{t2-E=jLRke4say1vUJH zl|uDUeq_2Q%B&O&*t}NrN^91^wjY(BmHLo+J|!FUH?tt(lN(bRKe|8KnskdGi#tsm ze;v)rtH*YUg?ydJuguA+N_b~YNa!NENe3AIO3M6SH@taoA_+%8B6uU%?jKjrN9K90 zOqhp&hR}%Z1`N98%~xMpdUzJ)ok{++T+z67yg8f~+U#S&77^`8%0tx?MW zD)0S0D8UHPD+)wL+B!3S{8fz1chbv2f}3FqgcHQP%rqtNLN|(%kXgP#UPj8p+P#am zTR9Uy8P7u%C4rdO#J5?|^h{RP7A+tFV#lSJJie)dB%vG-vef;%&o>^%3)>Tp%2ik# zTzRoC>;F3+3%~2J@S_uGb9@xq`l_G*db^M=Y7MTBA924Q1*87F|GGUc^!h8am)Uq$ z`(0=oe|FxHBS)_AH~SwzSyCKW-ZefKZ}xGi+A;!Cm&)?K>lazkm2iGWA&6!6T`z0|FZ)v4rojmG`3U|Vi~s5&XkCPP@D#4~U!Qq}4CP3MW!}QvKMVHO zWRCTAr%osShH4hmt3l%i8p(1s?hS+IW(%F`i_40wEnBwK5=Qh~wEG&?!gqj6BK{w? zTaB)3?hr*chj zO|mQ{=47R6aNsCwaw3@K$3n|qs~NXgt_czOvN5bkn3AFsukPKuw@7oIS*C|jdUhe8 z_-@)RCA=}B=6~MI`|oSsyH~HVm|!>HzZZ@jJN|03CQYdmxI)!>wc3+zr>X~X*{RcJ|B#XH za`HACAdP^7yM$)XQQi|kITR=~pSBGGMl+R9gsl_}<(Sy+aiZ)B0WTjkWGjws(V|7Y z&_>Ol0U_&iYLKFH=kCGgKykXrNQd<32-*e$GF?n8GtN^kKaromT|pjn=+L1~P)Ng< zT{8E;F2@%7!B;jqUO4YZMN%G+?bxxgRa8`Hs3~AhQheO^^B$UGQ6YHI*7%o2hTD|y zNZqL2XByOC2*?J{-Ou)skC+tlZLj>et zx1iMI-qUB#L<}1~(t1AMg4))_{-2iCunc<*o{Qs{NXJ}kd&c>Hw7|(@C$Azr*@d9M z3k&wqaQ|39NLOZPUuhp0TNeVYPJ<(N%)Pq(5-Yi?N6 zu-(-er4f*-j+IbHbqS%{)f-{equ_YFgFXH69@M>%^Q(If=Am&296yB&a(85qHNK?k zp8rpd!#xNCx#)Lzzq{f*$O_9;Tf2_ZhD7?H^r{M?@Sn7OIUI{`+bB5ZtFS&@3sT8t zKyhA$L{2!y&Vm%|1EBeK!Lk1W_PG{;gZ*cU&RDO!@=A>u`LC`Kh>L(g|3F$w8H)DT zA=xlge?0nr1AULCa}>Cc3J{p-h~Godj|b%{FZsG$#hdr1QgW6C2J}SY-t6LU+oA-B zAAS7s;U}JYI^u5+zJv!fY#2^%8aPPF&NrxEUm3}kty{^o8J7lZ@$~%pBq=e0Bz5oM z6|1PogTA=NW5=pgf_tU?e?ucQFp!a+-WUN%59Sm4-e1smSq25@mExm181g==CQY0E z-r9HH8mC@;q$M^9&e3gvl2?&8iHMHx#c|94u<%b-kBx{)jAJ=+kDjbBA|j$S=U-Oi|g8{%SYqJjmg!<0Kz-BM|fy= zZidD%OzYMuu^*<$AF*03AST%a#P^jlLxKf~q!l<)f28MAgagm;yR#kJG;MEM+b&C_ z&UasIq!a5rQ5M_xzHwk|pxHli!}>MN0aG7NNxb^pIB+{*JwIn>WaOirM>@1__Qbw} z$7X?{|B0BGxK6+*cFoJ)u{I_)HbUu}$cOMCHF9QFNDo>p@f|^u7)eAiUpe$T{T54djLb_@voq3wRH)b@BKia|ex>(- zmf#Si3iCCINn6}C49gD9&e*O!CzR6xHtXV+%HQ1ObpArm?;H==M1d?Rc9lG+mrX=4 zWd=|iXVfuP*d%EhN+aq5iJ%3eES7{TMUFfT0>~kHo6Ma3@P}hYjA+^*ygrAQ)u#W= zoBzfn`Z^Y0G)S}xi-jsG7vAj0n{930yqUl1s;lfk^#sbSj8YfoTKaflVMDco@pux- zN=%vSwP21n`~N3xA^R1DMOF^@8zzJ`3e!qW{z)6gvF9v+=apvjUAVXL-n0wmhBa6a zx5m2`>&up1pAhnE4D2O~2<6og+5G;Z4GG{Ykm2{0;=P&bDgVYCYzr zew5z;a}y=U`ZsMfdp{Z1+XmO&3KwR@RvF;@WT&3 z_|*@sUp8XYsGoN4+1sYJ*)A^DPHr7GoW#e+5j+D}x{Ku7?=};+$4##Fmg=FD^ z1!T#xW#qjz@7LJypI`6{>Dsj`>2p1$KD+pB?wr|VVE_JP^c`bK!LD6@XfUin7v zFp2fN4jBGT_){UvqgxjW2j}?-klE8R{}J|Xt$89n<0?5dLe213Ley6X#64w~!=Yuf zBkc*3ScxlSIQfUqKUsgOw6tt#aA43im|!{d@52ArVGIgy0G!QNB#Ep!pInYQk+LZ4 z11jN!#EM6#>>neM-|(S6UXYzZ$>LB3fqod)oRg9IygK#>Yg~Ug$yd|b_DZF#>^8?57Cl z7RQ(*XXdtNR0v+`_VkY)er$e0o-kL)8L`@vJnx zke9VO=OFX61B-&Dc&>W+TK1|sufj!~5g^H*Hba zX+`+^5^l<3%)~kn6c~x1fb!lL+r?RcLNw7r2RQJwCeCXc=7wLWTo2wg?VInl#xJ5F znneW(*;jbx{{TrUM6ACGVQOL&&QDcD(XeUBbJlyw-83hl8_rAj~2+2XT7$XJ)xtcAVTTUJ(< z$!fJKB+qoiyEzoW;y?4aeuo{t06HQ~Vx;X@XYN$(asFs3)wO7;z9c14=pDLkh{l578a|D4vGH|eW_)Q;q=poX-UtjX#;w5DNf&HX) zt5zg9IGA`m0$KOL2c%W&R^-jsD&lHSFL;)$TfhEN-=<5~zbrX2cchmgNaTlgRop)v z$YmWApcjje;%+RY4&X!Cmr4i9uHw0r0bVsk`>wV&K>>cxpypi5-nMDeCZtY-rmvJq zWs}tUczQg}U&9LAV=A#7-KUTM5~hq5r8D1ry5THxmtSI14Ut62jgKx8>#QGL%$1dw zwdyx$*!|eG3n+!v`Wt~v|7b~OFhLMc*=ZpysJ?kDBMTWgJ1Do3oG;2AKLjcV7Qppq zs^@lziH$I^AS%qNfTCAA|3muR(0@MRr4Llu#A~ka7q@)rqPIfo)NLjR0x_9Pfrkzs z$++dtiGv!|;R;Wex*tULdOox)1H+oNo^aMv@@hR(;O#k%?G=guty=j&CeP*`+bI@(iKJzGDI4dx^9@pRa8Ek)mWBG=v(tyGNVPYOD@{~TXKPN{a;IqW_ zh?PWF68Iu=^|Fyro>+=m{$n6EH022zJV1HCa6RgT%1cV9xaHmE zluuFnp?%T&jxk-4<49MyB2NBrvaVEDI!ZreO`A9I+2jJ-(L%BkUuT}G`?0}-urDp4 z!25Cy&QW3Ar*Pl)Afp>XITvVFsi?SU6l(bXPz1Mi>sD#rym>JDrQHDiwo_JOy!!(T zr3dfb3p}qM;+q-+N2QhbT2+F^03nfU0ayOYo9$j~TS}=9%RYz2U5+fu_hU}6AaFPc z?+4AG(m9zD&%FQ=x|u2ooe_|#p4F=Z-L76sHGdT5cZ%3+fwc^U-TQ2VjY=?|zKi!l zL(X}lGeu#fN6(+}T@L|FzBSex3ipt@VXbxu-}>hCHw3*7>VG?V{A3)EVvkm4x-mVY zOpB4;+PQP*8~@LdhLde>+_3RPIKC$lq}9lT&%YKp?Za@rEs9Hvm;6~ULdn{rv;ybd zi0_aI@8!2Hk85hPX3frdSNIVql>TrIpHk*4S^f?GpG6UQnBT6(`J1ti20Eyew1{>F zmt#sLGW-PgbJKpGfGPxl8`-6?!elv45P zZkK&fpi=7UXl7Q{;aLwo@kCzsIR^gd=;Uz1%dfR<)nt%Lc1H~pZA)Cw6K1-j60%SC zQP?^WO`qjvZPn`Cz!}h&<4k6(&`jTb^hp{qlN@|>!ww$&WyRzfvo?JE=G(cfKbwMm zZ5)oQuV+5`*rwc!G&siRwy4-{H%Jo0ak3Z;-h$QWdoCl2kS?r%@+*DQT7Q-w1E>5> z^~|nalj?B+(mQbGZ&dgFc;LrRf`WptyQbfO-UW_yMS8FcAnQCU#eMzh#wH+Ne00-S zU*3}#8$SzmMIBIH(Y{Z=!Tn2qcfYoOf5zEJTl`GQeE<@_nR)`gXnWFwApd)@ZfK(k zDqjLsACOrlCRZmLXt8wbBXUB5Ad7z?Lo*B{EMPD=ncQJa-);=ZE#gh*Wt3=!RcV zGNM8F6r}^v{Tu=(TBs92qcJQaluIIWNF_U@5{Ezhd~`K&m(0n{&DFxNR0fhK+)dez z)GC_0Ktp`}&1V}SXGt3SN>^PWTr>G+!!BE}fT&W+P~8uMH;==F`YRSm4Y3fR#bB?& z<=I%tLM?+WxepDrVgFP(g;m}iZ;rtmZ519X><-xGW=W8GhBpb<_&&VR_J6$%ih{!P z+TWXjEM$0Mv55Z?naRerDKm-pVGiDhC$Pw!2xsOc_1?p|Xrh$QFyuij>^s6icpnq` zE%;qF0#g6?4f)5=?b`gV;XR<)V#b#cd*wMJ4CQ2+g!k=DZ`nirmg76W=+ElFfg%`) zcf8x?t(&K-!LFZv`pG{yF!)IX$ta;5mH{-KEgz<6H~KgJ?SwNnh&t$%B{V5O!Hon8 zZWApNq6kTP4g$5eAyE4swVlFOLdaT-VGaUt_n_^HQZI?DJUZ?}GrY+2Hi_by}S!vbQT`Nqke!U{7J^MCN|Wb)>9R4Mz$01g5+p5!vP- zl6wgsg!l0w9s1Kx2Up%PVbXW`S=-mpV=D=KmLEO#>yfSzS2fogp7I;e%(X8*mB!Ccl2SEXmF1;wy zM2etDv7mIZ&_$Z`4kGEj(5r~_o3t0cGgV<36O-qzwi4Ln4Nj^=FXd$ckey- zoK~%xHSqK-w`<3NYrLRICDwi?50DNTjYm(%hF)^^@E&aBjN3Gv(9I}tYfprP+@pT6 zy}ypL*=^vYmT3m#kyA0je-T+8sxO9E$_7?<_HZqzvuP(v;x0(RE&)Xjv&HAEQFgZ`S$DEwQJT`^q7fjhTu({KBHl5 zbky3&upo08f})_nq&w)Z1#u^+#}f|%#|&SoQWxZkn*(c=T3D~JI&uy5jJ@GTZqKj0i0h>(}mh-{IN9;xZ6 z^YL6}LYJruNd#&JA!}hqlRRmt&yrCBB(oa$IZ(PH6WdK3G9%yN9Q52~f>CC-Ph^VP z!=~FMgQPE6u4JS-Mq1bwDquf>$(p`6R~am5uj5?%I3u^9c-i77pVjQIVkYNVukmsF zV?jHMWZJMOrm~hpLtdl3)VKa+hCtr7~5*RTQaE>A>&>NMA*a?@~_`4 zZGtrbC7_~J={+i?!dN=7G*+>Ah2mG#ed&E*XKQy3*H{$ST^$LN1oVFm4Ei4qlg(o#aSae6}Lqb9V$}%!NV$XFwFYO?iA^#b~0Wok5&wI8A z9$t%}02v%Fx)JzeBwplQ=_3c2`)1Cd9iY~H(>|yVp9AT=aKQ1+u&NA*w@}G4n@y5- zywwBS({?@s}n16)1(e zg^Jp{e=ur9A3q-u&`Dx>QIc<-Jay`tOWpeY$XOs_I~!40^5D+3_b*<&XnvwQbbfpD z^vRR1R;W~N6JGj95e@4=5P6;#WSv%PgAZHf_U+qWH}JZT0D=EPB@Tp6{bhWt%EU$m z?*g|$JA4?gM~4MQQE38il#fdSb2Ers*oo*6B?9d1)}T9)9vTHrb*;o*ZQs6G?AEPY ztI1mXsY&<6;e;-r{RoYqv zwP<~g>9kY8SMZMI!{FxOGaetZU|HgA;$uP%xq5m!%S_WY?us zs9U0VvFiBvi6}WZ4FtuNg-e%%=P<8w{=w^A3*II5$iY!4BY zPIy)X#H*Ug$%(lECt(aNyb;K<&x!t&xqu80{ zhvECMAg7c%@a&Qz%SR}QX;z|4iNo0$Gw$Dq`0f*j(tWT%`DP8Gs=wo%Fa>Le!^r9f zVXg$yT*Q1y!Mds&7QEkJ-qgYGWifAVU>qPXmjA?lh42iO#jztzWeL6TJoPXIhN--W zzU70l-`+H1+7QZ`(|m&6HxRN7Ysu;e+Fiu^<07FKu{Ie8XH-E#QiguS@Dayx>~_4X z%q5@nn<^hlC2?@BpNL~N5v?ZT_$G9mTKbYT%TIw#1S_aaU^?#Ar&NZBqRE8EN#mM{ zHX(P2ea&T`>b{p;Z%!*-ob$+ZF ziWDkP=$?P;Huvw}yZ6#~jw)BI#D)(a!kU8JpEBhX9N4jI7yEhTN~}o~!LMvJ3M}|H zZOYD`KWF9}AP2f$JxBKW7qb;7np&UU@3JB9zt3iVK8x+%OBFJiTh}g~+1`EoSW;55 z^23&m8`zoCXV|1Enfakf8DZpz;mpU|o562@(|?z(S-Xy{-(apdHg{aJMh&GbfH)N1 z?$(Ws|7a{5J8nEXa@0&$_Mg{SvP4NX?UTt02_rQG)7bq7_gSfurIdfub$mMWGe#xX z#8L3$_siHP)2FlG;1Kr3%$ckO$`Po2jBD7p{}mQY$p{P}t|<@#?WrmnuT4;ZZXRB$ z^YMU;_HWZ^vurSY6pIYGI%^2tE-_<*WtONTrB`f#*4DhzhbH#D||<{sF!jR@o(s!&izM}3*D-8+rx+pA~) z!i5Vd5O{pNl8go;Z)0OaQET|u(!>_+JNeoO+OfN~Z+;UWkT3ATa_P~t-;@$Ebhf%3el41RVxzGiY?Q_Q$0I|Pb45f%xPCbPlc5PoDeL!d-*8)n z;5Bd8<(SNjWr!C+JrR`xNE!}gNrIN8KZ+peJ~?@(PoF)chl~QQOPSjQMa2Kg)4y>K zVh}j#NKiyaXLsMN8-CqYpn$`YvgON8w1gR6xq5A3e^ZdEGVC#z zvNO-xC+5gtEY6k!@lc885HW4ncdQTTP6cjClkJE26Y)c_u#}rNZrTCY1sPASMwV+M zxO0DuffkY#u+M>n#Dw0Kl2os9CMPGR7wq>A90igU%&}mZiDzSYPQs<1^I8es{1Eek z3M37f2g(ZWF>K{V3b10l3YGHX0#fSvO|qvG(N|6Mn?hV2AS>*MnqY-TC2M;c6xwos z(|HMEuEBqVE~8)Zxv*yy*z->uyUy}h1coy`nzBVpmN1|%o@mClty{Ah)2As;{PvwYAG@EkvlIL7 zn{QahE?pGV#FB*z%tVYQPMu_<#(bb`r|}LSHk5gLc`1Q`DbuDa+vpk=Em^7rDyB}J zY(57CCf@1w?#sHxFMM7+(-)#bLW|-J_Xpl#M8f}{?X?OD(3PG)cm8GphXP4u%9Sz0 zdk7*AczHQXczI38?-dZVpGJotH9OlX5g*9mZs-^vOq>I*o((-Vu37bCks^ibZ(o17 zbpKJ^GYIS4+uIw3yKA9GPc`QX#GD#Q584zg_R-$0n?HqAAT6X&_i}Al|DnUT7-jzO z!EKvdRc9e8E@oB>e}Afb`v}g)yt&_eyQE9U4sO-osA`tdI(ho^fl*^8MDN(N{+6ws zEr<*sD|JIGoatJvX2QVthyA{E@pr+frG3l4b%&c^<1Z&O?VTo#8q}Ej@g#CoS|T!* zeB@}r%DHpCT0xFA)z_Px_f(97v&@9Ldis2YK;5weJGYgfF(P{25R0|on5ft}l`2&n zkLcTVK`ZpYNAoH^IF;_-Pgq&s(Xj$KNXYnn0GsEydt%cQj#h!LCI1jZmj+BhqcJA zbtf3z&YgR=d3)(IK4>N=qJO83jq25^qxp2|ApHmIbOm=i-#f>I1}jQ_mxa7vUCEEjm~%BZj-<}4S=Lz)WA z&^;zRWQaOPfIN6xX1p_k3?I`rle4+FX}b>oabZEvhK+jK6OP}pfFSax6WN6iWuwa+ z+r{LdEQb>@7y&1$*?eq!mW&c!e4k;Vcn*u#NFst#mHCJJZ; zU4pDI{-im39+|>psfN@5%Tk-H0V%a}%=0gB3P2pssj7ljI(? zX*gzv>F*RAqkuq5jC&Wp6$9}Nx`QAa^)(XTlhIW6WF}aA3S?ZhM|Ppxxp8lEqfdp8 zg>fV=m22dKxDO;#_xFn;X)remU~Zhjc$Mrt?%(6e0W+Bi*QZEyQb_>zHwXRIo$%ft zM78`Bgu*itMFC{`O%3cSbDB!!H2h&~><(h!Xma9};~{@|=*S^ILgSbaCXaBQ2eJ^4p`6rl{ze*~O=Px_q{QBaOR3Rso$J4%4Yt8lU~Zj3=PGz9|k zSZ+LbPwNx+X~Ug6cN?{A*EUyWM4vVe^>@mOzty!fGWxw0hyT}&8x^OY8U+D}w2yLy z)MkDU%!DF@yI7uzNo?!~AFwy7 zR#l`Gsg&VWYq-q2VL<_j2pIj2_ntyn|Frhn1qJAW75G@j%YOvH=p`mMMSZuKwUnd> z3qd{(nP(z#GD{bdB%UP8C-7mrP8oG4C#R~Mu7K}`wJT?qC|0b(pMU*nr%KVddNkZF zraKIbkKdmOtK;s~@FP*?uI=BkWf|Za1;9bDuivndO9amFms;Q6s%@9=epvk7+jjPL zHsmbeBQ}~M-G5)b`e()R6M+_U=pkN#lD@Ub1*wjpg!1&Y|bLuXegMuKaQKLY~77}c@dd*EQm z+&NzkI(%?1k@1;fhP(G3*xI_4e-b`8y&|JyCykpt^(4>~I?0fFDlRTUkqC44^z953 zNh4JyL4Cjw5SYa?Auc-Ns9BmwulIcelk0O^P1*ixDS=0WMje30Xks}ZsgFsMr|$h| z%;=W*$mhy4sW7qsN1fr*UKF|YJLYs>%*&ruC*Vovd6taQ!=#5DkS(GN5JmA5z`;>M zWw2HkgLuA%VQxZ2B70dXyh~c(SgLWIWf>GuG8S<90jDkoIJF{AY1wcLX@d`=U>f)h z#$exWxDS``-1J+tY|&AWL{-E5y@q$d92_?Q<9Zu7uWhe-Cg(-w3l_HiSlI5tV!7Ot zvfa}=n!-6?K7tZiSpsr3?N}N6JJdX`X-MTXYb89v^ zACFQVb*x;uvXUW1pz0vrVa@Q@tQlK!#Ips3CIa7PZ#E-m(GlbP0?*W3QU4GRsN4YRcTPb#W|ZpG!Fm5h z+^7U{IOdd`nrv@E4=BR{A*mjvKH-*V1N9rLDiYw>SR9MeO?e%*ZNeC)Q(u;AzwF-c zyxxyWEO5?6xy8lwEZ0Nt(gTMMY9>zpM0pS9ho)r9!Te8-eV4boGpxPMXaJH2B%(eF z3bbj}ie0#PkyU%+4aGrDgA;u1`gO<%R%X*@%w)ZK^kC&HlxK~b(r1LRfZq=TiJ)cP zaI!5M%9+`3kOVAKrZnsM-h1rKnG7+DkbnU8+qSLdpa2C8D0uM2oVje%mM!KkMvWMu zlqOKyyyZ7GYYr`g{@vQQYs;ns#!r%jtJgjrQQ+e2tds!EoHdJW-L{?0`C^t*8u0;m z4UPu>yBdvtqkRbBfIuGm3PA#D6d)Kjaukb*jAZ?wo&f&|D2oB?7`O;tr6$QNDd6zI zvknCu?%|zB%3s-Px#ECi>&&^h6C$6LZ8SDVAZNF6#MqBY!olxnc{=b7Y=4yYaNvdb zc(X(A?Ac(5Y!ok1h9xdKd>^sbi<*>vvO&DIY5kgB#flc~pgOT2r&|e`z4_#5TJ{V1 z!v3NtC3CWP<>2m}+p%~mGI-3Wwx>>?PgQI2o%9Vq;$!R z8pH#71B)y7=3UxX{dxJ)6&1@>sD!cvC0n*_`|fXiy}iazU0ka+olB*sCae~03iUC` z`aOb#;Kx8id`{4^a~Ceg4ITPn>o=SEeK2{#SgO6!LB3-!t)}G2;oQM-C8_1A0iD+#oI@bhL?0Hx?g}M=e{mEFto`Sv!B* zG{DZrwjdVRIvTdChwoQ-mI77v2StXC@jGtZycy7Iz@ROH(eCG{sDlZ!=YI9$pniQ7 z?QryWa^a$d^|$Um_>RCyZc$;uW>%8Ddk;J6-JPjsFB1fh%0LV}zg;U!9x-8oYv@|< z-Me?7d++zILxF)%2nrOjWxGycGRO;XJ8whgQIQ$M!n682-QPL)AmKp-9IqCZFvEkt z9|?K8dsiQIkrEyewSN4x=}V{&wY;IetEV?m5kr8i$fUD^@_=FBX3$dbM4b;be++!` zJlJH8s(#?AZ-56=(M@pC^lrh6C#=zF!S zQcKU>X$~ByK%W`Ej%r3J8~>y(pCzM&c{SgpiA~SbBM?ZHP#2JD=8|Bgm@Buko24SC zG{*1=_Md60HC5C%urRod1yzy9LEROCC>y(Y98(1u7;h6vRtlWm+7=5@e5n5}hW)N$ zKU?%oFxTK$Ig|4u)54_JeLUe|LfPEN=o7&wvS$3V%JjU*HCY}@oC)~%H?DU;A zAf=F`30iVyuFCghS1OsIeh8gntFygAa|!=UH!+MWPS3MIp)H(t3UvL8_>qEY_%11| z?y%_^3Z&Be9Dml$_>4iGjbrpZt%ZI2VLTteA*+Vxh)^|j4DDMT`=y(L)&H0QP9L&> z^@+({&3u}Ed@N+Vc$wm6lGp4)x3gpOm${EAfIS)SmEw6d4$Msn-yV0h?BjXQOC=w& zMqYvYn<1k9PvS*EPU4>5!n@v_VO10tAjgUAH}P{IjxI- zQ_Zzd8ZZwLeO$o&x(CeW2%scG;Ozd8RcQdv(2wZzJ)nh36fRVF5zSeA2ZkV{zU;rQ z6@iXc_@4Ym&lJXkQbI;*1wpV?B-T_BkK@*WEia+ZiWqBWi11=5#gXDj1KB8hL3u}E zI8zk`(2t+Wp+Sg-(xpnrQEk7;Rxt?3`D8r@u4M=MYnAo8qXr)+aDqTeZzN`_!nVYN zz~j49g%Ut2KS|bWeq8Y3dFMcG9A`o<9mpy4SWb+Q)}JHCjJ+2e5|k&10jiI$Rimat zEJ%+0>b!t@DEU1v1&D2uqXrMDNSr&I~-FBo*xzc6v z&2@a14qwZl02$!isdFs~6)Cg@xx$u!yOYe1(m*WuGyYht*4EQDlHZdA%{?TlOT>l; zlB^A&>>#!?%2CCvBVPajAOJ~3K~#cG}bM}|}j{I?WWo%?vCU#vH zckfQ%0JOp4|Nf&#H$x5|{QbJEt&NR;>-NyO&mcB*_44Trvb-8Qw`}-Abru#ZThZ9Z z(|L`%tE*DeN6fvgTX(!D3fw!3=YLfNFMvLHnU`wW_N{7@#*Jyy!oTShK>t^NI_K+Y z8d>xdSUSoaBK`)-VRWLDzT#q3RKk_ZS03UayW6a7`{f6BZm))qM?XxG#m(DxzDafQ zu6m!b>B$MpjvhHm@Un5|&R;lPt$J0+0`h0D-??V3+KiM1ZL8$_H>b^-H7luElV(To zVe!Rp*PFHOw3rj5^h3LL%%qhcKJK>UsLLFC6dM+3h6|#$|3|E6`hWh}oQVfRLN~;N zw69J3E`z`Ma`xvXiWM(T&Kky5AUra9_M~akZA{XKX4HnCf9t(le_2D&QZodPYV&t( z-tc}@Ti)e7K4Ih35d_~R#5jvYT~H*}6=3+X|A;i6>+ zdvt$`_#2j>WZ)|mW_bDUE4R;`KU0=qhE3bFsr>8DD=*x?fB)BRJ>T1=5(5%(B-2Ra zlN0ZZJagtu2K$OKcl_Q0lGXzVhfHKcaP)tY@P0WK5v;JHcr@^9XcXlhP@y0~OmlPB z`;Nt!(;~wI77`&E7B-i1i}_cn?d7>Cxg~{Yd0pB4yM>ef*qTzcpJ&M^;h5^Ux8~3= z=Gv--ix>7Ic_}y}P^IAB#k?AWMN@={xaz4{D!fB(Vt!4;z4`*rXk#J(rLke#er#(F z$ES~_RyH|cKnneUb2T9-CyrSNC+->!5peGQH*Vipiv^(Av{6$JY+0ZzpiLUpuW}|Q zyZ8NZ`%!Sj-q!vm&`7?h6{h!Xt~4yYoh{ifph{Sq&Y z1%iy^ODX84aE@ejoxue{f478;V=Nn0n`IZeorkylnNNj4$a}cvW%#zLtohH}$MYPZ z22^qat)>w14H?lM-WO{dRFEn_ zv>*VbM*vD870%iyuuGYEg=|yHeLf2jfda zP@)%tBxZtbvKN9U^KcIA$`Pq+VFXfIV4r-+sHP`uYQ93&&0zSNIduEdSQ++cR++6mW20Lt&$Lx_4KuXV8!#Y|w!IirN85 z9Cm&CZ7RoB&Y||XYRwwcIZBT#=Kp$6plzzfO zqyR-)UG=`RWu6O(4GY+&8i98mjt9kP#Q4_~}*cxLe2^z$)*<19%z{lh){#_#|BrG~KG_cRu zkz*w|Ec2*r0Q;h{LYCipx6gw5wceOGed_d7Y%}<`ZZ}Zk`08;HK}!7^wfgmai_V)j zZG+z3&HvJ+%ik9(QDnmJzXuHW_3<84ym+w^i2Tn7d+ZK;l=i2jrivFXp6}eaabt6k z1>6EaVzBv#cJBy4cM1fLloEQr-TCgo{sRxfprYzNyX5EK#DS(9Lfc%jLh$TVf#&#Im1WZCA$yr^Xx}5NLV1) zzYKz&$BoyV3Cz%B&!kq7b^mNwUxGT4x`m8;Op<#FaU7Zf zze)JFxn^E{SG=m3oadR3>M`U*j2u4F2phbI_hm+5VlFl+r$Omf0m??_;%WZXHRb>* zRrGyaw)4Nnku@Mi*-N~?_F&HKg;Vh^-hGu&_Vy{}U3<){P&ht4>0O9(5$sv1?|v32 zw1R*^5FF2>rS#Un;MFu{i=e;*1i$KF97hNtfU)hv@${XcxvvD&@ZI#l`=4D>%B}J?}^f?V@^s`vLH9c z{3Rp<)#TTOtw=G0vi(ZwgK5r@+~F=08fF`wi|-Lw4#^9%D2h0|@GH(uYqno7{-r3_ zxb&oR<5}NLfg6;^mU>zlQ(lZe>p6&P2LXYHuwmisly2np80me3_wkK39Xcvyx4GGf z2yphS&lvd1o_HE^(r3?`r@-;4)vjHOQKo+J(q-(&pMM4n{}a}}T{|}KtFIN-|ApUu z%ZTZ}$Gg4F&NyZ9e_glM4EG08nk`?p#Ed9VPY#qZviCnIF#G^O^i>JM4UkF18lAOh z)mlLsbinzh;k=fOcm#+za1T@qD40S7ht1w>3bfl*HhJ1qCE%g9vSrG!ohU~jr=1i6 z%9kyta3v7WW4lgJ@id_(jvhY5j-NcihK(4d1W7jjvW^ulTv#cUps^M$T0{v>5HcY) zHja%3i2Bi^M@ne}l{h?3X<*yt%?#^B_Fe|SIp4S8LkDl_*Qam0=M5^q)EysJS%hyB1dcP@MyR<(uWI+Elu$2NCRGaD~)zdesFltcW^<6u6 zB-kKD*ohf@1rZyH68A@ZWYBgMg12|?!RZ=XZHjX}$6+N)l&Gpg@PLk3yJOSF()RXt zjpu%7u!S{#Hy+|5D`@plhk+>RQfLYqtoFK9zl#9ep4K`hi=Z zhDstxvWrZ%8IhcL>qAR~fs?0CQ{;@zDE&0&zrOB_b^j58lcHukh*pXYa~v&C^s;XG58Fwe-U)LLfT`#HGQOz5Kj zx{j;?DRS_uR;qd$^C+`kw#q!zlG@?cLei`N(tt{IiPQ$Uv{9-itHCiZKZUn zcFFQ3&-~Zea7`<4jy||1g&dGj2H4*j&wz`Xt%alFgdjy60s+HiUQSmu=4G}X?;zs! zd1A{BWSnZmEj!2#bo+VcOl}_o$HE1Ho(SBhB6%IGQm+m6o{l*(k~mLFmMOVCx3BqS z_D`r1$fB*pJhx=qSIA#!T$s6mc#YiWHj)Ius-( z|IK)IGnGZ=(kY+0TMFPJAW#$E(o6)c&)iWi9Dw)aRowa2?p|I%zVc?d>s&aMxywow zE3#IA_WSsFv$Cbjup&i@AX|?`2k4EC!I56O{+CP+HD&%6FZd25fU8+(SUB_2d$M-z z+OTP#&QP-a4i5GT(%}C6%#=v)4;;u&ojSz=f-->C=G!jc}OB zAs;zxn4(TVP;oe@pJd>;^eaV$K^}A zz#n>URgBj@C_vUdd**yNYRgO1tXbn9MFMBfnzB~ohNAN_rkeaj5bHIQd8vRPX-fk& zU}i%1@bc+slw{x7h>&r_u!~H`yI9zFLdM#io)tVyw~zr}G4A6}u11AN9%ee5u5fDS z!dd8GFd9(@$9W=i&s#bRE!%c|56{Vp*vNn&a!jybYSFA+r?Pl@9O5H`Kc#UKsosj8 zSN@L3)*=74tv89Xw(_PmD|;j*Czo||b8bvE?tu9hI35{vKpDFzJz%_0VeY3>-tg3W zHYaEq5iPc9(~=G7(|fvuoqa6?1Z?4~+UsO>R|#`$;&lu1uFT+r#Xp91Q-mQ)@}R;cmZ{ECpr&zHfU+a=}OH?SLv!~ChIiF2GjopypD*)aL|@i3~FR9ZDhx9Wu)>?Yzm2V&vg5&dt-t2#MFpPc75AY)erA6XjH zOI^$;%*Ps=FnpZGU=h0Gx!;Bs2g0V!VAF$^^`hiN<>M^KBiw}`g1$cP`ty4x=SA-s zku}1B4Eirk?-xBs*5e7rk9Wg+a8d{5)V#~i7~wF_#QW-#tmP(8JN9t_DdGvy2pTF; z@xbv{FyB`okU2}`&!9emaBEBQj<{9>-e>+40Lcy%8bRN$arj^g)`63wiDjP_W98sf z*c7ra_E4lX79ZI-2_8E4H$Zj|H|s-=D3tVB+vbT^?*5PkelbrFMTWM z43723JBWhh^gWCQH^GKWS1#?&kKc@(w3{kLh#*jhynGL4_Zsk?HX!BFCO?)n5HAX@ zBg#YX9f$;zTEdmxOSA6x1Pf5mfPxiSTmAa=*zC_gR{{+C_U%^)3$Nd}VYQ>l0$^qS zeaF_{8bNiaN>vqU0L$pQimb$KaeW>i#^QkzDOYSR7N z-)IVyC`%5nK~6bf!`rk+cKLgENGd`u&l%A5U%``rdStPr$O(|#`G*+K#iKz(1iv0&;S($W*m;=_o`%l%K4#E z09OAUk&!`4$pFFo$BdiY14y81u>Ew^_8*L&>^W>uzh6KISn|%jJ4ZoO@;O29Kot1} zFY{55E>xthYI}MXw`W2RBjZ!k49UCC#KchTHWUrK+Hiu#FUgqtl`1EgaZe$$$Vo@y zBSIA?6eN=)jRLn;XW&{0jEljzl*||iCBH^CKTx%sIxdt4tWD?n&rgH}&__XObPsrr z>y~DezCRHia=xasb9o1wf}a{?HjBzS)ctDJs#VagV2NLAR4vzj!GZ;qP-lJt8R7z# z^@!@eIsK<1k!NFfC%@I@<@9x`^~MN%3_`$1DdEVkjWpI#vwa*Ny3eo}pOST)uROIS`FS;*5VNplypO;x!D$T%uzKJbs2AdGNzm==j4$gxCieW>K)`vU);{8S`gqY} zV0UNOJ?2F+OfNbH>+yMS0YWa}IcstM!TnNC2>j*!piE~(K;Qv_hNCRGdS2RKvYeRY zCGk#7an*bMh;`pOyeI!}e5w3$53J+(#{xR7E;c0aXnlM`d@T7|p2tT2Hxt>U|C)65 z+SNY22M*~17J*Z|thpE+9T2bA>no-+tv?nxWwcWImvG7rWXzh*-sSCW_-{}fPPJv3 znwy8uc)*23C;>E zPTf}DqhTAKV-1qh9)5p5K3=I=ryxPngIjx1`(o7D7Ve#J|Hd+hq9s3wiwK!r&&#W{ zR@QW;jCy^@-T{Nq&}bB6d0D8gvj4leHK+p|Tzy$<8!X6D%b4(^3Z4ee>wM6H96G#f z>w9>QbwDkCkq%wn8OI6y<>=6W6_yuSU$1{d!?c~@*q%QY8LaRy5UajXNM2wx$}`mK zr0q@~4Lcw(aT7{|O=7|W=QuhxDWJ7COhd>oC^jm@oCyMQVH&FVuf;|LWKf8rIl6nj zspGZXELr&-9leX$*zr9<+Z#p!50%&v8U7EEjZa0;LE(QO*ni?9!w{0lk_?8^X6Zn8 zFJGP)T8e4uYvSW0&G1+7J&ea?*xOz5vFI|+5*fPF01$AP=gO$2JlBdLiG%+?Z zB$L)Mq$s~bdB^Vfh`_z-`0Kg*RMYU>0G`wAi4OlGpnm=OMYXntXUj(J+nAVt0tZUJ zp58l?#q_?vty+~>x@74@z~a0R=pgB@TyMlK4VsL4#mg2q2Qza0q%YwFsw~s15EOu; z)dtSjE=yS|OOxgIOwNnkUMxrntJea-kb*DL&$Ap$Di+xP%jd1PdzN#(YWrq|LIa6V z4@d;6O(sPFYHDCXfhNMCC-sgm;7HDYj%(#is0kttR7=dv&~0op;%vdGhSYcSlUmAi zT<22{A>vD9L*IE>*-#3iATW6oWeWgz{F~J7sTW|~;gz(&?bEjla>Y0zG2D>fN(W3* zzu)2AG9$kk7w@etcqhK$q<5RF;kDZoUM_31THqyF0KU(K=&-OV2%z=N2|lL(i=Y58 zj^lp0BcoB5Bmuz4u5kjxpmjd0?KU`c5}=O2m*56KYfv}kaw z2QgW208jnKvh~`&iiDI2Ij7y37pc`36XY!zWDHXxavNIW+DyKG3)~Gtjzu zHEAG9X{~uq+!7NWt~iItgugAPrNzRTJ&UaLCovI0Gils+uKu|g&_aWO*L@Tp5%Ps9 zn7&akU9NE83XTVQc1=PS#v%E&i zzT1epp^TTV0wqC;4N60xV+|ss^WjuSs@q)jjeI07RnSNp?|XNyeFr`3R5#Ctb3q{- zk7LcGVPrR;A<9LE2P)+e)ZE;fRA(CFENsgZcmXfL)O69fPAkY>u@Rw)Fewo#0tt}` zO+djJly)GaB|VCZ3R4*8iCaL@h+S}9`&1`CW9(k+s zWjHO9u-M6ua{2FT(<+_u)ze z&)We}w=2Kc1#6?f@a^7-XMzH_`Kn=Tq}b5K(apKPosIo|jFTj}t<7qImtp}_QrwLU z3nm^bQt!&-uRQO7Ui+W`7N7mG*!Y&RQGkOF6hz^&ffH?s$c~Jr$myZ%+#t$P^g6aD^A7NQv*qM+A`;Ei(D;S~Y0k=IQq_CnnD$ zPChKDPo*NHuv|Hs}cPM4ZaW)88S4>1mY2l0O1fzj0(%>R~ehW!MA|Z zABu?#H4_ji4mf9ggYlY@X%gFcDk=c=`6RO^*%E1=daS#9qZW|#YXQF2tN7 zpyXiy>MhGeTU-4VF7xRdV#C5RN&C3zedmK}{y=Paz%GKt zVb|{w1s|Wq?z!?$A`Qb!V+)>vQMq!0eAcNVhc#>jkwopmHFwER!z2B7jORKQVSmuL z;1qm|KL(hx<(c5!`8kvGA~wZ4c>~_brLY+N;6*jjvpWugr2~<1j7#Tgy-2-XcF$+s z&uW3ESpd&IAuU$nJ7D=ueA;0-`a1=u;n)nq`)6g2c5Lk|-&=qJvj|AHLO|LfFUl9Q zV-Q7_naOdOkA1VVe_rlmDmxqR;->c(v;uv<|F5_=^3vAUb3NSx;Fe4Z3p$#t)oS-5 z;cZFw{`7{%WhQ_h}@^P!HgwaF7lLJ9+p_(`w}{mi7A19=`o~PA*T`ef7B7wLOd5 z77|t>lT13iN^|t~E~XW^u|OC^$3zAzl$Va+F90c2aX7PkkQMI_z5~d|8Qrvk_$S~Y z@!&V;uLcKD>p#T68GnOPLVrVY;#VM|QrK}_^*&?MlM|MKFt2yAF=f;Fn3&sR#*Xh& zyH@RS9on^OMlXNWE?c+nh?q9*lg6kuPqDmC)YyLrYJ!5v4{psqfBrnxe8N^flL1e; z6Bij`4s;N=fR>k z%N76tAOJ~3K~&KZ!DB4#grLm`XhxQNc>nq=vJ-+P6hMiHiwHHVR?z+m!ax?UBhc_8 zJ}hVOAwHc~q-yxc?xor{oUgOx*kAX*BM=gbKuG%3>J6@T9IDjMbjzX;jTmM>aw z_q=1U9%r?Hr3Hwj49`H^)6^Go(`u9$z`JM(-aVAWu(tmr3sAtBFV5e?x90)oV9ES& z=~$}-SqUL37Rtvlg3*fyi2K;{bGB|!N z0{YJ=MJ67c-4#D^bMGW^PRPj8UR z$-hTi!2Xr(AR=V4rnxMM@o~}N`-q%QBXCC~NzliH1uBqia09ePab)Y5$RNv%EC=Uz zXQG(a^I}v~!awKnnT{7SYU_g)l>>#TUZeGhi46RO>hl3_B8fFfSV$at32`TwM6sI<7vIS1kQDqWT+e zlr%{|_1v}hK(_|&Zoi&6cfOC0kC)<5tBoY}P*qSmT}oeh%7l`j;0bNB%=`l;U#LKl z(*0$D#evs4B|bVVR3Y|bLbC)pZH9WSb=>{R+Vb3&Nm9~iOR_(dX8Z_FhUL*=LH{Th zxcjuF5)2R{>TS8A>%zkJBtn6qNRd+I*MirftvW_0y>EMgNeKwh)Bq`9hV}?#gfRB$ zD0aQAI{CDb;QS6nOKn4tfC4f`M|by18s4TEl|&%;GX;T%&#+xKks^MP#u-PS4*y3{ z0D+%+D3_Q7G(#^-J1O#yl3YI3C~iC*8+r+(j^jCAFmn}H+7m$&a3TcEB}WzT*a8Sr z)wAp?xBiZg?5~KryWpi!E4R*(U;9<{%}JIJ*RP;WUUoxJpavEe$FQKV!C3C$-Lx63 z#RGAVe!)U0)BK{b=EqFVi`WqF4gvzDFcwl$$yW`;#Z7n(e{kUY!(3wHq7MPiS1Ml(&^nm^I}2=FzdodD)yjpR zhvfHZ#(Hgo0w$g1Uz)XPwU+UAbSaA)@p2ff(-CH)s0h@+9=A$biAfnbY##sv~N8(FDH#gJ25squ&3p*RD&;y zsdJA-JVp+9cDexdNV^x+W?o$c-T;QlPUTzI!gc-I^{ZP%n%)~t^2_UY? z2b(*m8B-UYiiuHbqoM7q)7lqWZ4lXH%hC+kWH!nWB2rX{oBN9&6-ODQqkW2d_MGE2#?zDYbar_-fif0!teEhk*tGsBd-ag zyCrI?-_G7y{AoC&gS!V|x7CGbRGJ%$N#fX(FWK<2m%O29+8KzoqzEMK{;_>jb?0!| z14kbNkmT+)ayp-sVexDk2~tG^E_}xe;CUv@7spinzj?+&Hvrh|@j!A*&-&74!)0L( z<3rSCSjtp=b(VqHllp>{OLc@%GSVPVkGdEv{{eiqw}_6$v-{p#M0BVB(% zK);l>r)komnE7A~>R-sqTX+3Jl+f%rnp+SH`LTB<#GVVfyTW@gR6= zkbi9|+E@^q?k7CQ`#YCZsRDYozgee`e8LD+$a0zkqDM~4JYOm0$RpmH=?b&8c$o#w z^BOmP?4a?-zS~b{=FMO;>AN7}?qePMOl+IGAtz0or7zuD&4JGT&A`hJ4M`FUeNcfX zzWRVHGL$k8z?(HLs#N3vZ4oVOpl35Rgh=+duN>paI{JlB-C4CRZ^j|{;FIK^a{G@R zhG)Q-kD0zleTKH&CwX*G|Cn{Lvl;|4YUS@f8`eu$+*EO$KyU)(@(Lf3%yIS2uHWjB zgV-0wGtm1{SeTv)C8%p(QZ|BsK9>LOQYy0MV~Wy*hyTEH8^d&JNqZd12vHKsOb2J^ zUcH`b#FBTi{?tz$klTCpepqf7Z0RJXac*glbu&6$zysGQOW-Vdwq`zPYVuK|jqtan zXU@ekB6Vq~ggGKIp$Sd2ZOpcXVH<3frgavcH`F#4xW1Cs?u&)sc9YJoKev~??=3%C zo6C%M!617#;o4-%UW<>C&7A%|#HxZC5q)O$6YrRzbJUdWh=$b!=d2U==!LR#ROj)B zF1VEuKrm8wjp7G)+n{fsvuFKE4z4HNk|*;aq8G9=`d`v)fr;<>i)qzk=s`Vk_|Tr) z>>paMZ9|08Td*b2?IkgyTl=rtSNpM57fi#%`g}VZ$MfhQEoLDFMa%Qs1`oRrm^^m= z)cfmfx&sjboJ3lgVfnFnPEgZ*Xvc_4FaaO2tzd1RyLld+xC$0#e=+(l!`sI}Fe@S& z+4ou59)-v;y8#_5L{}ZL_i(kL@447ewPS!tL{!;v{a0IC)uFJ^%gFaG2phAYOGSqg z1YX2;n$jP-re04@{G_N|>a(cfxXR%^`1jX{P-M*rWGZ?BU;jM6adUHr z24Gr+!8c%Ps;Z(2Ued5%M9~ZV`EzJM65^||0CNnjAhR|;_$Z{qo(+x=G0-D%e{5{Y z-jIpjYpv)9onTo7WMJ+olYNI*PlhgU_xjg0Oj#RCwI$x|Wmp2E*OSE9c>Cc{1T$qA zsY~I}D4F;Vg&xW*>@05ykf6)dhKrgPfv6b|(qs>0kC%rRw&f$m@evckOU4zJz~1AX z1Dz^8dPuTk`8Tk!qg??6Ra2lM-~hz%GJ8y8Sl0evGOheBlY){7;4hFEb-5aRSld`% zp1zQ8*NzJ^lvhX_=2VQlm<#`Ta0iYIj};-uNPlgqE>M3naT zqPwNCX1aQBO#mkTR2Cz@dpX6w|EN9^;0m;lKmMV=#+@1|lE~%%VsF6yqHD@wfa6hM z#+uq~`r>-!wHkNK8Yw+Dn9q~0H{+fVJvluve@F)ZW0RPv%%Q%y*RlmbciA_en?N=n ztu2ECc%OY88X9`sx_cyxy03Z5V43p@SO)T01zwZ+delDaZA_Tj8A01T6Y;IOmev|p zZi zc8-wEgl<&h2?y3c z(f0Ibo6F56d^!}ZT%{3f;|*GJfP{afmdV4E^fIb-5l<=BC0%X@h2o)zIAWsP)UVRE zuPuZHSTv52^gQCOpMQSbad@~LY6{QO9XM7qoKp@`hsIqiA4khD==QQ%I;ByzEQG)d zBE9EBM1yE2sskz`KCrqhZfG3Y-pUf;yCNRi;twbbh@IOqGnmrtI&| zPWfWK7o4Xrk`eZ~l-IWc= zM8bgY)1RJn*Ssw1f?!moe`46ob6o$g5k;}4tp4Yz%S}A>-Bv$IM{u`j1XwUa*H+PR|v;rS?n?9(is=q3G_{kLI(?z zu)nZkpre2%R|R;Cys;lDr;+e8Br$2&i!So9r@ocNLP5ELa`LkW^XrX>vTv{hmCmXq zov)0lUk1TeSg^y2w(GZVl@q^s?+&;!2iYJ{QP>1d0Ql^kI=#J{BR#ih z8}iLC0`VfZ0LsVuXJ3oG{_S(_J&E%x(Jaq@f`&o6+(^GvZQ6(1FJ}0;zax=o+01x) z9+@7$N2MZ5`6aQh>H`=mj$eVI42rHm6}$#m5hK3$jfd4S;Sgvdh{ReNx+t5jg~uF< z&Rlas2sEFe8n+DhDUCoJ@a)x1C(6n=#I{I`eJzT}f1_L=5~`9bD_R^+lH0U^$vSzA zFX%9-F9C8s__Iib?M?lIgBp{z_vE89eTHz$&V0dmP@~>5;c&D+qrRb`%SZ80j?kbl z0H`Pszd_MsbgTVVBY`4!-j@EQY__YWi;3Gf_D$K`k+%Mnva_5k0-a;K*VjssQ0fHr z#IN1}N-v!JhdROI9+^PvQ$OScI^2pONb`&J$ht?wvT$IcTtA#Grf}1(^R3`YPYtd| zCXDLr7LHh3Zh9OEE16h-!ZV844!dZe+VQ;W zgL|~8%7eZr@V)K!soGCSxJ z8Co)-N$7bw(|pNn(2*=}?$17o5^$?T43Kxe{ki~fe24J1IIPHt#nui*AIm*D_!r5e ziQ^boFv?|_Q4FG%KUa0ZX7{B*2!{4dOn4xpk5Ca0w*5B7hsOD@yk9s_QU7(GG=#v$ zd#s&5IvAZRnrXIbJQz}(DifynYe?~`ibBVBV5PrJW6I5VT}HAyID;OW%)2VEgXF2B z$+x1h+N&y+Dz>W2(Sjat3rmf?I&x9%+LU-kIw<-$cOW=w^NLh_d`pyLd-i^Q$>y%R+&;o z4S`Qf*8>T*bGg~{*44qpm&ZfC>jF<>I$8GUFZDY$!mYJIx!;w+Yn*ViMkCtQM@_l_ zAO7LKGH1L9oX(dB?fzRY1Y$VnA|u`DWN_06xovJ;DKs_7Yp{~Yrs4-Ss28gaS5TdUj) z!7wqAsnsS-_ki{Ybd6s`VUS&ji?|lm#iyPaN&MQ~U1eDWC5n;!!)0OT<@aRQYuyNE zr@JC3NWK*$1(*HI0s>&$LnXHD@m5ebowdf#`07SADcj6`(%8AJb&O6pjtyMeBuJ!Q zV(aWh@zG5x_C6M=gohiWerUp4C8LwBwaZLy2`+}t$?2ZF<<6866>{mf##R?i{P3jz zM`S2}fq{c#QQxJER~Kd$EzPzZX5A_!1*1QUUp1?!b2vLJ1Dk1qDCgNPZFWmN8-h(O z|FO{nIkJw9C$~i>!WEQ0Pf~@Ga&fa!HQEvr5_t`~iHd1)%$E?4O+Q^TSnn1f;B`}? zarR?V>o=PB3z3wy{H7v$`w?QwUU>!hM&|q+OF%*slyjNHAl;c3q`kKN)d*3k8MSsT zmb!%qVaB*f)tOm+ef_Vj22esNU{$)vsO<8K3&R?)g86rHSPAj=}qgSzjP@lzj1K{em4 z#vuO*d?Mel0g(qRaD#(VBxagF^<4z1t)rvZ=kcB=?flI4v$0(rxc|1W`$h~(aO_$3 zx!d}b8!LXC8R}C<)K}@%!NFM#+&1aLbW%(rg0HCtfr=ZmU|jvm#OaDKH}}U{CPaM^ zxn#d#hxrgzblx?j!fah8Zb28S^P|I32db|wc6$TC(z=^q^A{dO@+^D{F*g|EJ24VU+e*cZ|%D-A5IAXg2>ZHba4@ibmIoy&y*jDfR=4$;*Z+0S(LEQ0sfny z-|P2UD9Mh%K7LtF-2Y)t8p)Wj{i+)-etI5)xFIgiU0Oc+4A@BkhQI+~GScS}*amLf z%%X9=BctiVa7F468lrwjM%w)1dD*{n#g6k_YUYBs%jlEn#OGorbg;a|3r3jA1DZ zD-8k(2h=Z;-Bu4e6jW`(#$4xXyRi@-Z@S=y+`IQppnUukEfY2 zrvBqm5_#;GRYxQyUJd4Cf|x-!p`Qu%fhyN&9pNvvI+mg&yAf+%dv8g}J~HJe*mH|Y ziEw|!vNwU>vx8+)LPd~kiKP-t(~#j>^L$* z(qU5?B;IVzW1chAp74!(Mtto&S3s9;c=+cBK0ePSaw;f&6+#vp=1O+|ufL$IV4E7N z<)Y(I5lfuZl^B3r`JnFE!J`K^X#9x%!ysEvK4L@N`LWKr@=7eO z#lK>CV;P<)xl1908`sArLbrQr%nXBmQ;S|s`2|vPln|GE7WSbQaQ&lN3SxG)kG!>Q zTS;r}`|@O>T`sX|-z$rh42bs1?W?`Luu{ME+N;ZcfMdQ{r{D=-%FTmSqYzS#0C2=@?kRlW!|K=~9%P||f(}>0$2QClMHH`Rl zCU)H7l{JRvlMk1LC1WyqboK=GHjlsDfs49WZvXU9lG{AFAIusX{9PnfsqbMD1F78zc@%(Nf z3LFYUQp0QbL`5{@CqY_5?cg-W+ZKqOaM29B9rfGdP}U|Pc?%yvDc}Z4a*xL+HEHSu zc!@D3jMrkaq$nu0^{&@Cjz6sS(#vD8W5Duv1}>>?`}k=;oTtj;&|_p4utqTJiT~1THLS#&!0xfMuKp4kMKz_K-tH=F)BDlRj{~D}f6Q>h>x^GsEB7E+m1kH| z@zjKc9-=aGYM^f;v*>i}r~SV%(|i=@I8vccjay>Y-T1@b{w$bH)zNSSU(mV8-zM+l zVc%g`$?CvTjo4!BT>ZC<;YTMuf5WDR5Jv7U7LWEcENAG)Mg9lv>f~#VC)!Sqpvbkj zwd{C)^2@&0H5$(cEKf9$Gn%}H-CLx+ca`#t-Cx8vZAF&TN_CQkc;ABQ+&35g(U1ZR zQzs#d3M_$&F-<2X5%{L1;V%XT)b$x>qtM0WUs;F z=~|d22tStWn7z7@%sMWJE&p;+3kouu3Hk*`G;eCfPuwapli-kceV0danQ~;M3RP)M z#?sWjK-qOu8>FwYf)!`8GFOs`nR;WLXw=Ym`2&0M=(G?lITg+x@T^J*#;2HP=XDuHt z7HQ!{Su!zLJ%8ZYy7NbtrGVHRw?zC7w5tdXRp8k>)g~=jTr8?k$ywE-4zy|izsl_V ziB`a0EwN-@;%FoUwQPfY+9#_fZhk%`MDx>YntoWROe9Of5oPfkkm+{R)V zQv@}U&)=P~*P7QX6$!0F?g{180~k(J*R>wO(aRu?CDi7^j3DCFpO&wk%fNO!sKoxJ z#a}sM_1AiGiA|0(Wrq)Z75Ap8kHTH*3-?s)b~%Y(L74am$u8 zp=_utPe-%2ABHax+9g<3GVtWf#6KH-iK{3j=?_52SI?glt3XIVHn zuzRc?fkSqG0>dZ=z-biA_!lgBVbn|j9>@ylLEeV^{XMT{ByHoc2n7WdY!Tl-She#t znAR6%lvSE5tusvpNe5FG8e;6`7rClpJhB7kU$5fN1RtEz|5?o_HfNjGD!K=U6aTux z?JDm6ceN9<2=hIKpymlF|!@igC z(Ttqc7wcI7g;rn^=mhNFk_Qwul-ot~5{n~!PL zBpbu8x&#$bk_89#O`FY|NJf=`?3)zbImvh9NbVe@T2znbf-Ey7zny(L%A0`>4G~vN zof(k|g{eIHHvbG5?~59df?-$(-U||P_6rzbdQ7`g6X}b3w5c^jdJjSr(a-k=Bzjw# z5E9V7g4`hdjKO_#OK+o_?tL<9U6&4>o!FUo^iryv@ow!3WwhLqePQLR-h*M<^~P}3 z0Wh7W4)EM($#?q9D5`4M#S-K>lApNYb*Q qk`NFFRc@vzsEmzYSDF;^}Ph^nmk80d?i70Y4ldcM%EmS;M_^ zv;lZqTJUG>X41J`sC=7Tvg@@6>-VAoA_{n)T6J5W-59llDOZ>7cI+jP^gpXa{6EX|{NG3B2&M2E;`pD7=p zK7HFj%I*?3#m)DkEgr;>t_wYZX7J<;z!3;YK8UJ0wM3Mpfky_;;nwzlN-)q-H@=xF zYx_~VBt8I_xX7D#1z)~pJ{!;Y=Mk?z-4TH-5BpO%I2XaegQAY00odd^q7SmE`MwB; zxt)vo^MQZ@y{osQ!Wm}p|SLWfQ?J>a_}unpH~k`NCJ z`~zZqQ6yaOUlW(*?Gnkp`NaommBSuh`b|5owD# zi`}nGeA(iivs}Hn%##NL0h@%gf2#dE95h<%Hq-@xm(^*LF9!~WPRq+!Y^3U;=cWo^ zFHBnf4oUZReayRva)FZ~;XwaygtVVgC(bL)R0xI0w%x@fw3fdbvE6beJsKnzo1NZm z-;uqVfL=aGgr35xWeF$wIHa0BmnIa?J(`n5Uf2ohB2trrzh4L0#V{V#dqkGog(U1h z#mu?c5CS3FttqBPRpmM&vB{po@B2;F&#r2#eL~k)`!ocZ>#c5+9W1 z#CO7j4I7lFmxD=#7RNoP1wgnHGBme;$Ti$2SLCtjrJfvsT`jLauRfNro*=v&9VQ!bVbTT-ala zH57f>TYn(wRN4QynkHDd)8^!FhCVMiFvl8Aggvzfw-{23AR^lsO&b%0m)MnYdA1V7 z1C5+eQmiVcG|h`y06(~Aw)d0e?{K|&aeayDMkPGU0X0Wo2B8$^zd4#=C2!F1Rx$!bhuyIH?~Sy za=#bKLUs9Um0fl1sqo(O8z48W!0^T1Y{)s%ZJu!s&dqANI?dd`Q*H0qyN~kHefc8l zkZwKKDIQO0*!%xL@E4aV(xKHZr7ldvoyakW{ z`SYjH+YKE(_Ys`Jvp-T8aCceZ1B2;Tn8|Z%Rg;KcC@GP@tL+A-sbvBM4=f1-MX5ZG z;W|0s6vEcY3eLKNPy~!VjC6jvodh3L2gA;x-@E9zcJDp1lzx|zyE&Zt+?4M8^7bK> zb4xY^4^Ja4*$KqR$fP?fP4*b#;&dzj+{e>8MW!X$HmdRKHpalGaj_K3?xG|w@!fn{;^}+?Y#_S92KeW^X*e=L-XnCr z6%P{mXSoD^7(i@VKl&}_0){=(^0`;Cd3>&)X;yyEGf6RbwpEVzw{KdFJLuH?V{>Cw za*9|HFstm@8qQ;`%<#6MLMF%7?j78T$Az zuN0vEb;k$Mx=Iar$ia0vcS?L@GEpFi7$z)`0R!T!=j<7D)io{&S}bCXavkb+$E@e{ zdxFzw$@-1SyNwyZ?njOt-D-?&@7^cyo<*`!U2`1k()furH7DW^8?5~Qie4fB8OVXo z<;)yyzESvJ=;2+)Gkb*lT(7lkX_0vE%E|KJ@HaK_{l4XEqr95$LUXCMSfLC0CO&#W zq6B!flHW1HpbLPT&e29zCiL1JAMKEoAyd-q6m9=9VJbaRFMRK1Tv$j~_x$R4pc(Gy z@^OmCTW8_^xmxyLQw&|U^0AgqT!vy4H)KqJ@}BDHh(wUw3d}xC~azW zI%%yvCH%ak}(UgI4o_zlG&Iv|%p)Yx( zrKI36AKjAI_dJEo8Hh07HgI==kKTZ7^QJgTMpJ>WqE+slCSz-rFEGi_Q;31^{ARy% zs}P^KmGGj*%EjqW0q9+hk1d&})ttVnT}EQ`!xXAFk1=_vp`jf;#U0h@qN&<)3PcHo zlPKf-uoQLP9v2em(xrxNmd`6T9(f^w#`p_y#$K}3cL!`k-%LHxvlkE&^P9tYwiJtu zk7km(>rK*F?GGk`HtyEW$1`NZu=z^QbqeWwMvJiHqpsz0aJvFzqE+?cMi&)uh|zwY zKbUG=RBIrfGIhmVmdB&-}yOb7Ye_ z+y?twR z{~E4DzzW^Is24a>jpO}vmF~W=w#QFyX3hkf5uJFdFEY^_xfv_G~;Pu{chPsA<%5KVU7%n+hM*Q1ba2`{`Z6 z;+oKu5WFoOu%xn;dEl6=gW2& zyrn-fBxs9!qULd5Fw`o@bGfI>q1su=%`z6p0%84L`jeD3#0*Jve{eY9pT`W^U zE&*((2W9^Yd_)Q!B8rmmDX(U=jRyqmdCcKzl^3R#o~X0Mp$D?s7au2grw;vA z`5L(TcF}n`F^ViejV5gZq&0|iqKlbeZUGfi2Sy}(#fct-&Im_@~wpK(}yAdenS zDxyaAHr4~ii=H3;W-Da$3$SUB0zRmnP$7G)brby3=0@bkjqzQU{sd&1%AmOW*!`)r zTjSO+nad$t9zWyp_|A=J`@4y*zkoN&XEMAIx^ZUIEL zif<1@CnwoiKQaq zq>mIMF}idt5sbmQ-lvwhFYz~54XTE42ahve0qJ`O=k(Ha)e=b zVbb5>LN2ywzb?odXh8wBGi8>-l_7`1zvjs37#LWg;4w^Cf5nFwz#s5XAgeDp&)~S2 z0gySVVF)zx^#Z-5*@>~kX3aCxH-EThJ2z^5e#eI6DlUhTfGZ5HMzg~^%I@*FHZ46< zM+^X{ij7@WT{6%s9*`s_aG;3kSnZ;;Erw4v7DQFf;i};gVYv2_OR5XHHz&_*bd=^1fh?&8Q+5$4Xo%X z=3JO%wjOhJGSx5SC|foI2x|V$6i6$de;A&*q7G**fDDu{L8pya(KOC~Mm4L8rhYYP zirpY>wU7gxV)GEYZ`rOj)F?Pte}6lk9|Wt0K5A`oIvldF!ml2uy=w-zJwww6>ck0A z-<|$!tyE}bRv|z5E~VaDykHswJYA{z9^*RvR$1{oWi*Bl#ia5HmO%-e4jte7k(FdU z_z}3~lZ52hLc(rXX^n~!_s28nK5(9>!Y(SoBO~+!iD=RF?2{7~9lsZ{9T;R~6*3Cz z8}x0w^&tVu6LG2;wsE>KvS%MpMW-@iA9hfm&4%34Jz)N*-{u@*p@A2S6IBqs6A(I{ z8|~~O_7BDLuktoZy2&HRjrO>3AooreU)unffjGRIt>%qVhP`Q(GlQ@jL6mLd5 z7PV5OJh%B&(3IRo!V15y52GKkkyxztIXP7;W6%4CJ=7+E4W~=o727o*CX`~%GN#ss zT^*7x2E&MeRnRoX`xvKp6mk}jAv>tO&oaGc86zPnE`OB!)1=E`a0K8QY{F|F8Vzq_ zOtu(6bE{R@^|Ignc;PhMPQ5++XadF_lZuK!5N_MDaO?A1v8^Ovrr$lin#x^ku#p-0 zZTw%Uiw9uG^KcquRmo0RP9t1}59>psp>B<_@ew6L5Nrui2v*I0V}cR-WSa@B89z%d zb_PH1I`e|~_i|;MXQP+`t>gjLoY3*ow(8x*sIpQ`RiH+h z!O{Lgic^$3K3CTtbYHUdTZ@W{;|$oFUkc5BjWvd_dY(h2yQeTll|*0$K;>V#p720~ zXyEXHmRc#e=`UNs3ypE1KmA>#tPLrY9f1Q$+1C^(<8y5?WXAr!7GnPS_LkEJD}r7j zn|ZLMVSujtnt+*i?xYGHZ*Fq7p6UlC6I)bG+7kc<<`F<|hux58EXOrn0@Lzr)+OMd z5kh4TY7{9)RxlXTIIkMvGC2*8y(E>$EZ~Yv-L>H3piD}<6Kb-Lahf%ehYP5AYwPd4 z2vvzjHl}w6V`b>jnd&i%X_WAexM;4wc&F(6p41SmIfXxN>_z~7eSxk=q@S#!qVQa z*EP()3?KcMDjf8yK~9H@>9PGhZTcXihk%Mih-jSEM~7yu5TNi8QY3-*jR>cO$R2{z zv{R|%kgm?$aIx)u=NWqI z!haAMHKTYMDaT3jtcw8(K+Kz?;SCC{yAQ8>yymshjed*_`&d6)@)D zUc&NjU0JjR|I6q=HHQJfIW|X%Vd%&5vNrirqA*o|8))bdu004vSJm-qTYTMjia%ruWeWf%wvA(w|!z2o{ zsvZ`E8w6Yv$E4&6S6c>SWXB|jYW!W5p)Nyn(;BaCvU7k`#Fx+Y54>($^1sad%L0ni_k%yhSc|DkW--{$@h zHXAyMiT9DSIM^k5Hc#{|r9_b7EJvAj9wtFO4Lw)sO0VgmGEu1kk@U zOG^p!E(s%^`|0m^cEpBFYbNOF$QBVM?EeK9C#C3;y7tw-g7hum zpeQP?Uvz(Q1yb(&-9Yu=JBf$qZ{h_dCdbbA-edrFv@R{a!>*U@(8z6?0BIj=8w<1O z(v;BH+J!Hmv$?a8>MD+^uih|>3@eBtJlz=gZ4WimBRrFd>k)wLK49mrsPlgCb8A)l zfI78xX;j;&dhuLGIV0t8ZPtLRHly zk~XjRSKSA$%woPB1DQh{U3LdW#{Z9na?`U;0#iX$;ixKzyM@9IGW zkq(KRh3w7YrsyhMjR5b6)qQ7ApMLAj7?heLvF^@fCt4@bl8mYRA=_0pMU=thHsWi& z$zbxiw*(o3Niax+nrb-dpJ!;D)sWxMBv8=^wp`+=`&)~X8|ar&korq$_3@+QVPJiA zqhKNA5mrxhcA^m&c1D&OIX{Rf%IgS5Ca)=>afdmneI{^@i-ybC?4LrP(KZ~woN%635p|?balb{IrW4^4&C<><>td&fw&5l1dX9rNq%AeCBh64+cptoXca|hujZozB;qIc-3Og<_qPER$SCoiIVSanV(Ga{B!SE&D$j`VrcJVRYs%t#?6*Wm-#G}lpAt8_ zk8R=je)sAJyWdOfhaM3NoGfX$ik;Jt_vMARl4T?=6K$S%26qS^c>9yyY6tSy=g}j! z{tSKCY;G(poZn@G`tyJ)CQNAP3ac!|_kKk?D)GGe@%}*U#DKj=lcNx0mdRSaw_Pc! z(#G@?5~}f;1e~518`Uxm!a&IA2JtGxtojEs=7cUj0D!O1t&m9Q7I%!RYiztJ%N6n- zaXZ<3#Kfl^IxpyGx1ndqNXuabz>A1t-iN4e)XIFW*2XCIqP=qn{^CSWd#|`DFNrmU zbsu(WLTQyet85(D6jwMrMHMC0(#zwG8gRc^%Q#~+bwn1+j@}J8JJmawq>=PKED7(5 zYu=?&{mdKIo>;kQ$wdnm+UApp-_pkISIvJFn@H0B62CJv2Fe^l23oB7` zj1o<%rtuT85!>jT;ma`sDw6&#AS0cGk+gr3w-#0uG@Grky%y5>RR)u?ER;Ed9L*ru4T5Z%G7VuaMkWrY&CN2#j)g0lVwwkivx(hn9<}<18No}} z0{(hBWHpTo8>lt5wu!SKZlKndAgsICFe)@g72x`$T>bq^zw8Pv;t#3_80iBw?N*_O zW6Qjso4%Jq8B8Y155%a32-(gnI&-({-W=V>!v@|i8(Rfyh-(ZKzTpb&dPzuoJ| z#6MG@PkH@fAcSS%TDwsiDkcB1%a2Zh9qAG;d+}Zr;1bY-qjgN(!LcAE*8|-4z*84e zgF{T*G@851VP*Fbb*(ra+z7+S)>hLM-MRh(weYr)Pg@OppEqs=(0pN3)10Z?!byJ` zL?gy$IcHa@Ie1;HLD+&MhI zDu+*N0E3QhgRW7Wn^My0?0cs1?c*2U4hn5|RG#eOQnbnV`v3);p(f*v8A}shlk7R( zna=@xS4}wBY!I#=BKRPCfMLH`c42%D9zG&v{~z&mI7y)hmq4?tP8M(nTQ=JIFGukUz7_`1&6eGEk-;JojT9?g!ilhEIbT@cEA4L+V+a zO~poeI2%xPb>>0(*vDUd;sYf?Jou^MV5{&$adpS7JWA41EY)a)8@fL);E! zSk3Lp>CG2e#`&Yr+J0w6+%9p42KdzKUR?+M_%h=;PXPrrb0QR0_E+v|v={b-@1i|z zN6DYGV2ed7^?<7oMt*$agsFUiV(iG$gm6CrSN|Jx@+EAn@fHW9z&HG_#GzKoVO*nO zDRRFdD9HC%81zi(Ftd~Yr;|SaK_F~E#B&Q$Tpy()ok5CJhC2nh>gF#@YeVmlNUK`BuW~hXBlrfr-ngLV{{ox{! zJ1z7WEW}3tQ) zKr^Bz2I*g5g-)RCnOGplg5Gs(?KJBmc5gMYa(2q~^{F+H2uwg#4KdK(uEB%p&I0p= zY1te2^AO0C=Lnd2c&Q>a_q@mIvHV$Uy^Is;aNCfJ!Z7sF@*1G_F5Hn4Aj-)Lyzb!s z1$G<#;E=?Dtnm5~r^0x!ffuasf~YF5c+-$3S--DGDt07>@?}#79Ese($=82 z0EzUDM3E;bf%W_uz0^+0A^I@+tN~5^V_tj^T2bxolXX*9z=B$x_#IqxR&{^M(>9Xp z=OwO?l_!)JtnhKAos2o#YeJiekIvdI&QR#-H7i#5L>ek2Iv2LY;qc+N0bWe+c97<$ zpE#uC%0ZMc=qB$LS5Li@Fi4K=G{{P`dxrjomu_)ZRpTgim%m#6xlGiMang2w=aA+j zVsW3ooXi_uOW^77E93Q}O7{Gr5>h^>kOCFlXKsj65Bc%`wE!|vU$XZ*;GTP#-|Jf@i>Y<{>oT|M>ZP8CFfsUbM|)eEi34OD%O?8>Rx z<2{K|t$Hk?rd)t!F)J10*|e?CnlG90tko$DhFMsu%N6Tm{jm&8ujF!W#6al~na6QT zxSheUQF$4BQida)4S1$0`? zH}(+W`cSk#*O*G%3L7FA~^x*Y|Sd_ z!@ou<%*q|{O$&IAm2&^}(eF1=24wG#8fWv9!3LtvXF|sy4GyVzyt5oHwJ%c5XNL>5 zFhSviBKSL<6_o5Kzr-7KKE81K3`LN7#7P>|HPodCe+C|t);Z3H;=u>QQN65mTRz6V zbIVEIA6EQFiAV7kjBUA{l{Xl0wPm<3+k4n54Fw~i_Yt}1uvV)%B@m=|XXPq@}dyIa<1#?EQC4yl5 z`%fvtc^PF>qVQ4`VbEM*2g%Mz%riKZUzfhA%0|VaQ_>-+fq8U}LdIgOt)8LdK#{i4 ztEMyOjo44Jti<8gf!m1V$DovwH>fzuu`&D=IL#1=vJLN#`=A{z1WPqCY3%@9L73F5 z>uDzn2?BnSpYOM#S0tPIo@>)i`VaW;%m{s~T-ae1w~kCB0eE+d$_4@%*5XROl-g6i zfwT=Q4Y2|Quz@B@Lb)5gOo8toBI7uBu=*i+7j)stM!z8Lp5IbI2#H-D+XvQ_45*bF z2;|3{J$jqZ9?gqU!a&Zfynpy&K|zm$(CpSgg-(S)N$i=->UpCiJ{n8Xt02pJVnon@ z$yEe6cn6G~XfR4!5<4%f^3!I1D0;SU1+#?^IDHer)X=MF<@Y<{0j^iWgD$84|k`0+bub+@asZ5p(`mf%mgv8v$H95`bw0zY#F)Zos(Gg$? zY1fj7lcvuMDWL8aSBLX!yD5UoOUk|O;4b&K7uH^uOM>5N;wuJ-q8%z`$F1%A}4ddLalV8HZhCLeUq zj((e1;5<_~#*Cg1Ky-wk3F6tLi@dqHNtB9~z+Ht$`yQq~@L0kh)(cih`((G_!G%_) z0wO7lzS_ZWU-OJnedYL8m&{3ls)n~>6;yTwew#4Li#!R> z?uPuz@`O#tGc}>rp431c_%_2!rhciWqh)*Jwkv1=KRC`^Ou?BR7FVCJ>xEB8Sa7rG zIid${>Ef)zxTGOSM%H;1|9Rjd540Vq9F4Kd30?sHA{1r%_4>r8`;nQL)SZoNA^8k!?Ep5Y}>YN+Y{TiZJQHoV%y2Y zoY=OW{{3&fx89F^bzjwI?^CC0pH*vBeZLk^zBZ0SHve-@fyF9f?lj0qovy_Q9j1#f5lq zk6liW6`c7grT3KP3of8z?`ZF;wBiI&W z)qYzyz*x`>06u0j-JfjFSo#QC&k&*KtF3+RrxWi~VrsI2182gE&yAaQt#YA4eNdo5 zlZiI8{iNY?Nani=UN9zKbL17H-V_utC+MvO0_OK0MNYCuBJiVLXm z(dl}w*HT`eSo#u=cF*;3RVDhsox>1$_p=qC8=Mx`+ZY|jf2xx7d}zmhmJm+xsfm0$ zdTQMovuh||c&>;PsIV?lZeC3VR*`NKR{rHfM+cAT26m2GEY0{0-{C@M;Ryx6n|?`+ z5Y}^LoI;}!6-K^^SBK|!eKnHS*+Ydy_14k8Mn1{OPhvxWD#j-i+Cp}hV5eP(v5HEr z$P53782_9)qL;c2`x&8jI81A1n!s}ocwOB_->lw2iUfh4Oc8`LBkG*c@WB&sdjnJ@ z<>$akh37yeG+trzL8b|3Vw(qoQg;g|qt+Jjx3Cte&Hoy8zi-Bm#bz5p3(Tx5sQA`t z=_~@`l)_EI_G+a}xkdI*+)e`k0YU}@hr{mT(y2Xdm-_?kvS;+so*yS$+ey=AfzKZ+ z24rQ*?`NyY*-~YhP;2FA>w6nneJ_|HE)S|wK;7kfQ#Ff&nQTt>Q5qT?D#swBqjj?i zX4ZTAB|xYPb`#?VGj@@zGYQ^H#wG8_!RGN9S? z9nBRM@6b?jZE>yB@0N{v@XrRz+M)z{@UU2!(R(J=u-kJSjrS8)43RAuW&q>@Qj$Qy zrQn9B7mwd{yR09kdG;903|Q&c+htp(YJO|%3Rm5Yq^hZ@2TbaL{Z?xvWJM3IIL@n#uZ)wREm$GL=FOoNMvb-7BVt| zllLeUCsUzH{|uTNOK(VGT+$gyL0hTUWl~Ql;S~{eBmq&9E{&Z6d3`Oti40K9-t8Pj zHjymL(ls1*n~X;1I2R#s04a z#Bof!hJ^A<2@@J$L8H7vHWmGLym6rZV(lfbW+k!dn^N(U#se<{LL3bKl66VX%F4YE z3Y<~1EF9_V23jn|zgb&`7@s2Bk86i{41sQ7Fkl;3e@%fB|VET;lTz-mVuBJkhQq%$sWW0s}rN6kWV?>Xv{rEN&|li?9~ZBa#^t1P2qy!e z>WArofjKj=ctDV*+v+f(;rxCM^}Sbx-8=+)OP-ODTDf@i zfUG8>UO$MYFtgZU+NGhUY`6f29AF?hx1)JPqx-YFG-HAxPj0ed2@`Oip$C@|atITEplV8L7={DH7#9>-0JS7(Og)^8}#OpVhNeaCsf;FoMOa){x5Rs0Oy6VqXx!W=> z+zBoEajt9?-bQOOI+F}aX>K^;-hQbG2Sv{8Y9+87z9swCOlNmpov-Y|5EMU2{ zaAYxiyqnawVBd@U10--a%{4oI3NP_}viI{O`wt~h=m`s@=s4GC?1U2+=>(5~@*a&j zp`U8OK`-XQgAUgy@1gH##7wv-$qQO}<-ToUfI(Cbw}YwQL>naD?km*ww^wGJC3FkV z!sXRblHROfCcZVFQc8GjK<7+VMVKQHZX5X1vVvB_KwIXz%2FULC6VFdBV;N5Anb0% z%MHIhY}J`^-d#dUmU9%*X(W7MH^YafT1()1SodpoIaX1bRzHH)YPV5MCH*8tf|xph zua!|LppkMhNLcVT)I1e!Ht(q^HeL68m*dZDxw{&T#4Zqjtsvb(YT0LG=mA-$$kzZe z#C;$Uz~Mmdmjw$SvN)Rp2f2zf&<9Qp_Vw@n_;$rJvANt!l8f#ESK}%pQUE=ZvDkT zT5zl(iIwN$t#3U!L4E3E>5MKC^JBSF>0KjS7N|ZgWd_0uq=k_G~)=&_7 zYGH8zKuD*`;c>Gog4=Lux46`|P<5v~5pM<_7R*4y@e7YcGyp;i4|qFL`KOpvAhh8s z1=sH_BIyeeLh6i`_&54Vk_d4`T0?J5M<_~eAr6pgGpV=2u9A|hH(609UbJD(!lcme4YW`Aa^6RWQ5&p}C0Y3`STNCCSl^{4RqJ&}tt@F(6lzh|d4qS>8D%7pOO zo+-(aNflDPkCLvgggtJ>!ibQ9vT_r(KkNmN{BBV*wT$ApbX>Zx|5PR}xuAbN;4C>s`QPZ;x%kL+=&k#w%e2uz~{7cR}o703>wA!l=#Xl)T zl&s7mA(h12RaArgSO6tBuGLXN*C;MYN^08bJ}hlf?AKW(GaQBl#U(l#+DF*ef?5`Y zoAY-X&=8wxDuL_Qf~M*>z52tK6G4POAwv=c?M+sjq<{AIbN9dRa@ z*iL-obL$h)lt*-icJQ(t=y~WGD;42@)6D*jIfhIET4<*ZUsid0* zTwWG8lc0GV9JMu2H%H#o%Y^OK&~6-)kp~_h#PIsKJB-o+ZLr+$BO5tX6JuBPmIU0H zXc;X92Q`B=`6@qT`T!fcmTM~LH*#2X)P_q}PfBAc5*1$KIBotRPWd(*oLK>M z;204;P~pWU0h2l{`zcO`^gu)Khx0T0 zG{@&q)Og;83H<=!|4JM`1=W>51g1RLuW>f+iwffuUmALzn7kjDhpOBzHe2)L?gOc7 zY%K+-aAX09(=NTff(Q86YyR>5VRj|9)K%f27?lfzGHk6FPnvYX?hF^Jc$&qVOgd{4 z^rb!48P2BUK-^BY2$7jR(ZF8z7$>nZLaoS>7>@OrfEWi>(5j5%4+9-wIBfbL%Zs5G z^D)M=I5tr}iN)dHyk=lwn21D4ZL!X}Q?X2}`cB#-TS2tTSF`xH`&n{rz#@jBgkgU4 zJB^2)PEVG_7HEol>_YDIw&$%d{r!-vRUQuzxnmfH>zJ*k>;#hYK_jCs z0^x_M{EIi7D0sjntHk-({#9o+qqU3Qj`{4OAgcG+;JK2ma`&X^PYMk42QqIYv>j1) zcf(Q==Gm02Xit4V&+_3bc0~7r2~i(9Ahe7`)6x&5WydqO!;N`m3P5LJgrZ&VwswD- zAH}=2l)7&`cDj)=Tn|Qs3ddVk&}=ll9g<2W&xCXSMweo(R06_ZC`Tr8KLp#v*xVNu|!S+19#JjaM2)^AV)mK;w zE;5A+JN9L+Gl2kymVCxI6S6@Cyflr+8E$a_D!_6bL~R_$;^;q2)vUJn&GQX^BqZn% zEdAiu*#mTp_+EOzZ7Ty`6kTii-AFnMwkLCYG=l-pN8s#hv6I8xJ#_vPFi7#15**~o z+Ep?=Ug+3Dc^i4!=s2%?CpOhPPf7J5Ps$)MCx=(irI}kH2`~RR}cL4ZzIq#?KmAL<&g2-l(*`c0Y4l$!l^t zoY?aD8qd3cG*hY!C=B5Bt|9!n4{S(S^K&RCAAjhtB_Xk^El1?V3K`^<;n|mW&O4 zbJtCfS7?%$&w84XSl%2|#JBw84pEE^T=JWv@7y0B(-Lcl-h-^`G`%1Wc;hxGBA^Zs zig^847&ttyT!pwmT@SbrSNdh(pMVj&PTRDfL!Vy{6STiW*y8aFy)A;27*qFA6uk#< z65vZoP9W2>V0?{@XVq&x6n{kZvZ+Vyy+RZN5rgIJnjotL5yKQ5vhV{z?<3IGX{$r^)Uvg~k>BqKy{aqJ zO(7lC=I6evl$V!qG2V^l`51cx6G0`!9uo;H=N|-m6&la>u1D1FE^TIZs8ANut;G@5 zfmT5~$?-Z-si27K)(S$#%q0~^0+Mw@T`n&xr63@UW*pDb9F~f1HcXoo1XIj{cCv|? zu{~Z=GKHTc(t|w86<=<|2qa;3Ei1)R=Bx|3p05cHHq2C2)w~OH&L#I?Zcv1EM=ylN zk(y3FE;2N_R-lZFR^`mwZai!pW&|WMmlAq^g!lPaWN$5z=imd<^%z{^%X;X3aBLQQ zbcQph3m-#1t)_xsyyZTb4z$mQSz3H6yACBb7E}K-E^{AWQn+Iw8><>VC0~DG@ih6Ce%un*qF&_I;NV~Jkf(G%dU6?+pC7lTN`LivVe+ABsdTaKxzdHi_;Fg zz4$B0$aviBXhEIL&hlaZj~+G(j6BD;)nQ_FejwYv`+cD}UfzDWMb#PKAsGw29;sV5 zW$3)1YRBzij7djytzGe#^Y&0G+k}Gq$OMDd;4*+0v4F;AxT&nCXXzD50(elhtbI#& zzK6-*gjLPkOMG;;{d;Nuy>g!#)$0WJAY((~ z**1&20117xM*uwIpLBddQI3dhb<)3|Xm5XXo|IS^iz0xIADKR$Z1;3J?g>)^L-6Jk zJ^c{0^iTs`M2~p$es^_rsl31}NI{u@!a$cXcFvo(Sy;aemx{N}n}_e9X>5GV9=Dth zs=bRzQ!Apa{e(<3-wrvFa$9z>X%|j7I;{-u>ZfLv2z>(%kqRYT;eLe7sXV86+|Qpef_dj={Lqt>3JqRGE%7&dyJ}wr0{a!&A$#z zoC0&UlTxnSQa!hw3wmAAbMGEBP?}FFGoL*qOzzXNh(nzTRN7rT&NJZjenKVro(%Wz ziv=-V8zg>U=e4=wzb$Dn%QBUPxq{ysxB42G(0{Thh{c&zx=cRIUgR!m5K=Ll(EQf)>E|EOLJ}Nghzl#-=R_k$eD`QC9N}Xf(yegl4C3|8ltdUO zVfSHH!Q$a7t$oDuc2FyVVIV`c@4y(LJ)3tKe~;27}@ns+w)Rh;r{3fP|DYR zcsbB8VXPEnF))aJ5u~AYX@j0nuY}rblB9jpbH_6C1NqUGhOQ#g9Z_w0`NQ=$fgI8)8pD4+J=Jla=~BhZq`sp2dD zZU>9waSL(ScU^&wpY|%c_|4_q#i^@u{my{@2FwQY(R$bhn9nsOq%`v%TmTQjxlqVB zezylq=^9o#qy_xuuwUg~&IXu61(gRZWC(kogx)^=Fg6m82YhL|afqMbG8s-{o-cY{ zPrl;nG2u9YtDa3qkgTs0*PouWNrYYYSEoT06vXKLaOfW-S^O|&>3Rr+*XM>TQ{M^K z3VW|f2UuR3`Si)#-q+m@UO_9c_D%Qex!Rv{y)U0Uo;sA@?)?Sz$kJ?u-c7Sw(v4>it_i9m%fD!(vMLw`pHb-}`cndgxJ6Gj0E)_KQbcZ~r< zQC;Y#gW9*oCXZ?czD9HtnL?>e`heTtG(@~9Bn{Ors{*xouL`Qc$hUai$GaT6IS(Ke z!xUy~y!gtNFf0U8ILm@}WcW)~&T5XU_K-P*f>V)+xA zk<=>uhApAw-VrZLiCd13{+i&qFB%XcPvE_b%SCu>ZE77a9c`d57=TOQeB$2?v9E%~ z4SS~PD%V|G_=d0?FY`M1@VuX|ru(A*fhvEX^zk(y{G65ma9{9ZZ@*_Ua8~Ts-}}P} zM)=;^p`Rb!-I_L5Q8)`w9Lh_e5Eb&tbv;fG)nqVyQ{!g7?-Ala&Cx2hbiHE;Ve58{ zSnv?Dxo&QHX<-T_XncF5{n7+`pEGF3c7$KQLRR{5z6yv!)HMfZtZ+Q@1N*M)C?{F^ z6_8NAcqw1?4UTA-MW(P<^9j3UJP*zDw+k}^u-n^fBZqx9>n=h;Npiv z>8R-ZRS z@Xhce!SQNLE>imsK~v{OIrCN0(Q+i9#r#X9$-8e#}ZhFD&hNz zs9g6-)<*utxDQqgf*B_{s%jz=ykwI5=<=g`omNws(T?YgAMgeItkW!Cax%rcDv-Rn z`dbuKbYSX1^Fv}$K~4mhk|Y_8i@eJ`8zdDXL(wm(TggPwBozYerI>sVYN+C0Xd&o- zO2Og8ycE5>(l_kdt+IHStP*G^aUgK#{c9dSI3C?8MRXiL1wgWBl7BQ-jy3~IZicBq z#X8o1-YgE}dlxsGgIN(bK_75C(QH^qfNFnl^78;<4;e6}Kq({CQXipV5UPYVeT2Fo zajc^%Kv>)xzl?j~XbZiYrwL4zLgIC?nMNIZc6KyR|g0IM_(v*XtQs z-}{hkuWUS-!{_nv7Q zNORrkh&JUodCOd)ojXVRg%`y3jW`U^`~`6RRd7_1SdOxS@8g0kKVUQCpecC~t0udAx4DC}Cn15#cn$G((B*3m+4 zNwfi7nFRmfQn_2inGMi&^d}(8vI5%{LqUq5M^#Tei|HkV6F}rm{&I<7rO}y#0!XjyO)lLuWgDfp+Xkae)kq?6sw!5Ac-8kO5hioGzapE8vpPv>)3 zQ=?7f<4lhyv-Qsnm;Ce(JO$|EJ1@EfDqs+`RPdF%GM&N3AN|B``3?CQVN6B5Fm?K2 zjCfDZV(jm6;Xszd>8W<|*)FQ^EK0v{F2;WlNB;HX^kc~iOtHWMqX#AtAu*LL*zo$(#R+k!@Gt<85rmm})=A)H8;)FH5=(C_qz86#1c~xF_=g6@-C;>2a+82r3aI7KF^^s6$r zysnGb#Uk};ic^O>opLhZ$JSqE+WOv&;hEv_{`lklboF{#5mFq+dJHeipyN^E7e?%6 z?i^71>;eX0(B%9kr>2qz*7!gIgu0O(mzm9tbGyqcYSlC=Sgv0rAcW>BO zL$O4GPC>_n)==oGEv%>~wY^+dL(_AfOZiS#GTiELz1-Jz^z*pMCk__;M@@1=*;zB; z?X+HRlvEKH3gXU}{?pia9a%Z%-p}KHwqE+j-buk1Duh}Zde-YHt*9PSS4HRW=Fa&v zI=op>>feM`Atk>_s^3>MRIf)o+w8;HzTm`I>xTX;B|OM|5JfezoTS^HY#OT28TJ-> zP{@#l*yyDgV%QMib05EI>FL;tkt4hm)4(PMDY(T{=EYfuG`6@~aatVqgjudh$Fm=c zNGqCZd^@%>LD{rAFtGp!7ZU<3wDsY(+$Mj3gb3?8K*)?H0*I^2h*dmj-JTXrF>n#N!&S5Raoh>oh7=RSInk(CYHGB*Xc?H{z{NA0 zQr=J|NCm!ghayCPp{FBB7dVzGv*0Tw=3O(ms4!eoKXc(SEC+*5+N=|cedm5pgNB}0 zKdg?mHTBlj67sa?^8n!uJRHc3C8hDSXU>x*oeoGlLhpdls?}ZqV2Kn!jBU1_ZP-=0><>DBlE9_Cr1hA5BD8k4S6XkrN8_8 zW~21sx|llUoVW<4s6}9A;1EBUC?V0aNPNo&R>->I*tL3Kg&8+pzTJd~D7oPvKPWZ9 zxZ#kLPpitTszCj-R8*9j1qlm`>CdjVI{!pP!MJX=JHq8xalzJ#7;m2elW1u>$Gt0z zbo@PwEazo>yz;zysMxsu8gDM%#sI2vafC?%dvW%;n@p)y|0s&inNGB4XN#DSCZ!CyPxqNDE_nS64 zzAlHb7|rH(p~Z>#SS;_0&Z`t*mQXk`ucnrEv%>4;V!7V?3}1d|`U^~T`f6^TYmRvY zg`iST;&px&Kds1OaJtYdJKs()kZ}1>i|5nxg!2eV5V@b4T2K5Dpd91eXnryX;D9Bs zSpfKR9kg=W$W@(2a%N;2s=&keP`>1l~o z{vz@acD1j8Q=gpXht0)A=0pe^5S5wm&MmzC($%$2kj~oo-yQ2E&S1HF(H^ER*m6!D;?{qAe*3h39ZAV<9e^V!+i!`qt|C@h7^coG@+k*IyxH|#)l z1pg{-I0E=C2h2eK>h&{6+AKU!JrR8GxXKdxV+}9vVz@11z$GD;&N|A5I6br01|B;hR z^YNX;e)8RBoq<55d-XOG{4G2JFDRb0q+>`*0_YS!Q%6xJDLf@VGry~k^b6|^bb;a9 zknm=t7{~k2Vh%rE;tq9B+ps(2h-;tXso+@%Xd{$=_}kPOxRTLhSOA>#vUtC{zQRsr zUdprU>axHcP8Om^64-KD-uVNA3GWm3tK6(by`l(cKgE};jYa+{WX2E#7fOvw!iQGR zbtVEH2{FsLbDr;L&W}GvIS>y7(SA}JgbB zpMm&6FOvJFMGJxNtOIC4E>sNnAsGGmT7vhh@p~(4fv?q{@Wj_43_bJ$e7*L$d8^3u z!&%EIEcm(nKD73CvYz*RjE-w_6&-{!;6u@(k%g2Tz+Pe>2YVEj?zuCJz%*>&LgFqf zFwJs!C6QNHHo{XB=Zc&BTM_+0ZFHcls*v_$j2<7d>4|z`spd*d7YSMulTH=Uh)Swz z4Af`QEOShoO;*H23(KN|eam4H-i_$~Sn}8oYD1nUv`hNF)F^hVA@3N>Zzl!b z3WLBI_*a0b#boHTGu)2UPQZp`(_6S zTqOFOo(+j!kf=h7Nb?cxTPxA>97nM4s@TqZ1wH&pX6b}aclxt|C!7N-c_};^dFh3E zU{ZoG?}EX0bvg8+gz)`@ig`cK>}P}vzT?}9zQ2(nfal@<()R)vz8p+jgd#npuC^*% z+O4wvMxM@fA5&F>t!*_%CG~bzKoPxMok$X983=rnd@}cIq*!t&WJ4qv38yeZ(o)n? zzf0xvSC|pSk|muZ8d$`m=ktDwxm^96Yiss86}~zw^QuSbA`5#E@AIq7BVweorc$pL z#!bfL7)ecNqM~T+rFf=OV=SYMrkqfPjDG_)WT>d3e(s(erRV|k~jZ8Z1#Cu>5`3YQURrUeAa zZmUa;uC7MgX8?K^-fAT1+@E}ASTiK_sTGc9`9pD0`h>7~AeaIJvD{-=(HMTX;JQIm zHdKHtgFV3_&`g@=Ev^Hr>%e3_A2u4Ot1{%qqP=;*-on&znBOW;47Pa8U7OIh@7m7; zeeV~RKCKuA>5*|HhCEg{hRs7s{A$D+g+|{gs&;3fAwg@!>tqnq8I$?T<u zoIFf2l1yrtOK5m8UZJI8Z!a$a`Z~!f7tX&BK>HecWoA`uzwsgp;Sei{rLMZ*>4gxD zr6QkF8=Em00w4IKE$~4%6HzZ@ooAa|um8*hC8@!kvj@z4Cj}2excZjFSttL?1r(-R zW7Y5xv)PGMzSq|jgocAzC!(XwUf~Zti{S?U*TREM6b5A77D-p_!N*8OLrL}Y z6(tj=lb;Fbaq_L;7);OJhW1MrDU{nLLIf5ZPpOmdMLr5`19D;npSEyA^a=93t{u;r zf2fFY{!@Nq+*8El3iyVOkK)Dth;A5hy%i_gQMqc>SICx$z^iBP7BQ5rsU7`3jJa;Y@zhx#O&q|{6)J9modkIi@e(;{V{0q0?#tEtujKKTAqd;-qc0-MT z^UjT^>ljlPgMWPJdx=G@>(`NP!>fjkz=Qi}*DR9Z)`P^z&gXfAUg%7;+BR!;#QIpr z`_}IWUCa+IkriMSvH3K(8a`ri6y_L45m3L$vU#GrJPCrXxZ3!g?st;wH|`pxC;#WK zajJOv$2S8GpJNB=?t+VX=LpjNkFE>d{YdCy)J}Qg{Jp3fbf|LS3j7HH?1~eq!F57i zkx~jiF8p0z!xeb+GgO#Lp_#~pA8?XMMfJ7yvAAfgX<@N8$RRrw!}d01FNi>1;3EAA zqyu+?uvC<_&3Lu&&1RtWkQm%3WAj42BEU%H`=27NSy7(Qg1ZCkl((F@bM$kN9S90| zm%;EtdLf5Fa2Txk=lPFv)j;T2`#(BKSi9apiO{ijIK@5gSKon9h?(|4-I47G@!ZIv zltVR=XmKBG1T9!yc?DLdgD#PnI)fc1_h>$Z+P~nCSq2^)coxYbyDJHnB3!0W)VF_$6gs_H*uE~ABhlL7A-6%I0^g-gB9HN|WZGzaR7J@Az*y7@@x zNTzmYA%_gM&U2C?F8d$k$AMeWDTn(Kvcv>E^Lj(on-uK#dxv!+5p7^S%of3T0NCJQ zg)+x819#Wzvaha>)Tjb<-0orz;w|(J-%qqy8L5Q4apBXxEe5_UCaWm?=67 zus}f^ShJZrg+6&E=+aRZV>n6lvLdYg%=(BVqq*&8%R);2p(|u%X7MAoAVB@Xr~!aC zKdL+nLSbMd(+6W?@a>z-MwF)dF3a0va{#>Uz>7YjmWr-7eh#H&z=X@7ns$`GX(_*b zfk`@l8`W#-*z?;z>-h)v6AKV!mJj`S9+6f%9=-6GKZ!U5bEBm8lt=HkHL6zf4C>Xn zz3=erk*Bn*jDQ>l9=>%5NGxRiXx;nssV8r_EgZq|H3_NVTsstpdD~gzU&t3;sxx7i z3i~1j;c#~Qc~bY~SdW+`lB_-KCb|Vq2md;8((&ppyUDU&-gnV3>UnNwRCd*}S#LZt z*hoWr9tm?rsooH)#01|yfx`LkI|j`KWZ;b|ra0bfd->k%mPVrbpu7faMG+VS2d90> zTdP4GZmaUrL^`DVLeprXUw9iLtLbM}-$?7qOOnOeMaIZNwSS^H zN%h`N{L$@*K64S(SJv_JoR7|=Vp2URm3qVTZd)V`{?*)(!Ci*dKY-`AzIYz|gDnC@ zSTqwd66P_K9YJb18_Jak`P!|PQrHo-A*5iqJq$ClW|Gx_w_^Z?^v|MkZ0lYdTubO@ zSt$QF+~lW6j?g;BlUrgCruwoa(Wrm;#$VlfTg6sFB4ueUp0WaLMlhlBQd^gom*~=K zWHFFBR!UnVg{+v^E}}sylsc0ZEEo<{Htj_&+Lc*6OvB+JrqJ5Kpm3?#F7aLh-cr6S z5p3fmb7Xy=do9em19VHHhQD6{VhR4i4pI6ri4!UHMD)%t?EPh!g>6vg3%~wN_HG z02_zyQJX*NeU1(Ui*dsZw6O&hOQEWiWwCI89Far*rx(2BQ(SWGW+a%q9)Bq?HHJF@ zCgs|@A?~dQ`CahnrmzTu8&=;A^;BS!{oJ|5?)Y^1#?M$ZAka#w#Xi3%JBQyVrf}t0 zd;U9~^KZnmqb+w2EXio3`YS56z>xsKwg+sn@N%igqI>fKGI`?h#%UMc=+an0z^6gj z@rRWI!`qYz$Rx;zx}g>&yB3C}|M+1R2#FNQEZ4wQZ-rLx8(MWDm@hwArzTen0r@In z1*C$|oSM0()wU@=0_c;o6az7DZ-Y>O@+VA@eV(qql3+!14M1mMfOxMtc0V+@s6PTy5C63x%;o)eecD>`aJMO}8TO|=jFWANy979!2umx3 z&D+k1WpW({MYx&wr8J&ni>2@ccv;7TkKpl<#d>> zEt;zmZ9aGnr5m`e-g{Mb1bT>E zM>uBuXJ+~@!tozQqlSmFSWJJ2vnZlNZjT$_H5=76{brwHR5qNnIB=;cDWQ5^kFtf* zeu=_q(Y3#~SV;>)Qv#C}fTak+k|?GW?X-++5*wBvIWu{7W0dF!PH1LDHsrT!s zejgxAC$oT0onjBs|9n2DxNaETeSUws=w8Nt0pIa@?neHru?oY-ZGXDydH*)` zdHpds!{xkbGSw7fO0K%@up@$Kz;pD1N^r8!os4HM2oW96_jSTTe*e2nyv5f+&>y5j=Snc@|}+; zrlcn>;8^Yp3BGUKs~Rl0F+bY@diT1|_bi;+o;&UXxwJJYuIF8mczu?O zf?)k^=h-a{o~D$ZV|}mFv6N=hoeY!sZ$a}EQ+B(r_?_o00sB3p@_c6X<=qXI)hR}_ z-n+A227$YXLG$|Bj-02}QGxfrlgN17&9eloh8(Ap!t1Fm9;c1`&4uUu-j|OpEY+jU zR*ark?)Tysd@i#bxmq|Mep3g-lW7PuXLAh!Ehl1E>wQ5%vA;g0zTyCMf%nwrCv9Qf z66MSs%k;$g4$TQP4XbS)5(yXBFLe8H7?pey+MJ_;{hi%l?P8IAg{tL)r0 zN4~&LQ$&581{!*LyOfi4p8B8lGia97TrJ-YEtFfHWPK+`{NoGNTqG;5QEje0F`emzK+NLej z)7t7ycGWqxE199?*q@gE*?VxzTOFQ68r!}-?j@bJUSB&D&qVwIQw|@Nq-jn3YI~@% ziDI@ax&4}Kf~;Sp%fq6pT-z?*cr@ZR@2p3#HFM7#=i{bJq=zZ1gPqnQq+I6Xa+bs< zZ-ymD8WDfaY+b&u5R|bR2KP1O+RiqDz|o6lkv`5$DIg?S0)MBM2GvZG3%_NH%4G$|F}yIL+&f}q^`0>~j{U{gtB z$0(0@!&~|YmlA4eCs!!I`aLr0j>T;)_YQNk1Lt*8~? zGNAMgPiWou#KINrJv!K>*!_m@1)`ydRn|571OMqG|M|~pQi8D{bWH{=YX9rIf8x?l zvI6lyZDcEu|K(->SfEP|_yMkM-utuqzkA@nTVIj}*lr7{EXYqZ%goQJU;oE;0+T7y0BkQsNuvH+aQz>qEi=KE zDCd~p)pSb#$D{MF9~P(sY*(NslK+=y>fbFi`+x)r?pjVZ`pt}wYc1XBRMWXYS11YA zf&U--!wAEU_OZhJt5j=EYm_D~Hyp4ax4fR^H0uAg-k+oaN`~~}fpS>jVKim`|G%6I zf-YFUl*`EEc@K)zHZjYkW|MWixC|d1i$`+INxKOa34Mx}XCH!Ox1%%S%cLS6eO^3o`3KeBI@XpGHd0J zDtpw0$0BRKaHcO@ao=#m0+GQ4fO<6fL%F9+9RpWCbP)OmrjLdK`IXXy=9OS_X1a$r z?<3GPa8Wkj6ZWwjX|}+d*As{3vPP>ZiT~?mUr`RCY$TQAY7VA&E5b@YGDGJxsk z=3p6>4Dj0h-;?9xp5;Vh?iM{F;+EGJ7Z=w*sd4uE53vxh4nOuOOE9ImQ}}m6pi#vg zeQ2!@5Q&QX6cFlYX{k56HR|-Ue<;tCDPwFv_ek+b?0_SaT`8S8ewCLI)7{;r@BEvqP8mr!rVwIK;}h`aCQ&q(k}h) z7pe#%7ZLDF@<*X>Yk4~bv7H~G0SF{uY)&uUwYr=cW2Y|<%hF2G#b+e;9nY&DUs!;% zB9OP|y+coXdr7-aJU*XatQy9|ekK2;I~zXa=Wu{w=JHnaseR;Fo@Cy~)70Gc z#11*XzggIn1dB7vPP|&)l$Uom%kCraCB9W?jdi0_(^b@riq1Q!VKKv^MugHXbqvTe z=|b3#cS|!rOp-rXv#xhkUI!HLT5fV?g>8AF1p3g)pH-#M*b;q@0m?O z70}k%^V0wC4n-N5CI?g;5LzyXKe62rWXioY%j@y7J9Fma>9&O zs*(H9YYf%iP*ZgAIFrj$cc3X32A>Uu58B0vF3QiUeiCW^Mk0K zdu~UT{X41)Qe{RRWs_PQ2(4d%YM-!p04pOi{WVzPh`U7r1mbPMw_54{vGo;fadpYM zXple%65I*UxH~iu+#v*ahY&ny;~Ly8xQAfDoyOhW-JQn$c4qFJ=bmrwKiJP+Rclqf zQpL_9S=WbUQ@t&gR2}>1@?eVbYW}KTlEH=K{zzem(ihx*`mT>~p^Yz<43&ZUu;2)qp=6z?AYrh+u zNiQNKmJ_369m_2<_~H<;o_L`$PfeR)!JQHXxOegBUd25dijSxcF-h}d)tFXq$kg~p zL6E(JrCDvRp#IhI@C^=?|4JX(NgEA2hxzb%G%>KMGc-{6cj0%%=Oex|vEWs2Fqn$t zcUB%_L9W{~MvxU6>b_6?96Uf{F7|~RXC&)hfCTYKCpGmt?FEl+tJaP3Fr5A8w$j5W zeYND9=MFVb{Q$=`bsU~SPc9zXTPHR{<*}qNLkZI1Ft)Fr{gs%MRDF918VO|7vW56K z!ylbct4NrGVR8C7kPqhs2IL=5gV@8n?};%SfpY+^CZlh6KgPUr(K(%MvhayK>Dsc+ zIb#-fEVdfIS}lnp@Ocs~JkD2DVCaTYf?OqjZIXk>eArF|R+umfF}kiWE)vcF9d%O3 zSv*rWEbgx#lzb@?Y$je*QuR1A8qFw`g4fQ+@a!=A-m_&M8A`S|OBNMXv~|PXD7zFL z`?x)f=+|x1AH;p@aD-=vGqgyLFuGI;vzq-jRDSmb! zLj3bEoJRp3k2N`bt9HrokEeXx6NS~O`R!3Hc=1a^u?4jF#94t7~moGZ1MUn_*2OQYAe+4acfSrfLuBACDH-ko|;HBj>inwHeuthqJ5F z*w}cMquUnM=@x;HPzq-)ep9}nBN&vHju!;s#Tf}uVXjE3>3^v2-0YMS-@sOaZ@~=y z>3wP7qW59eTgzR`U}(>6G2|FT`RJM;6uhvbv3Vc|hfaEQ`S>zY7t^(X3!#dpFvf+v zD=H1bCt}X4SY5Z{lQ#<$&oD@EML#|jsZ$D<4U2M0_HB@(0RXU+I+<`Pd~NYdGja05 zMtc4L+ru|Kk`*!-Za?O?smaIqU_pX1i+t9;KisG--cg=-EGWqOtogM)(cX`8J#gqMU%>nG<_u_uvmZMUe+0})W>bW1x136+b!e!+echHF`)mo^3 z{I5#NB4;zpCroF4tEF1eS(S)a?&=b7>_4Z7CVyAcA5PCg2Fu+G%ma-G&RCa(`7pP9 z@e%vaibio{58Jb@${HSA{a(2r&OaK&+0i^d(F8}EtdMZ_U$Q@3YHF~$ksww;LrPQl z&(5yloQ~naWWmXjc}-+@YqqdmY2)Nwj907OFNRBR~r`^ zv4jmJwA>eR24n`XvXz&YIf&;@h*Ac!NR-5M^L*or{2xvobXRxA9dYJz2Gku3PYUg{ zTyu#H!gHV4trW2|K!=ZlO+a43Xx*Y%Z>)nt#~0G?l_iv6hUBj*qXr*!*df55x7UEM z$L=NI#UBxs=bG}P@m9y(ih;F6UL;}JQiMg$)e`}k03$Qb;KceJjv>_UKNJq6j=5Vf z)7^ZVLCRdSes0QwCI)1TJ?pLLXJeD69M<%-J~l7F(yFY@h6^GJhAR=5sMc%aNKrJ->;TNNKUN#X)BRF&3!HqKpogv@J4~nce%1qJa%8gPt^R^xiP}sA3>zn>t0X?ZReUs zWoHv%WDhBz^?Tm&huroIuyIe=+^Xm0$a;4ucC>M_ueD0cJ8@Ce>}|5ZIF{bAL+G9?o4gp)9{i;>tMNYuXuza7dfA5nq*&zLc?&I7n^i zV%fSx`(CMf9xP3jy$qk9Z1!%AS*PvTS6|3uW%QQeLP z=>FP}_5`9@)0+^5t*4D{^%RMK`}T;>eu2vBY5h^?T3@QQQ$Oi#iyZh>(PhNmrME%S z{844~%xyOu-=s6TT>j>>_Y^&L zUi49<5hyDVEwtXA9*hDC6$bZ_R<_W5{i?Gp35$R^7e1g1*ksOO`Df$n@)@o{Dq51w zLx_J~OKd{~1%yC-Y+TerKB$2>sPy~Ni%)h6;QD5^j03A|g}u#!;o4eOR@R(FtIAaF z_2pSrIqp^DWr^CCVvlCv!6)Ij8i&QmFgCs2Aepo6O#x|*U-=>4zPeJ~L;l=0u{Jo=Z=fq6bUcA* z(Y`Nk2#iicarj91+)0pU{fhdon?tOfHjP_-VHN!|`UBlESFl6t_WLh&jo%%(8#H-}feId7a+ANJ}8*U(im zg=zIFrZs{5rB<3nz*=-}i(>cwALZH2yqdM>N#^qH8U3m+IZ(BRImr_3(tv_gvCoH| zsdwTbFVkZS{w$kbzRl0Jze0H$s`uS^j-%o{ux%2uJx@+t2z!fKggH(otXLXQix}s~ zf4*WXKEb^0xhNJ+)Ez1*}RJ0J@>xd0669sUM@aApN!zzAlq z=ArPuY}?4LOA;(!LY+jKA+cw{O)rG3nrP;e^gs6S1@=b5C(O%~dN%L<*~!p~GE z=#ADo%tyD(Q=VICc~oW`kz-|7F<03$=~GD3nPyQQn4$Zmf{!&Sk|RitDEW3AT#Oq; z(I^$=e>BT5lfDt&q_DT(#7pUC4x%G!mwIvbNf(Q zRB>DA<+D=}t;?|;n;ocX%FxwR)2D!4uj2dmLWFtVwfL8U;0G)1e<*kY2sKTMBWC9^^kQobGMvpPXF68xfhExuoq){sG&&nmfih8gE8(WyZYs>1vOC zb!}@t!Lp~BS=T3=)7UdE0|kpIZEbU=aI7VMh4zN}$0pB30`#-n7r+oHMv*o*`pN&_ ztv~Fa`7!n)t=iU5s_2$LX`JH}VyPv$?g|=o8N<-VtDIRa-JJ(9wR(+IDtW(6&ES3K zb;ooQQU3((U$K~Cy##nvw3gksJ}6H8SF!yaWxdT4m3e6_k4QXWzmUOZBo4Et!o=h2 z1A=*6^hY&PA8S^ZmcGTSJ-Dtjl7jjQEmuW&`mKMiPp2g84FbvgR$5Cr{}LOOfApD#j|lcUq)Mm@POY_7pWz~9 ze67!5b$7>%U6#?`FQm-yq&BVFqZ6MZYj@<$KR`0X5#*p>mOt5Ad<72u^4tBNz?kI= zLN~zoljG}Xc?#ES<~MI91rq_|L+D(+BPtXiwUVu^eigw2)HPf$ty`Ha?IOnFC+#Ixk^JXga8mk%MLE_-Es9wxvAh9wpy4 zFZ_V%d}YyJCpYDOcXGD+eCcJ#A=sA{=xncH*s(yBJP`?KclzG@i^0dw#k>FfaoP9S zB5Y}a#y5Boa3@67TnOrqa1yUD-{aPD;)kQuc&rpDM}{(;J|vlC^nFHR!x7i7F`~Cg z*(W6*368-e4AQt-?)?@&`+>~Q{~9rx2)Ok$37MSD5O7^3G&oI)|2dBezSL^VT*#<; zjkPSn;zCWR_B7-bP8h=~)4cpASU%o@@<;8SOeMEMa$?kaI4S#lFYnwUH=fvE5n@%^ zlq%|lYv<3w>#7RC|9NzIPfDp2tqkB~7T|ew=fOBo-=vO_S**5{!?il?kyh>;KFS$x z@m@-uRE@sn_*^{*ZHzhxY>RU{v5ZY-{E&DoLb2Z$hj z+d*XkN^7EAH)MWuM;dv{C!mIU7UOQvd z?a<)pA^jfDxB2k_ySp{1gEe#|->vHE>a}z>lVG3i^VlWEuAib!Q`96J6-YGqajV<& zvtfokqWEu;xYd^qbugYU-iA5ShuK6wB+X1;n&AHwC5yEEMV?%~2iu#yI#N7Fl$(Xc zj%tXBru|_S_HT#F6Zl>`_@9|R5)C7}eM(7~S#p zK&y-MJG^H%7@LtYCBDp~9hpV@C``_G{l^LSX5Ul&KKPARmRAS=0!byuLKz5S)Z?I{ z_9v1Rm@@+99fCDIuu9e*_e#x=4(;T!H=&W6S}P+ z1bOY+5pcrLrC0|A0kk4ylVhUpFSGR3G!LIWg&kfb7wt=UNNfaR>smjh`VkMTP% zX2Mhq>1xOm z*|k0r&hKfa&}`Jis!L^}iVxKcbqJXz_vzVx(i2_wQg8J;6v)3(_{nR9T|MEN?WSl| zdeftd@g`~|_7w-Ry)iSc;m-nD&?rM2(&YEqc+v~TAk)WGx}UJZW7bV!w_k5(KXc$q zicfSBVk2S}mGKF;Hq!Mv{AI2GaBg#WB))d6HYd3HeUodFzHG*yN^B zt#pRYd58Ddo0rCV7NOH5cA1*XTTCXP18i>8z`;+=X08J-jTAu>RsVJ80ui8lPNgnR zqc&TmOk_wj$r`XEPHhhvXd#}DKPktmx7`s@pB+sFc(v?^XFO1cBGZxl*0Ny^L zjZaSB`E|D*)xUfxwfa4AvhfNZc5KUrqvhc9nnG|k7W2w*Q-SeuQrH+jmDQ*dkc1Rb zkSW&v*3VHL7x%+yTVC=PL*fVIRQZS7aq-1B%~Jh74rngnR(n3II9|aMmfXECp>#&n zpQUo$3DZEIBw_gtiDu(qVYK5c#kjKmEA!G|s%x?Cg%f@mt0&LOv9?#5^abno48OCr z{8^t{*or;%mR#8$Z*Nqx(mJ{dY}(O@2yZeHlZWFi)1;q}DArWOikhy9=MH5>ioe0S za#c@1ONdHdw54SS`CRUzm!hLx-g{xl65@ zVX%FFs+3D+W`G(n!0h1g*sl>%TF*E<&r0b+hf>O87&SXo5Mm`hcj^LaExl$JreAWP zuhJ%+_a3IgNKvgVRxy?TLm8Aw-LqAPu@7fmIhV0)KjPlcI-(QnS#RQ_uo8x1?&B`_ z$KBRb!%**>NR@`hvpaDZL>9?wO@4YA8laMU$9-|nz+noMf-NXSDJ*Sj%TXO8|_=DIJq4`-iTz1BFfW%uXpK141ebsS4V*b7b zm#_$JXm5I81o@oW({%_n+2H>7ldcvR#O=c0HUA0Dfg;pw^gU_Ef3yGuaVDJ@u#9r0 zUt({ZV#r))9;C^Ac`HNTmI<9XuIkucw;@B}Krb1-36>$iw&l`K<_7VokkXjajzi+S z2hBNog*lblt>t{wyA3lMN>wKJS;w}G`cAe;o2$3(r8A8Wf~Dv1EfN2z!pI~varjOsE8J>&nWKMs8klN%-UHh}FeW?ZAvNnBG` zqha&uQ=8XFqU!M1y;*8q8y`*COU?P=zN~GpUwgZ6rwX zH&X@p@Um;eDp{&~fAGs_Q*& z6zoEE%abpH7>>HAeNu`%g)6%%kQ4hbC52)lo+Hl zr5-$fshscAUb2Cg5PZ*|UV8WEZ_lft;>JXkRX3cMNjC7vG1hKZ#c$@dV-*khhM{^R z{+MEh(_i-k5{ojWx@-e;Ik$ag{*k~Sp1ErXp0Do0m0*eDMJ=jAr{0!TAN7?YqoE>P zKao)Y>AdZH!wLffa|gf8;__Dm$-?cq-HlyPAMxZBl^2xQ!NJ4ZvoJN?HcYsa7!+^Q z;PZjwxFwl~!40wL_S|V4HveU+oCRsRHC3iGS7Utj&mtR}1Y7KCTVKMOkbg9Oqs{2XE`+-LG(l z5+EWQc3?>AD(f;t=|tTMJ!wt9oDbpjEIc2(CzJUCRyUmLBw$FE22^+Sf`83KFIm~V zO*g9D)q67#TSb}0hpT35w!|=$nCqFKBCmaq8D7QW97eC-YLjT@v2<7%@9Eev7}S4l zS-%1reO%#Y?tX|5597!sRwFR){LL<12%dGq9(H(Br#8e+^=wIo;R-wG zYu#^;R2p2HdAab^_{`j@BVkJmJ;Jn6Z`TM~otT2!sp!O=K#X~K(;|`y8waF`&KiYU z4<=P_-#UNs7y9d_()7CU-1KeY@M*1}q9Jm|X#1G98Z$8$jfrylEDJ+}f^U76+cg@d z3dz*>~e$!odb+SdhdK$rxwKdW4L zf_|5yHHWdnKT`tbge4QgEQ8e^=BEnjZJay$n^~5bt>7^tnOd5yo5W}P&k~&y!7IOm zInJILAq!4xD6er{t!+If(&1iUhr{pQ%^PwIPgQG1?>Vw)z1RkpJ4ECcT6WYPkJ(_< ztpZeq*N4*m0(3ErQgyi%SMhI`zn=WC)kp+onDul0{4Bwp+^8B-FZ{KkPotvx@cGNb zmd4=;pvrI=DsEe8!JOq1Br{&Uq;d@LQDNw5hTjO`kH2lOw>mGZ zl_Y2^6iTnD9aIwzW>1d+UJb{ptF(nwyznjwLdn=RUqxw51Zw^?KbTJO-L|$?rH6iZ!ep_)tjy?QmTE-*W z%!v|Fn3-{?e{+tYOiV|tr*MeHcrl=hMK%cFkHoeCadDS$CyR*exT?9bZUC}uB|H+B zP~x#y_%#g&l1W(iPJiS)XfwZZF*ctYRs%%NshrsmKc<4GiXU|jg;KemStz%xPe+je zAUl;^m4sJj(f6<73ljK6NV3E5Q5Z&O4sS%4)|3=wGv%K3`UQ5NXwGV9ZR%{fLbGeZ zNcx(de^av@^__Rj+8#LN>ZUIA24k*@v~X0|&CC^@GXG4Ktim>;3gm?GsM||8eJQLN zEgJi5r;y%V;#)@&?qDe_6R>V6Kp(GXUS|u|6B(n-Hfb_lEQht1k51 zGzTSj%FiKYjM<|U7mju@WJE!3NWan53X|gTVX@}`24}0SUIzyUG!sl-j80XLv|L;> zcD9@&o!g&IKP;c73pdgYS?mctiP}z68&L(e$a)nRem}-E@BTq4CeJoKZ}sPRa9s+AiOno9IwaABkL=!-fqsKv)Lu)GP%2i|b;lW} z`3IvSpNp2-b~dBbJsoAGn^}W%Fwy`if!RK}m5|LZPDZU>!bz9v4_Uua{Yn5|=uuSm z8rkgfm{Z-OrqPvjM(G_nuAC0be<}(Z$b(#3*jqV7q7_-p22+N2EmB2ob=iFg=#(BN zt?EYx6^>-Ks*+FqZZ57=%mf$`;WaY*op*HY3jQeG_UqVWGtSit%x_c+v3{!S>0goq zUgFux9(P!|>F%ZHm3s~z?!QYPz$379M>=psmxACI;!A_v+Cq>T6jxR~sGNhmf|FFD z0l!?d@ik`E_>^(3n?D1)bj5ptw)bo}zWcB()78u6MV|}py_N{Nootx~%yj7Lnf%$b zVXLEM(zZp1vWDgQi03to3>Gl%KaM2`Vx9&6UR6yTOcAQ8McpT3BkWGf`wc61>Re7M zUC{YnQC0OtAz^KlW88I#Ska&uEpRDPH2U^WvZPsBXI58ftLL|XTAe7T(IHMq>ZAYi z4;!(Z`iTD9U)JHUJ_WQ=X04Q|^%+sDm{bP&K&bf5W!&QWY)D_Y8Z$DjfX#gq za+Y=~=WW#>j&S0#G=@|^Jh&HI_I~2_gCJk)P7v7#wMc=u^7I!>ZU`fUQ0e#TBb(ro zm%ck0UVw=yoVaO0I_fEA`R6Tk(%n@K3C@dMz}DE!H>XU88>zFbXSA!-4bF{6x4S%R zP0lW7snd(m>KPg8^iBvwe!G_%3_llN4oTHqz`a+q+bR*Pr*st0#5-jpsKpO{lI*nV z9AjvQS-)EeC=lYA1Q&52Ak*XN2 z;Nrt%#t(nNL9(j~Wa=P~i8**9X69$dwO0n&O(Z}bEZcnccqHWUnQocvalM24$C?~j z>hOYk+X?->UctwLr*E%qj9XWcX*_MrvYwB1C)B(f&{4bT2=h8MmMUNSZb;tlcz3w{ z!3ewJuivObGlmYE3sLRGTBIr8#rr(lT=1a)j}0E2&P^uk#lf2uFzlsrhzCN$td4Q# zb;q4N9kT2qdSWV4bkK-yQEnjH3lq#**l#^-e(PHXLj(-%XPI~ocoMQoAgmAb``E`4{;^I$i+e>Le0@q>Dg_f=K|#)&naqCxJooPD>wp|tsY zeWJ|~X{)C{q$2mJS=xu`py#c~q+Q{#MbA0;+Rj5eK4&z$qmd7;WE$RfLk)aaB%@O- zK8}}BE9GntKop@dICF1#2cQ15fQc9eIN-4VjXPwpi|lr+x&s}BWlvqN>lmm6hcI-oWlPCckf1!v*o>lAe;z0 z<;fbAk}~hksK?$?ADQ5E8bxiovWBhE=7V9(#xwm2A}mzuM(q>Jeg;x!G<4%hG0d-C z4Z92tUk5#fZfFVmwX!UP*$Jo0NaY+^oS7SHl6_t^syt-WR2xrhfRQUueCf7SRimwr zAQ&cGvfZhfhjOPYjYp*!_p95hr}?W30MZS2FWkr)e{nvNy3)Ei~{d@UeKaO%}G89pnV*7-m;G7eHaTWWI#o)RJ+H!*IRO}@i4@%400v~2*3G%Mv`OvPFgRaN91D-Q48 zUXAWLJ-I{~SnqLtdS1Ch(WUxu?$NOV7yI3qu|MxcI-Tvo1X+?W^esiE;-&+RDPF5+ zrOSkg(CcgHWRz#UF;2sTQ8H5V*}6L+DWE#Hg5%IL)ln&KheQ`XOR74k>$2vN^WoI= zK`TjQ36?JQk$F1_AN7qWUC3jcCkG#IlJ)M+FZQ}2p^moFB!x&gbcxSH|HTi8B4@J> z%JU!P`->?Dh7%WDQaCiyguRkB++&D~dUa)dND|uP&^G&)u=6I<`9vf8*D4h%f!Xjc z8CINT9_8bxUbmR=3lYi*4fjf~4UwdGp3$8|tzv$y;&W;EJrGu$p;z)gq<#mtQhq%N zteyH0srxeZr0wft=5q`?R;fe2Oplk)I8RPlh>opLd0Hz`!zitspL@{_DY+cY zRTvacZzK)$fzFK^=t)nVPlgsJi&e6@KmE7nRg&7*{|*avO*3KmlK@b{ZK>VZ{9ANV z3T%`kJ@bwPK(|={HN9KuVbFQWbuKRcj2nkrrQf(s`S_UWoeD8VGCur7D4>XCu(JC` zi_2+tI1{V5t*}ZOgk!aqJNl|(0oFXw4N4_A2w%=X{z^ZFqV0xH3j2J4thrmL0~K{f zPj7!=OJ8OP%Lk>`&C4=YwTUt&({)qxC7jjs4c_g$@lRwt)1KYpTa+8QrYy)MF)mDk zeO_@QKKi^5TD|@e1LF=@ce1?Avbr@O7VFmX1b@kW5f~zI=`%6J&>%?G@@%2sZ44%9 z+pB7OF`3J2r#kv{*r>I9?(Q?R;{Trd5wy5qBR7$x%ck8fTc_m7{yTCf!ROuc196|( zEpjM_1KbWHMOz0!c}U21$K6!C3)6>!45zJ>g)<5Fs*fE=J{S5i^VG(sp}H0|0?{tv zc(PKU;y^QRC8BCN6X7L}4t5|5JsrPfon3_49|toDmr$tWPS9j?gH*}KmZgjkkuWSj zDes@MgMjz%&ED>u6TH03X~(&MX;*ml4DCNtCx=e(?7b(K-6V~wazP5yM3IGzKvvj@ zJ^M<}zwnHTFm3=W@D5XD>^n@pB9GF-ZsE$Z^5Wb-s%%qB8`jSKm9f7$;omoOK*WQ8 zGiX0tHnL*&9?Pvl@Jk!UDoXCM256wk(R_$QIXyaC5ye+yhuY!YFWNQhbHhh4@gz%# z*vDCzRl?)%wN;{>M@6 z^Jo8yt`Lk0%@#L@W+*mSBndL^XGi88HWGRv`V8!iV#IOM8uP*NDY04;K3{he$8k)! z5ZLy}2K!jt-ab4z48I7=KLvJW+@a)Nt$kWzp)iQU|Djprli{i(VQD#6g}ofOy=z$F2vf-(bPi@SaYYm5iB*CVtxGQW(Bd=r$T3BlapRAm z|GlCQvrAH!^E$RTx~Xs3rNq!o)IL+1C5{G5hAa^yXgPtL!rWV&wn;R~E|-H^zKjM+*9xq}O(Bzh{G3`YMd zJfRTdR!R>rvFhdq&?1kS5%Ja4jiE(cN9-H~`x5Og z#7QW3)w^3R>DPOxRra3;RD=rqPrZe#f^e|k!BnJft$NYl__K6CNO=avp1hb^1iVw+ zG9?f-ZB|R@H&8xjiSzwl%eAWSlsU0$WzoB+KuV`1h|YV5DvHEnAMkEgy$~wd4*hFM z$=&As4~^kRqu3sqFF#%&WWSd_*WIIb@h_@IA=B67TL#pi-2wSH_)I7WziJ|R-}o~L z_FIL@rn%CKQ%dMs{CBLHa{=8|3r3yV=a(csXa;WtRcOr5T`9J3|gR*|= zL3~>NN~wLxIveL*8u9~oH(>Wt%VPwH`UJy^vfMV{1dSlj`b#s9h;Wd z0x2+$q*)`{GY2_gwD9L`Gwft(fr}kgnbj1e5jMO`)?7w z-*1GEZbnd-6PSIqF{12*^b1fnyBzBFQr7tVQxOH=XD;K*@Hk!{_V9o=&Yie z?7|5^Th$taaASqZvfM*P%MQ6m5IoF~ZqLJo6(z!?AeZF@@hX{M?0IDfrEld1s2IUY z28k{$B@1N2v9Uk-$1;C_7mId-{716$E2Dk0Cw!^aZpj;)j`nC<H(E+ZQVNAzP&CxXZASQq4cCo#Q94U`gfs7#h4aD5E!Wctt(*_%77BG z*Y~AB*vmsru<4~axCs5)AKIZSc+YI}ruUN;xST%7-Z$%Bg7-Y`)^?fFLT(PGESwZN zaZ2g;zvdG%>xIDD_0%@g;WDP%e;9UvRB3x3R+28(4lvMu zTGao0Gl+;`uD7j(Ki*)`@Y|Z_nmCFjmh3={ico*#y;mvI7dQbXSo4tz3tR{bJ|Zd9 z@8+ODZeQ6J;-nFCsx_IhknU@A=Z0WbqP@fl$0!N=h%vZq;U+sQ>25&Zr04WiM{F?6 zagk`}%4yK^S0Ug5Fl_Q13?8|`*$GYvJvy~5Z=4FN$HfS%#SudT5|pu*TO_^0rtT=^ z+X^Dmn6NfoK-nBxg-k&{93_G}Sir(s&*lJ&RU^=6{b8AjpKPv((dHgs z$#0CFp1y5xXy|RXPF>;uB=uj~gf%WA2p_S$7hvzo2*eUe+Irp6aw~(V!ZH6%t=fO5 zR(rsi5H%%J#37V+By~6#c!bzF3oLqI zT$=&dJ@d6;QSaI&Q9g~Ny$PyTic7tEZx!t1Noqw(ITG$!UKq%t+rV0&s#s*r=fr*B zq@1#g7`Z-!Ao#=>8zoZt#Bpz%qetZClg52&j--x8K%3Lu`cpbJGBM;OHL%5porwbx zmt&ay^2Tz@_^s_}mHLb2i}u6| zbv~#zzsB?{bm}s7RN#i>M#v*v!VATO4Gv<9vxl`q;##K&9kHE%vQV|{ohd`xgf7Q` z{mY-4maAyJrtg(2hewyWXG!s3ffK&iqtmPjv&JP@#|-`M_0x*bX^Hg#P$MZzz5;>s z0E+|f@`A^r_xs=krGa{@m0;&ac%*lXC2|C-ocM^qd|}CPSK;;-s!fYD5tObWfJ|N{1AQ@*AvPS{a7v%7y_SK1OC!>J>=P5* z=9fV%c>RWrtWDcu^NMCgwp~Z&Asue#7bmC;fEKipbMmX*W)ZyApq!isNX%xfb=G}! zwcz#%)d|MOaIA7HH%W38?BkC&&l`T)8ekpO!Kenep-d$=Zh7tOCnPcxY+iP5BF+LE@KW9kE2gcA{mqDrg^^<47W0rreGhcy}2 zqUF~mjkp#5W>SMMb)_xG`8Wo$22*z4?-{%UO&A;F*`;K@!E_+zfr|Gi?1ZX>)FmZz zN{u&RUmF`wZ}9u@ z*ZEEx=N!jAbh!|iBtH{05BEsFVBOwt6$067)x5Gy6jFl*amk>m+TACo3RQBBM<6$Z z(GCvc;N%slc$iS4wJ@m8PzO_`G7V&0i4V*n;NPO1)W2Wf$Q(!gEKrZXq8d(KJ zy{`4mFK_V9vU&GD-p99950=J?`q+QSn){IhPc>v!vo*7vzC3mh{8Hyvimbj}sbI_& zW<$z>$6%=ww}KbU75}O}*;akmgz0*}(qlsY*Ro+AchA*F|EXhKD{1T@_@*fDmz?L1 zq5k^JDl;AwcSO3aPY%ygg|lwHy3!;(ajVgcNK{8YskOL;uX}G+oE~-H0EI;bER;S- zD4tRV6+4L;=?Q|#S9;qI_s*9U^@g0%)^mj`&HatS7dYKNOe*S?uBeYrtcH9R2rmbY z(~mE6%Y~O3wpLKbO{5nhN;kb<86fXOCBwNR!)m*ItxpjrPu?a&k$(FaGnlo;Ihr@I zkCsbhe7L#GX1aNL_g9>r!aLd?!CO8(F^;im!hijm$(!+If}j|0(t{*&F}iz2V{#86 z_=)DP#-E4^r^>50=K8D=!W9kX)(mow|0Vemz=LJ0q1`;0UItt&FDLKqY6x;f51l4F zH*s{>3*FwyHE4jTvERz42ue0HZv&S@AI~3lXC)JF>nWh+@LF(5(r@UKhfVHld;x>n zUjT4+9bDwYStKo%DYhGIJ0jKzuW|znZsuC5Q0vKl9vs`g&bdl&bGYoClb|p?Gf;71 zUhjBF7cfyG374LmW9~xvvXAhP+7){v`28^y5>J)0xk+!P2EydM;LKX1<$xsT z^{=druPFcdmCXdg_~sITpL2KHqg;iYDvoj{<)yI*U_8QFb%}J-K1amOGrS;`-9I?@ z9F?g@4g%T#6{YL#d}%@5ueccXxJzpZt6U;IpfZ2yn~%MA?=g-8Gy4deHwhPjfjQuJ zc@?9dGQmL>h5!|P4DeUh z(qDP@9_?*oKv7j~TTT=aArpnI2laN}lu}|GBEG2tB(Wms%T(i3SE{m4A!(Wp#>XL zfbW(BPuSy<=BY+Ve>tt=+b%h)+lS-Msp$iR**C$MXm09I{@_!~w()8RNuIBY5!&$Z z&{Ixvz08g^@!!IScvSnZSzW-_w`4xlF%s_MV=WQ;RAkj9Z$RJ_iNyZ?{_`RgDus3N z0A=~aYI4K+2`$H1gJe zxYA%A&MX?9T4&;To-t`>LgR+iZ{%&vaq&@m( zAa5_e%xgC}zejZog%XZ{qse-k0wI-WE_mwuZ4bwqY5|VDt<;0F)6uJDQgmZWzqzft zIe%fTgyWf6N$as=z3O^t{e@_LCTg2R{IEOiVD?oOZGxhwTi&&TFcn|tm;ANFm!nU5 zuAO^_mSQNRv|Ge1ux#hwsNRT3r9~1YaD3%~iwf^JrVo+%Fb2m$yX{WsK5ClU-v(9O zZjcA7R5ZQ35c-3Ya{hKgROE8e<$G-|?_5vyS7$?c3>;(}>NWlJtn=DiA#xF&#Tden z^VL-gma%prcXP0W9z#RX=~=|v@{LsX%sm6zZOw40IgokKy?qTFb8vXD%UZqb7s#VN zMqVTYe^x^koNj1Y&r=5oD7Wa(Sqp268aRhevqY?X|DX99Q z2d#)Zr$VH4Swqaol8qPd6)$}#2F~bQiJZY?kcB~rcC&n6;?lppde`y9@tO!Hi*=9w zSMd3y+oQj%++hZnUvq|AC0pxrzsboX#&Se=47-+A2$vP62DqKGuWN^(Eh%$?nj~Rq zeGnllU3@(1?T$Dze=UqOr@O+9q(p!2k-jN9H>~)6@=4PXmW)K)9O(Gz^_q_oznW7@ zrHOAZQnMjBna7CHowo&Q@NPFeKHulwhT0ZqYSgR5_sYV+r^(1|3VETTG$_-G7C&HUR&;6b3trIagpGHsWP!NE&~_pJg<~ z#efMHU9CieyeMSp%V&ix6}8B}DIT*|NT-nFaI@&;Ek~zqE}~FQ!U+ z0Q8HI6VNPI_q=r8M!6~=YHg}sRGR7-b>zf3w}%ZiccaY@mXw3R`&HM?fA61o5j~UR z`P+)?d)jlf?*YdzgHC&rr_L27tcmM?P)^#ZNI&D3zHR7x*%p+e+-Z=s9W68VB$q?W z+5|R)_irwznWd?Pno#*^S2zSbBYLCOunGLEl2i6&N0PivM?l-w%w(JjFVfJn6FtMH zL3+w;m&77273h=$6}FXKMHp-79htRIeB7e3!XkKS<2N zalJ}{q8yb)zIGAR6Qs9Qdlm0WI*HLy+p6~U>sLH2AUXT^i-2;&9^cT%Pk@;!!L4cn z4)Z%HG@{DXkJW}A5v5kHo7D3GG>g;+yQrXqX}j23aevs)V;0j+HP}lw3DlPKa__&wgb??GP~H@G*sh?xlj^u5(Hd0# ztnMfYwJ5q8D=y0~n#4TI-KEn=(hlx_9O5<<9QgpVuqsi9NjCbxDpaM@75s!G^N6%9 zH0V;sHFAOW6G=uF{g6MU${_!Ew2Gm#4q`)AR8&}zbLw+RL})#hM6la7?QY77|HRG5 zckebB;~Q`yEgal&X9!eE(u7Cw7o6mBX@nSFHH8%rx>l}Uf1hoB>DqX9Ws`3g2)Wf= z8dnWjGsvK@{`424Ve)e`Iqr`GL_|0W%kKao!e~EDx~nUIFzIIMP9NLQZs(3#%^aei z(?O*XEX;c?2;+%{HSF4VOHfpSg{FdQa~!iTZdY;iS}gO@42f!w;F`jHwht9SuF(#{ zh~I(LS-0xjQ(GGVIu2SkAzM3AC{ae55-nN~ zGHP_@9{1kwv!3VPzu-APpS{-k>~+@O=j`|1uRWgJvr{P9v=v6Vq#mk?TVxHLZQ22K zA8g>$I;sSEsv2B8<(Bt1>%h~q3Y?>7x^Lx+hLYLd(p@+Nqkr@^5C!C0 zdC@=oIANB!uJkImoyY7YR)N+;C46;|-1xpSi~raI$;{wB7D>1rdG?(QB9m*WWXXw zn)ADCgxrZRAAez%vC3?T>~j}_g|51+)Hc+)JzGGfo^W}}{+9rpB`xnHYeYt;i4+}R zWLFC+)R7 z_(h@dRs=La9{jkf|EQyz`FS*JXf8_2C*U3y!L>Ri1Jyq{zu6-(ta{P_=bc&*iSMJ7 z;6BAcp#_P$v~g3GDzq41;m?YY4}QDsztqp{!0Tv94>eHumDZ~_KAC%`Y5Ov?39&33 zdKQKxOn2QU`QYw_hHm%_pVosFu7RREM-!nU>b{6B``P23;c9ar91UBwS*_@F{#lyU zR7yO=Pe}i^bkxtSlAf$hS~O}#+gB<)k|Z%(``q=UPnOudZf;D8JVY9jNp|SF*^#kw z{%M0-?>;iC?P#3T@q!{$#wi|5 z;ZXlIz!u9rL-)c)p5d2mx96mN2j5DBjvo)%H$h_WsW!`n`P?ezkXoxV?j&ex{_tL zrXktJMv=ZVFBaBAMM;D>r+IdIhF%GVMPPMLCui|a5|nO7H7J(nYXDt%J3ga^wlrBx zTh`cD>UUlLS>@#c7w?26^Mg!V2ObBSS1sP+6AB;3*JdM00$bJxM0^c@qZ~-0Uj$n?;w^4ps{^G_8gB^2Lu zqIe!Q{gyehZwaH-CeU0}Y~QIGEaqMh_9Bc=;J0-LAFz#TbZla;k`y zPwC!u+PQT4SR`Lr)x(SmV>Y1v{))`UeyUs?uwwu0g&b^)72;LPVVy=YtRuc-KBjJE zIcAXjmW*aX_@&zv;cH!ZtcI^~ z#p10}8@T1pfZ6SB**IhM4c3#7Uw0L^ax3D$>TztUjk*yr+bzX-)!@ zhAu3R&!FKFZ9^ zs^&V4hZ1MH?QXbH3u|E;_1ymutJiNFMMM=)hY(42LRK-vtOPD#X@udAYlm;=;w-|4~8)_J> zsV@E$3q5z>Sj=f&?nM5qid@d>oZC3>g5ZId*zZOJ6PQf=R}!@%F1a4RD|(%v*c-<* zl0@+rDI$p^4epS)(kX?F#9?nM3NmFV#Le7;x~wCO>O2bp!`e-k(3#n|uvyBy9>Pev zy7sx6dv4`x#OosWhSRA0_|O1$8&Gs0Y!$n%=B7EV9a~0vy>s4YhYxqt>Ytjqy_?K^ z>ZiakT6TWK&jiFKw&ln-#MMX%v)O5R`SPWk!thjY;#ey0{DBB+J-uYCN$euc1e|4I z`{BV6j~cBGdgoZJUspb*?A}fd`njGPR-&M-Mr@)jHRM%EbIr8FtMe8#K)cTmrAyfR zvAh9pwkack4xk8w!KzXvtO>6}DJNq6Xt+uCc$V_zf?wiwL|)Y6C#UdoN=rARbfe8P zL=Qo7EWSdC6lguTxYb3QB#aZYflc$@aeJ|5DWj>J5iC?&TkR+@mbDNi9h3?~gJ37= ziz7j3Vu7G5p#8VlJVs*gDmMz4+9rH?JP>{g zWHh{1f;)Znv_Wqz%gJ4u8&}XTPNJihcuj9~rU}+#GKGimtIR{AKJu?FVSbrKSfhfL zzQ#KAx7rRc^=H|FLyI&B-wK=mr84JY=++y#*}P-3c7Bfs2*3EHHV>d5WM?PMNYM_y zj0iJ9g9Hzo3H@vbbwl~Uc#ir%qc(yWMXRdsrPoT-XBcFd8pDxObCv#YD#ww~kyp)Z z3xl0K>soj1hev2ojI>t9!*4AfR$oNEkurj%dA(URbGSLh8W5P<1Rh#HzgC5qwUZD^ zBM~C*;8Q&z2qGdpx3_~Xte2 zGNb6x=^xXhK$Iuoj`so}!qXrCT{CNN!pt(wmI41#and3+#e!CUAFx~GZ88R{%hkgp z2j{znLfZT|u8@P4IR$U3u7?k6T{eHZ!nns#39?lsQ$Hn@LLprLLP$ttSPG(CqPL1Kj zbZTQKan17+)t$(+$-nMgaWF9Ga(Yh*J~41I+H(-pj>&|kWZCm5GOTW=J_7-&X09f+ z>$JZch&C0Mat>KM-gSWcW)%p_mzQUSIQQ(`cKNnk7Nz|`l$Lu^tctJ` zMVYQ4)cS5in0Z9U50>Ho>N311b0*sfvc+`x97$1;)EMRK3e#Q<7Q)0plm}{vJW{()FFMywW$nq(0L&K+$rcWKD3g zxgQ@Ku)ci`IQ^e}3GLLtoW1l^gD1+%H=U{2d^(!53yaYmEMyw_xi6qEPI#~IC?;(4saYJeW{H7mKu;y=+0BEqfj zz=njC)^WXw(1_M{7k?e<@ADicrwOIb_kVH2|IKRsnxo}@KQ*!U!yU^%+VXXI6 z{~0e2bYTD0o=DG%&4L&(^Y2Fi+<{Pk@>wI3P^mm-!7| zF!1rjOHV}sr5ZuKgMvbjqNXIT?{Bf!iIqb=kSk;Hdg*yX`vSj{AqDmm)F%mCE)$$Y zTKq$EGLgNQd$;!?h_xUGs-obg!@b*$y@v65E2>*DD*nm1s+N}~EK#b&#KkR=(hc(Y zZ`yWmW!+wNx<2LF=YH?YtbZ?cI;yFoV|Z@5gL`;M>TojwazqzGrF@bUrYy%)O!OaL z;lh~zs`duU=f?EvlHU2jzj{TovC68&H9{=dIw zGA&{Kn@39uyP)2Y`M;0)U(UrOn)oKMMDcG=Dxdj(oV2VY7ntm=^B-^ipO=H7fV{oE zmEJ8DswnYnZf-8I$z^J{ayo8qXE=M__x#K2urZ>CdmQ#E{;e(Hy)9G>nL8QOR9#)&;<9+iQX=4HD6Y<$ZlAmXBT5-8 zn#G*$ZeFf4NY;*N4G_9@<+XR(WGBzi4s(wCp~;#~E(j+Jm|24zj@t+~A|$pDMufI-iu;sC#%+`%GPsVB*f1iKD^6AcPr3s3Vd5ss|iN9kPbpY&Sw(cM+~7^IKzM(sL~@3ZhQds5!PW z@3>DnULm|hT7wFs;9Ww6DxBE3)V78fh>%8fb7q-eYtkas9VE)LLe>q&R1&9J?^>tAnv z(7SPYgdNhd*}Z%Ehj-9p`Du-To7-V&I-AY`Rg%oY@^VNM;d)GS;x3`fCab>{w4m1O z+;LUny`b`I@wd*-l2iOpNbLiy7H0CRm$(;ZbIBVW;FQ5xIYK8lw<7wemWVi;;^!@0rYE{}d2#Wo6nt)Z zjZDEvnmGRZra~M9S{E=ggiob7vAis^%nx;rcU19>m7?IzVseRFtCpq4B8?O+(6;Os z7Y!%1#Y-O(Xb58^j`xZpG*sg-1QzhTRINb1NUcookg??2M4YlZ7IxPiDUqjM#>-Ih zm&tyoj=M6$>%p~5$w>mvE-Vctb#ZYaRfvm+o$}l62_deh_txXtt-p-QV#?Ljey@ihRbVcebUcmU#-J*D^J@Sm z2fA7hm`J((n6cZt8aH5btL()?i$km<&RF8R*mOuE>T0&=KJob|%tI-vWv7-hf1}}X zP<#a`hG_Gb!uOT4*nnn+Zw8I}^jf*UP*YR8bsvX(>*m_rCLZ*l{qpHkn1j30;E-AE-WbTnK_RvniX}LFtM1SB?4??_KFb}u4#mv>OLmEFxSCeszdd&=3)k*!@ z_y33@ZM7+eUq#gkJ58{)fAZok)+sMe_6o(c>xvX&uQ$BGdq%d^hoU#2E3)5% zagL(Mpn8`@)BAXpyI~?CX|j|-Q|0dRP(C8u5XQ6|Td*<Rt*%*8ro z@Me%#GBq`AwFbwL=az8)T(qg1+qgbK`Qx>>U7rH&dAPsj(wqvSLv~P~0wEY8M$Td< zH%9J2I4M4yYO}>yMC%qL zy}7*~@P~UufqEeh`8Q2!_Bd}=MK5*(vj37prK{INX%mDS3@io~0Xj0soSFDZr?n9$ zo?xy!!a*|mnXuMrt0rsYAzRhJiNDBnS_V_ucQZ6mNuqE{&uKExt0cxRWJ%!J+N%R*y*v}@F7n_RU zB~Z;|z2Wz&%=M3|Ubr{s;b>UHxVX6cKY!}!ilC}`D=2wU*v3_uiW0M+_qlRreqkxm zh%q{PrZ>zsJTj6d7crfa_Z?ixz{q~L1Ur2?=}1C5-y8CE9oIwFe{%_KJda0?N#nI( zE-Y4@Se-&jL?Mo*$;FMEk1w`nfEU@J~+%^pv1aPWxYhg86gGVjJV zFn*hlf$Pv{no0+~vElVO*>#5~6O9T4UeRA4a3KwrPd6ER8mF+&4v zy9?~SI-)hHNu8M(iOcY&)Y4%sF;GU#ghEaSHd*Z~NR0~a-rwJM05R~QWrEdZq*MSG z8*|5eW}h1Kgz7l&YNbh&_0=JVK|Ag5KtxgcfRE6()ijX_U4xOdWv1+1 z=`~hD5Ir1KjYyfree(27jpOpE{fttl-e;0+tu#&6DN75BW#1~Ex{%E{uLpg=Shd({ zcrVNrG%Zgrh>jr158P34_+{Sw@C)|02P1@1eh0sebxllg2#~Fc1Dp&ZXI)+j_n^mv;QPIlkQ6c7z0Zz9ZBH+O?bwJWOic4#@qj%J zTpeML#ZfpSVT03sQmW4n{{BrUo7&+LLpt=_qB{$aaj-`fX5-n`G&Fd9*%13A+94&@ zVI;?HDfZi+8?@Um?e^lu3&vc{bqm6ey3Gdgxh+*@)V~PpDKy)|=O0g^Z9K(*Vk*dr z|JD8-8B;!=2HR&O1GBCb)SNl0$LvUI%O$?68TgI+Fr;iBH%oY63ImWt*lZ$IHck}bW0$%@c=G&0o-?~+J z*ruhE+e}aa$?T9_>|WiAPMN0|3hIy|r@X0n$KFZir$-!B{+`W7kx{#HwLU<|E$?=8{k(-(!^`B@)F zS^B#Z6Kj>)Kx{iUS&U7O-MB{!?QmL#XI)WsoM&gNPUCy2SCzh%U zKt5Z84aBHjQt60fzT&r17oP1>&bNxSV#HQO#q2-^%*2Ct6lU<6gl zpye?iCgH;E?QK!7*s*MLo>%oCYS~X=x}Q2yz543cj#9KMP%#m1Xq@=*K!X|!DCNi1 zYW`yJYLA9{oZyEG`nq6L>1|&wz>gn*_qWSwOBP^FRpX(?zr3>9qYMZPoTZl}CNt$= z$w=kVC2VVJ8}1N)f=fmu{C(q?C&zis#SoQ*q#y?9A!h9D?RA6jZ#w{!9jfQ{HwnX) z63`tkOja({9mSWFy@8VN02bW3S_(fBR{ADEmiYC8@2HSoQ3)S;R|A^EB;%~>ODDtw zGQjIdRPQZa+y7C#)>4rI^?{cM5hW#zpuJa}9$_8=X5G<5 zn7MDok#S5xP2Jt0-A;MdQ$mr+8)oPboDD(BBv*>-DgLcz^?vwe)Yne+t)`y#Agb^qXVb54w(QHa(dzad2X$ zdf6M>>T&yIMUhoI!T2_Na>xP{xT`sqw!dh%uSkC0Uk=i_opd!aN>u2b8c#UKjSP6 zc`AeH-nkFd!s9B@gyjpfcDhW67q}M^ae7s}h9so#%o18C{47xz+g46(HU(?%^KR3s zvWBDomc{buhi4GZt;#1>%0D!#GM`BOZjZ4JLdjBvgHglNf)A+6_}|sJ+{Wv&3(=wK z`0CcRVLn@@g4X>q;=Ujzv+l+qDY8yN*a;RFTh+x3;s-KHk;N+!vK?h9+V?7U%zCLC zQIK3oZIYi+SyH|c4J#}LHqWKmqwJxw(s+WdC^L8rf8b+A9=-X1Z={c9dpE6I z4zfAuLp@l@wHW)nSkFC3c)^#ZXCvP=E2ITFtj0p$`0GAi`STZVG?q4nv{i15C&tK` zDfbs~-WCgyFa4Yah0X5lxI)Bz{P1EqkwKd};Vk>`Y6F%ie<9-du&p&t@*Dy&WSOo+ z!){)r=N}HkVtksCkHnLnFB++XLT1?Hm)ey;$0$VB(#Bx{pROvq)i|u9yDUJH1kt#( zjKY4uKnxQHM&z}!OAA2OVR6zIJ(7ATHO_YLAnNJJ)~?`-%{Gqak^*w9wLXRh(wlLC zG0KSGOQ+rfIRhkuaJ^>D{i;}yow{ko248QH6SgDzo)b+#P>L~;JGr@lHULOn&RSyY zMpExRQt2HP`HNt2W-UUtn0jIU+4BO@LQMpX^?}3?MLB z4pb97BYhHhFDOoDEPzPVLqzc`k_CoR3|qv$-_Rss!;zJyagLSu1}y3cb%mt2>JFwoqw8Jj`crvz;8be=NtgbumYMIy#j4 zN!cX<`D%t%~>zlPv>qA<=O!y)UH9=40gMXWex%t18qy#5^HJ0$NNc9M)7R&k}qjhSEG83^F~W?m?%H>}jf+ zo3O~Ph>$s?n6`!#E!I?D1hlj`P+6@LAWQ%9vHGBJR@j{5<`%Df~ zSqA@inKt?%FiZ4-&gSMzYtWL6dQCg828Y&}kGtrov1>IllV)LBEXhfv-ynw;gV>`{&D_{A36DM~QNPDHR7G1X z&D*qTJToTqeZvK2?|-*>7woBDa1*7NZgXB+&>W{O$AHR&-C{#zxED4QajSLUJHx^KF zb+5&Ns&uze8wBtzaT5!$+oE5zL4e|*v2SYi)hPVU;8*IM_~7$kL9#?)JIh@jb)ZR? zC=o%Pc{>|eeyd|@q*sraa(@>nOCgJ&>q`_G7cuti(orSF%Q!6io z$50#@ju75EwHeLK&aSwZZw7EZ{w;chH71nnA&D@!CDLY%6GbLZMRpE-&Ar8BKU$Dk z=BpeQRYkk|`@!7glu0QDI|mf&uX1X0SrPl^ z)!|{$Jh;U1=;%Zf$@udhEI2~>t3O!w7N38!29sMA>iI-%&YEt>C4D~o6q3_VGssYb zSnhDjE2k1lk$GC#r9J8%gv?3bJg~B4H^7cscF2tN;P=3VTY7j1)YDoFi-*1j9Y?t= zYT)(fpxD{~$crD)(A$8Oqc_C%lQ;G*I-Z2IEv(&qwFVQ+Hzk2dtQRltW%>oT3Li9C zPf>o}aM|zGW>i~m>G*jC{&{;er&8F5&Zj0s84Q>KH^QDful(Av`j*j}nk{|ECiItj zV+t+aiSB4>20W91^q#_pIg=gam0n5BpiyyxVq1N(^?3$>r(V{g&|?9qjC7d3Xo@=a zT=grLS7)mthsvRWa!EM?fv9y^93hFU$c?jbfVQfI$KXW&u&+*5Vtn>)@d0b%;%*O{ z^nLi19=i?yf~+eT^Syk}w$B{o-j2c{wi5Xgk{pC8xvrGOwaZ==Bqn$6_+GEinMjwC zhjKzXrlExsV|Z!C5LCxV9A9U{aa;AOUqQKTZ-$}WT3TKSaW6^A@$yylXN|qXE@Ojtx`2eo-{p1gu50qvC}b! zS~HPG6P9bgseafVBRkxCFSUh>4En{d^EaRnrs8y;I zCnF3=EZEqUIN_i@x``8kW$Pah0x4`@BixwIgKqxh5l;yn@^EnMXqM>-8{I||rqIW* z&em-UXn5|B$~1*LPde zcPz|&>1&?FoTmn_tG%f4LYB?eAno_J=JwJ>RQU<}&sMMH1;LH1#le_PgRP@8?S6;& zq@<+sPa@_23Nu9Q+5@n3f{j!$fmGtCzeRZ;)7Wn7xBmE`F#x7B&i8J+$4Sgh$d&gc z5$#eLD4`~4%vU?! z78DOlTjEHryFeX#4i%tMsl?&!pnWn-XqJlck642K6ca5auJCnrFi7Zk@|8k#4cXHQMkxR z^3w4V8f}Yoxzn%Me(QH}`?Q7bn;N(K)vs&A;2R#gP&2m>iGnU10W9|Z5i7Q`?_?xX z)1h@;o$F!eLyVbXmVk)0LP=4<-rot<|C)?p#so!ZP|V4{Ljzzu>n{RXlr!mpUY#x zuR;+*W6Iq@#h-3ZS6@iKKX&*eaV6NuGn%I;0^nI}0?jFQ+*=EQ8J9Hh*}r?ii$Rxj zG$3?Zb`B1;UL%0J;igTIU7nnL`H`d#Nt6OAD`{x~=b|%Iw&n`HHe<{n9i=1qav?8q z2-|7_=pd(~^-udK^p9!k$>B=Gj){g0&MKuZMQtlNpUv-aMiZ*SQt>b&32x@4-#TaY zBWB)KN4=NGj;oD{kcksn0V0nt_`~YVpie7ex3y_7-hWBpb+XlYy-WL$(3pn)?=-4n zoJ(il05i*Bi@lX&vcyUg?{!WKr|!^{e6w$>`kWZ}938CAYaZZuM(>uGh!+gxm1Utl zm7_|vt`Tp;J4Li(-|&^05hV_YeAMH3CxfYR5vzYX^&eV*Dc$vsfB+nNOo4TFcnaML zlEWe7AjsFefu~qKHH?Mww#ANaX|6PnIJPl@Ub85s(^vWLF)c^Jvg=X8)+S~8w3v#? zA@ctAb`^_H`K3#V*r(K+=Q#MWcjn+-P(loVf}+cl?nPkv`RLJR~^M zhGu4X_Fno80}zhfG;TCy&Pj=n9V>OH&j1p;J3Te+nBq?2Pq>rFC&; zd@&>IA_kvD?ga*_`BM+p4JOmz61+y7l5D+bq-BT+J_2$-?a*`D8b~m+k67U>fYC)w zx7Yq)jB#*RR5oIk3MnDJk*|~du92R&^*Mu{-2|(D&0YGW8x7B1tp~F#b|xa&^@jko zuA6@Q#t0?1a)x+VOHB>?_uA_FKw2)xTRtq*@cm^>SM{`r#vnJ5*^biE4ZJ~*)N}mb zv)b&`Ft3Sts}J*%)2DW(a?%~X`wOHv(F&^TJqZa33QaDN2B_iq)m|-Y0^-79ZlTOC z^srrucNm;W)(P)o+to@+hB%Y$+i4TKJ{*1^5~D`_;qT2{6FzJeKWbmxP@tbX!XG2h{ip4#TvtH6dS!CP zYAopK^_LW0Lne1A!lNNeTFF1DHY7ei{XlTc+jAjGRtffOtq46VPGd)H{cUP_>W8kK z)q11k*Z}Zr8LMyimOCZIoPK_M(yg1MEVm~hGAv={AWJ#sCB`Gh^@?Jat={Z84T&XJ~|$- zT)F?Fvid2rG)RFTMz)6`#)bc8&H8T}R=(gCrETgsQrf_tYnV!~f?gZd_-~ANKW*hn z@_Dd#JFT4M6Ir=bI6;cv32T#(!8l100_IrCVjz{C?&($Tsvx) z#Qe|%pe-eGGZmJq*%aJ<`usO#$`L|-HA6RfS$s_Rge~0fYh@)@L}*r4R=J#qQkxwD zBK%W7nMxGjDf#@ve~NkjkEBIxlV}2vqjcb2v3tio_F*RSnP&Msd9P%5`1=7rRzbG# zUsXM;aUekLLbEIn@F2d$Aq09)Dm#f%*U5&S`QBb82gLRl)9L&d&Cow@!_SQh(8y#Z z>5r(HAstx)O(?f-<<$B@lmY&-R68GX(p(dQ`kxw`e`=4yZ6m`Bl9Qh%v)!2!22Rh< zL)tdP$W=M~zHfNE6ALsGHI`hHpCq0BSEbSw;Xiam`2Qlr`RCVFeYMT6rY8UTaQ_eu z;l%>_p{KE_59a^#s2B@y$w`jM(HjQg|DlNrU;D>FchJttzd7~_^~qQ20^+eMy8kV} z`EQ~sFg|eb|Lc}N*if_VrB#%GB{-JdYM^b~D^(1O!-MCjmg&8?zrW9wqqoW_cUs-v z-F+TS7<0J}qsrBU_edhvmYQ5Hmjcx|kVKOPE8+TSRWx;j4Id zc_je)M?EYM5V=|kO%`Yx^ni`O*4OXw^p5K|efXML>SvMvm+dF8-r5Z4+#_wW=|e&9 zez$nIR7}|Js?31!62t6`Z{xOe{iQ;tYROajFaWALKI7yiJf|PL>j1UC<6|6lM=W_M z*;S4=JwCU^Lwev})_U;W@kXU8DM1A~+(`uC0n>huki*M8wu?XVkCHM3U1CTD_4q?n z{#A%qCY0gf6#}ereJ~XNqkYBdy6d*RyHvqqDd=#Zhtl2) zalEIvH25g{*ohAbp(EohRLa#!Im52OfADJ#{q%T1s_^@-7y{5ykt>x>vcOKmUxHEDw1`Z^C7klq4bPO6ic3qG zfX?LAkew$hlKL0zY(o0Iaj@TbU^jr+Xih7DG~eX3@VDB0=x@JW;>Y6-J8);dyoIs*({`{m0t+ir*$fHYnJI>%*QJhI{K1KUcLm=n*utS40HcHvE?2CpzSD)*&(6qrD69+;h>3&q!|Bo6`4~B^ zp_!hDaT}=C1}s#VGHE$&r6Qo=Oo?$4E`DeQ73PO4KFYIp)?VE zFkTPqD|M2q1~^k#<59Pu0IUY+BLSrv)O>w@8d#K8tUs+EOrnCXhzgTJG3E8e|x z^xtz)lo&#>Y`(}fY^bT@-pw`Q_I;_1K{J@hJ+e?m*0`x86zdg|EV>pzCVftm z{^c^_HDOVwpWDyN*=bo`Yiv)X_&9Mnw@S|Ty#YVFg@W;{nKLYa;%`9E;B_#xZYl`( zOLOfFxp9W5W9FH3V!PO%TyK!m=m zqot!G=+I;DLZ!opF|8%X>wyS9_YU-C*aR0>#G>n{h$bC2w|>z(@Zv9MR&5L@d{EABP&3khuQoD8nI#lyr31VrC5JbEQ#Z_jbV zKZrZdTt>BisA_K+y_epVou9>D?)S6QQI%f5f8G9Vdfw zVR8yvKn8O89PVljT_Q;wI2fCqI~tB=NQyHNM;6cBQ!g_zpuX%Q)IWAKGIQnKOq z;DJr8&+h4SgzRHS_EBqdb9ax2pfUjbkwIqf|9U;|7sf4QV})G&K3zl*U`E`RJC%>; zi1<`AvtO^wFd}&#@T6XAhKbby1>0QI@djYAY{m+b~ zo|HE?i?%d%)xG)oJ$`Xq(hc+P8qRIV6D+bU1mZx>$w`1r1Q0Lv#?l3@pPY`1SJ*Fi z%(vt9gTM8xUS|94fn?98hZ7wTQZ*qjU1oTV3=FC)q#-*cFP87S)s(0J4x0Q_T=~`K zX%Y^WmbM(TgO?G`6Q+CjiCqpv`bc^bInYs6L}by7PvHa#SIH%XZI90i*WYN%-rlBfglM@8L1 z2e?sA972COS-~Gu3|Xx=ARe3D^Qtx>qa@mooxW2yHE!D;0r`EK>_zyoEaS+mwJ08R znsRHdzEk+h;wvDQP~QA3ZO5yp{_;X%hk_fEr@>K{W0OJwH2U)3JbA;tpC7KlL2$J# z0#GX-*hM0dai5H4_#~U?C6`f1Dn8f{nqj;cU?|pUhZCDs{;DuRTq`$rL6CPFz2<}U z86SFmrW`(b+{Jh{T#?%-)q=!OrD$VpPM#Ovl5mXcZj7Z=3r6owQ^zr^ zR=^E|(Nsj^oZy7)65(;5y zI#x@zgjy8~k>K@l;_Yf{9&0jex4K#yjg@88LVJI1oH$621hA$Ph0Cp;drL?Ik_kX; zg?`x}&ChRz8QB{NWO(<|OL9_DA3$I2E;vI$AsVt*X^Vp^DUO_oT5~#Tx01FlC>|vt zB|T$j>1mw!j4|4Xvk^)q;!+rRGtGgvR$tHaS0cM&esa=yy59A^-XAhh4e@&83J;zA zy29W5t?GNk>zlm>Lw|XQ&g~s;h6J~T`tvsDy(Ndpx5b-0crKP0- z)56dYgwr#&?tlfS^jd#8u;-#zsHy3@!3!E>q2B>?3?OV*tIcb4n%)}>v>b0-Xj044 z^4^QqEOyH_c_E#jBV=y(kR_AuqGT;Dd>!7&6#V-;4uwx%{5Z@j_}GD8y}HfgOC{>^ zIaz7AYN|qe;ItigyHGk%r-4RN%x5@b)?-`~j_nfaGkAUM`0Z;+Nr%gLVdpDA<@FDN z_3iMm`mt1`0!JZa<>9`9oQ(85W6;KBTXM&{t)-#T`JE84T248Ip?)49V08oPyvHG= zoHlFvV@h0?ic<67#_^-Xvd>G~p?7X>1XoG8G1ll(8>mq1;o`8K@!s+IX&Dfcy44Am z-%T`+VXYqOTybjI!pO50OrF6IL@O~_?0VU4G&^u)_GX*_$9#Tx!1{R!Q8wfi zxyjn^jIyy66;)JJ(p(mGVF(dCrVoyWy!SXbS%j#E2O6L?PGf(Lfst2jtT+r38Ed0- zTmqk%Z=-HMkT^6KJ)4vVQ5buW9h}P??wi^O1$75rE)RnxMMq3G&(%^c{zA&l#>)f) z@B&OpUwfoBZBxihL#Bx`SRSQ2g(q}`Pd;_b)BaW*zL;Vny$2mL9&xt^TY}cQxN3f^ zIzX|ZSeq2bGPas6w*9BcV#$%`vd?|@jAlV+zK-2k_|#x$Fx(5IhlKG#l}mfXYGUn; zR~(?hF#=8O0P(ijDA;!Nit@=web)%M9q*eW#SO8wAN5aT1 zRNEB}8UpM>1GN|6ufS1daRADwD^Y-r9vL2P#Shv9NgY@j`uW*uzI&!h)nKLMIGt?BZ`^b?t>2p%EG9#LGVH$eHwNj*o|%PIkXgxV$>06u!<*g?X~GCP;|Hb8bTx9z`vWejBLA)2FJ1^KugeUMR}z$zd0X~^ zh#XvABRuEQ-GNA}&bRvu_R^if8@q3v3wd}sJuUo?H*;AA2JSn9gVP!+idxZ7B|11H z{r2;6)g06-vo10}97H6rrI5-YCxOgzgLb`m|3$(L67*Kn|cA3LP`3ve?l;|(= z%HwxOCfp7KS3iWdKP*%p5-Nc&_b zW?e+}+_;`I9RQg=^o&*0-JU(z5&a|_=&&E7ASU)rw@N~k_pfCBdX!{{6OT`F!smS9 zbAe*W=9S=a>3qW~quZ|uj(;X453YU%`xl3HZv+b8ULIId;$U2^Ts;s-)mruLMRs2= z9hQqWRo&kG@pzUUdhgsU`(C@^Iwj;JG5YE7ZjVPGXGa%c4T--=mF)%S`dqg`7 z9`CoH?Eh-otnH>#PDWw2XHwtdTHtWL+;u-QWjWu~`R3PN?s+zgDh=bM0= z;qd|wZD)90WC4visRQ6HnaK#mkB8vfiX<9IUrQ$^wed=Y?eOrZyb=+eQEc0H~^c{0>brK zk16JGfps1rUO@Yx_KbB8AT!zbclN2CTi>;q57}}4o?3h*2Ko7M-(`RQ_#jgHg@d-_ z{lJ5_$=+O-?E(aenESSQjU1nEzU-O4K7AugkvLFw{*}t%?BW~~>!*`#$Y#flsxbx0 z#Atu0Y1ekoLzB}C?$(N1nO^VLaksC$oZJiNX{NGggjdrE8qz3SYvf&LnFP$QK0n{6 zJ6X9Kob9e(lU%t@u5z2dvW7d3#BAM^&%aJA$7&JSER=n?D7_{4#Kikwrs6>IRRP{H-XiVCUKx?vy`??GYN%Im!ghVUNa`c(*pu&RjC-ml>;PX<;QA> zYYGr5LW9No17)~qIztf5>!Ai(XAVdOjb&z^*2r^@L_8_wBTFo(pi*N>)jrv3HWIn*rY0s;;=;nOFfbmbtk#Eo#wri`d~nGv#L6r$RuX#Dl;I~yJkCVZ2(sy4 zyx%x#=l)0utxhbNniw3KHN7)#DV@DmLCjaeCdJY}&3oK53p5;Ee!p&es^yH?+LkFy zj!4hwO3RrGO?`UzHqfhqia?;D$+w(i;8BG+r1P`=SS0OSrf_1HDzvB{ZSR7Z2_`7ss`q^-yuCcMuFYcR& z-kopZ(9=$&2^Eph@Rk9eOtt{znZqbvJTO%><$icS*HVcZ(2LYI)&Gs6*4n^}NJX z(-nX24~!xD-c&J906zbs3fbxlE6y2o=J4gf*Df$?s714aY0pLii;aEDnPB{yv9z}#C9$&7)ALD;EunyTFg?Zn*X@(GM?iWM(l9E}1F{$%R| z(4NDA%lISpwZ58(12!9{2H57c%By4kMRfG-Ohlc8DT8UR1!`0PVaq4HaUGyStUNKH zFu&qRLFoV*|L(pX9VNQB!3_dfLh+v}>L)N@90O20GZO_jbay{K@3pGM&sS+B3-0ay zt6EW3#qK*koSDMB^=n3pF!}fu{A&1D`D<5hWq|6J!&IPq4xulsn@VvrxhyA?s(3T6 zuY8fM<;wi-@8eSW)*C-XPIgq*Qp31O{ru5Rz-nbBn*)w#(H-o+YB{eyc)h|`tm7A7 z%1Wy$!rFGA+TC4xr{%_JgC}9fUZu?x_MzLdn=Ti>$4U6Hhv9?7i1rZos9UzKmzY^OA2H7t@frR4xjj$7 z7ZP^b-6&M;V*_X?Kd}7O0^}ai|AHBb55gBz=dtjg!_1apTuhXfQ zBx?aK>(%qdkgrS4eV!#pd?wXbQA6WCpxFZV@ACN5(g_9!g*b}KmvQsCPuk`)?szSJ zXa@Nj-DpQ*Xox!;YQMU<6iGAxt{@7=TnYQ+#;}tZK_&a$Ys|dX9UI%D%Su(2GRRl) z^f~Xq*ZQ^tRQNy=j3V^yZk>oBG(HH&R{Ez=F&>icG1Z=z5>^jnuK*4wxBl+<|J=xr;N>Dqy63^<^jrSt1X@ zP};kd@(F#aCMz91BXh`GU?#PBiz@S4n|awQOp&0zH1jh^!^W%i(Cx9_o^>TuVu zt$@AWHQJ+U{`chS%9k#0tFdOYv1AAhcB>N;DI*?T9Y0$}p1N^T|L|9Qq52)S zM#o-jNri?rD;l@2C>k|pmu%XiHsj?MXKb1~^W(r)RwHlp$9m6Wf3npTduA$={Mm=m z%Kp2BfyYtRQPs3zO?t7;h=Qze>-~o0a;L z*;(wnW9Z_f!_9>kgl*q~=mG6E5R-oI(Qn5W4YUW>ze)ZfR6(jv=XSzZmQ(V zV_V{5dzyE9PxB2h2&(TCB-o-)nW}xjq!=xr=blZ~ZYF4zJe6iGSL%aVz@QEbbnbas z^jarPa6z-XatbLZFf=dPwPAnMlc+e-F42@({D6dWiOk;(H>O zch%iXovyw09x1XRkL2xbZG5W{gNcLCYXd1-y01bzZn;dUPQ1CAu2HifW%SM;1)Njc z@%OMS`(DXlN+O=b!4014FD`<)RZNVdhqAyRx+?7lf+RT$!ny9y#~dsE7D@_x3fmFe zx;gR_JtE5wS@sO91ob_GK5{`_ri$4`s?2ZP5k)VJ8PhQ7=2diZZNCo_rM}GNsjXXB zzEHA(CyB0@Sb{;1j{6JUt@@uaW;A4�yqt?St_%p2NH{X@+=N5wt7QW{)|s?ytvw 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
#0Khs$Q3xAdp-oj)QkkME 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%0Db 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�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 Rep~}T%JS;)5?RyW{{oK5{lEYK diff --git a/docs/index.rst b/docs/index.rst index ec10e29c9..b10ce8407 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -6,14 +6,14 @@ The Brain Scaffold Builder ========================== -The BSB is a **black box component framework** for multiparadigm neural modelling: we -provide structure, architecture and organization, and you provide the use-case specific +The BSB is a **black box component framework** for multi-paradigm neural modelling: we +provide structure, architecture and organization, while you provide the use-case specific parts of your model. In our framework, your model is described in a code-free configuration of **components** with parameters. For the framework to reliably use components, and make them work together in a complex workflow, it asks a fixed set of questions per component type: e.g. a connection component -will be asked how to connect cells. These contracts of cooperation between you and the +will ask how to connect cells. These contracts of cooperation between you and the framework are called **interfaces**. The framework executes a transparently parallelized workflow, and calls your components to fulfill their role. @@ -25,102 +25,83 @@ human-readable, multi-scale models! ---- -.. grid:: 1 1 2 2 +.. grid:: 1 1 4 2 :gutter: 1 + .. grid-item-card:: :octicon:`desktop-download;1em;sd-text-warning` Installation + :link: installation-guide + :link-type: ref + + How to install the code. + .. grid-item-card:: :octicon:`flame;1em;sd-text-warning` Get started :link: get-started :link-type: ref Get started with your first project! - .. grid-item-card:: :octicon:`tools;1em;sd-text-warning` Components - :link: components + .. grid-item-card:: :octicon:`device-camera-video;1em;sd-text-warning` Examples + :link: examples :link-type: ref - Learn how to write your own components to e.g. place or connect cells. + View examples explained step by step - .. grid-item-card:: :octicon:`database;1em;sd-text-warning` Simulations - :link: simulations + .. grid-item-card:: :octicon:`repo-clone;1em;sd-text-warning` BSB - CLI + :link: cli-guide :link-type: ref - Learn how to simulate your network models + Learn how to use the Command-Line Interface. - .. grid-item-card:: :octicon:`device-camera-video;1em;sd-text-warning` Examples - :link: examples + .. grid-item-card:: :octicon:`tools;1em;sd-text-warning` Contributing + :link: development-section :link-type: ref - View examples explained step by step + Help out the project by contributing code. - .. grid-item-card:: :octicon:`package-dependents;1em;sd-text-warning` Plugins - :link: plugins + .. grid-item-card:: :octicon:`gear;1em;sd-text-warning` Components + :link: main-components :link-type: ref - Learn to package your code for others to use! + Explore more about the main components. - .. grid-item-card:: :octicon:`mark-github;1em;sd-text-warning` Contributing - :link: https://github.com/dbbs-lab/bsb + .. grid-item-card:: :octicon:`briefcase;1em;sd-text-warning` Python API + :link: whole-api + :link-type: ref - Help out the project by contributing code. + + .. grid-item-card:: :octicon:`info;1em;sd-text-warning` FAQ + :link: faq + :link-type: ref + +Content +------- .. toctree:: :maxdepth: 2 :caption: Getting Started getting-started/installation - getting-started/top-level-guide getting-started/toc - guides/toc examples/toc -.. toctree:: - :maxdepth: 2 - :caption: Configuration - - config/configuration-toc - - .. toctree:: :maxdepth: 2 :caption: CLI cli/cli-toc -.. toctree:: - :maxdepth: 2 - :caption: Topology - - topology/topology-toc - -.. toctree:: - :maxdepth: 2 - :caption: Cell types - - cells/cells-toc .. toctree:: - :maxdepth: 2 - :caption: Morphologies - - morphologies/morphology-toc - -.. toctree:: - :maxdepth: 2 - :caption: Placement - - placement/placement-toc - -.. toctree:: - :maxdepth: 2 - :caption: Connectivity + :maxdepth: 2 + :caption: BSB core - connectivity/connectivity-toc + core/core-toc .. toctree:: - :maxdepth: 2 - :caption: Simulation + :maxdepth: 2 + :caption: Components - simulation/simulation-toc + components/components-toc .. toctree:: :maxdepth: 2 @@ -130,14 +111,14 @@ human-readable, multi-scale models! genindex py-modindex +.. toctree:: + :maxdepth: 1 + :caption: FAQ + + dev/faq + .. toctree:: :maxdepth: 2 :caption: Developer Guides: - dev/installation - dev/documentation - dev/guidelines - dev/services - dev/plugins - dev/hooks - dev/reference + dev/dev-toc diff --git a/docs/morphologies/intro.rst b/docs/morphologies/intro.rst index 50c2abd08..b965cd90a 100644 --- a/docs/morphologies/intro.rst +++ b/docs/morphologies/intro.rst @@ -4,7 +4,7 @@ Morphologies Morphologies are the 3D representation of a cell. A morphology consists of head-to-tail connected branches, and branches consist of a series of points with radii. Points can be -labelled and can have multiple user-defined properties per point. +labeled and can have multiple user-defined properties per point. .. figure:: /images/morphology.png :figclass: only-light @@ -23,7 +23,7 @@ labelled and can have multiple user-defined properties per point. Network configurations can contain a :guilabel:`morphologies` key to define the morphologies that should be processed and assigned to cells. See -:doc:`../getting-started/include_morphos` for a guide on the possibilities. +:doc:`/getting-started/simulations/include_morphos` for a guide on the possibilities. Morphologies can be stored in a network in the :class:`~.storage.interfaces.MorphologyRepository`. @@ -114,7 +114,7 @@ morphology: :lines: 8-17 :language: python -Once you're done with the morphology you can save it again: +Once you are done with the morphology you can save it again: .. literalinclude:: ../../examples/morphologies/usage.py :lines: 19 @@ -176,8 +176,8 @@ Subtrees can be selected using label(s) on the morphology. .. warning:: - Branches will be selected as soon as they have one or more points labelled with a - selected label. + Branches will be selected as soon as they have one or more points labelled with a + selected label. Selections will always include all the branches emanating (downtree) from the selection as well: @@ -330,13 +330,13 @@ Subtree gaps between parent and child branches can be closed: .. note:: - The gaps between any subtree branch and its parent will be closed, even if the parent is - not part of the subtree. This means that gaps of roots of a subtree may be closed as - well. Gaps _between_ roots are never collapsed. + The gaps between any subtree branch and its parent will be closed, even if the parent is + not part of the subtree. This means that gaps of roots of a subtree may be closed as + well. Gaps _between_ roots are never collapsed. .. seealso:: - `Collapsing`_ + `Collapsing`_ Collapsing ---------- @@ -461,6 +461,7 @@ Currently unspecified, up to the Storage and MorphologyRepository support to ret dictionary of available metadata from :meth:`~.storage.interfaces.MorphologyRepository.get_meta`. +.. _MorphologyDistributors: Morphology distributors ----------------------- @@ -475,9 +476,9 @@ a :class:`~.morphologies.RotationSet`. .. warning:: - The rotations returned by a morphology distributor may be overruled when a - :class:`~.placement.distributor.RotationDistributor` is defined for the same placement - block. + The rotations returned by a morphology distributor may be overruled when a + :class:`~.placement.distributor.RotationDistributor` is defined for the same placement + block. Distributor configuration ~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -533,7 +534,7 @@ morphology, and returning any other values would be an error. If you need to break out of the morphologies that were handed to you, morphology distributors are also allowed to return their own :class:`~.morphologies.MorphologySet`. -Since you're free to pass any list of morphology loaders to create a morphology set, you +Since you are free to pass any list of morphology loaders to create a morphology set, you can put and assign any morphology you like. .. tip:: @@ -556,8 +557,8 @@ can put and assign any morphology you like. ] return MorphologySet(loaders, np.arange(len(loaders))) - This is cumbersome, so if you plan on generating new morphologies, use a `morphology - generator`_ instead. + This is cumbersome, so if you plan on generating new morphologies, use a + `morphology generator`_ instead. Finally, each morphology distributor is allowed to return an additional argument to assign rotations to each cell as well. The return value must be a diff --git a/docs/morphologies/morphology-set.rst b/docs/morphologies/morphology-set.rst index 5da63b57a..4ea9a8bdc 100644 --- a/docs/morphologies/morphology-set.rst +++ b/docs/morphologies/morphology-set.rst @@ -12,7 +12,7 @@ Every time a morphology is loaded, it has to be read from disk and pieced togeth use soft caching, upon loading a morphology it is kept in cache and each time it is re-used a copy of the cached morphology is created. This means that the storage only has to be read once per morphology, but additional memory is used for each unique morphology -in the set. If you're iterating, the soft cache is cleared immediately after the iteration +in the set. If you are iterating, the soft cache is cleared immediately after the iteration stops. Soft caching is available by passing ``cache=True`` to :meth:`~.morphologies.MorphologySet.iter_morphologies`: diff --git a/docs/morphologies/morphology-toc.rst b/docs/morphologies/morphology-toc.rst index bd80d7239..2ab531b11 100644 --- a/docs/morphologies/morphology-toc.rst +++ b/docs/morphologies/morphology-toc.rst @@ -1,3 +1,6 @@ +Morphology +========== + .. toctree:: :maxdepth: 2 :caption: Morphology diff --git a/docs/placement/placement-indicators.rst b/docs/placement/placement-indicators.rst index c46d8aa18..0e50c50a7 100644 --- a/docs/placement/placement-indicators.rst +++ b/docs/placement/placement-indicators.rst @@ -31,9 +31,9 @@ Independent counts estimation strategies You can choose one of the following attributes to estimate the number of cells to place in its partition(s). * :guilabel:`count`: Set directly the number of cells to place. -* :guilabel:`density`: Use a density of cell per unit of volume (in cell/um^-3). This will be converted to counts +* :guilabel:`density`: Use a density of cell per unit of volume (in cell/µm^-3). This will be converted to counts based on the partition(s) total volume. -* :guilabel:`planar_density`: Use a density of cell along the `xy` plane per unit of area (in cell/um^-2). Here too, +* :guilabel:`planar_density`: Use a density of cell along the `xy` plane per unit of area (in cell/µm^-2). Here too, density is converted to counts thanks to the partition(s) area along the `xy` plane. * :guilabel:`density_key`: Leverage a density file, defined here with a reference to a `partitions.keys` (see `Voxels` section in :doc:`/topology/partitions`). The number of cells is derived from this volumetric density diff --git a/docs/placement/placement-set.rst b/docs/placement/placement-set.rst index 9049e9772..1bc9cd90f 100644 --- a/docs/placement/placement-set.rst +++ b/docs/placement/placement-set.rst @@ -22,19 +22,25 @@ same :class:`~.storage.interfaces.PlacementSet`. If the placement set does not e from bsb import from_storage - network = from_storage("my_network.hdf5") - ps = network.get_placement_set("my_cell") + scaffold = from_storage("my_network.hdf5") + ps = scaffold.get_placement_set("my_cell") # Alternatives to obtain the same placement set: - ps = network.get_placement_set(network.cell_types.my_cell) - ps = network.cell_types.my_cell.get_placement_set() - ps = network.storage.get_placement_set(network.cell_types.my_cell) + ps = scaffold.get_placement_set(network.cell_types.my_cell) + ps = scaffold.cell_types.my_cell.get_placement_set() + print(ps.tag) # Name of the placement set Identifiers =========== Cells have no global identifiers, instead you use the indices of their data, i.e. the n-th position belongs to cell n, and so will the n-th rotation. +To easily retrieve the cells' IDs make use of the method :meth:`~.storage.interfaces.PlacementSet.load_ids`. + +.. code-block:: python + + list_of_ids = ps.load_ids() + Positions ========= @@ -44,29 +50,26 @@ The positions of the cells can be retrieved using the .. code-block:: python - for n, position in enumerate(ps.positions): - print("I am", ps.tag, "number", n) - print("My position is", position) + for n, position in enumerate(ps.load_positions()): + print(f"Cell {n}, position: {pos}") Morphologies ============ -The positions of the cells can be retrieved using the +The morphology of the cells can be retrieved using the :meth:`~.storage.interfaces.PlacementSet.load_morphologies` method. .. code-block:: python for n, (pos, morpho) in enumerate(zip(ps.load_positions(), ps.load_morphologies())): - print("I am", ps.tag, "number", n) - print("My position is", position) + print(f"Cell {n}, position: {pos}, morpho: {morpho}") .. warning:: - Loading morphologies is especially expensive. - - :meth:`~.storage.interfaces.PlacementSet.load_morphologies` returns a - :class:`~.morphologies.MorphologySet`. There are better ways to iterate over it using - either **soft caching** or **hard caching**. + | Loading morphologies is especially expensive. + | :meth:`~.storage.interfaces.PlacementSet.load_morphologies` returns a + :class:`~.morphologies.MorphologySet`. + | There are better ways to iterate over it using either **soft caching** or **hard caching**. Rotations ========= @@ -74,6 +77,17 @@ Rotations The positions of the cells can be retrieved using the :meth:`~.storage.interfaces.PlacementSet.load_rotations` method. +.. code-block:: python + + for n, rotation in enumerate(ps.load_rotations()): + print(f"Cell {n}, rotation: ", rotation) + +Labeling +======== + +You can label cells and/or their attached morphologies using the +:meth:`~.storage.interfaces.PlacementSet.load_rotations` + Additional datasets =================== diff --git a/docs/placement/placement-toc.rst b/docs/placement/placement-toc.rst index 4b0bce135..7a0bfecfb 100644 --- a/docs/placement/placement-toc.rst +++ b/docs/placement/placement-toc.rst @@ -1,3 +1,6 @@ +Placement +========= + .. toctree:: :maxdepth: 2 :caption: Placement diff --git a/docs/simulation/arbor.rst b/docs/simulation/arbor.rst new file mode 100644 index 000000000..fd6f59dc8 --- /dev/null +++ b/docs/simulation/arbor.rst @@ -0,0 +1,5 @@ +#################### +Simulate using ARBOR +#################### + +``Not ready`` \ No newline at end of file diff --git a/docs/simulation/intro.rst b/docs/simulation/intro.rst new file mode 100644 index 000000000..0bf1a5dc0 --- /dev/null +++ b/docs/simulation/intro.rst @@ -0,0 +1,212 @@ +################### +Simulating Networks +################### + +The BSB offers adapters that enable you to simulate +your network using widely-used neural simulation software. Consequently, once the model is created, +it can be simulated across different software platforms without requiring modifications or adjustments. +Currently, adapters are available for NEST, NEURON, and ARBOR, +although support for ARBOR is not yet fully developed. + +All simulation details are specified within the simulation block, which includes: + * a ``simulator`` : the software chosen for the simulations. + * set of ``cell models`` : the simulator specific representations of the network's :doc:`CellTypes ` + * set of ``connection models`` : that instruct the simulator on how to handle the :doc:`ConnectivityStrategies ` of the network + * set of ``devices`` : define the experimental setup (such as input stimuli and recorders). + +All of the above is simulation backend specific and is covered in the corresponding sections: + + * :doc:`NEST `. + * :doc:`NEURON `. + * :doc:`ARBOR `. + +Running Simulations +=================== + +Simulations can be run through the CLI or through the ``bsb`` library for more +control: + +.. tab-set-code:: + + .. code-block:: bash + + bsb simulate my_network.hdf5 my_sim_name + + .. code-block:: python + + from bsb import from_storage + network = from_storage("my_network.hdf5") + network.run_simulation("my_sim") + +When using the CLI, the framework sets up a "hands off" simulation workflow: + +* Read the network file +* Read the simulation configuration +* Translate the simulation configuration to the simulator +* Create all cells, connections and devices +* Run the simulation +* Collect all the output + +When you use the library, you can set up more complex workflows, such as parameter sweeps: + +.. literalinclude:: ../../examples/simulation/parameter_sweep.py + :language: python + +.. rubric:: Parallel simulations + +To parallelize any BSB task prepend the MPI command in front of the BSB CLI command, or +the Python script command: + +.. code-block:: bash + + mpirun -n 4 bsb simulate my_network.hdf5 my_sim_name + mpirun -n 4 python my_simulation_script.py + +Where ``n`` is the number of parallel nodes you'd like to use. + +Targetting +========== + +To customize our experimental setup, devices can be arranged to target specific cell populations. +In the BSB, several methods are available to filter the populations of interest. +These methods can be based on various criteria, including cell characteristics, +labels, and geometric constraints within the network volume. + +The target population can be defined when a device block is created in the configuration: + +.. tab-set-code:: + + .. code-block:: json + + "my_new_device": { + "device": "device_type", + "targetting": { + "strategy": "my_target_strategy", + } + } + .. code-block:: python + + config.simulations["my_simulation_name"].devices=dict( + my_new_device={ + "device": "device_type", + "targetting": { + "strategy": "my_target_strategy", + } + } + ) + +Strategies based on cell +------------------------ + +``strategy name``: :guilabel:`all` . This is a basic strategy that targets all the cells in our network + +Target by cell model +^^^^^^^^^^^^^^^^^^^^ + +``strategy name``: :guilabel:`cell_model` . This strategy targets only the cells of the specified models. +Users must provide a list of cell models to target using the attribute :guilabel:`cell_models` . + +Target by id +^^^^^^^^^^^^ + +``strategy name``: :guilabel:`by_id` . Each cell model is assigned a numerical identifier +that can be used to select the target cells. +It is necessary to provide a list of integers representing the cell IDs with the attribute :guilabel:`ids` . + + +Geometric strategies +-------------------- + +Instead of targeting cells based on characteristics or labels, +it is possible to target a defined region using geometric constraints. + +Target a Cylinder +^^^^^^^^^^^^^^^^^ + +``strategy name``: :guilabel:`cylinder`. This strategy targets all the cells contained within a cylinder along the defined axis. +The user must provide three attributes: + +* ``origin``: A *list* of coordinates representing the base of the cylinder for each non-main axis. +* ``axis``: A character is used to specify the main axis of the cylinder. Accepted values are "x," "y," and "z," with the default set to "y." +* ``radius``: A *float* representing the radius of the cylinder. + +Target a Sphere +^^^^^^^^^^^^^^^ + +``strategy name``: :guilabel:`sphere`. This strategy targets all the cells contained within a sphere. +The user must provide two attributes: + +* ``origin``: A *list* of *float* that defines the center of the sphere. +* ``radius``: A *float* representing the radius of the sphere. + +Simulation results +================== + +The results of a simulation are stored in ``.nio`` files. +These files are read and written using the :doc:`Neo Python package `, which is specifically +designed for managing electrophysiology data. The files utilize the HDF5 (Hierarchical Data Format version 5) +structure, which organizes data in a hierarchical manner, similar to a dictionary. +The data is organized into blocks, where each block represents a recording session (i.e., a simulation block). +Each block is further subdivided into segments, with each segment representing a specific timeframe within the session. +To retrieve the blocks from a ``.nio`` file: + +.. code-block:: python + + from neo import io + + neo_obj = io.NixIO("NAME_OF_YOUR_NEO_FILE.nio", mode="ro") + blocks = neo_obj.read_all_blocks() + + for block in blocks: + list_of_segments = blocks.segments + + +For more information, please refer to the :doc:`Neo documentation `. + +Spike Trains +------------ + +Within a segment, you can access all the :class:`SpikeTrain ` objects recorded during +that particular timeframe. A ``SpikeTrain`` represents the collection of spikes emitted by the target population, +and it includes metadata about the device name, the size of the cell population, and the IDs of the spiking cells. +This information is stored in the :guilabel:`annotations` attribute: + +.. code-block:: python + + for spiketrain in segment.spiketrains: + spiketrain_array = spiketrain.magnitude + unit_of_measure = spiketrain.units + device_name = spiketrain.annotations["device"] + list_of_spiking_cell_ids = spiketrain.annotations["senders"] + end_time_of_the_simulation = spiketrain.annotations["t_stop"] + population_size = spiketrain.annotations["pop_size"] + +.. note:: + + To retrieve the spike train for a specific cell, the spike time at index i in the ``spiketrain_array[i]`` + corresponds to the cell with ID ``list_of_spiking_cell_ids[i]``. + +Analog Signals +-------------- + +Each segment also contains an :guilabel:`analogsignals` attribute, which holds a list of Neo :class:`AnalogSignal ` objects. +These objects contain the trace of the recorded property, along with the associated time points. +They are also annotated with information such as the device name, the type of cell recorded, and the cell ID, +which can be accessed through the :guilabel:`annotations` attribute: + +.. code-block:: python + + for signal in segment.analogsignals: + trace_of_the_signal = signal.magnitude + unit_of_measure = signal.units + time_signature = signal.times + time_unit = signal.times.units + device_name = signal.annotations['name'] + cell_type = signal.annotations['cell_type'] + cell_id = signal.annotations['cell_id'] + +.. note:: + + Unlike the spike train case, the :guilabel:`analogsignals` attribute contains a separate ``AnalogSignal`` + object for each target of the device. + diff --git a/docs/simulation/nest.rst b/docs/simulation/nest.rst new file mode 100644 index 000000000..d47cf25cc --- /dev/null +++ b/docs/simulation/nest.rst @@ -0,0 +1,350 @@ +################### +Simulate using NEST +################### + + + +NEST is a simulation tool used in computational neuroscience for modeling and studying the behavior of +large networks of point neurons. + +To install the simulator, please refer to the installation `guide `_. + +The simulation block contains all the necessary details to run the simulation. +In the configuration, you will need to specify a name and duration (in milliseconds). +For example, the following creates a simulation named ``my_simulation_name`` with a duration of 1 second: + +.. tab-set-code:: + + .. code-block:: json + + "simulations": { + "my_simulation_name": { + "simulator": "nest", + "duration": 1000, + } + + .. code-block:: python + + + config.simulations.add("my_simulation_name", + simulator="nest", + duration=1000, + ) + + +Cell Models +=========== + +In the cell_models block, you specify the NEST representation for each cell type. +Each key in the block can have the following attributes: + + * :guilabel:`model`: NEST neuron model, See the available models in the NEST documentation + + * :guilabel:`constants`: parameters that are defined in the NEST neuron model. Most models include the following parameters: + + * t_ref: refractory period duration [ms] + * C_m: membrane capacitance [pF] + * V_th: threshold potential [mV] + * V_reset: reset potential [mV] + * E_L: leakage potential [mV] + +For example if you have a network with two cell types: + +.. tab-set-code:: + + .. code-block:: json + + "cell_models": { + "cell_type_one": { + "model": "first_nest_model", + "constants": { "t_ref": 2, "C_m": 15} + }, + "cell_type_two": { + "model": "another_nest_name", + "constants": {"t_ref": 1} + } + }, + + .. code-block:: python + + config.simulations["my_simulation_name"].cell_models=dict( + cell_type_one={"model":"first_nest_model",constants={ "t_ref": 2, "C_m": 15}}, + cell_type_two={"model":"another_nest_name",constants={ "t_ref": 1}} + ) + +For the first cell type, we assign the corresponding NEST neuron model named ``first_nest_model``, +with a refractory period of 2 ms and a membrane capacitance of 15 pF. +For cell_type_two, we use the NEST model named ``another_nest_name``, setting a different refractory period. + +To select the most suitable model and its parameters, the NEST website provides a useful model `list `_. + +Connection Models +================= + +In this block, you need to define a NEST connection module for each ConnectivitySet in your network. +The `bsb-nest `_ interface provides a ``NestConnection`` module that handles the set by passing arrays of +pre-synaptic and post-synaptic cells, using a ``one_to_one`` connection. +You will need to specify the synapse configuration using the key :guilabel:`synapse`, providing all required properties as a dictionary. + +The available keys in the synapse specification dictionary include: + + * :guilabel:`model` : Specifies NEST ``synapse_model``. + * :guilabel:`weight` : *float* that defines a weight for the synapse (**required**). + * :guilabel:`delay` : *float* that defines a delay (**required**). + * :guilabel:`receptor_type` : *int* that identifies NEST receptor types. For more details see the `receptors section `_ . + * :guilabel:`constants` : Any parameters specific to the selected synapse model. + +.. tab-set-code:: + + .. code-block:: json + + "connection_models": { + "connect_A_to_B": { + "synapse" : { + "model": "static_synapse", + "weight": 0.5, + "delay": 1 + } + }, + "connect_B_to_A": { + "synapse": { + "model": "bernoulli_synapse", + "weight": 1, + "delay": 1, + "constants":{"p_transmit":0.5} + } + } + }, + + .. code-block:: python + + config.simulations["my_simulation_name"].connection_models=dict( + connect_A_to_B=dict(synapse=dict( + model="static_synapse", + weight=0.5, + delay=1 + ) + ) + connect_B_to_A=dict(synapse=dict( + model="bernoulli_synapse", + weight=1, + delay=1, + constants={"p_transmit":0.5} + ) + ) + ) + +In this example, for the ConnectivitySet named ``connect_A_to_B``, we assign a ``static_synapse``, +while for the second set, a ``bernoulli_synapse`` is chosen. +All available built-in synapse models are listed in the `NEST guide `_. + +Devices +======= + +In this block, you can specify the devices for your experimental setup. +NEST provides two types of devices: *recording* devices, for extracting information from a simulation, +and *stimulation* devices, for delivering stimuli. + +The ``bsb-nest`` module provides interfaces for NEST devices through the ``NestDevice`` object. +To properly configure a device, you need to specify three attributes: + + * :guilabel:`weight` : *float* specifying the connection weight between the device and its target (required). + * :guilabel:`delay` : *float* specifying the transmission delay between the device and its target (required). + * :guilabel:`targeting` : Specifies the targets of the device, which can be a population or a NEST rule. + +For example, to create a device named ``my_new_device`` of class ``device_type``, with a weight of 1 +and a delay of 0.1 ms, targeting the population of ``my_cell_model``: + +.. tab-set-code:: + + .. code-block:: json + + "my_new_device": { + "device": "device_type", + "weight": 1, + "delay": 0.1, + "targetting": { + "strategy": "cell_model", + "cell_models": ["my_cell_model"] + } + } + .. code-block:: python + + config.simulations["my_simulation_name"].devices=dict( + my_new_device={ + "device": "device_type", + "weight": 1, + "delay": 0.1, + "targetting": { + "strategy": "cell_model", + "cell_models": ["my_cell_model"] + } + } + ) + +Stimulation devices +------------------- + +These type of devices are used to inject signals into a network. Currently two types of +stimuli are supported by ``bsb-nest``. NEST guide provides more details about `stimulation devices `_. + +Create a DC Generator +^^^^^^^^^^^^^^^^^^^^^ + +This generator provides a constant DC input to the connected node. It can be configured by passing three attributes: + + * :guilabel:`amplitude` : *float* that is the amplitude of the current in mV (**required**). + * :guilabel:`start` : *float* define a starting time in ms. + * :guilabel:`stop` : *float* define an arresting time in ms. + +.. tab-set-code:: + + .. code-block:: json + + "my_new_device": { + "device": "dc_generator", + "amplitude": 20, + "weight": 1, + "delay": 0.1, + "targetting": { + "strategy": "cell_model", + "cell_models": ["my_cell_model"] + } + } + .. code-block:: python + + config.simulations["my_simulation_name"].devices=dict( + my_new_device={ + "device": "dc_generator", + "amplitude": 20, + "weight": 1, + "delay": 0.1, + "targetting": { + "strategy": "cell_model", + "cell_models": ["my_cell_model"] + } + } + ) + +Create a Poisson Generator +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +This generator simulates a neuron firing with Poisson statistics, generating a unique spike train +for each of its targets. You need to specify the frequency of the generator, +in terms of the mean firing rate (Hz), using the :guilabel:`rate` key. + +.. tab-set-code:: + + .. code-block:: json + + "my_new_device": { + "device": "poisson_generator", + "rate": 10, + "weight": 1, + "delay": 0.1, + "targetting": { + "strategy": "cell_model", + "cell_models": ["my_cell_model"] + } + } + .. code-block:: python + + config.simulations["my_simulation_name"].devices=dict( + my_new_device={ + "device": "poisson_generator", + "rate": 10, + "weight": 1, + "delay": 0.1, + "targetting": { + "strategy": "cell_model", + "cell_models": ["my_cell_model"] + } + } + ) + +Recording Devices +----------------- + +These are the devices which are used to observe the state of network nodes. Currently ``bsb-nest`` +support two types of recorders. + +Add a Spike Recorder +^^^^^^^^^^^^^^^^^^^^ + +Is one of the most basic collector device, which records all spikes it receives from neurons that are connected to it. +An example of usage with a delay of 0.1 could be: + +.. tab-set-code:: + + .. code-block:: json + + "my_collector": { + "device": "spike_recorder", + "delay": 0.1, + "targetting": { + "strategy": "cell_model", + "cell_models": ["my_cell_model"] + } + } + .. code-block:: python + + config.simulations["my_simulation_name"].devices=dict( + my_collector={ + "device": "spike_recorder", + "delay": 0.1, + "targetting": { + "strategy": "cell_model", + "cell_models": ["my_cell_model"] + } + } + ) + +.. note:: + For this device, the :guilabel:`weight` attribute it is set to 1. + +Add a Multimeter +^^^^^^^^^^^^^^^^ + +This type of device allows you to record analog values from neurons. +Unlike the spike recorder, which collects neuron outputs, this device inspects its +targets at defined time intervals to sample the quantities of interest. +To properly add a multimeter for your target neurons you have to specify: + + * :guilabel:`properties` : List of properties to record in the Nest model. + * :guilabel:`units` : List of properties' units. + +Potential recordable properties are given in the corresponding section of the NEST model documentation. + +.. tab-set-code:: + + .. code-block:: json + + "my_sampler": { + "device": "multimeter", + "delay": 0.1, + "properties": ["V_m"], + "units": ["mV"], + "targetting": { + "strategy": "cell_model", + "cell_models": ["my_cell_model"] + } + } + .. code-block:: python + + config.simulations["my_simulation_name"].devices=dict( + my_sampler={ + "device": "multimeter", + "delay": 0.1, + "properties": ["V_m"], + "units": ["mV"], + "targetting": { + "strategy": "cell_model", + "cell_models": ["my_cell_model"] + } + } + ) + +In this example we add a multimeter to sample the membrane voltage of ``my_cell_model``. + +.. note:: + For this device, the :guilabel:`weight` attribute it is set to 1. \ No newline at end of file diff --git a/docs/simulation/neuron.rst b/docs/simulation/neuron.rst new file mode 100644 index 000000000..9a3f164fd --- /dev/null +++ b/docs/simulation/neuron.rst @@ -0,0 +1,34 @@ +##################### +Simulate using NEURON +##################### + +NEURON is a simulator tool used in the computational neuroscience community to model and study the dynamics +of multicomportamental neurons. + +This simulator must be installed as a dependency when installing the `bsb-neuron `_ +package. If you are installing NEURON separately, please refer to the official installation +`documentation `_ for guidance. + +The simulation block contains all the necessary components to run the simulation. +In the configuration, you will need to specify a name and duration (in milliseconds). +For example, the following creates a simulation named ``my_simulation_name`` with a duration of 1 second: + +.. tab-set-code:: + + .. code-block:: json + + "simulations": { + "my_simulation_name": { + "simulator": "neuron", + "duration": 1000, + } + + .. code-block:: python + + + config.simulations.add("my_simulation_name", + simulator="neuron", + duration=1000, + ) + + diff --git a/docs/simulation/simulation-toc.rst b/docs/simulation/simulation-toc.rst index 27cd2daf1..b37cdc36c 100644 --- a/docs/simulation/simulation-toc.rst +++ b/docs/simulation/simulation-toc.rst @@ -1,5 +1,11 @@ +Simulation +========== + .. toctree:: :maxdepth: 2 :caption: Simulation - simulation + intro + nest + neuron + arbor diff --git a/docs/simulation/simulation.rst b/docs/simulation/simulation.rst deleted file mode 100644 index 6858d9da5..000000000 --- a/docs/simulation/simulation.rst +++ /dev/null @@ -1,318 +0,0 @@ -.. _simulations: - -################### -Simulating networks -################### - -Simulations can be run through the CLI: - -.. code-block:: bash - - bsb simulate my_network.hdf5 my_sim_name - -or through the ``bsb`` library for more -control. When using the CLI, the framework sets up a "hands off" simulation workflow: - -* Read the network file -* Read the simulation configuration -* Translate the simulation configuration to the simulator -* Create all cells, connections and devices -* Run the simulation -* Collect all the output - -When you use the library, you can set up more complex workflows, such as parameter sweeps: - -.. literalinclude:: ../../examples/simulation/parameter_sweep.py - :language: python - -.. rubric:: Parallel simulations - -To parallelize any BSB task prepend the MPI command in front of the BSB CLI command, or -the Python script command: - -.. code-block:: bash - - mpirun -n 4 bsb simulate my_network.hdf5 my_sim_name - mpirun -n 4 python my_simulation_script.py - -Where ``n`` is the number of parallel nodes you'd like to use. - -============= -Configuration -============= - -Each simulation config block needs to specify which :guilabel:`simulator` they use. Valid -values are ``arbor``, ``nest`` or ``neuron``. Also included in the top level block are the -:guilabel:`duration`, :guilabel:`resolution` and :guilabel:`temperature` attributes: - -.. code-block:: json - - { - "simulations": { - "my_arbor_sim": { - "simulator": "arbor", - "duration": 2000, - "resolution": 0.025, - "temperature": 32, - "cell_models": { - - }, - "connection_models": { - - }, - "devices": { - - } - } - } - } - -The :guilabel:`cell_models` are the simulator specific representations of the network's -:class:`cell types <.cell_types.CellType>`, the :guilabel:`connection_models` of the -network's :class:`connectivity types <.connectivity.strategy.ConnectionStrategy>` and the -:guilabel:`devices` define the experimental setup (such as input stimuli and recorders). -All of the above is simulation backend specific and is covered per simulator below. - -===== -Arbor -===== - -Cell models ------------ - -The keys given in the :guilabel:`cell_models` should correspond to a ``cell type`` in the -network. If a certain ``cell type`` does not have a corresponding ``cell model`` then no -cells of that type will be instantiated in the network. Cell models in Arbor should refer -to importable ``arborize`` cell models. The Arborize model's ``.cable_cell`` factory will -be called to produce cell instances of the model: - -.. code-block:: json - - { - "cell_models": { - "cell_type_A": { - "model": "my.models.ModelA" - }, - "afferent_to_A": { - "relay": true - } - } - } - -.. note:: - - *Relays* will be represented as ``spike_source_cells`` which can, through the connectome - relay signals of other relays or devices. ``spike_source_cells`` cannot be the target of - connections in Arbor, and the framework targets the targets of a relay instead, until - only ``cable_cells`` are targeted. - -Connection models ------------------ - -todo: doc - -.. code-block:: json - - { - "connection_models": { - "aff_to_A": { - "weight": 0.1, - "delay": 0.1 - } - } - } - -Devices -------- - -``spike_generator`` and ``probes``: - -.. code-block:: json - - { - "devices": { - "input_stimulus": { - "device": "spike_generator", - "explicit_schedule": { - "times": [1,2,3] - }, - "targetting": "cell_type", - "cell_types": ["mossy_fibers"] - }, - "all_cell_recorder": { - "targetting": "representatives", - "device": "probe", - "probe_type": "membrane_voltage", - "where": "(uniform (all) 0 9 0)" - } - } - } - -todo: doc & link to targetting - -==== -NEST -==== - -.. rubric:: Additional root attributes: - -* ``modules``: list of NEST extension modules to be installed. - -.. code-block:: json - - { - "simulations": { - "first_simulation": { - "simulator": "nest", - "duration": 1000, - "resolution": 1.0, - "modules": ["cerebmodule"], - - "cell_models": { - - }, - "connection_models": { - - }, - "devices": { - - } - }, - "second_simulation": { - - } - } - } - -Cell models ------------ -In the ``cell_models`` block, you specify the simulator representation -for each cell type. Each key in the block can have the following attributes: - -* ``model``: NEST neuron model, See the - available models in the - `NEST documentation `_ -* ``constants``: neuron model parameters that are common to the NEST neuron models that - could be used, including: - - * ``t_ref``: refractory period duration [ms] - * ``C_m``: membrane capacitance [pF] - * ``V_th``: threshold potential [mV] - * ``V_reset``: reset potential [mV] - * ``E_L``: leakage potential [mV] - -Example -~~~~~~~ -Configuration example for a cerebellar Golgi cell. In the ``eglif_cond_alpha_multisyn`` -neuron model, the 3 receptors are associated to synapses from glomeruli, Golgi cells and -Granule cells, respectively. - -.. code-block:: json - - { - "cell_models": { - "golgi_cell": { - "constants": { - "t_ref": 2.0, - "C_m": 145.0, - "V_th": -55.0, - "V_reset": -75.0, - "E_L": -62.0 - } - } - } - } - -Connection models ------------------ - -Devices -------- - -====== -NEURON -====== - - -Cell models ------------ - -By default the NEURON adapter uses an ``ArborizedCellModel``, which loads -external ``arborize`` definition to instantiate cells. - -.. code-block:: json - - { - "cell_models": { - "cell_type_A": { - "model": "dbbs_models.GranuleCell" - }, - "cell_type_B": { - "model": "dbbs_models.PurkinjeCell" - } - } - } - -This example dictates that during simulation setup, any member of -``cell_type_A`` should be created by importing and using -``dbbs_models.GranuleCell``. Documentation incomplete, see ``arborize`` docs ad -interim. - -Connection models ------------------ - -Once more the connection models are predefined inside of ``arborize`` and they -can be referenced by name: - -.. code-block:: json - - { - "connection_models": { - "A_to_B": { - "synapses": ["AMPA", "NMDA"] - } - } - } - -Devices -------- - -Devices send input, or record output. - -Here we'll place a spike generator and a voltage clamp: - -.. code-block:: json - - { - "devices": { - "stimulus": { - "device": "spike_generator", - "targetting": { - "strategy": "cell_model", - "cell_models": ["cell_type_A"] - }, - "synapses": ["AMPA"], - "start": 500, - "number": 10, - "interval": 10, - "noise": true - }, - "voltage_clamp": { - "device": "voltage_clamp", - "targetting": { - "strategy": "cell_model", - "cell_models": ["cell_type_A"] - "count": 1, - }, - "location": { - "strategy": "soma" - }, - "parameters": { - "delay": 0, - "duration": 1000, - "after": 0, - "voltage": -63 - } - } - } - } diff --git a/docs/topology/intro.rst b/docs/topology/intro.rst index de5105735..374054c29 100644 --- a/docs/topology/intro.rst +++ b/docs/topology/intro.rst @@ -6,9 +6,9 @@ Layouts ======= The topology module allows you to make abstract descriptions of the spatial layout of -pieces of the region you are modelling. :class:`Partitions -<.topology.partition.Partition>` define shapes such as layers, cubes, spheres, and meshes. -:class:`Regions <.topology.region.Region>` put partitions together by arranging them +pieces of the region you are modelling. :doc:`Partitions +` define shapes such as layers, cubes, spheres, and meshes. +:doc:`Regions ` put partitions together by arranging them hierarchically. The topology is formed as a tree of regions, that end downstream in a terminal set of partitions. @@ -31,11 +31,11 @@ Example :figclass: only-dark :align: center -The root :class:`Group <.topology.region.RegionGroup>` receives the network X, Y, and Z. A +The root ``Group`` receives the network X, Y, and Z. A ``Group`` is an inert region and simply passes the network boundaries on to its children. -The :class:`~.topology.partition.Voxels` loads its voxels, and positions them absolutely, +The :ref:`Voxels ` loads its voxels, and positions them absolutely, ignoring the network boundaries. The :class:`~.topology.region.Stack` passes the volume on -to the :class:`Layers <.topology.partition.Layer>` who fill up the space and occupy their +to the :ref:`Layers ` who fill up the space and occupy their thickness. They return their layout up to the parent ``Stack``, who in turn proposes translations to the layers in order to stack them on top of the other. The end result is stack beginning from the network starting corner, with 2 layers as large as the network, diff --git a/docs/topology/partitions.rst b/docs/topology/partitions.rst index 1d20dff17..c1f35d7c6 100644 --- a/docs/topology/partitions.rst +++ b/docs/topology/partitions.rst @@ -2,6 +2,16 @@ Partitions ########## +Partitions contain shape descriptions used to define the spatial layout of the network. +These descriptions can be represented as layers, meshes and voxelsets. +In the BSB the following two partitions are implemented: + +* :ref:`Rhomboid ` +* :ref:`Layers ` +* :ref:`Voxelized volumes `. + +.. _rhomboid-partition: + ======== Rhomboid ======== @@ -17,6 +27,7 @@ Parameters * ``origin``: Coordinate of the origin of the partition. * ``can_move``: Boolean flag to authorize the translation of the partition. +.. _layer-partition: ===== Layer @@ -48,7 +59,7 @@ Voxels :class:`Voxel partitions <.topology.partition.Voxels>` are an irregular shape in space, described by a group of rhomboids, called a :class:`~.voxels.VoxelSet`. Most brain atlases scan the brain in a 3D grid and publish their data in the same way, usually in the `Nearly -Raw Raster Data format, NRRD `_. +Raw Raster Data format, NRRD `_. In general, whenever you have a voxelized 3D image, a ``Voxels`` partition will help you define the shapes contained within. diff --git a/docs/topology/topology-toc.rst b/docs/topology/topology-toc.rst index 16345f8e3..ea019f85d 100644 --- a/docs/topology/topology-toc.rst +++ b/docs/topology/topology-toc.rst @@ -1,3 +1,6 @@ +Topology +======== + .. toctree:: :maxdepth: 2 :caption: Topology diff --git a/examples/cells/label_cells.py b/examples/cells/label_cells.py new file mode 100644 index 000000000..063af40ef --- /dev/null +++ b/examples/cells/label_cells.py @@ -0,0 +1,32 @@ +# Create an After placement hook that will label cells according to their position +import numpy as np + +from bsb import AfterPlacementHook, config, refs, types + + +class LabelCellA(AfterPlacementHook): + """ + Subdivide a cell population into 2 subpopulations based on their + position along a provided axis + """ + + cell_type: str = config.ref(refs.cell_type_ref, required=True) + """Reference to the cell type.""" + + axis: int = config.attr(type=types.int(min=0, max=2), default=0) + """Axis along which to subdivide the population.""" + + def postprocess(self): + # Load the cell type positions + ps = self.scaffold.get_placement_set(self.cell_type) + cell_positions = ps.load_positions() + + # create a filter that split the cells according to + # the mean of their positions along the chosen axis + mean_pos = np.mean(cell_positions[:, self.axis]) + subpopulation_1 = np.asarray(cell_positions >= mean_pos, dtype=int) + subpopulation_2 = np.asarray(cell_positions < mean_pos, dtype=int) + + # set the cell label according to the filter + ps.label(labels=["cell_A_type_1"], cells=subpopulation_1) + ps.label(labels=["cell_A_type_2"], cells=subpopulation_2) diff --git a/examples/morphologies/usage.py b/examples/morphologies/usage.py index 8b1d93c06..1b5b0d481 100644 --- a/examples/morphologies/usage.py +++ b/examples/morphologies/usage.py @@ -1,3 +1,5 @@ +import numpy as np + from bsb import from_storage # Load the morphology @@ -13,7 +15,7 @@ first_quarter = np.arange(len(special_branch)) < len(special_branch) / 4 special_branch.label(["initial_segment"], first_quarter) # Assign random data as the `random_data` property to the branch -special_branch.set_property(random_data=np.random.random(len(special_branch))) +special_branch.set_properties(random_data=np.random.random(len(special_branch))) print(f"Random data for each point:", special_branch.random_data) network.morphologies.save("processed_morphology", morpho) diff --git a/examples/networks/access_config.py b/examples/networks/access_config.py deleted file mode 100644 index 595287570..000000000 --- a/examples/networks/access_config.py +++ /dev/null @@ -1,12 +0,0 @@ -# How to access the configuration of a network -from bsb import from_storage - -network = from_storage("network.hdf5") -print("My network was configured with", network.configuration) -print("My network has", len(network.configuration.cell_types), "cell types") -( - # But to avoid some needless typing and repetition, - network.cell_types is network.configuration.cell_types - and network.placement is network.configuration.placement - and "so on" -) diff --git a/examples/networks/access_placement.py b/examples/networks/access_placement.py deleted file mode 100644 index 59983700b..000000000 --- a/examples/networks/access_placement.py +++ /dev/null @@ -1,12 +0,0 @@ -# How to access and work with the placement data of a network -import numpy as np - -from bsb import from_storage - -network = from_storage("network.hdf5") -for cell_type in network.cell_types: - ps = cell_type.get_placement_set() - pos = ps.load_positions() - print(len(pos), cell_type.name, "placed") - # The positions are an (Nx3) numpy array - print("The median cell is located at", np.median(pos, axis=0)) diff --git a/examples/networks/create_default.py b/examples/networks/create_default.py deleted file mode 100644 index 934ad8776..000000000 --- a/examples/networks/create_default.py +++ /dev/null @@ -1,5 +0,0 @@ -# Create a network with the default configuration. -from bsb import Scaffold - -network = Scaffold() -network.compile() diff --git a/examples/networks/create_from_cfg.py b/examples/networks/create_from_cfg.py deleted file mode 100644 index 18f849ade..000000000 --- a/examples/networks/create_from_cfg.py +++ /dev/null @@ -1,18 +0,0 @@ -# Create a network from a custom configuration object. -from bsb import Configuration, Scaffold - -cfg = Configuration() -# Let's set a file name for the network -cfg.storage.root = "my_network.hdf5" -# And add a cell type -cfg.cell_types.add( - "hero_cells", - spatial=dict( - radius=2, - density=1e-3, - ), -) - -# After customizing your configuration, create a network from it. -network = Scaffold(cfg) -network.compile() diff --git a/examples/networks/load.py b/examples/networks/load.py deleted file mode 100644 index 04fb87a9c..000000000 --- a/examples/networks/load.py +++ /dev/null @@ -1,4 +0,0 @@ -# Example that shows how to load a network that was previously created -from bsb import from_storage - -network = from_storage("my_network.hdf5") diff --git a/examples/networks/reconfiguring.py b/examples/networks/reconfiguring.py deleted file mode 100644 index a6cfc05a0..000000000 --- a/examples/networks/reconfiguring.py +++ /dev/null @@ -1,6 +0,0 @@ -# Example that shows how to overwrite the configuration inside of an existing network -from bsb import Configuration, from_storage - -network = from_storage("network.hdf5") -new_config = Configuration.default() -network.storage.store_active_config(new_config) diff --git a/examples/plotting/plotting_with_branch_colors.py b/examples/plotting/plotting_with_branch_colors.py index 379763c90..39b1cdc93 100644 --- a/examples/plotting/plotting_with_branch_colors.py +++ b/examples/plotting/plotting_with_branch_colors.py @@ -1,6 +1,39 @@ -from bsb_plot import plot_morphology +# Load and display a morphology from a compiled network +import numpy as np +from matplotlib.pylab import plt -from bsb import parse_morphology_file +from bsb import from_storage -morphology = parse_morphology_file("cell.swc") -plot_morphology(morphology, color={"soma": "red", "dendrites": "blue", "axon": "green"}) +scaffold = from_storage("my_circuit.hdf5") +cell_type_name = "my_cell_type" +ps = scaffold.get_placement_set(cell_type_name) + +# We will only display one cell here +cell_id = 14 # cell id to display +morpho = ps.load_morphologies().get(cell_id) +rotation = ps.load_rotations()[cell_id] +offset_position = ps.load_positions()[cell_id] + +# Rotate, translate morphology +morpho.rotate(rotation) +morpho.translate(offset_position) + +# Example of 3D display with matplotlib +fig = plt.figure(figsize=(10, 10)) +ax1 = fig.add_subplot(111, projection="3d") +for branch in morpho.branches: + x, z, y = branch.points.T + # filter labels to use a different color for dendrites and axons + is_axon = np.array( + [ + np.isin(list(branch.labelsets[branch.labels[i]]), ["axon"]).any() + for i in range(len(branch.points)) + ] + ) + ax1.plot(x[~is_axon], y[~is_axon], z[~is_axon], c="blue") + ax1.plot(x[is_axon], y[is_axon], z[is_axon], c="red") +mins = np.min(morpho.points, axis=0) +maxs = np.max(morpho.points, axis=0) +ax1.plot([mins + max(maxs - mins)]) + +plt.show() diff --git a/examples/simulation/nest/repeated_simulations.py b/examples/simulation/nest/repeated_simulations.py index 1d76ce849..b98765a55 100644 --- a/examples/simulation/nest/repeated_simulations.py +++ b/examples/simulation/nest/repeated_simulations.py @@ -1,32 +1,28 @@ -import os +from bsb_nest import NestAdapter from bsb import from_storage network = from_storage("my_network.hdf5") -simulation = network.create_adapter("my_simulation") +simulation = network.get_simulation("my_simulation") +adapter = NestAdapter() for i in range(10): input_rate = i * 10.0 # Clear NEST - adapter.reset() + adapter.reset_kernel() # Set the stimulation rate on the fictitious `my_stimulus` device simulation.devices["my_stimulus"].parameters["rate"] = input_rate # Let the adapter translate the simulation config into # simulator specific instructions - simulation_backend = simulation.prepare() + simulation_backend = adapter.prepare(simulation) # You have free access to the `simulation_backend` here, to tweak # or augment the framework's instructions. # ... - # Let the adapter run the simulation on the backend. - simulation.simulate(simulation_backend) - # Let the adapter collect the simulation output - data_file = simulation.collect_output(simulation_backend) - # Organize the HDF5 data file into your data workflow by tagging it, + # Let the adapter run the simulation and collect the output. + results = adapter.run(simulation)[0] + # Organize the Neo data file into your data workflow by tagging it, # renaming it, moving it, giving it metadata, ... - with h5py.File(data_file, "r") as f: - # Add the used parameters to the file. - f.attrs["stimulation_rate"] = input_rate - - os.rename(data_file, f"experiments/{input_rate}Hz.hdf5") + output_file = f"my_simulation_results_{input_rate}Hz.nio" + results.write(output_file, "ow") diff --git a/examples/tutorials/Stellate.py b/examples/tutorials/Stellate.py new file mode 100644 index 000000000..d473afeaf --- /dev/null +++ b/examples/tutorials/Stellate.py @@ -0,0 +1,179 @@ +from arborize import define_model + +definitionStellate = define_model( + { + "synapse_types": { + "AMPA": { + "mechanism": "AMPA", + "parameters": { + "tau_facil": 10.8, + "tau_rec": 35.1, + "tau_1": 10, + "gmax": 2300, + "U": 0.15, + }, + }, + "NMDA": { + "mechanism": ("NMDA", "stellate"), + "parameters": { + "tau_facil": 5, + "tau_rec": 8, + "tau_1": 1, + "gmax": 10000, + "U": 0.15, + }, + }, + "GABA": { + "mechanism": "GABA", + "parameters": { + "tau_facil": 0, + "tau_rec": 38.7, + "tau_1": 1, + "gmaxA1": 3230, + "U": 0.42, + "Erev": -65, + }, + }, + }, + "cable_types": { + "soma": { + "cable": {"Ra": 110, "cm": 1}, + "ions": { + "na": {"rev_pot": 60}, + "k": {"rev_pot": -84}, + "ca": {"rev_pot": 137.5}, + "h": {"rev_pot": -34}, + }, + "mechanisms": { + "Leak": {"e": -52, "gmax": 3e-05}, + "Nav1_1": {"gbar": 0.2}, + "Cav3_2": {"gcabar": 0.00163912063769}, + "Cav3_3": {"pcabar": 1.615552993e-05}, + "Kir2_3": {"gkbar": 1.093425575e-05}, + "Kv1_1": {"gbar": 0.00107430134923}, + "Kv3_4": {"gkbar": 0.008}, + "Kv4_3": {"gkbar": 0.00404228168138}, + "Kca1_1": {"gbar": 0.00518036298671}, + "Kca2_2": {"gkbar": 0.00054166094878}, + "Cav2_1": {"pcabar": 0.0005}, + "HCN1": {"gbar": 0.00058451678362}, + "cdp5": {"TotalPump": 7e-09}, + }, + }, + "dendrites": {"cable": {}, "ions": {}, "mechanisms": {}}, + "proximal_dendrites": { + "cable": {"Ra": 110, "cm": 1.5}, + "ions": {"k": {"rev_pot": -84}, "ca": {"rev_pot": 137.5}}, + "mechanisms": { + "Leak": {"e": -48, "gmax": 8e-06}, + "Cav3_2": {"gcabar": 0.00070661092763}, + "Cav3_3": {"pcabar": 1.526216781e-05}, + "Kv1_1": {"gbar": 0.0090681056165}, + "Kv4_3": {"gkbar": 0.0026420471354}, + "Kca1_1": {"gbar": 0.00499205404769}, + "Kca2_2": {"gkbar": 3.26194117e-06}, + "Cav2_1": {"pcabar": 0.0008}, + "cdp5": {"TotalPump": 1e-09}, + }, + "synapses": { + "AMPA": { + "mechanism": "AMPA", + "attributes": { + "tau_facil": 10.8, + "tau_rec": 35.1, + "tau_1": 10, + "gmax": 2300, + "U": 0.15, + }, + }, + "NMDA": { + "mechanism": ("NMDA", "stellate"), + "attributes": { + "tau_facil": 5, + "tau_rec": 8, + "tau_1": 1, + "gmax": 10000, + "U": 0.15, + }, + }, + }, + }, + "distal_dendrites": { + "cable": {"Ra": 110, "cm": 1.5}, + "ions": {"k": {"rev_pot": -84}, "ca": {"rev_pot": 137.5}}, + "mechanisms": { + "Leak": {"e": -48, "gmax": 8e-06}, + "Kv1_1": {"gbar": 0.00237825442906}, + "Kca1_1": {"gbar": 0.00226329455766}, + "Kca2_2": {"gkbar": 1.079984416e-05}, + "Cav2_1": {"pcabar": 0.00025}, + "cdp5": {"TotalPump": 1e-09}, + }, + "synapses": { + "AMPA": { + "mechanism": "AMPA", + "attributes": { + "tau_facil": 10.8, + "tau_rec": 35.1, + "tau_1": 10, + "gmax": 2300, + "U": 0.15, + }, + }, + "NMDA": { + "mechanism": ("NMDA", "stellate"), + "attributes": { + "tau_facil": 5, + "tau_rec": 8, + "tau_1": 1, + "gmax": 10000, + "U": 0.15, + }, + }, + }, + }, + "axon": { + "cable": { + "Ra": 110, + "cm": 1, + }, + "ions": { + "na": {"rev_pot": 60}, + "k": {"rev_pot": -84}, + "h": {"rev_pot": -34}, + }, + "mechanisms": { + "Leak": {"e": -48, "gmax": 0.000008}, + "Kv1_1": {"gbar": 0.00271359229578}, + "Nav1_6": {"gbar": 0.00835931586458}, + "Kv3_4": {"gkbar": 0.01153520393521}, + "HCN1": {"gbar": 0.00070017344082}, + "cdp5": {}, + }, + }, + "axon_initial_segment": { + "cable": {"Ra": 110, "cm": 1}, + "ions": { + "na": {"rev_pot": 60}, + "k": {"rev_pot": -84}, + "h": {"rev_pot": -34}, + }, + "mechanisms": { + "Leak": {"e": -48, "gmax": 8e-06}, + "HCN1": {"gbar": 0.00099184971498}, + "Nav1_6": {"gbar": 0.3}, + "Kv1_1": {"gbar": 0.00492841685426}, + "Kv3_4": {"gkbar": 0.03351450571128}, + "Km": {"gkbar": 7.960307413e-05}, + "cdp5": {}, + }, + }, + }, + } +) + +tagsSt = { + 16: ["dendrites", "proximal_dendrites"], + 17: ["dendrites", "distal_dendrites"], + 18: ["axon", "axon_initial_segment"], +} diff --git a/examples/tutorials/analyze_analog_results.py b/examples/tutorials/analyze_analog_results.py new file mode 100644 index 000000000..725d5c5a9 --- /dev/null +++ b/examples/tutorials/analyze_analog_results.py @@ -0,0 +1,44 @@ +from neo import io + +# Read simulation data +my_file_name = "simulation-results/NAME_OF_YOUR_NEO_FILE.nio" +sim = io.NixIO(my_file_name, mode="ro") +block = sim.read_all_blocks()[0] +segment = block.segments[0] +my_signals = segment.analogsignals + +import matplotlib.pylab as plt # you might have to pip install matplotlib + +has_plotted_neuron = False # We will only plot one neuron recording here +has_plotted_synapse = False # We will only plot one synapse recording here +for signal in my_signals: + name_device = signal.name # Retrieve the name of the device + cell_id = signal.annotations["cell_id"] # Retrieve the cell ID + # If the signal comes from a synapse recorder, + # and if we did not plot a synapse recording yet + if name_device == "synapses_rec" and not has_plotted_synapse: + synapse_type = signal.annotations["synapse_type"] + out_filename = ( + f"simulation-results/{name_device}_{str(cell_id)}_{synapse_type}.png" + ) + has_plotted_synapse = True + # If the signal comes from a voltage recorder, + # and if we did not plot a neuron recording yet + elif name_device == "vrecorder" and not has_plotted_neuron: + out_filename = f"simulation-results/{name_device}_{str(cell_id)}.png" + has_plotted_neuron = True + # If we plotted both types of recording, we exit the loop + elif has_plotted_neuron and has_plotted_synapse: + break + # We still have some plotting to do + else: + continue + + sim_time = signal.times # Time points of simulation recording + + # Plot and save figure to file in images folder + plt.figure() + plt.xlabel(f"Time ({signal.times.units.dimensionality.string})") + plt.ylabel(f"{signal.units.dimensionality.string}") + plt.plot(sim_time, signal.magnitude) + plt.savefig(out_filename, dpi=200) diff --git a/examples/tutorials/analyze_spike_results.py b/examples/tutorials/analyze_spike_results.py new file mode 100644 index 000000000..d48eef027 --- /dev/null +++ b/examples/tutorials/analyze_spike_results.py @@ -0,0 +1,23 @@ +from neo import io + +# Read simulation data +my_file_name = "simulation-results/NAME_OF_YOUR_NEO_FILE.nio" +sim = io.NixIO(my_file_name, mode="ro") +block = sim.read_all_blocks()[0] +segment = block.segments[0] +my_spiketrains = segment.spiketrains + +import matplotlib.pylab as plt # you might have to pip install matplotlib + +nb_spike_trains = len(my_spiketrains) +fig, ax = plt.subplots(nb_spike_trains, sharex=True, figsize=(10, nb_spike_trains * 6)) +for i, spike_t in enumerate(my_spiketrains): # Iterate over all spike trains + name = spike_t.annotations["device"] # Retrieve the device name + cell_list = spike_t.annotations["senders"] # Retrieve the ids of the cells spiking + spike_times = spike_t.magnitude # Retrieve the spike times + ax[i].scatter(spike_times, cell_list, c=f"C{i}") + ax[i].set_xlabel(f"Time ({spike_t.times.units.dimensionality.string})") + ax[i].set_ylabel(f"Neuron ID") + ax[i].set_title(f"Spikes from {name}") +plt.tight_layout() +plt.savefig("simulation-results/raster_plot.png", dpi=200) diff --git a/examples/tutorials/dist_connection.py b/examples/tutorials/dist_connection.py new file mode 100644 index 000000000..cea0018e2 --- /dev/null +++ b/examples/tutorials/dist_connection.py @@ -0,0 +1,44 @@ +import numpy as np + +from bsb import ConnectionStrategy, config, types + + +@config.node +class DistanceConnectivity(ConnectionStrategy): + """ + Connect cells based on the distance between their respective somas. + The algorithm will search for potential targets surrounding the presynaptic cells + in a sphere with a given radius. + """ + + radius: float = config.attr(type=types.float(min=0), required=True) + """Radius of the sphere surrounding the presynaptic cell to filter potential + postsynaptic targets""" + + def connect(self, presyn_collection, postsyn_collection): + # For each presynaptic placement set + for pre_ps in presyn_collection.placement: + # Load all presynaptic positions + presyn_positions = pre_ps.load_positions() + # For each postsynaptic placement set + for post_ps in postsyn_collection.placement: + # Load all postsynaptic positions + postsyn_positions = post_ps.load_positions() + + # For each presynaptic cell to connect + for j, pre_position in enumerate(presyn_positions): + # We measure the distance of each postsyn cell with respect to the + # presyn cell + dist = np.linalg.norm(postsyn_positions - pre_position, axis=1) + # We keep only the ids that are within the sphere radius + ids_to_keep = np.where(dist <= self.radius)[0] + nb_connections = len(ids_to_keep) + + # We create two connection location array and set their + # neuron ids. + pre_locs = np.full((nb_connections, 3), -1, dtype=int) + pre_locs[:, 0] = j + post_locs = np.full((nb_connections, 3), -1, dtype=int) + post_locs[:, 0] = ids_to_keep + + self.connect_cells(pre_ps, post_ps, pre_locs, post_locs) diff --git a/examples/tutorials/distrib_placement.py b/examples/tutorials/distrib_placement.py new file mode 100644 index 000000000..a4b04f43f --- /dev/null +++ b/examples/tutorials/distrib_placement.py @@ -0,0 +1,89 @@ +import numpy as np + +from bsb import PlacementStrategy, config, types + + +@config.node +class DistributionPlacement(PlacementStrategy): + """ + Place cells based on a scipy distribution along a specified axis. + """ + + distribution = config.attr(type=types.distribution(), required=True) + """Scipy distribution to apply to the cell coordinate along the axis""" + axis: int = config.attr(type=types.int(min=0, max=2), required=False, default=2) + """Axis along which to apply the distribution (i.e. x, y or z)""" + direction: str = config.attr( + type=types.in_(["positive", "negative"]), required=False, default="positive" + ) + """Specify if the distribution is applied along positive or negative axis direction""" + + def draw_interval(self, n, lower, upper): + """ + Apply an acceptance-rejection method to n points according to the provided + interval of the distribution. + This method draws n random values and returns the number which value is + less than the probability to fall in the provided interval boundaries. + + :param int n: Number of points to draw + :param float lower: Lower bound of the interval within [0, 1] + :param float upper: Upper bound of the interval within [0, 1] + :return: Number of points passing the acceptance-rejection test. + :rtype: int + """ + # Extract the interval of values that can be generated by the distribution + # Since some distribution values can reach infinite, we clamp the interval + # so that the probability to be out of this interval is 1e-9 + distrib_interval = self.distribution.definition_interval(1e-9) + # Retrieve the value at the lower and upper bound ratios of the + # distribution's interval + value_upper = upper * np.diff(distrib_interval) + distrib_interval[0] + value_lower = lower * np.diff(distrib_interval) + distrib_interval[0] + # Retrieve the probability of a value to be lower than the upper value + selected_lt = self.distribution.cdf(value_upper) + # Retrieve the probability of a value to be greater than the lower value + selected_gt = self.distribution.sf(value_lower) + # Apply the acceptance-rejection method: a random point within [0,1] is + # accepted if it is lower than the probability to be less than the upper + # value and the probability to be greater than the lower value + random_numbers = np.random.rand(n) + selected = random_numbers <= selected_lt * selected_gt + # Returns the number of point passing the test + return np.count_nonzero(selected) + + def place(self, chunk, indicators): + # For each placement indicator + for name_indic, indicator in indicators.items(): + # Prepare an array to store positions + all_positions = np.empty((0, 3)) + # For each partitions + for p in indicator.partitions: + # Guess the number of cells to place within the partition. + num_to_place = indicator.guess(voxels=p.to_voxels()) + # Extract the size of the partition + partition_size = p._data.mdc - p._data.ldc + # Retrieve the ratio interval occupied by the current Chunk along the axis + chunk_borders = np.array([chunk.ldc, chunk.mdc]) + ratios = (chunk_borders - p._data.ldc) / partition_size + bounds = ratios[:, self.axis] + if self.direction == "negative": + # If the direction on which to apply the distribution is inverted, + # then the ratio interval should be inverted too. + bounds = 1 - bounds + bounds = bounds[::-1] + + # Draw according to the distribution the random number of cells to + # place in the Chunk + num_selected = self.draw_interval( + num_to_place, lower=bounds[0], upper=bounds[1] + ) + # ratio of area occupied by the chunk along the two other dimensions + ratio_area = np.diff(np.delete(ratios, self.axis, axis=1), axis=0) + num_selected *= np.prod(ratio_area) + if num_selected > 0: + # Assign a random position to the cells within this Chunk + positions = ( + np.random.rand(num_selected, 3) * chunk.dimensions + chunk.ldc + ) + all_positions = np.concatenate([all_positions, positions]) + self.place_cells(indicator, all_positions, chunk) diff --git a/examples/tutorials/getting_started.py b/examples/tutorials/getting_started.py new file mode 100644 index 000000000..7d3ea376f --- /dev/null +++ b/examples/tutorials/getting_started.py @@ -0,0 +1,52 @@ +import bsb.options +from bsb import Configuration, Scaffold + +bsb.options.verbosity = 3 +config = Configuration.default(storage={"engine": "hdf5", "root": "network.hdf5"}) + +config.network.x = 200.0 +config.network.y = 200.0 +config.network.z = 200.0 + +config.partitions.add("base_layer", thickness=100) +config.partitions.add("top_layer", thickness=100) +config.regions.add( + "brain_region", + type="stack", + children=[ + "base_layer", + "top_layer", + ], +) + +config.cell_types.add( + "base_type", + spatial=dict( + radius=2.5, + density=3.9e-4, + ), +) +config.cell_types.add("top_type", spatial=dict(radius=7, count=40)) + +config.placement.add( + "base_placement", + strategy="bsb.placement.RandomPlacement", + cell_types=["base_type"], + partitions=["base_layer"], +) +config.placement.add( + "top_placement", + strategy="bsb.placement.RandomPlacement", + cell_types=["top_type"], + partitions=["top_layer"], +) + +config.connectivity.add( + "A_to_B", + strategy="bsb.connectivity.AllToAll", + presynaptic=dict(cell_types=["base_type"]), + postsynaptic=dict(cell_types=["top_type"]), +) + +scaffold = Scaffold(config) +scaffold.compile(clear=True) diff --git a/examples/tutorials/include_morphos.py b/examples/tutorials/include_morphos.py new file mode 100644 index 000000000..65110fa05 --- /dev/null +++ b/examples/tutorials/include_morphos.py @@ -0,0 +1,67 @@ +import bsb.options +from bsb import Configuration, Scaffold + +bsb.options.verbosity = 3 +config = Configuration.default(storage={"engine": "hdf5", "root": "network.hdf5"}) + +config.network.x = 200.0 +config.network.y = 200.0 +config.network.z = 200.0 + +config.partitions.add("base_layer", thickness=100) +config.partitions.add("top_layer", thickness=100) +config.regions.add( + "brain_region", + type="stack", + children=[ + "base_layer", + "top_layer", + ], +) + +config.morphologies = [ + "neuron_A.swc", + dict(name="neuron_B", file="neuron2.swc"), +] + +config.cell_types.add( + "base_type", + spatial=dict( + radius=2.5, + density=3.9e-4, + morphologies=["neuron_A"], + ), +) + + +config.cell_types.add( + "top_type", + spatial=dict( + radius=7, + count=10, + morphologies=["neuron_B"], + ), +) + +config.placement.add( + "base_placement", + strategy="bsb.placement.RandomPlacement", + cell_types=["base_type"], + partitions=["base_layer"], +) +config.placement.add( + "top_placement", + strategy="bsb.placement.RandomPlacement", + cell_types=["top_type"], + partitions=["top_layer"], +) + +config.connectivity.add( + "A_to_B", + strategy="bsb.connectivity.VoxelIntersection", + presynaptic=dict(cell_types=["base_type"]), + postsynaptic=dict(cell_types=["top_type"]), +) + +scaffold = Scaffold(config) +scaffold.compile(clear=True) diff --git a/examples/tutorials/load_data.py b/examples/tutorials/load_data.py new file mode 100644 index 000000000..455937449 --- /dev/null +++ b/examples/tutorials/load_data.py @@ -0,0 +1,25 @@ +import numpy as np + +from bsb import from_storage + +scaffold = from_storage("network.hdf5") + +# Access the Scaffold's configuration +config = scaffold.configuration +print(f"My network was configured with {config}") +# scaffold.cell_types corresponds to scaffold.configuration.cell_types +print(f"My network has {len(scaffold.cell_types)} cell types") + +# Load placement information from the storage. +for type_name, cell_type in scaffold.cell_types.items(): + ps = cell_type.get_placement_set() + pos = ps.load_positions() + print(f"{len(pos)} {type_name} placed") + # The positions are a (Nx3) numpy array + print("The median cell is located at", np.median(pos, axis=0)) + +# Load the connection information from the storage +# for a specific connection set +cs = scaffold.get_connectivity_set("A_to_B") +for src_locs, dest_locs in cs.load_connections(): + print(f"Cell id: {src_locs[0]} connects to cell {dest_locs[0]}") diff --git a/examples/tutorials/nest-simulation.py b/examples/tutorials/nest-simulation.py new file mode 100644 index 000000000..aae92ceb0 --- /dev/null +++ b/examples/tutorials/nest-simulation.py @@ -0,0 +1,48 @@ +import bsb.options +from bsb import from_storage + +bsb.options.verbosity = 3 + +scaffold = from_storage("network.hdf5") +config = scaffold.configuration + +config.simulations.add( + "basal_activity", + simulator="nest", + resolution=0.1, + duration=5000, + cell_models={}, + connection_models={}, + devices={}, +) +config.simulations["basal_activity"].cell_models = dict( + base_type={"model": "iaf_cond_alpha"}, + top_type={"model": "iaf_cond_alpha", "constants": {"t_ref": 1.5, "V_m": -62.0}}, +) + +config.simulations["basal_activity"].connection_models = dict( + A_to_B=dict(synapse=dict(model="static_synapse", weight=100, delay=1)) +) + +config.simulations["basal_activity"].devices = dict( + general_noise=dict( + device="poisson_generator", + rate=20, + targetting={"strategy": "cell_model", "cell_models": ["base_type"]}, + weight=40, + delay=1, + ), + base_layer_record=dict( + device="spike_recorder", + delay=0.1, + targetting={"strategy": "cell_model", "cell_models": ["base_type"]}, + ), + top_layer_record=dict( + device="spike_recorder", + delay=0.1, + targetting={"strategy": "cell_model", "cell_models": ["top_type"]}, + ), +) + +result = scaffold.run_simulation("basal_activity") +result.write("simulation-results/basal_activity.nio", "ow") diff --git a/examples/tutorials/neuron-simulation.py b/examples/tutorials/neuron-simulation.py new file mode 100644 index 000000000..d4a762455 --- /dev/null +++ b/examples/tutorials/neuron-simulation.py @@ -0,0 +1,113 @@ +import bsb.options +from bsb import Configuration, Scaffold + +bsb.options.verbosity = 3 +config = Configuration.default(storage={"engine": "hdf5", "root": "my_network.hdf5"}) + +config.network.x = 100.0 +config.network.y = 200.0 +config.network.z = 300.0 +config.network.chunk_size = [100, 100, 100] + +config.partitions.add("stellate_layer", thickness=100) + +config.regions.add( + "brain_region", + type="stack", + children=["stellate_layer"], +) + +config.morphologies = [ + dict( + file="StellateCell.swc", + parser={ + "tags": { + "16": ["dendrites", "proximal_dendrites"], + "17": ["dendrites", "distal_dendrites"], + "18": ["axon", "axon_initial_segment"], + } + }, + ) +] + +config.cell_types.add( + "stellate_cell", + spatial=dict( + radius=4, + density=5e-6, + morphologies=["StellateCell"], + ), +) + +config.placement.add( + "stellate_placement", + strategy="bsb.placement.RandomPlacement", + cell_types=["stellate_cell"], + partitions=["stellate_layer"], +) + +config.connectivity.add( + "stellate_to_stellate", + strategy="bsb.connectivity.VoxelIntersection", + presynaptic=dict(cell_types=["stellate_cell"], morphology_labels=["axon"]), + postsynaptic=dict(cell_types=["stellate_cell"], morphology_labels=["dendites"]), +) + +config.simulations.add( + "neuronsim", + simulator="neuron", + resolution=0.025, + duration=100, + temperature=32, +) +config.simulations["neuronsim"].cell_models = dict( + stellate_cell=dict(model="Stellate.definitionStellate", parameters=[]) +) +config.simulations["neuronsim"].connection_models = dict( + stellate_to_stellate=dict( + synapses=[ + { + "synapse": "GABA", + "weight": 0.001, + "delay": 1, + } + ] + ) +) +config.simulations["neuronsim"].devices = dict( + spike_generator=dict( + device="spike_generator", + start=9, + number=1, + interval=0, + noise=0, + delay=1, + weight=0.01, + targetting={"strategy": "by_id", "ids": {"stellate_cell": [0]}}, + locations={"strategy": "branch", "labels": ["dendrites"]}, + synapses=["AMPA", "NMDA"], + ), + vrecorder=dict( + device="voltage_recorder", + targetting={ + "strategy": "sphere", + "radius": 100, + "origin": [50, 100, 150], + "cell_models": ["stellate_cell"], + }, + ), + synapses_rec=dict( + device="synapse_recorder", + synapse_types=["AMPA", "NMDA"], + targetting={ + "strategy": "sphere", + "radius": 100, + "origin": [50, 100, 150], + "cell_models": ["stellate_cell"], + }, + locations={"strategy": "branch", "labels": ["dendrites"]}, + ), +) + +scaffold = Scaffold(config) +scaffold.compile(clear=True) diff --git a/pyproject.toml b/pyproject.toml index 31d034a7a..90eeb0923 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -70,6 +70,7 @@ test = [ "bsb-arbor~=4.0", "bsb-hdf5~=4.0", "bsb-test~=4.2", + "bsb-json~=4.2", "coverage~=7.3", ] docs = [ diff --git a/tests/test_projects.py b/tests/test_projects.py index b046fc0f7..17ff93e9d 100644 --- a/tests/test_projects.py +++ b/tests/test_projects.py @@ -1,5 +1,68 @@ +import os +import shutil +import subprocess import unittest +from bsb_test import skip_parallel + +from bsb.config import get_configuration_template, parse_configuration_file + class TestProjects(unittest.TestCase): - pass + @skip_parallel + def test_bsb_new(self): + message = subprocess.check_output( + "bsb new test_bsb_new --quickstart --json".split() + ) + self.assertEqual( + message.split(b"\n")[-2], b"Created 'test_bsb_new' project structure." + ) + for folder in os.listdir(): + if folder == "test_bsb_new": + self.assertTrue(os.path.isdir(folder)) + files = os.listdir(folder) + self.assertEqual(len(files), 4) + parsed_files = 0 + for filename in files: + if filename.endswith(".json"): + self.assertTrue(filename == "network_configuration.json") + cfg_copied = parse_configuration_file( + get_configuration_template("starting_example.json")[0] + ) + cfg = parse_configuration_file(os.path.join(folder, filename)) + self.assertEqual(cfg_copied.__tree__(), cfg.__tree__()) + parsed_files += 1 + elif filename.endswith(".py"): + parsed_files += 1 + elif filename.endswith(".toml"): + self.assertEqual(filename, "pyproject.toml") + parsed_files += 1 + + self.assertEqual(parsed_files, 4) + shutil.rmtree(folder) + break + else: + self.fail("The project folder was not created properly") + + @skip_parallel + def test_bsb_new_override(self): + folder = os.path.abspath("test_bsb_new") + command = "bsb new test_bsb_new --quickstart --json" + # Create the project folder + message = subprocess.check_output(command.split()) + self.assertEqual( + message.split(b"\n")[-2], b"Created 'test_bsb_new' project structure." + ) + # Cannot create folder if it exists already + message = subprocess.check_output(command.split()) + self.assertEqual( + message.split(b"\n")[-2], + f"Could not create '{folder}', directory exists.".encode(), + ) + # Force recreate the project folder + command += " --exists" + message = subprocess.check_output(command.split()) + self.assertEqual( + message.split(b"\n")[-2], b"Created 'test_bsb_new' project structure." + ) + shutil.rmtree(folder) From 553f8b3684f3eada58e5a351ad2005645890c9e6 Mon Sep 17 00:00:00 2001 From: drodarie Date: Tue, 7 Jan 2025 09:15:18 +0100 Subject: [PATCH 2/2] fix: bump bsb-hdf5 version --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 90eeb0923..0cd6cc083 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -68,7 +68,7 @@ parallel = [ ] test = [ "bsb-arbor~=4.0", - "bsb-hdf5~=4.0", + "bsb-hdf5~=5.0", "bsb-test~=4.2", "bsb-json~=4.2", "coverage~=7.3",