{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "8c1b16fa",
   "metadata": {},
   "source": [
    "# Experiment Utilities with ``braintools``\n",
    "\n",
    "[![Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/chaobrain/brainx/blob/main/docs/tutorials/braintools_expriment_utilities.ipynb)\n",
    "[![Open in Kaggle](https://kaggle.com/static/images/open-in-kaggle.svg)](https://kaggle.com/kernels/welcome?src=https://github.com/chaobrain/brainx/blob/main/docs/tutorials/braintools_expriment_utilities.ipynb)\n",
    "\n",
    "## What is `braintools`?\n",
    "\n",
    "`braintools` is the experiment-utility package in the BrainX ecosystem. It fills the practical gaps around neural dynamics models: task construction, input generation, parameter initialization, connectivity generation, file I/O, metric calculation, optimization, numerical integration, surrogate gradients, visualization, and spike encoding.\n",
    "\n",
    "It is useful to think of `braintools` as the utility layer between a model and a full experiment. Packages such as `brainstate` and `braincell` focus on model states, neural dynamics, and simulation objects. `braintools` focuses on how those objects are organized into runnable, analyzable, and reproducible experiment workflows.\n",
    "\n",
    "For deeper explanations, extended examples, and complete API references, see the full [braintools documentation](https://brainx.chaobrain.com/braintools/).\n",
    "\n",
    "This tutorial follows a typical experiment workflow. It starts with setup, then introduces cognitive tasks, connectivity, file processing, initialization, input currents, metrics, optimization, numerical integration, surrogate gradients, visualization, and spike encoding. The final section combines several utilities into a compact end-to-end example.\n",
    "\n",
    "## Module overview\n",
    "\n",
    "| Module or utility | Main purpose | Example in this tutorial |\n",
    "| --- | --- | --- |\n",
    "| [`braintools.cogtask`](https://brainx.chaobrain.com/braintools/cogtask/index.html) | Build cognitive tasks, trial features, task phases, and sampled trial data | Use `Feature` and `PerceptualDecisionMaking` to generate inputs, targets, and trial metadata |\n",
    "| [`braintools.conn`](https://brainx.chaobrain.com/braintools/conn/index.html) | Generate neuron-to-neuron connectivity, sparse indices, weight matrices, and delays | Use `AllToAll` and `FixedProb` to build dense and random connectivity |\n",
    "| [`braintools.file`](https://brainx.chaobrain.com/braintools/file/index.html) | Save and load parameters, checkpoints, and other pytree experiment artifacts | Use `msgpack_save` and `msgpack_load` to write and read a parameter dictionary |\n",
    "| [`braintools.init`](https://brainx.chaobrain.com/braintools/init/index.html) | Initialize model parameters, state variables, synaptic weights, and readout weights | Use `Normal`, `XavierNormal`, and `Constant` to create arrays or connection weights |\n",
    "| [`braintools.input`](https://brainx.chaobrain.com/braintools/input/index.html) | Generate common stimulus protocols and input currents, such as step, sinusoidal, noise, and Poisson spike inputs | Use `step`, `sinusoidal`, and `poisson` to create time-series inputs |\n",
    "| [`braintools.metric`](https://brainx.chaobrain.com/braintools/metric/index.html) | Compute neural activity metrics and machine-learning losses | Use `firing_rate`, cross entropy, and squared error to evaluate outputs |\n",
    "| [`braintools.optim`](https://brainx.chaobrain.com/braintools/optim/index.html) | Update trainable `brainstate` parameters | Use `SGD` to minimize a simple quadratic loss |\n",
    "| [`braintools.quad`](https://brainx.chaobrain.com/braintools/quad/index.html) | Provide numerical integration steps for ODEs, SDEs, DDEs, and IMEX systems | Use `ode_rk4_step` to integrate first-order decay dynamics |\n",
    "| [`braintools.surrogate`](https://brainx.chaobrain.com/braintools/surrogate/index.html) | Provide differentiable surrogate gradients for non-differentiable spike functions | Use a `sigmoid` spike function to inspect forward spikes and gradients |\n",
    "| [`braintools.visualize`](https://brainx.chaobrain.com/braintools/visualize/index.html) | Plot raster plots, population activity, connectivity matrices, learning curves, and related figures | Use `raster_plot` and `population_activity` to visualize spike data |\n",
    "| [`braintools.RateEncoder`](https://brainx.chaobrain.com/braintools/misc/spike_encoding.html) | Convert continuous values or input intensities into spike trains | Encode analog inputs as Bernoulli spike trains according to firing rate |\n",
    "\n",
    "Each section below corresponds to one utility category in the table. You can first scan the overview, then use the code examples to see where each tool fits in an experiment workflow."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "869d1181",
   "metadata": {},
   "source": [
    "## 1. Setup\n",
    "\n",
    "The examples use short arrays and small time windows so the outputs are easy to inspect. Time-dependent utilities use `brainunit` units and the global `brainstate` time step. Random examples set explicit seeds when the API exposes one, so saved outputs are reproducible across documentation builds.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "835f5320",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-24T08:32:15.775138Z",
     "iopub.status.busy": "2026-06-24T08:32:15.775138Z",
     "iopub.status.idle": "2026-06-24T08:32:18.190737Z",
     "shell.execute_reply": "2026-06-24T08:32:18.190737Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "simulation dt: 1. ms\n"
     ]
    }
   ],
   "source": [
    "import tempfile\n",
    "from pathlib import Path\n",
    "\n",
    "import braintools\n",
    "import brainstate\n",
    "import brainunit as u\n",
    "import jax\n",
    "import jax.numpy as jnp\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "from braintools import cogtask, conn, file, init, input, metric, optim, quad, surrogate, visualize\n",
    "\n",
    "brainstate.environ.set(dt=1.0 * u.ms)\n",
    "brainstate.random.seed(0)\n",
    "\n",
    "print(f\"simulation dt: {brainstate.environ.get_dt()}\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "485d511f",
   "metadata": {},
   "source": [
    "## 2. Cognitive Tasks\n",
    "\n",
    "Cognitive-task utilities describe experiments in terms of features, phases, and trial sampling. A feature specifies part of the input or target vector. A phase specifies an interval such as fixation, stimulus, delay, or response. A task combines these pieces into trial data that can drive a model.\n",
    "\n",
    "Full documentation: [Cognitive Tasks](https://brainx.chaobrain.com/braintools/cogtask/index.html)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "91725463",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-24T08:32:18.191740Z",
     "iopub.status.busy": "2026-06-24T08:32:18.191740Z",
     "iopub.status.idle": "2026-06-24T08:32:18.194550Z",
     "shell.execute_reply": "2026-06-24T08:32:18.194550Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "FeatureSet(names=['fixation', 'motion', 'choice'], nums=[1, 2, 2])\n",
      "total input dimensions: 5\n",
      "fixation slice: slice(0, 1, None)\n",
      "motion slice:   slice(1, 3, None)\n",
      "choice slice:   slice(3, 5, None)\n"
     ]
    }
   ],
   "source": [
    "# Feature sets map named task variables into slices of a trial input vector.\n",
    "features = cogtask.Feature(1, \"fixation\") + cogtask.Feature(2, \"motion\") + cogtask.Feature(2, \"choice\")\n",
    "\n",
    "print(features)\n",
    "print(f\"total input dimensions: {features.num}\")\n",
    "print(f\"fixation slice: {features['fixation'].i}\")\n",
    "print(f\"motion slice:   {features['motion'].i}\")\n",
    "print(f\"choice slice:   {features['choice'].i}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "67b1cdb0",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-24T08:32:18.195554Z",
     "iopub.status.busy": "2026-06-24T08:32:18.195554Z",
     "iopub.status.idle": "2026-06-24T08:32:19.035982Z",
     "shell.execute_reply": "2026-06-24T08:32:19.035982Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Task(name=PerceptualDecisionMaking, inputs=5, outputs=3, output_mode=categorical)\n",
      "input shape:  (80, 5)\n",
      "target shape: (80,)\n",
      "phases:       [('fixation', 0, 20), ('stimulus', 20, 60), ('response', 60, 80), ('Sequence', 60, 80)]\n",
      "trial state:  {'trial_index': 0, 'ground_truth': Array(0, dtype=int32), 'coherence': Array(25.6, dtype=float32), 'stimulus_direction': Array(0., dtype=float32), 'output_mode': 'categorical'}\n"
     ]
    }
   ],
   "source": [
    "# A ready-made perceptual decision-making task returns trial inputs, targets, and metadata.\n",
    "task = cogtask.PerceptualDecisionMaking(\n",
    "    t_fixation=20 * u.ms,\n",
    "    t_stimulus=40 * u.ms,\n",
    "    t_response=20 * u.ms,\n",
    "    pop_per_choice=2,\n",
    "    seed=0,\n",
    ")\n",
    "\n",
    "trial_inputs, trial_targets, trial_info = task.sample_trial(0)\n",
    "\n",
    "print(task)\n",
    "print(f\"input shape:  {trial_inputs.shape}\")\n",
    "print(f\"target shape: {trial_targets.shape}\")\n",
    "print(f\"phases:       {trial_info['phase_history']}\")\n",
    "print(f\"trial state:  {trial_info['trial_state']}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "67e87309",
   "metadata": {},
   "source": [
    "## 3. Synaptic Connectivity\n",
    "\n",
    "Connectivity helpers create connection lists and optional weights or delays. The resulting `ConnectionResult` exposes sparse connection indices and conversion helpers such as `weight2dense()` and `weight2csr()`. In these arrays, `pre_indices[k] -> post_indices[k]` identifies one directed connection, while `weights[k]` stores the corresponding synaptic weight when a weight initializer is provided.\n",
    "\n",
    "Full documentation: [Synaptic Connectivity](https://brainx.chaobrain.com/braintools/conn/index.html)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "d047c8b6",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-24T08:32:19.036986Z",
     "iopub.status.busy": "2026-06-24T08:32:19.036986Z",
     "iopub.status.idle": "2026-06-24T08:32:19.059345Z",
     "shell.execute_reply": "2026-06-24T08:32:19.059345Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "shape: (4, 4)\n",
      "number of connections: 12\n",
      "pre indices:  [0 0 0 1 1 1 2 2 2 3 3 3]\n",
      "post indices: [1 2 3 0 2 3 0 1 3 0 1 2]\n",
      "dense weights:\n",
      "[[0.  0.5 0.5 0.5]\n",
      " [0.5 0.  0.5 0.5]\n",
      " [0.5 0.5 0.  0.5]\n",
      " [0.5 0.5 0.5 0. ]]\n"
     ]
    }
   ],
   "source": [
    "all_to_all = conn.AllToAll(\n",
    "    include_self_connections=False,\n",
    "    weight=init.Constant(0.5),\n",
    ")\n",
    "result = all_to_all(pre_size=4, post_size=4)\n",
    "\n",
    "print(f\"shape: {result.shape}\")\n",
    "print(f\"number of connections: {result.n_connections}\")\n",
    "print(f\"pre indices:  {result.pre_indices}\")\n",
    "print(f\"post indices: {result.post_indices}\")\n",
    "print(\"dense weights:\")\n",
    "print(result.weight2dense())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "2631e566",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-24T08:32:19.060348Z",
     "iopub.status.busy": "2026-06-24T08:32:19.060348Z",
     "iopub.status.idle": "2026-06-24T08:32:19.077348Z",
     "shell.execute_reply": "2026-06-24T08:32:19.077348Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "random connection count: 8\n",
      "dense random weights:\n",
      "[[0.  0.  0.  0.2]\n",
      " [0.2 0.  0.2 0.2]\n",
      " [0.2 0.2 0.  0. ]\n",
      " [0.  0.  0.  0. ]\n",
      " [0.2 0.  0.2 0. ]]\n"
     ]
    }
   ],
   "source": [
    "# Fixed-probability connectivity is useful for random network sketches.\n",
    "# The seed is passed through the base Connectivity class for reproducible examples.\n",
    "random_conn = conn.FixedProb(\n",
    "    prob=0.35,\n",
    "    allow_self_connections=False,\n",
    "    weight=init.Constant(0.2),\n",
    "    seed=1,\n",
    ")\n",
    "random_result = random_conn(pre_size=5, post_size=4)\n",
    "\n",
    "print(f\"random connection count: {random_result.n_connections}\")\n",
    "print(\"dense random weights:\")\n",
    "print(random_result.weight2dense())\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "013ee2d1",
   "metadata": {},
   "source": [
    "## 4. File Processing\n",
    "\n",
    "File utilities save and load pytrees such as parameter dictionaries. This is useful for checkpoints, initialized parameters, and experiment artifacts.\n",
    "\n",
    "Full documentation: [File Processing](https://brainx.chaobrain.com/braintools/file/index.html)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "b548d246",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-24T08:32:19.078395Z",
     "iopub.status.busy": "2026-06-24T08:32:19.078395Z",
     "iopub.status.idle": "2026-06-24T08:32:19.139348Z",
     "shell.execute_reply": "2026-06-24T08:32:19.139348Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loaded keys: ['bias', 'weights']\n",
      "loaded weights:\n",
      "[[0. 1. 2.]\n",
      " [3. 4. 5.]]\n",
      "loaded bias: [ 0.1 -0.2]\n"
     ]
    }
   ],
   "source": [
    "params = {\n",
    "    \"weights\": jnp.arange(6, dtype=jnp.float32).reshape(2, 3),\n",
    "    \"bias\": jnp.array([0.1, -0.2], dtype=jnp.float32),\n",
    "}\n",
    "\n",
    "checkpoint_path = Path(tempfile.gettempdir()) / \"braintools_tutorial_checkpoint.msgpack\"\n",
    "file.msgpack_save(str(checkpoint_path), params, overwrite=True, verbose=False)\n",
    "loaded_params = file.msgpack_load(str(checkpoint_path), verbose=False)\n",
    "checkpoint_path.unlink(missing_ok=True)\n",
    "\n",
    "print(\"loaded keys:\", sorted(loaded_params.keys()))\n",
    "print(\"loaded weights:\")\n",
    "print(loaded_params[\"weights\"])\n",
    "print(\"loaded bias:\", loaded_params[\"bias\"])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7ccb5d16",
   "metadata": {},
   "source": [
    "## 5. Initialization\n",
    "\n",
    "Initialization utilities create arrays for model parameters, synaptic weights, and readout layers. Distribution-based initializers are convenient for neuroscience-style parameters, while Xavier and Kaiming initializers are useful for trainable neural-network layers.\n",
    "\n",
    "Full documentation: [Initialization](https://brainx.chaobrain.com/braintools/init/index.html)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "cc7d87c0",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-24T08:32:19.140352Z",
     "iopub.status.busy": "2026-06-24T08:32:19.140352Z",
     "iopub.status.idle": "2026-06-24T08:32:19.144360Z",
     "shell.execute_reply": "2026-06-24T08:32:19.144360Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Normal initializer\n",
      "  shape: (4, 3)\n",
      "  mean/std: 0.0022 / 0.0704\n",
      "Xavier normal initializer\n",
      "  shape: (4, 3)\n",
      "  mean/std: -0.1338 / 0.5093\n"
     ]
    }
   ],
   "source": [
    "rng = np.random.default_rng(0)\n",
    "\n",
    "normal_weights = init.Normal(mean=0.0, std=0.1)((4, 3), rng=rng)\n",
    "xavier_weights = init.XavierNormal()((4, 3), rng=rng)\n",
    "\n",
    "print(\"Normal initializer\")\n",
    "print(f\"  shape: {normal_weights.shape}\")\n",
    "print(f\"  mean/std: {normal_weights.mean():.4f} / {normal_weights.std():.4f}\")\n",
    "\n",
    "print(\"Xavier normal initializer\")\n",
    "print(f\"  shape: {xavier_weights.shape}\")\n",
    "print(f\"  mean/std: {xavier_weights.mean():.4f} / {xavier_weights.std():.4f}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e784a9c1",
   "metadata": {},
   "source": [
    "## 6. Input Current\n",
    "\n",
    "Input utilities generate common stimulation protocols: steps, ramps, oscillations, pulses, noise, and Poisson spike input. Unit-aware durations make the protocol align with the simulation time step. In practice, pass time arguments with units such as `u.ms` or `u.Hz`; this keeps protocol generation consistent with the global `brainstate` time step.\n",
    "\n",
    "Full documentation: [Input Current](https://brainx.chaobrain.com/braintools/input/index.html)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "764380ce",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-24T08:32:19.145589Z",
     "iopub.status.busy": "2026-06-24T08:32:19.145589Z",
     "iopub.status.idle": "2026-06-24T08:32:19.247929Z",
     "shell.execute_reply": "2026-06-24T08:32:19.247929Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 700x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "step_current = input.step(\n",
    "    amplitudes=[0.0, 1.0, 0.0],\n",
    "    step_times=[0 * u.ms, 10 * u.ms, 40 * u.ms],\n",
    "    duration=60 * u.ms,\n",
    ")\n",
    "\n",
    "sine_current = input.sinusoidal(\n",
    "    amplitude=0.5,\n",
    "    frequency=30 * u.Hz,\n",
    "    duration=60 * u.ms,\n",
    "    bias=True,\n",
    ")\n",
    "\n",
    "poisson_spikes = input.poisson(\n",
    "    rate=40 * u.Hz,\n",
    "    duration=60 * u.ms,\n",
    "    n=4,\n",
    "    seed=0,\n",
    ")\n",
    "\n",
    "time_ms = np.arange(step_current.shape[0])\n",
    "\n",
    "fig, axes = plt.subplots(2, 1, figsize=(7, 4), sharex=True)\n",
    "axes[0].plot(time_ms, step_current, label=\"step\")\n",
    "axes[0].plot(time_ms, sine_current, label=\"sinusoidal\")\n",
    "axes[0].set_ylabel(\"input\")\n",
    "axes[0].legend(loc=\"upper right\")\n",
    "\n",
    "visualize.raster_plot(time_ms, poisson_spikes, ax=axes[1], markersize=4, show=False)\n",
    "axes[1].set_title(\"Poisson spike input\")\n",
    "axes[1].set_xlabel(\"time (ms)\")\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0b816698",
   "metadata": {},
   "source": [
    "## 7. Metric Function\n",
    "\n",
    "Metrics cover neural activity analysis and machine-learning objectives. The same module can compute firing rates, spike-train distances, classification losses, and regression errors.\n",
    "\n",
    "Full documentation: [Metric Function](https://brainx.chaobrain.com/braintools/metric/index.html)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "6e8b795c",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-24T08:32:19.248933Z",
     "iopub.status.busy": "2026-06-24T08:32:19.248933Z",
     "iopub.status.idle": "2026-06-24T08:32:19.487151Z",
     "shell.execute_reply": "2026-06-24T08:32:19.487151Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "smoothed population firing rate: [0.375 0.5   0.375 0.25  0.125]\n",
      "classification loss per sample: [0.16984604 0.6040188 ]\n",
      "mean squared error: 0.025000012\n"
     ]
    }
   ],
   "source": [
    "spike_matrix = jnp.array(\n",
    "    [\n",
    "        [0, 1, 0, 0],\n",
    "        [1, 0, 0, 1],\n",
    "        [0, 0, 1, 0],\n",
    "        [0, 0, 0, 0],\n",
    "        [1, 0, 0, 0],\n",
    "    ],\n",
    "    dtype=jnp.float32,\n",
    ")\n",
    "\n",
    "population_rate = metric.firing_rate(spike_matrix, width=2.0, dt=1.0)\n",
    "logits = jnp.array([[2.0, 0.0, -1.0], [0.1, 0.5, 1.2]])\n",
    "labels = jnp.array([0, 2])\n",
    "classification_loss = metric.softmax_cross_entropy_with_integer_labels(logits, labels)\n",
    "regression_error = metric.squared_error(jnp.array([0.9, 1.8]), jnp.array([1.0, 2.0]), reduction=\"mean\")\n",
    "\n",
    "print(\"smoothed population firing rate:\", population_rate)\n",
    "print(\"classification loss per sample:\", classification_loss)\n",
    "print(\"mean squared error:\", regression_error)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "09d479fb",
   "metadata": {},
   "source": [
    "## 8. Optimization\n",
    "\n",
    "Optimization utilities provide familiar optimizers for trainable `brainstate` parameters. The example below minimizes a one-parameter quadratic loss with SGD.\n",
    "\n",
    "Full documentation: [Optimization](https://brainx.chaobrain.com/braintools/optim/index.html)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "07fbd6d4",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-24T08:32:19.488153Z",
     "iopub.status.busy": "2026-06-24T08:32:19.488153Z",
     "iopub.status.idle": "2026-06-24T08:32:19.683687Z",
     "shell.execute_reply": "2026-06-24T08:32:19.683687Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "step 0: loss=9.0000, w=1.2000\n",
      "step 1: loss=3.2400, w=1.9200\n",
      "step 2: loss=1.1664, w=2.3520\n",
      "step 3: loss=0.4199, w=2.6112\n",
      "step 4: loss=0.1512, w=2.7667\n",
      "step 5: loss=0.0544, w=2.8600\n"
     ]
    }
   ],
   "source": [
    "w = brainstate.ParamState(jnp.array(0.0), name=\"w\")\n",
    "optimizer = optim.SGD(lr=0.2)\n",
    "optimizer.register_trainable_weights({\"w\": w})\n",
    "\n",
    "history = []\n",
    "for step in range(6):\n",
    "    loss, grad = jax.value_and_grad(lambda value: (value - 3.0) ** 2)(w.value)\n",
    "    optimizer.update({\"w\": grad})\n",
    "    history.append((step, float(loss), float(w.value)))\n",
    "\n",
    "for step, loss, value in history:\n",
    "    print(f\"step {step}: loss={loss:.4f}, w={value:.4f}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "25956cc7",
   "metadata": {},
   "source": [
    "## 9. Numerical Integration\n",
    "\n",
    "Numerical integration utilities implement single-step ODE, SDE, DDE, and IMEX methods. They are useful when you want a specific integration rule outside a larger simulator.\n",
    "\n",
    "Full documentation: [Numerical Integration](https://brainx.chaobrain.com/braintools/quad/index.html)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "e226547f",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-24T08:32:19.684934Z",
     "iopub.status.busy": "2026-06-24T08:32:19.684934Z",
     "iopub.status.idle": "2026-06-24T08:32:19.783805Z",
     "shell.execute_reply": "2026-06-24T08:32:19.783805Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 600x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "brainstate.environ.set(dt=0.1)\n",
    "\n",
    "def decay(y, t):\n",
    "    return -y / 2.0\n",
    "\n",
    "y = jnp.array(1.0)\n",
    "t = 0.0\n",
    "trajectory = []\n",
    "for _ in range(12):\n",
    "    trajectory.append(float(y))\n",
    "    y = quad.ode_rk4_step(decay, y, t)\n",
    "    t += brainstate.environ.get_dt()\n",
    "\n",
    "brainstate.environ.set(dt=1.0 * u.ms)\n",
    "\n",
    "plt.figure(figsize=(6, 3))\n",
    "plt.plot(np.arange(len(trajectory)) * 0.1, trajectory, marker=\"o\")\n",
    "plt.xlabel(\"time\")\n",
    "plt.ylabel(\"state\")\n",
    "plt.title(\"RK4 integration of dy/dt = -y / 2\")\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e00d8b42",
   "metadata": {},
   "source": [
    "## 10. Surrogate Gradients\n",
    "\n",
    "Binary spike functions are not differentiable in the usual sense. Surrogate-gradient functions keep the forward pass spike-like while supplying a smooth gradient to JAX autodiff.\n",
    "\n",
    "Full documentation: [Surrogate Gradients](https://brainx.chaobrain.com/braintools/surrogate/index.html)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "5841f2c4",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-24T08:32:19.784810Z",
     "iopub.status.busy": "2026-06-24T08:32:19.784810Z",
     "iopub.status.idle": "2026-06-24T08:32:20.002280Z",
     "shell.execute_reply": "2026-06-24T08:32:20.002280Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x:                  [-1.5   -1.125 -0.75  -0.375  0.     0.375  0.75   1.125  1.5  ]\n",
      "forward spikes:     [0. 0. 0. 0. 1. 1. 1. 1. 1.]\n",
      "surrogate gradient: [0.00986604 0.04346492 0.18070664 0.59658587 1.         0.59658587\n",
      " 0.18070662 0.04346485 0.00986586]\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk4AAAEiCAYAAAAPh11JAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW4RJREFUeJzt3Qd8U1X7B/BfdymjZbbsvfeQvbcgQxy8yiuIAoqiIH99ERUQHIBbhqAg4kBBERDZWPaGAjLL3rMt0JaW7vv/POc2ISkdSWmb9ft+PqFJepOcexNyn55znue4aZqmgYiIiIiy5J71JkREREQkGDgRERERWYiBExEREZGFGDgRERERWYiBExEREZGFGDgRERERWYiBExEREZGFGDgRERERWcgTDiAlJQVXr15FwYIF4ebmZuvmEBERkRORWuDR0dEoVaoU3N3dHT9wkqCpbNmytm4GERERObFLly6hTJkyjh84SU+TYYcKFSpk6+YQERGRE4mKilIdNIZ4w+EDJ8PwnARNDJyIiIgoN1gyHYiTw4mIiIgsxMCJiIiIyEIOMVRHRJSlO5eA2AgkaxqOXonCrdgEFPHzRu3SheAh3e9+RYEA50wySU7RsOfcLdyMjkOJgr5oWrEIPNydOwOZ++wa+2yP+2114LRlyxZ8+umnCAkJwbVr17B06VL07ds308ds2rQJo0ePxtGjR9Xkq/feew/PP/88crpkQUJCQo4+J1Fe8vLygoeHh62b4bhB04zGQFI85AjWS28bTx9gRIjTBU9rjlzDxL+P4VpknPG+kv6+mNCrFrrXKQlnxH12jX221/22OnCKiYlB/fr18cILL6Bfv35Zbn/u3Dn07NkTL7/8MhYsWIDg4GAMGTIEJUuWRLdu3ZATJGCS15HgiciRBQQEICgoiPXKrBUboYKmTMnvZTsnCpzkpDL8l/3Q0tx/PTJO3T/rv42c7qTKfXaNfbbn/bY6cHr00UfVxVKzZ89GxYoV8fnnn6vbNWvWxLZt2/Dll1/mSOAkRauk50v+UpferKwKVxHZI/kcx8bG4ubNm+q2/GFBlpPhOY8c3M5Rhi/kL/G0JxUh90noLb/vUivIaYZzuM+usc/2vt+5Psdp586d6Ny5s9l9EjCNGjUqw8fEx8eri2l9hYwkJSWpE45U+/Tz88uhVhPlvXz58qmfEjyVKFGCw3ZWkDlN6Q7PpTF60UGEF8qiZ8pBRMYmmg1fpHdykd/3mbEN/n5ecAbcZ9fYZ2v2W+Y+tahcFE4VOF2/fh2BgYFm98ltCYbu3btnPFmYmjx5MiZOnGjR8ycnJ6uf3t7eOdRiItsxBP+JiYkMnKwgE8EtcTosBkdvRsCVHLma8R+ezor77DpuRmccXLlUVt3YsWPVZPK0FT0zwzkh5Az4Oc4eyZ6zRP8mZeBfuQGcwakb0Zix8UyW243oUBlVA7OuhuwIuM+usc/W7Ldk2Tld4CQTXW/cuGF2n9yWCuDp9TYJHx8fdSEisoSUHLDEgObl4VG6NJxlDsif+6+oibLpzQOREDzI3xdvdKnuNHNfuM+usc/W7LeUJshruT6TukWLFiqTztT69evV/a4+GXjYsGEoUqSI6mU4ePAgHJG0fdmyZbn2/O3btzebD1ehQgV89dVXufZ65Jg8tGTLtnOiHj05SUpKtki7V4bb8ntnOplyn11jn+19v60OnO7evatO8oYTvZQBkOsXL140DrMNHDjQuL2UITh79iz+97//ITQ0FN988w1+//13vPHGG7C36HbnmQj8dfCK+im3c9OaNWswf/58rFixQmUF1qlTJ1dfz1EtWbIEH3zwga2bQfbu34VZb+PhpRfBdCKSii0p2fKXtym57awp6txn19hne95vq4fq9u3bhw4dOhhvG+YiDRo0SAUCEgQYgighpQhWrlypAqWvv/4aZcqUwdy5c3OshpOjFtg6c+aMSjlv2bLlQ/VayeR4T8/cHXGVOlm2mnwvPXJEmTqzEdg7V139qcALWBRRGX0blFLzPWTuU53Ts+B+cjXgWxjwSn96gCOT7yhJybanysq5jfvsGvtsr/vtnp2hEzlhp71I0CTkp1QKT/uYAwcOqBIDEjDkdNXwnCiwlTbt0VBgS36f02T/X3vtNRVgylCXDD8JOT6vv/66SkX39fVF69atsXfvXuPj5LjK9qtXr0bjxo3VPDAJSiX7SgJaIUVAJdho3ry58XG//PKL2eT6MWPGoFq1aiqDq1KlShg3bpzK4jJ4//330aBBAxXgSuArbRGnTp1C27Zt1e1atWqpIdesLF68GHXr1lXz2YoWLapKU0gRVcNxkKrzkkFZvHhxNe9NeihNK8CnHapLS9ooRSMNw8FHjhxRdcYKFCigsjefe+45hIeHW/jOkMO5exNYMkwlJ8fVH4QJEZ1xVKuIx7o/ivbtu6Be03Zwf/J7oFg1IOYmsGy4/CeBs5GTiKRk92lQWv109pOp4D67xj7b4367O2UhwYQkiy7RcYmYsPxohgW2xPvLj6ntLHk+eW1LSM/bpEmTVO+b9NAZgiMZzvzzzz/x448/Yv/+/ahSpYrqmbt165bZ499++21MmTIFx48fR5s2bVSQYwhWDx8+rIIrCVRlWFVs3rwZ7dq1Mz6+YMGCKsA9duyYasucOXNUQVJTp0+fVm2RoTIZipWATCrFS8/T7t27VWFTCcAyI/v2zDPPqCrz0lZpozyH6XGSgMfwu99++029nqWlKD755BN1LNatW4dOnTrhzp076NixIxo2bKgCSRkOlUSEp59+2qLnIwcjAdDSl/SAqEQtrCnzOuSjVatkIZT0N+lZ8s4PPPkD4OEDnFoH7PrGlq0mIgdnl+UIHsa9xGTUGr82R55LTu/Xo+JQ9/11Fm1/bFI3+HlnfUj9/f1V8CI9RZJ1KKQXZtasWSqgMVRml4BGenW+//57vPXWW8bHS9DVpUsXs14ZCTzefPNN9VN+J/PJpEJ79+7d1X0SlBnIWoEG0tslj1u4cKHZNtLr89NPP6meICHBiTzn2rVrVbFR8fHHH2daRV4CJylQKsFS+fLl1X3S+2RKArF58+ap3q/atWurfZN9lXlNmVWBl6Dt559/VkGhPE7MmDFDBU3SLgN5bultO3nypOplIyeyYxpwZgPgmU8FRuv/0evYdKpZ4sFtg+oA3ScDK0cD/7wPlG8BlG6c920mIofndIGTo5IhTBkua9Wqldmir02bNlU9MqaaNGlidlt6kyS4kvlOEkh07dpVBWQSMNWrV0/1HklwZbBo0SJMmzZNvab0SklwI8NkpiTQMQRNQtogAYghaBJZZUbKmobSEyTBkvScSbuefPJJFC5c2Gwb04rv8pzSpkuXLhmDrbRk+R4JNKVXSYYaDf79919s3LhRDdOlJfvKwMmJXNoLbEhNGujxCRKLVsOWE/rQccca6QROoskLwNlNwPHlwOIXgJe2AL7+edhoInIGThc45fPyUD0/lpDJZs//cH8OUUbmD37EoloR8tp5IX/+/Ga3Zd5RdHS0Gt7bsmWL6nGRwEmG8yQwkWCnatWqxiVwBgwYoIbDJJiR3i/pbTKsJZjRa2SH9KhJj9mOHTtUj9X06dPx7rvvqqE+mTuVXTI8KXO7JDtThuoMJODq1asXpk6d+sBjuPabE7l3Rw98UpKAOk8ADZ/D3rMRiI5PQtH83qhfJiD9x0kpgt7TgasHgdvngb9HAU/O0+8nInLVOU4yv0eGyyy5tKlaXGXPZfS1KffL72U7S57vYao+V65cWQ1bbd++3Xif9EDJ/CeZiJ0ZmRwtPUsyVCW9VDVq1FDBlMxzknIHpvObJIiRnhwJYKTnSgKqCxcuZNk+WZxZeoFk+M1g165dWT5Ojon0okmgJu2RfVy6dKlZL5EsvWP6nNJjlFmleOmFkwnyEiB+9tlnxvsbNWqEo0ePquFHmR9mesmJQJDsgExiWv4aEHkRKFwBeOwrFfhsOK4vjtyhRgm4ZzZxNF9AarDkARxdAhz4Oe/aTkROwekCJ0ctsCUn9uHDh6v5PTKpWSZuDx06VC1g/OKLL2b5eBmKW7BggTFIksw6CXZkWM40cJJASbL5pJdJhq9kyM40kMmIZMPJUJeUnZBgZ+vWrSr4yoz0LElwI0Nq8poy8TssLEy1y3Quleyf7O+qVaswYcIEjBgxItP5TULKOMj2EpAZCmK++uqraiK9TEiXgFP2T+ZkDR482LimITm4ffP0oTZ3L33Ct68+xLwhVA+cOmU0TGeq7CNAp3H69VX/A26aD4UTEWXGpQMneyuwJUNrTzzxhEqhl94TmZskJ37TOUEZkeBIggPTuUxyPe19vXv3VjW1JDiRbDzpgZJyBFmRQEYCLOkdkh6fIUOG4KOPPsr0MTJvSoYOe/TooYIumZQuQ4KmE8plDpQEc9JD1r9/f9U+KYdgCSnXIEN28rwyDChDktJjJ/ss86lkbpWUMpAeuawCMXIA148Aa8bq1zu/D5RupK6eDbuLs+Ex8PJwQ+uqxSx7rpYjgcodgaR7wB+DgcT7vZ5ERJlx0yzNobchWeRX5uJERkY+MIk5Li5OVS83rTeUHVIp3J4KbLkCqeMkJQRyc8kWR5NTn2enkxADfNcBCD8BVO0GPLvIODdp7taz+HDlcbSuUgy/DGlmXQ2oWa30cgaNBwO9uJQPkauKyiTOcPrJ4Q9bYIuI7NDqMXrQVLAk0PcbswndhmG6DLPpMlKgBNDvO+Dnx4GQH4BK7YDaj+d0y4nIyXD8gojs2+HF+iRuN3eg3xwg//3huKi4RNVTnGH9pqxU7gC0Tl03c/nrerYdEVEm2ONENmNYpocoQxFn9LIBou3/gIptzH699WQ4klI0VC6eH+WLZjNzssM7wIXtwKXdepmDF9bqCwITEaWDPU5EZJ+SEvRAJiEaKN8KaHu/er6BMZuuZmD2X0eCpCfm6sUwr4TcL6xJRJQOBk5EZJ9kaZRrB4F8hfUhOg/PBxI6Np3I5vymtALKAb1n6Ne3fw2c+ufhno+InBYDJyKyPyfWALtm6tf7zgL8Sz+wyb+X7yAiJgGFfD3RuHzWJTuyVKs38MgQ/bosHhx9/eGfk4icDgMnIrIvUVeBZcP1681fAaqnv5C0oVp422rF4eWRQ19lXT8CAusAseHAkqFACgunEpE5Bk5EZD8kUPlzKHDvFlCyvl7oMgPBxvlNDzlMZ8rLV69I7uUHnNsCbPsi556biJwCAydyeZs2bVJr6kkxTkO2n1QbJxvY8ilwYRvgXUAPYDx90t3s6p17OH4tClKjtl21HAycRPFqQI/UNRA3TgYu7MzZ5ycih8bAiXKMLK5rWDfOkcnSLydPnszV4IzScX4bsHmqfl0W7y1aOcNNDdl0jcoVRpH83jnflgbPAvX6A5r0gA0BYvVaUURErON05xIQG5Hx7/2KAgFlYe9ksVxvb/MTiKzZJidrV1inLb39z658+fKpC+WhmAg9QNFSgAb/Beo9lenmxmrhOTlMZ0oqk/f8HLi8F7h1Flj+GtD/F7OK5UTkmpz/jJpV0DSjMfBdu4wv8nvZLoctXrxYLUIrJ+iiRYuic+fOiImJUb+TRXllcVpTffv2VWu7mfbufPDBBxg4cKBaV2fYsGHGIably5ejVq1a8PHxwcWLF3H79m21nSwW7OfnpxbZPXXqlNnzz5kzB2XLllW/f/zxx/HFF1+YDVedOXMGffr0QWBgIAoUKIBHHnkE//xzP2Vb2nzhwgW1gLAEa3Ix2LZtG9q0aaP2VV7j9ddfN+5rRj788EOUKFECBQsWVAsKv/3222pRYgM5FnJMZKFhWdy3evXq6v6ff/4ZTZo0UY8LCgrCs88+i5s39ZOswapVq9Siw9KeDh064Px582rR6Q3V/fXXX2rhZVk/rlKlSpg4cSKSkpKMv5f9nTt3rjp2cgxl4WJ5H4Q8v7yOkPdAtjV9L12eLJcpk8GjrwHFZJjsk0w3v5eQjO2nw9X1TjUeon5TVnwK6sOFHt5A6Apgz5zcey0ichiuHThJT1NSfObbyO8z65HKhmvXruGZZ57BCy+8gOPHj6thnH79+sHa9ZY/++wz1K9fHwcOHMC4cePUfbGxsZg6dao6iR89elQFH3KS3rdvnzqR79y5U71Ojx49kJiYqB6zfft2vPzyyxg5ciQOHjyILl26qIDE1N27d9VjgoOD1et1794dvXr1UoGZWLJkCcqUKYNJkyap/ZOLIeCSbZ944gkcOnQIixYtUoHUiBEjMtyvBQsWqNeX/QgJCUG5cuUwa9asB7aTtpw4cQLr16/HihUr1H2yTxJQ/vvvv2rxYAlaTIOUS5cuqWMtbZd9NQRlmdm6dasKPOX4HDt2DN9++60KrtIeIwmmnn76abWfcqwGDBiAW7duqWDxzz//VNtIe+XYfP3111m8uy5k1yzglFTr9tEDFe/MK4DvOBOO+KQUlA7Ih2qBBXK3baUaAF1SC2Kuexe4dih3X4+I7J/mACIjIyWiUD/Tunfvnnbs2DH1U0lJ0bT4u5ZdLuzQtAmFsr7IdpY8n7y2BUJCQtT+nD9/Pt3ft2vXThs5cqTZfX369NEGDRpkvF2+fHmtb9++Ztv88MMP6nkPHjxovO/kyZPqvu3btxvvCw8P1/Lly6f9/vvv6nb//v21nj17mj3XgAEDNH9//0z3o3bt2tr06dPN2vTll1+abfPiiy9qw4YNM7tv69atmru7+/33LI1mzZppr776qtl9rVq10urXr2+8LcciMDBQi4+Pz7SNe/fuVfsfHR2tbo8dO1arVauW2TZjxoxR29y+fdt4HE33vVOnTtrHH39s9piff/5ZK1mypPG2PP69994z3r579666b/Xq1er2xo0bzV4jIw98np3d5RBNm1hU/3+2Z45FDxm75JBWfswKbdyyw1qekP/XC/rrbZzWSNPi9M8SETmPzOKMtJxvjlNiLPBxqZx9znndLdvunatZ/rUspJeoU6dOaqiuW7du6Nq1K5588kk1jGMNGZJKS+b51KtXz3hberQ8PT3RrFkz430yNChDW/I7Qy+IDDGZatq0qbEXx9Dj9P7772PlypWqx0SGqe7du2fsccqI9PxID4z0IhlInJGSkoJz586hZs2aDzxG2vPKK6880J4NGzaY3SfHL+28JumhknbK68oQpbyOkHbK8KXss+mxEC1atMhyH6RXzrSHSeaPxcXFqR4+GZoTpsc9f/78agg17TAhmYiL0pdUSUkEavYGmryY5UPks2Oo3/TQ1cItJcPOfb8BZrcGIk4Dq94EHp+dN69NRHbH+QInB+Dh4aGGl3bs2IF169Zh+vTpePfdd7F7925UrFhRTeZOO2xnGFYzJSfntGTejun8opzy5ptvqjbL8GCVKlXU60iwJ5OyMyMB10svvaTmNaUlQ3API+3+y7wpCUTlIoFa8eLFVcAkt7NqZ1b7IMNwMsSXlsx5MvDyMl8YVt4HQ+BGacjne8UbwO1zgL8sdzLNoonXx65F4XpUHPJ5eaB5paLIM35F9PXs5vcE/v0NqNgOaPBM3r0+EdkN5wucpHCd9PxY4vohy3qTXlgDBNWz7LUtJCfVVq1aqcv48eNRvnx5LF26FKNHj1YnfMMcIUPvxpEjR4wTjK0hPTrSOyRBWcuWLdV9ERERqldHemCE9D7t3bvX7HFpb0uPi8wVMvRMSTCRdlK19P5IW03JhGqZFyTBlqUM7ZF5RRm1Jz2hoaFq36ZMmaLmFQmZ25X2eBgmbRvs2rUr0+eVfZDjZc0+pGXoGUt7fFzWgV+AI4sBNw/gye/19egsYOhtal21GHy9PJCnyrcE2o8FNn4ErPw/oEwToFjVvG0DEdmc800Ol79aZbjMkounhSnnsp0lz2dhT48EMR9//LE6qUuPiEysDgsLMw5bdezYUQ2JyUWCgeHDh2e7/o9kd0k23NChQ9WkbBl2+u9//4vSpUur+8Vrr72mMs0kk06y7WTy8+rVq816ruR5pJ0yoVqeQ7LV0vamSKbfli1bcOXKFYSH61lPY8aMUT1rMhlcHivPLxlqmU0Ol/Z8//33+PHHH9X2kmEnw31Z9aRJD5YEKNKDd/bsWRUgyURxUzIJXp7zrbfeUsHQr7/+qiZ6Z0YC259++kn1OsmEexnuW7hwId577z1YSgJjab8Mf8p7LYGnywo7Aax6S7/e8T2gbFOLH2qsFp5Xw3Rptfk/oEIbIDEGWDwYSIyzTTuIyGacL3ByADL3RQIMybyStHg5AX/++eeqTICQbLtBgwapHpd27dqp9Pfs9DYZ/PDDD2jcuDEee+wxNZ9HhgElUDIMLUmv1+zZs1XgJPOv1qxZo8oKmA5Dye9kDpb0WklGmgx/SU+MKcmok16oypUrq14zw7yfzZs3q4KSUpKgYcOGKhCREgIZkWy0sWPHquFBeQ2ZCyW9XabtSY+8pgRBf/zxh+pNk54nGVpMG1xJhptk3Mm+yn5LEJsZ2VcJeGRYVcowNG/eHF9++aUKhiwlgaoEXpLBJyUdMgscnVriPeCPwUDSPaBSB6CVedmNzIRFx6uFfUUHWwVO7h5Avzl6fbfrh4H1423TDiKyGTeZIQ47FxUVBX9/f0RGRqqgw5RM0JUTq8wNyurEmmEdp8xKEsiSDyNCHKIIZk6SHirp7ZJUfHsgJRKkLpPUaXJmD/V5dgQyr2nfPCB/CWD4dqCA5QHQH/su4a3Fh1C3tD/+fq01bOrkOuDX1CKd/RcANR+zbXuIKNfiDOef42QNCYYkKHKCyuEPS3pmJDiRCdcyTCfDZN98841N2iKZatITJD09MpH+t99+U8U2ZXI6ObCjy/SgCW5Av2+tCprMqoXbqrfJVLWuQIsRwM4ZwF+v6gsSu8D3BBG5euAk5MuOX3jYs2cPPvnkE0RHR6uhwWnTpqnikLYgc4FkKFHS/6UHRiaLy/CaVFcnB3X7ArA8NbOy9RtA5Y5WPTwhKQVbToap651ya5kVa3WaAFzYAVzdry8X8/xKwINfqUTOLltznGbOnKkmAstQgtTEkZNuZmThVzn5GZbckPkzckIk+/H777+rmkNSm0kmQMskaluRz4n0MEmGnJQY2L9/f7qlAMhBJCcCf74IxEcCZZoCHd6x+in2nLuFmIRkFC/ogzql/GEXPL2BJ+cBPoWAS7uATZNt3SIissfASZbMkJT5CRMmqBOaTLCVIZWMCv1J1pJMiJXtJRtJsqXkOd55x/ovTyJyQBs+1BfL9fXXSw94mNe7skRw6A31s2P1EnB3t6OFdotUBHp9pV/f+jlwdpOtW0RE9hY4SXaVTBwePHiwylySuShSOXnePJm78CBJRZesLUlfl14qqZIt67Rl1UtFRE7gdDCwPTWw6D0DCLC+6KnkrwQbqoXbyzCdqTpPAI0GSUuBJcOAu/qQIhE5J6sCJ6m+LEtamM41kSrXclsWj02PpK/LYwyBktTXkfkrkoqfkxwgOZDItT7H0TeApS/p1x8ZAtTqna2nORMWg4u3YuHt4Y7WVYrBLnWfAhSvAdy9ASx7GWDFeCKnZdVMRilqKJWPpQ6NKbktqevpkZ4meVzr1q3VSUGqWMv8mcyG6uLj49XFNE0wI5J1ZQjqZG4MkSOTjML0lm9xOBI4LB0GxIQBgXWArvfX+bPWhtRhuuaViyK/j51Ovvb2A578AZjTATj9D7BzOtBqpK1bRUS5INe/hTZt2qQKDEpqu0wkP336NEaOHKkqOo8bNy7dx0yePFkVC7SELGArQ4VSjVlONtIDRuRo5I8KCZpkrmBAQIDxDwKHtf1Lfb6PV2pA4ZX9mlSGYTqbVQu3VGAt4NGpwN8jgeBJQPlW+rIsROS6BTClV0eClMWLF6Nv377G+6XKtSwJIktppCXVoqXS8qeffmq875dffsGwYcPUshPpBTrp9ThJNl5GhamkXVI0kAuqkqOToEkKfebGQs155uJu4IdHAS0Z6PMN0HBAtp8qMjYRjT5cj+QUDVv/1wFli1i+HqRNyNepLMVydKk+n+ulrUC+AFu3iohsVQBT1gGTpTuCg4ONgZMEK3I7oyUk5K/otMGR4a/pjGI2Hx8fdbGmXbKWmgRQRI5Kekwdvqcp9pZeekCCprpPAw2efain23wqTAVN1QIL2H/QJCTg7fU1cGU/cOeC3vv01HyL17EkIiccqpNSBNLD1KRJEzRt2lTVaJJaO5JlJ2R9NVmXS4bbhKxrJpl4skaZYahOhujk/pw8SUhw5pRLVBA5CvlDaPlrQOQloEgl4LEvHjpg2HA8tQxBDfN5lXZNlV34AZjXFTi2DAiZDzTRvx+JyAUDp/79+6v5RLJQ6/Xr19GgQQO1KKxhwvjFixfNephkAVsZdpCfV65cUQuxStAkVaGJyInsnQuErgDcvfTAwafgQz1dUnIKNtlbtXBLlWmsVxZfPw5Y8zZQtpk+B4qIHJ7DL/JLRHbg2iFgbmcgOV5PzW8+/KGfcu/5W3hq9k4E+Hlh37ud4enhYIkfMudSFgKWLDspVTB0o559R0QOHWc42DcREdmd+LvA4hf0oKnao0CznFmux5BN175acccLmoT0vPedDRQIAsJCgTVjbN0iIsoBDvhtRER2ZfX/gIhTQMFSQN9vcmwitKF+U8eaDjS/Ka0CxYF+30nnPrD/J+DwYlu3iIgeEgMnIsq+fxcBBxcAbu7AE3MBvyI58rSXbsXi5I278HB3Q7uqxeHQKrUD2r6pX/97FHDrrK1bREQPgYETEWVP+GlgxRv69XZvAxVa5dhTbwjVh+malC8Mfz8Hr6JuOD7lWgAJ0fqwZhJLpxA5KgZORGS9pHi90GNiDFChzf0elRwSnBo4OVw2XUY8PPUeOd8A4OoBINiylRGIyP4wcCIi660fD1w/BPgVBfrNAdxzriZbTHwSdp2JcLz6TVnxL6PPARM7ZwAn19q6RUSUDQyciMg6oauA3bP165I1Vqhkjj79ttPhSEhOQfmifqhcPD+cSo2eQNOX9OvLhgNRV23dIiKyEgMnIrJc5GXgr1f06y1GANW65vhLbEgtQ9CxRgnHXrMvI10/AILqAbERwJJhQEqyrVtERFZg4ERElklOAv4cAty7DZRqqFfGzmEpKRo2nLgfODklTx+9srpXfuD8VmDLZ7ZuERFZgYETEVlm81Tg4k7AuyDw5DzA0zvHX+LI1UiERccjv7cHmlbMmdIGdqlYFX0tP7F5CnB+u61bREQWYuBERFk7twXY8ql+vffX+iK+ucBQLbxN1eLw8cy5Ced2qf5/gPrPAlqK3pMXe8vWLSIiCzBwIqLM3Q0D/hwKQAMaDQTqPJFrL7XRMEznLGUIstLjU6BoFSD6qj5Z3P6XDiVyeQyciCjzhWrlhH73ur5QbfepufZSN6PicOhypLreobqLBE4+BfT5Th4+wMk197MVichuMXAiooztmgmcXg94+uoneG+/XO9tql82AMUL+sBllKwHdPtIv75unF4gk4jsFgMnIkrf5RDgn/f1692nAIG1cvXlDPObOjlrNl1mHhkC1HgMSEnUl2SJj7Z1i4goAwyciOhBcZH6kiopSUCtvkDj53P35RKTVeFLpy5DkBmpV9V7OuBfVl8EWNYA5HwnIrvEwImIzMkJ+++RwJ0LQEA5oPc0/cSei3afu4XYhGQEFvJB7VKF4JL8iujr2bl5AIf/AA7+ausWEVE6GDgRkbn9PwFHlwLunvq8Jl//XH/JDcdvGNemc8pq4ZYq1xzo8I5+fdWbQNhJW7eIiNJg4ERE9908Dqweo1/vNB4o0yTXX1LTNASHuvD8prRavwFUbAckxurDpYn3bN0iIjLBwImIdAmxwB+DgaR7QJXOQIvX8uRlT928i8u378HH0x2tqhTLk9e0a+4eQL85QP7iwI0jwLr3bN0iIjLBwImIdGvHAmHHgQKBQN/ZgHvefD0YsulaVi6KfN5OXi3cUgUDgcdTazrtnQscW27rFhFRKgZORAQcWQKEzJf0LqDfd0CB4nn20htCU+c31QzMs9d0CNLr12qkfn35COD2BVu3iIgYOBERbp3Ts+hE2zeBSu3z7KVvxyQg5MJt1y1DkJWO44DSTfTyELKeXXKirVtE5PIYOBG5sqQE4M8XgfgooGxzoN3befrym0+GIUUDagQVROmAfHn62g7Bwwt48nvAxx+4vAfY+LGtW0Tk8hg4EbmyDZOAKyGAb4BeQ8jDM09f3phN5yqL+mZH4QpA76/169u+BM5ssHWLiFwaAyciV3VqPbBjun69z0wgoGyevnxicgo2p65PJ/WbKBO1HwcaD5biDcCSYUC0Pi+MiPIeAyciVxR1DVj6kn696UtAzcfyvAkytykqLglF8nujQdmAPH99h9N9MlCiFhATpr93KSm2bhGRS2LgRORqUpKBJUOB2AggqC7QZZJNmrEhdZiuffXi8HB34WrhlvLKp1dy98wHnN0IbP/K1i0ickkMnIhczdYvgPNbAa/8wJPzAS9fmzQjOHWZlU4cprNciRpAj0/06xs+BC7tsXWLiFwOAyciV3JhB7ApNTPrsS+AYlVs0ozz4TE4ExYDT3c3tKnGauFWafgcUOdJQEsGFr8I3NPLORCRHQdOM2fORIUKFeDr64tmzZphz57M/+q5c+cOXn31VZQsWRI+Pj6oVq0aVq1ald02E1FW7lwCrh40v5zdAvw+ENBSgJq9gfr/sVnzDMN0TSsWQSFfL5u1wyHJIsiPfaln20VeBBY9B1w98OD7LRf5HBBRjrI693jRokUYPXo0Zs+erYKmr776Ct26dcOJEydQosSDKcUJCQno0qWL+t3ixYtRunRpXLhwAQEBnAxKlCvkZDmjMZAUn/E2J9fq2+VxJl3awIlFL7PJtxDQfQrw23/0YdfvMiha6ukDjAix2ftM5IysDpy++OILDB06FIMHS2osVAC1cuVKzJs3D2+//WDxPLn/1q1b2LFjB7y89L8spbeKiHKJTPrOLGgSyfH6djY4oUbHJWL3uQh1vROXWcm+giWz3ibJdu8zkbOyaqhOeo9CQkLQuXPn+0/g7q5u79y5M93HLF++HC1atFBDdYGBgahTpw4+/vhjJCcnP3zricjhbDsVjsRkDZWK5UfFYvlt3RwiotzrcQoPD1cBjwRApuR2aGhouo85e/YsNmzYgAEDBqh5TadPn8Yrr7yCxMRETJgwId3HxMfHq4tBVFSUNc0kIjtmqBbOYToickS5nlWXkpKi5jd99913aNy4Mfr37493331XDfFlZPLkyfD39zdeypZlNzORM0hJ0bDREDhxmRUicvbAqVixYvDw8MCNG+bl/uV2UFBQuo+RTDrJopPHGdSsWRPXr19XQ3/pGTt2LCIjI42XS5eYGULkDP69fAcRMQko6OOJRyoUsXVziIhyN3Dy9vZWvUbBwcFmPUpyW+YxpadVq1ZqeE62Mzh58qQKqOT50iMlCwoVKmR2ISLHZ8ima1u9OLw8WEaOiByP1d9cUopgzpw5+PHHH3H8+HEMHz4cMTExxiy7gQMHqh4jA/m9ZNWNHDlSBUySgSeTw2WyOBHlAqnTZKeCj+uBUyfObyIiVylHIHOUwsLCMH78eDXc1qBBA6xZs8Y4YfzixYsq085A5ietXbsWb7zxBurVq6fqOEkQNWbMmJzdEyLSHV2a9TZS38evKPLStch7OHYtStVvbF+dgdNDk/dP3sfMSk94eOf5+0zk7Nw0TdNg5ySrTiaJy3wnDtsRZeJyCDCvK5CSBLQfC1Trnv52cjLN49o+C3ZfwLtLj6Bx+cL4c3jLPH1tpyVFTKVOkxkN+GeivhCwf1nglZ2AT0EbNZDIMVgTZ1jd40REdir+LrBkiB401e4HtBujL89hJzakDtOxDEEOkuA3vQD4qfnA7NZA5CVg9Rig7ze2aB2RU+LsTCJnISfIW2eBQmX0BXztKGi6l5CMbafD1XUGTnkgXwDw+LeAmztwcAFwZImtW0TkNBg4ETnLvKaDv+gnyn7fAfkKw57sPBuO+KQUlPL3RY0gDhvliQqtgNaj9esrRnHBX6IcwsCJyNFFXgb+HqlflxOlnDDtNJtOil662VFPmNNr/zZQugkQFwksfQlI4VJXRA+LgRORI5MT4ZKX9BNj6cb6idLOSP6JoX5Tpxpc1DdPeXgBT8wBvAsAF7YD2760dYuIHB4DJyJHtv1r4MI2/cTYb45+orQzx69F41pkHHy93NGiMlPj81yRSsCjn+jXN03WMy+JKNsYOBE5qishwMaP9OtyYixaGfZoQ6i+RFPrKsXg63V/6SXKQw2eBWo/rmdcSualZGASUbYwcCJyRHLi+3OofiKs1Vc/MdqpYMOivhymsx2ZV/bYl3rGpWReSgYmEWULAyciR7RGSg+c0U+Evb6yq9IDpsLvxuPgpTvqOssQ2JhkWvb7VqIoPQPTkgrzRPQABk5EjuboMuDAL/oJUE6EdlZ6wNSmE2GQtQlqlyqEIH9fWzeHKrQG2qSWKJBMTMnIJCKrMHAictjSA2/oJ0I7ZpjfxEV97YgsxVOqkZ6JKRmZLFFAZBUGTkSOQk5wS18G4u7oJ74O78CeJSSlYMvJ1GrhNTm/yb5KFMwFvPLrGZmSmUlEFmPgROQodkwDzm/VT3hy4rPD0gOm9p2/hbvxSShWwBv1SvvbujlkSjIwe6SWKJDMTMnQJCKLMHAicgRX9gMbPtSvPzrVbksPpJdN16F6Cbi72+fkdZfWYICekSmZmZKhyRIFRBZh4ETkEKUHhqSWHugDNPwvHIGxWnhNzm+yS5KJKRmZhUrrGZpr7K/qPJE9YuBEZO/Wjk0tPVAaeMx+Sw+YOht2F+fCY+Dl4YbWVYvbujmUaYmC7/QMzQM/A8f+snWLiOweAycieyYnsv0/6Se2x78F/IrAkXqbmlcqigI+nrZuDmVGMjMlQ1Msf50lCoiywMCJyF5FXtFPZKL1KKBiGziK4OOGauEcpnOcEgUN9YxNydxkiQKiDDFwIrLb0gMvpZYeaAi0t+/SA6Yi7yVi7/lb6joDJwfh6Q088b2esSmZm5LBSUTpYuBEZI92TE8tPeCnn9DkxOYgtp4KQ1KKhiolCqB80fy2bg5ZSjI1JWNTSAanZHIS0QMYOBHZm6sHgA0fOFTpAVMbUofpWC3cAUnGZs3eqSUKhrBEAVE6GDgR2ZOEmPulB+QE1vA5OJLkFA0bT3B+k2OXKPj6fokCyegkIjMMnIjsyZqxQMRpoGAp/QTmAKUHTB28dBu3YxNRyNcTjcvb7+LDlAnJ3JQMTsnklIxOliggMsPAicheHP8b2P+jfsLq5zilB9LLpmtfvQQ8Pfj14rAkg1MyOY0lCq7YukVEdoPfbET2IOoqsPw1/XqrkUDFtnBErBbuRCSTs2SD1BIFLwEpKbZuEZFdYOBEZGtyQpIT073b+omqw7twRJdvxyL0ejRkWbp21Vgt3HlKFPixRAGRCQZORLa2czpwbktq6YG5DlV6wNTG1N6mJuWLIMDPMfeB0ihWxaREwQd6xieRi2PgRGRLVw8CwamlB7pPAYpVhaMKTg2cOnKYzrlIZmfNXvdLFEjmJ5ELY+BEZPPSA4n6ianRQDiq2IQk7DgToa6zfpMzliiYpmd6SsanZH4SuTAGTkS2svYdIOJUaumBaQ5XesDU9tMRSEhKQdki+VTFcHIykuHZz1Ci4Ec9A5TIRWUrcJo5cyYqVKgAX19fNGvWDHv27LHocQsXLoSbmxv69u2bnZclch5y4gmZr5+IHp/tkKUHTG0IvaF+dqoRqP6PkxOSTM9WqYtOSwaoZIISuSCrA6dFixZh9OjRmDBhAvbv34/69eujW7duuHlTn9+QkfPnz+PNN99EmzaOs8I7Ue6XHngdqNQOjkzTNGP9JlYLd3Id3tMzPyUDdOnLLFFALsnqwOmLL77A0KFDMXjwYNSqVQuzZ8+Gn58f5s2bl+FjkpOTMWDAAEycOBGVKlV62DYTOXjpgZdTSw/U109EDu7o1SjcjI6Hn7cHmlVy7J4zsqREwVw9A/TcZj0jlMjFWBU4JSQkICQkBJ07d77/BO7u6vbOnTszfNykSZNQokQJvPjiiw/XWiJHt3OGfsJRpQe+d9jSA6YMvU1tqhaDj6eHrZtDuU0yP7tP1q9LRqhkhhK5EKsCp/DwcNV7FBgYaHa/3L5+/Xq6j9m2bRu+//57zJkzx+LXiY+PR1RUlNmFyDlKD0zSr8uJx4FLD2Q0v4lcRKNBQI3H9IxQliggF5OrWXXR0dF47rnnVNBUrFgxix83efJk+Pv7Gy9ly5bNzWYS5b6E2PulB+SEIyceJ3AzOg7/Xo5U19vXYLVwlyEJAL2nAwVL6pmhkiFK5CKsCpwk+PHw8MCNG/pfmAZyOygo6IHtz5w5oyaF9+rVC56enury008/Yfny5eq6/D49Y8eORWRkpPFy6dIla/eLyE5LD5TUTzhOknm2KTRM/axXxh8lCvraujmUlyQTVDJCJTNUMkRZooBchFWBk7e3Nxo3bozg4GDjfSkpKep2ixYtHti+Ro0aOHz4MA4ePGi89O7dGx06dFDXM+pJ8vHxQaFChcwuRA7r+Aog5Af9uhOUHjAVnDpMx2w6F1WpPdDyNZMSBdds3SKiXOdp7QOkFMGgQYPQpEkTNG3aFF999RViYmJUlp0YOHAgSpcurYbbpM5TnTp1zB4fEBCgfqa9n8gpyYnEUHpATjByonES8UnJ2HoqXF3n/CYX1nGcnvBw7V99sernlknWkK1bRWQ/gVP//v0RFhaG8ePHqwnhDRo0wJo1a4wTxi9evKgy7YhcnpQeWCalB24BQfWAjuPhTHafvYXYhGSUKOiD2qXYK+yyJDO031zg27apJQpm3C+USeSE3DSpXmfnJKtOJonLfCcO25HD2DEdWPce4JkPeGkLULwanMn7y49i/o7z+M8jZTHliXq2bg7Z2r4fgBWjAHcvYGiwXqeMyEFYE2ewa4goN8iwxT8T9evdP3a6oElVC+f8JjLV+Pk0JQpibd0iolzBwIkoN0sPVO8JNNbn/zmT0zfv4tKte/D2dEerKpaXGiEXKVEQfpIlCshpMXAiymnr3tVPHAWCnKr0gKngUL1aeItKRZHfx+qpkuSsJGO07yz9umSShq60dYuIchwDJ6KcJCeKfanrNj4+C8hfFM5oQ+oyK51qcpiO0qjc4X6Jgr9GsEQBOR0GTkQ5Jfq6fqIQLUYAlTvCGd2JTcC+C7fU9Q7VGThRBiUKJJNUMkols1QyTImcBAMnopwgJ4alhtIDdYFOzlV6wNTmk2FI0YDqgQVRtoifrZtD9sjTJ3UR63zA2U3Arm9s3SKiHMPAiSgnyInh7Eb9RKFOGD5wVsGpw3QdOUxHmZFMUskoFcETgWuHbN0iohzBwInoYckJQU4MottHQPHqcFZJySnYdCJ1fhPLEFBWJKNUMkuTE4A/X2SJAnIKDJyIcqL0gJwYqvcAmrwAZxZy4Tai4pIQ4OeFhuUK27o55CglCiTDVDJNJeOUyMExcCJ6GFIZPPwEUCDQaUsPmNqQWoZAJoV7uDv3vlIOkcxSyTAVknEausrWLSJ6KAyciLJLTgD7vtevPz4byO/8hSAN9ZtYLZysIhmmkmkqlo/QM1CJHBQDJ6LskC9+OQE4eekBUxciYlTFcOlpalutuK2bQ45GMk0l4zQ2Qs9AZYkCclAMnIisJV/4y4brJ4BA5y49kN4w3SMVCsM/n5etm0MOXaJgI7A7dfiOyMEwcCKylnzhn9kAePoCT8x16tID6QVOnWoE2rop5Kgk41QyT8U/77NEATkkBk5E1rh+WP/CF3ICKFEDruBufBJ2n9WrhbN+Ez0UyTyVDFRVomAISxSQw2HgRGSpxHv3Sw9UexRo8iJcxbZT4UhITkGFon6oVCy/rZtDTlGiIFDPSF0/ztYtIrIKAycia0oPhIXqX/h9Zjh96QFTG0JvqJ8dawTCzYX2m3KJZKD2TZ3jtHcucGK1rVtEZDEGTkSWOLFG/4IXfb9xidIDBikpGjaEhqnrnThMRzmlSieg+av69b9eZYkCchgMnIiyEn0D+OsV/XrzV4AqneFKDl+JRPjdeBTw8cQjFYrYujnkTDpP0DNTJUNVMlVZooAcAAMnIotLD9QBOk2AqzEUvWxbrRi8PfmVQTldokAyU331TNXds23dIqIs8VuQKDPyRX4m+H7pAS9fuBrT+U1EOU4yU7t+qF//Z4KeuUpkxxg4EWXk+hH9i1zIF3uJmnA11yPjcORKlJoH3746q4VTLnlkiJ6paihRIBmsRHaKgRNRhqUHXkwtPdBd/2J3QRtP6MN0DcoGoFgB1yj0STYgkblkqkrGqmSurmOJArJfDJyI0iNf3PIFnr8E0Nu1Sg+YCj5uqBbObDrKixIF3+jX987RM1mJ7BADJ6J0Sw/M0a9LrZkCrjlEFZeYjO2nw9V1zm+iPCEZq5K5aixRoM+vI7InDJyIHig9kFpbptlwoKprlR4wtfNsBO4lJqOkvy9qlixo6+aQq5DMVclgjQ3Xy4CwRAHZGQZORAbyBS1f1PKFXaI20Dl1TToXtSF1mK5jjRKsFk55RzJXDSUKTv8D7PnW1i0iMsPAichgz3f6F7WHj8uWHjDQNKkWnjq/idXCKa9JBquhRMH68XqGK5GdYOBEJG4c1b+ghXxhB9aCKztxIxpX7tyDr5c7WlZ2neVlyN5KFHRniQKyOwyciOQLebGUHogHqnYFmg6FqzNk07WqXAy+Xh62bg65IhkeloxWyWwNO37/DxsiG2PgRCRfyPLFnL840Ocbly09YMowTNeBZQjIliSjVTJbDUPpJ9faukVE2QucZs6ciQoVKsDX1xfNmjXDnj17Mtx2zpw5aNOmDQoXLqwunTt3znR7ojx1cp3+hezipQdM3YpJwP6Lt40Tw4lsSjJbJcNVLHsFuKsH9UQOEzgtWrQIo0ePxoQJE7B//37Ur18f3bp1w82b6X+YN23ahGeeeQYbN27Ezp07UbZsWXTt2hVXrlzJifYTZZ98AUsWnWj2MlC1i61bZBc2nbgJTQNqliyEUgH5bN0cIj3DVTJdJeNVgif5gBI5SuD0xRdfYOjQoRg8eDBq1aqF2bNnw8/PD/PmzUt3+wULFuCVV15BgwYNUKNGDcydOxcpKSkIDg7OifYTZY988coXcEwYUKIW0HmirVtkN4IN2XTsbSJ7K1EgGa+n1wO7WaKAbMfTmo0TEhIQEhKCsWPHGu9zd3dXw2/Sm2SJ2NhYJCYmokiRIhluEx8fry4GUVFR1jSTyNydS0BshPl9R/7Uv4DdvYCuH7l06QFTickp2HIiTF3vyDIEZE8k01UyXle/Bax7DyhQAihS6cHt/IoCAWVt0UJyEVYFTuHh4UhOTkZgoPnyC3I7NDTUoucYM2YMSpUqpYKtjEyePBkTJ7IHgHIoaJrRGEi6H4ibSUkEFv4HGBHCL1tZIuz8LUTHJ6Fofm/ULxNg6+YQmaveHVgzRv9/u3hw+tt4+vD/MzlPVt2UKVOwcOFCLF26VE0sz4j0aEVGRhovly5dystmkjORnqaMgiYD+X3aHikXrxbevnoJeLgzu5DsTOwtQMtiCRb+fyZ76nEqVqwYPDw8cOOG+cKLcjsoKCjTx3722WcqcPrnn39Qr169TLf18fFRFyLKW6wWTkSUgz1O3t7eaNy4sdnEbsNE7xYtWmT4uE8++QQffPAB1qxZgyZNmljzkkSUR86G3cXZ8Bh4uruhTVVWCycieugeJyGlCAYNGqQCoKZNm+Krr75CTEyMyrITAwcOROnSpdU8JTF16lSMHz8ev/76q6r9dP36dXV/gQIF1IUoV0VdtXULHK63qVmlIijo62Xr5hAROUfg1L9/f4SFhalgSIIgKTMgPUmGCeMXL15UmXYGs2bNUtl4Tz75pNnzSB2o99937dXnKRddPQBsnwYcXWrrljhc4NSxhnnyB5HD2fMt0Ol9oCA/y5Tz3DRZBt3OSTkCf39/NVG8UKFCtm4O2Sv5KJ/dCGz7Cji32brHDtsMlGoAVxUVl4hGk9YjKUXDpjfbo0Kx/LZuEtGDrh4Evmtn2bYe3kD9Z4CWrwPFquR2y8jBWRNncK06cnzJScDhxcC3bYGfH9eDJjcPoO7TwBPf27p1DmHryXAVNFUqnp9BEzk+qTKenADs/xGY0QRY9F/g8j5bt4pcdaiOyG4kxAIHfgF2TgfuXNTv8/IDGg0EWrwKBJTT6zhJXZfMShLI76VongsLDtUzZVktnOya/D+15P/zswuByCvA9q+Bk6uB43/rl/KtgVYj9eWVuJg3ZRMDJ3I8MRHA3jn6sgv3bt3/QpX15h4ZAviZVKWXInhSDC+zui4uXmk4WYbnDNXCOb+J7Jk1/5/lD6fyLYCbx4Ed04FDvwMXtukXWWZJAqg6TwAeTIQg63COEzmO2xeAnTOBAz8DibH6fQHlgZavAQ0GAN5+tm6hQwq5cBtPzNqBgr6e2D+uC7w8OIJPTkh6oHZ9A4TMBxLu6vcVKqP3TksvtQ+zvF1ZlBVxBnucyP5dO6R3uUuGnJas3xdUD2g9CqjZB/Dgx/hhbEgdpmtXrTiDJnJe/qWBbh8Bbd8C9n0P7JoNRF0G1o4FNk/Ve6ul17pAcVu3lOwczzhkn6Qj9NwWYPtXwJkN9++v1EHvYq/UnnMUckhw6jIrrBZOLiFfANDm/4DmrwKHFuplS26dAbZ+BuycATR4FmgxAiha2dYtJTvFwInsS0oycHy5XlLg2kH9Pjd3oPbjesBUsr6tW+hUrty5h9Dr0ZBl6dpVY+BELsTLF2j8PNDwOSB0pf5H2pUQYN88fTivZm/9O6d0I1u3lOwMAyeyD4n3gIMLgB0zgNvn9Ps88wEN/wu0HAEUrmDrFjp10ctG5QqjSH5vWzeHKO+5ewC1egM1ewEXtuvTAk6tA44t0y8V2ujTAip3Yi83KQycyParne/9Htg9G4gN1+/LVxho+hLQdCiQn2um5aYNx/X5TR05TEeuToKiCq31y42j+hDekcXA+a36JbCu3gMlvd+cV+nSmFVHtiH1lVSGy49AYox+n385vXdJepm8WYQxt8UmJKHBpPVISErB2lFtUT2ooK2bROQY31MqE+85fk85EWbVkf0y/UsuJUm/j3/J2cSO0xEqaCodkA/VApmKTfQAqQfVfbJ5Jl7kRWDNGGDzFKDpMP3CnnGXwrMU5T7p1DSdO2BQsa0eMHHugE0Eh97PpnPj8SfKmBTVleBJsu0O/qoX1JS5mFLGQP4Q5FxMl8LAiXI3Q840W8WQIcdsFZuTEfqNqYFTRy6zQmQZr3zAIy/q2Xim2b+ykoH0SDH71yUwcKKclxin10eRv8oiTuv3efgADQewPoqdOHYtCtej4pDPywPNK7n2On1E2crEkyCpVt/UenNfA2eCgSN/6hfWm3NqDJwo59y7c38eQIzemwHfAD07TuYBFGDPhr3YkFr0snXVYvD18rB1c4gckwRFldrpF1nhYIfM31wCnN2oX6TnSQIornDgVPhO0sPjGlCOO7+Jw3REOaNkPeCJuUDHcfqamvt/Aq79Cyx+QZ/7JL3tXFPTKbAcAWXfzVD9LyxZdTwlUb+Pq47bvbDoeDT9+B81Z3/3O50QWMjX1k0icj4xEfrcp93fAvdu6ff5Fb1fo04mnJPdYDkCyl0Xdupj+idX37+vfGs9YKrahWP6dm7TiZsqaKpb2p9BE1FuyV8UaP820PL11FURpgF3LgKbPtYTZqQ3XnrlA8rZuqVkJQZOZJmUFD1QkoDp0u7UO92Amo8BrUYBZZrYuIFk7TIrzKYjygMyNCc9TI0H60u4SNB0/bC+WsKeOXrvfKvXgaC6tm4pWYiBE2UuKV4fipO/lsJP6vd5eAP1n9H/kipWxdYtJCtIwcstJ8OM9ZuIKI/I5PC6T+qBkkwclz9Cz24CDv+uX6p01nvtZW089trbNQZOrrZ8QGxExr+X8XeplCviIoF9PwC7ZgF3r+v3+fjrNUyavQwUDMybNlOO2nPuFmISklG8oA/qlPK3dXOIXI8ERZU76perB/QCmtITdfof/VKqUWomXi+97IG1392U6xg4uQr5jzejsd6DlBFPH2DwGv0/sQRN8VH6/QVLAS1eARoNAnw5Od+RBYemLupbvQTc3flXLZFNlWoIPPUDcGs8sHMGcOAX4Op+4I9BQJFKQMvX9B6o2a2y/u4eEcLgKY8wcHIV8tdKZv/xhPz++y7315ArXkMfjqv7FODpnSfNpNwjCbTBqfWbOnKYjsh+FKkI9PwcaD8W2POdfrl1Fljxhl4Lz5LvbvmOZ+CUJxg4kTkJmsq10Cd8V+0KuLvbukWUQ86ExeDirVh4e7ijdRUuSkpkd2Sx4A7v6H+wSu+T9EJFXrJ1qygNnhVdReI9y7brPRN4YQ1QvTuDJiezIXWYrlmlIsjvw7+ZiOyWFA1u/jLw+gGgw3uWPcYwUkC5jt+ezrI2XNQV/SJVvKMup/40uS2TvS0RVCe3W0s2YhimY7VwIgchRYSlNt7GD7Pedm4noEAQ4F8aKFQa8C+T+lNul9F/Fgi8P+Gcso2Bk71LTgSir5kEQpcfDJBiw23dSrJzkbGJ2HfhtrresQYzIomckmRAy+VKSPq/d/MACpY0Ca5MgipDsJW/OMshZMF1Ayd7SO+UopJ3b2QcEMlt+b2WkvVzeebL/C+N2FvA/B65uz9ktzafCkNyioaqJQqgXFGulUXkdJ5bBuQLyOCPbLlcBbRk/fwil4xInb5CpdIEVGkCrHyF8ya4sofzdDpcM3CyNDX/YdI7ZU0LecMzCojkZ/RVy8al3b30D7JZQGQaIJXJ+oN89WD29oOcwobjqWUImE1H5JzkHFCqgV7iID0pyfof4g+ci0zOUfL75ATg9nn9khEvvwx6rExu+xS0//N0Nrlm4GRpan5G6Z0SFMmcoXQDosv3o/ukuKzb4uaud52mGxClfgil6/RhJ2pLZC4fsqw+hLKdk5IeFykAeTM6DiUK+qJpxSLwcPJaRrLPO8+EY90xPXDqUI2BE5FDyanvbpnbpHqSSgF4JP1tkhL0qSGZndtiI4DEWCDilH7JiBRMzmxIUNrhlS/3ztP2FjjNnDkTn376Ka5fv4769etj+vTpaNq0aYbb//HHHxg3bhzOnz+PqlWrYurUqejRwwGGjS7v1dcUSq/bM+GuZc+Rv0QWk/WC9FL8uU0+WCNCsOPwCXy75SzC7yYYf1WsgDdealsJLetWd9o6IGuOXMPEv4/hWuT9YLakvy8m9KqF7nVKwlX2edSig3i/t/PuM5HTSf3uzpMhK6nXV7i8fsksQzvqauajKfGR+uWmXI5l3u6Mzo2WJjTZgJsmVfGssGjRIgwcOBCzZ89Gs2bN8NVXX6nA6MSJEyhR4sG/Znfs2IG2bdti8uTJeOyxx/Drr7+qwGn//v2oU8eyDK6oqCj4+/sjMjIShQrlQOVqGbb6rl3OdI1mNg4sEbX8JWBHJ9Lhv+xH2jfc0Ocy67+NnPKE6or77Yr7TER2Ij464wxvw23ptcoJwzbrQ5QPyZo4w+rASYKlRx55BDNmzFC3U1JSULZsWbz22mt4++23H9i+f//+iImJwYoVK4z3NW/eHA0aNFDBV07vkCWSrxyAx5z2WW6nBVSAmyxim15ELEGRrHrtQEM2raduMOt9SHtCDfL3xbYxHZ1q+MoV99sV95mIHIimAfduZ15CR3q0LJkDbIPAyaoxooSEBISEhGDs2LHG+9zd3dG5c2fs3Lkz3cfI/aNHjza7r1u3bli2bFmGrxMfH68upjuUk45eiUI9C7Yb7/MWYr3rAnL+kYs+TQRADIBMxnbtUFh0XIYnUiHRs/x+8A97ULygL5yFK+63pfss871aVHbeOW1EZKfc3AC/IvolqG7621w5AFjQwWELVgVO4eHhSE5ORmCgeR0YuR0aGpruY2QeVHrby/0ZkWG9iRMnIrfcir0/vycz+y/ewdELmaRtOqEtp1yzJpQr7rdMkicisktu9tsbbpdZddKjZdpLJT1OMhyYU4r4WbZg7aO1A9G7bA04gwsRMfh1T9ZrHj3btCzKF80PZ+GK+23pPktmIRER5WLgVKxYMXh4eODGDeOYlSK3g4KC0n2M3G/N9sLHx0ddckvtqhURDy/4IDHDbeT3w3s2g0fhcnCWeS8bT4ThemTcAxOGTee9fNC3rlPNe3HF/bZ0n6UcAxGRXfKz3xI6VgVO3t7eaNy4MYKDg9G3b1/j5HC5PWLEiHQf06JFC/X7UaNGGe9bv369ut9WJBja2mMtPluqz8syPbkYTp1vPt4C7Z0kaBISFEjqvWRauWWwz/J7ZwkeXHm/XXGficjJBORhGYa8KEcwaNAgfPvtt6p2k5Qj+P3339UcJ5m7JKUKSpcureYpGcoRtGvXDlOmTEHPnj2xcOFCfPzxx7YtR5CKtX1cY59ddb9dcZ+JiOyuHIGQUgSGAphSVmDatGmqTIFo3749KlSogPnz5xu3lzpP7733nrEA5ieffGJVAczcCpxcuZq0q+2zq+63K+4zEZHdBU55LTcDJyIiInJtUVbEGQ+5ABoRERGR62DgRERERGQhBk5EREREjlwAMy3DNKycXnqFiIiIKCo1vrBk2rdDBE7R0dHqZ05WDyciIiJKG2/IJHGHz6qTIptXr15FwYIF4ZYL69cYlnS5dOkSs/YeAo/jw+MxzBk8jg+PxzBn8Dg6xnGUUEiCplKlSsHd3d3xe5xkJ8qUKZPrryNvBj/YD4/H8eHxGOYMHseHx2OYM3gc7f84ZtXTZMDJ4UREREQWYuBEREREZCEGTgB8fHwwYcIE9ZOyj8fx4fEY5gwex4fHY5gzeByd7zg6xORwIiIiInvAHiciIiIiCzFwIiIiIrIQAyciIiIiC7ls4PTRRx+hZcuW8PPzQ0BAgEWPef7551UBTtNL9+7d4aqycwxlSt348eNRsmRJ5MuXD507d8apU6fgym7duoUBAwao2iRyHF988UXcvXs308e0b9/+gc/iyy+/DFcyc+ZMVKhQAb6+vmjWrBn27NmT6fZ//PEHatSoobavW7cuVq1aBVdnzTGcP3/+A585eZyr27JlC3r16qUKJ8oxWbZsWZaP2bRpExo1aqQmOlepUkUdW1e2xcpjKMcv7WdRLtevX8+T9rps4JSQkICnnnoKw4cPt+pxEihdu3bNePntt9/gqrJzDD/55BNMmzYNs2fPxu7du5E/f35069YNcXFxcFUSNB09ehTr16/HihUr1JfIsGHDsnzc0KFDzT6LcmxdxaJFizB69GiVZbN//37Ur19ffY5u3ryZ7vY7duzAM888o4LSAwcOoG/fvupy5MgRuCprj6GQ4N70M3fhwgW4upiYGHXsJAi1xLlz59CzZ0906NABBw8exKhRozBkyBCsXbsWrirGymNocOLECbPPY4kSJZAnNBf3ww8/aP7+/hZtO2jQIK1Pnz653iZnPYYpKSlaUFCQ9umnnxrvu3Pnjubj46P99ttvmis6duyYZLVqe/fuNd63evVqzc3NTbty5UqGj2vXrp02cuRIzVU1bdpUe/XVV423k5OTtVKlSmmTJ09Od/unn35a69mzp9l9zZo101566SXNVVl7DK35rnRV8n956dKlmW7zv//9T6tdu7bZff3799e6deuWy61znmO4ceNGtd3t27c1W3DZHqfski5CiWqrV6+ueloiIiJs3SSHIX9pSVeqDM+ZlriXIYKdO3fCFcl+y/BckyZNjPfJ8ZFlhqRHLjMLFixAsWLFUKdOHYwdOxaxsbFwlZ7OkJAQs8+RHC+5ndHnSO433V5I74qrfu6ycwyFDCGXL19erRnWp08f1VNK1uFnMec0aNBATfvo0qULtm/fjrziEGvV2QsZpuvXrx8qVqyIM2fO4J133sGjjz6qPvAeHh62bp7dM4w/BwYGmt0vt/NqbNreyH6n7V729PREkSJFMj0mzz77rDqByZyAQ4cOYcyYMarbesmSJXB24eHhSE5OTvdzFBoamu5j5Fjyc/dwx1D+WJw3bx7q1auHyMhIfPbZZ2qOowRPebGWqLPI6LMoi9jeu3dPzf2kzEmwJNM95A/O+Ph4zJ07V837lD82Ze5YbnOqwOntt9/G1KlTM93m+PHjaoJodvznP/8xXpfJpfIFUrlyZdUL1alTJziD3D6GrsLS45hdpnOg5LMoXyTyGZSAXj6TRDmtRYsW6mIgQVPNmjXx7bff4oMPPrBp28i1VK9eXV1MP4vy3ffll1/i559/zvXXd6rA6f/+7/9U5ltmKlWqlGOvJ88lQyWnT592msApN49hUFCQ+nnjxg11ojeQ29Ll6kwsPY5yTNJOxk1KSlKZdobjZQkZ7hTyWXT2wEn+z0kPr3xuTMntjI6Z3G/N9s4uO8cwLS8vLzRs2FB95shyGX0WZeI9e5uyr2nTpti2bRvyglMFTsWLF1eXvHL58mU1x8k0CHB0uXkMZYhTvjSCg4ONgZJ0T0v3qrXZjc5yHOUv+Dt37qj5Jo0bN1b3bdiwASkpKcZgyBKSnSOc6bOYEW9vb3Ws5HMkmXFCjpfcHjFiRIbHWX4vGUwGksVo2oPiSrJzDNOSob7Dhw+jR48eudxa5yKfubSlMFz5s5hT5Dswz77/NBd14cIF7cCBA9rEiRO1AgUKqOtyiY6ONm5TvXp1bcmSJeq63P/mm29qO3fu1M6dO6f9888/WqNGjbSqVatqcXFxmiuy9hiKKVOmaAEBAdpff/2lHTp0SGUpVqxYUbt3757mqrp37641bNhQ2717t7Zt2zb1mXrmmWeMv798+bI6jvJ7cfr0aW3SpEnavn371GdRjmWlSpW0tm3baq5i4cKFKhtz/vz5KjNx2LBh6nN1/fp19fvnnntOe/vtt43bb9++XfP09NQ+++wz7fjx49qECRM0Ly8v7fDhw5qrsvYYyv/ztWvXamfOnNFCQkK0//znP5qvr6929OhRzZXJ953hu09OqV988YW6Lt+PQo6hHEuDs2fPan5+ftpbb72lPoszZ87UPDw8tDVr1miuKtrKY/jll19qy5Yt006dOqX+D0uGsbu7uzov5wWXDZyktIC8QWkvkuZoILclBVfExsZqXbt21YoXL66+cMuXL68NHTrU+CXjiqw9hoaSBOPGjdMCAwPVl3anTp20EydOaK4sIiJCBUoSfBYqVEgbPHiwWfApwZHpcb148aIKkooUKaKOYZUqVdSXcGRkpOZKpk+frpUrV07z9vZWqfW7du0yK9cgn09Tv//+u1atWjW1vaSDr1y5UnN11hzDUaNGGbeV/789evTQ9u/fr7k6Q2p82ovh2MlPOZZpH9OgQQN1LOWPHtPvSFe00cpjOHXqVK1y5coqcJfvwfbt22sbNmzIs/a6yT9507dFRERE5NhYx4mIiIjIQgyciIiIiCzEwImIiIjIQgyciIiIiCzEwImIiIjIQgyciIiIiCzEwImIiIjIQgyciIiIiCzEwInIQps2bYKbm5taW45yV/v27c3WlbPleyPPu2zZMrt5Hls5f/682gfDuoh5Jafe26yOv632jxwPAycistlJP6OT4pIlS/DBBx/AEb3//vvGRaxNXbt2DY8++qhDvE/PP/+8cfFfIjLnmeY2EeUgWUFeTmbu7vwbxRpFihTJ9ddITEyEl5cX8kpQUBBcDT//5Iz4aSa7H7J57bXX1LBN4cKFERgYiDlz5iAmJgaDBw9GwYIFUaVKFaxevdrscUeOHFF/3RcoUEA95rnnnkN4ePhDP6/Yvn076tWrB19fXzRv3ly9lsH8+fMREBCA5cuXo1atWvDx8cHFixexd+9edOnSBcWKFYO/vz/atWuH/fv3mz2vnGDmzp2Lxx9/HH5+fqhatap6Hmv2Ky1De6QXQp5P2tytWzdcunTJbLtZs2ahcuXK8Pb2RvXq1fHzzz8bf1ehQgX1U9olbTTcFn/99RcaNWqknrdSpUqYOHEikpKSLNonGRrp0KGDui7vgWwrPR3pDdVJe5o0aaLeFwlAnn32Wdy8eRPWkOeX/ezduzfy58+Pjz76yKJ9SGvMmDGoVq2a2h/Zfty4cSoIMxxvefy///6rXk8ucl/a3qCWLVuq5zEVFhamArktW7ao2/Hx8XjzzTdRunRp1d5mzZqpHrqMZPY+Zfb+ptdj9uOPP6rjYtgH09c9e/aset9k/+vXr4+dO3dm+fnPal8uXLiAXr16qc+B/L527dpYtWqVWbtCQkLUZ0BeV47fiRMnzH5vzT6KPXv2oGHDhup9l+c9cOBAptsTGeXZcsJE2SArYhcsWFD74IMPtJMnT6qfHh4e2qOPPqp999136r7hw4drRYsW1WJiYtRjbt++rRUvXlwbO3asdvz4cbWCe5cuXbQOHTo81PMaVvCuWbOmtm7dOu3QoUPaY489plWoUEFLSEhQ28gq515eXlrLli217du3a6GhoerxwcHB2s8//6zac+zYMe3FF19UK8xHRUUZ2yTPXaZMGe3XX3/VTp06pb3++utagQIFtIiICIv3Ky1De5o0aaLt2LFD27dvn9a0aVPVPoMlS5aobWbOnKmdOHFC+/zzz9WxMKw2fvPmTdU2ea5r166p22LLli1aoUKFtPnz52tnzpxRx0SOxfvvv2/RPiUlJWl//vmn2kZeV577zp07xvdn5MiRxuf5/vvvtVWrVqnX2blzp9aiRQv1XhkY3hs5RhmR35coUUKbN2+eep4LFy5YvA9Lly413pbPiry3586d05YvX67eR1mtXcTGxmr/93//p9WuXVvtj1zkvrTPM2PGDK1cuXJaSkqK8XmnT59udt+QIUPU+yRtPH36tPbpp59qPj4+6rOZnozep6ze37Sio6O1p59+WuvevbtxH+Lj49X+yvPXqFFDW7FihXquJ598UitfvryWmJiY6ec/q33p2bOn+izL/yl5H/7++29t8+bNZu9ts2bNtE2bNmlHjx7V2rRpY9VnOO3xl32U/0vPPvusduTIEfV6lSpVUtscOHAgw88QkWDgRHZNTqCtW7c23paTbf78+bXnnnvOeJ98scsXnpxQDSe2rl27mj3PpUuXjCfo7D6v4Qt84cKFxm0kAMiXL5+2aNEi44lDtjl48GCm+5WcnKwCN/nCNpDHvffee8bbd+/eVfetXr3a4v1Ky9CeXbt2Ge+ToEvu2717t7otJ6ChQ4eaPe6pp57SevTokWHwIDp16qR9/PHHZvdJcFiyZEmL9ymjgCdt4JTW3r171ePkBJjZ85iS348aNSpb+5B2301JENC4cWPj7QkTJmj169dP9/UNzyNBjaenpwokDCQYHDNmjLouQZ2c+K9cufJAeyVwzmwf07bVkvc3rUGDBml9+vQxu88QOM2dO9d4nwQxcp98pjL6/FuyL3Xr1jULVk0Z3tt//vnHeN/KlSvVfffu3bN4H02Pzbfffqv+KDI8XsyaNYuBE1mEQ3Vk92RYzMDDwwNFixZF3bp1jffJkJUwDN3IMMnGjRvVcJbhUqNGDfW7M2fOZPt5DVq0aGE2F0eGBY4fP268T4YKTJ9b3LhxA0OHDlVDVTJUV6hQIdy9e1cNY2S0rzJkIdtZu19peXp64pFHHjHelsfIcIqhzfKzVatWZo+R26b7lB5pz6RJk8zaI/sok6BjY2Mt2idLyTCNDOWUK1dODdfJUKdIe/yyIkMy2dkHU4sWLVLHR4YMZfv33nvP6nYUL14cXbt2xYIFC9Ttc+fOqSGvAQMGqNuHDx9W84NkSNC0bZs3b870vU5Pdt/fjJi+nyVLllQ/Td/PtJ9/S/bl9ddfx4cffqjaNWHCBBw6dMiq17V2H+V+w3B7ev+viTLDyeFk99JO4JU5F6b3yW2RkpKifkpAIifZqVOnPvBchi/c7DyvpfLly2d8rMGgQYMQERGBr7/+GuXLl1dzP+SLOiEhIct9tXa/8oq0R+bz9OvX74HfmZ6QMtsnS8i8M5mXJRcJNCTokEBFbqc9flmRwC07+2BgCG7kMfL6EgQvXLgQn3/+OawlzyMBw/Tp0/Hrr7+qoN0QuEu7JJiXgFF+mpKgw5ay+j+S9vNvyb4MGTJEHc+VK1di3bp1mDx5sjqmMg/R0tclyisMnMjpyETfP//8U02Old6WnLZr1y7V8yFu376NkydPombNmpk+RiaUf/PNN+jRo4e6LZOzM5vUnZP7JROd9+3bh6ZNm6rbMqlW0v8NbZaf0j4J7kzbK5N7TU9a0muQtj3yXDKJPrukd0KkfW5ToaGhKuicMmUKypYtq+6T/ckJ1u7Djh07VOD77rvvmk1sTrtPme2PQZ8+fTBs2DCsWbNGBU4DBw40/k4mLctzSI9KmzZtLN6f9N4nS97ftCzdB0tYui/y3r788svqMnbsWJWsYRo4ZcbafZTtZfJ4XFycMUCW/9dEluBQHTmdV199Fbdu3cIzzzyjstlkOGDt2rUqWy4nTgYytBMcHKwy3CQLTDLlsqp5I0N08kUtQwS7d+9WvQ3yl3le7JecTOUEJK8rf/VLmyUb0BBIvfXWWyobSrKSTp06hS+++ELVUZIsKAMJ1mSfr1+/roJFMX78ePz000+q9+Xo0aNq36T3RYauLCVBiPQerFixQmWVSe9EWhKkyolcemYko0sytnKqxpO1+yDvo/R2yTZy/KdNm4alS5eabSPHSobepJCiBMeSUZZR75d8biQrT15X3lcDGdaSz4gEU/JeyPNJFpj0xEivTEbSe58seX/Tex4ZLpOgUvbBkDWYHZbsi2RQymdZfifZpjIkndUfI6as3UfJypTPnQzLHjt2TGXwffbZZ9neR3Ixlk2FIrKN9CYJSxbPl19+memkWMnWefzxx7WAgAA1eVsygWRisCFjKTvPa5ikKhO6JWvK29tbZaj9+++/xu1lcqy/v/8D+yEZcJLZ5uvrq1WtWlX7448/Hni99Cb2ynPJc1q6X2kZ2iPZa5I1JJlMnTt3VhN2TX3zzTfq95KZVK1aNe2nn34y+71kj1WpUkVNaJZ2G6xZs0ZNzJW2SHaaHA/JSrRmnyZNmqQFBQVpbm5ualJyeu+PZOVJtpu0XyZRS3tMJ/JaOjk8vUne1u7DW2+9pSYWS3Zg//791Xto+p7HxcVpTzzxhHqPDFluGb2+ZArK/W3btn2gXZKpOX78eLXf8r7IhHV57yXzLCMZvU9Zvb9pyeR1yXKTfZT2yfE1TA43nTwtx9vw+8w+/1nty4gRI7TKlSur91ey3SRJIzw8PMP3Vtog90mbLN3HtMdfkj5kEr/8P27QoIExw5OTwykrbvKPrYM3Isod8le4/DXPZWKIiHIGh+qIiIiILMTAiYiIiMhCHKojIiIishB7nIiIiIgsxMCJiIiIyEIMnIiIiIgsxMCJiIiIyEIMnIiIiIgsxMCJiIiIyEIMnIiIiIgsxMCJiIiIyEIMnIiIiIhgmf8HAN89KwGGFCYAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 600x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = jnp.linspace(-1.5, 1.5, 9)\n",
    "spikes = surrogate.sigmoid(x, alpha=4.0)\n",
    "grads = jax.grad(lambda z: jnp.sum(surrogate.sigmoid(z, alpha=4.0)))(x)\n",
    "\n",
    "print(\"x:                 \", x)\n",
    "print(\"forward spikes:    \", spikes)\n",
    "print(\"surrogate gradient:\", grads)\n",
    "\n",
    "plt.figure(figsize=(6, 3))\n",
    "plt.plot(x, spikes, \"o-\", label=\"forward spike\")\n",
    "plt.plot(x, grads, \"s-\", label=\"surrogate gradient\")\n",
    "plt.xlabel(\"membrane potential relative to threshold\")\n",
    "plt.legend()\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d9feb0dd",
   "metadata": {},
   "source": [
    "## 11. Visualization\n",
    "\n",
    "Visualization utilities provide ready-made plots for spike rasters, population activity, connectivity matrices, learning curves, trajectories, and related neural data views.\n",
    "\n",
    "Full documentation: [Visualization](https://brainx.chaobrain.com/braintools/visualize/index.html)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "838a13ae",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-24T08:32:20.003284Z",
     "iopub.status.busy": "2026-06-24T08:32:20.003284Z",
     "iopub.status.idle": "2026-06-24T08:32:20.096687Z",
     "shell.execute_reply": "2026-06-24T08:32:20.096687Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3kAAAEiCAYAAABEJhvIAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAQZNJREFUeJzt3Qd4VGXWwPEzIQkt9CT0XgREiiAs7rqgoqxiwW2sawFE/dxPXIoVkSYq4CJFYUVZivUDFQFXERapS1G6CgoCIkVKiGho0pL7Pee9O9kkJJBJMnPL/H/Pc5nM5c7Mmclk3jn3LSdgWZYlAAAAAABfiHE6AAAAAABA0SHJAwAAAAAfIckDAAAAAB8hyQMAAAAAHyHJAwAAAAAfIckDAAAAAB8hyQMAAAAAHyHJAwAAAAAfIckDAAAAAB8hyQMAAMB5OnbsaLaiNHToUAkEAuJXS5cuNc9PL93weiN6keQBAABE2PTp000yENxKlCghjRo1kt69e8uhQ4fEy06ePGmSuYIkOl7x97//3fwOw2n//v3mddy0aVNYHwf+FLAsy3I6CAAAgGiiCULPnj3l6aeflrp168qpU6dkxYoV8sYbb0jt2rVl8+bNUqpUKUdjDPYqhZqspaamSlJSkgwZMsQkKVmdO3fObJrUelmzZs0kMTHxvNcmIyNDzpw5I/Hx8RITE1pfit5O6W3VunXr5IorrpBp06ZJjx49ijB6RINYpwMAAACIVjfccIO0adPG/HzvvfdKpUqVZMyYMTJ37ly5/fbbxW9iY2PN5lea2BU0gQ0md0BRYLgmAACAS1xzzTXmcteuXeZSe72GDx8u9evXl+LFi0udOnXkySeflNOnT2e7ne6/6aab5F//+pe0bNnSJBpNmzaV999/P19z4oLDR7/77rsL9jQNHjxYWrduLeXKlZPSpUvLVVddJUuWLMk8Rm+vvXhq2LBhmcNRgz16uT1+qM9Rezzbtm1rnmO9evXk9ddfz9drO3r0aLnyyitNIl2yZEnzPN57771cj33zzTfNY2hvaoUKFeTXv/61eW2DcWzZskWWLVuW+fyy9npmnZOnw28TEhLMENacNImvUqWKpKennzcnT2+vvXhKe3yDj6O/J+0hjYuLk8OHD593n/fff7+UL1/e9AwjupHkAQAAuMTOnTvNpSYiwd49Tawuv/xyGTt2rHTo0EFGjBghf/rTn8677fbt26Vbt26md1CP0R6zP/zhD7Jw4cIiie3o0aPyj3/8wyQio0aNMgmbJhqdO3fOnDemCd7LL79sfr7tttvM8FPdfvvb3+Z5v6E8xx07dsjvf/97ue666+SFF14wCZgOZdSk62LGjx8vrVq1MkNkn3vuuczX56OPPsp2nCand911l0mk9Fi9XrNmTVm8eLH5/3HjxkmNGjWkcePGmc9v4MCBuT6m/j5OnDhx3mNo0vfPf/7TPJdixYqdd7smTZqYxw4mbsHH0WRTY9PEeObMmecl4Zq0/u53v/P8cFgUAZ2TBwAAgMiZNm2arolgffLJJ9bhw4etvXv3WjNmzLAqVapklSxZ0tq3b5+1adMmc8y9996b7baPPPKI2b948eLMfbVr1zb7Zs2albkvLS3Nqlq1qtWqVavMfUOGDDHH5RXPrl27Mvd16NDBbEHnzp2zTp8+ne12P/74o1W5cmXrnnvuydynz0fvSx8rp5yPX5DnuHz58sx9KSkpVvHixa2HH37YupiTJ09mu37mzBmrWbNm1jXXXJO5b/v27VZMTIx12223Wenp6dmOz8jIyPz50ksvzfbaBC1ZssTEqJfB21SvXt363e9+l+24d95557znkvP1Xrt2rTlGfzc5tW/f3mrXrl22fe+//362x0Z0oycPAADAIZ06dTK9X9pTpD1XOrRv9uzZUr16dZk3b545pn///tlu8/DDD5vLnL1D1apVM71nQWXLlpW7775bNm7cKAcPHix0rNrjFJw3pguMHDlyxPQo6ZzCDRs2FOg+Q32OOgRVh4gG6Wt3ySWXyLfffnvRx9IhmkE//vijpKWlmfvKGvucOXPMc9OexZwLpxSk9IPeRnsL9XkeP348c7/2wunv+Fe/+pUUhP5eP/vss8yeX/XWW2+Z95H2hAIkeQAAAA6ZOHGiGU6p89q++uork6zo8Ee1e/duk2g0aNAg2210HpfOu9L/z0qPy5mIaFkGdaG5dqF47bXXpHnz5mY4oA4p1SRLEzFNmAoi1OdYq1at8+5Dh2xq0nYxH374ofziF78wsVesWDFzaGnW2DVp0ng0mSwqOmTz559/lg8++MBc12RPkz5N/gpaM1DvU+cvamKn9Dno87vjjjt8XYcQ+UeSBwAA4BBd3EN783Sem87Dym3Z/aL80p7XfQUX/7gQXYxE57/pAilTpkyR+fPnmwRVF4vR3q9wxJVTbvPX1MUqgv373/+WW265xSR4WuNOkyyN/c9//vNFb1tYmljqYi3vvPOOua5z8TTp00StoDSx1UVogkmezsXThWruvPPOIosb3ubfNWwBAAA8TOvlafKkC6poAhikxdJ/+ukn8/85FyXRhCVrwvTNN9+YS00ygsmB0ttrT1lQzh6z3GgioatZ6oqdWR9DV3ssaFIa6nMsqFmzZpkEb8GCBaYHLEhr0GWlCazGo72qukppXkJNvP/4xz+ahV908Rodqqm/D03+LuRij6FDNm+99VZZu3atSfZ0UZlLL700pLjgX/TkAQAAuNCNN96YuZpjVlpHT3Xp0iXb/v3795v5fEGaUGh5AU1WdPhjMIlRy5cvzzxOV3/UYZj57UXL2vOl88JWr16d7bhgEXdN0or6ORaUxq5JU9YeSx3CqnPwsuratavpTdWVLXP2TmZ93lo+Ij/PL0h77bSnTV9n7QHVpO9i9DFUXo+jq6hqQXZd6VTLOdCLh6zoyQMAAHChFi1aSPfu3eXVV181X/R1QY01a9aYREGTkauvvvq8+Xe9evUyPTuVK1eWqVOnmh6xrL1V119/vZnXpsc9+uijJvnR43R+2p49ey4Yjw4P1F48XdxFky+t5Tdp0iQzfy3roiK6wInu0x4rjUnnvzVr1sxshX2OBaXxauL4m9/8xgzRTElJMfMhdS7gF198kXmcXtdyCFq3Txdl0dIP2vOnr6kubKOlHZTW2NP5fM8884y5TXJycmaNw9xoeYjgfWuyl5+hmpqQa2+rvsZlypQxSV+7du2kbt265v+1xIMu1jNhwgTze9S6e0Amp5f3BAAAiDbBkgW6TP6FnD171ho2bJhVt25dKy4uzqpZs6Y1YMAA69SpU9mO0/ICXbp0sRYsWGA1b97clBVo3Lix9e677553n+vXrzfL78fHx1u1atWyxowZk68SCloO4LnnnjOPpfevpRk+/PBDq3v37mZfVqtWrbJat25tHiNrOYXcSjiE+hxzyhlnXqZMmWI1bNgw87XR55xXSYmpU6ea56fHVqhQwdz/woULM///4MGDJpYyZcqY2wcfP2cJhawGDhxo/q9Bgwa5xpfb85g7d67VtGlTKzY2NtdyCmvWrDH7r7/++os+f0SXgP7z35QPAAAAXqNzvLSnTFdYRPT4/PPPzXBcHZarRdKBIObkAQAAAB40efJkU1tRh5UCWTEnDwAAAPAQLcOgK4DqXMbevXtnLtICBJHkAQAAAB7y0EMPmUV1dHXSYcOGOR0OXIg5eQAAAADgI8zJAwAAAAAfIckDAAAAAB+J+Jy8jIwM2b9/vynqGAgEIv3wAACX0tkDx44dMwWHY2Ki9xwk7SQAoLBtZcSTPG24atasGemHBQB4xN69e6VGjRoSrWgnAQCFbSsjnuTpmclgYGXLlo30wwMAXOro0aMmuQm2E9GqqNpJ7RE8fPiwJCUleaZn1Gsxey1eRczh57V4FTF7J978tpURT/KCQ0+04SLJAwDkFO1DFIuqndQvFKdOnTL34YUvQF6M2WvxKmIOP6/Fq4jZe/FerK10/ysCAAAAAMg3kjwAAAAA8JFCJXkjR440XYV9+/YtuogAAHCZiRMnSp06daREiRLSrl07WbNmTb5uN2PGDNNOdu3aNewxAgBQ6CRv7dq18sorr0jz5s0LehcAALjezJkzpX///jJkyBDZsGGDtGjRQjp37iwpKSkXvN13330njzzyiFx11VURixUAgAInecePH5c77rhDJk+eLBUqVOCVBAD41pgxY+S+++6Tnj17StOmTWXSpElSqlQpmTp1ap63SU9PN+3ksGHDpF69ehGNFwCAAiV5Dz74oHTp0kU6depU9BEBAOASZ86ckfXr12dr73RVNL2+evXqPG/39NNPS3JysvTq1StCkQIAUIgSCjq/QIer6HDN/Dh9+rTZstZ2KKxBgwbJ2LFjpV+/fjJ8+PBC3x8AoOD8/JmcmppqeuUqV66cbb9e37p1a663WbFihUyZMkU2bdpUqHZSl9vWraD0ths2WLJvX8HvI/IyJD7ekjNnMjwVb5MmGXLFFeIJ+r6wLKtQ761I81rMXotXEXP46efa6tWWdOiQIeXLF/x+8vt8Q0rytDBrnz59ZOHChWbyeX6MGDHCDFcpSvpl4sSJE+bSb18oAMBr+Ez+r2PHjsldd91lpjMkJiYWqp3UorlaU6kwXwTWrk0ziV6xYt5YTDsmJkOqVUuT/fv1i1uMJ+KtWjVNFi+2pEePGGnaVFxP3xdpaWnmy7EXaot5MWavxauIObw0L5s1K0P27k2ThARLLrssplDtTJEneTpkRSeaX3755Zn79Azn8uXLZcKECeZMZLFixbLdZsCAAWbCes4q7YWhZ4v1y0TW+wUAOMPPn8maqGm7dujQoWz79XqVKlXOO37nzp1mwZWbb775vLOusbGxsm3bNqlfv36+2smkpKRCF0M/fDgg+/cnSdWq7v4CFBQIaO9lQM6eTRLLivFMvJ9/niRDh8bI88+LtG0rrqbvC13xVd9fbv9i7NWYvRavIubwsSyRF18UmTYtQxo2DMgNNyRJcnLB481vR1tISd61114rX375ZbZ9OhG9cePG8vjjj5+X4KnixYubrSjpmeJoP1sMAG7h58/k+Ph4ad26tSxatCizDIJ+sdDrvXv3Pu94bQ9ztpNPPfWUOfM6fvz4XE9y5tVO6peWwn5xsayASZa8kDB5N+aA1KoVIzt3xsgTT2jPtkirVuJq+sW4KN5fkeS1mL0WryLm8CR4L78sMmWKSJky9udbIFC4ePN725CSvDJlykizZs2y7StdurRUqlTpvP0AAPiB9rJ1795d2rRpI23btpVx48aZ4al6klPdfffdUr16dTPsUs+w5mwPy/9n8gXtpH8FAiJ164p8+63II4+IjB+vv2+nowLgdIKnyd2kSSIJCSIVK0b28UNeeAUAgGjSrVs3Mz9u8ODBcvDgQWnZsqXMnz8/czGWPXv2uPYsMiJH3wJaLWPnTj0xIPLSSyKXXOJ0VACc8tZb9udAyZIiSUn2vDxPJXlLly4tmkgAAHApHZqZ2/DM/LSD06dPD1NU8EKiR5lEIPq8+67WWBWJi9PVmJ2JgVOPAAAARUSXJ9C1dXbs0EWJtKfX6YgARNIHH4iMHGn/XLWqOIYkDwAAoIgTPe3B01KKmujt3+90RAAiYf58kWee0eoDItWqiaNI8gAAAIpYbKy9GMvmzXail5LidEQAwmnJEpGhQ0W0vGmNGvaCTE4iyQMAAAgDnY9Tp47Ipk32HL0ffnA6IgDhsHKlyMCBIidOiNSq5XyCp0jyAAAAwiQ+XqR2bZE1a+zyCmlpTkcEoCitXSsyYID9t61/625I8BRJHgAAQBhprXv98rdqlcijj4ocO+Z0RACKgvbSP/aYSGqqPTzbLQmeIskDAAAIsxIlRGrWFFm2zD7rr8O6AHjXli127/zBg+5L8BRJHgAAQARoUeTq1UUWLhR56il7gQYA3vPNNyIPPyyyb5+9kq7WyHQbF4YEAADgT6VL20urf/yxyJAhImfOOB0RgFB8+629Yu5337k3wVMuDQsAAMCfEhJEqlQRmTvXrql17pzTEQHIj7177QRvxw57iKbWxHSrWKcDAAAAiDZlyohkZIi8+669MMsTT7j7CyMQ7Q4csBO8rVvtHjythelmLg8PAADAn8qVsxO9t96ySy3oHB+3Dv0Cotnhw3aC9+WXdg+e2xM85YEQAQAA/KlCBRHLEpk+3e7Re+gh963SB0SzI0fsEzAbN4rUqSMSFyeeQJIHAADgoIoV7R69yZPtRO/++0n0ADdIS7PLJHz2mV3rUnvcvYIkDwAAwGGJiXaiN3Gineh1706iBzjp+HG70PnKlSK1atl/l17CyG8AAAAXSE62v0iOGycyY4bT0QDR6+RJkQEDRJYuFalZU6RECfEckjwAAACX0NIKusrm6NEis2c7HQ0QfU6dEhk0SGThQpHq1UVKlhRPIskDAABwES2WrkM3n3tOZN48p6MBoseZMyLDhol89JFI1aoipUuLZ5HkAQAAuIz2IAS/cC5a5HQ0gP+dOyfy7LMic+aIVK4skpAgnkaSBwAA4DK66IrOBdK5QTp0bPlypyMC/Cs9XeRvfxN55x2RpCSRsmXF80jyAAAAXJro6bLtuoz7k0+KfPqp0xEB/mNZImPHirz5pkilSiLlyokvkOQBAAC4ONGrW9cuyPz44yLr1zsdEeCvBG/iRJFp0+zkrkIF8Q2SPAAAAA8keikpdt2uL790OiLAHwne5Mkir7xiD8/UXjw/IckDAABwuZgYkXr1RL7/XuThh0W2bnU6IsDb3njD7sUrVUokMVF8hyQPAADAQ4nenj0i/fqJ7NjhdESAN73zjj0PLz5eJDlZfIkkDwAAwCO0ULomert2ifTvL7J7t9MRAd4yd67IqFH2SZMqVcS3SPIAAAA8lujpHL1t2+wePR3CCeDiPv5Y5JlnRDIy7GLnfkaSBwAA4DGxsXait2WL3aN36JDTEQHutmiRyNChIqdPi1Svbi9o5GckeQAAAB4UFydSp47Ipk12opea6nREgDutWCEyaJDIyZMitWr5P8FTJHkAAAAepQtHaMH0tWtFHnlE5KefnI4IcJfPPhMZMEAkLc3+W4mGBE/FOh0AAABFLSMjQ3bs2CEpKSnm56x+/etfOxYXEA7Fi9tfXlevFnn0UZExY0TKlHE6KsB5GzeKPP64yA8/2AsWRUuCp0jyAAC+8umnn8qf//xn2b17t1ha7TaLQCAg6enpjsUGhEuJEiI1a4osX25/qf3b30RKl3Y6KsA5mzfbvds6XzXaEjzFcE0AgK888MAD0qZNG9m8ebMcOXJEfvzxx8xNrwN+VbKkSI0a9gITAweKnDrldESAM7Zts+ep6sqzmuBpuYRoQ08eAMBXtm/fLu+99540aNDA6VCAiCtVSqRaNZH58+1hnMOH2/P2gGjx7bf/rSFZv350JngqSp82AMCv2rVrZ+bjAdEqIcEu8qxFnzXJO3vW6YiAyNizx64duWOHneBpTcloRU8eAMBXHnroIXn44Yfl4MGDctlll0mcrjOfRfPmzR2LDYgUXXhFp6S+957dk6erC2ptPcCv9u+3E7ytW+0hmtGc4IXck/fyyy+bxrFs2bJma9++vXyspeMBAHCJ3/3ud/L111/LPffcI1dccYW0bNlSWrVqlXlZEBMnTpQ6depIiRIlTE/hmjVr8jz2/fffN3MCy5cvL6VLlzaP+8YbbxTiGQEFU7asSGKiyP/9n8gLL+iqs05HBIRHSoqd4OliK3XrckJDhXROp0aNGjJy5Ehp2LChWbHstddek1tvvVU2btwol156abh+bwAA5NuuXbuK9P5mzpwp/fv3l0mTJpkEb9y4cdK5c2fZtm2bJCcnn3d8xYoVZeDAgdK4cWOJj4+XDz/8UHr27GmO1dsBkVS+vJ3cvf66PUfvoYecjggoWrqels7B27RJpE4dkRyDN6JWSEnezTffnO36s88+a3r3dLlqkjwAgBvU1oJhRWjMmDFy3333mURNabL30UcfydSpU+WJJ5447/iOHTtmu96nTx9zUnTFihUkeXBExYp2ojdlip3ode3qdERA0Th+XPMRER1coQkeiwz9V4FHZ2udoXfffVdOnDhhhm3m5fTp02YLOnr0aEEfEhE2aNAgGTt2rPTr10+G68xtAPCQr776Svbs2SNnzpzJtv+WW27J933obdevXy8DdELTf8TExEinTp1ktVaevggd9bJ48WLT6zdq1KiQ2kkt4p6zkHso9LaBgCWBgF6KJ9ix2jF7gZfiTUqy5+hNnpwhCQmW/OlP7o8563tZ/5YK8/cQSV6L16sxp6VlyPTplqxZk2ESPK0V6YXPC8vSz/aC309+f0chJ3lffvmlSepOnTolCQkJMnv2bGnatGmex48YMUKGDRsW6sPABTTB0yReL0nyAHjFt99+K7fddptpr7T4ebAguv6sQimGnpqaao6vXLlytv16favO7s9DWlqaVK9e3SRvxYoVk7///e9y3XXXhdROHj582LS1hfkikJiYJg0aWFKxolcW07Zjtn9nXojZW/FqsfSffsqQDRvSJD7ekg4d3B9z8L2sf1P6OutJFrfzWrxejFk/Gl97zY75yistiY+P8cRrHBeXJufOWZKSUvB4jx07Fp4k75JLLpFNmzaZF1XrEHXv3l2WLVuWZ6KnZz91LkPWM5Q19VMGrqc9eJrgZf39AYDb6fDIunXryqJFi8ylLpLyww8/mBU3R48eHZEYypQpY9rK48ePmzj0c7RevXrnDeW8UDuZlJRkFjkrzBeK1NSA7NiRJFWruv8L0H/PdAdk374ksSz3x+y1eIMxW1ZA/va3JImNjZHbbhPXs3ulA+ZvwgsJiNfi9VrMmuA9/7zIggUZ0r59QA4f9sbfX0ZGhhQvHpDY2CRJTi54vLoAWFiSPJ1EHiww27p1a1m7dq2MHz9eXnnllVyPL168uNngPdp7Rw8eAK/RYZQ6RDIxMdF8WdHtV7/6lekx++tf/2oWC8svvQ/tiTt06FC2/Xq9ihYiy4M+ZrCt1NU1dbVPffzckry82slg7IWhX+b1y48XvgB5NWavxasqVLBjHjEixszRu+kmcT1NQIribyJSvBavV2LW0fc68GHePJFq1fTz0zt/f5Zlf14EAoV7jfN725iiyEqzziUAAMBJOrxSe9KCSdp+LZ70nwVZdG5cqCc29YSm9sZlbff0+oXmo+dEWwm30S/IWiT96adFFi50Ohrg4s6dE3nmGZG5c0X0HFtCgtMRuVtIPXk6pOSGG26QWrVqmfGgb7/9tixdulQWLFgQvggBAAhBs2bN5PPPPzdDNbXkwfPPP2+StVdffdUMmQyVDqXUqQla+65t27amhILOVw6utnn33Xeb+XfaU6f0Uo+tX7++SezmzZtn6uTpatSAW+gUVZ09s3u3yODB9qqEHTo4HRWQO51KrWtXvfuuiFau+c95PBRVkpeSkmIaswMHDki5cuVMYXRN8PKaTA4AQKQ99dRTJglTTz/9tNx0001y1VVXSaVKlUzNu1B169bNLIIyePBgOXjwoBl+OX/+/MzFWHQFz6zDZ/Sx//d//1f27dsnJUuWNPXy3nzzTXM/gNsSPa048t13IgMH2vOcrrzS6aiA7HQxyRdeEHnrLZFKlUTKlXM6Ih8meVO0wAoAAC6WtRadzovTVTCPHDkiFSpUyFxhM1S9e/c2W250REtWzzzzjNkAL9A/CV1+/ttvdcSW/WW6TRunowL+O49twgRdSVPnktob8sf9sxQBACiAHTt2mNEmP//8s1TUatAA8kz06tbVsh0ijz0m8sUXTkcE2Aneq69qbUcRXWiYj/HQkOQBAHxFyyVce+210qhRI7nxxhvNFAPVq1cvU0YBwPl0xLEmevrn8sgjIl9/7XREiPYET3vvJk4UKVVKF9FyOiLvIckDAPiuxmdcXJyZK1dKvx38h86J07l0AC6c6O3ZowsOiWzf7nREiFYzZoiMG6clEuyFVhA6kjwAgK/861//klGjRkmNGjWy7W/YsKHs1qUEAeSpWDERXYRW5+j162cvygJE0uzZIqNH2+/FC5QjxUWQ5AEAfEVXt8zagxeki6/kVnQcQO6Jnvbk9e0rsm+f0xEhWmiR8+ees1fU1FqOKDiSPACAr2i5hNdffz3zuq6oqcXItV7e1Vdf7WhsgFfExtpDN7/6yu7R+8/UViBsPvlEZNgwkTNnRKpXdzqaKCuhAACA22kypwuvrFu3Ts6cOSOPPfaYbNmyxfTkrVy50unwAM+Ii7MTPV1tU9csevFFFsBAeCxfLjJ4sMjJk3btxgJWu0EW9OQBAHylWbNm8s0338ivfvUrufXWW83wzd/+9reyceNGqV+/vtPhAZ4SH2/X0Vu3zk70fvzR6YjgN59+KvLkkyJpaSR4RYmePACA75QrV04GDhzodBiAbxI9/fKtX8YffVRkzBi7bhlQWOvXizzxhM6ZtueBkuAVHZI8AIAvaMmE/KhVq1bYYwH8pkQJkZo1Rf79b5HHH7dXPyxd2umo4GVffiny2GMihw6R4IUDSR4AwBfq6uSh/7C0ku5/Fl3Juk+vp6enOxIf4HUlS4poZZLFi+3hdSNH2vuAUG3dag///f57ER1FrzUaUbRI8gAAvqAJnNbG69Gjh9x8880Sq8sDAihSWp1El7afP98exvnMM3bBaiC/duywV2zVwRfag0eCFx60gAAAX9i3b5+89tprMm3aNJk0aZLceeed0qtXL2nSpInToQG+kpAgUrWqyIcf2itw6rL3eglczO7dIv37i+zaZSd4WpMR4UHuDADwhSpVqsjjjz8uW7dulffee09+/PFHadeunfziF7+QyZMnm1p5AIpGmTIiyckis2fbxavPnXM6IridDs3UHrxt2+zSHCR44UWSBwDwHS2fMGXKFNm+fbuUKlVKHnjgAfnpp5+cDgvwFV1hU+vmzZxpL8TCeRTkRRdX0R68LVvsBI/R9OFHkgcA8J1Vq1bJvffeK40aNZLjx4/LxIkTpXz58k6HBfiO/llVqCDyxhsi48frAkdORwS3SU21E7xNm+yaiwztjQzyaACALxw4cEBef/11MydPh2recccdsnLlSlMcHUD4VKxoJ3dTptiLsPzlLyyHD5sOoHjkEZG1a+0ETxfrQWSQ5AEAfEHr31WvXl26d+8ut9xyi8TFxZl5eF988UW245o3b+5YjIBfVapkD9d8+WX7i3yvXiR60e7YMZFHHxVZvVqkdm1WYY00kjwAgC9o/TstiD58+HB5Rtd1z1IvL4g6eUD4JCXZid6ECXbx9DvvdDoiOOXECZHHHxdZvlykZk37/YDIIskDAPjCLl2TG4CjKlfWodMiY8bYPTd/+IPTESHSTp0SGThQZNEikRo1REqWdDqi6ESSBwDwhdo6HgiA47SGni6XP2qUnejdcovTESFSzpwRGTJEZP58kWrVREqVcjqi6MXqmgAAAChS+gVfa+fpyOkFC5yOBpFw9qzI8OEic+dq3VKRhASnI4puJHkAAAAoUrroig7V06F7Q4eKLFnidEQIJ03oR44Uee89keRkkTJlnI4IJHkAAAAIS6JXq5a9yuJTT4msXOl0RAgHXWznhRdE/u//RBITRcqVczoiKJI8AAAAhC3R0/poWi9twAC7Xhr8QxcwfvFFkddfF6lQQaR8eacjQhBJHgAAAMKe6KWmijz2mMimTU5HhKJK8CZNEpkyRaRsWZGKFZ2OCFmR5AEAfOXQoUNy1113SbVq1SQ2NlaKFSuWbQMQeTExInXrihw8aBfI3rLF6YhQ2ARv6lSRl1+2V9DUYZpwF0ooAAB8pUePHqYo+qBBg6Rq1aqmADoAdyR69eqJ7Nwp8vDD9jC/Ro2cjgoF8fbbIi+9ZBc514VW4D4keQAAX1mxYoX8+9//lpYtWzodCoALJHr9+9uJgvbwwTtmzbIXWtGBEZUrOx0N8sJwTQCAr9SsWVMsHUsEwJU0OdBEb/t2kX79RPbudToi5NeHH4qMGGEP19RaiHAvkjwAgK+MGzdOnnjiCfnuu++cDgVAHmJj7UTv66/tHr0DB5yOCBezcKHI00/bRc+rV3c6GlwMwzUBAL7SrVs3OXnypNSvX19KlSolcXFx2f7/yJEjjsUGIHuip0M1v/jC7tHToZtJSU5HhdwsWyYyeLDIzz+L1K5tr5gKdyPJAwD4ricPgDfoORgtr7Bxo70Yi/75shS/u6xaJTJwoF3UXn9XJHjeQJIHAPCV7t27Ox0CgBDEx9u9Q599JvLIIyJjx4qUK+d0VFDr1tlF7HUAhA6vJcHzDpI8AIDvpKeny5w5c+RrnfAjIpdeeqnccsst1MkDXKp4cV00SWTlSrtguq7emJDgdFTRTYfR6u/i8GF7WC0Jno8XXhkxYoRcccUVUqZMGUlOTpauXbvKtm3bwhcdAAAh2rFjhzRp0kTuvvtuef/998125513mkRvp67bXgATJ06UOnXqSIkSJaRdu3ayZs2aPI+dPHmyXHXVVVKhQgWzderU6YLHA7CVLClSo4bI0qV279HJk05HFL30/Jj2quqCOJrgaekLeEtIv7Jly5bJgw8+KJ9++qksXLhQzp49K9dff72cOHEifBECABCCv/71r2bRlb1798qGDRvMpsXR69ata/4vVDNnzpT+/fvLkCFDzH21aNFCOnfuLCkpKbkev3TpUrn99ttlyZIlsnr1alPSQdvK77//vgieHeBvpUrZKzfqSo660Mfp005HFH20tIWueLpnDwle1AzXnD9/frbr06dPNz1669evl1//+tdFHRsAACHTE5J6MrJiltUbKlWqJCNHjpRf/vKXId/fmDFj5L777pOePXua65MmTZKPPvpIpk6dako15PTWW29lu/6Pf/xDZs2aJYsWLTK9iwAurHRpkapV7ZpsujDLkCFORxQ9du+2Vzr99luR+vXtmobwpkLl5mlpaeYya0MKAICTihcvLsd0Gbgcjh8/LvG6wkMIzpw5Y05k6pDLoJiYGHNde+nyQ8s56MgX2kog/3Q+XuXKInPm2MW309Odjsj/UlPtHjztydNFVkjwonThlYyMDOnbt685K9qsWbM8jzt9+rTZgo4ePVrQhwR8Z9CgQTJ27Fjp16+fDB8+3OlwAF+46aab5P7775cpU6ZI27Ztzb7PPvtMHnjgAbP4SihSU1PNIi6V9dtmFnp969at+bqPxx9/XKpVq5YtUcxPO6ntrG4FpbcNBCwJBPRSPMGO1Y7ZC7wWr9diDq6wOXt2hsTGWhIX5/6YbRmSkGDJ8eNeiVdlyKFDlmzblmESvBzlRV3JS+/lrPFaln62S4Hlt10ocJKnc/M2b94sK1asuOhiLcOGDSvowwC+pgmezmnVS5I8oGi8+OKLpoxC+/btMwuhnzt3ziR448ePj2gsOkR0xowZZp6eLtoSSjt5+PBhOXXqVKG+CCQmpkmDBpZUrOiVSTV2zJZlFXawUYR4LV7vxawrbp44kSEpKWny/ff6BTnGE1/mq1f3TrzBmGvUSJOrrrIkNtYbMXvtvZyRkSFxcWly7pwlKSkFjze3kSpFluT17t1bPvzwQ1m+fLnU0GWQLmDAgAFmwnrWM5Q6CR2AjnvvZxK8rH8jAAqnfPnyMnfuXNm+fXtmb5uuttmgQYOQ7ysxMdGUXTh06FC2/Xq9SpUqF7zt6NGjTZL3ySefSPPmzUNuJ5OSkqRs2bJSmC8UqakB2bEjSapWdf8XoP+e6Q7Ivn1Jnvhy7LV4vRxzQkJA0tO9EbPGa1neiTcYc0ZGQA4e9FbMXnovZ2RkSPHiAYmNTZLk5ILHm9cJw0IleZopP/TQQzJ79mxzVlJXKsvP3AjdAJxPe+/owQPCo2HDhmYrDJ3D17p1a7NoipYNCjbUel1PeObl+eefl2effVYWLFggbdq0KVA7qXP/dCsM/aKpX3688AXIqzF7LV5FzOHntXgVMYeXdjhqvIFA4T7b83vb2FCHaL799tvmDKnWyjt48KDZX65cOSmpxU0AAHCA9oTpCZPSpUtftGdcV8sM9b51+KcmazrHb9y4cWaYdXC1TV0xs3r16mbYpRo1apQMHjzYtJdaWy/YViYkJJgNAIBwCynJe/nll81lx44ds+2fNm2a9OjRo2gjAwAgnzZu3GhWsAz+XJS6detm5sdp4qYJW8uWLU1JoeBiLFqDL+uZVW0rdVXO3//+99nuR+vsDR06tEhjAwCgSIZrAgDgNlp4PLefi4oOzcxreKZOX8jqu+++K/LHBwAgFO4fwAoAQAjuueeeXFcf0yGW+n8AAPgdSR4AwFdee+01+fnnn8/br/tef/11R2ICACCSClwnDwAAN9HSAzqtQDftycu6zLQWNJ83b54kJyc7GiMAAJFAkgcA8E19PK2ZpFujRo3O+3/dn1vRcQAA/IYkDwDgC7rgivbiXXPNNTJr1iypWLFitnp3tWvXlmrVqjkaIwAAkUCSBwDwhQ4dOpjLXbt2Sc2aNQtdSBwAAK8iyQMA+Ir22KmTJ0+aGnZasy6r5s2bOxQZAACRQZIHAPAVLVzes2dP+fjjj3P9f12EBQAAP2MsCwDAV/r27Ss//fSTfPbZZ1KyZEmZP3++KavQsGFD+eCDD5wODwCAsKMnDwDgK4sXL5a5c+dKmzZtzLw8Hb553XXXSdmyZWXEiBHSpUsXp0MEACCs6MkDAPjKiRMnMuvhVahQwQzfVJdddpls2LDB4egAAAg/kjwAgK9ccsklsm3bNvNzixYt5JVXXpHvv/9eJk2aJFWrVnU6PAAAwo7hmgAAX+nTp48cOHDA/DxkyBD5zW9+I2+99ZaplTd9+nSnwwMAIOxI8gAAvnLnnXdm/ty6dWvZvXu3bN26VWrVqiWJiYmOxgYAQCSQ5AEAfK1UqVJy+eWXOx0GAAARQ5IHAPC8/v375/vYMWPGhDUWAACcRpIHAPC8jRs35uu4QCAQ9lgAAHAaSR4AwPOWLFnidAgAALgGJRQAAAAAwEfoyQMA+MrVV199wWGZixcvjmg8AABEGkkeAMBXWrZsme362bNnZdOmTbJ582bp3r27Y3EBABApJHkAAF8ZO3ZsrvuHDh0qx48fj3g8AABEGnPyAABRUyR96tSpTocBAEDYkeQBAKLC6tWrpUSJEk6HAQBA2DFcEwDgK7/97W+zXbcsSw4cOCDr1q2TQYMGORYXAACRQpIHAPCVcuXKZbseExMjl1xyiTz99NNy/fXXOxYXAACRQpIHAPCVadOmOR0CAACOIskDAPiSDs/8+uuvzc9NmzaV1q1bOx0SAAARQZIHAPCVffv2ye233y4rV66U8uXLm30//fSTXHnllTJjxgypUaOG0yECABBWrK4JAPCVe++91xRA1168I0eOmE1/zsjIMP8HAIDf0ZMHAPCVZcuWyapVq8xiK0H680svvSRXXXWVo7EBABAJ9OQBAHylZs2apicvp/T0dKlWrZojMQEAEEkkeQAAX/nb3/4mDz30kFl4JUh/7tOnj4wePdrR2AAAiASGawIAfKVHjx5y8uRJadeuncTG2s3cuXPnzM/33HOP2YJ0vh4AAH5DkgcA8JVx48Y5HQIAAN5K8pYvX26Gwqxfv14OHDggs2fPlq5du4YnOgAAQtS9e/civ8+JEyeatu/gwYPSokULs4hL27Ztcz12y5YtMnjwYNNO7t69W8aOHSt9+/Yt8pgAACiyOXknTpwwDZw2eAAAuJEusjJr1ix55plnzKYnJHVfQcycOVP69+8vQ4YMkQ0bNpg2sHPnzpKSkpLr8TpUtF69ejJy5EipUqVKIZ8JAAAR6Mm74YYbzAYAgBvt2LFDbrzxRvn+++8zyyiMGDHCrLr50UcfSf369UO6vzFjxsh9990nPXv2NNcnTZpk7mfq1KnyxBNPnHf8FVdcYTaV2/8DABBurK4JAPCVv/71ryaR27t3r+l5023Pnj1St25d83+hOHPmjBl22alTp8x9MTEx5vrq1avDED0AAB5YeOX06dNmCzp69Gih73PQoEFmjkO/fv1k+PDhhb4/AP7F50V0FkP/9NNPpWLFipn7KlWqZIZP/vKXvwzpvlJTU80wz8qVK2fbr9e3bt0a1nYyIyPDbAWltw0ELAkE9FI8wY7VjtkLvBavIubw81q8ipgjF69l6Wd7we8nv+1C2JM8HSIzbNiwIr1P/cKmcwP1ki9tAC6Ez4voU7x4cTl27Nh5+48fPy7x8fHiNnm1k4cPH5ZTp04V6otAYmKaNGhgScWKXhm4Y8dsWZZHBht5LV5FzOHntXgVMYebfibHxaXJuXOWpKQUPN7c2jdHkrwBAwaYCetZz1DqvIjC0DPy+oUt6/0CQG74vIg+N910k9x///0yZcqUzBUwP/vsM3nggQfklltuCem+EhMTpVixYnLo0KFs+/V6US2qklc7mZSUJGXLli3UF4rU1IDs2JEkVau6/wvQf890B2TfviSxLPfH7LV4FTGHn9fiVcQcfvqZXLx4QGJjkyQ5ueDxlihRwh1Jnp5R1a0o6dl4zsgDyA8+L6LPiy++aMootG/fXuLi4jKLoWuCN378+JDuS3v+WrduLYsWLcosF6QNtV7v3bt3WNtJnfunW2FYVsB8+fHCFyCvxuy1eBUxh5/X4lXEHF7a4ajxBgKF+2zP721DTvJ0uIuuXBa0a9cu2bRpk5n7UKtWrVDvDgCAIlW+fHmZO3euaau+/vprs69JkybSoEGDAt2f9rJp0timTRvTM6jF1nUIcHC1zbvvvluqV69uhl0GF2v56quvMn/WVT61nUxISChwDAAAhCLkJG/dunVy9dVXZ14PDjHRBnD69Omh3h0AAEVCe9i0YPkHH3xgkqtrr73W1LYrWbJkoe63W7duZn6cFjjXYugtW7aU+fPnZy7Goit3Zj2zun//fmnVqlXm9dGjR5utQ4cOsnTp0kLFAgBAWJK8jh07/meCIwAA7vHss8/K0KFDTXkDTex0aKYWLNd6doWlQzPzGp6ZM3GrU6cO7SQAwFHuH8AKAEA+vP766/L3v/9dFixYIHPmzJF//vOf8tZbbxWqDAEAAF5EkgcA8AUdNnnjjTdmXtcePV15TYdPAgAQTUjyAAC+oCto5lxaWlfXPHv2rGMxAQDghLCXUAAAIBJ0HlyPHj2ylSPQYuJaH6906dKZ+95//32HIgQAIDJI8gAAvqCrPOd05513OhILAABOIskDAPjCtGnTnA4BAABXYE4eAAAAAPgISR4AAAAA+AhJHgAAAAD4CEkeAAAAAPgISR4AAAAA+AhJHgAAAAD4CEkeAAAAAPgISR4AAAAA+AhJHgAAAAD4CEkeAAAAAPgISR4AAAAA+AhJHgAAAAD4CEkeAAAAAPgISR4AAAAA+AhJHgAAAAD4CEkeAAAAAPgISR4AAAAA+AhJHgAAAAD4CEkeAAAAAPgISR4AAAAA+AhJHgAAAAD4CEkeAAAAAPgISR4AAAAA+AhJHgAAAAD4CEkeAAAAAPgISR4AAAAA+AhJHgAAAAD4CEkeAAAAAPgISR4AAAAA+AhJHgAAAABEe5I3ceJEqVOnjpQoUULatWsna9asKfrIAABwiVDbvXfffVcaN25sjr/ssstk3rx5EYsVAICQk7yZM2dK//79ZciQIbJhwwZp0aKFdO7cWVJSUsITIQAADgq13Vu1apXcfvvt0qtXL9m4caN07drVbJs3b4547ACA6BRykjdmzBi57777pGfPntK0aVOZNGmSlCpVSqZOnRqeCAEAcFCo7d748ePlN7/5jTz66KPSpEkTGT58uFx++eUyYcKEiMcOAIhOISV5Z86ckfXr10unTp3+ewcxMeb66tWrc73N6dOn5ejRo9k2eMOgQYMkISHBXAJANH5WFKTd0/1Zj1fa8xdqO5mRkVHoLRCwJBDI8NjmtZi9Fi8xEy8xBxyM17IK/9meH7EhtHWSmpoq6enpUrly5Wz79frWrVtzvc2IESNk2LBhoTwMXGLs2LFy4sQJc6lnogEg2j4rCtLuHTx4MNfjdX8o7eThw4fl1KlTBY5dvwgkJqZJ1aqWxMZ6Y501/RIUE5MmsbH6Rcj9MXstXkXM4ee1eBUxR0KG1KyZJufOWZKSUvB4jx07VvRJXkEMGDDAzGUI0jOUNWvWDPfDogj069fPfGnL+vsDgJz4rAhPO5mUlCRly5YtVJLXqlVAypdP8tBi2hlSsmRA6tXzSsxei1cRc/h5LV5FzOGXIQkJAWnZMkkqVSp4vLqgV5EneYmJiVKsWDE5dOhQtv16vUqVKrnepnjx4maD9+gZeb+dlQdQ9Pz8WVGQdk/3F0U7qcNCdSuMdu0CcvPNhb+fSNFRSCkpAUlO9kbMXotXEXP4eS1eRcyRi1cTvMLEm9/bhvQI8fHx0rp1a1m0aFG2M4V6vX379qFHCQCAixWk3dP9WY9XCxcupJ0EAERMyMM1dUhJ9+7dpU2bNtK2bVsZN26cmYuhq44BAOA3F2v37r77bqlevbqZW6f69OkjHTp0kBdeeEG6dOkiM2bMkHXr1smrr77q8DMBAESLkJO8bt26mcnggwcPNpPIW7ZsKfPnzz9vkjkAAH5wsXZvz5492YbPXHnllfL222/LU089JU8++aQ0bNhQ5syZI82aNXPwWQAAoknAsiwrkg+oE8rLlSsnaWlphZpQDgDwF9qHon0ddFipFmxPTk72xHwVL8bstXgVMYef1+JVxOydePPbRrj/FQEAAAAA5BtJHgAAAAD4SNjr5OUUHB2qXY0AAAQF24UIzyJwnaJqJ3VokBbN1ZpKXhjK5MWYvRavIubw81q8ipi9E29+28qIJ3nBKu0URAcA5NVO6HyDaEU7CQAobFsZ8YVXNIvdv3+/lClTRgKBQIEzWG389u7d65nJ+cQcfl6L14sxey1eRczeiVebI220qlWr5omzsm5uJ734PvJizF6LVxFz+HktXkXM/msrI96Tp8HUqFGjSO5LXyAv/FKzIubw81q8XozZa/EqYg6/oog3mnvwwtFOevF95MWYvRavIubw81q8ipj901ZG76lSAAAAAPAhkjwAAAAA8BFPJnnFixeXIUOGmEuvIObw81q8XozZa/EqYg4/r8UbLbz4e/FazF6LVxFz+HktXkXM/os34guvAAAAAADCx5M9eQAAAACA3JHkAQAAAICPkOQBAAAAgI+4NsmbOHGi1KlTR0qUKCHt2rWTNWvWXPD4d999Vxo3bmyOv+yyy2TevHni5pinT59uitxm3fR2kbJ8+XK5+eabTSFFfew5c+Zc9DZLly6Vyy+/3EwYbdCggXkOkRRqzBpvztdYt4MHD0Yk3hEjRsgVV1xhChonJydL165dZdu2bRe9nZPv5YLE7OR7+eWXX5bmzZtn1pxp3769fPzxx67+rAg1Zqc/K3IaOXKkiaFv376ufp2jBW1leNFWhp/X2kqvtZOKtjI620pXJnkzZ86U/v37mxVoNmzYIC1atJDOnTtLSkpKrsevWrVKbr/9dunVq5ds3LjR/MHptnnzZtfGrPRNe+DAgcxt9+7dEYv3xIkTJkZtbPNj165d0qVLF7n66qtl06ZN5k177733yoIFC8StMQfph2/W11k/lCNh2bJl8uCDD8qnn34qCxculLNnz8r1119vnkdenH4vFyRmJ9/LWjBaP0jXr18v69atk2uuuUZuvfVW2bJliytf34LE7PRnRVZr166VV155xTS8F+KG1zka0FaGH21l+HmtrfRaO6loK6O0rbRcqG3bttaDDz6YeT09Pd2qVq2aNWLEiFyP/+Mf/2h16dIl27527dpZ//M//2O5NeZp06ZZ5cqVs9xA3wazZ8++4DGPPfaYdemll2bb161bN6tz586WW2NesmSJOe7HH3+03CAlJcXEs2zZsjyPccN7OdSY3fReVhUqVLD+8Y9/eOL1zU/Mbnl9jx07ZjVs2NBauHCh1aFDB6tPnz55HuvW19lvaCsji7YyMrzWVnqxnVS0lf5vK13Xk3fmzBmTtXfq1ClzX0xMjLm+evXqXG+j+7Mer/TMYF7HuyFmdfz4caldu7bUrFnzomcnnOb0a1wYLVu2lKpVq8p1110nK1eudCyOtLQ0c1mxYkXPvM75idkt7+X09HSZMWOGOZuqwzq88PrmJ2a3vL565lp7KHK+fl54nf2IttKdnH6NC4O20v/tpKKtjJ620nVJXmpqqvllVq5cOdt+vZ7X+HDdH8rxboj5kksukalTp8rcuXPlzTfflIyMDLnyyitl37594kZ5vcZHjx6Vn3/+WdxIG6tJkybJrFmzzKZ/9B07djRDhCJNf786bOeXv/ylNGvWLM/jnH4vFyRmp9/LX375pSQkJJj5Lw888IDMnj1bmjZt6urXN5SYnX59lTau+nejc1Hywy2vs5/RVtJWFhXaSv+3k4q2MvraytgiuReETM9EZD0boW/EJk2amDG8w4cPdzQ2v9A/eN2yvsY7d+6UsWPHyhtvvBHxMzs6xnrFihXiFfmN2en3sv6Ode6Lnk197733pHv37mbORF4NgRuEErPTr+/evXulT58+Zu6Jk5PYEZ2cfv9HA9pK/7eTirYy+tpK1yV5iYmJUqxYMTl06FC2/Xq9SpUqud5G94dyvBtizikuLk5atWolO3bsEDfK6zXWSa4lS5YUr2jbtm3EG4/evXvLhx9+aFY804nEF+L0e7kgMTv9Xo6Pjzcr2KnWrVubCc/jx483H+xufX1Didnp11eH1+miGLpaYJD2xuh7Y8KECXL69Gnz+efG19nPaCtpK8OJttJf7aSirYy+ttJ1wzX1F6q/yEWLFmXu0y5XvZ7XOFzdn/V4pZn0hcbtOh1zTvpG0G5pHTbhRk6/xkVFzwhF6jXWOe/aCOjwgsWLF0vdunVd/zoXJGa3vZf1b08/TN34+hYkZqdf32uvvdY8nv7tBLc2bdrIHXfcYX7O2Wi5+XX2E9pK2spwoq30dzupaCujoK20XGjGjBlW8eLFrenTp1tfffWVdf/991vly5e3Dh48aP7/rrvusp544onM41euXGnFxsZao0ePtr7++mtryJAhVlxcnPXll1+6NuZhw4ZZCxYssHbu3GmtX7/e+tOf/mSVKFHC2rJlS8RW/9m4caPZ9G0wZswY8/Pu3bvN/2usGnPQt99+a5UqVcp69NFHzWs8ceJEq1ixYtb8+fMjEm9BYh47dqw1Z84ca/v27ea9oCscxcTEWJ988klE4v3LX/5iVnpaunSpdeDAgczt5MmTmce47b1ckJidfC9rHLqi2a5du6wvvvjCXA8EAta//vUvV76+BYnZ6c+K3ORcMcyNr3M0oK0MP9rK8PNaW+m1dlLRVkZnW+nKJE+99NJLVq1ataz4+Hiz5PKnn36a7UXr3r17tuPfeecdq1GjRuZ4Xb74o48+cnXMffv2zTy2cuXK1o033mht2LAhYrEGl0zOuQVj1EuNOedtWrZsaWKuV6+eWa42kkKNedSoUVb9+vXNH3nFihWtjh07WosXL45YvLnFqlvW181t7+WCxOzke/mee+6xateubR47KSnJuvbaazMbgNxidcNnRagxO/1ZkZ+Gy42vc7SgrQwv2srw81pb6bV2UtFWRmdbGdB/iqZPEAAAAADgNNfNyQMAAAAAFBxJHgAAAAD4CEkeAAAAAPgISR4AAAAA+AhJHgAAAAD4CEkeAAAAAPgISR4AAAAA+AhJHgAAAAD4CEkeAAAAHNWjRw/p2rWr02EAvhHrdAAAAADwr0AgcMH/HzJkiIwfP14sy4pYTIDfkeQBAAAgbA4cOJD588yZM2Xw4MGybdu2zH0JCQlmA1B0GK4JAACAsKlSpUrmVq5cOdOzl3WfJng5h2t27NhRHnroIenbt69UqFBBKleuLJMnT5YTJ05Iz549pUyZMtKgQQP5+OOPsz3W5s2b5YYbbjD3qbe56667JDU11YFnDTiLJA8AAACu89prr0liYqKsWbPGJHx/+ctf5A9/+INceeWVsmHDBrn++utNEnfy5Elz/E8//STXXHONtGrVStatWyfz58+XQ4cOyR//+EennwoQcSR5AAAAcJ0WLVrIU089JQ0bNpQBAwZIiRIlTNJ33333mX067POHH36QL774whw/YcIEk+A999xz0rhxY/Pz1KlTZcmSJfLNN984/XSAiGJOHgAAAFynefPmmT8XK1ZMKlWqJJdddlnmPh2OqVJSUszl559/bhK63Ob37dy5Uxo1ahSRuAE3IMkDAACA68TFxWW7rnP5su4LrtqZkZFhLo8fPy4333yzjBo16rz7qlq1atjjBdyEJA8AAACed/nll8usWbOkTp06EhvLV1xEN+bkAQAAwPMefPBBOXLkiNx+++2ydu1aM0RzwYIFZjXO9PR0p8MDIookDwAAAJ5XrVo1WblypUnodOVNnb+nJRjKly8vMTF85UV0CViWZTkdBAAAAACgaHBaAwAAAAB8hCQPAAAAAHyEJA8AAAAAfIQkDwAAAAB8hCQPAAAAAHyEJA8AAAAAfIQkDwAAAAB8hCQPAAAAAHyEJA8AAAAAfIQkDwAAAAB8hCQPAAAAAHyEJA8AAAAAxD/+HyNUCpTaeI8zAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 900x300 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "example_spikes = np.array(\n",
    "    [\n",
    "        [0, 1, 0, 0, 1],\n",
    "        [1, 0, 0, 1, 0],\n",
    "        [0, 0, 1, 0, 0],\n",
    "        [0, 1, 0, 0, 0],\n",
    "        [1, 0, 0, 0, 1],\n",
    "    ],\n",
    "    dtype=float,\n",
    ")\n",
    "example_time = np.arange(example_spikes.shape[0])\n",
    "\n",
    "fig, axes = plt.subplots(1, 2, figsize=(9, 3))\n",
    "visualize.raster_plot(example_time, example_spikes, ax=axes[0], markersize=5, show=False)\n",
    "visualize.population_activity(example_spikes, time=example_time, method=\"mean\", ax=axes[1], title=\"Population activity\")\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b395cb97",
   "metadata": {},
   "source": [
    "## 12. Spike Encoding Methods\n",
    "\n",
    "Spike encoders convert continuous values into spike trains. `RateEncoder` maps each input value to a firing rate in Hz, then samples Bernoulli spikes at each simulation step. With the default `dt = 1 ms`, a 100 Hz rate corresponds to a spike probability of about `0.1` per step.\n",
    "\n",
    "The example below uses enough time steps to make the sampled spike probability close to the expected probability, while the raster plot only shows the first part of the generated train.\n",
    "\n",
    "Full documentation: [Spike Encoding Methods](https://brainx.chaobrain.com/braintools/misc/spike_encoding.html)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "8818cd9c",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-24T08:32:20.097907Z",
     "iopub.status.busy": "2026-06-24T08:32:20.097907Z",
     "iopub.status.idle": "2026-06-24T08:32:20.454661Z",
     "shell.execute_reply": "2026-06-24T08:32:20.454661Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "analog values: [0.1 0.5 0.9]\n",
      "encoded spike shape: (1000, 3)\n",
      "expected spike probability per step: [0.01 0.05 0.09]\n",
      "observed spike probability over 1000 steps: [0.013      0.042      0.09500001]\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkwAAAEiCAYAAAALco10AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAANTVJREFUeJzt3QncTOX///GPnYiU7EuKsi9RQqVFJInqW9JCttIi0bfQN1SKNqWipH0jJRRKqSwpkSwp0iYkW1luSyHO7/G+Hv8z/5nb3PeZYeZeX8/HY9zmzJk517nOmXM+c12fc508nud5BgAAgDTlTfslAAAACAETAABAAAImAACAAARMAAAAAQiYAAAAAhAwAQAABCBgAgAACEDABAAAEICACQAAIAABE5DF3XvvvZYnT56EfuY555zjHhnp+uuvtxNOOCH0/LfffnPr9dhjj1l2pfXRemW0gwcPWp06dezBBx+MmP71119bs2bNrGjRoq5uly5dmpT9BxnvjDPOsLvuuiuzi5GrETDhsL3yyivuQOw/8ufPbxUqVHAnkPXr1x/WZ+7Zs8cd4GfPnp3w8iL3+fLLL93+tH37dstJxo8fb+vWrbNbb701NG3//v12xRVX2NatW+2JJ56w119/3apUqZLwZa9YscLVqQLeWGzYsMEGDBhg5557rh199NHuWBHt+63v/ujRo61Vq1ZWrlw5N2/Dhg3t2WeftQMHDkQNGh955BGrWrWqFS5c2OrVq+fqJVGeeeYZd4zLKvr37+/qZ+PGjZldlNxL95IDDsfLL7+s+xB6999/v/f66697zz//vNe9e3cvX7583kknneT9/fffcX/mli1b3GcOGTIkKWXOjlQXif6qtmjRwj0y0r59+7x//vkn9Hz16tVuvR599NGkLVOfrWVoWcmg9dF6ZbT69et7N9xwQ8S0lStXunXV9zDc/v37D+u7mJZ33nnHLWfWrFkxza/5NH/16tW9pk2bpvne5cuXe3ny5PFatmzpPfLII96YMWO8Sy+91M3fuXPnQ+YfMGCAe61nz57e2LFjvbZt27rn48ePT8h61q5dO8O/I+k5cOCAV7ZsWW/QoEGZXZRcixYmHLE2bdrYtddeaz169LAXXnjB/vvf/9ovv/xi77//fmYXDVlIgQIFrFChQpZVqcXin3/+ies9Wh+tV0ZasmSJLVu2zK688sqI6Zs3b3Z/jznmmIjpavlVC0yi1z1WjRo1sr/++st+/PFH69evX5rzlS1b1pYvX24zZ860O++802688UabNGmSde3a1V577TX7+eefQ/OqBXvEiBF2yy232NixY61nz542depUO+uss9x7o7VIZXd58+a1//znP64uPE+xITIaARMSTgctUdDk27dvnw0ePNgdPEuUKOFyLDTfrFmzQvOoif/44493/7/vvvtCXX1q/vf98MMP7qBx7LHHupNA48aN4wrMdKDt1q2blSlTxp3sateubS+99FLEPOou0HLffvttlyNSsWJFt6zzzz8/4qDtW7BggV100UVWsmRJt17qGnjyyScj5vnss8/c+up1ndDat29vK1euPOSz5s2bZ6eddppb3kknnWTPPfdcmuvyxhtvuPosUqSIq4+rrrrKddOkphOKPkvznX766fb555/HXF86eZ155pmuzMWKFbNTTjnF7r777kPqasKECW66Tnpax0suueSQsqTOYYpGJ4IbbrjBChYs6E6W8a5rOO03OnmKum38/cnvStL/1aX15ptvuv1A+8OMGTPca8qrUi7Qcccd55apZU+cODEwh8nvpv7iiy9ccKD9WfVx6aWX2pYtWyLeu2jRImvdurWVKlXKLUNl1L4ZZMqUKa5+zj777NA0laFFixbu/+qWUxn8HLVoOUzprftbb73l1lddYsWLF7e6deuG9metnz5f1MXm12l6Xej6HG2zIKoHlSU11Z2Ef1/ee+891wV58803R6zTTTfdZL///rvNnz8/3WWpW0uBmL7bWnd1Aeo76e8b2q7ff/+9zZkzJ7SO4Tl/6uK9/fbbrVKlSu791apVs4cfftgFntFy9NRFqu5RbWdtp++++y6u8vguuOACW7NmjctNQ8bLnwnLRA7nf8kVQPhSUlJc61OnTp3cr8GdO3faiy++6E4YCxcutAYNGriTi/IVdNDTQfKyyy5z71UAIjqANW/e3OVJKSdCJyIFNR06dLB33303dGBNy6ZNm1zipH+y0PI+/PBD6969uyufDoDhHnroIferTi1mO3bscPkS11xzjQuQwgOKiy++2B3g+vTp4wIGHdinTZvmnssnn3ziWuFOPPFEd/L6+++/7emnn3brsnjx4lAQoV/Xyt9QuTTfv//+a0OGDHHBXWoK5AYNGuRaGdSyp5OxPlMnUbVA+K0MqmP9UtfJX+v366+/umBGJzAd7NOj+ta6qf7vv/9+dyBXwKhgIFp5VK/Ks1BLx8iRI61ly5buwK6TRCzUKqCAQcHX5MmTrW3btnGta2raf9SqobwWnbB0QhY/KPcDWe1D2h/0ur8tFCConrS9FewriFCgoO3qlys9vXv3dvu/tp++D6oPLUPrJqojf1trX9Y6aL7wIDG9vCwlfIe3bGkb63sxbNgwu+2221zQHW2/CRdt3bU/6zuqHwcKAET7s7a59mfVuT7/qaeecgFyzZo13Tz+32Twc3b87Sfa7vr+p16ufhD4ryvQT8vll1/u9m9tJ623tofWfe3ate65tpde04+E//3vf+49fn0q10pBj358qd4rV67stsnAgQNdvpbeG04tQjreqTVMrXjat8477zz3ffc/M6g8PgWyou2h/C5ksMzuE0T2z2H65JNPXO7RunXrvIkTJ3rHH3+8V6hQIffc9++//3p79+6NeP+2bdu8MmXKeN26dYsph+n888/36tatG5EHc/DgQa9Zs2YuPyKI8qvKlSvn/fnnnxHTr7rqKq9EiRLenj17InIuatasGVHmJ5980k1XroW/TlWrVvWqVKni1iWcyuVr0KCBV7p0ae+vv/4KTVu2bJmXN2/eiNyMDh06eIULF/bWrFkTmrZixQqXExb+Vf3tt9/ctAcffDBimSpX/vz5Q9OVW6Plavnh66F8D31eUH7GE0884ebTNkmLX1cVKlTwUlJSQtPffvttN1115uvSpYurq2g5TMqz6dixo1ekSBHvo48+intdDyeHSdO1Db7//vtDXvP3BZ/qsk6dOt55550XMV3ro/VK/Z1QHk74PtC3b1+3Htu3b3fPJ0+e7Ob7+uuvvXhVrFjRu/zyy9PcFsoxCsqBS2vd+/Tp4xUvXtzt24nKYTqS92q/rVWrlvueaR/xKV/pxBNPPGT+3bt3u89XflNa9F2NJXcurRymoUOHekWLFvV+/PHHiOlaprbx2rVrI/Zv7dO///57aL4FCxa46don4imPr2DBgt5NN90U07xILLrkcMTUkqBfymqxUHeZfvmpm0zNy758+fK5bgRRs7Wu5FELirrU1MoSRPPrF7FaGfRr7c8//3QP5Uaoleqnn35K98o8nSPUCtWuXTv3f//9euj9akFKXQ41kftlDu9qVCuN/yt29erVruUmdSuH3wWiX5xqZVGX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r1/fRo8eHdf7Vq1aZRs2bAg9SpcunbQyAgAA5M/Mhbdp08Y94qUA6ZhjjklKmQAAAHJEDlODBg2sXLlydsEFF9gXX3yR7rx79+61lJSUiAcAAECODZgUJI0ZM8beffdd96hUqZKdc845tnjx4jTfM3z4cCtRokToofcAAADEI4/neZ4lyJ49e+yoo446rPcqeXvy5MnWoUOHuN7XokULq1y5sr3++utptjDp4VMLk4KmHTt2WPHixQ+rrAAAIHtTPKCGlFjjgbhbmM4//3xbv379IdMXLlzousoy2umnn24///xzmq8XKlTIVUT4AwAAIB5xB0yFCxe2evXq2YQJE9zzgwcP2r333mtnnnmmXXTRRZbRli5d6rrqAAAAssxVctOnT3fDAHTr1s3ee+89++2332zNmjU2bdo0a9WqVVyftWvXrojWodWrV7sA6Nhjj3XdbAMHDnStWa+99pp7feTIkVa1alWrXbu2/fPPP/bCCy/YZ599Zh9//HG8qwEAAJDcYQVuueUW+/333+3hhx+2/PnzuwElmzVrFvfnLFq0yM4999zQ8379+rm/Xbp0sVdeecWNsbR27drQ6/v27bM77rjDBVHKlVJL1yeffBLxGQAAAJme9L1t2zbr0aOHffrpp/boo4/anDlz3AjdjzzyiN18882W05K8AABAzhNvPBB3C1OdOnVct9iSJUvc3549e7p8JgVL6q7TAwAAIFcnfffq1cvdA07Bkq9jx462bNky12UGAACQ0xzROExKvNZVc9kJXXIAACAl2eMwaRiBoUOHWoUKFaxYsWL266+/uumDBg2yF1988fBKDQAAkIXFHTA98MAD7go2JXkXLFgwIrdJl/kDAABYbg+YNCbS2LFj7ZprrrF8+fKFptevX99++OGHRJcPAAAg+wVMGgOpWrVqUbvq9u/fn6hyAQAAZN+AqVatWvb5558fMn3ixInWsGHDRJULAAAgy4h7HKbBgwe7kbjV0qRWpUmTJtmqVatcV51ujwIAAGC5vYWpffv2NnXqVHdLkqJFi7oAauXKlW7aBRdckJxSAgAAZNdxmLIjxmECAAApyR6HCQAAILeJKYepZMmSlidPnpg+cOvWrUdaJgAAgOwXMI0cOTL0/7/++ssNXtm6dWtr2rSpmzZ//nz76KOP3GjfAAAAlttzmC6//HI799xz7dZbb42YPmrUKJcIPmXKFMvKyGECAAApyc5hUkvShRdeeMh0TVPABAAAkNPEHTAdd9xx9t577x0yXdP0GgAAgOX2gSvvu+8+69Gjh82ePduaNGnipi1YsMBmzJhhzz//fDLKCAAAkL0Cpuuvv95q1qxpTz31lBvlW/R83rx5oQAKAAAgJ2HgSgAAkOukxBkPxN3CJLqH3M8//2ybN292/w939tlnH85HAgAAZFlxB0xfffWVXX311bZmzRpL3TilwS0PHDiQyPIBAABkv4CpV69e1rhxY5s+fbqVK1cu5hHAAQAAck3A9NNPP9nEiROtWrVqySkRAABAdh+HSVfCKX8JAAAgt4i7hal37952xx132MaNG61u3bpWoECBiNfr1auXyPIBAABkv2EF8uY9tFFKeUz6mOyQ9M2wAgAAICXZwwqsXr36cMsGAACQLcUdMFWpUiU5JQEAAMjOAdP7779vbdq0cflK+n96LrnkkkSVDQAAIPvkMClvSUnepUuXjprDFPowcpgAAEBuzWEKv/1J6luhAAAA5HRxj8MEAACQ2xAwAQAABCBgAgAAyMoB09y5c61du3ZWvnx5lzA+ZcqUwPfMnj3bTj31VCtUqJC7n90rr7ySIWUFAAC5V6YGTLt377b69evb6NGjYx40s23btnbuuefa0qVL7fbbb7cePXrYRx99lPSyAgCA3CvugSv9K+V0A97NmzcfctXc2WefHfPnaGwnPWI1ZswYq1q1qo0YMcI9r1mzps2bN8+eeOIJa926dRxrAAAAkMSA6auvvrKrr77a1qxZ4+4fl5HjMM2fP99atmwZMU2BklqaAAAAskyXXK9evaxx48b23Xff2datW23btm2hh54nkwbPLFOmTMQ0PdfgU3///XfU9+zdu9e9Hv5IpkGDBlmxYsXcX8QvN9VfblrXINQFgBwx0ne4okWL2rJly1zCdUILkiePTZ482Tp06JDmPCeffLJ17drVBg4cGJr2wQcfuLymPXv2WJEiRQ55z7333mv33XffIdOTNdK3DvrKzVI97dq1K+Gfn9PlpvrLTesahLoAkNVH+o67halJkyYufykzlC1b1jZt2hQxTc+1otGCJVFwpcrwH+vWrUtqGfv27esO+v369UvqcnKq3FR/uWldg1AXAHJcC5Nage655x678847rW7duu6GvOHq1auXtBam/v37uxal5cuXh6Ypn0pdgTNmzIhpOdxLDgAApCTjXnLhLr/8cve3W7duEcGO4q54k77V9B7eWqVhAzRcwLHHHmuVK1d2rUPr16+31157LZQ/NWrUKLvrrrvc8j/77DN7++23bfr06fGuBgAAQMziDpgU1CTKokWL3JhKPr85vkuXLm5Ayg0bNtjatWtDr2tIAQVHar5/8sknrWLFivbCCy8wpAAAAMhaXXLZHV1yAAAgJdldcvLLL7/YyJEjbeXKle55rVq1rE+fPnbSSScdzscBAABkaXFfJafbkChAWrhwoUvw1mPBggVWu3ZtmzlzZnJKCQAAkJ265Bo2bOhyhh566KGI6QMGDLCPP/7YFi9ebFkZXXIAACAl2eMwqRuue/fuh0zXVWsrVqyI9+MAAACyvLgDpuOPP95d+p+appUuXTpR5QIAAMgy4k767tmzp91www3266+/WrNmzdy0L774wh5++GFG6QUAADlS3DlMml1XyI0YMcL++OMPN618+fJu5O/bbrvNDV6ZlZHDBAAAUpI5rMC///5r48aNc7cj0eCRO3fudNOPPvrowy8xAABATsphyp8/v7s9yT///BMKlAiWAABAThd30vfpp59uS5YsSU5pAAAAckLS980332x33HGH/f7779aoUSMrWrRoxOsayBIAACBXJ33nzXtoo5QSvfUx+nvgwAHLykj6BgAAKcm+l9zq1asPt2wAAADZUtwBU5UqVZJTEgAAgJwSML322mvpvt65c+cjKQ8AAED2z2EqWbJkxPP9+/fbnj17rGDBgnbUUUfZ1q1bLSsjhwkAAKQk++a727Zti3js2rXLVq1aZWeeeaaNHz/+cMsNAACQZcUdMEVTvXp1e+ihh6xPnz6J+DgAAICcFzD5o4D795YDAADI1Unf77//fsRzpUBt2LDBRo0aZc2bN09k2QAAALJnwNShQ4eI5xqs8vjjj7fzzjvPRowYkciyAQAAZM+A6eDBg8kpCQAAQE7LYdq3b5+7Ou7ff/9NbIkAAACye8CkMZe6devmxlyqXbu2rV271k3v3bu3u1IOAADAcnvANHDgQPv2229t9uzZVrhw4dD0li1b2oQJExJdPgAAgOyXwzRlyhQXGJ1xxhku4dun1qZffvkl0eUDAADIfi1MW7ZssdKlSx8yfffu3REBFAAAQK4NmBo3bmzTp08PPfeDpBdeeMGaNm2a2NIB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CEDABAAAEICACYdNNzUeMmQINzdOEOoz8ajTxKI+E4v6zF51muuSvgEAAOJFCxMAAEAAAiYAAIAABEwAAAABCJiQruHDh9tpp53mBvosXbq0dejQwVatWhUxzz///GO33HKLHXfccVasWDG7/PLLbdOmTZlW5uzkoYcecgOo3n777aFp1Gf81q9fb9dee62rsyJFiljdunVt0aJFodeVqjl48GArV66ce71ly5b2008/ZWqZs6oDBw7YoEGDrGrVqq6uTjrpJBs6dGjE7SOoz/TNnTvX2rVr5wZE1Pd7ypQpEa/HUn9bt261a665xo0ldMwxx1j37t1t165dlhvNTac+9+/fb/3793ff+aJFi7p5Onfu7AaoTnR9EjAhXXPmzHEn76+++spmzpzpds5WrVrZ7t27Q/P07dvXpk6dau+8846bXzvqZZddlqnlzg6+/vpre+6556xevXoR06nP+Gzbts2aN29uBQoUsA8//NBWrFhhI0aMsJIlS4bmeeSRR+ypp56yMWPG2IIFC9yBtXXr1i44RaSHH37Ynn32WRs1apStXLnSPVf9Pf3006F5qM/06fhYv359Gz16dNTXY6k/ndy///57d9ydNm2aCxpuuOEGy412p1Ofe/bsscWLF7sgX38nTZrkftRfcsklEfMlpD51lRwQq82bN+tnpjdnzhz3fPv27V6BAgW8d955JzTPypUr3Tzz58/PxJJmbTt37vSqV6/uzZw502vRooXXp08fN536jF///v29M888M83XDx486JUtW9Z79NFHQ9NUz4UKFfLGjx+fQaXMPtq2bet169YtYtpll13mXXPNNe7/1Gd89N2dPHly6Hks9bdixQr3vq+//jo0z4cffujlyZPHW79+vZebWar6jGbhwoVuvjVr1iS0PmlhQlx27Njh/h577LHu7zfffONandSk7KtRo4ZVrlzZ5s+fn2nlzOrUate2bduIehPqM37vv/++NW7c2K644grXbdywYUN7/vnnQ6+vXr3aNm7cGFGnuh1CkyZNqNMomjVrZp9++qn9+OOP7vmyZcts3rx51qZNG/ec+jwysdSf/qrbSPu1T/Pr1l5qkULweUpdd6rDRNZnrruXHI7sxsXKtVH3R506ddw0ffELFiwY2jF9ZcqUca/hUG+99ZZrOlaXXGrUZ/x+/fVX14XUr18/u/vuu1293nbbba4eu3TpEqo31WE46jS6AQMGuBuYKlDPly+fy2l68MEHXZeGUJ9HJpb6018F/+Hy58/vfqhSx+lTt6Zymjp16hS6l1yi6pOACXG1inz33Xfu1yYOj+6g3adPH9ePXrhw4cwuTo4J5PXLcdiwYe65Wpi0nyo/RAET4vP222/bm2++aePGjbPatWvb0qVL3Q8lJdNSn8jK1Dp/5ZVXuqR6/YhKNLrkEJNbb73VJcrNmjXLKlasGJpetmxZ27dvn23fvj1ifl3Vpddgh3S5bd682U499VT3C0cPJXYrAVT/169M6jM+utKoVq1aEdNq1qxpa9eudf/36y31lYbUaXR33nmna2W66qqr3JVH1113nbsQQVfMCvV5ZGKpP/3VcSLcv//+6670oo7TD5bWrFnjfpD6rUuJrE8CJqRLkbqCpcmTJ9tnn33mLjUO16hRI3d1knIefLpCQSerpk2bZkKJs7bzzz/fli9f7n61+w+1jqi7w/8/9RkfdRGnHupC+TdVqlRx/9c+q4NieJ2qy0m5C9SpRb3qSLkd4dQ1p5Y8oT6PTCz1p7/60aQfWD4df7UNlOuE6MGShmb45JNP3PAi4RJWn0eQrI5c4KabbvJKlCjhzZ4929uwYUPosWfPntA8vXr18ipXrux99tln3qJFi7ymTZu6B2ITfpWcUJ/x0RUx+fPn9x588EHvp59+8t58803vqKOO8t54443QPA899JB3zDHHeO+995737bffeu3bt/eqVq3q/f3335la9qyoS5cuXoUKFbxp06Z5q1ev9iZNmuSVKlXKu+uuu0LzUJ/BV8EuWbLEPXSaffzxx93//au2Yqm/Cy+80GvYsKG3YMECb968ee6q2k6dOnm50c506nPfvn3eJZdc4lWsWNFbunRpxHlq7969Ca1PAiakSztntMfLL78cmkdf8ptvvtkrWbKkO1FdeumlbmfF4QVM1Gf8pk6d6tWpU8ddml2jRg1v7NixEa/rUu5BgwZ5ZcqUcfOcf/753qpVqzKtvFlZSkqK2x8VtBcuXNg78cQTvf/9738RJx/qM32zZs2KetxUMBpr/f3111/uhF6sWDGvePHiXteuXV3gkBvNSqc+FdSndZ7S+xJZn3n0T+ztUQAAALkPOUwAAAABCJgAAAACEDABAAAEIGACAAAIQMAEAAAQgIAJAAAgAAETAABAAAImAACAAARMAAAAAQiYAGQp119/vXXo0CHTln/dddfZsGHDkvb5K1assIoVK9ru3buTtgwAicetUQBkmDx58qT7+pAhQ6xv3766x6Udc8wxltGWLVtm5513nq1Zs8aKFSuWtOX85z//sfr169ugQYOStgwAiUXABCDDbNy4MfT/CRMm2ODBg23VqlWhaQpSkhmoBOnRo4flz5/fxowZk9TlTJ8+3Xr27Glr1651ywOQ9dElByDDlC1bNvQoUaKEa3EKn6ZgKXWX3DnnnGO9e/e222+/3UqWLGllypSx559/3nVpde3a1Y4++mirVq2affjhhxHL+u6776xNmzbuM/UedbX9+eefaZbtwIEDNnHiRGvXrl3E9BNOOMEeeOAB69y5s/usKlWq2Pvvv29btmyx9u3bu2n16tWzRYsWhd6jFip9jspbtGhRq127tn3wwQeh1y+44ALbunWrzZkzJ0E1CyDZCJgAZHmvvvqqlSpVyhYuXOiCp5tuusmuuOIKa9asmS1evNhatWrlAqI9e/a4+bdv3+661ho2bOgCmRkzZtimTZvsyiuvTHMZ3377re3YscMaN258yGtPPPGENW/e3JYsWWJt27Z1y1IAde2117rln3TSSe6532B/yy232N69e23u3Lm2fPlye/jhhyNazgoWLGgNGjSwzz//PCn1BSDxCJgAZHnK97nnnnusevXqNnDgQCtcuLALoNStpWnq2vvrr79c0COjRo1ywZKSt2vUqOH+/9JLL9msWbPsxx9/jLoMtQrly5fPSpcufchrF110kd14442hZaWkpNhpp53mgraTTz7Z+vfvbytXrnRBmairTQFW3bp17cQTT7SLL77Yzj777IjPLF++vFsmgOyBgAlAlqcuL5+CmuOOO84FIz51ucnmzZtDydsKjvycKD0UOMkvv/wSdRl///23FSpUKGpievjy/WWlt/zbbrvNdeMpaFIiux/IhStSpEioRQxA1kfABCDLK1CgQMRzBTXh0/wg5+DBg+7vrl27XA7R0qVLIx4//fTTIS09PrVYKYDZt29fusv3l5Xe8pU8/uuvv7quO3XJqZvv6aefjvhM5TAdf/zxh1EbADIDAROAHOfUU0+177//3iVsKyE8/KEk7GiUU+SPk5QIlSpVsl69etmkSZPsjjvucInqqZPS1VUIIHsgYAKQ4yjpWi04nTp1sq+//tp1w3300UfuqjpdDReNWnsUaM2bN++Il68r+rS81atXu6RwdQ/WrFkz9Ppvv/1m69evt5YtWx7xsgBkDAImADmOEqq/+OILFxzpCjrlGymI0WCYefOmfdhTV9qbb755xMvXchW0KUi68MILXWL4M888E3p9/PjxrlwaogBA9sDAlQAQlvh9yimnuEE1mzZtmpRlKEdKV9uNGzfOJYUDyB5oYQKAsCvXXnvttXQHuDxSGnLg7rvvJlgCshlamAAAAALQwgQAABCAgAkAACAAARMAAEAAAiYAAIAABEwAAAABCJgAAAACEDABAAAEIGACAAAIQMAEAABg6fs/owMdKKBI3lcAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 600x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "brainstate.random.seed(1)\n",
    "\n",
    "analog_values = jnp.array([0.1, 0.5, 0.9])\n",
    "n_time = 1000\n",
    "rate_gain_hz = 100.0\n",
    "\n",
    "rate_encoder = braintools.RateEncoder(gain=rate_gain_hz, method=\"linear\")\n",
    "encoded_spikes = rate_encoder(analog_values, n_time=n_time)\n",
    "\n",
    "# RateEncoder uses rate_hz * dt_ms / 1000 as the Bernoulli probability.\n",
    "dt_ms = float(u.get_mantissa(brainstate.environ.get_dt()))\n",
    "expected_probability = analog_values * rate_gain_hz * dt_ms / 1000.0\n",
    "observed_probability = jnp.mean(encoded_spikes, axis=0)\n",
    "\n",
    "print(f\"analog values: {analog_values}\")\n",
    "print(f\"encoded spike shape: {encoded_spikes.shape}\")\n",
    "print(f\"expected spike probability per step: {expected_probability}\")\n",
    "print(f\"observed spike probability over {n_time} steps: {observed_probability}\")\n",
    "\n",
    "plot_steps = 120\n",
    "plt.figure(figsize=(6, 3))\n",
    "visualize.raster_plot(\n",
    "    np.arange(plot_steps),\n",
    "    np.asarray(encoded_spikes[:plot_steps]),\n",
    "    markersize=5,\n",
    "    show=False,\n",
    ")\n",
    "plt.title(f\"Rate-encoded spike trains (first {plot_steps} steps)\")\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "302e51fd",
   "metadata": {},
   "source": [
    "## 13. Mini Workflow\n",
    "\n",
    "A typical experiment uses several `braintools` modules together. This mini workflow builds a time-varying input protocol, expands it into a small presynaptic population, encodes the drive values as spike trains, sends the spikes through an all-to-all projection, and summarizes the resulting readout currents.\n",
    "\n",
    "The goal is to show how the utilities fit together in one compact pipeline: input generation, spike encoding, connectivity construction, simple synaptic filtering, metric calculation, and visualization. The same pattern can be extended to larger networks or replaced with more detailed neuron and synapse models when needed."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "c4d7e819",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-24T08:32:20.455665Z",
     "iopub.status.busy": "2026-06-24T08:32:20.455665Z",
     "iopub.status.idle": "2026-06-24T08:32:21.607553Z",
     "shell.execute_reply": "2026-06-24T08:32:21.607553Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "presynaptic drive:       (200, 16)\n",
      "presynaptic spikes:      (200, 16)\n",
      "synaptic trace:          (200, 16)\n",
      "weights:                 (16, 2)\n",
      "readout current:         (200, 2)\n",
      "observed pre rates:     min=5.0 Hz, mean=11.2 Hz, max=30.0 Hz\n",
      "population rate:        min=0.0 Hz, mean=11.7 Hz, max=28.1 Hz\n",
      "readout current ranges: unit 0 [-0.044, 0.255], unit 1 [-0.051, 0.118]\n",
      "excitatory-style weights nonnegative: True\n",
      "inhibitory-style weights nonpositive: True\n"
     ]
    }
   ],
   "source": [
    "brainstate.random.seed(3)\n",
    "\n",
    "dt = 1.0 * u.ms\n",
    "brainstate.environ.set(dt=dt)\n",
    "dt_ms = float(u.get_mantissa(dt))\n",
    "n_steps = 200\n",
    "\n",
    "# 1. Build a scalar input protocol with baseline, stimulus, and recovery phases.\n",
    "stimulus = input.step(\n",
    "    amplitudes=[0.1, 0.9, 0.25],\n",
    "    step_times=[0 * u.ms, 50 * u.ms, 150 * u.ms],\n",
    "    duration=n_steps * u.ms,\n",
    ")\n",
    "time_ms = np.arange(n_steps) * dt_ms\n",
    "stimulus_array = jnp.asarray(stimulus[:n_steps])\n",
    "\n",
    "# 2. Expand the scalar protocol into a small presynaptic population.\n",
    "# The first 12 units follow excitatory-style weights; the last 4 use inhibitory-style weights.\n",
    "n_stim_exc = 8\n",
    "n_context_exc = 4\n",
    "n_inh = 4\n",
    "n_pre = n_stim_exc + n_context_exc + n_inh\n",
    "\n",
    "stim_tuning = jnp.linspace(0.45, 1.0, n_stim_exc)\n",
    "context_tuning = jnp.linspace(0.45, 0.8, n_context_exc)\n",
    "inh_tuning = jnp.linspace(0.5, 0.9, n_inh)\n",
    "\n",
    "stim_exc_drive = stimulus_array[:, None] * stim_tuning[None, :]\n",
    "context_exc_drive = (0.35 + 0.10 * (1.0 - stimulus_array))[:, None] * context_tuning[None, :]\n",
    "inh_drive = (0.20 + 0.25 * stimulus_array)[:, None] * inh_tuning[None, :]\n",
    "presynaptic_drive = jnp.clip(\n",
    "    jnp.concatenate([stim_exc_drive, context_exc_drive, inh_drive], axis=1),\n",
    "    0.0,\n",
    "    1.0,\n",
    ")\n",
    "\n",
    "# 3. Encode drives into presynaptic spikes with a rate-based encoder.\n",
    "encoder = braintools.RateEncoder(gain=35.0, min_rate=2.0, method=\"linear\")\n",
    "presynaptic_spikes = encoder(presynaptic_drive, n_time=1)[0]\n",
    "\n",
    "# 4. Convert spikes into a simple exponential synaptic trace before readout.\n",
    "tau_syn_ms = 10.0\n",
    "alpha = float(np.exp(-dt_ms / tau_syn_ms))\n",
    "syn_state = jnp.zeros(n_pre, dtype=jnp.float32)\n",
    "synaptic_trace = []\n",
    "for spikes_t in presynaptic_spikes:\n",
    "    syn_state = alpha * syn_state + spikes_t\n",
    "    synaptic_trace.append(syn_state)\n",
    "synaptic_trace = jnp.stack(synaptic_trace)\n",
    "\n",
    "# 5. Create an all-to-all projection structure and apply two readout weight profiles.\n",
    "connection_mask = jnp.asarray(\n",
    "    conn.AllToAll(weight=init.Constant(1.0))(pre_size=n_pre, post_size=2).weight2dense()\n",
    ")\n",
    "\n",
    "stim_w0 = jnp.linspace(0.035, 0.075, n_stim_exc)\n",
    "stim_w1 = jnp.linspace(0.015, 0.035, n_stim_exc)\n",
    "context_w0 = jnp.linspace(0.015, 0.030, n_context_exc)\n",
    "context_w1 = jnp.linspace(0.035, 0.060, n_context_exc)\n",
    "inh_w0 = -jnp.linspace(0.025, 0.045, n_inh)\n",
    "inh_w1 = -jnp.linspace(0.030, 0.055, n_inh)\n",
    "\n",
    "readout_pattern = jnp.concatenate(\n",
    "    [\n",
    "        jnp.stack([stim_w0, stim_w1], axis=1),\n",
    "        jnp.stack([context_w0, context_w1], axis=1),\n",
    "        jnp.stack([inh_w0, inh_w1], axis=1),\n",
    "    ],\n",
    "    axis=0,\n",
    ")\n",
    "weights = connection_mask * readout_pattern\n",
    "readout_current = synaptic_trace @ weights\n",
    "\n",
    "# 6. Evaluate spike rates and readout currents.\n",
    "presynaptic_rate = metric.firing_rate(presynaptic_spikes, width=20 * u.ms, dt=dt)\n",
    "spike_counts = np.asarray(jnp.sum(presynaptic_spikes, axis=0))\n",
    "observed_rates_hz = spike_counts * 1000.0 / (n_steps * dt_ms)\n",
    "presynaptic_rate_np = np.asarray(presynaptic_rate)\n",
    "readout_current_np = np.asarray(readout_current)\n",
    "\n",
    "print(f\"presynaptic drive:       {presynaptic_drive.shape}\")\n",
    "print(f\"presynaptic spikes:      {presynaptic_spikes.shape}\")\n",
    "print(f\"synaptic trace:          {synaptic_trace.shape}\")\n",
    "print(f\"weights:                 {weights.shape}\")\n",
    "print(f\"readout current:         {readout_current.shape}\")\n",
    "print(\n",
    "    \"observed pre rates:     \"\n",
    "    f\"min={observed_rates_hz.min():.1f} Hz, \"\n",
    "    f\"mean={observed_rates_hz.mean():.1f} Hz, \"\n",
    "    f\"max={observed_rates_hz.max():.1f} Hz\"\n",
    ")\n",
    "print(\n",
    "    \"population rate:        \"\n",
    "    f\"min={presynaptic_rate_np.min():.1f} Hz, \"\n",
    "    f\"mean={presynaptic_rate_np.mean():.1f} Hz, \"\n",
    "    f\"max={presynaptic_rate_np.max():.1f} Hz\"\n",
    ")\n",
    "print(\n",
    "    \"readout current ranges: \"\n",
    "    f\"unit 0 [{readout_current_np[:, 0].min():.3f}, {readout_current_np[:, 0].max():.3f}], \"\n",
    "    f\"unit 1 [{readout_current_np[:, 1].min():.3f}, {readout_current_np[:, 1].max():.3f}]\"\n",
    ")\n",
    "print(f\"excitatory-style weights nonnegative: {bool(jnp.all(weights[: n_stim_exc + n_context_exc] >= 0.0))}\")\n",
    "print(f\"inhibitory-style weights nonpositive: {bool(jnp.all(weights[n_stim_exc + n_context_exc :] <= 0.0))}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "c22e34fc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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72PCxikiIiIiMh0GqURERERkOgxSy1lERASmTp2qPpINH5ei+Jg4xsfFMT4uRfExcYyPi2N8XMz/mARc4xQRERERmR8zqURERERkOgxSiYiIiMh0GKQSERERkekwSCUiIiIi02GQSkRERESmwyCViIiIiEyHQSoRERERmQ6DVCIiIiIyHQapRERERGQ6DFKJiIiIyHQYpBIRERGR6TBIJSIiIiLTYZBKRERERKbDIJWIiIiITCfggtSCggKkpqaqj0RERERkTqYKUv/55x+MGDEC9evXR1BQEH766Se7z996663qeuPp4osvduk+0tLSEBMToz4SERERkTmZKkhNT09Hly5dMGPGjGK/RoLS48ePW0/ffPNNhR4jEREREZW/UJjIJZdcok4liYiIQN26dSvsmIiIiIgowDOpzli6dClq166NNm3aYOLEiTh58mSJX5+VlaVqUI0nIn/w9NNPo0qVKuojERGRvwkqMGkHkdSb/vjjjxg5cqT1urlz5yIqKgrNmjXDvn378MQTT6gX6VWrViEkJMTh7TzzzDN49tlni1yfkpKCqlWrluvPQFSe5LkvJTKVK1fG2bNnvX04REREgZtJve6663DFFVegU6dOKnj97bff8N9//6nsanEmT56sAlL9dPjw4Qo9ZqLy8uCDD6oA9aGHHvL2oRAREQV2kFpY8+bNERsbi71795ZYwyoZU+OJyB88//zzKoP63HPPeftQiIiIPM6ng9QjR46omtR69ep5+1CIiIiIyF+7+yUrZMyKHjhwAJs2bUKNGjXUSWpLr776atXdLzWpjz76KFq2bInhw4d79biJiIiIyI8bp6S2dPDgwUWuv+WWWzBz5kxVh7px40acOXNGDfwfNmyYWvKsU6eO0/ch3f0yzJ+NU0RERETmZaogtSIwSCUiIiIyP5+uSSUiIiIi/8QglbyCg+grViA+3oH4M3sCHzciMgsu95NXcBB9xQrExzsQf2ZP4ONGRGbBTCp5BQfRV6xAfLwD8Wf2BD5uRGQWzKQSERERkekwk0pEREREpsMglYiIiIhMh0EqEREREZkOg1QiIiIiMh0GqURERERkOgxSiYgD3ImIyHQ4goqIOMCdiIhMh5lUIuIAdyIiMh1mUomIiIjIdJhJJSIiIiLTYZBKRERERKbDIJWIiIiITIdBKhERERGZDoNUIiIiIjIdBqlE5DO46QARUeDgCCoi8hncdICIKHAwk0pEPoObDhARBQ5mUomIiIjIdELdvQFZenv55ZexePFiJCYmIj8/3+7z+/fvhxnl5uaqExERERFVnNDQ0IoJUm+//XYsW7YMN910E+rVq4egoKAy39Y///yD1157DevXr8fx48fx448/YuTIkdbP//DDD5g1a5b6/KlTp7Bx40Z07dq1TPe1atUqtWxIRERERBXnggsuqJgg9ffff8f8+fNx3nnnwRNZ2S5duuC2227DqFGjHH5+wIABGD16NCZMmODWffXr14/L/UREREQm5XaQWr16ddSoUcMjB3PJJZeoU3EkWysOHjzokVSzs+lmIiIiIvKx7v7nn38eU6ZMQUZGhmeOiIiIiIgCnttB6htvvIE//vgDderUQadOndC9e3e7k7dlZWWpjn7jiYgCFzcEKBs+bkQa/i340AiqZ599tsTPT506tUy3Kw1YhRundLLc36xZM6cap5555hmHx8gRVESBiRsClA0fNyIN/xYqjttFmWUNQivK5MmT7QZ/Sya1UaNGXj0mIvLuhgBvvfUWNwRwER83Ig3/FnxwmL+MhdqxY4c636FDB3Tr1s29A/NQJrUwDvMnIiIiCoBMqgzwv+6667B06VJUq1ZNXXfmzBkMHjwYc+fORa1atZy+LUmb792713r5wIED2LRpk5oe0LhxYzUbNT4+HseOHVOf37Vrl/pYt25ddSIiIiIi/+B249SkSZOQlpaG7du3qyBSTtu2bVMZy/vuu8+l21q3bp3KwOpZWEmly3mZHiB++eUXdfmyyy5TlyU4lssy4J+IiIiI/Ifby/2ydP7XX3+hV69edtevXbsWw4YNU1lVM+FyPxEREVEAZFLz8/MRFhZW5Hq5Tj5HRERERFThQeqQIUNw//33W+tExdGjR1X324UXXujuzRMRERFxPmkAcnu5//Dhw7jiiitUTao+2kmu69ixo6ohbdiwIcyEy/1ERES+h/NJA4/b3f0SmG7YsEHVpe7cuVNd165dOwwdOtQTx0dERETE+aQByK1Mak5ODipVqqTGREnm1Bcwk0pERETk5zWp0hwl80vz8vI8d0REREREFPDcbpx68skn8cQTT6j5qEREREREpmickmH6skuULP03adJEFTQbSb2qmXC5n4iIiCgAGqdGjhzpmSMhIiIiIvJUJtXXMJNKRERE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Bw8eRFBQEDZt2oRAwiCViIjIx+Tm5WPPibPqfLt6VTGodS11PvlsNnZYglei0kjg+9NPP5X6dadOncINN9yAqlWrolq1ahg/fjzOntWef6YKUocMGYIzZ7S5bEapqanqc0RERFS+9ienIzsvX51vWzcag1ppQar4h13+XpGdnQ1/dcMNN2D79u1YtGgRfvvtN/zzzz+44447zBekLl261OEvIjMzE8uXL/fUcREREZETTVOSSW1cMwpNa0apy8t2c4vUinDBBRfg3nvvxQMPPIDY2FgMHz5cXb9t2zZccsklqFKlCurUqYObbroJycm2Nw4LFy7EgAEDVEayZs2auPzyy7Fv3z672167di26deuGyMhI9OzZExs3bixy/8uWLUPv3r0RERGBevXq4fHHH0dubq71802bNsX06dPtvqdr16545plnrJ8XV111lcqo6pcL27Fjhzrmjz/+GH369FHH/u6772Lu3Lk4duwYTBGkbtmyRZ1EXFyc9bKc5MGbPXs2GjRoUJ7HSkRERIYh/sFBQMvaVdT5C9rUVh//O3gaKRk5Xj2+QPH5558jPDwcK1euxKxZs9RKs6wqS4C5bt06FdydOHECo0ePtn5Peno6HnroIfX5xYsXIzg4WAWK+flaZlyW0SVwbd++PdavX6+Cyocfftjufo8ePYpLL70UvXr1wubNmzFz5kwVh73wwgtOH/t///2nPn766ac4fvy49XJhq1atUgG1BMu6oUOHquNes2YNypPWDugEib4l0paTo2X9SpUqqciaiIiIytdOSya1ea0qiAwLUecval8Hn/17EHn5BVi6OxFXdvXdxNGzv25H3LGKr61tX78qpo7o4PTXt2rVCq+++qr1sgSJEqC+9NJL1us++eQTNGrUCLt370br1q1x9dVX292GfL5WrVoqAdixY0fMmTNHBayzZ89WmdQOHTrgyJEjmDhxovV73n//fXWb7733norL2rZtq7Kajz32GKZMmaICyNLIfQoJQOvWrVvs1yUkJKB2be0NkC40NBQ1atRQnzNFkHrgwAEUFBSgefPmKg2t/3BC3kXIDxASov2hEBERUflnUmWpX9e7WQ1ER4YiLTMXi+JO+HSQKgHqmgOnYHY9evSwuyxZzb///lst9RcmS/oSpO7Zs0cFkpKFlDIAPYMaHx+vglRZXu/cubMKUHX9+vWzuy35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",
      "text/plain": [
       "<Figure size 700x700 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(4, 1, figsize=(7, 7), sharex=True)\n",
    "axes[0].plot(time_ms, np.asarray(stimulus_array), color=\"tab:blue\", linewidth=2)\n",
    "axes[0].set_ylabel(\"input drive\")\n",
    "\n",
    "visualize.raster_plot(\n",
    "    time_ms,\n",
    "    np.asarray(presynaptic_spikes),\n",
    "    ax=axes[1],\n",
    "    markersize=5,\n",
    "    xlabel=None,\n",
    "    ylabel=None,\n",
    "    show=False,\n",
    ")\n",
    "axes[1].axhline(n_stim_exc + n_context_exc - 0.5, color=\"0.75\", linewidth=0.8)\n",
    "axes[1].set_ylabel(\"pre neuron\")\n",
    "axes[1].set_yticks([0, n_stim_exc + n_context_exc - 1, n_pre - 1])\n",
    "axes[1].set_ylim(-0.5, n_pre - 0.5)\n",
    "\n",
    "axes[2].plot(time_ms, readout_current_np[:, 0], label=\"readout 0\", linewidth=1.8)\n",
    "axes[2].plot(time_ms, readout_current_np[:, 1], label=\"readout 1\", linewidth=1.8)\n",
    "axes[2].set_ylabel(\"synaptic current\")\n",
    "axes[2].legend(frameon=False, loc=\"upper right\")\n",
    "\n",
    "axes[3].plot(time_ms, presynaptic_rate_np, color=\"tab:red\", linewidth=1.8)\n",
    "axes[3].set_ylabel(\"pre rate (Hz)\")\n",
    "axes[3].set_xlabel(\"time (ms)\")\n",
    "\n",
    "for ax in axes:\n",
    "    ax.spines[\"top\"].set_visible(False)\n",
    "    ax.spines[\"right\"].set_visible(False)\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "167c9072",
   "metadata": {},
   "source": [
    "## 14. Summary\n",
    "\n",
    "This notebook introduced `braintools` as a practical utility layer for BrainX experiments. The examples showed how to generate cognitive-task trials, build synaptic connectivity, save and load pytrees, initialize parameters, create input currents, compute metrics, run optimization steps, apply numerical integration, use surrogate gradients, visualize neural activity, and encode continuous values as spike trains.\n",
    "\n",
    "The main idea is that `braintools` helps connect the pieces around a simulation: experiment design, data generation, model support utilities, analysis, and visualization. This page is an entry point for the package. For deeper explanations, extended examples, and complete API references, follow the section-level links above or open the full [braintools documentation](https://brainx.chaobrain.com/braintools/).\n"
   ]
  }
 ],
 "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.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
