diff --git a/corneto/methods/signaling/__init__.py b/corneto/methods/signaling/__init__.py index e49c705e4..baf83ee5f 100644 --- a/corneto/methods/signaling/__init__.py +++ b/corneto/methods/signaling/__init__.py @@ -1,5 +1,10 @@ """Signaling-network inference methods.""" +from corneto.methods.signaling.annnet import ( + add_cellnopt_conditions, + add_cellnopt_results, + build_cellnopt_from_annnet, +) from corneto.methods.signaling.cellnopt_dag import BooleanReaction, CellNOptDAG from corneto.methods.signaling.cellnopt_plotting import ( plot_cellnopt_fit, @@ -9,6 +14,9 @@ __all__ = [ "BooleanReaction", "CellNOptDAG", + "add_cellnopt_conditions", + "add_cellnopt_results", + "build_cellnopt_from_annnet", "plot_cellnopt_fit", "plot_cellnopt_model", ] diff --git a/corneto/methods/signaling/annnet.py b/corneto/methods/signaling/annnet.py new file mode 100644 index 000000000..0f209a5ca --- /dev/null +++ b/corneto/methods/signaling/annnet.py @@ -0,0 +1,363 @@ +"""AnnNet integration for CellNOptDAG signaling analyses.""" + +import warnings +from copy import deepcopy +from dataclasses import dataclass +from typing import TYPE_CHECKING, Any, Mapping + +import numpy as np + +from corneto.contrib.annnet import from_annnet +from corneto.utils import import_optional_module + +if TYPE_CHECKING: + from annnet import AnnNet + + from corneto.backend._base import ProblemDef + from corneto.methods.signaling import CellNOptDAG + + +@dataclass(frozen=True) +class _CellNOptAnnNetContext: + condition_layers: dict[str, tuple[str, ...]] + source_edge_ids: tuple[str, ...] + source_edges: dict[str, tuple[str, str, int]] + + +def _matching_condition_keys(**collections: Mapping[str, Any]) -> tuple[str, ...]: + names: tuple[str, ...] | None = None + for argument, values in collections.items(): + if not isinstance(values, Mapping): + raise TypeError(f"{argument} must be a mapping from condition names to protein values.") + current = tuple(values) + if names is None: + names = current + elif set(current) != set(names): + raise ValueError(f"{argument} must contain the same conditions as inputs.") + return names or () + + +def _condition_layer_map( + graph: "AnnNet", + *, + condition_aspect: str, + condition_layers: Mapping[str, tuple[str, ...]] | None, +) -> dict[str, tuple[str, ...]]: + aspects = tuple(graph.layers.list_aspects()) + if condition_layers is not None: + result = {str(name): tuple(layer) for name, layer in condition_layers.items()} + if not result: + raise ValueError("condition_layers must contain at least one condition.") + if any(len(layer) != len(aspects) for layer in result.values()): + raise ValueError("Each condition layer must provide one value for every AnnNet layer aspect.") + return result + + if aspects != (condition_aspect,): + raise ValueError( + f"Automatic condition discovery requires one AnnNet layer aspect named {condition_aspect!r}. " + "Pass condition_layers explicitly when the network uses several aspects." + ) + names = graph.layers.list_layers(aspect=condition_aspect) + if not names: + raise ValueError(f"The AnnNet object has no layers for the {condition_aspect!r} aspect.") + return {str(name): (str(name),) for name in names} + + +def add_cellnopt_conditions( + graph: "AnnNet", + *, + inputs: Mapping[str, Mapping[str, Any]], + measurements: Mapping[str, Mapping[str, Any]], + inhibitors: Mapping[str, Mapping[str, Any]] | None = None, + condition_aspect: str = "condition", + input_attr: str = "input", + inhibitor_attr: str = "inhibited", + measurement_attr: str = "observed", +) -> dict[str, tuple[str, ...]]: + """Add CellNOpt perturbations and measurements as AnnNet condition layers. + + Every condition receives a copy of the graph's existing vertices. Input, + inhibitor, and measurement values are stored as vertex-layer attributes. + The returned mapping can be passed to :func:`build_cellnopt_from_annnet` + when a caller wants to name or select layers explicitly. + """ + import_optional_module("annnet") + if inhibitors is None: + inhibitors = {condition: {} for condition in inputs} + condition_names = _matching_condition_keys( + inputs=inputs, + measurements=measurements, + inhibitors=inhibitors, + ) + if not condition_names: + raise ValueError("At least one experimental condition is required.") + + aspects = tuple(graph.layers.list_aspects()) + if aspects and aspects != (condition_aspect,): + raise ValueError( + "add_cellnopt_conditions can initialize an unlayered AnnNet object or reuse its single " + f"{condition_aspect!r} aspect. Use AnnNet directly for experiments with several layer aspects." + ) + if not aspects: + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", message="Declared aspects") + graph.layers.set_aspects( + [condition_aspect], + {condition_aspect: list(condition_names)}, + ) + + known_vertices = set(graph.vertices()) + base_vertices = list(graph.vertices()) + layers = {condition: (condition,) for condition in condition_names} + for condition, layer in layers.items(): + graph.add_vertices(base_vertices, layer=layer) + values_by_role = ( + (inputs[condition], input_attr), + (inhibitors[condition], inhibitor_attr), + (measurements[condition], measurement_attr), + ) + for values, attribute in values_by_role: + if not isinstance(values, Mapping): + raise TypeError(f"Values for condition {condition!r} must be mappings keyed by protein.") + unknown = set(values) - known_vertices + if unknown: + protein = sorted(unknown, key=str)[0] + raise ValueError(f"Unknown protein {protein!r} in condition {condition!r}.") + for protein, value in values.items(): + graph.layers.set_vertex_layer_attrs(str(protein), layer, **{attribute: value}) + return layers + + +def _cellnopt_source_graph(graph: "AnnNet", network_slice: str | None): + selected = set(graph.edges()) if network_slice is None else set(graph.slices.edges(network_slice)) + edge_ids = [edge_id for edge_id in graph.edges() if edge_id in selected] + directed_edge_ids = set(graph.get_edges_by_direction(True)) + source = graph.__class__(directed=None) + + def biological_id(vertex): + if isinstance(vertex, tuple) and len(vertex) == 2 and isinstance(vertex[1], tuple): + return str(vertex[0]) + return str(vertex) + + for edge_id in edge_ids: + edge_source, edge_target = graph.get_edge(edge_id) + sources = [biological_id(vertex) for vertex in edge_source] + targets = [biological_id(vertex) for vertex in edge_target] + if len(sources) != 1 or len(targets) != 1: + raise ValueError( + "CellNOptDAG requires signed interactions with one source and one target; " + f"AnnNet edge {edge_id!r} has {len(sources)} sources and {len(targets)} targets." + ) + source.add_edges( + sources[0], + targets[0], + edge_id=edge_id, + directed=edge_id in directed_edge_ids, + parallel="parallel", + ) + attributes = dict(graph.attrs.get_edge_attrs(edge_id)) + attributes.pop("edge_id", None) + if attributes: + source.attrs.set_edge_attrs(edge_id, **deepcopy(attributes)) + + source.uns.update(deepcopy(dict(graph.uns))) + return source + + +def build_cellnopt_from_annnet( + method: "CellNOptDAG", + graph: "AnnNet", + *, + network_slice: str | None = None, + condition_aspect: str = "condition", + condition_layers: Mapping[str, tuple[str, ...]] | None = None, + input_attr: str = "input", + inhibitor_attr: str = "inhibited", + measurement_attr: str = "observed", +) -> "ProblemDef": + """Build a CellNOptDAG problem from a signed network and data in AnnNet. + + The signed interactions are read from ``network_slice`` when supplied. + Inputs, inhibitors, and measurements are read from vertex attributes in + the condition layers. Internal graph preparation is kept inside this + integration function so that AnnNet remains the user-facing graph object. + """ + from corneto.methods.signaling import CellNOptDAG + + if not isinstance(method, CellNOptDAG): + raise TypeError("method must be a CellNOptDAG instance.") + layers = _condition_layer_map( + graph, + condition_aspect=condition_aspect, + condition_layers=condition_layers, + ) + source = _cellnopt_source_graph(graph, network_slice) + pkn = from_annnet(source) + + inputs: dict[str, dict[str, Any]] = {} + inhibitors: dict[str, dict[str, Any]] = {} + measurements: dict[str, dict[str, Any]] = {} + for condition, layer in layers.items(): + inputs[condition] = {} + inhibitors[condition] = {} + measurements[condition] = {} + for protein in graph.layers.layer_vertex_set(layer): + protein_id = str(protein[0]) if isinstance(protein, tuple) else str(protein) + attributes = graph.layers.get_vertex_layer_attrs(protein_id, layer) + if input_attr in attributes: + inputs[condition][protein_id] = attributes[input_attr] + if attributes.get(inhibitor_attr): + inhibitors[condition][protein_id] = 1 + if measurement_attr in attributes: + measurements[condition][protein_id] = attributes[measurement_attr] + + source_edge_ids = tuple(source.edges()) + source_edges = {} + for edge_id in source_edge_ids: + edge_source, edge_target = source.get_edge(edge_id) + if len(edge_source) != 1 or len(edge_target) != 1: + continue + attributes = source.attrs.get_edge_attrs(edge_id) + source_edges[edge_id] = ( + str(next(iter(edge_source))), + str(next(iter(edge_target))), + int(attributes.get("interaction", 1)), + ) + + problem = method.build_many( + pkn, + inputs=inputs, + measurements=measurements, + inhibitors=inhibitors, + ) + problem._annnet_cellnopt_context = _CellNOptAnnNetContext( + condition_layers=layers, + source_edge_ids=source_edge_ids, + source_edges=source_edges, + ) + return problem + + +def _reaction_text(reaction) -> str: + literals = [str(node) for node in reaction.positive_literals] + literals.extend(f"NOT {node}" for node in reaction.negative_literals) + return f"{' AND '.join(literals)} -> {reaction.product}" + + +def add_cellnopt_results( + graph: "AnnNet", + method: "CellNOptDAG", + problem: "ProblemDef", + *, + solution: Any = None, + model_slice: str = "cellnopt_selected", + prediction_attr: str = "predicted", + activity_attr: str = "active", + measurement_attr: str = "observed", + error_attr: str = "absolute_error", +) -> dict[str, Any]: + """Add a solved CellNOptDAG model and its condition results to AnnNet. + + The selected interactions are added to ``model_slice``. Predictions are + stored on protein-layer pairs, while copies of selected interactions in + each condition layer record whether their reaction is active. + """ + context = getattr(problem, "_annnet_cellnopt_context", None) + if context is None: + raise ValueError("Build the problem with build_cellnopt_from_annnet before adding its results.") + required = ("reaction_selected", "reaction_active", "vertex_value") + missing = [name for name in required if getattr(problem.expr, name).value is None] + if missing: + raise ValueError("Solve the CellNOptDAG problem before adding results to AnnNet.") + if graph.slices.exists(model_slice): + raise ValueError(f"AnnNet slice {model_slice!r} already exists.") + + selected = np.rint(np.asarray(problem.expr.reaction_selected.value)).astype(int).reshape(-1) + activity = np.rint(np.asarray(problem.expr.reaction_active.value)).astype(int) + predictions = np.rint(np.asarray(problem.expr.vertex_value.value)).astype(int) + selected_indices = np.flatnonzero(selected) + condition_names = tuple(context.condition_layers) + vertices = [str(vertex) for vertex in method.processed_graph.V] + + graph.slices.add(model_slice, role="inferred_model", method="CellNOptDAG") + selected_source_edges = { + context.source_edge_ids[edge_index] + for reaction_index in selected_indices + for edge_index in method.reactions[reaction_index].source_edges + } + for edge_id in selected_source_edges: + graph.slices.add_edge_to_slice(model_slice, edge_id) + + result_edge_ids = [] + condition_errors = {} + for condition_index, condition in enumerate(condition_names): + layer = context.condition_layers[condition] + graph.add_vertices(vertices, layer=layer) + endpoint_error = 0.0 + for vertex_index, protein in enumerate(vertices): + predicted = float(predictions[vertex_index, condition_index]) + attributes = {prediction_attr: predicted} + existing = graph.layers.get_vertex_layer_attrs(protein, layer) + if measurement_attr in existing: + error = abs(predicted - float(existing[measurement_attr])) + attributes[error_attr] = error + endpoint_error += error + graph.layers.set_vertex_layer_attrs(protein, layer, **attributes) + + condition_edges = [] + for reaction_index in selected_indices: + reaction = method.reactions[reaction_index] + is_active = bool(activity[reaction_index, condition_index]) + for source_edge_index in reaction.source_edges: + prior_edge_id = context.source_edge_ids[source_edge_index] + source, target, interaction = context.source_edges[prior_edge_id] + condition_edges.append( + { + "source": (source, layer), + "target": (target, layer), + "edge_id": ( + f"{model_slice}__condition_{condition_index}__reaction_{reaction_index}" + f"__edge_{source_edge_index}" + ), + "interaction": interaction, + "prior_edge_id": prior_edge_id, + "reaction_index": int(reaction_index), + "reaction": _reaction_text(reaction), + "selected": True, + activity_attr: is_active, + "source_method": "CellNOptDAG", + } + ) + result_edge_ids.extend( + graph.add_edges( + condition_edges, + slice=model_slice, + default_edge_directed=True, + ) + ) + + active_count = int(activity[selected_indices, condition_index].sum()) + layer_attributes = { + "endpoint_absolute_error": float(endpoint_error), + "selected_reactions": len(selected_indices), + "active_reactions": active_count, + } + if solution is not None and getattr(solution, "status", None) is not None: + layer_attributes["solver_status"] = str(solution.status) + graph.layers.set_layer_attrs(layer, **layer_attributes) + condition_errors[condition] = endpoint_error + + graph.history.snapshot("cellnopt_results_added") + return { + "selected_reactions": len(selected_indices), + "selected_prior_edges": len(selected_source_edges), + "condition_edges": len(result_edge_ids), + "condition_errors": condition_errors, + } + + +__all__ = [ + "add_cellnopt_conditions", + "add_cellnopt_results", + "build_cellnopt_from_annnet", +] diff --git a/docs/api/corneto.methods.rst b/docs/api/corneto.methods.rst index e981e17ac..07047a2ef 100644 --- a/docs/api/corneto.methods.rst +++ b/docs/api/corneto.methods.rst @@ -43,6 +43,19 @@ network views and return Matplotlib figure/axes objects for data-fit views. signaling.plot_cellnopt_model signaling.plot_cellnopt_fit +CellNOpt and AnnNet +~~~~~~~~~~~~~~~~~~~ + +These helpers keep the signed network, perturbation conditions, and fitted +CellNOptDAG results in one AnnNet object. + +.. autosummary:: + :toctree: generated/ + + signaling.add_cellnopt_conditions + signaling.build_cellnopt_from_annnet + signaling.add_cellnopt_results + Metabolism ---------- diff --git a/docs/guide/index.md b/docs/guide/index.md index 53197bb1c..141ed38f7 100644 --- a/docs/guide/index.md +++ b/docs/guide/index.md @@ -15,7 +15,6 @@ The library is designed with minimal dependencies and is easily extendable, maki ```{toctree} :maxdepth: 3 -method-inputs intro/index networks/index metabolism/index diff --git a/docs/guide/intro/data.ipynb b/docs/guide/intro/data.ipynb index 04e3c0b75..4a595f6c7 100644 --- a/docs/guide/intro/data.ipynb +++ b/docs/guide/intro/data.ipynb @@ -2,532 +2,226 @@ "cells": [ { "cell_type": "markdown", - "id": "0a2cb032", + "id": "working-with-data", "metadata": {}, "source": [ + "(guide-working-with-data)=\n", "# Working with data\n", "\n", - "CORNETO provides a flexible way to work with data in a convenient way for network problems. You can use the `Data` class to create a new dataset, or you can load an existing dataset from a file. The `Data` class provides methods for querying a given dataset. The main goal of this class is to provide a simple interface for working with datasets that are typically sparse and can be stored in memory, while still allowing for complex queries and transformations." + "A CORNETO analysis brings together a biological network and experimental observations. The network describes what can interact; the observations describe what was measured in one or more samples or experimental conditions.\n", + "\n", + "CORNETO represents these observations with the `Data` class. A `Data` object keeps related measurements together, records which sample they belong to, and provides a common data model for CORNETO methods." ] }, { "cell_type": "code", - "execution_count": 2, - "id": "56be29e1", + "execution_count": null, + "id": "import-corneto", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [], - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - " \n", - "
Installed version:v1.0.0.dev5 (latest stable: v1.0.0-alpha)
Available backends:CVXPY v1.6.4, PICOS v2.6.0
Default backend (corneto.opt):CVXPY
Installed solvers:CVXOPT, GLPK, GLPK_MI, HIGHS, SCIP, SCIPY
Graphviz version:v0.20.3
Installed path:/Users/pablorodriguezmier/Documents/work/repos/pablormier/corneto/corneto
Repository:https://github.com/saezlab/corneto
\n", - "
" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "import corneto as cn\n", - "\n", - "cn.info()" + "import corneto as cn" ] }, { "cell_type": "markdown", - "id": "ff4ef0e0", + "id": "data-model", "metadata": {}, "source": [ - "## Creating a new dataset from a dictionary\n", + "## Samples and features\n", "\n", - "Most of the network inference approaches in CORNETO require some type of measurements to be mapped to prior knowledge networks. For convenience, datasets used in CORNETO are represented as dictionaries with features (any measurement that is mapped, or will be mapped to a prior knowledge network), and samples, which are collections of features. The simplest way to create a dataset is to define a dictionary where keys are sample names (e.g. conditions like different perturbed cells). Each sample has features, which are lists of dictionaries containing information about the feature. Every feature has at least an id (e.g., gene name, protein name, metabolite name, etc), a value for that sample, and a mapping attribute which indicates if this feature maps to a vertex, edge, or none (for features that are not mapped to the network, or needs pre-processing to determine the mapping values). Every method may require additional attributes, which are described in the documentation of each method. The following example shows how to create a simple dataset:\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "3b913364", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Data(n_samples=2, n_feats=[3 3])" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# A simple dataset with two samples, and three features per sample.\n", + "A `Data` object contains named samples. Each sample contains features, such as measured proteins, genes, metabolites, or phenotypes. Every feature has three common fields:\n", "\n", - "samples = {\n", - " \"sample1\": {\n", - " \"features\": [\n", - " {\"id\": \"receptor1\", \"value\": 1, \"mapping\": \"vertex\", \"role\": \"input\"},\n", - " {\"id\": \"tf1\", \"value\": 1, \"mapping\": \"vertex\", \"role\": \"output\"},\n", - " {\"id\": \"tf2\", \"value\": 1, \"mapping\": \"vertex\", \"role\": \"output\"},\n", - " ]\n", - " },\n", - " \"sample2\": {\n", - " \"features\": [\n", - " {\"id\": \"receptor2\", \"value\": 1, \"mapping\": \"vertex\", \"role\": \"input\"},\n", - " {\"id\": \"tf1\", \"value\": 1, \"mapping\": \"vertex\", \"role\": \"output\"},\n", - " {\"id\": \"tf2\", \"value\": -1, \"mapping\": \"vertex\", \"role\": \"output\"},\n", - " ]\n", - " },\n", - "}\n", + "- `id` identifies the measured entity.\n", + "- `value` stores its observed value.\n", + "- `mapping` says whether the feature corresponds to a network `vertex`, a network `edge`, or is currently mapped to `none`.\n", "\n", - "data = cn.Data.from_dict(samples)\n", - "data" + "Features can also carry information such as the assay, units, or a biological role. These additional fields are kept with the feature. Their meaning depends on the method that uses the data, so each method documents the fields it requires." ] }, { "cell_type": "markdown", - "id": "e3d71dbb", + "id": "create-data", "metadata": {}, "source": [ - "For convenience, data can be imported from a more compacted dictionary definition where features are also indexed by id." + "## Creating a dataset\n", + "\n", + "Here we record measurements from untreated cells and cells stimulated with EGF. Protein measurements map to vertices in a network. Cell viability is retained as part of the experiment but is not mapped to the network." ] }, { "cell_type": "code", - "execution_count": 4, - "id": "f4a41dd9", + "execution_count": null, + "id": "create-data-code", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Data(n_samples=2, n_feats=[3 4])" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "samples = {\n", - " \"sample1\": {\n", - " \"receptor1\": {\n", - " \"value\": 1,\n", - " \"mapping\": \"vertex\",\n", - " \"role\": \"input\",\n", - " },\n", - " \"tf1\": {\n", - " \"value\": 1,\n", - " \"mapping\": \"vertex\",\n", - " \"role\": \"output\",\n", - " },\n", - " \"tf2\": {\n", - " \"value\": 1,\n", - " \"mapping\": \"vertex\",\n", - " \"role\": \"output\",\n", + "observations = {\n", + " \"untreated\": {\n", + " \"EGFR\": {\"value\": 0.18, \"mapping\": \"vertex\"},\n", + " \"MAPK1\": {\"value\": 0.22, \"mapping\": \"vertex\"},\n", + " \"cell_viability\": {\n", + " \"value\": 0.96, \"mapping\": \"none\", \"assay\": \"phenotype\"\n", " },\n", " },\n", - " \"sample2\": {\n", - " \"receptor2\": {\n", - " \"value\": 1,\n", - " \"mapping\": \"vertex\",\n", - " \"role\": \"input\",\n", - " },\n", - " \"tf1\": {\n", - " \"value\": 1,\n", - " \"mapping\": \"vertex\",\n", - " \"role\": \"output\",\n", - " },\n", - " \"tf3\": {\n", - " \"value\": -1,\n", - " \"mapping\": \"vertex\",\n", - " \"role\": \"output\",\n", - " },\n", - " \"tf4\": {\n", - " \"value\": 1,\n", - " \"mapping\": \"vertex\",\n", - " \"role\": \"output\",\n", + " \"EGF\": {\n", + " \"EGFR\": {\"value\": 0.91, \"mapping\": \"vertex\"},\n", + " \"MAPK1\": {\"value\": 0.84, \"mapping\": \"vertex\"},\n", + " \"cell_viability\": {\n", + " \"value\": 0.94, \"mapping\": \"none\", \"assay\": \"phenotype\"\n", " },\n", " },\n", "}\n", "\n", - "data = cn.Data.from_cdict(samples)\n", + "data = cn.Data.from_cdict(observations)\n", "data" ] }, - { - "cell_type": "code", - "execution_count": 5, - "id": "6eaae82b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[Feature(id=receptor1, value=1, mapping=vertex, role=input),\n", - " Feature(id=tf1, value=1, mapping=vertex, role=output),\n", - " Feature(id=tf2, value=1, mapping=vertex, role=output)]" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Samples are just lists of features\n", - "data.samples[\"sample1\"].features" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "6d261bde", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'sample1': {'features': [{'id': 'receptor1',\n", - " 'value': 1,\n", - " 'mapping': 'vertex',\n", - " 'role': 'input'},\n", - " {'id': 'tf1', 'value': 1, 'mapping': 'vertex', 'role': 'output'},\n", - " {'id': 'tf2', 'value': 1, 'mapping': 'vertex', 'role': 'output'},\n", - " {'id': 'tf3', 'value': 1, 'mapping': 'vertex', 'role': 'output'}]},\n", - " 'sample2': {'features': [{'id': 'receptor2',\n", - " 'value': 1,\n", - " 'mapping': 'vertex',\n", - " 'role': 'input'},\n", - " {'id': 'tf1', 'value': 1, 'mapping': 'vertex', 'role': 'output'},\n", - " {'id': 'tf3', 'value': -1, 'mapping': 'vertex', 'role': 'output'},\n", - " {'id': 'tf4', 'value': 1, 'mapping': 'vertex', 'role': 'output'}]}}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# We can add a new feature to a sample. These are stored as lists.\n", - "data.samples[\"sample1\"].features.append(cn.Feature(id=\"tf3\", value=1, mapping=\"vertex\", role=\"output\"))\n", - "data.to_dict()" - ] - }, { "cell_type": "markdown", - "id": "a9f7a259", + "id": "inspect-data", "metadata": {}, "source": [ - "## Querying features\n", - "\n", - "To inspect or obtain features from a dataset, you can use the `query` method. This method allows you to filter features based on their attributes. For example, you can find all features that are mapped to a specific vertex in the network, or all features that have a specific value." + "The sample names are preserved, and each sample contains its own feature values." ] }, { "cell_type": "code", - "execution_count": 7, - "id": "c454e1aa", + "execution_count": null, + "id": "inspect-samples", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Sample(n_feats=3)" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data.samples[\"sample1\"].query.filter(lambda f: f.id.startswith(\"tf\")).collect()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "f218854b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'tf1', 'tf2', 'tf3'}" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "# We can get all the unique ids from the samples\n", - "data.samples[\"sample1\"].query.filter(lambda f: f.id.startswith(\"tf\")).pluck()" + "list(data.samples)" ] }, { "cell_type": "code", - "execution_count": 9, - "id": "67f27401", + "execution_count": null, + "id": "inspect-features", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[Feature(id=receptor1, value=1, mapping=vertex, role=input),\n", - " Feature(id=tf1, value=1, mapping=vertex, role=output),\n", - " Feature(id=tf2, value=1, mapping=vertex, role=output),\n", - " Feature(id=tf3, value=1, mapping=vertex, role=output)]" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "# Get features with unique ids\n", - "data.samples[\"sample1\"].query.unique().to_list()" + "data.samples[\"EGF\"].features" ] }, { "cell_type": "markdown", - "id": "8ed64112", + "id": "query-data", "metadata": {}, "source": [ - "The `unique()` method can use different keys to determine uniqueness. By default, it uses the feature's `id` field, but you can specify other fields like `mapping`, `role`, or any combination of keys." + "## Querying measurements\n", + "\n", + "Queries make it possible to select features without changing the original dataset. For example, we can retain only measurements that map to network vertices." ] }, { "cell_type": "code", - "execution_count": 10, - "id": "84746f4f", + "execution_count": null, + "id": "query-vertices", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[Feature(id=receptor1, value=1, mapping=vertex, role=input),\n", - " Feature(id=tf1, value=1, mapping=vertex, role=output)]" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "# Get features with unique roles\n", - "data.samples[\"sample1\"].query.unique([\"role\"]).to_list()" + "network_measurements = (\n", + " data.query.filter_features(\n", + " lambda feature: feature.mapping == \"vertex\"\n", + " ).collect()\n", + ")\n", + "network_measurements" ] }, { "cell_type": "markdown", - "id": "7fe04517", + "id": "copy-data", "metadata": {}, "source": [ - "## Working across multiple samples\n", + "## Copying and extending data\n", "\n", - "The `Data` class also provides a query interface that works across all samples. This allows you to perform operations on all features in all samples at once." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "ed2d114e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'receptor1', 'receptor2', 'tf1', 'tf2', 'tf3', 'tf4'}" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Get all unique feature IDs across all samples\n", - "data.query.pluck()" + "Use `copy()` when you want to modify a dataset while keeping the original unchanged. Features can then be added to an individual sample." ] }, { "cell_type": "code", - "execution_count": 12, - "id": "9e540bbc", + "execution_count": null, + "id": "copy-data-code", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'tf1', 'tf2', 'tf3', 'tf4'}" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Get features with unique IDs across all samples\n", - "data.query.filter_features(lambda f: f.id.startswith(\"tf\")).unique().pluck()" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "351775a7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Data(n_samples=2, n_feats=[3 3])" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "# Filter features across all samples\n", - "dataq = data.query.filter_features(lambda f: f.id.startswith(\"tf\")).collect()\n", + "extended_data = data.copy()\n", + "extended_data.samples[\"EGF\"].add(\n", + " cn.Feature(\n", + " id=\"AKT1\",\n", + " value=0.73,\n", + " mapping=\"vertex\",\n", + " assay=\"phosphoproteomics\",\n", + " )\n", + ")\n", "\n", - "dataq" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "dd79a300", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'sample1': {'features': [{'id': 'tf1',\n", - " 'value': 1,\n", - " 'mapping': 'vertex',\n", - " 'role': 'output'},\n", - " {'id': 'tf2', 'value': 1, 'mapping': 'vertex', 'role': 'output'},\n", - " {'id': 'tf3', 'value': 1, 'mapping': 'vertex', 'role': 'output'}]},\n", - " 'sample2': {'features': [{'id': 'tf1',\n", - " 'value': 1,\n", - " 'mapping': 'vertex',\n", - " 'role': 'output'},\n", - " {'id': 'tf3', 'value': -1, 'mapping': 'vertex', 'role': 'output'},\n", - " {'id': 'tf4', 'value': 1, 'mapping': 'vertex', 'role': 'output'}]}}" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dataq.to_dict()" + "len(data.samples[\"EGF\"].features), len(extended_data.samples[\"EGF\"].features)" ] }, { "cell_type": "markdown", - "id": "d47b7938", + "id": "save-data", "metadata": {}, "source": [ - "## Saving and loading datasets" + "## Saving and loading data\n", + "\n", + "A `Data` object can be saved and loaded without losing sample names, feature values, mappings, or additional annotations." ] }, { "cell_type": "code", - "execution_count": 20, - "id": "475e808b", + "execution_count": null, + "id": "save-data-code", "metadata": {}, "outputs": [], "source": [ - "import tempfile\n", + "from pathlib import Path\n", + "from tempfile import TemporaryDirectory\n", "\n", - "file = tempfile.NamedTemporaryFile(delete=False).name\n", - "dataq.save(file, compression=\"xz\")" + "with TemporaryDirectory() as directory:\n", + " data_path = Path(directory) / \"experiment.json.xz\"\n", + " data.save(data_path)\n", + " restored_data = cn.Data.load(data_path)\n", + "\n", + "restored_data.to_dict() == data.to_dict()" ] }, { - "cell_type": "code", - "execution_count": 22, - "id": "2386db6a", + "cell_type": "markdown", + "id": "using-data-with-methods", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'sample1': {'features': [{'id': 'tf1',\n", - " 'value': 1,\n", - " 'mapping': 'vertex',\n", - " 'role': 'output'},\n", - " {'id': 'tf2', 'value': 1, 'mapping': 'vertex', 'role': 'output'},\n", - " {'id': 'tf3', 'value': 1, 'mapping': 'vertex', 'role': 'output'}]},\n", - " 'sample2': {'features': [{'id': 'tf1',\n", - " 'value': 1,\n", - " 'mapping': 'vertex',\n", - " 'role': 'output'},\n", - " {'id': 'tf3', 'value': -1, 'mapping': 'vertex', 'role': 'output'},\n", - " {'id': 'tf4', 'value': 1, 'mapping': 'vertex', 'role': 'output'}]}}" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "dataq.load(file, compression=\"xz\").to_dict()" + "(guide-data-methods)=\n", + "## Using data with methods\n", + "\n", + "`Data` is the general representation used by CORNETO methods. If your observations are already stored as a `Data` object, pass them to the method through `build_from_data`: \n", + "\n", + "```python\n", + "problem = method.build_from_data(network, data)\n", + "```\n", + "\n", + "For common analyses, methods also provide shorter interfaces. `build` accepts the scientific inputs for one condition, while `build_many` accepts inputs for several named conditions:\n", + "\n", + "```python\n", + "problem = method.build(network, ...)\n", + "problem = method.build_many(network, ...)\n", + "```\n", + "\n", + "These convenience methods validate their inputs, create the corresponding `Data` object, and then build the optimization problem. The biological meaning and names of the inputs differ between methods, so they are explained in each method's guide." ] } ], "metadata": { "kernelspec": { - "display_name": "corneto-hVfbzgbT-py3.12", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.7" + "version": "3.12" } }, "nbformat": 4, diff --git a/docs/guide/metabolism/flux-balance-analysis.ipynb b/docs/guide/metabolism/flux-balance-analysis.ipynb index 9a4f3f05d..3f15dab00 100644 --- a/docs/guide/metabolism/flux-balance-analysis.ipynb +++ b/docs/guide/metabolism/flux-balance-analysis.ipynb @@ -295,7 +295,7 @@ "\n", "For several conditions, CORNETO can apply structured sparsity to the union of active reactions. A reaction shared by several conditions is then counted once, encouraging compact shared metabolic programs while retaining a separate flux vector for every condition. Continue with [Multi-condition FBA](multicondition-sfba.ipynb) for the general formulation and a worked example, followed by [gene expression integration](imat.ipynb) for context-specific metabolic inference.\n", "\n", - "The examples above use the method-specific `build` and `build_many` interfaces. The general [`Data` interface](../method-inputs.md) remains available for workflows that require custom feature metadata or already represent measurements as CORNETO data objects." + "The examples above use the method-specific `build` and `build_many` interfaces. The general {ref}`Data interface ` remains available for workflows that require custom feature metadata or already represent measurements as CORNETO data objects." ] } ], diff --git a/docs/guide/method-inputs.md b/docs/guide/method-inputs.md index 77ba2e618..673b651eb 100644 --- a/docs/guide/method-inputs.md +++ b/docs/guide/method-inputs.md @@ -1,114 +1,8 @@ -# Building method problems from explicit inputs +--- +orphan: true +--- -CORNETO methods accept ordinary Python mappings and collections for their -common scientific inputs. You do not need to construct `Data`, `Sample`, or -`Feature` objects for standard workflows. +# Building method problems from data -## One condition - -Use `build` with a positional network and keyword-only scientific inputs: - -```python -from corneto.methods import CarnivalILP - -problem = CarnivalILP().build( - pkn, - perturbations={"EGFR": 1}, - transcription_factors={"JUN": 1, "FOXO3": -1}, -) -``` - -Metabolic and network methods expose inputs using their domain terminology: - -```python -from corneto.methods import MultiSampleFBA, SteinerTreeFlow - -fba_problem = MultiSampleFBA().build( - model, - objectives={"BIOMASS": -1}, - reaction_bounds={"EX_glc": (-10, 0)}, -) - -tree_problem = SteinerTreeFlow().build( - graph, - terminals=["EGFR", "JUN"], - edge_costs={0: 1.5, 4: 0.8}, -) -``` - -PHONEMeS uses perturbation targets and signed phosphosite scores. Because the -method minimizes its objective, negative scores favor including a site and -positive scores discourage it; zero-valued keys still identify measured sites: - -```python -from corneto.methods import PHONEMeS - -phonemes_problem = PHONEMeS().build( - pkn, - perturbations=["EGFR"], - phosphosite_scores={"ERK1_S123": -2.4, "AKT1_S473": 0.0}, -) -``` - -See the [PHONEMeS guide](signaling/phonemes.ipynb) for score interpretation, edge -costs, computing scores from differential results, optional pandas inputs, and -extracting the inferred subnetwork. - -When the starting points are activity-derived regulated kinases rather than -known experimental perturbations, use `BidirectionalPHONEMeS`. It optimizes -upstream and downstream explanations together: - -```python -from corneto.methods import BidirectionalPHONEMeS - -bidirectional_problem = BidirectionalPHONEMeS().build( - pkn, - regulated_kinases=["AKT1", "MTOR"], - phosphosite_scores={"AKT1_S473": -2.4, "RPS6_S235": -3.1}, -) -``` - -See the -[global bidirectional PHONEMeS guide](signaling/bidirectional-phonemes.ipynb) for -anchor policies, directional results, and the distinction from the original -post-hoc upside-down union. - -## Multiple named conditions - -Use `build_many` and add one outer mapping keyed by condition name: - -```python -problem = CarnivalILP().build_many( - pkn, - perturbations={ - "control": {"EGFR": 1}, - "treated": {"EGFR": -1}, - }, - transcription_factors={ - "control": {"JUN": 1}, - "treated": {"JUN": -1}, - }, -) -``` - -All per-condition arguments must contain the same condition names. CORNETO -validates condition names, graph identifiers, numeric values, bounds, and edge -indices before constructing the optimization problem. - -PHONEMeS also uses named mappings for `perturbations` and -`phosphosite_scores`. It infers one subnetwork per condition but charges edge -costs over their combined network: an interaction used by one or several -conditions is charged once. For this reason, `edge_costs` is one global mapping -rather than a mapping per condition. - -## Advanced data interface - -Use `build_from_data(graph, data)` when custom feature metadata or arbitrary -measurement roles require the general `Data` representation: - -```python -problem = CarnivalILP().build_from_data(pkn, data) -``` - -Passing `Data` as the second positional argument to `build` remains temporarily -supported with a deprecation warning. +This documentation has moved to {ref}`guide-data-methods` in the +{ref}`guide-working-with-data` guide. diff --git a/docs/releases/index.md b/docs/releases/index.md index 49e315d35..b2b800f72 100644 --- a/docs/releases/index.md +++ b/docs/releases/index.md @@ -7,6 +7,7 @@ This section contains detailed release notes for CORNETO versions, documenting n ```{toctree} :maxdepth: 1 +v1.0.0-rc.4 v1.0.0-rc.3 v1.0.0-rc.1 migration-1.0 diff --git a/docs/releases/v1.0.0-rc.4.md b/docs/releases/v1.0.0-rc.4.md new file mode 100644 index 000000000..e229fd742 --- /dev/null +++ b/docs/releases/v1.0.0-rc.4.md @@ -0,0 +1,31 @@ +# CORNETO 1.0.0 RC4 + +CORNETO 1.0.0 RC4 adds an AnnNet-centered signaling workflow and clarifies how +experimental data are represented across CORNETO methods. + +## AnnNet and CellNOptDAG + +- New signaling helpers read signed interactions and multi-condition + perturbation data from AnnNet, build a `CellNOptDAG` optimization problem, + and add the fitted model and condition-specific predictions back to the same + AnnNet object. +- A new tutorial uses proteins from the LiverDREAM signaling network to show + how AnnNet can keep the candidate pathway, experimental conditions, selected + interactions, predictions, and reaction activities together. +- The tutorial uses normalized synthetic measurements with experimental + variation, making the difference between observed values and Boolean model + predictions visible. + +Install the optional AnnNet integration with: + +```bash +pip install "corneto[annnet]" +``` + +## Data documentation + +The Getting Started guide now presents `Data` as CORNETO's general +representation of samples and measured features. Method-specific `build` and +`build_many` functions are explained as convenient ways to create this data +for common analyses, while `build_from_data` remains the general interface for +annotated or reusable datasets. diff --git a/docs/tutorials/annnet-signaling/annnet-cellnopt-dag.ipynb b/docs/tutorials/annnet-signaling/annnet-cellnopt-dag.ipynb new file mode 100644 index 000000000..5846ab81c --- /dev/null +++ b/docs/tutorials/annnet-signaling/annnet-cellnopt-dag.ipynb @@ -0,0 +1,2081 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "intro", + "metadata": { + "tags": [] + }, + "source": [ + "# Fitting a multi-condition signaling network stored in AnnNet\n", + "\n", + "A signaling analysis contains more than a pathway diagram. We also need to know which proteins were stimulated or inhibited, what was measured in each condition, which interactions were selected by the model, and what the model predicts.\n", + "\n", + "In this tutorial, one AnnNet object keeps all of this information together. CORNETO provides the optimization method that fits the network.\n", + "\n", + "We will use AnnNet to hold:\n", + "\n", + "- a signed prior-knowledge network;\n", + "- nine perturbation experiments;\n", + "- the network selected by `CellNOptDAG`; and\n", + "- predicted protein and reaction activities for every condition.\n", + "\n", + "The biological question is:\n", + "\n", + "> Which routes through the candidate network are needed to explain the responses to TGFA, IGF1, and several kinase inhibitors?\n", + "\n", + "The complete analysis can be saved as one `.annnet` file and explored later without rerunning the optimization." + ] + }, + { + "cell_type": "markdown", + "id": "data-scope", + "metadata": { + "tags": [] + }, + "source": [ + "## What data are used?\n", + "\n", + "The protein names and candidate interactions come from a small part of the prior-knowledge network distributed with the [DREAM4 Predictive Signaling Network Challenge](https://pmc.ncbi.nlm.nih.gov/articles/PMC3465072/). The original challenge studied signaling responses in HepG2 cells after stimulation with ligands and treatment with kinase inhibitors.\n", + "\n", + "To keep the model easy to understand, we use a small **synthetic perturbation experiment**. Stimuli and inhibitors are binary, while the responses are normalized values between `0` and `1`. We deliberately include experimental variation, so a Boolean model is not expected to reproduce every value exactly. The example uses real pathway names, but the measurements are illustrative and are not taken from the original DREAM dataset." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "imports", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from pathlib import Path\n", + "\n", + "import annnet as an\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "from annnet.utils import plot as plot_annnet\n", + "from IPython.display import display\n", + "\n", + "from corneto.methods.signaling import (\n", + " CellNOptDAG,\n", + " add_cellnopt_conditions,\n", + " add_cellnopt_results,\n", + " build_cellnopt_from_annnet,\n", + " plot_cellnopt_fit,\n", + " plot_cellnopt_model,\n", + ")\n", + "\n", + "plt.rcParams.update({\"figure.dpi\": 120, \"axes.spines.top\": False, \"axes.spines.right\": False})" + ] + }, + { + "cell_type": "markdown", + "id": "network-intro", + "metadata": { + "tags": [] + }, + "source": [ + "## 1. Create the signaling network in AnnNet\n", + "\n", + "We begin with the biological network that will remain with us throughout the analysis. Each interaction has a sign: `+1` for activation and `−1` for inhibition.\n", + "\n", + "The network contains two familiar branches:\n", + "\n", + "- TGFA activates EGFR and can signal toward ERK1/2 and HSP27;\n", + "- IGF1 activates IGFR and can signal toward PI3K and AKT.\n", + "\n", + "We also include several possible shortcuts and alternative routes. They are candidates that CORNETO may select if they help explain the experiments.\n", + "\n", + "The interactions are placed in an AnnNet slice called `prior`. A slice is a named selection within a network. Later, another slice will identify the interactions selected by CellNOptDAG, while the original candidate network remains available." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "create-network", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AnnNet contains 21 proteins and 25 signed interactions\n" + ] + } + ], + "source": [ + "display_name = {\n", + " \"tgfa\": \"TGFA\", \"egfr\": \"EGFR\", \"grb2\": \"GRB2\", \"shc\": \"SHC\",\n", + " \"sos\": \"SOS\", \"ras\": \"RAS\", \"raf1\": \"RAF1\", \"mek12\": \"MEK1/2\",\n", + " \"erk12\": \"ERK1/2\", \"prak\": \"PRAK\", \"hsp27\": \"HSP27\", \"pi3k\": \"PI3K\",\n", + " \"pip3\": \"PIP3\", \"pdk1\": \"PDK1\", \"akt\": \"AKT\", \"igf1\": \"IGF1\",\n", + " \"igfr\": \"IGFR\", \"irs1\": \"IRS1\", \"map3k1\": \"MAP3K1\", \"mkk4\": \"MKK4\",\n", + " \"p38\": \"p38\",\n", + "}\n", + "\n", + "pkn_edges = [\n", + " (\"tgfa\", 1, \"egfr\"), (\"egfr\", 1, \"grb2\"), (\"egfr\", 1, \"shc\"),\n", + " (\"shc\", 1, \"grb2\"), (\"grb2\", 1, \"sos\"), (\"sos\", 1, \"ras\"),\n", + " (\"ras\", 1, \"raf1\"), (\"raf1\", 1, \"mek12\"), (\"mek12\", 1, \"erk12\"),\n", + " (\"erk12\", 1, \"prak\"), (\"prak\", 1, \"hsp27\"), (\"egfr\", 1, \"pi3k\"),\n", + " (\"ras\", 1, \"pi3k\"), (\"pi3k\", 1, \"pip3\"), (\"pip3\", 1, \"pdk1\"),\n", + " (\"pdk1\", 1, \"akt\"), (\"igf1\", 1, \"igfr\"), (\"igfr\", 1, \"irs1\"),\n", + " (\"irs1\", 1, \"pi3k\"), (\"igfr\", 1, \"shc\"), (\"ras\", 1, \"map3k1\"),\n", + " (\"map3k1\", 1, \"mkk4\"), (\"mkk4\", 1, \"p38\"), (\"p38\", 1, \"prak\"),\n", + " (\"akt\", -1, \"raf1\"),\n", + "]\n", + "\n", + "signaling = an.AnnNet(directed=True)\n", + "signaling.history.enable(True)\n", + "signaling.slices.add(\"prior\", role=\"prior_knowledge\")\n", + "signaling.add_vertices(sorted(display_name))\n", + "\n", + "for protein, label in display_name.items():\n", + " signaling.attrs.set_vertex_attrs(protein, label=label, entity_type=\"protein\")\n", + "\n", + "prior_edge_ids = []\n", + "for index, (source, sign, target) in enumerate(pkn_edges):\n", + " edge_id = f\"liverdream_{index:02d}\"\n", + " signaling.add_edges(\n", + " source,\n", + " target,\n", + " edge_id=edge_id,\n", + " slice=\"prior\",\n", + " directed=True,\n", + " parallel=\"parallel\",\n", + " )\n", + " signaling.attrs.set_edge_attrs(\n", + " edge_id,\n", + " interaction=sign,\n", + " source_dataset=\"LiverDREAM\",\n", + " )\n", + " prior_edge_ids.append(edge_id)\n", + "\n", + "signaling.uns.update(\n", + " {\n", + " \"title\": \"LiverDREAM-derived signaling example\",\n", + " \"pkn_source\": \"DREAM4 Predictive Signaling Network Challenge\",\n", + " \"data_scope\": \"Synthetic normalized signaling responses for software demonstration\",\n", + " }\n", + ")\n", + "signaling.history.snapshot(\"prior_loaded\")\n", + "\n", + "print(f\"AnnNet contains {signaling.nv} proteins and {signaling.ne} signed interactions\")" + ] + }, + { + "cell_type": "markdown", + "id": "network-plot-text", + "metadata": { + "tags": [] + }, + "source": [ + "### Inspect the candidate network\n", + "\n", + "AnnNet draws the signed network directly. Arrowheads show activation, while a bar indicates inhibition." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "network-plot", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "akt\n", + "\n", + "AKT\n", + "\n", + "\n", + "\n", + "raf1\n", + "\n", + "RAF1\n", + "\n", + "\n", + "\n", + "akt->raf1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "egfr\n", + "\n", + "EGFR\n", + "\n", + "\n", + "\n", + "grb2\n", + "\n", + "GRB2\n", + "\n", + "\n", + "\n", + "egfr->grb2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pi3k\n", + "\n", + "PI3K\n", + "\n", + "\n", + "\n", + "egfr->pi3k\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "shc\n", + "\n", + "SHC\n", + "\n", + "\n", + "\n", + "egfr->shc\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "erk12\n", + "\n", + "ERK1/2\n", + "\n", + "\n", + "\n", + "prak\n", + "\n", + "PRAK\n", + "\n", + "\n", + "\n", + "erk12->prak\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "sos\n", + "\n", + "SOS\n", + "\n", + "\n", + "\n", + "grb2->sos\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "hsp27\n", + "\n", + "HSP27\n", + "\n", + "\n", + "\n", + "igf1\n", + "\n", + "IGF1\n", + "\n", + "\n", + "\n", + "igfr\n", + "\n", + "IGFR\n", + "\n", + "\n", + "\n", + "igf1->igfr\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "irs1\n", + "\n", + "IRS1\n", + "\n", + "\n", + "\n", + "igfr->irs1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "igfr->shc\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "irs1->pi3k\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "map3k1\n", + "\n", + "MAP3K1\n", + "\n", + "\n", + "\n", + "mkk4\n", + "\n", + "MKK4\n", + "\n", + "\n", + "\n", + "map3k1->mkk4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "mek12\n", + "\n", + "MEK1/2\n", + "\n", + "\n", + "\n", + "mek12->erk12\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "p38\n", + "\n", + "p38\n", + "\n", + "\n", + "\n", + "mkk4->p38\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "p38->prak\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pdk1\n", + "\n", + "PDK1\n", + "\n", + "\n", + "\n", + "pdk1->akt\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pip3\n", + "\n", + "PIP3\n", + "\n", + "\n", + "\n", + "pi3k->pip3\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pip3->pdk1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "prak->hsp27\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "raf1->mek12\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ras\n", + "\n", + "RAS\n", + "\n", + "\n", + "\n", + "ras->map3k1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ras->pi3k\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ras->raf1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "shc->grb2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "sos->ras\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "tgfa\n", + "\n", + "TGFA\n", + "\n", + "\n", + "\n", + "tgfa->egfr\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot_annnet(\n", + " signaling,\n", + " backend=\"graphviz\",\n", + " layout=\"dot\",\n", + " vertex_label_key=\"label\",\n", + " use_weight_style=False,\n", + " graph_attr={\"rankdir\": \"LR\", \"size\": \"12,7\"},\n", + " node_attr={\"shape\": \"ellipse\", \"style\": \"filled\", \"fillcolor\": \"#eef4fb\"},\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "conditions-intro", + "metadata": { + "tags": [] + }, + "source": [ + "## 2. Add the perturbation experiments to AnnNet\n", + "\n", + "Each condition records which ligands are present, which internal proteins are inhibited, and the measured activity of ERK1/2, AKT, and HSP27.\n", + "\n", + "The conditions were chosen to distinguish alternative explanations:\n", + "\n", + "- **TGFA with RAS inhibition** tests whether TGFA reaches PI3K through RAS or through the shorter candidate edge from EGFR to PI3K.\n", + "- **TGFA with MEK inhibition** blocks the ERK1/2–HSP27 branch while leaving the route to AKT available.\n", + "- **IGF1 alone** supports the route from IGFR through IRS1 to PI3K and AKT.\n", + "- **IGF1 with PI3K inhibition** tests whether the AKT response depends on PI3K, PIP3, and PDK1.\n", + "\n", + "We store every condition as an AnnNet layer. Inputs, inhibitors, and measurements become attributes of the corresponding protein in that layer." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "condition-data", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Condition layers: ['Basal', 'TGFA', 'TGFA + EGFRi', 'TGFA + RASi', 'TGFA + MEKi', 'IGF1', 'IGF1 + PI3Ki', 'TGFA + IGF1', 'Dual + MEKi']\n" + ] + } + ], + "source": [ + "inputs = {\n", + " \"Basal\": {\"tgfa\": 0, \"igf1\": 0},\n", + " \"TGFA\": {\"tgfa\": 1, \"igf1\": 0},\n", + " \"TGFA + EGFRi\": {\"tgfa\": 1, \"igf1\": 0},\n", + " \"TGFA + RASi\": {\"tgfa\": 1, \"igf1\": 0},\n", + " \"TGFA + MEKi\": {\"tgfa\": 1, \"igf1\": 0},\n", + " \"IGF1\": {\"tgfa\": 0, \"igf1\": 1},\n", + " \"IGF1 + PI3Ki\": {\"tgfa\": 0, \"igf1\": 1},\n", + " \"TGFA + IGF1\": {\"tgfa\": 1, \"igf1\": 1},\n", + " \"Dual + MEKi\": {\"tgfa\": 1, \"igf1\": 1},\n", + "}\n", + "measurements = {\n", + " \"Basal\": {\"erk12\": 0.05, \"akt\": 0.08, \"hsp27\": 0.04},\n", + " \"TGFA\": {\"erk12\": 0.90, \"akt\": 0.85, \"hsp27\": 0.80},\n", + " \"TGFA + EGFRi\": {\"erk12\": 0.10, \"akt\": 0.15, \"hsp27\": 0.08},\n", + " \"TGFA + RASi\": {\"erk12\": 0.15, \"akt\": 0.25, \"hsp27\": 0.12},\n", + " \"TGFA + MEKi\": {\"erk12\": 0.20, \"akt\": 0.75, \"hsp27\": 0.18},\n", + " \"IGF1\": {\"erk12\": 0.12, \"akt\": 0.88, \"hsp27\": 0.10},\n", + " \"IGF1 + PI3Ki\": {\"erk12\": 0.10, \"akt\": 0.20, \"hsp27\": 0.10},\n", + " \"TGFA + IGF1\": {\"erk12\": 0.92, \"akt\": 0.90, \"hsp27\": 0.85},\n", + " \"Dual + MEKi\": {\"erk12\": 0.20, \"akt\": 0.82, \"hsp27\": 0.15},\n", + "}\n", + "inhibitors = {condition: {} for condition in inputs}\n", + "inhibitors[\"TGFA + EGFRi\"] = {\"egfr\": 1}\n", + "inhibitors[\"TGFA + RASi\"] = {\"ras\": 1}\n", + "inhibitors[\"TGFA + MEKi\"] = {\"mek12\": 1}\n", + "inhibitors[\"IGF1 + PI3Ki\"] = {\"pi3k\": 1}\n", + "inhibitors[\"Dual + MEKi\"] = {\"mek12\": 1}\n", + "\n", + "condition_layers = add_cellnopt_conditions(\n", + " signaling,\n", + " inputs=inputs,\n", + " inhibitors=inhibitors,\n", + " measurements=measurements,\n", + ")\n", + "signaling.history.snapshot(\"conditions_added\")\n", + "\n", + "print(\"Condition layers:\", list(condition_layers))" + ] + }, + { + "cell_type": "markdown", + "id": "condition-inspect", + "metadata": { + "tags": [] + }, + "source": [ + "The AnnNet object now contains both the pathway and the experiment. The following small display helper reads selected protein attributes across its condition layers. It is independent of CellNOptDAG and is used only to make compact tables in this notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "layer-table-helper", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def vertex_layer_table(network, layers, columns):\n", + " \"\"\"Return selected vertex-layer attributes as a pandas table.\"\"\"\n", + " rows = {}\n", + " for condition, layer in layers.items():\n", + " rows[condition] = {\n", + " label: network.layers.get_vertex_layer_attrs(protein, layer).get(attribute, np.nan)\n", + " for label, (protein, attribute) in columns.items()\n", + " }\n", + " return pd.DataFrame.from_dict(rows, orient=\"index\").rename_axis(\"condition\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "experiment-table", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
TGFAIGF1EGFR inhibitedRAS inhibitedMEK inhibitedPI3K inhibitedERK1/2 observedAKT observedHSP27 observed
condition
Basal000.00.00.00.00.050.080.04
TGFA100.00.00.00.00.900.850.80
TGFA + EGFRi101.00.00.00.00.100.150.08
TGFA + RASi100.01.00.00.00.150.250.12
TGFA + MEKi100.00.01.00.00.200.750.18
IGF1010.00.00.00.00.120.880.10
IGF1 + PI3Ki010.00.00.01.00.100.200.10
TGFA + IGF1110.00.00.00.00.920.900.85
Dual + MEKi110.00.01.00.00.200.820.15
\n", + "
" + ], + "text/plain": [ + " TGFA IGF1 EGFR inhibited RAS inhibited MEK inhibited \\\n", + "condition \n", + "Basal 0 0 0.0 0.0 0.0 \n", + "TGFA 1 0 0.0 0.0 0.0 \n", + "TGFA + EGFRi 1 0 1.0 0.0 0.0 \n", + "TGFA + RASi 1 0 0.0 1.0 0.0 \n", + "TGFA + MEKi 1 0 0.0 0.0 1.0 \n", + "IGF1 0 1 0.0 0.0 0.0 \n", + "IGF1 + PI3Ki 0 1 0.0 0.0 0.0 \n", + "TGFA + IGF1 1 1 0.0 0.0 0.0 \n", + "Dual + MEKi 1 1 0.0 0.0 1.0 \n", + "\n", + " PI3K inhibited ERK1/2 observed AKT observed HSP27 observed \n", + "condition \n", + "Basal 0.0 0.05 0.08 0.04 \n", + "TGFA 0.0 0.90 0.85 0.80 \n", + "TGFA + EGFRi 0.0 0.10 0.15 0.08 \n", + "TGFA + RASi 0.0 0.15 0.25 0.12 \n", + "TGFA + MEKi 0.0 0.20 0.75 0.18 \n", + "IGF1 0.0 0.12 0.88 0.10 \n", + "IGF1 + PI3Ki 1.0 0.10 0.20 0.10 \n", + "TGFA + IGF1 0.0 0.92 0.90 0.85 \n", + "Dual + MEKi 0.0 0.20 0.82 0.15 " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "experiment_columns = {\n", + " \"TGFA\": (\"tgfa\", \"input\"),\n", + " \"IGF1\": (\"igf1\", \"input\"),\n", + " \"EGFR inhibited\": (\"egfr\", \"inhibited\"),\n", + " \"RAS inhibited\": (\"ras\", \"inhibited\"),\n", + " \"MEK inhibited\": (\"mek12\", \"inhibited\"),\n", + " \"PI3K inhibited\": (\"pi3k\", \"inhibited\"),\n", + " \"ERK1/2 observed\": (\"erk12\", \"observed\"),\n", + " \"AKT observed\": (\"akt\", \"observed\"),\n", + " \"HSP27 observed\": (\"hsp27\", \"observed\"),\n", + "}\n", + "experiment = vertex_layer_table(signaling, condition_layers, experiment_columns).fillna(0)\n", + "experiment" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "experiment-plot", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(11, 4.8))\n", + "matrix = experiment.to_numpy(dtype=float)\n", + "ax.imshow(matrix, cmap=\"Blues\", vmin=0, vmax=1, aspect=\"auto\")\n", + "ax.set_xticks(range(experiment.shape[1]), experiment.columns, rotation=45, ha=\"right\")\n", + "ax.set_yticks(range(experiment.shape[0]), experiment.index)\n", + "for row, column in np.ndindex(matrix.shape):\n", + " ax.text(column, row, f\"{matrix[row, column]:.2g}\", ha=\"center\", va=\"center\", fontsize=8)\n", + "ax.set_title(\"Perturbations and measurements stored in the AnnNet condition layers\")\n", + "ax.set_xlabel(\"Experimental variable\")\n", + "ax.set_ylabel(\"Condition\")\n", + "fig.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "fit-intro", + "metadata": { + "tags": [] + }, + "source": [ + "## 3. Fit the network with CORNETO\n", + "\n", + "CORNETO reads the signed interactions and experimental conditions stored in AnnNet. CellNOptDAG searches for one set of reactions that explains all nine experiments. The selected reactions are shared across the experiment, although their activity can change from one condition to another.\n", + "\n", + "CellNOptDAG predicts an inactive or active state for each protein, whereas the synthetic measurements vary continuously between `0` and `1`. It therefore searches for the binary response pattern that is closest to the observations rather than expecting a perfect numerical match.\n", + "\n", + "We use a small value of `lambda_reg`. Reducing disagreement with the measurements is the first priority; when two models perform equally well, this value favors the model with fewer reactions." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "fit-model", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Solver status: optimal\n", + "Total absolute error: 3.70\n", + "Mean absolute error per measurement: 0.14\n" + ] + } + ], + "source": [ + "method = CellNOptDAG(lambda_reg=1e-3)\n", + "problem = build_cellnopt_from_annnet(\n", + " method,\n", + " signaling,\n", + " network_slice=\"prior\",\n", + " condition_layers=condition_layers,\n", + ")\n", + "solution = problem.solve(solver=\"SCIPY\")\n", + "\n", + "total_error = float(problem.objectives[0].value)\n", + "number_of_measurements = sum(len(values) for values in measurements.values())\n", + "\n", + "print(\"Solver status:\", solution.status)\n", + "print(f\"Total absolute error: {total_error:.2f}\")\n", + "print(f\"Mean absolute error per measurement: {total_error / number_of_measurements:.2f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "fit-result-text", + "metadata": { + "tags": [] + }, + "source": [ + "### Which routes were selected?\n", + "\n", + "The fitted network keeps both stimulus-to-readout branches. It also keeps `RAS → PI3K`, which helps explain why TGFA produces a strong AKT response while RAS inhibition strongly reduces it.\n", + "\n", + "The direct shortcut `EGFR → PI3K` is not selected. If it were present, PI3K could remain active after RAS inhibition, making the low AKT measurement harder to explain. The candidate routes from IGFR to ERK1/2 and from RAS through p38 to HSP27 are also unnecessary for this fit.\n", + "\n", + "An interaction that is not selected should not be interpreted as biologically false. It was available in the candidate network, but this experiment can be explained without it." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "fit-plots", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "tgfa\n", + "\n", + "\n", + "tgfa\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "egfr\n", + "\n", + "\n", + "egfr\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "tgfa->egfr\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "grb2\n", + "\n", + "\n", + "grb2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "egfr->grb2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "shc\n", + "\n", + "\n", + "shc\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "egfr->shc\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pi3k\n", + "\n", + "\n", + "pi3k\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "egfr->pi3k\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "sos\n", + "\n", + "\n", + "sos\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "grb2->sos\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "shc->grb2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ras\n", + "\n", + "\n", + "ras\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "sos->ras\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "raf1\n", + "\n", + "\n", + "raf1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ras->raf1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ras->pi3k\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "map3k1\n", + "\n", + "\n", + "map3k1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ras->map3k1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "mek12\n", + "\n", + "\n", + "mek12\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "raf1->mek12\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "erk12\n", + "\n", + "\n", + "erk12\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "mek12->erk12\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "prak\n", + "\n", + "\n", + "prak\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "erk12->prak\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "hsp27\n", + "\n", + "\n", + "hsp27\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "prak->hsp27\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pip3\n", + "\n", + "\n", + "pip3\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pi3k->pip3\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pdk1\n", + "\n", + "\n", + "pdk1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pip3->pdk1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "akt\n", + "\n", + "\n", + "akt\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pdk1->akt\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "akt->raf1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "igf1\n", + "\n", + "\n", + "igf1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "igfr\n", + "\n", + "\n", + "igfr\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "igf1->igfr\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "igfr->shc\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "irs1\n", + "\n", + "\n", + "irs1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "igfr->irs1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "irs1->pi3k\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "mkk4\n", + "\n", + "\n", + "mkk4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "map3k1->mkk4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "p38\n", + "\n", + "\n", + "p38\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "mkk4->p38\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "p38->prak\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "(
,\n", + " array([,\n", + " ,\n", + " ,\n", + " ], dtype=object))" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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Lhg19OLQgeoP1eWSSy6xcfFf//qX/cJXk5lXsbCw0B6zv8tJAzjwunfvbuOsSayYypu6ktpm6O0pp5zivzhmLpibob01+zEm1vmG49Z222232TZMvA1VPWkS2b75xnyxNVTsDBXn0Uj7uboYIohZKvm2226zS/WZ5ZB//vOfe++8807vrbfe6h09erTdn5iY6H3rrbdCLgc4fvx4+7jzzjvP+7vf/c576qmn2v1ZWVkBy4s+/vjjdgnZsWPH2qWfzbGXXnqpXe45KirK+/bbbwec/6GHHrLHJyUlec8991zvHXfcYZcnNec3y6uapaIbulxrTd99951/uVpz++6774Y8rqCgwC73bo7p06eP94orrvD+9re/9f7f//2f99BDD7X7ay4PbZamPv300+3+Xr162ff0pptu8nbo0MG/nyXigYYvEb83oZaIN2bOnGmXNzZxxSxXamKNWY7U/G72m/trL0fas2dPe64jjzzSfs7NEtJmmXffZ7f2Uqlm2XoTF8x9Zkn4a6+91sbNiy++2Dt48GC7f8aMGf7jWSIe4cy3ZLBZArw+Zgl283fb/N3zLdnuWx7YfJZMX8J8tsxnzHzWzP7u3bvbJd19brnlFtunMMuXX3fddfZY078wn8f4+Hjv9OnT/cdWVFT4zzNo0CDbT/jVr37lbdu2rd1nPpO1n1+oJeJN+2Y5d3Of6WPcfvvt9vmafsI555wTMs6Y52X2H3300d4//OEP3gceeMA7ceJE//1ffvmljTfm/TjhhBPs6zL9KnO+jh072tfSUE3dH9rb/U8++aR9beb5m/6aea1miXqzr3///t7du3eHXCIewMHp/vvvt30g8zk94ogjvDfffLP37rvvtp9vX19m1KhR/uP/+Mc/2n0mVpmYamKx6SeZeGv2hYofN9xwg//730UXXeS96667vNdcc42Nf3FxcfYcPqbflJ6e7j3jjDNsbDQxzbecvTl3bm5us703rQ2RGI32ww8/2ASH6ZCZzpbpWJhO1W9+8xv7hae2ml9qPvroI5swMR0U86E2X7iWL18ecPySJUtsB2jkyJHenJwcGxDMB910iKZNm1ZnwsZ0/kyH0nTGzONM4DDnmT179j4lgYzevXv7A5XpRNbF3Pevf/3Ldn5Msso85y5duthAZZJau3btCjreBNoePXr4X58JsuXl5SSBgGZKAhnLli3zXnLJJd727dvbL5Tm9he/+IXdH8rWrVttotfEGBP/TJwx5/V9+a2dBDIKCwu9f/nLX7wjRoyw8dI8zsRP88XsmWee8RYXF/uPJQmEcGaSm+Zz8MQTT+z12BNPPNEe+9577wUkgcxnyXwOzGfLfFbMZ+3yyy/3btmyJeDxJkn7y1/+0jt06FBvZmamPdZcWDHHLly4MKi9srIy+zk0/RVzbEpKir3Y9PrrrwcdW1cSyFi0aJH3lFNOsY83n2eT2Jg6dWqdn13z+TbP08Sr6OjokOc17ZkvUKbPYZI+JqnSr18/G5vef/99b2M0ZX+oIf2lyZMn23/LjIwM258x/wbmi1peXl7QsSSBgIOf+R5244032lhpYpGJI6ZvdPLJJ3ufe+45+12l5oXtv/71rzbxY44z333M57+kpKTe+GG+D5pigjZt2tjHtWvXzl44N/21moUBb775pvfCCy+0sdHEW/N8zPMy35l27NjRLO9Ha+Uw/2ls9RAAAAAAAADCC3MCAQAAAAAARACSQAAAAAAAABGAJBAAAAAAAEAEIAkEAAAAAAAQAUgCAQAAAAAARACSQAAAAAAAABGAJBAAAAAAAEAEIAmEBisvL9fixYvtLQA0FjEEwP4ijgAgjgD7J2Y/H48Isnr1ag0ePFhj085RSkxW8zbudqulONJSW6Tdzzb8o0XaBQ50DBmjE5XiSOeNPsC+8LzNe4xWG0cSf3mYotumNGvbHpdHLSUpO6lF2t152yct0i7QHHFk0aJFGjRoEG82Ig6VQAAAAAAAABGAJBAAAAAAAEAEIAkEAAAAAAAQAUgCAQAAAAAARACSQAAAAAAAABGAJBAAAAAAAEAEIAkEAAAAAAAQAUgCAQAAAAAARACSQAAAAAAAABGAJBAAAAAAAEAEIAkEAAAAAAAQAUgCAQAAAAAARACSQAAAAAAAABGAJBAAAAAAAEAEIAkEAAAAAAAQAUgCAQAAAAAARACSQAAAAAAAABGAJBAAAAAAAEAEIAkEAAAAAAAQAUgCAQAAAAAARACSQAAAAAAAABGAJBAAAAAAAEAEIAkEAAAAAAAQAUgCAQAAAAAARACSQAAAAAAAABGAJBAAAAAAAEAEIAkEAAAAAAAQAUgCAQAAAAAARACSQAAAAAAAABGAJBAAAAAAAEAEiGnpJ9DavPTSS7riiisC9uXk5GjQoEG6/fbbddppp6klHXvssfZ26tSp+32uNWXztaF8sSq9FcqO7aRByUcpPiop5LEub6WWlkzXdudaRTmi1DGuj/omjbY/G7mVWzS76JOAx8Q44nR85mXB7ZYv0AbnElV6ncqO6ahBiWPrb7dsprZXrqtqN7a3+iYc6m+3pnUVi7S8fJZ6xg9Tn4SRwe0Wztb6ogVVrze+iwZnHa/46OTQ7XqcWpo3VdvKVle1m9Rf/TKOCmh3deFsbSpepApPiRKiU9U9dYS6pgwJeT5ElkiKIw21zrtMG7RKLlUqS201QCMV70hote22dNsIf5ESR5zfr1PlrE3ylrsU3TNL8af1U1RKfMhjvU6XKj5bIdfSnVK0Q7FDOyjuxF5yRFX9bXaty1P5K/MCHxQfo5S7jg46V+X09XLN2VzVbo9MxZ3SV4562nV+vkruZVXtxgxur9jje/rbDTjvrI2q/HK1Yo7oqrhje4Y8X+mU1Sr/fp08ZZWK65OjlPOGKCqtjrYrXCp+f7GcP223bceP6qTk0/rLEV3ddumUVSqfuVGewgpFZyYq4ZgeSjy8a8jzIXJESgwBIhFJoAPkxRdfVP/+/eX1erVt2zb9+9//1vjx4zVx4kR7G+42VyzXmrJ5GpJyrBKj0rSsdIYWFE/RYWmhX9vSkmkqcO3UqLRT5fZWamHxVEU7YtUnaVTAccdkXCyHHHt+cwS361yhNRULNCTpaCVGpWpZ2Q9aUDpVh6WcGrrdshkqcO/UqOST5JZLC0u/qWo3YUTAccXufG2oWKKUqMyQ59lUvNgmbYZk/UxJMelamv+N5u/+TKPbnhvy+CV5U1Xg3KZD25xlX+9PuycrJipOfdIPr3odJUttUmlo9klKjW2j3IpNWpw7xZ47J4GOFyIjjjTUFu86rdVSDdJhSlSylmu+FmqmRunYVtluS7eN1qU1x5HK+Vvk/G69Es4cIEdmoiomr1T5O4uVdHng33ifik9XyL2lUImXDJe30q2K95dIcdGKHxeYbEn69djqWnlHcF/EtWCrKqetV9z4AYrKTJDzi1X2XAmXHhKyXefklfJsKVL8RcOkSrecE5faduOO6RFwnGdXiU0sOdqEvsBklM/aqNIvVyn1omGKzk5S8YdLVPi/ecr41ZiQxxe/t1iuDflKu+4wm4wqfn2BHPExSj65b9X55mxS2ZTVSrl4uGI6pqpyVa6K315ozx3XN6fO54HI0ZpjCBCpGA52gAwePFhjxozR4YcfrrPOOksff/yx4uPjNWHCBLUG68sXq1vCYLWL66G0mGwNTj5aea5tKnTtDjq20lOhrc5V6p98uDJi2tqqod5Jo7SxYom8Xk/AsXGORFvVU7UlBrdbsVTd4geqXWx3pUVna3DSkcpzb1OhO0S73gptrVyt/gljqtqN6ajeCSO10bk0oF2P16OFZd+of+IYxTpCX0nbULxA3VKGq31Sb6XFtdGQrBOVV7FZhc6dIV5vubaWLtOAzGOUEd9e2QldbPJnQ/FP/nZNgsjsb5fYS0kxaeqcPFCpsTkqdG5v4L8AIkFrjyMNtVGr1EV91NbRSamODA3UKOVrl4q8+a2y3ZZuG61La44jpgIodnRnxQxoq+j2qUo4fYA8G/Ll3lYUdKy3rFKuhdsVf1JfRXdOV0yPLMWN66lKU83j8QYc60iJtdVEdkuOC253zmbFHNpZMf3bKKpdquJ+3l+ejQXybA/drnvRdsX9rLeiO6UpunumYo/pIdfcwHa9Ho9NDsWe2FuOxLqv0ZZ9v16JR3VX/ND2iumUptQLhsq1JleuzYVBx3pKK1Uxd4uSzxyo2G4Ztmoo6eS+Kp+23t+2a32+YnvnKH5wO0VnJSnhsM6K7pgq18aCBvwLIBK05hgCRCqSQM0kISFBcXFxio2N9e+7//77NXr0aGVlZSktLU0jRozQ888/bzPtNX311Ve25DE7O1uJiYnq2rWrzjnnHJWWljb6XE3B43WryJ2rrNiO/n1J0WlKjEpRgWtH0PGF7l0yzyIrpvp4k5AxSZpST2Cn5fuCNzU173XNK/rcVucEtevJDThPUlSaEh2m3Z31tNshRLvVHbXVFfNtBVDb2NAVOB6vS4WVu5Sd0Lm63Zh0JUanKd+5Lej4AueOqnbjq483CR+THCpxVXWqMuI6KL9iq4oqq5JXJqFU4spXVnyXkM8BaG1xpKHs5175ylIb/74kR4oSlKQC5ba6dlu6bbR+rSWOeN0eebYX26SKT1RmohwZCfKESIi4t5q/+15Fd8/w7zPDuFRWKW9u9fM3Sv89UyWPT1PZmz/Z6pyAdl0eeXcUK7pbrXbTE+TeHJwE8uxJSEV1rW43yjznMpe8eWX+fZXfrbcVQDF96q6+8brctpIptnd29WvITlJUVqIqNwQniF2bCiSvN+D42D458pZWyr3ndcV0z1Tl+jy59jzPyjW58uwsVWyf6scArTGGAJGM4WAHiNvtlsvlsgFr+/bt+tvf/qaSkhJdfPHF/mPWrVun6667zgZAY+bMmbrpppu0efNm3XPPPf5jfv7zn+uoo47SCy+8oIyMDHv/pEmT5HQ6lZSU1OBzNcaOHTu0c2dgYmXVqlX21szFYzpSpmqnplhHopze6g6NT4WnTLGOuID5cOL2VPk4PWVKjs6wlT9mTqG06DZye51aV75Qswonamz6ef6KIKe3Yk+7gXNixEYlyOktD9FueXC7ex5rnmey0pXv2qktzlU6IvWMOt8Lp8ec26u4WvMOxUUnyukuDT7eXarYqHhFOaJDvF5zfKY6JvdXubtY07a95h/+NjjrBFs5BLSGOFJfDGmMSpl4I8Up8HMfp3g5Ffy5byot1W5Lt43Wp9XGkXKX+dMsR61KHUdSrLwlVZ+hmuy+hJiAuXB8j/WWVEo5UlRKnOLH91dUh1Spwi3nzA0qffFHJd0wxl8RZCp7qtqNDWpXpSHaLa0Mbtcc63tO2Uk2seNetE0JVwUOka/NY56nV4pKDXzN5rl5iyuCjy+ukCMxNqBt8xpt28VOqa2UMLKTPAXlyn/0u6qhbw4p5fwhiq2RtEJkC+cY0pT9EaA1IQl0gJiyyZpM2aQZQ3vSSScFjLH18Xg8NjNuAuwTTzyhP/7xj3I4HPrxxx9VXl5uA+6wYcP8x9cMvA09V2M89dRTNhPfXEwiyGw+6THt9H3BW9pSsVI9Eofu2ett8qvti8q+1cDEw+scBtZ0zQa+/7vLN2p98QINzfqZHQaW79xqJ5JOjElTVnynpmgQrUA4x5GmiiEtdd2vJa83cq0TTanVxpED8EGJykm2m09C5zSVPjVTrgXbFHfEPs7Xt5fnaSqLzDCwuJP7ypEQmFjab6HarvX2O1fuUvn365Vy8TDFdEiVa12+St5fYoeGxfbMatrng7AUzjGkJb7TAOGAJNAB8sorr2jAgAH25127dun999/Xr371K5tNv/HGG/0lkQ8++KBmz56twsLCoKx1u3btNHz4cFtyee211+qGG26w2fOePYNXi2jIuRrDtHXeeecFZc3PPPNMW11jehG1q34qvWVB1UGGqeQx1UNm7h1fVY6pAKpZIVObOS41OktlNYZtVVXxmHYDr4SbYVa1q4Oq2k0IbnfPY83zrPCWqsRToHmlX/of45XXzjG02blSx6ZdWHVs9J52bRVPNae7THHRwauSmX1mHiSTZPJVA/ke66smWlkwQ12SB9uKICM1LscOI1tfNI8kEFpFHKkvhjRGnKquWldVwKT79ztVEVQp05Raqt2WbhutT6uNI2beHMeeappalTe1q4MMu6/cZYeR+SpjfI+tXdXjf0x0lKLapsibX93fMZU1Ve1WBrWrpFDtxga3a47d85xMBY83t0wVby2scTLJs6FA7oXblHjTEf7dUeZcDslT5JSqR7rLU+IMuTJZVGq8rVyq2bZ9rJ33qOq5lk5aqYQxXZQwouoCVEyHNFVuKlDZt2tJAiHsY0hT9keA1oQk0AFiguWoUdVlvSeffLLWr1+vO++8U5dccolWrFihn/3sZza7/eyzz6pz5842MH7wwQf6y1/+orKyqg5Hr1699OWXX+qRRx6xAdeUX5qAefPNN+uWW26xx8yaNatB52qMtm3b2i0Uk9gwCRqzrLuZ5NkodReqzFOs9Jjgx6RGZ9sLT3murf7jc11bbPWNmdMnFDOBcrE7Txkx7QLbjcpSrjnPnnmBzNw+ZV7TbpvgdqNyqtp1m+Nrt5tqL5AdkXJWwGMWlX1nJ5zuHje4RrsxSovN0e6KTcres3JXqatAZe5CZcQFD99Ki21r282t2Oxf6ctU/phha8kx6f55hmpfyTC/UQGA1hJH6oshjWE/994M5WqnslQVD8q8JSpXqdJ14K5St1S7Ld02Wp/WGkdsgqZditzr8hSzp2LFk1cmb365ojoF9y2izRAvOeRen+8/3jxWZrhUVvAFHcNMnuzZWaLoLtXJWEdMlBxtU+Ren1c1p5BpN79M3oJyRXcybQSKal+1z0xYHd1jz/O07cbYFc3MnD0JVwcOA3N+sty+tpjRgfMEOmKiFd0xTZWrd/tX7nLvLpUntyzk8K2Yzml2iFfl6lz/8ZWrdtnhaNF7Kp7MKmmKqtUfMUkuOiRoBTGkKfsjQGtCEqgZDR06VJMnT7bB8o033rATqpkZ9s0Eaz4myNVmMuVmMxn3OXPm6F//+pd+/etf20z4hRde2KhzNZWuCYO0rGSG0mJy7BLxy0tnKDOmvV0prNxTojmFn2hwyrF2Va64qAR1iOulpaXTNTj5GLm9Lq0snaMu8QPl2FOhs758kV3yPSU6Uy5vpdaVL7BVOx3iewe2Gz9Ay8pm2kSNOX552SxlRrezv9t2SyZpcOLRyohpo7ioeHWI7amlZT9ocOJRdon4leVz1SVugG3XdHlSowOXhI9WjK0qSo5OD2w3ZZhdFj49tq0SY9K1LP9bZcZ3tCuFlbuKNXvne3b5eDOnj6kc6pDUT8vyvtHgrBPtEvErC2eoa8pQ/+vNSeyu9UXz7VCwlNhsO0n05tJlGpjB8s+InDjSUJ3VSyu0QGneTLtcuvk5Qzl21azW2G5Lt43Wr7XEkdhDO9tl4U1ixEwI7fx8paK6ptuVwjyFFSr73zwlnDnQrsplKnhihrSzy7U7Th8gr9Mt59drFDuqkxx7kiDOHzbaSZ6jcpLs/ZXTN9iqnZghgRd8zGPMsvBm7qCojEQ5v1ylqC7pdqUwT1GFKl6br7jTB1Q9r8RYRQ9qZ4+PO62/KSNW5TdrFTPC167DJpUCG4iSkmIVlR2cnEoc200lHy5RTOd0Oyl0yYdLFdMz064U5i4oV+F/frBDu0xSKCopTvGHdFTJB0vkuHCofU2ln61Qwthu/tccN6CNyr5bZ5NkMe1T7STR5XM2K+WsQQfk3wytQ2uJIUCkIgnUjObPn29v27RpY6tAYmJiFB1dPXmwyW7/73//q/Px5lgzW37//v312muvae7cuTZg7su59lfn+H52SNeSkmlyeZ22wsdM7Oyr4jHDrEy1i8+A5CO1tGSa5hR+ahMhHeP6qFfiCP/9ZujUstIZqvCUKsYRp/SYHB2WepoSopID243rW9Vu2YyqdmM6alDi2Kp2tadd1Wg38QgtLZthk0PmfeoY21u94oc3/vWmDLLPbUne13Z1sez4rhqcdXzVczftuvJscstnYOY4Lcmbqtk731eUaTdpgHqljfbf3ztttH2fzDFmqFhCdKr6pI2x7QCREkcaqpOjh50YfpnmySWnrY4ZoJGttt2WbhutX2uJI7GHdLRDuio+XS5vuctW5iSMrxpmLY9H3t2lVZUue8Sf2lcVn62wySFT/RI7rL3ijulefUKXRxWTV8hb6JQjIVpRHdOUeNkIO6yqpphhHWy7zkkrpQqXXe3LnNtye+zwLtVoN+7kPjb5VPH6AtuuSUbFHtVtn15zwugudsLn4ncX26FesX1zlHbenn6N2yP3zhKb7PFJOWeQit9brMKnZ9m240d1UtKJ1RfYkk7sI7m9dh4gk8CKykhQ0kl9bTtAa48hQKQiCXSALFq0yM6kb+zevVvvvfeevvjiC5111lnq0aOHnR3/73//u50MzYyNNcc8+uijdrK1mp5++mk7NtYcb2bJNxOqmRn1jRNOOMHeNvRcTa1n4nC71ZYYnaqTsq4J2BfjiNWQlGM1pI5z9UgcZrcGtZswzG5B7Ual6qT0K4PbTTq6znZrOyzl1Drv65V2qN1qS4pJ08ldbglsNypOQ7N/Vu9wj34ZR9oNiOQ40lA9HP3VQ/0jpt2WbhutR2uPI3FHdrdbbaZCJ+We4wL2OeJilHDGQKmOBUHjxnazW0PEHtHNbqHaTbr72KB248cPkMY36NRKuOSQeu9POr633WozkznnPBbYj3HExyj1omHSRaHPZYa3JZ/W325AJMYQIBKRBDpArrjiCv/P6enpNkiaoGYmJzOOO+44G/gefvhhjR8/Xp06ddI111xjx6xeddVV/seaSdQ+//xz3Xvvvdq2bZtSUlI0ePBgTZw40Y6Zbcy5AIQX4ggA4giAlkRfBGh9HF6z5h7QAIsXL7YJqLFp5yglppknJ3VXlzY3N0da8ESPzeGzDf9okXaBAx1DxuhEpTgC591C0/vC8zZvK1ptHEn85WGKrj2XzgHmcXnUUpJCzA/UHHbe9kmLtAs0RxwxVU6DBjEVAyJP1Sy1AAAAAAAAaNVIAgEAAAAAAEQAkkAAAAAAAAARgCQQAAAAAABABCAJBAAAAAAAEAFIAgEAAAAAAEQAkkAAAAAAAAARgCQQAAAAAABABCAJBAAAAAAAEAFIAgEAAAAAAEQAkkAAAAAAAAARgCQQAAAAAABABCAJBAAAAAAAEAFIAgEAAAAAAEQAkkAAAAAAAAARgCQQAAAAAABABCAJBAAAAAAAEAFIAgEAAAAAAEQAkkAAAAAAAAARgCQQAAAAAABABCAJBAAAAAAAEAFIAgEAAAAAAEQAkkAAAAAAAAARgCQQAAAAAABABCAJBAAAAAAAEAFIAgEAAAAAAEQAkkAAAAAAAAARgCQQAAAAAABABIhp6SeA8HPlW3PUvW98s7b5ZdEgtZQe8StarG2gNfrv1GUa1K95YwiA1iW5TbJiO6Q2a5vj++aopSzfXdpibQOt1TtLztP0isRmbfOaET82a3tAKFQCAQAAAAAARACSQAAAAAAAABGAJBAAAAAAAEAEIAkEAAAAAAAQAUgCAQAAAAAARACSQAAAAAAAABGAJBAAAAAAAEAEIAkEAAAAAAAQAUgCAQAAAAAARACSQAAAAAAAABGAJBAAAAAAAEAEIAkEAAAAAAAQAUgCAQAAAAAARACSQAAAAAAAABGAJBAAAAAAAEAEIAkEAAAAAAAQAUgCAQAAAAAARACSQAAAAAAAABGAJBAAAAAAAEAEIAkEAAAAAAAQAUgCAQAAAAAARACSQAAAAAAAABGAJBAAAAAAAEAEIAkEAAAAAAAQAUgCAQAAAAAARACSQAAAAAAAABGAJBAAAAAAAEAEIAkEAAAAAAAQAUgCAQAAAAAARACSQAAAAAAAABGAJNAB4nA4GrRNnTrV/5jt27fr7rvv1vDhw5WWlqa4uDh17txZZ599tiZOnCi32+0/1jyurnOee+65Ac/FPNbsz87OVkVFxYF6yZrwn1ydP2a1Th24Un+4ZrNyd7rqPHbjGqfuvnKzzhi+SmeNXKV/379DlU7vPrU74/nl+tcJn+lvoyfq7ZtnqHhXeZ3H7lxVqDd+OU1/P/JjPX70x3r31pkq2FraoHY+++9G3XHULP1q+HT9+/olKtjprPPYLStL9I+rFumWQ2fo1tEz9Z+blmr3lurntfyHfF3b//uAzRwLRHIMqct7nxTrxPM2K7PvGkV3WCWXa99iBe0i0kRiHCmevELbfztJW2/+WLlP/SB3Qd19gqJPl2vXQ99o600fadej3+132/MnLNCr50/Q86e+pEl/+EKluaH7F+WFFfr+iel649K39PwpL2nCJW9p7v/myeP2NKidDR8s0YzrPtB3l7ylRQ9/K2d+WZ3Hrn93keb+brK+vfhNzfvjF0H35y/erm/OnxCwfX/5O4141WjtIjGOAK1dTEs/gdZqxozAL/QPPPCAvv76a3311VcB+wcOHGhvZ86cqdNPP11er1fXX3+9xowZo5SUFG3YsEEfffSRDZrPPPOMrrrqqoDHP/jggxo3blzAPhMYa3r++eftbW5urj744ANdcMEFamqT3i7Qq0/u1m8fba8OXWP11AM79cBNW/X4G12Cji0r9eiuyzZp6Ogk/fu9rirMc+vx32/X0w/u1E33tW1Uuz99sF7Tnl2u8X8eqYzOyfrybwv1wZ2zdMkLR4c8/p1bZqrDwAxd9r9j5HJ6NOVvP2nib2fr0pePqbedae9u16dPb9QVD/VVmy4JevPBNfrvrct0x6tDQx7/7xuWqvvgFP32zWG2nbf+ulbP3b5Cd70eePzD3xyqqCiH/dlBShYRHEPqU1rm1bixiTr+qET9/q+5tAs0UKTFkdLp61X82QqlXzZCMTnJKnx7ofKfn6Ps244M/QCPV4mHdVbMhny5djXsglBdlk9aobmvzte43x6j1A6pmvHUTE154GuNf/znwc9zd4nKC8p1xI2HK6NLuvLW5eubx76T1yuN/L9D6m1n29drtP7dxep/4xgltkvRqpfmasnj0zT8/hNCHu91e9X2qO5K6pSrsu3FdZ53zNNnyLGnPyLHnlsgAuMIEAlIAh0gJuDV1KZNG0VFRQXtN/Lz83XmmWfaADlt2jR16NAh4P5LLrlEP/30k3bv3h302D59+oQ8p8+2bdv06aef6rjjjtP06dNt8DwQAfP9V/J19uWZOurkVPv77Q+306XHrtOqJeXqPTAh4NjFP5Ypd6dbt/2lreLiqzIfV92Ro/t/tVVX/iZbyanRDW53zoTVOvQXvdTvhE7291PvH6Gnf/65ti/LV7v+GQHHluZWKH9Tic5+7DBl96h6node0tsmjfbmq9e26LhLO2rEz3Ls75c92Fe/P3GONi4tVpcBKQHHFuVWatfGcl3/z/7q0DPJ7jvhso76763Lg86blh2n6Bg6WwgWaTGkPpecW/V5nTp9/76k0S4iTaTFkZKpa5U0rqcSD+lof0+/9BDtvOdLVW4sUGyX9KDjU0/rb2+LPl6230mgRe8v0eCzB6nHUd3t78fcfpTeuPRt7Vq1Wzm9A7/IZvXI0gn3HOf/Pa1jmoasG6w136zdaxJo86QV6nxqX7UZXXWRrd/1ozXrpo9UvC5PKd0zg47vfv4Qe7vurYX1JoHi0hPkiOZqFIJFWhwBIgFJoIPAs88+a8sm33777aBg6TN0aOiKk715+eWX5XK5dOutt6p9+/Z64403tH79enXr1k1NxVnh0ZqlFbrut238+zp2jVP7zjFaOj84CeR0ehUdI8XEVic/EhKj7HCwFYsqdMjhVYmTvXE53dqxokDH3TbYvy+zc7LSOyZpy8K8oCRQYkacMrsma9HHG5XdM1Uel1dLJm1S9zH1Vx9VOj3atKxE597Rw7/PVANld4rXmgVFQUmg5IwYte2WoJkf7lD7XklyV3o1+5NdGnBE4PMx/nDSHLldXnUbnKKzf9PdnzQCIimGAGh54R5HvJVuuTYVKO3sQf59MW2SFZ2dJOe6vJBJoKbidrqVuyZXY647LCCxk9o+RTuW7gxKAoViKoMS0uLrPcZT6Vbxunz1vGS4f5+pBkpok6zClbtDJoEaatbNH9vhaKk9s9TzF8OV1Cltn8+FyBXucQSIFKT8DwJffPGFoqOjdeqppzb6sR6PxwbEmltNL7zwgg3Cp5xyiq688kp7/EsvvdSEz14qzPfI45EysgMreNKzopW/u3rMr8+AYQm20vjlJ3bbxE/eLpcdSmbk1TOPUG1l+U55PVJSVmCnKSkzXiW5weOETZnzhU+P1doZO/To6Il67IiPlLexROP/MqredkryKm07qVmxAfvN76bqpzYzvOvXzw/W4mn5unH4dN0yaoZ2bCzTlY/09R+T3iZO//fn3rrh3wN0zWP97L5HLvpJhbvrnmcIaK0xBEDLC/c44ilxSl4pKjWwTxCVEidP0YGdO6S8sFxeM7QsI/CiV0J6gsrrma/Hp3BLoZZ9tlz9TqnuJ4RSaV6H16vY9MB2YtPiVVnP3Ef1ictMVN9fHqZBdxylAbccYfeZuYOc+3g+RLZwjyNApCAJdBDYuHGjLa1MSkqqNxia32szZZCxsbEB26pVq+x93333nVasWKHLLrvMBmRTPtmjRw+9+OKLdpxufXbs2KHFixcHbL7z1ra3c9WWmROjPzzRQZPeLtSpg1bq4qPWaviYqtfuH4/eEI2cG9Z00CY/uEA5PVP1f/87Vpe+eLTik2M08Xezm7IZeTxevf6n1erYO0m/e3OY7nhtqBKSo/Xc7dXDwdr3TNKR57a3VUR9RqXrun/0V2JajGZ+sKORrQHhH0MAtDziyH7Yj7nqy/LK9Nndn6v3uF7qfVwvNbekjmnqcFwvW0WUMaCtBt52pGKS47T9m7XN/lwQ/ogjQHggCXQQu+222wK+mJlJ1mp7+OGHNXv27ICtS5cuAZOnmWy5YWbTv/zyy23p5JQpU+pt+6mnntLgwYMDNjPGN5T0zGhFRSmo6qcg1x1UHeQz5rgUvTm9p93e+7GXjjm1as6PDl0aPkIxMTPOTqZs5vqpqTSvQsm1qoOMdbN2asPsnTrtLyPVcXCmOh+SrdP+PFKrv9uuHSsL6mwnJTPWtlO76sf8Xrs6yFg2s0DLfyjQFQ/3Vfchqeo9Ik1XPtRXi77J06blJSHbiImNUud+Sdq1mZUOEHkxBMDBK1ziSFRynORQUNWPp9gZVB3U1EzFj7mIVZZfHjzEKyOxzseZ+z+54zO16ZujI/dU4dQn1rwOhyOo6qeysCKoOmhfRcVEKblrhsp3hO6vAK05jgCRgiTQQaBr167auXOnSksDJyX8zW9+4w+CdY2r7dmzp0aNGhWwxcfHq6ioyI7HPeyww2yFgJmozWxnnXWWDZy+YFqXG264QYsWLQrYzCz8oZjJnXsOiNf8mdXPf+vGSm3b5NKA4fV3SrLaxCgxKUrffFqk7HbR6jOo4Z2YmLhote2brvWzd/n3mYmfC7aUquOQ4HHxrnK37TyZ1+/jqzwyw73qEhsXpc79k21ix2fXpnLt3lyhnsOqklc1OW07gYtr+Nupo3rC4/Zqy8pSO88QEGkxBEDLC/c44oiNVkzndDmXV/cJXLtK5N5dqrj9mCunIaLjopXVM0tb5m/x7yvcWqSibcVqO6B6vsSaKooq9Mmdk+xKYsfedXSDKqGjYqOV0j1D+Yurq4bLdhSrfGeJ0vrsfd6hhvB6PCrdVKCEtslNcj5ElnCPI0CkYGLog8CJJ56ozz//3M54f+655/r3m+y3LwMeFxfXqHNOmDDBBuBZs2YpMzO48/P+++8rLy8v5H1G27Zt7dZQZ16aoScf2KG+g+PVoWucnvrzDg05NNFOCr1zW6XuuGSTfvtYe/UfVnVF7NM3C9Szf7ySU6M0Y0qxXv33bv32sQ6NXilr5IU99eUjC9V+QIZdIt4s+d5lRLadFLpoe5lev/Z7u3x8xyFZ6jQ0y1bcfPaneTr8yr5yV3r0zb+WKKNLsh0iVp9xv+igN/+yVt0GJSunS4Jd8r3PqDQ7nCtve4X+fvkiXflwX/UYmqpew9MUG+fQq/es0knXdLYTQ3/w+Dq16Zrgn/h5yiub1aZLotr3SlRFiVuTn9+s4rxKjT4tdGcRaO0xpD65eW5t2OzSqrVV1XgLFlcoOtqh3j1ilZJ84K5lRFq7iGytIY4kH9tDhW8tVGy3dEXbJeIXKa53tp0U2p1fpt3/mK6My0f4k0Lu3FJ5SirlKayQt8JtVxEz9mUS6UFnDtSMJ2cqp2+O0uwS8T+o/ZB2dlLokp0l+viOz+zy8W37t5GzxKlP75pkq27G3ni4rQgyTCIosZ7KIaPjSX20+qW5Su2ZqYS2KVr98lylD2hjh3NV5JZqwZ++Uv8bD1fansmoy3eVyFXslDO/XJ4Kl11FzPBNIr3p0+V2cmkzEbS73KWNE5eqsrBcbY9ksl1EZhwBIgFJoIPA1VdfrUcffVR33nmnxo4dW2eGvDFMVjw1NdVmus0yjjXNmTNHd9xxh1577TXdeOONagqnnJ+uvF1uPXHPDhUXejRibJJ+89d29j63S9q4plLlZdVVMOtWVOi5v+1SabFH3XrH2TmCfMvLN8aws7rbSaAnPzhfFUWV6j66rU65t2p5VbfLo9x1xao0lTlm3HtWvM578nBNfWKxXr5kqhzRDpsYOv9fhys6tv4vVkee015Fuyr12p9Wq6zQrQGHp+vSB/pUtVPp1fa1ZXKWVbVjhojd9MwgvffYOv31/AX2y1vP4am68emBiomrasdMiP3Gg2uUv71Ciakx6j44Rbf/b6gy2lEJhMiMIfWZ+HmJrvp19ZXvw07eZG+nvNtRxx5x4FbUi7R2EdlaQxxJOqKbTegUTPhJnrJKxfdvo/RfVK2k5XV75d5eLK+zeuh60UfLVDZzo//3XQ9Otbcd/nNGo9vuf0pfO7/P909Ml7PYqU4jOuro3xxp7zOrbhVsLJCrvGqi210rd2vnnoql1y9+03+OlHYpuvj1+pe8NvP3mOFgK5+bI1dJpTKGtFO/X1atSuZ1eVS2pcgme3zWvbkwYH6fH++cZG+PeeuiqudW6daql+baBFJMUqxSe2Vr2H3HKz6LWIPIjCNAJHB4GzurL/aJGbf6zjvvqLi4OOT9M2fO1Pjx421Z4/XXX68xY8YoJSVFu3fv1rfffmvHs5599tl6/fXX7fFTp07VuHHjbHlkzUy7YcochwwZYs9jHldbZWWlLdc0yyvOmzevwa/BTOxqxtE+P6mbuvdt3mTFl0XVS742tx7xO1uk3Wv6fdci7eLg1JpiyE9Tu2hQPxKeB1pU+5UHvA2El9YUR3L+OE6xHZt3GfPxfXPUUpbvDhxe01ymnlf1bw20xjhy31sD1LFX/dV3Te2aET82a3tAKNSVHyRMgDSBzmTQTab7vPPO0/HHH69f/epXdkWdZ599Vq+88kqDzuUbG3vdddeFvN9MyGYC+Pz58zV37twmfR0AWgYxBABxBEBLoz8CHPyoBEKDUQnUvKgEQmtDJVDzohIIrRGVQM2LSiC0RlQCIdJRCQQAAAAAABABSAIBAAAAAABEAJJAAAAAAAAAEYAkEAAAAAAAQAQgCQQAAAAAABABSAIBAAAAAABEAJJAAAAAAAAAEYAkEAAAAAAAQAQgCQQAAAAAABABSAIBAAAAAABEAJJAAAAAAAAAEYAkEAAAAAAAQAQgCQQAAAAAABABSAIBAAAAAABEAJJAAAAAAAAAEYAkEAAAAAAAQAQgCQQAAAAAABABSAIBAAAAAABEAJJAAAAAAAAAEYAkEAAAAAAAQAQgCQQAAAAAABABSAIBAAAAAABEAJJAAAAAAAAAEYAkEAAAAAAAQAQgCQQAAAAAABABSAIBAAAAAABEAJJAAAAAAAAAEYAkEAAAAAAAQASIaekngPDzwjXjlBqX07yNOivVUua0G9oi7V4zu0WaBQ64a4/trxRHOu/0AfaFh7cYaErvzd/aYm/ooC7ETAD76fqTWuYt/M/klmkXdaISCAAAAAAAIAKQBAIAAAAAAIgAJIEAAAAAAAAiAEkgAAAAAACACEASCAAAAAAAIAKQBAIAAAAAAIgAJIEAAAAAAAAiAEkgAAAAAACACEASCAAAAAAAIAKQBAIAAAAAAIgAJIEAAAAAAAAiAEkgAAAAAACACEASCAAAAAAAIAKQBAIAAAAAAIgAJIEAAAAAAAAiAEkgAAAAAACACEASCAAAAAAAIAKQBAIAAAAAAIgAJIEAAAAAAAAiAEkgAAAAAACACEASCAAAAAAAIAKQBAIAAAAAAIgAJIEAAAAAAAAiAEkgAAAAAACACEASCAAAAAAAIAKQBAIAAAAAAIgAJIEAAAAAAAAiAEkgAAAAAACACEASCAAAAAAAIAKQBAIAAAAAAIgAjU4CORyOBm1Tp071P2b79u26++67NXz4cKWlpSkuLk6dO3fW2WefrYkTJ8rtdvuPNY+r65znnntuwHMxjzX7s7OzVVFRoZZw33331fs+rFu3LuD4wsJCPfTQQxo9erQyMjIUGxurdu3a6eSTT9brr78e8DrMY+s676hRo/zHXX755QH3mfe3V69euv322217tZljzPNuamvyftDX6/6jz9f8Qz9ufV8VrpI6j12dN0MzNr2qyasf18zNExrXTuFsfb35OX2+6Un9uHOiKtx1t+PyOLVw9+f6YtN/NGXzM1qa9408Xk/gcymcrW+2vKjPN/1b3259WRuKF4Y819qt3+ubBY9pyty/aN7KCaqoLK77OW75Vj8seVZf/vhnzV72QtD9uYXr9MWc+wO2r+c9pEhBHAlEHNm7dd5l+tb7sb7yvq/53mmq8Ja36nZbuu2DHTEkEDGkWvHkFdr+20naevPHyn3qB7kL6v7cFH26XLse+kZbb/pIux79rlH/D5ZOWa3c+6do128nqfD5OfIU1t0P9Va4VPTGAu2++3Pt/uMXKv5wibzuwL5I6ZRVyv3L19p11yTlPfSNymZsqPN8Gz5YohnXfaDvLnlLix7+Vs78sjqPXf/uIs393WR9e/GbmvfHL4Luz1+8Xd+cPyFg+/7ydxQJiCOBiCNA5Ihp7ANmzJgR8PsDDzygr7/+Wl999VXA/oEDB9rbmTNn6vTTT5fX69X111+vMWPGKCUlRRs2bNBHH31kE0HPPPOMrrrqqoDHP/jggxo3blzAPpPsqen555+3t7m5ufrggw90wQUXqKVMmjRJ6enpQfs7dOjg/3nlypU22bNjxw5de+21+v3vf6/MzExt3bpVkydP1pVXXqmlS5fa97Smm266SRdffHHAPvMe1pSYmOj/N8jPz9c777yjxx57TD/99JM+//zzoH9Dk4RrSpsKF2p13kwNaXuKkmIztHTXV5q//SON7nRhyONNIqZDykAlx25Tqaug4e0UL7ZJmyFZP1NSTLqW5n+j+bs/0+i2gQlCnyV5U1Xg3KZD25wlt7dSP+2erJioOPVJP9zev7lkqU0qDc0+SamxbZRbsUmLc6fYc+ckdPWfZ/OueVq79VsN6nGWkuIztXzDJP20+h0d2v/ykO16zevLHqrk0i0qq8ir8/UcNfRWORxVuViHHIoUxJHQIj2O1GWLd53WaqkG6TAlKlnLNV8LNVOjdGyrbLel2w4HxJDQIj2GlE5fr+LPVij9shGKyUlW4dsLlf/8HGXfdmToB3i8Sjyss2I25Mu1q7TB7ZTP2qjSL1cp9aJhis5Oskmdwv/NU8avxoQ8vvi9xXJtyFfadYfJ63Sp+PUFcsTHKPnkvlXnm7NJZVNWK+Xi4YrpmKrKVbkqfnuhPXdc35yAc237eo3Wv7tY/W8co8R2KVr10lwteXyaht9/Qsi2vW6v2h7VXUmdclW2ve6LV2OePkOOqD39EEdk9EeII6FFehwBIkGjk0AmiVNTmzZtFBUVFbTf98E988wz7Yd72rRpAcHDuOSSS+wHevfu3UGP7dOnT8hz+mzbtk2ffvqpjjvuOE2fPt0mhPYnCWSuBrz44ou2qmZfjBw5Ujk5gX+oa3K5XPa9MAmrWbNmacCAAQH3n3/++brnnns0b968oMd27dq13vfCqP1vYALzmjVr9MUXX2jt2rXq0aOH/769nWtfbCiYp27pI9Q+papDM6Ttyfp2w3MqrNihtPi2Qcf3yRprb1fmTmtUEmhD8QJ1Sxmu9km9q9rJOlHfbn1Jhc6dSotrE3BspadcW0uXaWSbM5QR376q3fTDtbzge/VOG22TLyZBlJ3QRe0Se9n7k2IGakPRAhU6twckgTbumKWubUerXWbVv9vAHmdo2sJ/qqh0m1KTqs5dU69OVV/UVm+eWm8SKC42RVF7kkCRhDgSWqTHkbps1Cp1UR+1dXSyvw/0jtJ0TVKRN1+pjoxW125Ltx0OiCGhRXoMKZm6VknjeirxkI729/RLD9HOe75U5cYCxXYJ/lKbelp/e1v08bJGJYHKvl+vxKO6K35o1d//1AuGKu/BqXJtLlRMp7SAYz2llaqYu0VpV49SbLeqz27SyX1V8vEyJf2sj028uNbnK7Z3juIHt7P3Rx+WpLJp6+TaWBCUBNo8aYU6n9pXbUZ3sb/3u360Zt30kYrX5Smle2bQc+1+/hB7u+6thfUmgeLSE+SIjqz+CHEktEiPI0AkOKDR/tlnn7VDwR555JGgBJDP0KFDgyp+GuLll1+2QejWW2+11URTpkzR+vXrdbB6//33tWTJEpsprx0sfbp162aDalPxDRkz/wYHcjiYx+uySZjsxOqkiakGSoxJU3751qZtp3KXshOqM/6mYicxOk35zm1Bxxc4d8grKSu++niT8DHJoZI9iaeMuA7Kr9iqosqqRGRexWaVuPKVFd+lul2PS0Wl25WZVv1Hx1QDJcRlqKBk0369pmkL/6VvF/xd81e9oZKyXft1rtaKOBIZcaQuHq9bRcpXlqqTvEmOFCUoSQXKbXXttnTbrRExJDJiiLfSLdemAsX3q/7cxLRJttU0znV5TdeOyy33lkLF9q6uTjdtRGUlqnJDftDx5jnJ6w04PrZPjryllXLvqhrOHtM9U5Xr8+TaVmR/r1yTK8/OUsX2CayA91S6VbwuXxl7kkWGqQZKaJOswpXBF1QbY9bNH2vGLz/Qoke+Venm4KkEIh1xJDLiCBApDmgSyGRso6Ojdeqppzb6sR6PxyZ5am41vfDCCzaxdMopp9iSQ3P8Sy+9pJZi5jWq/XxrznVk3gvDDI1rivfCDK/bG5Mtj4mJUc+ePXUgOd1mvL1XcdFJAfvN7053adO149nTTlTtdhJDtmP2xUbFK8oRXX1sVOKec1Ud3zG5v7qnjtC0ba9p8sZ/adaO9zQw81h/5ZA91mXG2nsVF5Mc2G5MkpyVdc9HVJ/4uBQN7DZew3tfoCE9z7H7zNxB+3q+1ow4EhlxpC6VctrbOCUE7I9TvJwqb3XttnTbrRExJDJiiKfEaf5UKyo1PmB/VEqcPEVNN2+kp6RyTztxge0kx8lbHNyOp7hCjsTYgCob85wMb3HVZz1hZCclHtND+Y9+p113fKaCp39Q8tkDFds1sOqv0rwOk1BKD4wNsWnxqqxn7qP6xGUmqu8vD9OgO47SgFuOsPvM3EHOfTxfa0UciYw4AkSKA5oE2rhxox0ulpSUVG8AML/XZoZ2mUmTa26rVq2y93333XdasWKFLrvsMptkMkPCTGmgGc7VkEBSV4Kp9v6aSZy9ad++fdDz7devX8B74cuM12Se797avOuuu4LObSqfavOdwwyve/rpp/Xee+/pzjvvVNu2wcOx9saM8V28eHHA5nv/g+39PW8STdJM4Dj33eUbtb54gYZm/UxHtLvIJoCW5k1VbsXmpm44QHJCjjq1GWGHkmWmdtPQnucpJiZBW3YvaPK2wh1xJDzjSONiSN2aKbocNO22dNutETEkPGNIU8aRFhXqA11ryh3nyl0q/369Ui4epozbxirlrEEqeX+JrQg60JI6pqnDcb3sULKMAW018LYjFZMcp+3frD3gbYcT4ghxBIjoOYGawm233aYnnnjC//vPf/5zffzxxwHHPPzwwza5U1OXLl0CJoQ2FUC+UkAzl8+9995rOyQnnBB6cjyfP/3pT7r//vuD9pvJqWtOUG06SbVX96rLl19+GTSJWkJC4JWaUMz7YIa0+QwaNEiLFi0KOOaWW26x8yfVVDPBZJSUlNgOWU0XXXSR/vKXv2hfPPXUUyHfo1BMJY7p0dSuxjG/164O2h9x0eb9dPireKrbKQvZjtlX6amwQyt81UC+x/qqiVYWzFCX5MG2IshIjcuxw8jWF81TVnwnf8WPbbfWamdOV6niYgOrg/ZVVFS0UhLb1Tt/EAIRRw7uONKYGFKfOFVdMa+qgKmOsU5VBFXKNKWWarel244kxJCDO4Y0No6YShyTXKld9eMpdgZVB+2PqOTYPe04pQ6BlUiOlOB2TNveskq7GpivGsg+1vQs9lQElU5aqYQxXZQwoqrfEdMhTZWbClT27VrF9szynyvWvA6HI6jqp7KwIqg6aJ9fX0yUkrtmqHwHlckNQRxpXXEEiBQHNAlkJv8ys8eXlpYGVAP95je/8QeAukoJTblfzWXQfYqKivT222/rsMMOs1VGZvJp46yzzrJjQk2CaG9JIDOL/WmnnRaw79BDD7VJpJr74+Mb3mkYNmxYvZOomffCMPMW9e1bNXmyYWbIP/LIqlUrrrvuupBL3ZtZ70O9F7Vn0v/222/9k2abWfQnTJhg51z67W9/q8a64YYbdN555wXsM1ffQo3vjXLE2EmZd5dtVHZS1dXF0sp8lbkKlZEQei6ofWHbic3R7opNyt4zabOZVLrMXaiMuODJmdNi29qLbaaqxzfJs6n8iY1KUHJMun+eIZNErMlR68JdVFSMUpPaKa9onbLTqspQTbKm3Jmv9OSmWZHArCZWUrZDGSmscFAbcSTwvQiXONKYGFIfk8BN9WYoVzuVpap5MMq8JSpXqdJV/eWoqbVUuy3ddmtEDAl8L8IlhjQ2jjhioxXTOV3O5bsU379qXiDXrhK5d5cqLsSEyfvKEROt6I5pqly92z9ps2nDk1sWNHzLiOmcVpW4WZ3rP75y1S45kmIVnZPsn89IvpW5fO047MivAFGx0UrpnqH8xTuUOaSq31O2o1jlO0uUVmv+oH3l9XhUuqlA6f3q7tNGIuJI4HvRWuMIECkOaBLoxBNPtEv5mVW8zj333ICKHl9VT1xc4JjqvTFBwCSVzGz0ZinCUJOV5eXlhbzPp2PHjnarrXv37nsNTPvzXvz3v//VxIkTdfvtt/v3m/JoX4l0ampqyIDZEGYm/ZrP3bRnZvc3me9f/OIX/ve7oWo+r4bomn6IXRY+Pb6dEmPTtWzX18pM6GxXBit3FWn2lrft8vG+pFBZZaGdoNlUC7k9lXYVMSPUSmIB7aQMs8vCp8e2VWJMupblf6vM+I42CVXuKtbsne/Z5ePNnD6mcqhDUj8ty/tGg7NOtEvEryycoa4pQ/3Lsuckdtf6ovlKjc1RSmy2nSR6c+kyDcwIXIa5S9vD7LLwaUkdlGiWiN84WRkpXe1wrnJnoX5c8YoGdz9L6SlVV/HKKgrkcpepwlUst7vSriJm+FYS27B9phLjs+ywMLfHqXXbptvKovZZQxv17xQJiCPhGUcaG0Pq01m9tEILlObNtMulm58zlHPAV8lqqXZbuu3WhhgSnjGk9vNqiORje6jwrYWK7ZZuEyyFby9SXO9suzKYO79Mu/8xXRmXj/Anhdy5pXaOH09hhbwVbruKmBFqJbGaEsd2U8mHS2zSyUwKXfLhUsX0zLQrg7kLylX4nx/s0C6TFIpKilP8IR1V8sESOS4cKq/TrdLPVihhbDf/kuxxA9qo7Lt1iu6Qqpj2qXaS6PI5m+2wsNo6ntRHq1+aq9SemUpom6LVL89V+oA2djhXRW6pFvzpK/W/8XCl7ZmIunxXiVzFTjnzy+WpcNlVxAzfSmKbPl1uJ5dOMs+93KWNE5eqsrBcbY8MHDIY6YgjkRNHgEhwQJNAV199tR599FE7Fnzs2LF1rhDWGKbSxwSWDz74wAaJmubMmaM77rhDr732mm688UYdTEyl0sCBA/Xggw/aaqP+/auGHx0oporpySef1LHHHqs///nPeuaZZw5oe53ThqjCXaolu760Q7DMSmGD25xk7/OYKpfKXJuE8VmZN01bihb7f5++6RV7e3Kv2+tvJ2WQKjylWpL3tSq9FcqO76rBWcdXtSOPSlx5cnurJxEfmDlOS/KmavbO9xXlcKhj0gD1Shvtv98sFW+qcMwxZqhYQnSq+qSNse3U1CnnEDkri7V0w6dyucqVldZTA7uPt/eZx5eW77bJLJ/VW77W1hrz+8xcUvX+nzjq3qrn6nFr+cZJqnAWKiY6QWnJHTWq3+VKiEtt5Dvf+hFHIieO1KWTo4ec3got0zy55LTVMQM0stW229JttzbEkMiJIUlHdLMJnYIJP8lTVmkrgtJ/Mdze53V75d5ebJMwPkUfLVPZzKp5koxdD061tx3+c0a97SSM7mInfC5+d7Ed6hXbN0dp51W1I7dH7p0lAe2knDNIxe8tVuHTs2zFT/yoTko6sXf18z6xj+T22nmAzHC2qIwEJZ3U17ZTm5m/xwwHW/ncHLlKKpUxpJ36/fKwqtfo8qhsS5FN9vise3NhwPw+P945yd4e89ZF/hXHVr001yaQYpJildorW8PuO17xWU03nL81II5EThwBIsEBTQJlZGTYZM348ePtcKnrr79eY8aMUUpKip0w0JT6mTK/I46oWo1gb8y4UlMBZM5Te74gwySaTMmgSRQ1dxLoxx9/DJoTyDBBMi0tzU5gbd6Lk046yQ5lu+aaa2wwMxVLZkjbDz/8oAULFtS51OK+OOaYY+zKbGbCbFM+aSbPPpB6ZY62W21JselByZ2hbU+x2z61k3ao3YLaiUnTyV1uCdgXExWnodk/q3fYRb+MI+22Nz06HGW32hLjM/zJHZ/BPc60W126dxhrN+wdcSSy4khdejj6q4f6R0y7Ld12a0IMiawYknJyX7vVFpOdFJTcybhshN32RdLxve1WW3RWknIeC1wV1xEfo9SLhklVeZcgDjMPz2n97dYQXc8aZLfaTGWQL7nj0/9XY+xW57nOGGg31I84EllxBGjtDvjE0CbpY5I3ZrIwEzBMksbpdNr5fExp37PPPmsn+2oI34TQZpxpKGYSMTNB9EMPPaS5c+dqxIh9+8O+L04++eSQ+80yir45ivr06aP58+fbbLYZtvbcc8/ZoW1ZWVk2SWYmPDPPvymZCbYnTZqkBx54QC+88EKTnhtoLsQR4ghADNk7+iLAgUNfhL4I0Fo4vA1ZUx2Q7NKsgwcP1tgul9tVtJqVs3qoVXNzt2uZOTg+n31fi7QLHOgYMkYnKsVR/5wb2H9feN7mbUSrjSM5fxyn2I5pzdp2ZWnL9UUG7WWeogNl6nmvt0i7QHPEkfveGqCOvcwqx83nmhE/qsVcXzVVR7P7z+SWaRd1CpxUBwAAAAAAAK0SSSAAAAAAAIAIQBIIAAAAAAAgApAEAgAAAAAAiAAkgQAAAAAAACIASSAAAAAAAIAIQBIIAAAAAAAgApAEAgAAAAAAiAAkgQAAAAAAACIASSAAAAAAAIAIQBIIAAAAAAAgApAEAgAAAAAAiAAkgQAAAAAAACIASSAAAAAAAIAIQBIIAAAAAAAgApAEAgAAAAAAiAAkgQAAAAAAACIASSAAAAAAAIAIQBIIAAAAAAAgApAEAgAAAAAAiAAkgQAAAAAAACIASSAAAAAAAIAIQBIIAAAAAAAgApAEAgAAAAAAiAAkgQAAAAAAACIASSAAAAAAAIAIQBIIAAAAAAAgApAEAgAAAAAAiAAxLf0EEH48aYlyJyY3a5tRpU61lJKuKS3WNgAACNY9I1HJ2UnN+tZsi2+5vshJPVJbrG0ArcR/JrdMu9efFFmvNwxQCQQAAAAAABABSAIBAAAAAABEAJJAAAAAAAAAEYAkEAAAAAAAQAQgCQQAAAAAABABSAIBAAAAAABEAJJAAAAAAAAAEYAkEAAAAAAAQAQgCQQAAAAAABABSAIBAAAAAABEAJJAAAAAAAAAEYAkEAAAAAAAQAQgCQQAAAAAABABSAIBAAAAAABEAJJAAAAAAAAAEYAkEAAAAAAAQAQgCQQAAAAAABABSAIBAAAAAABEAJJAAAAAAAAAEYAkEAAAAAAAQAQgCQQAAAAAABABSAIBAAAAAABEAJJAAAAAAAAAEYAkEAAAAAAAQAQgCQQAAAAAABABSAIBAAAAAABEAJJAAAAAAAAAEYAkEAAAAAAAQAQgCQQAAAAAABABSAIBAAAAAABEgAOeBHI4HA3apk6d6n/M9u3bdffdd2v48OFKS0tTXFycOnfurLPPPlsTJ06U2+32H2seV9c5zz333IDnYh5r9mdnZ6uiokIt4b777gt4jrGxseratauuueYabdu2rc7H3Xbbbfb40047rc5jNm7cqBtuuEF9+/ZVYmKisrKyNGTIEHtuc1/t57C/1m79Xt8seExT5v5F81ZOUEVlcZ3HrtnyrX5Y8qy+/PHPmr3shaD7cwvX6Ys59wdsX897KPS5ds3Q1BX/0hdL/6a5G95WhavudlfvnKYZa17S50sf0Q9r/xd0//bC5Zq97nVNWfa43easn6DC8u0hz7Vp+Vea/ekDmvnh3Vo6/UU5ywtDHlfpLNWa+e9p7uSHNPOD3+nHyX/VxqVfyOv1+I8p2Lla09+7I2D74aM/1vk6IhkxpPXGkMZY512mb70f6yvv+5rvnaYKb3mrbrel225tiCOtN45s+GCJZlz3gb675C0tevhbOfPL6jx2/buLNPd3k/XtxW9q3h+/CLo/f/F2fXP+hIDt+8vfCXmu3Z8s16pbP9GKX36gTf+cLldB3Z/P3R8t1foHvtKKa9/Xhger+7s+RT9u1sa/fauVN03UyhsnauNj36l8Q36d5/vmpfn66ymv6t4jn9crt01S0a7SkMeVFpTrw4e/16NnvaF7jnxej545QV89N1ced3V/ZM2PW3T3of8N2P407qU6245UxJDWG0OASBRzoBuYMWNGwO8PPPCAvv76a3311VcB+wcOHGhvZ86cqdNPP11er1fXX3+9xowZo5SUFG3YsEEfffSRTQQ988wzuuqqqwIe/+CDD2rcuHEB+0yyp6bnn3/e3ubm5uqDDz7QBRdcoJYyadIkpaenq7i4WJ9//rkee+wxTZ8+XfPnz7eBtKbKykq9+uqr/sdt3rxZnTp1Cjhm06ZNGjFihDIyMvSb3/xG/fr1U0FBgZYsWaK33npLa9asUZcuXeyxV199tU4++eT9ev6bd83T2q3falCPs5QUn6nlGybpp9Xv6ND+l4c83iRAOmQPVXLpFpVV5NV53qOG3iqHoyo36VBwYN+c/5PW7JymIZ3GKzEuQ8u2fakFmz7QYd0vqbPdjumDVFierVJncIcqt3SD2qT2Ut924xQTFae1u2fqx/VvaGyvaxQXk+Q/bvu62dq0bIr6jLpQCclZWvvTRK2Y9ZoGH3190DmdZYWqrChRj2FnKDGljUqLdmjV3LfsfV0GnBhw7MhT/lDjDxiFeaEQQ1pnDGmMLd51WqulGqTDlKhkLdd8LdRMjdKxrbLdlm67NSKOtM44su3rNVr/7mL1v3GMEtulaNVLc7Xk8Wkafv8JIY/3ur1qe1R3JXXKVdn2ui8gjXn6DDmi9vxtDvEls+C7ddr98VJ1uPpQxbZJ1o4JC7TlPz+o62+PqbPdtDFdVd4+T5U7S4LuL1u+S8lD2qvNeUMUFR+j3Z8t16bHvlePv5yo6JT4gGN/nLhcX78wV+feN05ZnVL1yd9naMLdU3Ttf8cHnbdwZ6lK8ss1/vYjlNMtQzvW5Om9P39j+9jHXzMy4Ni7PvmFova8Zv9rhx8xpHXGECBSHfAkkEni1NSmTRtFRUUF7Tfy8/N15pln2qTPtGnT1KFDh4D7L7nkEv3000/avXt30GP79OkT8pw+Jiv96aef6rjjjrPBySSE9icJZL64v/jii7r88tBJj70ZOXKkcnJy7M8nnHCCdu3aZc/3/fffByWzPvzwQ+3cuVM///nP9cknn+jll1+2lVI1Pfvss/Ycs2bNUo8ePfz7zftpjvV4qq/6mKoqs+2PjTtmqWvb0WqXOcD+PrDHGZq28J8qKt2m1KT2Qcf36lT1xWX15qn1JoHiYlMUtScJFMr63Dnqln2o2qX1s78P7niqvlv1tK3eSUtoF3R877ZH2dtVO74LmQQa0D4wKTOwwyn6quDvyi/brLapffz7t62epg69j1R2pyFV5x15vq30KcnfrOSMwD9gyent1W/0pf7fE1Jy1LH30dq96aegJFBcfIocUdF1vl4QQ1prDGmMjVqlLuqjto6qz9pA7yhN1yQVefOV6shode22dNutEX2R1hlHNk9aoc6n9lWb0VVfCvtdP1qzbvpIxevylNI9M+j47udX/Q1f99bCepNAcekJckTX3RfJm7JamSf0VurIqs9n+ytGau1vJ9vqnYSuwZ/PnDOrLnTu+mBJyCRQ24uHBfze/rIRWvmriSpbuVsph3QMuG/GW4t0xIWDNfi4qvf3nD8eYyt9tizfpY79cgLP0ztLF/+1OiGW3TlNYy8aokVT1gQlgVKyEhUdw8WouhBDWmcMASLVQRXtzQffDAV75JFHghJAPkOHDg0KKg1hAo3L5dKtt95qq4mmTJmi9evX62AxatQoe2tef20mYWWGxJmgarLf5tZcxanJJMZMcq1t27Yhz2/ua6rySY/HraLS7cpMqw7OphooIS5DBSWbtD+mLfyXvl3wd81f9YZKynbVatelovIdykrqVt1uXKYSY9NVULZFTcHtccrtdSk2OqG6XbdLJQVblN6mt39fQnK24pMyVZS7oUHnNZVBMXGJQfvnfv6w5nz6Zy2b8ZKtGML+IYaERwxpDI/XrSLlK0tt/PuSHClKUJIKlNvq2m3ptkEcCZc44nG5VbwuXxmDqy8AmWqghDbJKlwZfLGwMWbd/LFm/PIDLXrkW5VuDhz67al0q2JjvpIGVL/GuLYpis1JUvmapvl8eipc8la6FZUcF7Df5XRr68pc9RxVffEpq3OaMjumauPihvUhSvPLlZhW3cfx+fs5b+qhn7+m/90+WTvW1T0UDXtHXyQ8YggQyQ6qJNAXX3yh6OhonXrqqY1+rMkMmyRPza2mF154wSaWTjnlFF155ZX2+JdeOnjGPK9du9bemvGvtcsiTXnlGWecYauoLrvsMq1atUrffvttwHGHH364fU0mwTV58mQVFoaer6YpuNxm3LtXcTHJAfvN8ClnZfAVroaIj0vRwG7jNbz3BRrS8xy7z8wdVPN8TnfZnnarh2kZsdFJcrr2rd3aVu34Vinx2cpIrO5guZzm3F7FxqcEthufosqKuq8k+pSX7NaOdbPUrvto/764hFT1GnGe+o+5TH0Pu9juW/TNk3KW7/18qBsxJDxiSGNUymlv4xT4pSVO8XKqvNW129JtgzgSLnHEVVJpxnwrNj3wcxKbFq/KeubnqU9cZqL6/vIwDbrjKA245Qi7z8wd5KxxPk+x03QJFJMWOEwrOjVersKmmW9y1/tLFNcxTYm9s4Pm+PF6vLZqp6bkjASV5O79NeduKtTsD5dp1JlV1dRGanaSzv7D0frFIyfqgj8fZ/c9c/WHKs6te24l1I++SHjEECCSHVRJIDPZlwkMSUlJ9SZ4apYC+pihXWbsac3NBBfju+++04oVK2zAMUkmMyTMlBiGykA3JsFUe3/NCav3xhxrHmOGwL399tv6z3/+o4suusiOg63JPEfTjm8OJJPAMllv3/xGPhdffLGuu+46ffnll3Z8rBlLa+ZZMhOwrVu3To21Y8cOLV68OGDzvZ9e0/tpYskJOerUZoQdSpaZ2k1De56nmJgEbdm9QM1l/e7Z2lq4RMM6nemfl8jYn1drkjpLpz2vnC7D7eaTmNpW7bofZoeSpeX0VN/Rlyo6NkE7N8zZz1cR2Ygh4RFDGqPpo83B3W5Ltw3iSLj0RQ6EpI5p6nBcLzuULGNAWw287UjFJMdp+zdVF+qa4/OZ98VKFf2wUR1/OTpobp4GdFnrZJI6L/36Mw07qbeG/ay6srlN9wyNOqO/HUrW45AOuvihE5WYEqd5n6zYn5cR0eiLHDwxpCXiCBAODqokUF3MB79mcsdMHF3bww8/rNmzZwdsvonDfAHGBBzDBB0zl48ZDmaGhe3Nn/70p6AEk2ECWc19vXr1avBrat++vX1MZmamzj//fDum1gxZq8kkqHwlkyeeWDWXjEleHXvssXr33XcDsuPmNT399NN2wrSnnnpKV1xxhZ2A7fHHH9egQYP0zTffqDHMOQYPHhywmfG4Rmy0uQLlCKq+cbpKFRcbWB20r6KiopWS2C5g/qA4f7uBq2BUukuDqpIaa2PePK3a+Z1Gdr1AKQnVQzCM2DhzbkdQ1Y/5vXZ1UOD9JVry/TNKzuysnsPP2uvrTU7roIpShnocCMSQgyuGNEacqoZD1K6AcaoiqFKmKbVUuy3dNupGHDm44khMcqydtLl21U9lYUVQddC+ioqJUnLXDJXvqO7vRKfEmS5BUNWPu6giqDqosfKnrtGuD5aq861HKr5TWtD9puLHJIZqV+mYyZ+TsxLqHQL2wq8+UecBbXT6XUfW+xzMvEDt+2Qrd0vRfrwShEIMaf4Y0pT9EaA1OaiSQGZpQTNhWGlp4Jd8Mzu8L7FT11xBPXv2tPPq1Nzi4+NVVFRkK20OO+wwW2VkKm/MdtZZZ4XMQIdy7bXXBiWYjHvvvTdgn1m9rKFMhts8xpQ6nnPOObYc8qabbgo4xqygZoaJnXfeeTZA+p67SRqZ92jChAlB5+3WrZtdVc28rpUrV+rNN99UeXm57rjjDjWGWZpx0aJFAZtZUc2XsEhNaqe8ouqMvEnWlDvzlZ7cNBO0mVW9Ssp2KDG+eoLFqKgYpSa0VW5p9VxOZrLnssoCpScGTpzYGGbFseXbpuiQLucqPTH4/6+o6Bglp3dU4c7V/n3lJbmqKM1TalbXkOd0OUu15Ptn7dxBfUZeEFBZVNfrLS3arvikrH1+HSCGhEsMaYwoR7RSlaFc7fTvK/OWqFylSteB+7y0VLst3TaII+ESR6JiopXSPUP5NebCKdtRrPKdJUrrEziMal95PR6VbipQQtvqC01RsdGK75Kh0mXVn0/nzhJV7ipVQs99/3yaFcd2vPmTOt18uBJ6BE9qbcTERatDnyy7rLtP7uZC5W0pUpdBoedQKSus0As3fqLMTqk6595j/SuA1cUsH799TZ6dZwj7hu8zB08Macr+CNCaHPDVwRrDZIfNeFGzite5557r328qYXxVPWZCscYwgcUEGDPLvKm6qe39999XXl5eyPt8OnbsaLfaunfv7p/QubGGDRvmn03fvO6TTjpJ//3vf2110aGHHmr3+xJUf//73+1Wm7nflEzWxwTYv/71rzbgNYaZkK2uSdmMLm0Ps8vCpyV1UKJZIn7jZGWkdLXDucqdhfpxxSsa3P0spadUza1TVlEgl7tMFa5iud2VdhUxw7eS2IbtM5UYn2WHhZnJmddtm24rftpnDQ1ot2vmSC3b/qXSEtrbJeJN8iYzqYtdGay8skhz1r+uwZ3GK2NPUsgkiCrd5apwl8jtrbSriBm+lcS2FCzS4i2faVDHU5Ucn2WfnxETFa/oqOqlLdv3OsIuC2+Gb5nEztqFE5WW3cP+XlFWoCXfPaPeoy60SSFXZbmWTHtOjqgou0x8pZ1TyFzdiPJXDm1Z9Z09T1JqW7ldFdq88htbOdSmyyGN+ndCIGJI+MSQxuisXlqhBUrzZtrl0s3PGco54KtktVS7Ld12pCOOhE8c6XhSH61+aa5Se2YqoW2KVr88V+kD2tjhXBW5pVrwp6/U/8bDlbZnbp3yXSVyFTvlzC+3ky+bVcQM30pimz5dbieXTuqUJne5SxsnLlVlYbnaHlm9IIWReXwvbX99gRK6Zdgl4ne+8ZMS++bYlcEq88q06W/fqv3VhypxT1Kocnep3CVOuQrL5XG67Cpihm8lscIZG7Ttlblqf/lIxbVPlWtPdVNUYqyi4gJXEB1z/iB9/NgMdeqfo6xOafrk8Rnqfkh7O5yrYEeJnr/hY513/zibFCovdurFmz61FU3jbx9rK4IMR7RDKZlV8wpNm7DQrhrWpkemKkqc+u5/P6kkr0zDT64eMobGIYYcPDGkqfsjQGtxUCWBrr76aj366KO68847NXbs2DqrfhrDBJbU1FSb8a05o7wxZ84cm1F+7bXXdOONN6qlmIqkJ5980o55/cMf/mCrg0xiyiSozPvw5z//Oegxzz33nH3eJhiassatW7eGfL+Ki4vt2ORQSaz90SnnEDkri7V0w6dyucqVldZTA7uPr65qKd8tt6fSf/zqLV9ra435fWYuecbenjjqXv+KY8s3TlKFs1Ax0QlKS+6oUf0uV0Jc4JWozpnD5HSXaMm2yXK5K5Sd3F2DOp6yp123Spy58tRo1ywNv6Vgof/3GWtesLcnDfydvd2Ut0BeebRoy8cB7Qzu+HN1yqhOQJn5e8zwrzXz35e7skzpbfuo16FViUqvx62y4p3yuKvaNcvGF+dttD//OOlB/znMamIjT65aCtPrcWntTx/KWVaomNgEpWR20eCjf6m4xPR9/BeBQQwJnxjSGJ0cPeT0VmiZ5sklp7LUTgM0stW229JtRzriSPjEETN/jxkOtvK5OXai6Iwh7dTvl4fZ+7wuj8q2FNlkj8+6NxcGzO/z452T7O0xb13kX/lr1UtzbQIpJilWqb2yNey+4xWfFThXZfpR3W1CZ/ur8+UpdSppYFt1uHzP59PtkXNbsbzO6nkizdLwhdOqq5jX31c1FUG/F6oWwsj/dq3k9mrb84HzAra/cqTSj+wesG/U6f1VvLtMEx/+XmXFTvU+tJPO+v3RVc/f5dGu9QWqLK96zWbZ+E1LqiqWHhn/uv8cGR1SdOfEqkUp3JVuffzYdBXuLFV8Spw6D2yja54Zr7Q2TTO8PxIRQ8InhgCR6qBKApnJv0yyZvz48bZSxpQBjhkzRikpKXbJQDNkatu2bTriiKoVG/bGBBRTAWTOYyaDrs0EpMcee8wmiloyCWT06dPHDjsz41a///57zZ8/35Y93nzzzXbMbG3Z2dk2aJrnbsbJ/uUvf9G0adPsBNnDhw9XYmKiLb3897//bd+7v/3tb03+nHt0OMputZkhXL7kjs/gHmfarS7dO4y1W0P0zDnCbkHtxmX4kzs+QzqdZre6HNb9F2qozv2Os1ttCclZOuLs6vc3vU2vgN9D6dR3nN3QtIgh4RVDGqOHo796qH/EtNvSbUcy4kh4xZGuZw2yW22mMsiX3PHp/6sxdqvzXGcMtFtDZP+8v91qi81J9id3fDpcNcpudbZ71zFqjGOvOMRutZkhXA/Ovtb/e8+RHQN+D+Xo/xtuNzQdYkh4xRAgEh1USSDDJH1M8uaJJ56wCSGTpHE6nXY+HzN58rPPPmtXrmgIX/lhXSWGZmJmM0H0Qw89pLlz5wbNZN/czBxDr7zyiu655x6bOTeli3VNXDZkyBD7Xr366qt2UuxLL73U7n/jjTdsgCwoKFBWVpZ9z8zwulNOqaqWAVo7YggxBCCO7Dv6IsD+oy9CXwQ4mDm8DVkjHZDskoqmVPPwQdcrJbF5x9ZGlTpb7N+gqH/LTMQ67d3bW6Rd4EDHkDE6USkOhj4eaF943j7gbQAtFUdGPXaqkrs0bxzZVtxyfZHLhjTNZNeN9btRVcP3gdYYR+57a4A69qqaH6u5XDPiR0Wc609qmXb/M7ll2g0DB9XqYAAAAAAAADgwSAIBAAAAAABEAJJAAAAAAAAAEYAkEAAAAAAAQAQgCQQAAAAAABABSAIBAAAAAABEAJJAAAAAAAAAEYAkEAAAAAAAQAQgCQQAAAAAABABSAIBAAAAAABEAJJAAAAAAAAAEYAkEAAAAAAAQAQgCQQAAAAAABABSAIBAAAAAABEAJJAAAAAAAAAEYAkEAAAAAAAQAQgCQQAAAAAABABSAIBAAAAAABEAJJAQIQoKirSnXfeqZ/97Gdq06aNHA6H7rvvvgY/fseOHbr88suVk5OjpKQkHX744ZoyZcoBfc4ADi7EEQDEEAAIbySBgAixe/du/fe//1VFRYXOPPPMRj3WPOb444+3SZ8nnnhCH374odq1a6eTTz5Z33zzzQF7zgAOLsQRAMQQAAhvMS39BAA0j27duikvL89WAO3atUvPPfdcgx/7/PPPa9GiRZo+fbqtADLGjRunYcOG2eqiH3744QA+cwAHC+IIAGIIAIQ3KoGACGGSP2bbF++//7769evnTwAZMTExuuSSSzRr1ixt3ry5CZ8pgIMVcQQAMQQAwhuVQMBBbsuWLbaCx8ftdis6OjroODPPT9u2bQ/IczBVQEcddVTQ/qFDh9rbxYsXq1OnTgekbQD7jzgCoCljSEv0R+iLAEDTIAkEHOSdrv79Oquo2OvfFxcXJ6fTGXTsvffe26iJnhs7D0hWVlbQft8+cz+AgxNxBMD+xpDenbqoTJ6A/c3dH6EvAgBNgyQQcBAzV91MAuiNF3LUs0eM1qx16cIrd+mDDz5Q7969g668HUj1DSXb12FmAA484giA/Y0hJgF0V2xHtXfE2n3bvJV62Lml2fsj9EUAYP+RBALCQOfuUerZN1pOb9VVONPhGjRoULO1n52dHbLaJzc3196GqhICcHAhjgDYH11iY9UtOt7+HOuWVNm8/RH6IgDQNEgCAWHAJH8qvB5/Eqi5DRkyRAsXLgza79s3ePDgFnhWABqDOAJgf8TGSnF7vjnEupr/vaQvAgBNg9XBgDBQ4fWq3Ou1ty3hrLPO0rJlywKWgne5XHr11Vc1evRodezYsUWeF4CGI44A2B8xMQ7FxlZt5ufmRl8EAJoGlUBoNFdKvCpTEpr1nYtKrBqD3hJ637VELc3pjVK5N8re7o/PPvtMJSUlKioqsr8vWbJE77zzjv351FNPVVJSkq666iq9/PLLWr16tbp162bvu/LKK/Xkk0/qvPPO00MPPWRX/Xjqqae0fPlyffnll03wCoHWa/KW+ToYEEfQmnTPSFBWdlKzttk+OU6K9EqgPW/B/vTK6IsAEeY/k1um3etPUsS95gYiCQSEgQpFq9wbrYpaK3M01vXXX6/169f7f3/77bftZqxdu1bdu3e3S76azVuj6ig+Pl5TpkzRnXfeqZtuukmlpaUaPny47cgdc8wx+/WcADQP4giAJksC7UdhMn0RAGhZJIGAMFDhNUmgGDsv0P5Yt27dXo956aWX7FZbu3btbIUQgPBEHAGw30mgPSVAsfvRHaEvAgAtiyQQEAbKPHEq8cSrrGXmhQbQChBHAOyP+DiHEhKq5gKK9zb/nEAAgKZBEggIA05vjMq9sXJ6zZqsAEAcAdC8ouOiFB0fXfWzm7VlACBckQQCwkDFniRQhbcF1mQF0CoQRwDsj6j4aEUnVCWBotxVtwCA8EMSCAiXL28ekwSqbOmnAiBMEUcA7G8lUIyvEqiSSiAACFckgYAwGQ5WYYeD8ZEFQBwB0PyiY2MUHV/VD4muoD8CAOGKCA6EAacn1lYCmVsAII4AaNFKoDgqgQAgXJEEAsJqLg8+sgCIIwCaX3RcdPXE0HHMCQQA4YpvlEC4DAczlUAkgQAQRwC0gCibBIrx/wwACE8kgYAw4PRUTQxtbgGAOAKgucWY4WB7VgczPwMAwhPfKIEw4PREq8ITY28BgDgCoLk54qLtMvG+nwEA4YkkEBA2w8FiGA4GgDgCoEU44qPlSIjx/wwACE8kgYAwQCUQAOIIgJZkqn98yR8qgQAgfJEEAsIASSAAxBEALZ4E8lUCMRwMAMIWSSAgDFR6zXxAMfYWAIgjAFpmONieSiCGgwFA2OIbJRAGKt3Rcrpj7C0AEEcANDs7HGzPVwcqgQAgbJEEAsJkOFi5m9XBABBHALQMR2KMHMmx/p8BAOGJCA6EgUpPtE0EmVsAII4AaG6OuKgaE0NH8Q8AAGGKJBAQBio9UXK6TRKIThcA4giA5ueIi/EPBzM/AwDCExEcCAOuPVVA5hYAiCMAml1sjBQXW/0zACAsEcGBMOByR8nljra3AEAcAdDsSAIBQKtAEggIAy5vlB0KZm4BgDgCoNmRBAKAVoEkEBAG3LYSKMreAgBxBEBzc8TEyBG7Z3WwGL5CAEC4IoIDYcDl2TMcjImhARBHALQEkwDyzwm05xYAEHZIAgFhwLOnCsjcAgBxBECzYzgYALQKJIGAMODxOuTxOOwtABBHADQ7kkAA0CqQBALCgMft2FMJRBIIAHEEQAsgCQQArQJJICAMeD0Oed0OewsAxBEAzS46VoqJq/4ZABCWSAIBYcDMBeTbAIA4AqDZmcRPNEkgAAh3B+QbpcPhaNA2depU/2O2b9+uu+++W8OHD1daWpri4uLUuXNnnX322Zo4caLcbrf/WPO4us557rnnBjwX81izPzs7WxUVFWoJ9913n30OUVFRWrNmTdD9JSUl9jWbYy6//HL//nXr1tX7/pnz+pjHpaSkBJ179uzZysnJUd++fbV+/Xq779hjj7VbU1u/bqqmf/egvv36Hi1c8IoqKopCHldZWaoVyz7UzOl/07df/9Herls7RV6vp0HtrNv4jb7/4WFNnXa/flr8qiqcodsx1m74WrPn/Udff3+vflzw3zrPN332Y5o67T7NnPMPbd46K+RxC1/+SW///A29dvQr+ur2L1W2uzTkccVbivTK6BdDbmW5ZfaYbT9uDbpvwvGv1f2izVxApgpoP+YEKi4u1q9//Wt17NhRCQkJ9rP2xhtv7PVxL730Up3/D27btk0HAjEkMmNIfdZ5l+lb78f6yvu+5nunqcJb3mrbfe+TYp143mZl9l2j6A6r5HJ5m+bExBH6IhEQR+ZPWKBXz5+g5099SZP+8IVKc0P/rS4vrND3T0zXG5e+pedPeUkTLnlLc/83Tx53w/oiS99aqA8vfUvvnP2qvrt/iv/veyiL31igL279WG+f8T9NueOzkMcseWuhPr7yXb1z1qv69Nr3teqz5XWe75uX5uuvp7yqe498Xq/cNklFu0K/xtKCcn348Pd69Kw3dM+Rz+vRMyfoq+fmBrzGNT9u0d2H/jdg+9O4l+qvBDLbPlYChVNfxKA/Eoj+CNA6HJBKoBkzZgT8/sADD+jrr7/WV199FbB/4MCB9nbmzJk6/fTT5fV6df3112vMmDG2E7FhwwZ99NFHNhH0zDPP6Kqrrgp4/IMPPqhx48YF7DPJnpqef/55e5ubm6sPPvhAF1xwgVqKeU0vvviifT9qevvtt1VZWanYOpbbvOmmm3TxxRcH7TdJsvqY9/yMM85Qr169NHnyZLVt29buf+qpp9TUtm6Zo/XrvtaAgecpITFLq1Z8rCWLJuiQkdcGHVtRUajKyhL16TteSUltVFKyQ8uXvit5pe49j6+3nS3bftT6Dd9oQL9zlJiQpZVrPtHipW9qxLCrQx5vEkvt2w5XUfFmlZXnBj/v7fO0fuM3GtjvPKUkt1d+wVotW/mBPXdWZm//cas+WqmFLy7Q2HuPUmqnVM1+fJa+/f1UnfT0qUHnTGqXrPM+Dfz/bPbfZ6lkR4kSsxID9p/70flyRO9J7DjqTvB4XWZz2Nt9ZT5HpiP+0EMP2Y7466+/rosuukgejyfk/1+1mf93+/fvX+/nrakQQyIvhtRni3ed1mqpBukwJSpZyzVfCzVTo3Rsq2y3tMyrcWMTdfxRifr9X4Pj1r4ijtAXae1xZPmkFZr76nyN++0xSu2QqhlPzdSUB77W+Md/HnRs6e4SlReU64gbD1dGl3TlrcvXN499J69XGvl/h9TbzpovVmrJmz9p9G1HKrl9quY9O0szHv5Gxz18csjjvW6vuo3rpdTOu1SyrTjo/rVTVmvpWz9pzG+OUkbPLO34aZtm/2u6Utqnqv0hHQOO/XHicn39wlyde984ZXVK1Sd/n6EJd0/Rtf8dH3Tewp2lKskv1/jbj1BOtwztWJOn9/78je1vH3/NyIBj7/rkF4qKquqHOPbc1uaISZAjNtH/c2vvixj0RyIvjgCR4IAkgUwSp6Y2bdrYK0+19xv5+fk688wzbTCZNm2aOnToEHD/JZdcop9++km7d+8OemyfPn1CntPHXBn49NNPddxxx2n69Ok2IbQ/SSBzNcAEvJpXyBrDtP3yyy/r/vvvt++Hj3leZ511lq1aCqVr1671vs5QPvzwQ9veoYceqo8//ljp6elBybemtHnTDHXucoTatB1sf+8/8Fz9MP1vKiraotTUwA5MSkp7DRpS/QcgMSlbJSVHaueOhXtNAm3aMlOdOx2utjmD7O8D+pytGXP+rqLirUpNCfx/x+jZrep8a9ZPCZkEKizapMyMXmqTPaDquSRk2jYKizcHJIGWvb1EAy4YqG7jutvfj/jDkXr/7HeUu2K3svoGdj6ioqOUmJ3k/91V7tLmGZs08uZDg9pPyEpUVMzeC/IcHoccboe93Rfmc/DFF1/4O1uGSaCaK7J33HGH/X8lOjq63nMMHjxYo0aNUnMghkReDKnPRq1SF/VRW0enqva9ozRdk1TkzVeqI6PVtXvJuan2dur00Ff39xVxhL5Ia48ji95fosFnD1KPo6r+Vh9z+1F649K3tWvVbuX0DvxbndUjSyfcc5z/97SOaRqybrDWfLN2r0mglR8tU5/TB6jz2G7298NuGatPrn5PeatzldkrK+j4wb8YXvX8XpsfMgmUu3yn2g3roE6Hd7W/9zixt1Z+tFR5K3cHJYFmvLVIR1w4WIOP62F/P+ePx9hKny3Ld6ljv5yAY9v3ztLFfz3B/3t25zSNvWiIFk1ZE5QESslKVPTe+iP7ORws3PoiBv2RyIsjQCRo8QlGnn32WTsU7JFHHglKAPkMHTo0qOKnIUxwcrlcuvXWW+2VhylTpvjLkFvClVdeqY0bN9o/gD4rVqzQ999/b+9rKv/73//ssDiT/Pr8888DguWBKMH2eFwqLtqqzMxe/n2JiVlKSMhUUcHGBp3DVAbFxCTuvZ2SbcpM7xnYTnyGCosa1k5t6WldVFC4QcUl2+3v+QXrVFq2W1kZ1a/F7XQrb2We2o+q/v/TVAOldEjRrkU799rGhqnr5XF51P2Eqg5bTR+c+67eOe1NfX3HFBWsy6/7JGZVMN+2D95//32baD3vvPMC9l9xxRXasmWLfvjhB4UrYkj4x5D6eLxuFSlfWWrj35fkSFGCklSg3FbX7gFFHKkTcST844j5W527JledaiRNTGIntX2Kdizd+99qw1QGJaTF199OpVsFa/Ns0sYnpUOqktulaPeKhrVTW3b/Ntq1bKcK1ufZ33cu3q6iLUVqO6x9wHEup1tbV+aq56iqxLSR1TlNmR1TtXHxjga1VZpfrsS04Cqev5/zph76+Wv63+2TtaOu/sh+DgdrzX0RgzgS/nEEiBQtngQyCRGT9T/11OBhNXtjSkdNkqfmVtMLL7xgE0unnHKKDUjmeDOmuKWYyqWjjjrKPq+az7F79+46/vjjG/U6a79Wn3/+85+67LLLbMA0mfPExPoTK03BzPFjxnLFxgXOAxAblyxnZfAVr9rKynK1dfNsdeh4aIPaiYtLDmwn1rRTsk/P3QwV69pprGbN/be+/v4ezVv4ovr2Ok1pqdVlqRUFFfJ6vErIDOw0xWcmqDxv7/ODrP5klboe201xKXHVyaucJB3++7E69pHjdNQDx9h9n13zaZ1zCuzvFfxFixZpwIABiomJCUqw+u7fm9NOO81+VrOysmxStSGPaQ7EkPCPIfWplNPexinw8xeneDlV3uraPZCII3UjjoR/HCkvLLd/qxMzAj+zCekJKs+ve74en8IthVr22XL1O6Vvvcc5C6v6BPG12olPj1dF/r7Fhu7H9VK/Mwdq8o0f6a3TX9HUuz/XiOtHK7tfdRLaN8ePadtU7dSUnJGgkty9t527qVCzP1ymUWf28+9LzU7S2X84Wr945ERd8Oeqyqhnrv5QxaH6I9ExNZJAjR9M0Jr7IgZxJPzjCBApWjwJZCpjzHCxpKTq4TOhgoT5vTZTGmjGnNbcVq1aZe/77rvvbJWNCR7mj4XJIPfo0cMO5zJjofc1wVR7f80JqxvCJKNMIDNzFJnHvvLKK3Z4mRlqVpe77ror6HWazWTba0/qeMstt2js2LF67bXX6hyP2xA7duzQ4sWLAzbfexukAe9nXZzOYv00/yW1bT9M7doPU3PLzV9th38N7HeuDj3kBpsAWrn6E1sR1BSvr2R7ibbN2apep1YPLTPSu6Wrz+l97VCydoe01zF/Hae41Dit+TT0e+zwVG+G+beo/e9j/s3qYoZTmg5Tbb59oYZb+rRv316///3v9dxzz9kx2Wb8txnPb8p5FyxYoJZGDGkFMaQeTTQlcti0eyARR+pGHGkFcWQ/PrRleWX67O7P1XtcL/U+rroSOGQz+9EnqMv2BVvtELPRvzlSP/vneI345WjNe+YH7Vy0vVbb+96GSeq89OvPNOyk3hr2s+o+SZvuGRp1Rn87lKzHIR108UMnKjElTvM+WVH3cDC7xTa6P9Ka+yIGcaQVxBEgQrR4Eqgut912W0BwMBNH1/bwww/bPwA1ty5dugRMCO0rSfStdmGGg5lhYXvzpz/9KShAGWZy6pr7zARljWFKYM3KZyagmbHRZt6ivc0xZIJg7ddpNrOiQk0mQ37iiSfauZWefvpp7Q8z0ZoZd11zM3M3hWIqfiSHKp2BVT+VzhLFxQavEuK/v7JEC+Y9r9S0Turb74y9PqfYWJModMjpLAk6T1xsYHVQQ61dP0Ud249S+7bD7MTQnTocqrZtBmvj5un+Y8zVPjNJYu2qn4q88qDqoNrWfLZKiTmJ6nBY4Jj+2sy8QJm9M1W8pY7KKVMBZIZy7KkEMv8Wtf999jY5Xn1/lOu77+STT9af//xne/Xt6KOP1q9+9SubZDWPueeee3SwIoaETwypT5yqKuhqV984VRFUpdOUWqrdA4o40mjEkfCJI6bix/ytLqtVjWOHeGXUXUFg7v/kjs/Upm+OjrzliL0+p/g97dSu+jFVw7Wrgxpq0avz1evkvup2bE9ldM9Ur1P6qsuR3bXiwyVBFT+m7dpVOmby5+SshHqHgL3wq0/UeUAbnX7XkfU+FzMvUPs+2crdErzyqsvrlsvr2rO596k/Eml9EYM4Ej5xBIgUB2Ri6MYwE4StXLlSpaWlAdVAv/nNb+yk0EaoBJDRs2fPkJPDFRUV2dnpDzvsMFtlZCafNsxEZWZpQ5MgOuGE6onyQrn22mvtH5qazIRk9957b8D++Pj6x47XlpycbCuYzDCwbt262edhbutjZsxvyCR4ZmI2MxGbmT3f/HE0V6vM7b644YYbgsZsm6x5qKAZFRWjlNQOystbo8ys3v4hXuXleUpNr0rK1VZZWaYF815QQkKW+g84Vw7H3vORtp3k9sorWKOsPfMPmcmeyyvylZYaup29cbsrQ7TtkLfGJcXouGhl9sm0y7p3OLQqmWPG6hdvLVbO4MBS7dpWf7paPU/pXedKGz5mudb8NflqM6RqtYPaHO7qzTAr3fXuHVhdZP5fr4tZOSPUFTZTkWaEujJXH1Pue+SRR9qV/VoaMST8Y0i9z8kRrVRvhnK1U1lqZ/eVeUtUrlKlq3H/34ZDuwcScaRuxJHwjyPmb3VWzyxtmb9FnUZU/a0u3Fqkom3Fajsg9N/HiqIKfXLnJLuS2LF3Hb3Xv9W2ndhopffI1I6ftqrd8Kp5gYq3Falke7Gy+9bfJ6iLq8IV1Lb5vXbVUUxctDr0ybLLuvc+rGpeoNzNhcrbUqQug0L3H8oKK/TCjZ8os1Oqzrn3WP8KYPX1R7avyVPXoVVxrya3t1Iur9P/c2P7I625L2IQR8I/jgCRosWTQCbLayb6MlUxZsynj6no8VX1mMqZxpgwYYJNKs2aNUuZmZkhJ6bLy8sLeZ9Px44d7RbqD87+rkpgqpNMOatZ9cxUBDWlhIQEO9zMJLxuvPFGO3zNLMfYWGbpRd/yiw3RqfPhWrXiI6WmdrKTNa9a+bHSM7rblcEqygs0f97zdvn4tPQucrnK9dP8F2zypU+/8Xvm+qm6AhRXa16h2jp3HGOXhU9L6WQnnl655lOlp3WzK4OZpefnLXzBDu3yzelTXp6vSleZHXZmEj5mFTHDt5JYdlZfbdwywyaXkpPbqqBwo7btmG+HhdXU79wBmv34D8run6OUjqma848f1HZ4Ozucq3RHiT6/cbKOvPco5Qyq7vjsXLhDhesL1OvngZ0jY+kbi5XaOU3p3dNVWVqpxa8uslcVe57cq0FzeZgO16BBVSukNcSQIUPs58IMYaw5Fn/hwoX21lwVaSzzB7nmihAthRjSOmJIfTqrl1ZogdK8mXapdvNzhnIO6ApdLdlubp5bGza7tGpt1ZesBYsrFB3tUO8esUpJ3vfPHHGkbsSR1hFHBp05UDOenKmcvjlKs0vE/6D2Q9rZlcFKdpbo4zs+s8vHt+3fRs4Spz69a5KtxB174+G2IsiXfEmsp3LI6HNaf8377yxl9s62S8TPf3a22gxqa1cGK91Voqm//9wuH++b06dkR7GcRU6V55XZFUPNKmKGbyWxjqM6acXEpTa5lN4tQ7uX7dS6r1bbYWG1jTl/kD5+bIY69c9RVqc0ffL4DHU/pL0dzlWwo0TP3/Cxzrt/nE0KlRc79eJNn9rXOP72sbYiyL7GaIdSMqte47QJC+2qYW16ZKqixKnv/veTSvLKNPzk4L6Ly1OpSo/T/3Nj+yOtuS9iEEdaRxwBIkGLJ4GuvvpqPfroo7rzzjvtuM+6VghrDFPpk5qaaq9O1P7DMGfOHLsMpUm+mIDSEg4//HCbCCooKLCBramZoGleuzn3zTffbIOmKb88kDp0HGUTLSuXfyiXq8xWBPXtf7a9z+P1qKx0p9x7Ogxm2fiiwk3255nTHvafIz4hQ4ePvavedjq2H2knm16+aqJc7nK7vHv/Pmf6V/MpLdslt7uqg+JbGn7bjnn+32fPe9LeHnfUn+1tj67j5PV6tGL1x/a88fHpdll5005NZv6e8txy/fDIDDmLnbYi6PC7q8rGzcpfJtljOna1J4Q2lUJm/p/a3JUezfr7DyrdWaq45FhlD8zRSf85RUltAufGqnkFP6pGJVBjmf8XzKoV7777rq1Eq7mCnkl2jh4d3NGsz9q1a22J7t4q6poDMaR1xJD6dHL0kNNboWWaJ5ectjJngEa22nYnfl6iq35dPafGYSdXxcsp73bUsUeEjhENQRypG3GkdcSR/qf0tfP7fP/EdPu32lQEHf2bI/0VLgUbq/9W71q5WzuX77I/v37xm/5zpLRL0cWvV/+dDKXnz/qoPL9cPz71gypLnLYiaNRNVX0Cr9urok2Fcle4A4Z7rZuy2v/75zd/ZG8v+OQyezvwomHyuL2a+/QP9oJQYk6yXVbetFPbqNP7q3h3mSY+/L3Kip3qfWgnnfX7o6teo8ujXesLVLnnNZpl4zctqVqx7JHxr/vPkdEhRXdOvNi/2tnHj01X4c5SxafEqfPANrrmmfFKaxM8zN5lKoF8SaA9lUCN0Zr7IgZxpHXEESAStHgSKCMjw364x48fr2HDhun666+3k7yZJSRNyei3335r58054oi9j9M2zCoBpgLInMdMBl2bSTQ99thjNlHUUkmgmnMWNcSGDRtClrqactu65iQyw9RMxdM555yjX//61zZo3nrrrTqQunU/1m61JSZm6tjj/+r/PTOzZ8DvjdW9yzF2C2onIdOf3PEZ2O8cu9U3xKx3j5PstjdDLh9qt9pMZdD//XBF0P4xv637/9nBlw6xW6MmdDVJoOD50RvErJBnrlCZz0VhYaG9cmeuxk2aNEmvvvqqnTzdN+eV6YytXr3aX9JrOldm/L1ZvSMtLc1esXvkkUds5ZaZmLGlEUNaTwypTw9Hf/VQ/4ho9/IL0uzW1IgjdSOOtJ44csjFw+xWW2r7VF075Sr/7x2Hdwj4vbEGnj/EbrWZpeJ9yR0fUxVktvqGmA27YqTdGuLYKw6xW21mqfgHZ1/r/73nyI4Bv4dy9P8Nt1tDmARQpafC/3Njtea+iEEcaT1xBGjtWjwJZJikj0nePPHEEzYhZJI0TqfTBoSRI0faqwYXXXRRo5Ir1113Xcj7zWTOZiLmhx56SHPnztWIESN0sPvXv/5lt9p+8Ytf2D+adTFB87333rPD7MykdCZomrmWEP6r+uwL8/+CWVnDTKBoxt/379/fdr4uvPBC/zFmxTqz1ZyHwJRvv/nmm7Zir6yszJbUmgTrH//4R/XtW/9Sus2FGFI/YggM4ghxZH8QR2Aqun3JH191d2O15r6IQX+kfsQR4ODg8B6ItS7RKpklFc147UNH/1rJKcETBh5IUc59HAfVBDo/Wl3C3ZxePuwF/3ve47o7Fd+2vSp2bNPaZx6xSdPGzAkEHAx8/z+P0YlKcQQPk2ytJm+Z3yLtRrVfaW+JI2hNfP8/n/v82crqXvfcjgdCQa1h381pWNvGLUTSVH436hn/e/75D79X3wFV82WuWLpFPxv9F/ojCEu+/6fve2uAOvaqfw6wpnbNiB+btb2Idv3eR3ocMP+ZrIPZQVEJBODADuMAAOIIgP1hJoP2zwm0j5VAAICWRxIICAe+SaFbriAKQLgjjgDYDy6PS5V7kj/mZwBAeCIJBIQBszJYlKvqFgCIIwCam9PjUrm70v8zACA8kQQCImRCVwCRjTgCYH9Uut1yul3+nwEA4YkkEBAGmMsDAHEEQEuq9Lr8FUDmZwBAeCIJBIQBOym0bz4PACCOAGhmVAIBQOtAEggIk0ogMx8Qw8EAEEcAtIRKT43hYB6uSgFAuCIJBIQBKoEAEEcAtKRKT43hYEwMDQBhiyQQEAYcHq8cbq+9BQDiCIDmRiUQALQOJIGAcFkifs8GAMQRAM2t0u2Rc8+qYOZnAEB4IgkEhAOzPLzpd9HnAkAcAdACKjxelbu9/p8BAOGJJBAQBqI8XkW5vfYWAIgjAJqb0+1VxZ4kkPkZABCeSAIBYcDhqt4AgDgCoLk5a1QCmZ8BAOGJJBAQBqgEAkAcAdCSnC6pwlX9MwAgPJEEAsKBWRnMXH2j/BoAcQRAC2BOIABoHUgCAWEgyrNndTAmhgZAHAHQApgTCABaB5JAQBhwuLz+DQCIIwCam9Mtle/ph5ifAQDhiSQQEAbsymAuj70FAOIIgOZW5vaqdE8SyPwMAAhPJIGAcJkTyHS86HQBII4AaAEVLo/KXB7/zwCA8EQSCAgDDrfHvwEAcQRAcys3SaBKj/9nAEB4IgkEhAGzMpidE4hKIADEEQAtoMJtKoHc/p8BAOGJJBAQNkkgUwnEGHwAxBEAza/c7VHMngog8zMAIDyRBALCgMPt9m8AQBwB0NwqKr2K3jMczPwMAAhPJIGAMEAlEADiCICWZKp/TFWy72cAQHgiCQSEA9Pp8m0AQBwB0MzsPEDMCQQAYY8kEBAOzFAw0/FiOBgA4giAFmBWBPPsGQ7m5KIUAIQtkkBAOPB4qhJA5hYAiCMAmlmlSQDtSQLZnwEAYYkkEBAOTBVQlMtfhg0AxBEAzcnj8shd6fb/DAAITySB0GhxO4sVX5TYrO+co6JSLeWs7B/V4kwVEMPBABBHAGvOliLFOxzN+m4UVrha7N2fv71luuy/G1X9s0kAOZxVSSBfMggIZ+cOfFuDBg1q1jafnTtSLeWaEQfBd5rm9J/JLf0MDlpRLf0EADQ0CeTarzmBiouL9etf/1odO3ZUQkKChg8frjfeeKNBj92xY4cuv/xy5eTkKCkpSYcffrimTJnCPx0QTogjAPaDmQ/I7XTbzTc3UGPRFwGAlkclEBAOXC55ZYaD7ftVyLPPPluzZ8/WQw89pL59++r111/XRRddJI/Ho4svvrjOx1VUVOj4449Xfn6+nnjiCbVt21ZPPvmkTj75ZH355Zc65phj9vk5AWhGxBEA+8FtKpL3VADZn/cBfREAaHkkgYBwUOkyl+BMr2ufHv7pp5/qiy++8Cd+jHHjxmn9+vW64447dMEFFyg6OjrkY59//nktWrRI06dPtxVAvscOGzZMd955p3744Yf9eGEAmg1xBMB+cFe45S2v6od4KhqfBKIvAgAHB4aDAWHA63LLW+myt/vi/fffV0pKis4777yA/VdccYW2bNlSbyLHPLZfv37+BJARExOjSy65RLNmzdLmzZv36TkBaF7EEQD7w1PprjEcrPH9EfoiAHBwoBIICAMlrnx5HS6Veovt76tWrQo6pk2bNnaoViimkmfAgAE2eVPT0KFD/fcfccQRdT72qKOOCtrve+zixYvVqVOnfXhVAJoTcQTA/nDvLpV8q4IVlDe6P0JfBAAODiSBgINYZmamUlNTtaDoe/++uLg4nXnmmUHH3nvvvbrvvvtCnmf37t3q2bNn0P6srCz//XUx9/mOa+xjAbQ84giApoghRZ8uD9jf2P4IfREAODiQBAIOYmYlr2XLlikvL8+/z+12h5y/x1x5q4+jnqV067tvfx8LoGURRwA0dQzZ1/4IfREAaHkkgYAw6HyZbX9kZ2eHrNjJzc21t6EqfZrisQAODsQRAMQQAIDBxNBABBgyZIiWLl0qV60l5hcuXGhvBw8eXO9jfcc19rEAWg/iCABiCACEP5JAQAQ466yzVFxcrHfffTdg/8svv2wrBEaPHl3vY00ZeM0VxEwy6dVXX7WP298qJQDhgTgCgBgCAOGP4WBABDjllFN04okn6vrrr1dhYaF69+6tCRMmaNKkSTaZ4xvTf9VVV9nE0OrVq9WtWze778orr9STTz5pl5d/6KGH7IofTz31lJYvX64vv/yyhV8ZgOZCHAFADAGA8EcSCIgQ7733nn7/+9/rnnvusfP59O/f3yaCLrzwwoBJHs3m9Xr9++Lj4zVlyhTdeeeduummm1RaWqrhw4frs88+0zHHHNNCrwZASyCOACCGAEB4c3hrftsD6rF48WI7/8vYnlcrJaH+laiamqOiUi3lusmft0i7Z/Za0CLtAgc6hozRiUpxpEfMGz15y/wWaTeq/coWaRdojjjS/YETFd8prVnf7MKKwHn1mlNafMtct112xTst0i7QHHFk0aJFGjRoULO+2c/OHamWcs2IH1usbRxcmBMIAAAAAAAgApAEAgAAAAAAiAAkgQAAAAAAACIASSAAAAAAAIAIQBIIAAAAAAAgApAEAgAAAAAAiAAkgQAAAAAAACIASSAAAAAAAIAIQBIIAAAAAAAgApAEAgAAAAAAiAAkgQAAAAAAACIASSAAAAAAAIAIQBIIAAAAAAAgApAEAgAAAAAAiAAkgQAAAAAAACIASSAAAAAAAIAIQBIIAAAAAAAgApAEamYvvfSSHA6H5syZE7D/+++/10UXXaSuXbsqPj5eycnJGjRokH7zm99o2bJlAcdefvnl9hyhto8//th/3D/+8Q+dffbZ6tGjh73v2GOPbdLXsmbXDE1d8S99sfRvmrvhbVW4ius8dvXOaZqx5iV9vvQR/bD2f0H3by9crtnrXteUZY/bbc76CSos396w55H3g75e9x99vuYf+nHr+6pwldT9PPJmaMamVzV59eOauXmCGuPdp3foyiOW6ILBC/XgtWuVt7OyzmM3rCjX/Zev0S8OWaRLRy3WQzes084tzsDz/WeHfjlumS4Y9P/t3Qd4U2X7x/G7e0/23nsjKkMUUNx7i6i4F+rreh24Fbei/9c9wYUgigoiDmSoiIKy996rLd27zf+6n3pCkg660+Z8P9cVa5M05yRtHs755X7uZ6XcOnKd/DA5sUL7A/vypXGkvLY51skCx0z5xTFdljl+lxxHts9u96vv0mXkRbslrvMWCWi2SfLzHTW+TdiLL40hid+tl013ficbbvpadv3fQslPKf09mjhjrWx/8hfZcMN02fH0vGK3p/29W3a+sEA23vatbBz7rex86VfJ3pFc7n1J/2GD7L9/tuy9faYkvfGnFJSxL2mz1kvCs/Nl720zJOHFX8u9jbr2nGFfvjSOAHYT6O0dgMhDDz0k48ePl0GDBpn/79Spk+Tn58uKFStk0qRJ8vLLL5vvAwICnC9XWFiY/PLLL8Vevq5duzr//6233jID74gRI2TGjBnV+lLvTl4hWw7+Lr1anCVhwbGybt/PsnzX13JM29El3t/hKJTmMT0kNbuBZOYWP7hIytwhjaI6SOcmwyXQP1i2Ji6Sv7d/LkM6XC/BgeGl7seu1JWy+dAi6dX4NAkPipW1Cb/Isv0z5NgWl5Z4/0JHoTSL7C4RQfskMz+l3M93zrQkmfbGAbn9hVbStFWwvP/UHnnx9h0yfnKHEu//9I3bpGOvMHluWkfJy3XIB+P3yMt37pBnpnQ0t8+dfkimvXVA/vNiK2nXLUxW/Zkub4zbJU1bB0ufIVHl3i+gPo8j5bXHsU22ylrpIcdImETIelkmK2WRDJBhPrndzCyHDB8SJicODZNxzyTV6LaA+jyGpPy6TRJnrpVm1x0tQY0i5MDk5bLnzT+l9f0nlHh/R4FDoge2luymhyTvYPEPjLLWJ0hEr6bS6KJe4h8SKInfr5ddL/0m7caPlIDIkDL3JXPhdkn/foPEXNVfAhtGSOoXKyX5/SXS4K7jSv6BQoeEHdNSAnckS35CZr18zoAvjCOAHRECednkyZPNYHnTTTfJG2+8YdJty8iRI+Wuu+4y13vy9/eXgQMHlvnYa9asMfdTPXv2rNb93p60RNo0OFqaRHcpevzmp8uvm94y1TvRoU2K3b9j46Hm66YDv5YYAnVrOtLt++7NTpNfUl6W5Kzd0jiqU6n7sSNlqbSJ6S9NIzub73s1PlUW7HhPUnMOSHRI42L37xQ/xHzdmPR7hUKgWR8lyBlXNZRBp8SY78c+21JuHrFetq7Jknbdw9zum5KYL/t35sp9r7eRlh1CzXVnX91IXrx9u/M+G5ZlSu9BkXLsyKLHG9EyXr77KFE2rcwiBIJtxpHy2imbpJV0ksZ+Lcz33R0DZKHMljRHskT5xfrcdkdfWBQEz1tY/hNDwI5jyKE5myXupI4SdVTRe7Tp1UfJ1vt/MJUsoa2Lv0cbntvdfE34ek2JgUjjUX3cvm96VX/ZeOu3krUxUSL7NS9zXzLmbZXw4e0l7N/7xVzRTw4+8rPk7UyRoFZF/9a7ijqz6AQ3bea6CoVAdek5A74wjgB2xHQwL3vqqaekYcOGMmHCBLfB0qLX3XrrrW6JeXlZg2V1K3QUSFr2AYkPb+O8Ljw4TsKCYiQla0+1bKOgMFcKHPkSFBBaxn7kS2ruQWkQ1vrwfgTFSlhgtCRn75XqkpdTKNvWZUvvQRHO65q2DpHGLYNkw/LiB25RcQHSrG2wzPv6kPnZrIwC+XVmsvQZEum8T5d+4bJ+aaaZNqbWLMmQvdtypNegw/cBfHkcqdB4I8kSL42c14X7RUqohEuKJPncdgFvqI9jiCO/UHJ2Jkt4t8Mf+AQ3jpSghuGSvaV63qOFOfniyCsQ/4jgsvclr0Dyd6VISJfD40VgowgJaBAuudsOVcu+mP3JK6gzzxnwhXEEsCsqgbxoz549JtnWebOhoaWHHaXRckrPwbUyA2tF5RVocOEoNk0rKCBccsvox1MRmw4skMiQBhIbVvRJV0lyrf0IcN8P/T63oPo+QU9LLpDCQpGYBu5vl+j4QFP148nf308em9hext+wTWZOXCUOh0jH3mHy6MT2zvsMOzdOkvbnyZ1nbhA//6Lf3S1Pt5TOfUqf+gb40jhSXnlS1EsrWNyfW7CESK5k+9x2gdpWX8eQgsxcPQSQwGj3KUsBUSGSn5pTLdtImL5GgptHS1jHBmXerzCjaF/8o9z3xT8yWArTqmdfzHbS685zBnxhHAHsihDIi3bu3Gm+tmlzuKLGUlBQIA5ND/6lA6Frqp6RkSFBQUFuPzNkyBDTjK06HDhwQA4ePOh23aZNm6Q2bE9cLHtT18gxbS4XP01ISlU7zVJdfg3lUljokLcf3S2tOoaYaWP5eQ75/NX9MuHOHfLQe+3MfVb8kS6zPkqUO15sJW26hJqqoPee2C1NWgZL96MPVxwB9XUcqa4xxFstkWnFDLuoq2OIt49FDv20UdL+3Cmt7jtB/PyLVzX44rhUF58z6gfGEaB+IQSqoxo0aCApKYd71nzxxRdy4YUXujVRW7BggdvPREVVX0NhnbP7+OOPl3hb0RQtP8nNd6+2ySvIlODAqgUYOw8tlU0Hf5UBbS6TyNDDZdUlCQ7QXjx+xap+9HvP6qCqiI4LEK1C9az6SU3KL1YdpFb+kS6rFqXLJ//0kKCQohDrjhdaybVD1sr29VnSpkuYTH5ln4y8NF6OPzvO3K7XaT+gGRMPEgLBJ8aRssaQigiWoikJRdU3h/tq5EpOsSqd6uSt7QJ1SV0+FgkID9ZDAFMB41oXU5CWU6xSpqKS522RhK/XSqt7hkpIi+gj3t9MnfKTYlU/WrnjWR1UFQGRdec5A74wjgB2RQjkRa1atTJft28/3DDYMm/ePFMa+ffff5sGayXNjR0wYECN7dstt9wiF110UbFP384991zx9wuQqNDGkpS5XRpEtjW3abPnrLwUiQlrXqUVx9bvmyP9W18sMWHNjnh/f79AiQ5uJIlZO6XBv/2JMvOSJSs/VWJDj/zz5aVBTtuuobJyUYb0Hlz0j5I2fj6wK6/E6Vs5WYXmIM31UzSroEmnlancrELx96hy1fs4/r0dqO/jSFljSEWY8cYRK0lyUOKlqOl8liNDsiVTYiS+Wve5LmwXqG11dQw50jjiF+gvIa1iJXPdQYnoXtQjJ/dghuQlZEpo+8q/R3X1rQNTVkjL/wyR0HZFH9QciV9QgAS2jJHc9QkS0rXoA6z8hAwpSMyU4Lble4zy8A8KqDPPGfCFcQSwK0IgL2revLn06NFDfvrpJ8nOznabQ9u3b1/zNT093Sv71rhxY3MpTeu4o2Td/p8lOrSpWSJew5u48FZmZbDsvDRZsv0z6dniLIn9NxTSgEh7CeUUZEiBI8+sIqaslcT2pKyS1Xu+lx7NT5eIkHjJyS963oH+IRLgH1T6fsT0M8vCx4Q0MY2p1yXMlbjQlmZlsOz8NFm85wuzfLwVCmXlpUpeYbapFioozDOriJn9KGElMVenXdHQLAvfoWeYNGkVbJZ812lbujJY4r48efTKLWb5eA2FuvSLkKBgf3nzoV1y3g2NzHSwT1/aZ5Z/b9mh6JO6/sOiZebEBGnbJUxad9bpYBkyb/ohuf7R0nsgAfVpHDnSGFIRLaWDbJDlEu2IM0u16//HSsMaXaHLm9tNOlQgO3bny6ateeb75atzJCDATzq2C5LICJpjwh5jSHnGkbgTO8j+z5ZLaJtYs1z6wc9XSFjnhmaVrLxDWbLrhQXS9LqjJezfgCQvMVMKMnIlPzVbCnPzzYpaylpVK/WPHbLvo3+k6ZijJLhplOSnFPX/8g8LEv/gsvuTRAxrJ6lTV0pQmxgJMEvEr5Lgjg3MymAFyVmS+MpCiR3T3xkKFSRlSmFGnhSm5ogjp8CsIqZKWkmsrj5nwBfGEcCOCIG8bNy4cTJq1CizbOLrr79eYjf9uqhlXB/JLciQNft+kPyCHGkQ0VZ6ND/N3OZwFEhGbpIUFhadwFhLw+9JWen8/o8tH5ivp3R/wHzddWi5OKRQVu2Z6badns3PkBaxvUvfj+heklOQKWsSfpa8whyzUljPRqeY2wodhZKRl2RCJ8vGQ7/LnrTVzu8X7vrIfD21wz1lPt+TLoqXlIR8eefR3ZKRWiC9B0eaRs6qIN8hu7fkmOoepVPEHnqvrXz8wj6574JN4h/oZ1YDG/duWxMOqYvHNjY/9+4Tu83jNmgWJJf9p6nZDmCXcaS8Wvi1k1xHjqyTpZIvuaYyp5sc5bPb/fbHDLn2P0UBtTrm1F3m65wvm8uwwTSPR/Wrr2NIzNC2JtzY/8kyKczMlfDujaXZmH/fowWFkrsvXRy5Bc776zLpqb8frlTY/tgc87XLBxeYr8kLtooUOGTf+0vcttP0mqMk5riiyufShA9uYwKdlMkrpDArz1QExVxedPLrKHBIwX73fUmbsU6yFu08vG9PzzNfm715Tr15zoAvjCOAHRECeZl20V+9erWMHz9eli9fLmPGjJFOnTpJYWGhabL28ccfV3pu7JIlS2Tbtm3m/1NTU01zx2nTppnvjz766BKbQFZE+4aDzcWTVgZZ4Y6lV4szzaU0x7S9vNL70SHuWHPxFB4UUyzc6d34NHOpjAtubmwunhq3DJbpm9yDqq79I2T85A6lPpaGQVf+t5m5AHYeR8qrnV9XaSdda2Vb3t7umEuizQWoLfV5DGlwRldz8RTUMMIZdFiaXTvAXErT+r4TqrQvkad2NhdPgQ3Ci4U7sVf1N5f6/pwBXxhHALshBKoDnnrqKTnllFNMav7EE0/I/v37zWobbdu2lRNOOEGee+45Oeqoin/6/Nprr8mkSZPcrrPmxH744YdmcAbgGxhHADCGAPAmjkWA+sHP4br2J1AGTfd79uwpQ9pfd8SVu6qbX87hKV217cYffvTKds/tsNwr2wVqegwZKCMl0q/svhe+5Ic9y7yyXf+mG72yXaA2xpG2T46s9VWsUnPcVwmtTdEh3vncdt3VRdUWgC+OI6tWrTK9jGrTu//U/LTy0lzf/2+vbRt1Cx0mAQAAAAAAbIAQCAAAAAAAwAYIgQAAAAAAAGyAEAgAAAAAAMAGCIEAAAAAAABsgBAIAAAAAADABgiBAAAAAAAAbIAQCAAAAAAAwAYIgQAAAAAAAGyAEAgAAAAAAMAGCIEAAAAAAABsgBAIAAAAAADABgiBAAAAAAAAbIAQCAAAAAAAwAYIgQAAAAAAAGyAEAgAAAAAAMAGCIEAAAAAAABsgBAIAAAAAADABgiBAAAAAAAAbIAQCAAAAAAAwAYIgQAAAAAAAGyAEAgAAAAAAMAGCIEAAAAAAABsgBAIAAAAAADABgiBAAAAAAAAbIAQCAAAAAAAwAYIgQAAAAAAAGyAEAgAAAAAAMAGCIEAAAAAAABsINDbO4B6KC9f/PzyxC5evfEyr2z33J+9slkA1eyU5n298pr+VOiVzQK1Ij03X3Jy8m3zap/QJtbbuwAAKK+bTxGvePOHct2NSiAAAAAAAAAbIAQCAAAAAACwAUIgAAAAAAAAGyAEAgAAAAAAsAFCIAAAAAAAABsgBAIAAAAAALABQiAAAAAAAAAbIAQCAAAAAACwAUIgAAAAAAAAGyAEAgAAAAAAsAFCIAAAAAAAABsgBAIAAAAAALABQiAAAAAAAAAbIAQCAAAAAACwAUIgAAAAAAAAGyAEAgAAAAAAsAFCIAAAAAAAABsgBAIAAAAAALABQiAAAAAAAAAbIAQCAAAAAACwAUIgAAAAAAAAGyAEAgAAAAAAsAFCIAAAAAAAABsgBAIAAAAAALABQiAAAAAAAAAbIAQCAAAAAACwAUIgAAAAAAAAGyAEAgAAAAAAsAFCIAAAAAAAABuotRBo4sSJ4ufnJ0uWLCl222+//SaXXXaZtG7dWkJCQiQiIkJ69Oghd999t6xbt87tvmPGjDGPU9Jl5syZzvu98sorcv7550u7du3MbcOGDRNv2LZtm9s++vv7S4MGDeT000+XP/74w+2+evvYsWOd32dkZMill14qXbp0kaioKOfr8tRTT5nbXD322GPm5xMSEtyu37x5s7Rv316aNGkiy5Ytc76Gbdu2rfbnuuXQnzJ325vy45ZX5O+90yUn330f3fbr0B/yx65P5IfNE2TR7sn1crtq+7Z5svDXp2XB3Edk5fKPJCcnrcT75eVlyoZ138iihS/IgrkPm6/bts4Rh6OwyvtgF4whvj+GlGWbY50scMyUXxzTZZnjd8lxZPv0dr29bV/FOOL740j6Dxtk//2zZe/tMyXpjT+lIKX0903arPWS8Ox82XvbDEl48dd6u+1lk5fLJxdPlvdPnyizH/pJMpMyS7xfdmqO/PbqQvn8iqny/mkTZfLoqfLPx0ulsIBjkYpgHPH9cQTwdYHe3oGHHnpIxo8fL4MGDTL/36lTJ8nPz5cVK1bIpEmT5OWXXzbfBwQEOH8mLCxMfvnll2KP1bVrV+f/v/XWW2aAGTFihMyYMUO87bbbbpNRo0ZJQUGBrF69Wh5//HEZPny4GTT79etX4s/k5eWJw+GQu+66y4RZOtguWLBAnnjiCZk3b578/PPPZW5z5cqVcsopp0hQUJAJ2vS1VQ8//LDccccd1fr8dqWulM2HFkmvxqdJeFCsrE34RZbtnyHHtri0xPsXOgqlWWR3iQjaJ5n5KfVuu2rvniWyfdtc6db9IgkNi5dNG2bKmlWTpd9RNxS7b05OquTlZUinzmdJeHgjycg4IOvXfiniEGnb/sQq7YfdMYb4xhhSlj2ObbJV1koPOUbCJELWyzJZKYtkgAzzye16e9t2xDjiG+NI5sLtkv79Bom5qr8ENoyQ1C9WSvL7S6TBXceV/AOFDgk7pqUE7kiW/ITMernt9bM3yD+fLJPh958gUc2i5I83FsmcJ+fKWRPOKL6PiRmSnZItg8cOkthWMXJoW7LMf+lXcThEjrqy5N8/yo9xxDfGEcAOvBoCTZ482QRAN910k7zxxhsm9bWMHDnSDBR6vScdOAYOHFjmY69Zs8bcT/Xs2bPK+6pJs1b16EBVGVrlZO3zkCFDpGPHjnLiiSea5/fuu++W+DOxsbEyZcoUt+tOOukkycnJkeeff162bNliEvGSLFq0yCTzmpb/9NNP0rJlS+dtHTp0kOq2I2WptInpL00jO5vvezU+VRbseE9Scw5IdEjjYvfvFD/EfN2Y9HuVwhhvbVft3vWHtGw1WBo1Lvr76tr9Qvlz4QuSlrZHoqKau903MrKp9Og1yvl9WHgDycg4Tg4eWEkIVAWMIb4zhpRlp2ySVtJJGvu1MN93dwyQhTJb0hzJEuUX63Pb9fa27YZxxHfGkYx5WyV8eHsJ61f0b3DMFf3k4CM/S97OFAlqFVPs/lFnFn14mDZzXZVDIG9te9X0NdLz/B7SbmhRNcQJ9wyVz6/4QhI2JUrDjg3c7hvfLl5OemSE8/vo5tHSa1tP2TJ/KyFQFTGO+M44AtiBV3sCaQlgw4YNZcKECW4BkEWvu/XWW92qgMrLCoDqKisQ2r59e4V/tlGjRuZrYGDJGZ4OkDqw6sD466+/ug2WNVE6WejIl9Tcg9IgrLXzOq3KCQuMluTsvdW2nbqyXbPtwnxJT9srcXGH//EJC4uX0NA4SUvZWa7H0MqgwMCwGtxL38cY4htjSFkKHQWSJskSL0X7rML9IiVUwiVFknxuu97eth0xjvjGOOLIK5D8XSkS0uXw+yawUYQENAiX3G2Hqm07dWnbBbkFkrQlSVr8GzxZwU5U00g5sPZguR5DK4NCo0NqbB/tgnHEN8YRwC68lpTs2bPHVOtoxU9oaGiFf16niLledJpVfbJp0ya3wa8sWj6pzzE1NVVmz54tL730krOHkqcvv/xSzjzzTDn66KPNlDkN2WpaboHOeXdIcEC42/X6fW5Bps9t1+rxo9sOCo50uz4oOEJy89KP+PNZWUmyd/diadb86BrcS9/GGOI7Y0hZ8iTXfA0W938ngiVEciXb57br7W3bDeOI74wjhRm5Zoq1f5R7oOEfGSyFaTk+ue3s1Gxx6LSyWPexIjQmVLKTs47486l7UmXd9+uly2lF1dSoHMYR3xlHALvw2nSwnTuLqiXatGlT7DYNdHSQsGglkGulkDYQ0zmhrnSKlc4RrS46QLnS/bEGLlee+1aawsJCZ1ilPYF0Cpy6/PLLj/izWj6pA6Tl6quvlnfeeafE++rjajnl999/X6lwzXLgwAE5ePBgicFVcYd/V7XLW9s1fxCV/tHc3HRZsWyiNG7aR5o07VOtu2UnjCG+NIaUzoaji1e3bTeMI/YYR3xWFQaLrENZ8v2DP0rH4R2k4wim1FQF4wjjCFDfeL0xdEm003xKyuF+LV988YVceOGFbo2htZmYK+00X1209482LSuJZ/g0d+7ccq08dt9995mLRee1vv3222aO65FoI7TFixdLWlqaaST93HPPSWJiokyfPr3YtLezzz5bvv32W9NZ/9lnn5XK0nm92ry6PIIDdEqTX7HqG/3es0qnOnlru1bFj247L9e96icvN0OCg9yrg9xuz8uQ5Uvfl6joFtK5yzk1uo92xhhSv8aQsgRLsPlaVAFzuK9GruQUq5SpTt7arre3jcMYR+rXOOIfEaz/LBervClMzy1WoVPdvLVtrfjx8/eTrOTs4lO8Ykufbq63f3fv99Koc0M57o7BNbZ/YBypb+MIYBdeC4FatWpV6vxRbb6sVTN///23s2LGlQ4SAwYMqLF9a968uRmgXOngoeWeGty40qUOy0M7148ePdrsuzZHs5auL4+4uDjn89UVxXRerC6z+M0338h5553ndl9tyBYfH28GVa0+0mZrlXHLLbfIRRddVOzTt3PPPbfYff39AiU6uJEkZu2UBuFFlV2ZecmSlZ8qsaHNpKZ4a7tm2/6BEhnVTA4d2iJx8R2dU7yysw9JVEzR37anvLwsWb70AwkNjZeu3S4UP7+63beqrmMM8Z0xpCz+fgES5YiVJDko8dLEXJflyJBsyZQYia/UvtXl7Xp723bDOOI744hfUIAEtoyR3PUJEtK1aFpKfkKGFCRmSnDbOKlJ3tp2QHCAxLePlz3L9kiL/kV9gVL3pknavnRp3K3kqTk5aTny3X9nm5XEht13vAmRUDWMI74zjgB24bUQSIOWHj16mIZf2dnZbuXCffv2NV/T04/cW6UmBAcHFwuZ9BNBTa0rGz5pI7PqCq6OOeYY83XDhg3FbtOQ6f333zeD8QsvvGAGzRdffLHC22jcuLG5lFfrmH5mefaYkCYSFhQj6xLmSlxoS7NCV3Z+mize84VZxt0KZ7LyUiWvMNtU7RQU5pnVvFRJK3rVxe2qFi0HyaYNMyQqqoVpCr1p40yJiW1rVgbLyU6RZUvfN8vHR8e0kvz8bFmx7AMT/HTqcta/PYWKmp8He/QVQvkwhvjWGFKWltJBNshyiXbEmeXS9f9jpWGNr5Llre16e9t2wjjiW+NIxLB2kjp1pQS1iZEAs0z7Kgnu2MCszlWQnCWJryyU2DH9ncFMQVKmFGbkSWFqjjhyCsxKXqqk1bzq6rZ7nNtd/nh9kTTs3FCizRLxf0rTXk3MymAZBzNk5r3fm+XjG3dtJLkZuTLrvtniH+gvQ8YOMhVBSoOgsDIqh1A2xhHfGkcAO/DqdLBx48bJqFGjzFLwr7/+erlTZLvTKWhKl5kviTVoar8ibbimg+bLL79co/vUMrqX5BRkypqEnyWvMMes2NWz0SnmtkJHoWTkJUmBI895/42Hfpc9aaud3y/c9ZH5emqHe+rFdlWz5gNMf5+N67+R/PwsUxHUuev5zm1nZR40QZPSZePTUneZ/1/0+3POxwgJjZVBQw5PE0TFMIb4zhhSlhZ+7STXkSPrZKnkS66pjukmR/nsdr29bbthHPGdcSR8cBsTqqRMXiGFWXmmKifm8qIPFh0FDinYny6O3MMLiaTNWCdZiw6v6Jnw9Dzztdmb59SbbXc9rbPp7/PbqwslNz3XVAQdf/dx5rbCgkJJ2Zki+dlF/SwTNibKwfUJ5v8/G3V4ue7IJpEy6rNLKvyccRjjiO+MI4AdeDUE0gaD2iR5/Pjxsnz5crPMX6dOncwbXJusffzxx5Xu97NkyRLT20dpB3pt6jxt2jTzvXaZL6khdV2jU890OcSTTz7ZlJpqQ2z9/n//+58MHjxYzjmn9AMFDdS0YaN+nTBhgnn++rUmdYg71lw8hQfFFAtZejc+zVzq83ZVm7bDzMVTWFicDDvxGef3cXHt3b5H9WAM8a0xpCzt/LpKO+lqm+16e9t2wjjiW+NI5KmdzcVTYIPwYgFL7FX9zaW+b7vfqD7m4imqaZTcMOda5/fN+zZz+x7Vh3HEt8YRwNd5vTH0U089ZZqEaSXQE088Ifv37zfNl9u2bSsnnHCCmQd61FEV//Tztddek0mTJrldZ80H/fDDD03gVNf16tVLZs6cKQ888IAkJCRIYGCgCckefPBBUz2l35dFB0sddDU9f+WVV0y49uqrr9ba/gO1gTGkdIwhAONIVTGOAIwjjCOAb/FzuK7FDpRBq7Z69uwpQ1qNkajghrZ5rbLbNvDKduf+fL9XtgvU9BgyUEZKpF/Fe26gYn4q/IKXDD47jjR8eLgENY8Wuzirs3eOu94e8Z5XtgvUxjiyatUq06O2Nr37j/emdl/f/2+vbdt2bi5qT1Lr3vyhXHdjeSIAAAAAAAAbIAQCAAAAAACwAUIgAAAAAAAAGyAEAgAAAAAAsAFCIAAAAAAAABsgBAIAAAAAALABQiAAAAAAAAAbIAQCAAAAAACwAUIgAAAAAAAAGyAEAgAAAAAAsAFCIAAAAAAAABsgBAIAAAAAALABQiAAAAAAAAAbIAQCAAAAAACwAUIgAAAAAAAAGyAEAgAAAAAAsAFCIAAAAAAAABsgBAIAAAAAALABQiAAAAAAAAAbIAQCAAAAAACwAUIgAAAAAAAAGyAEAgAAAAAAsAFCIAAAAAAAABsgBAIAAAAAALABQiAAAAAAAAAbIAQCAAAAAACwAUIgAAAAAAAAGyAEAgAAAAAAsAFCIAAAAAAAABsI9PYOoP4Z+/5s6dA5uFa3uSy7tXhLh+ADXtry/V7aLlCz3pm3Tnp0CeFlBlBp+dn5Ipl5tfoK9mgVI94yY0OCV7b79givbBaoFdPWXCQLc8J4tVH93vxB6jIqgQAAAAAAAGyAEAgAAAAAAMAGCIEAAAAAAABsgBAIAAAAAADABgiBAAAAAAAAbIAQCAAAAAAAwAYIgQAAAAAAAGyAEAgAAAAAAMAGCIEAAAAAAABsgBAIAAAAAADABgiBAAAAAAAAbIAQCAAAAAAAwAYIgQAAAAAAAGyAEAgAAAAAAMAGCIEAAAAAAABsgBAIAAAAAADABgiBAAAAAAAAbIAQCAAAAAAAwAYIgQAAAAAAAGyAEAgAAAAAAMAGCIEAAAAAAABsgBAIAAAAAADABgiBAAAAAAAAbIAQCAAAAAAAwAYIgQAAAAAAAGyAEAgAAAAAAMAGCIEAAAAAAABsgBAIAAAAAADABgiBAAAAAAAAbIAQCAAAAAAAwAZqNATy8/Mr12XevHnOn9m/f788+OCD0rdvX4mOjpbg4GBp2bKlnH/++fLtt99KQUGB8776c6U95oUXXui2L/qzen2DBg0kJydHvOGxxx4z+5CQkFDstpkzZ8o555wjzZs3N885KipK+vXrJ48++qjs2LHD7b7Dhg0r9XmvWrXKeb+HHnpIzjzzTGnRooW5bcyYMdX6fCa9kSKnH7NbhnbdKXdfd1ASDhz+3XjavjlP7rz6gJzYe6eM7LdLXnwsSfJyHc7b587OlFtG7ZeT+uwy97ntigOyYXVuiY/1/Ts75d6hf8mtfRfKazevkZSDJd9P7dmYIa9cu0ruOPoPufPYRfLmbWslcU+28/b1fybLDV1/c7vofctr8ptJcvHAzXJ6943y0PW7Jelgfqn33bklVx68Zrec03eTnHfUJnnt8QNurwFKxjji2+NIeXz1XbqMvGi3xHXeIgHNNkl+fu28b+y2XV/GOOK740jmnM2S9PgcSbh/tqS+v0QKU0s/xnPk5Eva58sl8cEfJfHhnyT9mzXiKCj0eLxNkjR+riTcN1sOPTtfsv5wf86WHV+vkT9u/Fp+HT1VVj23QHKTs0rd7vYvV8k/D/wgC0ZNkaUP/1Ts9uTV+2X+xZPdLr+NmVbu1yD9hw2y//7Zsvf2mZL0xp9SkHL4OMdT2qz1kvDsfNl72wxJePHXcm/D7hhDfHcMAewosCYf/I8/3E+mn3zySZk7d6788ssvbtd3797dfF20aJGcffbZ4nA45Oabb5aBAwdKZGSkGTBmzJhhgqC3335brr32Wreff/rpp2X48OFu12nY4+r99983X5OSkuTrr7+WSy65ROqCwsJCufrqq+Wjjz6S0047TZ555hlp27atZGVlyeLFi+XDDz+UDz74QHbu3On2c+3bt5dPP/202ON16NDB+f8TJkyQ3r17m9dUH6M6zZiaLh+8liqPvdxAWrQKlJefOCTjxibI21ObFLtvVmah3H7lAel3bKh8ML2ppCQXyjMPJskr4w/JvY/Hm/ss/TNHhgwPk9seiJPwcD/56K1Uue3KAzLl52YSGxfgfKzfv9wvs97aKVc/21katQqVKU9vkXfuXCf3ftK7xP187Za10rZnpNw/pY/k5xbK1Ge2ynv3bJD7PnO//3PzjxZ/fz/z/37ljEZnf5Ein7yeKPe/2FSatQ6SN548KE/etlcmfN6qxNfgvqt2Se9jw+W1r1pL6qECmTBuv7z19EG57bHG5dugTTGO+O44Ul6ZWQ4ZPiRMThwaJuOeSWK7qDDGEd8cR7L/2imZP2+SqMv6SECDcBPqpH68VGJvHVji/dO/Wi35O5Il+sZjxJGbL+mfLRe/kECJOLVz0eMt2SVZczZL5Ki+Etg8SvI2JUn6FyvNYwd3buh8nH1zt8j2L1dL17EDJaxJpGya+I+smfC79H38pBK36yhwSOOhbSW8RZJk7U8v9fkMfOsc8fv3WET8/v16BJkLt0v69xsk5qr+EtgwQlK/WCnJ7y+RBncdV/IPFDok7JiWErgjWfITMsu1DTCG+OoYAthVjYZAGuK4atSokfj7+xe7XiUnJ8u5555rQp/ff/9dmjVr5nb76NGjZcWKFZKYmFjsZzt16lTiY1r27dsns2bNkhEjRsjChQtNIFSVEEgTaB3IqiOFfu6558xgqQPl/fff73bbqaeeKg888IAJvjyFhYWV+ZxVWlqaeb3Vxx9/LNVp6qQ0ueTqKBl+arj5/uEXGsh5x+8x1TudewS73Xf5khxJPFggDz4TL8EhRQc1t/w3Vh64+aDcfE+sREb5y12Pxrn9zAPPxMuIXrtkxZIcOX5k0TbUL5/ukRFXNJf+JxcdjF31dGcZN3KJ7FybLq26Rbo//6Q8SdiZLTf/X1dp1r7oMU66qrm8c+f6Ys8nukGwBASW74DLMv2jZDl/TJwMPTXKfH/Pc03kimHbZNOabOnYPdTtvqv/zpKkgwVy1/jGEhxS9Du59t6G8vite+WauxtIRNThoAvuGEd8dxwpr9EXFr3H5i2s3RMWu23XlzGO+OY4kvXbdgkb2lZCejc130dd0lsOPT1P8nenSmCLaLf7FmbmSc4/eyT6ugES1CbWXBd+amfJmLlOwk/uZMKX/O3JEtSxoYT0LPpAK+CYcMn6fZvk70xxC4F2z94gLU/vLI2OLfrQp8vNx8pft82Q9G2HJLKt+/GMantxL/N129SVZYZAwTGh4hdQsSL9jHlbJXx4ewnr19x8H3NFPzn4yM+StzNFglrFFLt/1Jldzde0mesIgSqAMcQ3xxDArmo0BKqId99910wF++KLL4oFQBZNgCtj0qRJkp+fL3feeac0bdpUPv/8c9m+fbu0adNGvCk3N1eef/556dmzZ7HB0hIYGCi33nprpR7fGiyrm05h2rg2T2578PCBTovWgdKsZYCsWpZTLATS+2vAEhh0+LrQMD/JzRVZtzJXBgx2D0xUVoZDcnMcEh17+Dnk5RbKrnUZcuG97ZzXaTVQgxYhsmV5WrEQKCI2UBq3CZVF3xyQph3CpSDPIYu/S5Bug4sO/lw9dMoSKch3SJuekXL+3W2doVFpcnMKZcvaHLnx/kbO65q3DpamLQNl7bLiIVCueQ1EAoMOB02hYf7mtdmwKkf6DSp7eygfxpH6M44AdRXjSP0YRxz5hVKwJ1WC/g01lFbs+MeHSd6O5GIhUP6uFBGHQ4I6Hq4UD+rUUByZeVKQkCGBjSMlsG2cZHy7VvL3pUlg0yjJ25IkhQczJajT4Z8pzCuQ9G3J0n50X+d1Wg0U2ihCUjcmlhgClddft8+UwoJCiWofL+0v7yvhHs+h2GuQV2CeV/T5PZzXBTaKMK9D7rZDJYZAqHmMIfVjDAHsrM6EQD/99JMEBATI6aefXqnyQw15PAcai5YNarCkpYmaNn/22WcyceJEMzfVm5YsWWIqoHTqW2V4PmcdIKtrkDxw4IAcPHjQ7bpNmzaZr2lphVJYKBLfwH1bcQ0C5FCi+9x61aNviKlqfveVFLlmbIykpRbKB/9LMbdphVBJ3no5Wdp2DJJe/UOc12UcyhNHoUhUfJD7p1rxQabqx5NO7/rP+z1N36CfP1oo4hBp0yvSXGeJaRQsVz7VUdr0iJTsjAL58cPd8vxlK+TxWf1NdVBpUpOLXoPYBu4VPDHxAZKcWPw5desTal6DSa8myuhbG0h6aoGZSqYOldFHCBXDOFJ3xpGyxhCgLmMcqR/jiCM7z/y77h/l/m+1f0SwONKL9wUqTM8Rv7Agt0ob/8iin3Wk54o0Fgk9qoUUpmRLsvbK0X+0/UQiL+4lQa0Pf3iUl5ZTFCbFuH/YExQdInll9OIpS3BcmHS+6RgT/uRn5cmuGetM76CjJ5xhqoNKU5iR++9rcPhYyXpehbqf8ArGkPpzTgPYVZ2JVXV+qE4XCw8PLzHgsS76vSed2hUUFOR2sd7cv/76q2zYsEGuuuoqEzLplLB27dqZ6Vzae+hIPLdvDVKe17s2rK7Ic1YlVSSVtE1Xq1evLvacr7zySqkub7zxhqlQcr3odD2jgj1K4xsGyFP/aygzpmbI8d12yjlD9siAQUUHNSWN759/kCo/fpsp419rIAEBhytnKtoatbDQIZ89sVmadwyXB6b0kXs/7S2hEQHy3j2Hp4M1bR8ux13Y1FQRdRoQIze+0lXCogNl0dcHynzs8vztuIprGCgPvdpMZn+RKqf32Cijhm6VvgOL/tad8/9RZYwjdWccKXMMAeowxpF6Mo5U9KCgpPt7/PObuzFBsn/bLpGj+kjsXUMk8rwekjF9jakIqknhzaOl2YgOpoootltj6X7XcRIYESz752+t0e2iZjCG1KNzGsCm6kwIVJq77rrLbVDQhmAlzUHVhmOul1atWrk1hL7mmmvMV6ujvE4HmzNnzhG3/8QTTxQbmJQ2p3a9zrV5WVVpdZDnNrVqyJVuz/M5a+Pt6nLLLbeYrvyuF22oraKiNZ0XSfKo+jmUWCBxHtVBluNGhMnMRS3M5celLeTE04sCkOat3IvRvvo0Td6ZkCKvTmokHTq7f7oXGRdkmjZ7Vv3o957VQWrdohRZ/2eKXP1cZ2nbK0o69o+Wa57tLKvmH5Jd6zNK3M/AIH9p2SVcEnaX/QlaTFyAeQ08q35SkgqKVQdZBo6IlCkL25vLV393kBNOL+r70czjNUD1Yxyp/XGkrDEEqI8YR+rWOKJVPRriFKblFquO8Yt0r4xRWi3jyMpzWw3M+lm/fyuCMmdvlNCBrSS0fwsJbBYtoYNaS3DfZpK14HAYE6RVN35+xap+8lJzilUHVZZ/oL9EtI6V7AMZZd8vIvjf18D9mKUwPbdYdRC8jzGk7p3TAHZVZ84+W7duLRs3bpTMzEy3aqC7777bNIVWJQVAVlf5AQMGlNhETHsMHXPMMabKSMMVdd5555mlDTUgOumkkldysNxwww1mSUJXRx99tJlK5np9SEhIpZ6z0kDKlS6lqAOgtczi448/XuxnQ0NDS3zO1aVx48bmUpKgYD/p1C1I/v4jW44ZUnTAs3tnvuzdVSA9+5b9OjRoVBSQzJmVJo2aBEiXnsFuK469Oj5ZJnzYSLr3Lv44QcH+0rJrhAl2ug0qKs1O2JUtibtzpH2fokDFVW52gTk4cl1gw6q6Ka2Sp7DAIXs2ZkqHfmXPw9fmzu27hciyRZnSf0jR3+venXmyb1e+dOtb9kFgfKOit938WWnSoEmAdOpRPQeNYBypS+NIWWMIUJdxPFI/xhG/QH8JaB4teZsTnU2bCxIzpTApy236liWwZXRReLM5yXn/vE0J4hceJAENI5w9dsSjOlePIVwPGfyDAiSybawkrz4gcb2KGlJnHUiX7IMZEu3SO6gqHIWFkrkrRWK6HG5GXRK/oAAJbBkjuesTJKRrUY/C/IQM8zoEV6E3EaqGMaTujCGK4xGgDodAI0eOlB9//NGs4nXhhRc6r9eKHquqJzi49B4tJZk8ebIJlf766y+Jiyv+j+H06dPl0KFDJd5mad68ubl40iUPqzpgHXXUUWbbM2bMMMvcW3TamvXYmlbXRRddFSUvP35IuvYMNk2hJzx5SPoeE2KaQh/Yly+3jjpglo/XfkDqmynp0qlrkERE+suvc7Lk/f+lyOMvN5DAf1fkmv11hjwzLknGPRsvrdsFScKBogqbyGg/CQ09XF00/PJmMmX8VmnTI0Iatgo1S753GhBtpnMd2p8jL49ZJdc811na9Y6SDn2jTWD1ySOb5JTrW5rG0F9P2CaNWoc6Gz/P+Wi3NGoVJk07hElORoH88P5uST+UJ8eeebjhc2nOvSJWXn/ygHTuGSLNWgfLG08dkF5Hh5mm0Af35cm9o3fJ/S81la59wsz9Z01JkfZdQyQiyl/+mJMun7yWKPe/1KzCq5KhdIwj9WscKa+kQwWyY3e+bNpaVAW4fHWOmSrasV2QREbUXEGr3baLIowj9WccCRvSRjK+WWOCEG2GnPHNWglsH2eaQhekZEvqm3+aqV0aCvmHB0tIv+aS8fUa8bu0tzhyCyTz+w0SOqSN8wOi4G6NJOvXbRLQLKqoMfT2Q5K9ZLeZFuaq+SmdZPPEfySqfZyENo6UzZP+kZhujcx0rpykTFn+xC/Sdewgif63CXV2Qobkp+dKbnK2FObkm1XElNVEetes9aa5tDaCLsjOl53frpW81GxpfNyRFzCJGNZOUqeulKA2MSbMSv1ilQR3bGCaQhckZ0niKwsldkx/ZyhUkJQphRl5UpiaI46cArOKmKKJdPVhDKk/YwhgV3UmBLruuuvkxRdflP/+978yZMiQUlcIqwit9NEEWkv+PJuLaSnivffeK59++qmMHTtWvEFDLd2HBx980Expu++++6S+OPviSLPk+fMPJ0l6qkOOPi5EHnym6GAnP09k+5Z8yc46/NHZ5vV58vpzyZKRXijtOgbJ+P81dC4vr76enG5+7vG73efdP/JCvJx50eFVv467oKmkJeTJp09slqzUAuk2KEaueLKTuU1Dnv1bsyQ3qyhA0ilit73dQ756aZs8c/FycxLVvm+UjH2ruwQGF/096Opcnz+9RZL350hYVKC07Rkp93zcW2KbHLmy67SLY+RQQoG8+sgBSU8tNBVBdz9TtKxsQb7Izi15bq/Btg058t4LCZKZXihtOgabHkHW8vKoHowj9WscKa9vf8yQa/9zuE/XMafuMl/nfNlchg2uuZX17LZdFGEcqT/jSOixrUzD5/QvV5upXkGdG0r0Rf+u2lVQKAUHM0zYY4m8oIekf7VaUt/6y1T8hAxoIeEjOzpvDx/ZSaTAYfoA6RQr/9hQCT+ls9mOK+3fo9PBNr63RPIz8iS2VxPpctMxzlXLsvakmbDHsm3KSrf+Pn//d7b5esLUy5wrjm2a+I8JkALDgySqQwPp89iJEhJ/5Pd7+OA2JtBJmbxCCrPyTEVQzOVFr4GjwCEF+9PdXoO0Geska1FRT0qV8PS8ouf05jnlf+FRJsaQ+jOGAHZVZ0Kg2NhYE9acddZZ0qdPH7Ni1sCBAyUyMlISExNlwYIFsm/fPhk8eHC5Hk/TZq0A0sfRZtCeNGh66aWXTFDkrRBI6SC5bt06s0S8Pkdtcq1VRjk5ObJlyxZ57733TIru2TC7PObPn+/shq+Nq3Xa2bRp08z3J5xwgpkiVxVjbo0xF0/a5+evbUVT3Sx3PRJnLqV5a0pReFIep93Yylw8NWwZKu+sO87tOp3Wde8nvUt9rFOva2kulTXqlnhz8dS0ZZDM2dLZ7bpbHm5sLqg5jCP1bxwpjzGXRJtLbbPbdlGEcaR+jSPhJ3Y0F08B8eHS8CX3FWf9QgIl6rI+IkXZS4lTzCLO7GouR9L6vB7m4kkrg6xwx9L11oHmUupjndPdXCor8tTO5uIpsEF4sXAn9qr+5oKawxhSv8YQwI7qTAikNPTR8ObVV181gZCGNLm5ueaNrVOn3n33XbnsslL+5fZgNYS+8cYbS7xdG5Npg+hnn31W/vnnH+nf3zv/IGqF0qRJk8wUOH1+WgmloZcuZa+N0k488UT55JNPpEuXLhV+bO1bpIOmZd68eeai5s6dK8OGDavW5wLUBYwjjCMA40jFcTwCVB+ORTgWAeoyP0dF17qGbekSjrqs4uQfmxZbuaumLct2ryyqTR2Cy14uvqaMaHd4KXvAl8aQFfNaSY8urFxT0/ybbqzxbQDeGkdi7x1q+vbUph6tilc/15YNiZle2e6em1hFCb47jjw2tZs071DUu9MOru//t7d3AXUEHSYBAAAAAABsgBAIAAAAAADABgiBAAAAAAAAbIAQCAAAAAAAwAYIgQAAAAAAAGyAEAgAAAAAAMAGCIEAAAAAAABsgBAIAAAAAADABgiBAAAAAAAAbIAQCAAAAAAAwAYIgQAAAAAAAGyAEAgAAAAAAMAGCIEAAAAAAABsgBAIAAAAAADABgiBAAAAAAAAbIAQCAAAAAAAwAYIgQAAAAAAAGyAEAgAAAAAAMAGCIEAAAAAAABsgBAIAAAAAADABgiBAAAAAAAAbIAQCAAAAAAAwAYIgQAAAAAAAGyAEAgAAAAAAMAGCIEAAAAAAABsgBAIAAAAAADABgiBAAAAAAAAbIAQCAAAAAAAwAYCvb0DqH9efvhSiYhsUqvbDErJFm8ZPvEvr2x3hFe2CtS8G4Z1lUi/GNu81D/sWebtXQB8zkldG0l827ha3eb6xEzxluNbx3pt2wBQL918ive2/eYPUpdRCQQAAAAAAGADhEAAAAAAAAA2QAgEAAAAAABgA4RAAAAAAAAANkAIBAAAAAAAYAOEQAAAAAAAADZACAQAAAAAAGADhEAAAAAAAAA2QAgEAAAAAABgA4RAAAAAAAAANkAIBAAAAAAAYAOEQAAAAAAAADZACAQAAAAAAGADhEAAAAAAAAA2QAgEAAAAAABgA4RAAAAAAAAANkAIBAAAAAAAYAOEQAAAAAAAADZACAQAAAAAAGADhEAAAAAAAAA2QAgEAAAAAABgA4RAAAAAAAAANkAIBAAAAAAAYAOEQAAAAAAAADZACAQAAAAAAGADhEAAAAAAAAA2QAgEAAAAAABgA4RAAAAAAAAANkAIBAAAAAAAYAOEQAAAAAAAADZQayHQxIkTxc/Pz3kJDQ2Vpk2byvDhw+WZZ56RAwcO1Mp+DBs2zFxq05gxY8xzjoqKkvT09GK3b9++Xfz9/c19HnvsMef18+bNc3vNPC/6mlr0OfXs2bPYY8+aNUvCw8Nl0KBBcujQIXNd27ZtzT5Vt+3b5snCX5+WBXMfkZXLP5KcnLQS75eXlykb1n0jixa+IAvmPmy+bts6RxyOwnJtZ+ve32T+8pdkzj/jZenGyZKTV/w1tWzZs0D+XPOu/Pz3U7J43QfFbk9K3SY/LXnc7TJ36bMlPtb89zbLM8N/kUcH/CAfjf1b0hJySt3u/k1p8uENi+WJQT/Jk0N+lk/u+EeS92Y5b1/10z5579q/5MnBP8sTg3+SD67/S/asSy3X87czxhHfH0dKs82xThY4ZsovjumyzPG75DiyfXa7X32XLiMv2i1xnbdIQLNNkp/vqPFt2gVjiO+PIcsmL5dPLp4s758+UWY/9JNkJmWWeL/s1Bz57dWF8vkVU+X90ybK5NFT5Z+Pl0phQfmORXZ8vUb+uPFr+XX0VFn13ALJTT78b7yn7V+ukn8e+EEWjJoiSx/+qdjtyav3y/yLJ7tdfhszrdTHWzt1pXxzxVSZdv4n8uvjcyQrqfRtr/58ufx050z54pyPZc6935d4nzVTV8rMa76Uaed9IrNumC6bvl9/xOdvZ4wjvj+OAL4usLY3+OGHH0rXrl0lLy/PBD+//fabPPfcc/Liiy/KlClT5KSTThJfFBQUJPn5+eY5XnvttcVeEx1MU1NLDgGefvppE5Z56tChQ5nbnDx5slx11VVywgknyNdffy0RERHm+unTp0t0dLRUp717lsj2bXOlW/eLJDQsXjZtmClrVk2WfkfdUOy+OTmpkpeXIZ06nyXh4Y0kI+OArF/7pYhDpG37E8vczu6EpbJ17wLp0e48CQ+Jk/U7ZsuKzdPk6K4l/wOgwVKzBr0lInOPZOUU/YNRkqG97xQ/v6JM1E/8it3+9/RdMvftzXLh070lvlW4fPfsWpl8z1K5YeLAEh/v47F/S4seMXLTp4OkILdQvnt+rUz573K58eOi+2/7O0m6DG0kp93VRYLDA2TB+1tMaHTnt0MlPDa4zNcAjCO+Oo6UZo9jm2yVtdJDjpEwiZD1skxWyiIZIMN8cruZWQ4ZPiRMThwaJuOeSarRbdkVxyK+OYasn71B/vlkmQy//wSJahYlf7yxSOY8OVfOmnBGsftmJmZIdkq2DB47SGJbxcihbcky/6VfxeEQOerKfmVuZ9/cLbL9y9XSdexACWsSKZsm/iNrJvwufR8v+RjWUeCQxkPbSniLJMnaX/oHVwPfOkf8/P89BvErfiyitvy0UdZMWSHH3nWcRDSNkqXv/iV/PDdfRjx3aqnbbjO8g0S1TJCMfcW3vXXOZlk7dYUMvHuoxLaPlwMr9sni/y2UyKZR0rRf8zJfB7tjHPHNcQSwg1qfDqbJ7sCBA2Xo0KFywQUXyIQJE2TFihXmzXz++efL/v37pS7atm2bSao1ya6M4OBgOffcc+WDD9yrURwOh0m/L7nkklJ/tlOnTuY187w0atSo1J958803ZfTo0XLWWWfJd9995xwsVb9+/Y442FbU7l1/SMtWg6VR454SFdVcuna/UFKSt0pa2p5i942MbCo9eo2SBg27Slh4A2nYqJu0bH2cJCSsOeJ2dh74S1o3PlaaxHWTqPCm0r3dOZKcvl3SMveVeP8OLYZJ6ybHSlhwXJmPGxwUKSH/XoKDDr9Wlj8+2y6DR7eVniObSvOu0XLBk71k25JDJVbvpCflSNKuLDnh+g7SuH2kNOsaLUOubCu716Q473Pm/d1l6Jh2Jihq1C5Szn2sp+RmFcj2paUHVTiMccQ3x5HS7JRN0ko6SWO/FhLlFyvdZYAkS4KkOZJ9crujL4ySB/8TLwMHhNboduyMMcQ3x5BV09dIz/N7SLuhbaVhxwZywj1DZe+KfZKwKbHYfePbxctJj4yQ1se2kujm0dJmcGvpdUFP2fb79iNuZ/fsDdLy9M7S6NhWEtk2TrrcfKykrD0o6dtK/je87cW9pOXpXSS0cWSZjxscEyrBsWFFl5iS3/8bZ6yTTmd3k5ZD2khch3g55o4hcnDVfjm0ueTAuOflfaXz2d1MqFOSpPUHpUmfZtJiUGuJaBIp7UZ2lNi2cXJoY/HXDB6vLec0PjmOAHZQJ3oCtW7dWl566SVJS0uTt99++4hTt7TsT8v/XD3++ONy7LHHSnx8vEmE+/fvL++//74ZkOqKa665RhYuXCjr1x8us/35559N6eTVV19dbdvRlP2WW24xr9PUqVNNAOWquksnCwvzJT1tr8TFHR6Ew8LiJTQ0TtJSdpbrMbQyKDAw7IjbScvcL3HR7ZzXaTVQaHCspGTsqsIzEPl95f9kwfKXZdmmzyUjK8HttvzcAtm7PlXaHxvvvE6rgeJahMnOFcVPBrWSp0GbcFk2Y7f52ZzMfFk+a690HNSw1O3nZhZIfk6BhMUEVel52BnjSP0eR0pT6CiQNEmWeDl8gBjuFymhEi4pkuRz24X3MIbU7zGkILdAkrYkSQuX6hUNd6KaRsqBtQfL9RhaGRQaHVLmfQrzCiR9W7LE9mzivE6rgUIbRUhqFYOTv26fKX/c9LWsen6BZO4u/iFTQV6BpGw9ZEIbS2SzKBPeJG4o33P01KBrI0lYd1BSthcFWAdX75e0PWnSuE/TKjwT+2Icqd/jCGAXtT4drDSnn366BAQEyIIFCypdqXPjjTeawVctWrRIbrvtNtm9e7c88sgjUhfoVLc2bdqYaiCdAqc0qDr++ONNMl6awsJCM5XMU2Bg8V/fvffea6bW3X333eZrZelUvYMH3Q8oNm3aVGqPH53LFRTs/glXUHCE5JbRr8eSlZUke3cvls5dzyvzfrn5OufdIcGB7pU6wYHhkpuXIZUREhwp3ducJdERzSW/IEe27//D9A4a3PNWZ0VQZnKeaLuiyHj3A8OIuGDJSMot9pj+/n5yzTtHm75Bv3+8zUxza9EzxlxXmp9e2yiN2kdK6z5lVyyhbIwjdWccqcgYUpY8KXqPBYv7p+LBEiK5UnP9eby1XXgXY0jdGUMqOo5kp2aLo9AhYbHu79nQmFDJLqNfjyV1T6qs+369DP3PkDLvl5eWoyUPEuRRqRMUHSJ5KZUbG4LjwqTzTcdIVPt4yc/Kk10z1pneQUdPOMOtIig3Ncc8xxCP5xgSEyI5yZXbdtsRHSQrMVN+GDtD58ObqvcBtw+WBl1Kr8xA2RhH6u84AthFnQmBtLSvYcOGsmdP8elD5aFzUF0HGK0g0iqgV199VR5++GHzj1pF6GPoxVJQUOD86jp46eNqeFUeel9Nq7Xaafz48Wa+rM5rda1+KklpZZU7d+6Uli1bOr9fvXq1uYwaNapKg6V64403THVVuVSh2io3N11WLJsojZv2kSZN+xxpQ1LdIkIbmoslJqKlLFz9uuxJXC5tmw4u2moFN1tY6JBvnlpjpoJd8EQvKchzyM9vbDQ9ga56c0Cx+2tQtGLWHrl+4rHiH1Cxv1N4/D4ZR+rMOFKhMaQM3qrlrDs1pKhNjCH1+Vik8tvJOpQl3z/4o3Qc3kE6jqj9qSXhzaPNxRLdqaEsvvM72T9/q7Q6u5vz+pqobt+/fK+ZYnbs3cdJTNs4SVx7UJa+/adENomURi7VTig/xpF6PI4ANlFnQqCq/uP2yy+/mJLBxYsXF2tGpglwkyZNKjx1a9KkScWu92xcrQ3KKtInSEskn3jiCfn+++9N9ZKWNV500UWSmVny6hVKq4ZGjBhR7HrP56RVUHFxcTJt2jS5+OKL5ZxzzpHK0tJL3S/P1Fz7GnnSih/9+Cgv173qJy83w/TaKWsK2PKl70tUdAvp3OXI+6oVP7qd3Hz3qp/c/MwS+/hUhr9/gESGNXFrIh0RFyTaM1p7/YgcnlOfcShXIuKLN3He8meibPkrUR754yQJDC4KCC96urc8O2Ku7NuQJk07H36MP6fukDlvbJRr3j1GmnQseb4+KoZxpG6MIxUZQ8oSLEXvsaLqmxjn9bmSU6xKpzp5a7vwPsaQ+nksohU/2lQ5y6Mixkzxii19urne/t2930ujzg3luDuKPvwpS1BUiGna7Fn1k5eaU6w6qLL8A/0lonWsZB9wP94J+fc5elb95KTkFKsOKq9VnyyTDqd2ljbD2pvvtR9Q0sYE2fDNGkKgKmAcqZ/jCGAXdSYEysjIkMTEROnVq1eFf/avv/6Sk08+2VT/vPvuuyZJ1nBFq2y04iYr68hlwJ50WcOxY8c6v9+7d6+cffbZ8tZbb8lRRx3lvF474FeETgc78cQTzZQwDYEuvfRSs9xhWSFQ+/btZcCA4hUknnRfNAzToEoHO507W9kBrnHjxuZSHv7+gRIZ1UwOHdoicfEdnVO8srMPSVRMqxJ/Ji8vS5Yv/UBCQ+Ola7cLnStzHWk7UeFN5FDaNmkQXXSwomFNdm6yqeCpDrqaWEbWAYmNPPx4GuQ06xItW/5Kko4Di6qGknZlyqHdWdKqd2zx55ZdYBb1cK0+s1b70DJu1xXHvn9hnakOatnz8EkmKo9xpO6MIxUZQ8ri7xcgUY5YSZKDEi9FB4lZjgzJlkyJkcN9uqqbt7YL72IMqTtjSEXHkYDgAIlvHy97lu2RFv2L+gKl7k2TtH3p0rhbyVObctJy5Lv/zjYriQ277/jDK3OVwT8oQCLbxkry6gMS16uob07WgXTJPpgh0Z0aSHVwFBZK5q4Uieni3kswIChAYtrFyYEVe6VJ36K+QOn70iRjf7o06Fy56Vv5OfnFnrd+X5d6atY3jCP1dxwB7KLOhEDa7V2nWrk2gg4NDZWUlMMrKlkSEtwb937++edmCfaZM2ean7FoCFRZ2mjMtfm0BjaqS5cu5Rq8jlRlpF3udbqZdryvTtoYW5tNjxw50iTn+troqms1rUXLQbJpwwyJimphmkJv2jhTYmLbmpXCcrJTZNnS983y8dExrSQ/P1tWLPvABD+dupz1b0+hotAk2KOvkKdWjY8xy8JHhzeTMF0ifucPEhvZ2qwUlp2bKn9v+Eh6tj1PYiJbmPtn5aRIfkGW5OSnS0FBnnMVMb2/2rF/kYSFxJspYQWFubJt30JTWdQ0vrfbdgde1lpmPrtWWnSPlviW4WbJ97ZHxZmVwlL2Z8v71/1lqn1a9YqVVn1iJSDYX6Y/vkqOv6a9FOQVyk//t8E0k27Uoej5LZu5W75+fJWc93gvadg2QtIStMpIJDQyUIJCyze9EMUxjtTvcaQ0LaWDbJDlEu2IM0u16//HSkOzYpcvbjfpUIHs2J0vm7bmme+Xr86RgAA/6dguSCIj6sR6Dj6LMaR+jyE9zu0uf7y+SBp2bijRZon4P6VpryZmpbCMgxky897vzfLxjbs2ktyMXJl132xTdTNk7CBTEWQFIGFlVA6p5qd0ks0T/5Go9nFmxa/Nk/6RmG6NzEphOUmZsvyJX6Tr2EES3bEoFMpOyJD89FzJTc6Wwpx85ypien+1a9Z601w6vEW0FGTny85v10pearY0Pq5NsW13OrOrLH3nL4nr2MAsEb/s3cXSqEdjs1JYZkKGzBv3o1k+3urpk3EgXXLTciX7UJbkZ+c7VxHT+5vnMqCFbPh2rQmXYtrESuK6g7Ltl83S/6Zjq/V3YyeMI755LAL4kjoRAu3YsUPuueceiYmJMc2dLRrCfPHFF5KTkyMhIUVNebVaSFfY0hXALBoeaEMx1948Wv3z8ccfS1103nnnmYs+X10Wsbq5Dpo691YHzQsuuEBqUrPmA0x/n43rv5H8/CxTEdS5a9FAXegolKzMg1JQWHRCo8vGp6UWrea16PeiBtkqJDRWBg25r8zttGjYzzSbXrtjlgmT4qPbS/e2ZzmreDKzE53bUZv3zJW9icud3y9aU9R/aeSAR4v2rbBA1u+cLTm5qRIYEGoaRA/oMkZCg90rvAac30rSE3Pl26fWSFZannQc2MAEOOYx8gslYWuG5GUV9Y3SBtJj3hggs19ZL2+O+sP0+WndJ1aufP0oCQwqOoFbPG2XFOQ7ZNq4FW7bueCpXnLUudVT1WQ3jCP1fxwpTQu/dpLryJF1slTyJddU5nSTo3x2u9/+mCHX/ueA8/tjTi0aL+d82VyGDdZpsagJjCH1fwzpelpn09/nt1cXSm56rqkIOv7u48xthQWFkrIzxQQhKmFjohxcX/Sh4mejpjgfQ3vhjPqs9CWuVbMRHcx0sI3vLZH8jDyJ7dVEutx0jLnNkV8oWXvSTNhj2TZlpenvY/n7v7PN1xOmXla0b3kFsmniPyZACgwPkqgODaTPYydKSHzx93v7kztJdnK2/P3Gn5KXkWsqggbc9m8PwwKHpO1KlYKcouMRa7rXtjmbnd//ePsM8/WS764yX7tf1kcKCxzyz1t/mmlmYQ0jzLLyuh1UHOOI7x6LAL6k1kOgVatWmcbKetFePb/++qtp6qwBzvTp06VRo8PlrFdccYVpmqxVM9dff70JgJ5//nm3AEidccYZ8vLLL5vmYTfccIO5nzYRs4KjukarlXSOa3lt3LjRrHbmSae9uTZRc6XzaK1BU6ecffbZZ8Xmw1a3Nm2HmYunsLA4GXbiMy771t7t+4pq12youRTbTkisM9yx9Gx3rrmUpm2zIeZSHsOu72AunuJahMvTq05zu6513zi5YWLpAZ82gUblMY747jhSmnZ+XaWddLXFdsdcEm0uqDmMIb47hvQb1cdcPEU1jZIb5lzr/L5532Zu31dU6/N6mIsnrQyywh1L11sHmkupj3VOd3Mpr+4X9zIXT7pUvBXuWLQqSC+l0Slmfa4+ylxQMYwjvjuOAL6u1kMgbYystGdPbGysdOvWTe677z657rrr3AIgNWTIENOc+dlnnzUNwXQe6aOPPiqzZs1ya8asDcasZdfPOussadGihQmNdP7ntddW/h/4uuLBBx8s8fpx48bJU089VerP6eurg6b2S9KATOd3azklUN8xjlQc4wjAGFIVjCEAxyJVxTgC1A1+Djq/oZx0qcaePXvK0cf+RyIia3fZ0CCPVThq0/CJf3lluw/0mOWV7QI1PYYMlJES6WefZug/7Fnmle36N93ole0CtTGOXPj++RL/b0+d2rI+sfSGtzWtaUTx1Uhrw+enT/TKdoHaGEcem9pNmncouweYL7m+/99iKzef4r1tv/mD1GV0mAQAAAAAALABQiAAAAAAAAAbIAQCAAAAAACwAUIgAAAAAAAAGyAEAgAAAAAAsAFCIAAAAAAAABsgBAIAAAAAALABQiAAAAAAAAAbIAQCAAAAAACwAUIgAAAAAAAAGyAEAgAAAAAAsAFCIAAAAAAAABsgBAIAAAAAALABQiAAAAAAAAAbIAQCAAAAAACwAUIgAAAAAAAAGyAEAgAAAAAAsAFCIAAAAAAAABsgBAIAAAAAALABQiAAAAAAAAAbIAQCAAAAAACwAUIgAAAAAAAAGyAEAgAAAAAAsAFCIAAAAAAAABsgBAIAAAAAALABQiAAAAAAAAAbIAQCAAAAAACwgUBv7wDqj5ycHPM1KzOx1rcdmFW0bW/YvynNK9vN7pAtoaGhXtk2UJNjSKakizjs8xqvXu+d8cs/cbV06NCBcQQ+OY6k7E6t9W1nJGeLt6SEeeeQffVqxhH47jhyYKf3zi+8YXXIarGVpHTvbXu1d17r8h73+TkcDhsdiqMqvvnmGzn33HN5EWvJqlWrpEePHrze8BmMIbWPcQS+hnGk9jGOwNcwjsDu4zUhEMotOTlZ5s+fL61atZKQkJAKvXKbNm0yAdLXX38tHTt2rLVXvT5vl0/w4WuqMobU9/ezt7bLOAJfw7FIxTCOAIwjdj0Gqm/b3lSLx31MB0O5xcbGyjnnnFOlV0z/oL1R3WK37QK+OobY8f3MOAIcxrEI4whQVYwj9edYxJvHQB19+DnTGBoAAAAAAMAGCIEAAAAAAABsgBAIAAAAAADABgiBUCsaNWokjz76qPlam+y2XcCX2e39zDgC+MZ7ypvvZcYRwDfeU2yX17o6sToYAAAAAACADVAJBAAAAAAAYAOEQAAAAAAAADZACAQAAAAAAGADhEAAAAAAAAA2QAgEAAAAAABgA4RAAAAAAAAA1cDhcEhdRgiESissLKz1Vy81NbXWtwnAd8YQxTgC+A7GEQCoHwGFN4MRa9u1tQ8FBQWl7kNdQAiESsvLy6vVV+/vv/+WM844Q5YvXy7efr4lvbEBVP49VVsYRwDfwjjC8QiA8tm4caOsXr3aK+Pm/v37JTMzs9ZDkSeffFJ++ukn2bp1q/nez8+vxre5YcMG6dq1q4wbN06mTJnivF637a0PLjwRAqFC9M377LPPygUXXCDHHXecvPXWW7Jv374afxV///13GTx4sPm6adMmc11tvIk07Jk/f76kpaVJUFCQue7mm282+wGg/owhinEE8A2MIxyPANXBGx/qahixfv36Wt9uUlKS3HPPPdK/f385++yz5dFHH5UDBw5Ifn5+jW/74Ycflo4dO8qwYcPkpZdecn6gX9OBjJ7DLVy4UC655BI588wz5ZZbbjHbzq/h5xwaGiqXXXaZrFu3TkaPHi1Dhw6VF154wdzm7+9fJyqC/Bx1YS9QL2gQoidt+ocdHh5u3kB6UvXAAw/I+PHjzR90TbyZf/31VznxxBPNSaO+cTWM0e1GRkZKTVu7dq1cf/31EhcXJzNmzJDzzz9ffvzxR/nzzz+lR48eNb59wJd4awxRjCOAb2Ac4XgEqA56DBIYGChZWVkyZ84cUyHTu3dv6dSpkwksasLixYvNrIZBgwaZUKBz585Sm1JSUmTZsmXy1VdfyeTJkyU2NlauuuoqE47ouU5Nyc3NNa/xokWL5NVXX5XGjRvLySefbAKhkJAQqWlLliwxx4H6IaQeg1544YXyxBNPSERERI1uNz093QR+Gr7p35f+bU2bNk2aNWsmXqchEHAkmZmZjuOPP95x8sknO9auXesoLCx0pKSkOG677TZHcHCwY/ny5TXyIi5YsMARFBTkuOuuuxzp6elme35+fo5vv/3W3F5QUFCjv7ykpCTHSy+9ZJ5jy5YtHS1atHAsW7asRrcJ+CJvjSGKcQTwDYwjHI8A1SE/P998TU1NdQwdOtTRrVs3R4cOHRzNmzd3nHTSSY758+dX+wu9adMmR48ePRxhYWGO8PBwx2WXXeZYv369ozboMZfr19zcXMeOHTvMc23YsKFjxIgRjv3799fKvqxevdpx8803O6KiohwDBw50/P333zVyPmc9V1cHDhxwnHvuuY4GDRo4TjzxRHMcWhOsbVvPKzEx0fHKK684mjRpYv7WVq5cWeo+1hZCIByR/oG+8MILjiFDhjgWLVrk9gf7888/OwIDAx2ffPJJtb+Sc+bMMQPlnXfe6UhLSzPX7dy50xEXF+cYNWpUjf/mrOepB506aGv4pCexGkYBqPtjiGIcAXwD4wjHI0BVaOBjhT9Kj+d79+5tApBVq1aZ64466ihHZGSkY8CAAY558+ZV2wuekZHhuOGGGxydO3d2zJw50/Hf//7XnFfUZhDkyjoOy8vLc4wbN84EQf369TMhSU2yQpFDhw45vvjiC0fr1q3NOdaff/7pqGnW715/Fw888IAjNjbWccIJJ9TYeZ1nEJSVleX48ssvHe3bt3f07NnTeW7rrSCIEAhHlJOT47jiiivMG0X/3/UPNjs72xEfH+948skn3a6vKn1D6kB5/fXXmxDGov8/evRoR0BAgOPHH3+ssd+e6z8SK1ascFx77bWOO+64wxEaGuo4++yzvf7GBeoTb4whinEE8B2MIxyPAJX1yy+/OEaOHOnYunWr8zj/1ltvNZUwVgXM+eefb6r+9XhEP3Du27ev49dff63yi25Vm5x++unmHMKisxxKCoKq+9zCs8rGNQCyXovnnnvOBEEXXXSR8xynqkp6Hnqd6/bnzp3raNu2rWPQoEHFjg8rq6SqIus66zlnZ2c7Hn74YXP8qed3WhlVneeOpd2m2/nss8/Mds877zyHNxECoVw2bNjg2LVrV7FkU0+yGjdu7HjmmWfc7l8dA5huT1PTkj7Z9/f3dzz00EPVtq3S6D8QixcvNm9aLeV78cUXTRB01llnmU8UXMOpNWvWOAcXAN4fQxTjCOA7GEc4HgEqaunSpY6YmBhTiWPR84sHH3zQ8e6775rv9QNmnQpmTU3XgEADGp2uNGvWrEq/6FpNpOcMCQkJJd5+zz33lBoEVfU4SH/eOi/RrwcPHiy2H65B0C233GKCIKsyu7Lb159zDWK0ukirb6xzOr3NNQiaOnWqmR6nH/xXlWuY89dff5mCgY0bN7oFNNZzzszMdFxwwQWm1YdOSbP2vTI0VFJ6TPv000+b6W6TJk1y+51ar4ne57777jOBo1aFVWW7VUEIhErNJbX+mPXN1qxZM8fjjz/uvF4T5Pfee8+8+SqiIm8Anc8ZHR1t3tjVwXXb1v9/9913joiICDNwWXTw1GktGgTpPmgwpNddc801pqTUNRgCULtjiOfjHwnjCFC/MI5wPAJUhB5n/Oc//3H079/ffK9BhPZmUfrhrVafzJ4929GuXTvTb9Q6mdfr9DxDe8fobIDKhk96HnHTTTe5hSIaQriGEvfee68Jgi699FLTN0jp1PkpU6a4nYNUpJ+pVVWj9NxE+zFqzyMNw5566inndqz9Ufozffr0Ma0vqov2VT3uuOPMlC8NmaxeOK5BUHJysvkd6f5VdlrYH3/84facNcTTai6dOaK9ZTV02bx5c7HnnJiY6GjUqFGlAij9/epraf0udYqb9vvRKW4aLOl2te+QazWZdd99+/aZv7mrrrrK4S2EQChG/0Bdp2AdiSaZOrfSKnm8+uqrzXxaq+SyKkprFPb222+bAVPLF8u6X3loIqufDmjFjyv9x0DL9fQ5uQ7WOmBoEKQDe5s2bcynBDqvtDInrIAvqktjiGIcAeofxpHDOB4BKj+OaJWNVhzrh7vaj0V7ALmGK1rlr2HPtm3bzPcaTrz11lsmGPjpp5/KnOZT1nGHnlsce+yxznMNrXjx3DfPiiANgjT80f08+uijK1whor2NOnbs6Pjwww+dP6vBjja/1sqn6667zmzn8ssvdwYyrhU0Oj1LwxPPfS0PrabSChjXIEabP+vrqNVQWmmlvXCs8yXXIEibReu5lFbRVJSGbHpOpv12lO67/r61yksrgXTmiD7nMWPGONatW1fsOb/66qvmNStvbyarwmr48OHmcfVDTH0u48ePd5x66qnO/lK6/S5dujiOOeYYt/5SVgCl08I0gNIw0hsIgeBGP4HXObH6KfyR0mfrTaBvan2j62Cmb3Q9eVuyZEmFXll9w2iTNE2Ldb7s//73vxI/8XP9f23eZiX7VaEDhL6Jda6wrvxlbUPLITWV1ufoOc1L095p06Y5zjnnHMcll1zitTcwUNd4awxRjCOAb2Ac4XgEqC7bt283YYRetPnxnj173EIY/UBZK2Q0RNCxR1cwHTx4sKlOsVQ0CNL7ayii/W60qkgrQzQQ8mxC7BkE6UIZek6i5zdWSFGRIEirXbS6Wj+knjx5stm29iLasmWL8z4acOk2Lr74YrcgyKpQ0UU8XKuzy2Pv3r0m7NAgR6tudJ/18XUfrOf40UcfmT5LrhU/Gp5Yt2sA1KtXrwo3p9ZzN31MDc5mzJhhQh8NvFzP3V5++WXznLXyxjUIsnq/6of+33//vaMidu/ebaqmNEB87LHHzO/7zTffdPudfvzxx84gyHPFOQ2+mjZtahZI8QZCIDhpiaQmxfom0RI1feOW9Wm+vnH1dl3uTgMcHSx1Na9//vmnQq/qb7/9ZgZHbRp75plnmoFLB2NNVEvbrtJqHN3X1157rUq/RR1ktUO9Dlz66YC1/88++6yje/fuR/z5ilQ8AL7MW2OIYhwBfAPjCMcjQHXTY3ydGqQfIGu1iyvtlaMBgp6Q67Slrl27mhCmqn0+FyxYYI6HNHzSqh6dplVWqKOhQHBwsPlA3LWXT0VpEKTTknSBHa2svvDCC53btbatVSq6b/pBtlW5YtEwRvehvC0urMfUKWZnnHGGOYe78sorTQWS52N//vnn5noNbayKICs00YpHrcixQrqK0NdOzx87depkgj49/lQlBUHawmONx4f3Wk2kU9fKG7hZ+6zhlza11soj/UDT+gDTmlZohV/6N6UzRzwXNdLAqqZWxz0SQiA4/5j1D1FP3B555BGTVmuJmpaqHSnk0D9sfVPpp/dWY63y0sFBp4JoZ3brTa8JsCbFOkiU1a1dl4vX7d52221V/i1ajcl04NIgSEsCdXUAXSJSPxXQ+aq6eoBOBdNBXOfqVmaQAnyVt8YQxTgC+AbGEY5HgOoaSyxa4aH9aD799FMTyOjJuK4W5kqP8XUxGA0vdHp6VUIYV/rBlh7f6DGRhkIWz7BBe9roB88aQlXHtjWQ0alXum3tS2NxfUwrCNKZEK6VQvqzOiWtIitmuQZBp512mvlwT4M1q0+PayiiQZCGcXofPZ9y9fzzz5tQrjL0WNA6nrz99tud23Z9zjr1S28fPXq0qVa39lsDqYpu1zUI0tBMH1f/fqxiBdfXT4MeDSJ1Op6y7qPnstW1GltFEQLBOfhp+Z/+EesJm66oowOWJptlncTpm1rDGl2tS1PYitA/+htvvNFM/9JSTWW9GXWb+mYqrSLAevNocFNdK3JZQZA2gtN5nlo+qfug6b1+OqBvXu2arxf9Xt/0ALw3hijGEcB3MI4U4XgEqDo97tDpUK7nDVqJYQVBnhVBnv0DK9MLyPoZPZ/RVcW0wuT111835xNaKe06Jcg1CNIqFD2GsoKDypzbuK68alUE6TmMHl9NnDjRGcS4PrY2ydZjNc/nXtLqzEdiPYYu2mOdQ7n2CHJt3KzTpDTwsn4H1r673qc8z9UzTNMKH62C0vM0bdtRUqCmPaBmzJhR4efn+hxL+rdLf7/6t/Xoo4+WGATp36Lr34e3EQLB+ebQOYmupYr6JtZB8kgncQsXLnTruF5emn5qxU9JTcCsEkrXjuplqehgWdqbWAdIDYI06NHtX3HFFWb/dI6nNqPWRmuaYFfXqmSAr/DGGKIYRwDfwThyGMcjQMW5Bje6/LdO0dEAxNUPP/xQYhBUlUVmXE/s9VjHqjSyghc9d7CCINeKINdtWv9f0XOassIqrczRCiOddaHHYSUFQZ7hUXmVdX89ptMgSCu8tUeQxTXksWZUVDQQcd2uztTQ5+J6nX6gqFXpWolUWhBUme1aP6+voa4MptVbrrQ4QHtJaY8gDYJKC7YqEy7WBEIgFOP6JnE9idMySmvw0A76OjWqqmmmzv+0TgxdH0ebdIWHhxdL6avjDeT6szp46NQv18RbywO1OZy+ifUfEJo+A3V3DFGMI4DvYRzheASozJihzZc1hNHGxFrdr1OEtPLEMwjS27T6xqoWqgrXCg+daqTHPNZqVRbtU1NSEFRSIFNe1s/quYs2c9beitr7RldadQ1kNAjS/quuQZAVnLj2Ciov19BFgxatKNIKGz2vsl6LDRs2mKlh+jpr30dLeat9SuK6nzq1S/vJ6u9Q24q4ftCoU8OsIOirr76q8qyRgn+fr/ZJ0t+fFgvoEvC6bW00bT2+BlsaBOnt1qphdRUhkM2VJ0xxPYnTAUzfWCeddJIZVPWPvjIncEf6Ge3Mr+WLruV6OmVMe41U5YTR9fnedddd5nnpgKyDiM5DtehgqvNhtUeQzqVl+XfgyO+p2hxDFOMI4BsYRzgeAarCOh7Qk3QNPPQYQxsAa2+Y0NBQEwhMmjSpxNWBdSn3qnANYnQGwymnnGKOdzSAmD59eolB0LBhw8zy89VBp8Xrc9ZVqHQalK50pc2RXXvcaBCk069at25tVm+tSL+fsmj/JA15dLvWqmZz5sxxBk1WEKShiAY11UXPB7WaS3vw6Apd+vi6bddVafVYU5tj6+9CFwCqrEKXih49X9TzQm32/H//93/m8bWZtS5OYr2mWhFkLZKir3VdRQgE55vJtSmYJx089CRO3+S9e/c2/XFqMhixQqCZM2c6qwa0+7p2fa9sFZDrCeNFF11kHkuXol++fLl5A+tzu/fee5330eogTbf1TaxLwbs2NQNQt8cQxTgC1C+MIxyPAFUJY84//3wTgGj44LqEuIZAevGsCNLjkKpUibhWiGgvmlNPPdXMItCep7rcu4YE2mbClX7IrOcW2qy6slz3+c477zShlx7zaAXQO++8Y5am1+frGQRpWKLnNJXlWtmiIZqu8qUVT7ptnR6lr4Fep+dv1iwL/SBQwxOd4eG5PHtlzuH0uWsQo9XlFn3O1upurkGQzixp1apVqTNLjrRN6/nquaf+Tekq1q4LmGjvWv1709faNQjSvpjaD6quTP0qCSGQjVlvKO11o4NCWfdRWlqpyytqwqzBSWWU9WZwvW3lypWOiIgIU6Kpiao2LdOU23pzVaW87sEHHzRpuTWXU5+/Bk56ghoXF2dSbYuWFn799deVHrQAX+aNMUQxjgC+g3GE4xGgOsIQPfnX43td5ctinTdoEKQVQVqB/MEHH5T5OJXZh3PPPdf0OdWgxXXJcz130SDIsyJIeyhWdYqSVgBpoKThuVamuD5nvV6rfjyDoN27d1fLh+kahLz22mtmCXrX1a30Q3tdlUyroL777jvnB+jaeqM6PvgbP368Cb00bHPtJanb0UovXXHMMwiy9q+8Veepqalu32sFkP5u9VxUwyfP10+PZzUI0uf8+++/F5vuVl0LGFU3QiAb0Tmyzz33nNs8UaVd63XQ1DdHaX+omn5q9YyW3ml5XVXn6r7wwgsmAX/qqaec1T7KemPpNnRZxQkTJpj0WJPlqnTMdx2cLrzwQvOclU4B06Rep53pIKnb0ZPU+++/v9LbAHyVt8cQxTgC1G+MI0U4HgEqR49BXE/y9aT9m2++MaGAVoNoBYbyXKFJq3O0UbGumKXLxleG9vLRIMJzZSidXXDPPfc4r7MCB90v/aBZA4KSpiSV95xGQxTdjuvja9ilFUV6XOXZiFrPp7QZdZs2bcxsB9eftW4vL8+Vmq1pdNo79e6773Zeb73eVhCk4Zd+kO650lh5wxhdMe3QoUNuC4Ho0vLBwcGOXr16OZ+r9fvV8EWDIG2Crc/b9W+kIr/fkSNHulW2a3CmUwu1kklDRG227fkctOJowIAB5j76//UBIZCNaGKrb1qdH+ua2j7xxBNmWefSBgX9Q9dGY/qzmqRXda6uvoF0fqaW52kAo3NJPUsitXRQ+/HowKlv9OoIgKwBQhuEHThwwAyYOoC99dZbzgHq/fffN9dpRdBDDz1UpW0BvsabY4j1OIpxBKi/GEeKcDwCVO59ow2BdUqTnhtoEKDVxfohk9KpWHqOYU0Hcz1Z1/4xY8aMcTRq1Mg0ja4oPb7RthGe5yw69adZs2Zuy6FrIGJtWwME3aaGBBqgVNS+fftMuOBa7aO0/9B5551njq1c21lY50y6vzoVTUMT/QC8MvR1vuyyy9yaLmugpB+W63a1VYdrRY71nLWPq05J02okPeeqKA3MSgqvdFqX9hjSbWsDbIt1fqjPXfvw6Lnc/PnzK7zd2bNnOyvJXP92NPjRkE/PS3W1M89gSy1ZssRURtXlKWCuCIFsRAephx9+2FS6jB071vlpvg5OWt5WFj3pquyUKOvNoAOipvOasGpKqt/ryls6cOubyrV8U0vr9A2uJ5alLe1XWdbjaKd6HZBdyyR1qpg289LXxHU+MQDvjSGKcQTwDYwjh3E8AlT8PaO9YLRlhFb0aMigjZi1+kTpdBxdBUt7D2r1jEXPNzSw0FYQ+uGvnmNU5jjfOvnXisZ3333XeXyi5w4aeujy5K40lDj77LNNmKLVKVdddVWFV+l8EkIAACHHSURBVOPSAEaflxWCuZ636BQrKxTR1blct2vtmzZqrmwwobM1NABR1mvsGQTpV88qJev+lQlilFbxWFVAupKbBmEW7b2jjbV12/q79BxP9TXSf2dc96Wi0tPTTeWYVWGltDrotttuM9vVQoGSgiBLfQiCCIFswirR05K2cePGOUMXfcNoMGMl6EpTdeuPV9/4nnMjK0MHME2stWGbJrSuPX127NhhEmqtCJo1a5ZbClzdAZArTWu1PFN7DikdwDTtfvPNN6u8ZDXga7w9hijGEaB+YxwpGccjQMXowi56Mq6V+0uXLnU7TtDzDJ0SpL0K9b2lq3/pLAT94FeP73WaUfPmzR2JiYmVftm1CkW3r5XQauHChab6RBs0u0551w+/dPUq3UdtgRESEmKWES8P6/zEosdVxxxzjOOss85yu23x4sVlBkGuP19ZWn2lfXFcVzTTMEpXWtbjQQ2CXIMa1/OoipxTaeDjSp+btYKba0WRBkEjRowoNQiqiKVLlzqeeeYZt+s0dNPHPvnkk50BnNq6daszCNIPRcsKguo6QiAbcA1c/vzzTzP46Emc/gFff/31ZsDSMkNN0rWxlc7h1P4eGpDoVCzX+ZiVoW9+DVd0e1oOqWGQtV/WvmlCr4OI55uwJhtqadme7tPll1/uePLJJx2XXnqp+QdDO9wDqDtjiGIcAeo3xpHScTwCVIw2B9bjC11pVBv2ugYQGgRpxY9O+dIwSJsz61QwDUV0HDrjjDNMgODZ37AikpOTzRQsPQ7ScEcf22opodVJWiGtS6LrsZAeF+l2taei7k9SUtIRH1/DBt1H/WrRbbzyyiumCkorilzDJNcgSEOuqrjkkkscb7zxhtt1OhVNp93p8Z5WFlkSEhKcQZAeF3oGVxWhfVo1dHENjvR3qYGbNvXW6XaeQdDw4cNNsKahYGUUFBSYIE9nqVjfW/9WaSClle/6e3ANgqyKIG1por9jz0bQ9QUhkI3o4KCliDpQWidx+sYJCgoyg+N1111n/ph1rqOWuembwrOssTIHe/pG1i7yp59+urOfiA6ervfTygFt5qZ9Q2qTlinqYK3d5PUfkaqsWAT4utocQxTjCOB7GEdKxvEIUH5axaOVyVb/Fz2GLymA0ClJVgWM9qnRnkA680BXIa4qDZE0ANFzGw14NKRZtGiRmaqkfU81ABo1apQzfNIVrTRs0KlGR6L7rWGPZzNpDRx0Gpoee+lxl2cQpEuY6/589tlnlXpOej6mfZWsvqiuH8Trvmi/JX1+nkGQFYjp18qGIjobRD9Q1FDclVbbaCWShi6eQZCGM/q7123rzJLKzOSYMWOGeWyrZ6VrEKQNxDXg8gyCNJy74oorHEOGDKm3s0cIgXyYa9mfLtOnS6BrGZ91vc6XfPzxx03DMC1p8ywbrOp29fGsN6pepwGLrvSlg/XkyZPdgiDtPK8Jsybc3viHRDvOV6UsFPBF3hpDXLfNOALUb4wj5cfxCFDx3jEailhBkAYSSgMinTZlrUCsIat+GK1LpldlgYqygiCtCLLGPA2krEoj/X+dlqYL3pRndVQrgNAASauZ9HzJNWgoKwjSoEJX7KrKLAqdlaHT7KzqKtcxXBtNlxQE6fmefgiox4qVoc9Pjyl1ypm1+prrdssKgnSGiYZvlZWammr+drTFgRXQ6f4cKQjS1926T30MggiBbEBL+h555BHTj8dzUNBB8oEHHjB/3Nro1SpRrGjTMov1+LpykHas10/8NHm3aPKubzQdrPXNpg23dP+0AXSfPn1qbOoXgPoxhijGEcD3MI4AqAl64q4VQdrSQaeIaYigvXO0QbR1PKGVGxpguC79XRNBkNUjyDJv3jzTE6gy4dP//d//meXfrcoY1+Mv1yBIp4aVVAVV0XMq65hNG2rrylyPPfaY88M918ps1yDItXGydd+qBCLajFlnhlhhnutzcA2C9HjTc+Wwqmz71ltvNS1LtJrKczESKwjSqWFayeX6nF3vU98QAvk47Rqvg5Jezj333BL/YHXg0BM8vY+umFXZN5D1mJqoduvWzcwbffvtt93KHvWxNQjSAVG3p4OINpTVKWKunewB2G8McX1cxhHAdzCOAKhJeq6hU6B69uxpwh+deuUZYNRktYYGQdaUqIkTJ7pVi0yaNMm5wlZ5WPupU7OOOuooUx2jFU+e50gaBGn4pVOotOrJCk6qg65mpqudubbJ8AyC9HXWsM21WXRlWY+tAZQ27dZpbdZ1nhVBVlNwbRZd1Qr0wn9fa6220ul7WpRgsQIoaz90+XirrYkvIATyMZ5ppL45pk2bZuamavXN3LlznX/wrvfVT/O1ObI2aK4KHbD0DaQB0ObNm51vXB0cXVcI0iBI01Sdl6ulg9r4y9pfAPYdQxTjCFC/MY4A8Ma4o+caWnFjjUG1OcNAgwQNKKprm3qspR+ma7sMbTStx0YlBUHaSkOrcqqjIsV6DG2Tof1StYm2dY7merv69NNPzb5VZSqWJ30+utKYTkfT6qqSfo9Ws2jXFaWrqqCgwARq2t5AAzWLVdVu7Yc+V1+ZtUII5ENcBwX9ZF7fwFapnJ7E6Qmc9uRxLUd0fTNXRwWOniBqyePPP//svO7bb781FQSazt9zzz2m2ZlasWKFSbi17O+rr75yptwA7DuGKMYRoP5iHAFQF3hzmk51BQV6bqSrGGsooiuiWUuSuz6+/n9JH85VlhV66NLrOt1MV0+2AqiSxvjqYj0HrWjS/k16zKnVVSVVBFn3rc7qrkOHDjnbG2g7E9fV43Tbrq+tLwRBhEA+wvWNocvWHX300aYBma58pXNKdS6sBi26lKI2tnI9iavON9A333xjSuV0acalS5ea1b70+xNPPNHZsd512UGtCNLO6pq8and2APYeQxTjCFA/MY4AQOW5Hk9ZoYOGERqKaBCkH6p7Lm1fE4GIFcZYi3/o9nVqmLXyV0218LCeszalPuWUU8wxp1YjuU51q4lpfYX/PubBgwfNc9bjX+0vpce9rk2oa2r73kAI5GO0v47O0Xz22WfNcoW33HKLCV5uuukm86m+zuHUP+yTTz652BJ8FVXSG1+bwmp1j26zZcuWZjnpL7/80rypNc3W+aVaDeRKwyINiXQeKAD7jCGKcQTwPYwjAHBkVkWJVeFT2jGSTnPTD+i0ebGeS+lULG27UdM0FHnnnXfMrA2d6aGNrz1DkcoqrWrJes4a/Nx3332OZs2amT5BekxantXVynqdywpwCv+9TRc30v4/upCRNhvXYoXp06ebwgVfQgjkQz744AMTuugyiFZCq0uv6wmcnsjpG0Cv15M4vU6bfrmW91WE9fjaiG3cuHFmYLI64utqYK+99prj888/dwt2dF+6du3q+PDDD4s9npUsA7DHGKIYRwDfwzgCABVbCENXxSqtt44ViujxloYTuvqyTpXq3LmzmXGhsy+qGr6UFY7osZ9Wg+sUqQ4dOpht67QpbfdRXjrb48UXXzQfMP74449l7ovr9fqcNXy59tprzaJDERERjuuuu86xYMECR0Xp63z11VebNgeF5azm0RXYRo8ebcKgs88+263dSX1HCORDtMJGp3DonEa1ceNGUzp42WWXOfvtWKGMlretW7euQo+vy+ZpwzOLtXqPdlPXE0edN9q/f39TLeD6BtZ0W0sINUkdOnQoq38BNh1DFOMI4NsYRwCgdK79ZfRDcF39S2dEbNiwodSf8QxLNIzQ9ho6VeqTTz4pd19V18fRVb00kClvIKL300ocXTpeg6ibb77Zebx4pMrQTp06mSBFP0DUhtO61Ht5tudKgyhtBq2FBiUtD1/aY1iPo/826WtdHgUer7dWXenvR5t/+wpCIB+i80T79evnfKPoydvFF19sytqULlE4ePDgcr9xPFNgbUymb17tQq+0a7uu8KVvCi0X1OqA9u3bm2qfLVu2mPskJiaapaP1xFKXEWQZeMCeY4hiHAF8H+MIABSnH6y50nMibYmhgUp5pxp5hhP6QXt5+/K4/qz2vdGqnv/+97/OBXsqut3yNEfW59a9e3fHL7/8YgKj1atXmwICva68x5LWtsvb+0g/bLzjjjuc31v314p2bWVQE72M6qNAgc/o3bu3/PHHH/L222/LAw88ICeffLL5/8jISNm1a5f88ssv0qJFCwkJCanwYwcGBsoLL7wghYWFcuedd0pERISEhYXJZZddJp06dTL3OfvssyUqKkpuu+02OeOMM2TWrFmydu1a2bRpkwwcOFBefvll8zj5+fnmKwD7jCGKcQTwfYwjAODut99+k+OPP14mT54sl1xyiWRnZ8upp54qGRkZkpOTI507dy7XS+bv7+/2fWhoaLlfautnH3roIXnjjTfk+eeflxNPPFHatGnjdr+CggIJCAgo8We1gMTPz69c233ttddk27Zt8uabb5rnrmJjY8355FlnnSVr1qyRxo0bl3u/dbuuX0uSl5cnU6dOlf/7v/8z56z61bp/VlaWtGzZ0vk8bM/bKRSqz9q1ax3R0dGmWkcrdKzkc/fu3WYOpDZqrsz0DVfarf3CCy8029DpX7qKj2uiqqnw999/b8r+tEG0pt7aQMzaF5JXwN5jiGIcAXwX4wgAHKYzJrS5sVaiWJUtOg1MGw/rylsdO3Z0Tueq6WXttTePLv7x2WefOfux6rHewoULHTNnznT2eazq+ZpW/VxwwQWmnYC2D7G2o89vzZo1jsDAQMe0adOc11cnrWS/++67nf0sLccdd5xj7Nixzu8Lavi1rusIgXyMzhGNjIw0JX4691HL/LT0rXHjxqbksDrs3bvXceWVVzoCAgJMQzLPN5MGQT/88INp3qXNtHxtST3Al9XGGKIYRwDfxTgCAIebC7dq1cqsdqXT66+66iozBUsX19EFNjSsuOGGGxyZmZk1Hk5MmDDB9HG1ettoaK89W/UYT/dDl0XX/aoOupqX1cDZ9RxQV5LWDxz1dSlJZQMo123o66vnqPqcbr31VnPdiBEjHHfeeafzvikpKeb3oeetugiK3QoVCIF8kP4h66DSu3dv04dHV+6q7uXX9QTukksuMW8uHVAs1sCl81y1y73d3lCAL6iNMUQxjgC+i3EEABxmhoSeL2l1ii7vPmzYMHP8ozRw0VW3NBTR22s6CHr++efNMvO6Lf2QT5s166I9U6ZMcbz00ktmP10XAaqMI33or5VB+mGja3NoDWIqu/KWVh1pxfqff/7pdr1rEKQVSQMGDDBNqbV/bbNmzRzx8fGO2NhYR3h4uOOUU05x2I2f/sf2c+J8kM6J1DmQ2oPDmr9Z3fbv32/6/0ybNs30+/nPf/5jrtc5mK5zVkuaWwqgbquNMUQxjgC+i3EEgJ3p8ZOeF914443y4Ycfmv47f//9t8TFxTl7pKanp8uFF15oejJef/318uSTT5q+q1U59rJ+1vMxtL/jVVddJatWrZJ27drJyJEjzfbU0qVL5ZxzzjG9IE877bRqew089ys5OVk6duwoTz/9tHldtCfSK6+8YnpR6mvTr1+/cj/e4sWL5eGHH5YVK1bIvn37zOv47LPPSvv27c3tO3bskAkTJsh7771ntvPiiy+a3kABAQGmP5Ger+o+6Wtit3619nq2NhIUFFTj22jSpIn873//M/9/1113mTfS7bffXqxpGQEQUP/UxhiiGEcA38U4AsDONIDR86AZM2ZI8+bNTaNkbYysAYiGDhqU6+Ib+oH6RRddZIKilJQUef311yU4OLhS23T9MF4DFw2Z9FhLaWNkbZyclpZm9qtVq1bm+tTUVLOP4eHhJhyqqPvuu880uh4+fPgR76uhi+6fFgmol156yTSr1qbZFQmAFi5caLZ57rnnmkIEDdU00NIASIMg1bp1a1OwoM9Vg6Y9e/Y4b/Nkt4WL7PNMbaymPsF3PYHTN7O+AZs2bSoXX3xxjW0PgG+NIYpxBPB9jCMA7MIzULjnnntk0KBB8vHHH5sQQoMa/apBuWsQpCHK9u3bKx1GuAZAr776qkyZMkVWr14tjRo1MlVGo0ePNqu8NmjQwPkzevunn35qKmY+++wz6dq1a4W2qed9uu/z5883gc6QIUNKva9VYa7P+dChQ2YfrQBIV02zJigd6d+LlStXyqhRo0wFz+OPPy7x8fHmuS9ZskTWrVvndl8NhW655RbzO9EV0TQUe+2114o9pp0CIGWvZ4saO4HT6WC6VPz555/PqwyAcQRAreN4BEBdoIGCLv/+1FNPmSqZe++911yvH5YrDSOUaxAUEREhCxYsMBVAGuR4ttcob4WNGjdunLz77rsyduxY+eijj2TMmDGmEmbnzp0mdLH2Q5dQ19s1GPn888/NdLCKTEPT8z+tyDnllFPkn3/+kTvvvNOESWUFQfq8NJT65JNPZP369SaAqkgApK+rVlJp1dDdd99tAiClz10fV6d96fPXx9H90H3TIEiLFfT3ovvctm1bE8zZGT2BUO3sVk4HoPoxjgBgHAFQn1h9UDXQ+Omnn8x0JQ0fNHDQ6WBq48aNpjeNhjQaED3zzDPFjnsqGgC50v43TzzxhKnK0Slmuh8ahPTv399U0Nxwww0mJNEgaMuWLab6R3sAHXXUUeUOYtSGDRtMFZCG7998840Jc+6//34znay0IEgfX3v39OrVS5KSkuTrr7+Ws88+u1zbdQ2ndJ8TExPNVC/LokWLTCWVbj80NNRMvdOAbfz48XLttdean926dauZ9nbLLbfY/lyVEAgAAAAAgCoGQFpV8+ijj5o+OxpWaCNiDV4ee+wxZwWOBkEa0rzzzjty0003yRtvvFHp1901HNFgRQMene6lVUgaeGh1j/Yh0qqZM844Q3788Ue5+eabTT9XrYipygI+Wml09dVXmwBJaS8jfZ6uQVBJlUW6jzo97swzzyx38KR9jKKiokq8bfPmzWZGypVXXmkqnbTx9O7du2Xw4MGmGbdWWHnKt3nRAiEQAAAAAABVoFOVdJqShisavjRs2FBmzZplet5oPx6dxmQFQZs2bTJhiK5gpVOqKtM3zbViSFfW0jBG+/P06dPHPN6IESPk8ssvNytvRUdHyw8//CAXXHCBqZTRlbS0J49OP6votj2Do9zcXGcja9cgSKdeHXfccc4QRwOxxo0bO3+uvAGQ9vq54447TE8lfVzPlc80VJs9e7YJpLS/knWbBm3//e9/ze36O6lsdZUvsm/8BQAAAABANdDqGw1ENAjRyhR18skny4ABA0zljQYljzzyiJkaptUqGlLo/5e0nHt5WKGGhjy6UI9O99LpVbqdDz74wAQ1Gj5pAKT2799vQirtkaN9XENCQioVPHlWDun2rEDq1ltvNddpEKTVRxo06VQ0rY7S6Vm6pLsGNaq8z1ebV1u9fVyDI+s109faer2t23R/tEJIX3tdJYwAyB0hEAAAAAAAVaChgzYqtsIKDSPi4uLMSlbas0anf4WFhZkpSzplS1fqsgKLioQUrvf/66+/5KuvvjI9hrQxslWRo6uM6RLxVmiiVUpLly41oYhO1VJVCZ60qqhv377O5eddm1lrEKSPq8GP9u3RKpwvv/xSvvjiC2cAVBG6CpjSSiKdPqffa5WTZ3jm+v8aiOlro5VIdp72VRpeEQAAAAAAqkADHm18rNVA+v9W3xkNfLRJ9PTp082KXHqd9umxAouKVqlY9586daoJfTTY0f46rgGLViA9+eSTpvJGp4klJCSYoEiDGEtFAiDX4EmbT+tUNp3S5rlf1lQxbb6s/ZG0WbROVdMQ6LzzzqtU8GT5+eefTRNqDdu0ikl7DnkGQPrar127Vm688UZzvTbhdr0dRZgYBwAAAABAOQORkpx44oly6NAhs1S6hhEa9liVOBrCXHbZZWY1MK3E0T5AVbF48WK59NJLzbSulJQUZ9Nk3Z5eNCDRkOiPP/4wU7J0lTBtVH366ac796k8vv/+e/NcrIBH7dmzR7p27Wq26flY1lQxfb66gpfSBtVWAFQVZ511lnkuBw8eNCuu/f77787bNODRZtw67U5XA9P91eeuvwPdbwIgd4RAAAAAAAAcgVb3aMCQl5cn69atk3/++cdUpihtuqzLrety6bpyVmZmpglQ1qxZYyphWrZsKSeccIIJSnbu3Fml17pz586mmqhDhw6mZ442P7ZY06S0+bM2VdZpYLoqmDarrkgQc/vtt5sVxbSCSJ+vFfDoyls69czalqfs7GzzM7p/n3/+uXmMiiw/r6zAyZNOBdNmz7oSmmcQpMvCh4eHm9dYVwTTHkT6+6rs6me+jNXBAAAAAAAogzXVSVe60gocDR00zNHVtjSQ0NBEQw4NKnS1Kq2U0bBEK2J0VSwNY7RPjVbFaONmDYyqQiuAPvzwQ9OEuVevXqZqR6eEWVO3qjoFSquatKJIp7g98cQTcv3115tpWBom6TQ0nVpmhUNWTyDdnl502Xttfq3T0ioaAFnT6LQHkK6utnfvXhN29ejRwzR5Vu+//748//zzpgeTTvmylqPX3kfWtDjPVcxwGCEQAAAAAABHoCHD0Ucfbfr8aJNiDSuWL18uzz77rNx8881mZTC9z7fffitz5swxVTHdunUzvXE0kNBqIe1Z88svvziXi68KnQKlQZA2m9aVvzQ0cV0mvbKsIEaDpoEDB5ogRoMgDbp02XldcezNN98s9nM5OTluq45VNACy9luDNm3qrFVH2uBaA6bBgweb11i3bwVBWm2kvwvdN52O5/k4KBmNoQEAAAAAOILnnnvOVP5oAKFTspRWrCjtk6NhRUREhOn/oxfLqlWrTD8gDX/mzZtXLQGQ0jDmmmuuMf+vQZAuEa/Nk60eQZVl9dKJiYkxK5tpEKSPr6HWsmXLTPBy3333mdBHG0Dr1De9aGXQxIkTpWHDhs6qoPKyKnc0gNKwTLehPYD0q05509BNG13rY+qKa9r7R/fzjjvukClTpriFQARAZaMSCAAAAACAI9CpUBowfP311+Z77XmjgYQGPBqKaENkXZ5dV+SyaGiiU5d0NS0Nj3TqVnXTyhkNXzQQGTRokOmJU5mpUFYFjfXVmlqmFUHHHHOMHDhwwAQv2t9Iv+q0MA3FNMDRQGrMmDFmqlxlt2uFSrrMvK7wNXz4cOd9tJm2TqHr06eP6bvUqlUrc71WP51yyilM/aoAQiAAAAAAAI4QVOiUJO3zo9O9tCfOJZdcIk8//bSZ7qVBiFYK/frrr2Ylrri4OLcgqFmzZtKkSZMae411apiGTN27dzehSEW5LgOvU9q0IkcrgSw6LUt776xfv9704bnhhhtMI2bP6VeVnYql2xs6dKiZXqevk06na9++vXM1Nt03DX+uuOIK0//I8znSA6j8WB0MAAAAAIAj0CqeFStWyAMPPGACIK0A0tWq1MqVK+Xnn382DYxjY2PdeuL07du3RgMgpZU42rNHw5GKLsfuGgC98sorZkUv7WXUv39/eeedd2TLli3mOWk1jgYz2ox60qRJzqlwVvWQ9f+VoVVAut02bdqYiiqtnPJ8PN0ntWPHjmI/TxPo8iMEAgAAAACgDBpGaMiiq31pxY+ulqVTwDQ80WBIe9bokvDaJNp1SlVtsoKQim7XCoDGjRsnjzzyiGkyrVO7dFUufV4adG3dutVUBi1evNhMxRo7dqxZCt5S1eeqvZRuu+02Mw1Mp5jpfuhrrY9r7Z9+rxVWutoaKo/G0AAAAAAAHEHPnj1l+vTpZpn3H3/8UUaPHm2aJW/evFmCgoJk7ty5zqbK9a0y5bvvvpOPPvpI3nrrLdPXR4MYpc9H/18rgaxm0b/99psMGDDANMOuTvrY2uhagx9tAq2VQY8++qipPtq2bZupQNKl588888xq3a7d0BMIAAAAAIBy0qlfuhz8unXrTJNkne515513Ole30uCkvtHqJp3ipWFQu3btzGpfxx57rISFhZlG2M2bNzdhl65splU7VtBVExVP2uj6gw8+kKeeesr0J9LKH21Mrf+v+6KBW30M2uoKQiAAAAAAAKqoPgYTVoijPY42bNggS5cuNf15dEqYVuZMmzZNWrRoITNnzpTJkyeblc70+5qe7qaNrjUI0rBNl55fsmSJWXpe1degra6gJxAAAAAAAFVU3wIgZQU5xx9/vAmBvvrqK1N1ExUVJVOnTjWBj64MNn/+fNOTx/PnarLR9dVXX22Wi9el6S+44AKzfHx9fZ3rEkIgAAAAAAB8nLXculW15KpPnz5mGfvLLrvM3KZL3WsDaA2A/u///s9U5dx1110mFKotWol07bXXmlXYdAre4MGDzZSw2m647WuooQIAAAAAwIe5LgM/ceJEE/LoSltDhw6Vc845R4477jiz2tkDDzxg+gHp0vAaBi1btsxUBGm/oJNPPrnWVz3TiiRtFq3L0evUMF0+XnsSofLoCQQAAAAAgA3oalsvvviidOvWTVatWmVCluuuu85U26gpU6aYPkDz5s0zU7J0aphW45x00kkmAFLeqMTRqWDaG0iDK1QNIRAAAAAAAD5MAxxdZl2ne91zzz1y1llnyb59++T666+XxYsXy5gxY2TChAnmvrrsvVbeaMWNVhDpEvHeDIBQvegJBAAAAACAD/cA0vAmNzdXwsPDTRPokJAQadOmjbz11lsyZMgQ0/Pn7rvvNvfV0EcrhIKDg83F+nkCIN9ATyAAAAAAAHy0B5BO8dKVv3Q6lYZAjRs3NrfrpX379vK///1PbrvtNtP3R4Mi/d5agt16DPgOpoMBAAAAAOCDxo0bJy+99JLExsaapdbV119/LWeffbYJgXSaly65rlPFtAHzn3/+KX///bd07drV27uOGkKsBwAAAACAj00B014/2uRZp3rpEusff/yxdOrUyfQF+umnn0yVj07x0lXA2rZtK++9957Mnz+fAMjHUQkEAAAAAIAP+eKLLyQsLExmzJhhKoEiIyPN9d988408/PDDsmXLFpk+fbqMHDnSOTXMmgKmanspeNQeKoEAAAAAAPARWgF0ySWXmClfaWlpJgCyKoTOOeccefLJJ00voIsvvli+//57UxHkGgApAiDfRSUQAAAAAAA+IiUlxUztevPNN02/n59//llatWol+fn5zrBHK4TuuOMO2bNnj+zevVvi4+MJfmyCEAgAAAAAAB+SmppqegE9+uij0qdPH5k1a5apCHINgrRBdIMGDWTo0KHe3l3UIkIgAAAAAAB8MAj68MMP5aGHHpJ+/fo5gyBdKj4oKMit/49iCpg9EAIBAAAAAOCDtCeQVgRpEHT00UebxtBRUVHe3i14ESEQAAAAAAA+HARNnDjR9AAaNGiQLFiwwPQKgj25twAHAAAAAAA+Qyt/rrrqKtMPqHv37gRANkclEAAAAAAAPq6goMAEQNoDiP4/9kUIBAAAAAAAYAP+3t4BAAAAAAAA1DxCIAAAAAAAABsgBAIAAAAAALABQiAAAAAAAAAbIAQCAAAAAACwAUIgAAAAAAAAGyAEAgAAAAAAsAFCIAAAAAAAABsgBAIAAAAAALABQiAAAAAAAAAbIAQCAAAAAACwAUIgAAAAAAAA8X3/DwA3GkeiMSJJAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(plot_cellnopt_model(method, show_unselected=True))\n", + "plot_cellnopt_fit(method, view=\"heatmap\")" + ] + }, + { + "cell_type": "markdown", + "id": "annotate-intro", + "metadata": { + "tags": [] + }, + "source": [ + "## 4. Add the fitted model to AnnNet\n", + "\n", + "The optimization is complete, but the AnnNet object does not yet contain the inferred results. One signaling-specific CORNETO helper adds them:\n", + "\n", + "- selected interactions are added to a slice called `cellnopt_selected`;\n", + "- predicted protein activities are added to each condition layer;\n", + "- selected reactions are marked as active or inactive in each condition; and\n", + "- fitting summaries are attached to the corresponding layers.\n", + "\n", + "This helper works from CellNOptDAG variables and standard AnnNet attributes. It does not contain any LiverDREAM-specific proteins or conditions." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "annotate-results", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "selected reactions 16.0\n", + "selected prior interactions 16.0\n", + "condition-specific interaction records 144.0\n", + "total absolute error 3.7\n", + "Name: stored CellNOptDAG results, dtype: float64" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "result_summary = add_cellnopt_results(\n", + " signaling,\n", + " method,\n", + " problem,\n", + " solution=solution,\n", + ")\n", + "\n", + "pd.Series(\n", + " {\n", + " \"selected reactions\": result_summary[\"selected_reactions\"],\n", + " \"selected prior interactions\": result_summary[\"selected_prior_edges\"],\n", + " \"condition-specific interaction records\": result_summary[\"condition_edges\"],\n", + " \"total absolute error\": sum(result_summary[\"condition_errors\"].values()),\n", + " },\n", + " name=\"stored CellNOptDAG results\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "questions-intro", + "metadata": { + "tags": [] + }, + "source": [ + "## 5. Explore the complete analysis in AnnNet\n", + "\n", + "AnnNet now contains the candidate pathway, all experimental conditions, and the fitted results. We can answer biological questions from this object instead of combining solver variables with separate dictionaries.\n", + "\n", + "### Which candidate interactions belong to the fitted model?\n", + "\n", + "The `prior` and `cellnopt_selected` slices can be compared without losing either version of the pathway." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "selected-query", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sourcesigntarget
0TGFAactivatesEGFR
1EGFRactivatesGRB2
2GRB2activatesSOS
3SOSactivatesRAS
4RASactivatesRAF1
5RAF1activatesMEK1/2
6MEK1/2activatesERK1/2
7ERK1/2activatesPRAK
8PRAKactivatesHSP27
9RASactivatesPI3K
10PI3KactivatesPIP3
11PIP3activatesPDK1
12PDK1activatesAKT
13IGF1activatesIGFR
14IGFRactivatesIRS1
15IRS1activatesPI3K
\n", + "
" + ], + "text/plain": [ + " source sign target\n", + "0 TGFA activates EGFR\n", + "1 EGFR activates GRB2\n", + "2 GRB2 activates SOS\n", + "3 SOS activates RAS\n", + "4 RAS activates RAF1\n", + "5 RAF1 activates MEK1/2\n", + "6 MEK1/2 activates ERK1/2\n", + "7 ERK1/2 activates PRAK\n", + "8 PRAK activates HSP27\n", + "9 RAS activates PI3K\n", + "10 PI3K activates PIP3\n", + "11 PIP3 activates PDK1\n", + "12 PDK1 activates AKT\n", + "13 IGF1 activates IGFR\n", + "14 IGFR activates IRS1\n", + "15 IRS1 activates PI3K" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "selected_prior_ids = set(prior_edge_ids) & set(signaling.slices.edges(\"cellnopt_selected\"))\n", + "selected_rows = []\n", + "for edge_id in prior_edge_ids:\n", + " if edge_id not in selected_prior_ids:\n", + " continue\n", + " sources, targets = signaling.get_edge(edge_id)\n", + " source_node = next(iter(sources))\n", + " target_node = next(iter(targets))\n", + " source = source_node[0] if isinstance(source_node, tuple) else source_node\n", + " target = target_node[0] if isinstance(target_node, tuple) else target_node\n", + " sign = signaling.attrs.get_edge_attrs(edge_id)[\"interaction\"]\n", + " selected_rows.append(\n", + " {\n", + " \"source\": display_name[source],\n", + " \"sign\": \"activates\" if sign == 1 else \"inhibits\",\n", + " \"target\": display_name[target],\n", + " }\n", + " )\n", + "\n", + "pd.DataFrame(selected_rows)" + ] + }, + { + "cell_type": "markdown", + "id": "akt-question", + "metadata": { + "tags": [] + }, + "source": [ + "### How does AKT respond across the experiment?\n", + "\n", + "Observed and predicted AKT values are attributes of the same protein in different AnnNet layers. Reading them side by side shows both the perturbation response and the quality of the fit." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "akt-query", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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lStX2kcffeSCg/r7tNP+71pTel9f82fPnu22mV5f3Xm0jlesWOH+1smQqM6M1+1T68ArgOzdZ9T6V3aD3pf2OQVpFExatGiRe021KeE+4unfv7/bt7SPKViq/UpB37Vr17rHB3r//ffd/qoTa91r3/ryyy/tiiuucEHG9Ljllltc+xRAypkzp1unOtH/7rvv3DYODGSIjhUFMnQirhN7vWcF0EQnuNpWOgnVSbpOahUIev311932//bbb4OOLe0zClToRFrPpUDNjz/+6PaHBg0apPo96PHarxWo02vqGNWx7R3zV111lTt579u3r9sXPv/8c+vUqVOa6tUoS0SBJ+1Xen69f2WHarq2nwIYWn+B9NmhbapAnPZT1cjT62tf0T6mfdOjz1EF7RTE076g19m2bZv9/PPPbr327t071W3VfqJglHdseMGSzP4sy8htqnWjdiuQrKCUF4BMGIh87rnn3LrX+1KA0Qvi6vjVdte61+u2a9fONm3aZO+9957NnTvXZsyYETILKaM+11Ki11FQV8eLgnz6jurTp4+98cYbrgt7UrTN9Dmubat9XNvi6aefdvtKqACTgkAKHuozQ8e49jvtH127dnXt1XEQigJkWveqEalgnALfKRk6dKjbblpW66948eJu/1VXfrVT37tqs447LffCCy+4x+m49NANH0CW4gMAZAlPPfWULuX7hg8f7p920UUX+bJly+b7448/Ei0/ceJEt3zTpk19tWrVcn/37NnTd/z48RRfq1OnTm55PUda/fXXX+6xuj355JNB84YOHeqmFypUyNerVy/fiRMn/PPefPNNN69v375Bjxk8eLCbfvfddwe1XX937drVzZs1a1bQY9auXZuoXUeOHPE1aNDAlyNHDt/mzZv901988UX3HC+88EKix+zfv9938ODBRG1ZvHhxku9b6y7UuixVqpTvzz//TPS4unXrum04bdq0oOn//fefr2bNmr48efL4tm7dmmi7Zs+e3bdkyRL/dK3LRo0a+dfvlClTgp4vqXV1Kq+/YMGCoMc89NBDbt7IkSNDrgOto4TSsv6TE2qba5107NjRPf+3334bsk1lypTxbdiwwT/92LFjvquvvtrNW7ZsmX/6vn37fIULF3b7z4oVK4KeS/ust8+Heo+haL1r+fPOO8+3a9cu//RDhw75Lr/8cjdPx0Qg7zVuv/12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bQkAAAAAAABiXrqHvLv//vutffv2Ied16NDB+vXrdyrtAgAAAAAAQAxKdzDqww8/dDWkQtH02bNnn0q7AAAAAAAAEIPSHYzasmWLnXPOOSHnlStXzjZv3nwq7QIAAAAAAEAMSncwKl++fLZp06aQ8zZu3Gh58uQ5lXYBAAAAAAAgBqU7GKVR9Z577jk7duxY0HT9f9SoUVanTp2MaB8AAAAAAABiSLpH03v00UftmmuusWrVqlm3bt2sdOnSrmveG2+8YRs2bLBXXnklY1sKAAAAAACA+A1G1a5d2xUxv+uuu+yhhx7yTz/33HPd9Msuuyyj2ggAAAAAAIB4D0ZJkyZNbO3atfbHH3/Y9u3brVixYnbeeedlXOsAAAAAAAAQU04pGOVRAIogFAAAAAAAADI9GLVq1Sr79ddf7dChQ4nmdezY8VSfHgAAAAAAADEk3cGogwcP2o033miLFi2ybNmymc/nc9P1t4dgFAAAAAAAAAKdZun0xBNP2Pr16+3zzz93gaiZM2fa/PnzrXXr1q7L3g8//JCu592/f7/17dvXSpUqZXny5LFatWrZ9OnTU/342bNnW926de3MM8+0fPnyWdWqVe3VV19NV1sAAAAAAACQRYJRCvoMGDDA6tSp4/5ftmxZa9iwob333nt20UUX2bhx49L1vApmTZ482QYPHmwff/yxXXrppdauXTubOnVqio8dMWKEe3y1atXs3XffdaP69e7d244ePZqutgAAAAAAACCLdNNTVlTlypUte/bsrmueuu152rdvb926dbNXXnklTc85b948l12lwJMCUFK/fn3bsGGD9evXz9q2beteL5Tvv//eBg4caE899ZT179/fP10BMgAAAAAAAER5ZlTBggXtwIED7u/ixYvbH3/84Z937Ngx/7y0+OCDDyx//vzWpk2boOldunSxv//+25YtW5bkY19++WXLnTu33XPPPWl+XQAAAAAAAGTxYFT16tXt999/92cvDR8+3L788ktbvny5DR061GrWrJmukfmqVKliOXIEJ2zVqFHDPz8pS5cudY+dMWOGVapUyWVQnX322fbQQw/RTQ8AAAAAACDau+mpG56XDTVs2DC76qqrXOFwL2tKXe7SaufOnVahQoVE0wsXLuyfn5QtW7bY9u3brU+fPq64+gUXXGALFy50daQ2bdpkb7/9drKvvW3bNvf4QGvXrk3zewAAAAAAAEAmBKNuueUW/9/ly5d3WVKLFi1y9aNU1NwLIKWVHp+eeSdPnrR9+/bZtGnT7NZbb/VnbKm74AsvvGCPP/64VaxYMcnHjx071i0DAAAAAACALNhNL6F8+fJZ8+bN7YYbbkh3IKpIkSIhs5927drl7pN7Xj1WmjRpEjS9WbNm7v6HH35I9rU16p66AQbeZs2ala73AQAAAAAAgAzOjMoMqkOlzKbjx48H1Y1auXKlu69WrVqSj1Vdqa1btyaa7vP53P1ppyUfd1MRdt0AAAAAAAAQBZlRGaFVq1a2f/9+V4Q80OTJk61UqVJWu3btJB970003ufuPP/44aLpqVykQdemll2ZSqwEAAAAAABCVmVHqUte4cWO78847be/eva7GkzKlPvnkE5syZYobIc8rnq4A1bp166xcuXJuWpcuXWz8+PGuu92OHTtcAfMFCxbYmDFj3DRvOQAAAAAAAEROlgpGycyZM23gwIE2aNAgVyuqcuXKQUXJ5cSJE+7mdcGTnDlz2vz58+2RRx6x4cOHu8eqsLpG07v//vsj9G4AAAAAAACQpYNR+fPnt9GjR7tbUiZNmuRuCanA+SuvvOJuAAAAAAAAyHqyVM0oAAAAAAAAxLZ0B6OOHTtmTz75pKvNlC9fPlfPKfAWOBoeAAAAAAAAIOmOGD388MM2atQoV3S8ZcuWljt3btYoAAAAAAAAMicY9e6777oi44MHD07vUwAAAAAAACDOpLub3n///WfXXHNNxrYGAAAAAAAAMS3dwSgFon788ceMbQ0AAAAAAABiWrqDUS+++KJNmDDBZs6caUePHs3YVgEAAAAAACAmpbtmVK1atdyIem3atLFs2bJZ3rx5g+Zr2p49ezKijQAAAAAAAIj3YNRNN93kAk4AAAAAAABApgejJk2alN6HAgAAAAAAIE6lu2YUAAAAAAAAELbMKM+qVavs119/tUOHDiWa17Fjx1N9egAAAAAAAMSQdAejDh48aDfeeKMtWrTI1Y7y+XxuemAdKYJRAAAAAAAAyJBuek888YStX7/ePv/8cxeImjlzps2fP99at25t5513nv3www/pfWoAAAAAAADEqHQHo2bPnm0DBgywOnXquP+XLVvWGjZsaO+9955ddNFFNm7cuIxsJwAAAAAAAOI5GKWsqMqVK1v27Nld1zx12/O0b9/eZs2alVFtBAAAAAAAQLwHowoWLGgHDhxwfxcvXtz++OMP/7xjx4755wEAAAAAAACnHIyqXr26/f777+7v+vXr2/Dhw+3LL7+05cuX29ChQ61mzZrpfWoAAAAAAADEqHSPptetWzd/NtSwYcPsqquusrp16/qzpubNm5dxrQQAAAAAAEB8B6NuueUW/9/ly5d3WVKLFi1y9aNU1Lxw4cIZ1UYAAAAAAADEezAqoXz58lnz5s0z6ukAAAAAAAAQg9JdM0qOHDli48ePt3bt2lnjxo393fZmz55tf/75Z0a1EQAAAAAAAPGeGbVjxw5XuPyXX36xkiVL2r///mv79u1z82bNmmWffvqpjR07NiPbCgAAAAAAgHjNjOrfv7/t3r3bvvvuO9u4caP5fD7/PAWpPv/884xqIwAAAAAAAOI9M2rOnDk2cuRIu+iii+zEiRNB884++2zbvHlzRrQPAAAAAAAAMSTdmVF79+61cuXKhZx37NgxO378+Km0CwAAAAAAADEo3cGo8uXL2zfffBNy3vLly61SpUqn0i4AAAAAAADEoHQHo9q3b++66WnkPK9eVLZs2WzFihU2evRou/322zOynQAAAAAAAIjnmlEDBgywr776ylq1amWFChVy05o0aWI7d+60pk2b2r333puR7QQAAAAAAEA8B6Ny5sxp8+bNs3feecfmzp1r//77rxUtWtRuuOEGu/XWW+2009KddAUAAAAAAIAYdUoRI3XLU+Dprbfess8++8ymTp1qt9122ykFovbv3299+/a1UqVKWZ48eaxWrVo2ffr0ND/Po48+6tpXrVq1dLcFAAAAAAAAWSQzKrO0bt3a1Z0aMWKEnX/++S7A1a5dOzt58qQLdKXGjz/+aM8++6yVKFEi09sLAAAAAACATApGNWjQINXLKitp4cKFaXl61+1v/vz5/gCU1K9f3zZs2GD9+vWztm3bWvbs2ZN9juPHj1uXLl2sV69e9tNPP9mOHTvS1AYAAAAAAABknjT1p1N2kkbOS81Ny6bVBx98YPnz57c2bdoETVdw6e+//7Zly5al+BzKqNq1a5cNGzYsza8PAAAAAACALJQZtWTJksxriZmtWrXKqlSpYjlyBDerRo0a/vl16tRJ8vGrV6+2J5980mbOnOmCWgAAAAAAAMhaslTNqJ07d1qFChUSTS9cuLB/flKUidW1a1dX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aIXopJPVCRMm2LRp06xu3bp2991327XXXmszZ84kEBVj+vbta7/++muKy6kIrgajQPS6/PLL3TH85ZdfWtWqVV0gqnPnzlz8jREaYODIkSORbgbCTOfSqvn29ttvW5UqVWzhwoVusCgkj2AUbO3ate6LUaOvia7SeIUWlVXx6quvspaikEbp2Llzp///Gq1DmW4rV64MWk6R++effz4CLURGSqoQJgUyY0vDhg3tueees40bN7qAk47d7Nmzu+GFA6l4qgJXiH66yqqCxhoxsXHjxvbhhx+6YcMBRBdlq3o3BRVffPFFd9HwxhtvdAGp//77L2gZRG/2208//eT/vy4YdezY0Q02gthSo0aNoNsnn3ziputYVsZ64LyaNWtGurlZUugxCBFXvKEoddJ65pln2ubNm/3zNDy8hhJHbAg10gNip0uPF1BO2PUjcLqO8z179oS5dcjIK28avaV8+fJuuyrIrFGXEgae3nnnHbvqqqtY8VFKWcmhAsnKpND3ciCO6dgwb948d8zqdxhik47dUMe1Asy6JaTPd0T/b+2TJ0/alClTXPZjuXLlItYuZLzChQsnOqaVxYzUIxgFly2jmjNy6aWX2muvvea6BuhER1lRqk8AIOvy6skg9qmWn7Ke9NmsK+dXXHGFG1I4kGrCXXnlldahQ4eItROn5qabbiKrMc40b97cdbu97LLL/Cew9erVc9009TsN0W/QoEEc10AMWbJkSaSbEPUIRsF171i6dKk7oVXdqCZNmrj6M8qYUjFNFTgHkHVRPyS+lC5d2h5//PEk56tO2EsvvWTHjx8Pa7uQcTTQBOI7m0L/VyacBilAbBgyZEikmwAAWQrBKLgrNZ4GDRrY119/7YqlKjPq+uuvd91/EL0Re6/bpa6yKpV08eLFtn79+kTLtm7dOgItBJAZxVOVTaEimsqSAgAA4ROqOyY1PGPPm2++6c6VixQp4p/2999/W4kSJVw9T49K3mikzKFDh0aopVlXNh9FZICYFKp+UFL0BUltguilbh3KpLjgggv80xYtWmS1a9e2fPnyRbRtCA9lseoigoJQK1ascFkVGphCFxcQffSDtXv37laqVCn/NG3LWrVqWd68eYNGSFW2hX4QI/q/szXCrddNT9/JOXPmtO+++84uuuiiSDcPGUgXBNX7QN2uPbNnz7bff//dKlas6C+Vgeik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Eu5qqn7Mqmi9ul9qWysQ1aJFC7vnnnsSbXsAWdPVV1/tMmNScs455zCSXhTjezo+rV271i6//HLXHVeOHj3q7pUV9cADD9irr74a4RZmTQSjACBGqZB1+/btXRcfnbT+888/7sQWsYUMmfg5kVXR+q1bt9orr7xilStXdldia9WqFemmAUiFvn372q+//pricrpopMEpEDv4no59OXLk8Gc2qnan6r55ihYtalu2bIlg67IuglEAEEPUreeJJ55wtSkaN25s06dPtyNHjtgzzzxjGzdudF19AGRtdPMAACB6KEtdv8Hl0ksvdbXhVEJBGezKilLGIxIjGAUAUU5fdu+9956rJaMg1ODBg92VmSFDhrj6FLoid8kll/iv2gDI2ujmAcQeDUigkfIAxJ7rrrvOli5d6v5W3Sj1TihYsKAVLlzYZsyYQc+EJHBmAgBRrlSpUrZr1y7LkyePG4FHI25pSHivXhRiy5IlS/zp3ydPnnSBx8WLF9v69esTLdu6desItBCZgW4eQPQPTPDNN9/YZZdd5v/8rlevnhs5U1kViB18T8cfjaDn0W/wr7/+2vVO0G+066+/3urXrx/R9mVV2Xz8ugGAqKZiifqy05fffffdZ82aNfOPxqNgVKFChdwPo2uuuSbSTcUp8gpjpob2AYYGj97trFERvZNWbcecOXPad999ZxdddFGkmwcgHTiu4wPf00DqkRkFAFFu9uzZ7sqqugAoLVgFyzt37uwypIoUKRLp5iEDKQMKAABkTXxPA6lHMAoAYiD1X7d///3XjbalUXhUqPypp55ymRXKkCEJNjbUrVs30k1AmNDNAwCiD9/T8al8+fL+XgmhaN66devC2qZoQDc9AIhBX3zxhcuWUiHkgwcPumFmb7/9duvZs6dVr1490s0DkAy6eQCxeVwvW7bMjbQV2P32+++/twsvvDDSzQNwCtQjIWEwaseOHa52lH6Dqz6cLhYjGMEoAIhh+/fvt6lTp9obb7xhy5cvp45QlFPB28mTJ7tRE72rr8p6a9GiRdByBQoUcMulJaiBrOPzzz9P0/JciQeyPn0e582bN+hzWd/RCaeJTmoZgCQ68T2NQDt37rTGjRvbI488YjfffDMrJwGCUQAQ5W655RbXJe/cc8/1T/vzzz+tTJky7qqrZ9WqVS4o9fzzz0eopThVH330kd100032ww8/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SwAQjGAUAMSAyy+/3BVRfPXVV23BggX+EXqqV69ujRs3tu7du7vMKQDRgW4eAAAgltFNDwCi3NKlS12h0/z580e6KQAyAN08AABArEt5bGgAQJYfQnj16tWRbgYAAAAApArBKACIcoxDAQAAACCaUDMKAAAgCzl58mSkmwAAAJCpyIwCgBiQLVu2SDcBAAAAAFKFAuYAEAPFjvPmzevuUxO02rNnT1jaBQAAAACh0E0PAGJAvXr1rFixYpFuBgAAAACkiMwoAIhyDAMPAAAAIJpQMwoAAAAAAABhQzAKAAAAAAAAYUMwCgAAAAAAAGFDzSgAAAAAAACEDZlRAAAAAAAACBuCUQAAAAAAAAgbglEAAAAAAAAIG4JRAAAAAAAACBuCUQAAAAAAAAgbglEAAABRol69eu7mWb9+vWXLls0mTZrkn/b111/bkCFDbPfu3Sk+HgAAIBJyRORVAQAAcMrOOuss++abb+zcc88NCkY9/vjj1rlzZytYsGDQ8mPHjmWtAwCAiCMYBQAAEKVy585tl19+eaqXv+CCCzK1PQAAAKlBNz0AAIAU/Pbbb9auXTsrUaKECwCVLVvWOnbsaEeOHHHzV61aZS1atLBChQpZnjx5rFatWjZ58uSg51iyZInrUjdt2jQbOHCglSpVys4880xr1KiRrVmzJmhZn89nTz/9tJUrV84930UXXWQff/xxonYl7Kan7nn9+vVzf5cvX97N002vnVQ3vV27dlnv3r2tdOnSlitXLqtQoYJrn/fePHqeu+++29566y2rUqWK5c2b12rWrGlz5sxh/wEAAGlCZhQAAEAyfvrpJ7vqqqusaNGiNnToUDvvvPPsn3/+sQ8//NCOHj3qAkJ16tSx4sWL24svvmhFihSxKVOmuG5y//77r/Xv3z/o+R555BG78sor7fXXX7e9e/fagAEDrHnz5vbrr79a9uzZ3TLqZqdbt27d7Oabb7ZNmzZZjx497MSJE1apUqUk29q9e3cXXHrppZds5syZrhtfchlRhw8ftvr169u6devc69WoUcO++OILe+qpp+zHH3+0uXPnBi2v/69YscKth/z587uAWatWrVwwTUEsAACA1CAYBQAAkIz777/fcuTIYcuXL7dixYr5p7dv396fjaSg1OLFi61MmTJu2nXXXecKiCvA06tXLytQoID/cQoMKVjlUQDqlltucUEedbnT40aOHOmCPApYeapWreqCWMkFo84++2yXtSUXXnihnXPOOcluW2Vv/fzzz/buu+9amzZt3LTGjRu7QJOCZPPnz3f/9xw6dMgWLFhgZ5xxhvu/MraU4aXHP/TQQ+xHAAAgVeimBwAAkISDBw/a559/7oJFgYGoQIsWLbKGDRv6A1EeZUbp8SowHujGG28M+r+ykWTDhg3uXssrY8kLdnmUfaVuexlJbc+XL5/LvkrYdlm4cGHQdGVReYEoUbdFZYR5bQcAAEgNglEAAABJ+O+//1zXOGUcJWXnzp3+7nCBlDHkzQ+kbnyBVIPKyzoKXL5kyZKJnjPUtFOh19Jzqh5UIAWYlA2WUtu99nttBwAASA2CUQAAAEkoXLiw60a3efPmJNeRAjSqIZXQ33//7e5VayotvIDP1q1bE80LNe1U6LVU10oF0wNt27bNjh8/nua2AwAApAbBKAAAgCScfvrpVrduXXvvvfdsx44dIZdRFz11d/OCT54333zTjTinOlBpoeU1gt7bb78dNP3rr79OVXe4hJlWyVHb9+/fb7NmzUrUdm8+AABARiMYBQAAkIznn3/ejh07ZrVr17bXXnvNFSqfPn263XbbbbZv3z4bPHiw5cyZ09VTUgDp448/tg4dOriR51TcPLB4eWoUKlTIHnzwQfvggw/c6HiffvqpK2SuulWp6aZXvXp1dz969GhXf+q7775z7QylY8eOrmZVp06dbNSoUa44udqsEf9UhL1Ro0bsGwAAIMMxmh4AAEAyatas6UbSU9Dp4YcfdoEdBYUaNGhguXLlcqPbKWtJAZy77rrLZSRVqVLFJk6c6C8EnlZDhw51hcXHjh1rb731llWuXNleeeUVe/bZZ1N8bL169Vw7NVKegmcnT550ATRNT0gZWJo3cOBAe+aZZ2z79u1WunRpFwzT+wUAAMgM2XwJiwQAAAAAAAAAmYRuegAAAAAAAAgbglEAAAAAAAAIG4JRAAAAAAAACBuCUQAAAAAAAAgbglEAAAAAAAAIG4JRAAAAAAAACBuCUQAAAAAAAAgbglEAAAAAAAAIG4JRAAAAAAAACBuCUQAAAAAAAAgbglEAAAAAAAAIG4JRAAAAAAAACBuCUQAAAAAAAAgbglEAAAAAAACwcPl/cJycenVI9TYAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Observed AKTPredicted AKT
condition
Basal0.080.0
TGFA0.851.0
TGFA + EGFRi0.150.0
TGFA + RASi0.250.0
TGFA + MEKi0.751.0
IGF10.881.0
IGF1 + PI3Ki0.200.0
TGFA + IGF10.901.0
Dual + MEKi0.821.0
\n", + "
" + ], + "text/plain": [ + " Observed AKT Predicted AKT\n", + "condition \n", + "Basal 0.08 0.0\n", + "TGFA 0.85 1.0\n", + "TGFA + EGFRi 0.15 0.0\n", + "TGFA + RASi 0.25 0.0\n", + "TGFA + MEKi 0.75 1.0\n", + "IGF1 0.88 1.0\n", + "IGF1 + PI3Ki 0.20 0.0\n", + "TGFA + IGF1 0.90 1.0\n", + "Dual + MEKi 0.82 1.0" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "akt_response = vertex_layer_table(\n", + " signaling,\n", + " condition_layers,\n", + " {\n", + " \"Observed AKT\": (\"akt\", \"observed\"),\n", + " \"Predicted AKT\": (\"akt\", \"predicted\"),\n", + " },\n", + ")\n", + "\n", + "ax = akt_response.plot.bar(figsize=(10, 3.8), color=[\"#9ecae1\", \"#2166ac\"])\n", + "ax.set_ylim(0, 1.15)\n", + "ax.set_ylabel(\"Boolean activity\")\n", + "ax.set_title(\"AKT measurements and predictions read from AnnNet\")\n", + "ax.legend(frameon=False, ncol=2)\n", + "plt.tight_layout()\n", + "plt.show()\n", + "\n", + "akt_response" + ] + }, + { + "cell_type": "markdown", + "id": "reaction-question", + "metadata": { + "tags": [] + }, + "source": [ + "### Which reactions are active after a perturbation?\n", + "\n", + "A reaction may belong to the fitted network but be inactive in a particular condition. The result layers preserve this distinction. For example, MEK inhibition removes activity from the ERK1/2 branch while leaving the route to AKT available." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "reaction-query", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0 egfr -> grb2\n", + "1 grb2 -> sos\n", + "2 pdk1 -> akt\n", + "3 pi3k -> pip3\n", + "4 pip3 -> pdk1\n", + "5 raf1 -> mek12\n", + "6 ras -> pi3k\n", + "7 ras -> raf1\n", + "8 sos -> ras\n", + "9 tgfa -> egfr\n", + "Name: TGFA + MEKi, dtype: object" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def active_reactions_in(network, layer):\n", + " \"\"\"Return the distinct CellNOpt reactions active in one AnnNet layer.\"\"\"\n", + " reactions = set()\n", + " for edge_id in network.layers.layer_edge_set(layer):\n", + " attributes = network.attrs.get_edge_attrs(edge_id)\n", + " if attributes.get(\"selected\") and attributes.get(\"active\"):\n", + " reactions.add(attributes[\"reaction\"])\n", + " return sorted(reactions)\n", + "\n", + "\n", + "condition = \"TGFA + MEKi\"\n", + "pd.Series(active_reactions_in(signaling, condition_layers[condition]), name=condition)" + ] + }, + { + "cell_type": "markdown", + "id": "save-intro", + "metadata": { + "tags": [] + }, + "source": [ + "## 6. Save the analysis and use it again\n", + "\n", + "AnnNet's native format preserves the network, annotations, slices, condition layers, and fitting results. To demonstrate that the saved object is useful on its own, we reopen it and read the AKT result again without using the CORNETO model or its solver variables." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "save-reload", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saved analysis: build/annnet-cellnopt-liverdream.annnet\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Observed AKTPredicted AKT
condition
Basal0.080.0
TGFA0.851.0
TGFA + EGFRi0.150.0
TGFA + RASi0.250.0
TGFA + MEKi0.751.0
IGF10.881.0
IGF1 + PI3Ki0.200.0
TGFA + IGF10.901.0
Dual + MEKi0.821.0
\n", + "
" + ], + "text/plain": [ + " Observed AKT Predicted AKT\n", + "condition \n", + "Basal 0.08 0.0\n", + "TGFA 0.85 1.0\n", + "TGFA + EGFRi 0.15 0.0\n", + "TGFA + RASi 0.25 0.0\n", + "TGFA + MEKi 0.75 1.0\n", + "IGF1 0.88 1.0\n", + "IGF1 + PI3Ki 0.20 0.0\n", + "TGFA + IGF1 0.90 1.0\n", + "Dual + MEKi 0.82 1.0" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "output_dir = Path(\"build\")\n", + "output_dir.mkdir(exist_ok=True)\n", + "analysis_path = output_dir / \"annnet-cellnopt-liverdream.annnet\"\n", + "\n", + "an.io.write(signaling, analysis_path, overwrite=True)\n", + "restored = an.io.read(analysis_path)\n", + "\n", + "restored_akt = vertex_layer_table(\n", + " restored,\n", + " condition_layers,\n", + " {\n", + " \"Observed AKT\": (\"akt\", \"observed\"),\n", + " \"Predicted AKT\": (\"akt\", \"predicted\"),\n", + " },\n", + ")\n", + "\n", + "assert restored_akt.equals(akt_response)\n", + "print(\"Saved analysis:\", analysis_path)\n", + "restored_akt" + ] + }, + { + "cell_type": "markdown", + "id": "why-annnet", + "metadata": { + "tags": [] + }, + "source": [ + "## What does AnnNet add?\n", + "\n", + "AnnNet is the central graph object for the analysis. It provides a common place for the biological network, experimental data, and inferred results:\n", + "\n", + "- **Proteins keep the same identity across conditions.** AKT is one protein with different measurements and predictions in different layers.\n", + "- **The candidate and fitted networks coexist.** Slices make them easy to compare without overwriting the original pathway.\n", + "- **Results remain connected to the biology.** Predictions and reaction activities are attached to the proteins, interactions, and conditions they describe.\n", + "- **The analysis can be exchanged and extended.** Another researcher can reopen the file, inspect a condition, or add annotations without reconstructing the work from notebook variables.\n", + "- **CORNETO methods can share the same graph object.** CORNETO supplies optimization methods; AnnNet supplies the annotated network that those methods read and enrich.\n", + "\n", + "For a small one-off calculation, separate edge lists and tables may be sufficient. AnnNet becomes particularly useful when an analysis contains many conditions, annotations, or results from several methods and needs to remain reusable beyond the notebook that created it." + ] + }, + { + "cell_type": "markdown", + "id": "limitations", + "metadata": { + "tags": [] + }, + "source": [ + "## Limitations of this example\n", + "\n", + "The normalized measurements are synthetic, so the selected pathway is not a new biological result. Their variation illustrates an imperfect fit, but it is not an estimate of experimental noise in HepG2 cells. Different perturbations, measurements, or regularization choices could support a different model.\n", + "\n", + "CellNOptDAG uses the signed protein interactions and condition data needed for this analysis. AnnNet can contain additional annotations and layers that are not used by this particular optimization method; they remain available for other analyses.\n", + "\n", + "CellNOptDAG requires the selected model to have no feedback loops. A feedback interaction can still be biologically plausible even when it is not included in this fitted model. CORNETO also checks that selected reactions connect experimental inputs to measured outputs. This is a mathematical connectivity requirement, not a biochemical flux or a measure of interaction strength.\n", + "\n", + "### Further reading\n", + "\n", + "- Rodriguez-Mier *et al.* [Unifying multi-sample network inference from prior knowledge and omics data with CORNETO](https://doi.org/10.1038/s42256-025-01069-9), *Nature Machine Intelligence* (2025).\n", + "- Prill *et al.* [Crowdsourcing Network Inference: The DREAM Predictive Signaling Network Challenge](https://pmc.ncbi.nlm.nih.gov/articles/PMC3465072/).\n", + "- AnnNet documentation: [layers](https://saezlab.github.io/annnet/reference/core/layers/), [slices](https://saezlab.github.io/annnet/reference/core/slices/), and [native storage](https://saezlab.github.io/annnet/explanations/io-annnet/)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.15" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/tutorials/annnet-signaling/pixi.toml b/docs/tutorials/annnet-signaling/pixi.toml new file mode 100644 index 000000000..5de94efe9 --- /dev/null +++ b/docs/tutorials/annnet-signaling/pixi.toml @@ -0,0 +1,16 @@ +[workspace] +name = "annnet-signaling" +channels = ["conda-forge"] +platforms = ["linux-64", "osx-64", "osx-arm64", "win-64"] + +[dependencies] +python = "3.11.*" +matplotlib = "==3.10.3" +networkx = "==3.5" +pandas = "==2.3.3" +graphviz = "*" +pip = "*" + +[pypi-dependencies] +corneto = { path = "../../..", editable = true, extras = ["plot"] } +annnet = { git = "https://github.com/saezlab/annnet.git", rev = "e37ab0069c2882154582354ed0ba2b01dd9b1c37", extras = ["polars", "networkx", "zarr_io"] } diff --git a/docs/tutorials/index.md b/docs/tutorials/index.md index e6083add0..7fdd19c9e 100755 --- a/docs/tutorials/index.md +++ b/docs/tutorials/index.md @@ -10,6 +10,7 @@ :maxdepth: 1 fba/context-specific-metabolic-omics.ipynb +annnet-signaling/annnet-cellnopt-dag.ipynb carnival/single-sample-carnival-transcriptomics.ipynb carnival/multi-receptor-integration.ipynb carnival/network-sampler.ipynb diff --git a/tests/methods/signaling/test_cellnopt_annnet.py b/tests/methods/signaling/test_cellnopt_annnet.py new file mode 100644 index 000000000..0dd81f0b2 --- /dev/null +++ b/tests/methods/signaling/test_cellnopt_annnet.py @@ -0,0 +1,48 @@ +import pytest + +from corneto.methods.signaling import CellNOptDAG +from corneto.methods.signaling.annnet import ( + add_cellnopt_conditions, + add_cellnopt_results, + build_cellnopt_from_annnet, +) + +annnet = pytest.importorskip("annnet") + + +def test_cellnopt_reads_conditions_and_adds_results_to_annnet(backend): + graph = annnet.AnnNet(directed=True) + graph.history.enable(True) + graph.slices.add("prior") + graph.add_edges( + [ + {"source": "L", "target": "A", "edge_id": "e0"}, + {"source": "A", "target": "Y", "edge_id": "e1"}, + {"source": "L", "target": "Y", "edge_id": "shortcut"}, + ], + slice="prior", + default_edge_directed=True, + ) + for edge_id in graph.edges(): + graph.attrs.set_edge_attrs(edge_id, interaction=1) + layers = add_cellnopt_conditions( + graph, + inputs={"off": {"L": 0}, "on": {"L": 1}, "blocked": {"L": 1}}, + inhibitors={"off": {}, "on": {}, "blocked": {"A": 1}}, + measurements={"off": {"Y": 0}, "on": {"Y": 1}, "blocked": {"Y": 0}}, + ) + + method = CellNOptDAG(lambda_reg=1e-3, backend=backend) + problem = build_cellnopt_from_annnet(method, graph, network_slice="prior") + solution = problem.solve() + summary = add_cellnopt_results(graph, method, problem, solution=solution) + + assert solution.status == "optimal" + assert layers == {"off": ("off",), "on": ("on",), "blocked": ("blocked",)} + assert graph.layers.get_vertex_layer_attrs("L", ("on",))["input"] == 1 + assert graph.layers.get_vertex_layer_attrs("A", ("blocked",))["inhibited"] == 1 + assert graph.layers.get_vertex_layer_attrs("Y", ("on",))["predicted"] == 1 + assert graph.layers.get_layer_attrs(("blocked",))["endpoint_absolute_error"] == 0 + assert graph.slices.exists("cellnopt_selected") + assert summary["selected_reactions"] == 2 + assert summary["condition_errors"] == {"off": 0.0, "on": 0.0, "blocked": 0.0}