From ff487b357832ebbc11073299434e33c081c2c8ac Mon Sep 17 00:00:00 2001 From: Omar Choudhry Date: Mon, 27 Jul 2026 00:05:00 +0100 Subject: [PATCH] Add dataset analysis and reproducibility guide --- .github/workflows/validate.yml | 26 + .gitignore | 40 + CITATION.cff | 27 +- README.md | 273 +- data/README.md | 80 + data/derived/all_trial_feature_statistics.csv | 30 + data/derived/analysis_manifest.json | 64 + data/derived/analysis_summary.json | 940 ++++ data/derived/classification_summary.json | 197 + data/derived/cohort_adjusted_models.csv | 9 + data/derived/cohort_specific_effects.csv | 22 + .../continuous_performance_validation.csv | 7 + .../coordination_control_time_correlation.csv | 4 + data/derived/cycle_duration_ci.csv | 10 + data/derived/feature_dictionary.csv | 31 + data/derived/kmeans_cluster_summary.csv | 4 + data/derived/kmeans_thresholds.json | 172 + data/derived/kmeans_validation.csv | 6 + .../metric_band_classification_comparison.csv | 9 + .../metric_band_classification_summary.json | 392 ++ data/derived/phase_fraction_ci.csv | 28 + data/derived/phase_kinematics_summary.csv | 8 + data/derived/phase_segment_summary.csv | 8 + .../position_smoothing_sensitivity.csv | 4 + data/derived/processing_sensitivity.csv | 5 + data/derived/trimming_rule_validation.csv | 5 + docs/ANALYSIS.md | 285 + docs/DATASET.md | 214 + docs/FEATURES.md | 241 + docs/PHASES.md | 74 + paper/figures/fig1_cohort_structure.png | Bin 0 -> 54496 bytes paper/figures/fig21_cohort_effect_forest.png | Bin 0 -> 106271 bytes ...ig23_continuous_performance_validation.png | Bin 0 -> 265783 bytes paper/figures/fig2_feature_effects.png | Bin 0 -> 134389 bytes paper/figures/fig3_phase_timing.png | Bin 0 -> 92115 bytes paper/figures/fig4_experience_links.png | Bin 0 -> 242866 bytes requirements.txt | 7 + scripts/build_scirep_analysis.py | 4987 +++++++++++++++++ scripts/validate_release.py | 126 + 39 files changed, 8236 insertions(+), 99 deletions(-) create mode 100644 .github/workflows/validate.yml create mode 100644 .gitignore create mode 100644 data/README.md create mode 100644 data/derived/all_trial_feature_statistics.csv create mode 100644 data/derived/analysis_manifest.json create mode 100644 data/derived/analysis_summary.json create mode 100644 data/derived/classification_summary.json create mode 100644 data/derived/cohort_adjusted_models.csv create mode 100644 data/derived/cohort_specific_effects.csv create mode 100644 data/derived/continuous_performance_validation.csv create mode 100644 data/derived/coordination_control_time_correlation.csv create mode 100644 data/derived/cycle_duration_ci.csv create mode 100644 data/derived/feature_dictionary.csv create mode 100644 data/derived/kmeans_cluster_summary.csv create mode 100644 data/derived/kmeans_thresholds.json create mode 100644 data/derived/kmeans_validation.csv create mode 100644 data/derived/metric_band_classification_comparison.csv create mode 100644 data/derived/metric_band_classification_summary.json create mode 100644 data/derived/phase_fraction_ci.csv create mode 100644 data/derived/phase_kinematics_summary.csv create mode 100644 data/derived/phase_segment_summary.csv create mode 100644 data/derived/position_smoothing_sensitivity.csv create mode 100644 data/derived/processing_sensitivity.csv create mode 100644 data/derived/trimming_rule_validation.csv create mode 100644 docs/ANALYSIS.md create mode 100644 docs/DATASET.md create mode 100644 docs/FEATURES.md create mode 100644 docs/PHASES.md create mode 100644 paper/figures/fig1_cohort_structure.png create mode 100644 paper/figures/fig21_cohort_effect_forest.png create mode 100644 paper/figures/fig23_continuous_performance_validation.png create mode 100644 paper/figures/fig2_feature_effects.png create mode 100644 paper/figures/fig3_phase_timing.png create mode 100644 paper/figures/fig4_experience_links.png create mode 100644 requirements.txt create mode 100644 scripts/build_scirep_analysis.py create mode 100644 scripts/validate_release.py diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml new file mode 100644 index 0000000..653d5c8 --- /dev/null +++ b/.github/workflows/validate.yml @@ -0,0 +1,26 @@ +name: Validate analysis release + +on: + push: + pull_request: + +permissions: + contents: read + +jobs: + validate: + runs-on: ubuntu-latest + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - name: Check Python syntax + run: python -m py_compile scripts/build_scirep_analysis.py scripts/validate_release.py + + - name: Validate aggregate results + run: python scripts/validate_release.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..334ff13 --- /dev/null +++ b/.gitignore @@ -0,0 +1,40 @@ +.DS_Store +.venv/ +__pycache__/ +*.py[cod] +paper/build/ +paper/tables/ + +# The full analysis creates participant-level intermediate files. Keep them +# local until the complete governed dataset release is public. +data/derived/* +!data/derived/analysis_manifest.json +!data/derived/analysis_summary.json +!data/derived/all_trial_feature_statistics.csv +!data/derived/classification_summary.json +!data/derived/cohort_adjusted_models.csv +!data/derived/cohort_specific_effects.csv +!data/derived/continuous_performance_validation.csv +!data/derived/coordination_control_time_correlation.csv +!data/derived/cycle_duration_ci.csv +!data/derived/feature_dictionary.csv +!data/derived/kmeans_cluster_summary.csv +!data/derived/kmeans_thresholds.json +!data/derived/kmeans_validation.csv +!data/derived/metric_band_classification_comparison.csv +!data/derived/metric_band_classification_summary.json +!data/derived/phase_fraction_ci.csv +!data/derived/phase_kinematics_summary.csv +!data/derived/phase_segment_summary.csv +!data/derived/position_smoothing_sensitivity.csv +!data/derived/processing_sensitivity.csv +!data/derived/trimming_rule_validation.csv + +# Keep a compact figure gallery in Git. The full figure set can be regenerated. +paper/figures/* +!paper/figures/fig1_cohort_structure.png +!paper/figures/fig2_feature_effects.png +!paper/figures/fig3_phase_timing.png +!paper/figures/fig4_experience_links.png +!paper/figures/fig21_cohort_effect_forest.png +!paper/figures/fig23_continuous_performance_validation.png diff --git a/CITATION.cff b/CITATION.cff index a45cd0e..3449205 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -14,9 +14,12 @@ authors: affiliation: University of Leeds identifiers: - type: doi - value: 10.5281/zenodo.20752650 + value: 10.5281/zenodo.20752651 description: Zenodo record for version 1.0 -repository: 'https://doi.org/10.5281/zenodo.20752650' + - type: doi + value: 10.5281/zenodo.20752650 + description: Zenodo concept DOI for all versions +repository: 'https://github.com/omariosc/LASK' repository-code: 'https://github.com/omariosc/LASK' url: 'https://doi.org/10.5281/zenodo.20752650' abstract: >- @@ -28,8 +31,9 @@ abstract: >- validation set (10 trials) and a 6-DoF out-of-distribution test set (8 trials), spanning surgeons from novice to expert. Each trial provides per-frame electromagnetic tool poses across roughly 91,000 frames, with - positions in millimetres, orientations as unit quaternions and calibrated jaw - angles for the 7-DoF cohorts, time-aligned to the video. Labelled keyframes + positions in millimetres, orientations as unit quaternions and relative + voltage-derived jaw-opening signals for the 7-DoF cohorts, time-aligned to + the video. Labelled keyframes supply instrument segmentation masks, tooltip and jaw keypoints, shaft-joint keypoints and per-component visibility flags for both instruments, alongside surgeon handedness and procedure experience. @@ -68,3 +72,18 @@ references: name: Frontiers Media SA year: 2025 doi: 10.3389/978-2-8325-5137-0 + - type: conference-paper + title: Bayesian Temporal Pose Networks for Uncertainty-Calibrated Laparoscopic Tool Pose Tracking + authors: + - given-names: Omar + family-names: Choudhry + - given-names: Sharib + family-names: Ali + - given-names: Chandra Shekhar + family-names: Biyani + - given-names: Dominic + family-names: Jones + conference: + name: Medical Image Computing and Computer Assisted Intervention (MICCAI) + year: 2026 + repository-code: https://github.com/omariosc/BTPN diff --git a/README.md b/README.md index 96ccd3b..c42bac9 100644 --- a/README.md +++ b/README.md @@ -1,89 +1,186 @@ # LASK -**LA**paroscopic **S**kill & **K**inematics: a peg-transfer box-trainer dataset -pairing endoscopic video with dense 7-DoF instrument kinematics and manual -instrument annotations. +**LA**paroscopic **S**kill and **K**inematics is a laparoscopic peg-transfer +dataset that pairs endoscopic video with electromagnetic measurements from two +instruments, manual instrument annotations, and participant experience +metadata. [![DOI](https://img.shields.io/badge/DOI-10.5281%2Fzenodo.20752650-1682D4?style=flat-square)](https://doi.org/10.5281/zenodo.20752650) -[![Download](https://img.shields.io/badge/Download-Zenodo-0F62FE?style=flat-square)](https://doi.org/10.5281/zenodo.20752650) -[![Licence](https://img.shields.io/badge/Licence-CC%20BY%204.0-orange?style=flat-square)](https://creativecommons.org/licenses/by/4.0/) -[![Version](https://img.shields.io/badge/Version-1.0-informational?style=flat-square)](https://doi.org/10.5281/zenodo.20752650) -[![Trials](https://img.shields.io/badge/Trials-37%20annotated-1f4e79?style=flat-square)](#what-is-in-the-dataset) -[![Frames](https://img.shields.io/badge/Frames-~91,000-1f4e79?style=flat-square)](#what-is-in-the-dataset) -[![Paper](https://img.shields.io/badge/Paper-MIUA%202025-548235?style=flat-square)](https://doi.org/10.3389/978-2-8325-5137-0) - -> **The dataset is hosted on Zenodo:** -> **[https://doi.org/10.5281/zenodo.20752650](https://doi.org/10.5281/zenodo.20752650)** -> -> This repository is its landing page. Zenodo holds the archived, versioned, -> citable release. - ---- - -## Why it exists - -Accurate perception of surgical instruments underpins automated skill assessment -and computer-assisted training in minimally invasive surgery, but public -video-kinematic datasets are scarce, especially for non-in-vivo tasks. LASK -synchronises endoscopic video with ground-truth kinematics for **two graspers -tracked continuously**, so instrument detection, pose estimation and skill -classification can all be benchmarked against the same trials. - -## What is in the dataset - -**37 annotated trials**, arranged as a cross-cohort benchmark: - -| Split | Cohort | Trials | Purpose | -|:--|:--|--:|:--| -| Train | 7-DoF | 19 | In-distribution training | -| Validation | 7-DoF | 10 | In-distribution validation | -| Test | 6-DoF | 8 | Out-of-distribution generalisation | - -Spanning surgeons from novice to expert. - -**Per-frame kinematics**, roughly 91,000 frames, time-aligned to the video: - -- Electromagnetic tool poses: positions in millimetres, orientations as unit quaternions -- Calibrated jaw angles for the 7-DoF cohorts -- Both instruments tracked throughout - -**Manual annotations** on labelled keyframes, for both instruments: - -- Instrument segmentation masks -- Tooltip and jaw (left/right) keypoints -- Shaft-joint keypoints -- Per-component visibility flags - -**Surgeon metadata**: handedness (left, right or both) and procedure experience, -both lifetime and over the last 12 months. +[![Release](https://img.shields.io/badge/Public_release-37_recordings-1f4e79?style=flat-square)](https://zenodo.org/records/20752651) +[![Analysis](https://img.shields.io/badge/Analysis-115_recordings-548235?style=flat-square)](docs/ANALYSIS.md) +[![Validation](https://github.com/omariosc/LASK/actions/workflows/validate.yml/badge.svg)](https://github.com/omariosc/LASK/actions/workflows/validate.yml) +[![Licence](https://img.shields.io/badge/Licence-CC_BY_4.0-orange?style=flat-square)](LICENSE) -## What it supports - -- Multi-class instrument detection and segmentation -- Instrument tracking through occlusion and clutter -- 6-DoF and 7-DoF pose estimation from video alone -- Surgical skill classification -- Cross-configuration generalisation, via the 6-DoF versus 7-DoF split +> **Release status** +> +> [Zenodo version 1.0](https://zenodo.org/records/20752651) contains 37 +> recordings. The complete 115-recording collection used by the quantitative +> analysis will be added to the same +> [concept DOI](https://doi.org/10.5281/zenodo.20752650). This repository +> already provides the analysis code, aggregate results, feature definitions, +> and representative figures. It does not expose participant-level data from +> recordings that have not yet been released. + +## Start here + +- [Dataset guide](docs/DATASET.md) +- [Quantitative analysis](docs/ANALYSIS.md) +- [Motion feature definitions](docs/FEATURES.md) +- [Phase annotation protocol](docs/PHASES.md) +- [Analysis script](scripts/build_scirep_analysis.py) +- [Aggregate result tables](data/derived) +- [Representative figures](paper/figures) + +## Collection at a glance + +The three cohorts used different collection settings. Raw measurements should +therefore be interpreted within cohort or with cohort included explicitly in +the statistical model. + +| Cohort | Collection | Instrument channels | Frame rate | Public v1.0 | Complete collection | +|:--|:--|:--|--:|--:|--:| +| Paediatric | British Association of Paediatric Endoscopic Surgeons meeting, November 2024 | Position, orientation, relative jaw opening | 13 frames/s | 10 | 30 | +| Urology 1 | Urology boot camp, October 2023 | Position and orientation | 26 frames/s | 8 | 24 | +| Urology 2 | Urology boot camp, October 2024 | Position, orientation, relative jaw opening | 13 frames/s | 19 | 61 | +| **Total** | | | | **37** | **115** | + +The public release is organised as Urology 2 training data, Paediatric +validation data, and Urology 1 testing data. The names `7DOF2024`, +`BAPES2024`, and `6DOF2023` are retained in files for compatibility. + +## What each recording contains + +- Endoscopic video of a complete peg-transfer attempt. +- Three-dimensional tool position in millimetres for both instruments. +- Tool orientation as a unit quaternion for both instruments. +- A relative jaw-opening signal in the two seven-channel cohorts. This is a + per-recording voltage-derived opening fraction, not an absolute jaw angle. +- Manual masks and instrument landmarks on selected video frames. +- Self-reported handedness and laparoscopic procedure experience where + collected. +- Dense action-phase labels for the currently annotated subset. + +The electromagnetic sensor is mounted near the instrument base and calibrated +to estimate tool-tip position. The complete data structure and coordinate +conventions are described in the [dataset guide](docs/DATASET.md). + +## Quantitative analysis + +The companion analysis keeps four denominators separate. + +| Analysis unit | Recordings | Study identifiers | Purpose | +|:--|--:|--:|:--| +| Complete inventory | 115 | 111 | Describe every available recording | +| Primary motion set | 107 | 107 | Motion inference without repeated identifiers | +| Phase inventory | 38 | 37 | Describe every densely annotated recording | +| Primary phase set | 34 | 34 | Phase comparisons without repeated identifiers | + +The 38 phase-labelled recordings contain 425 placement-complete transfer +cycles. The primary phase set contains 383 cycles. + +The main findings are: + +- No novice, intermediate, and expert procedure-count comparison remained + significant after correction across 29 motion features. +- Eight features had modest within-cohort associations with lifetime procedure + volume. Longer experience was associated with shorter analysed duration, + lower normalised jerk, fewer speed peaks, shorter Tool 1 path length, faster + Tool 2 movement, and stronger bimanual correlation. +- Cohort accounted for 88% and 92% of the variation in Tool 1 and Tool 2 speed, + respectively. This shows why unadjusted pooling across collection settings is + misleading. +- Data-derived lower, middle, and upper motion-score bands had negligible + agreement with procedure-count groups (adjusted Rand index 0.019). These are + descriptive motion strata, not clinical skill grades. +- Models recovered the motion-score rule with high accuracy because the target + was calculated from the same motion domains. This is a software consistency + check and must not be interpreted as independent skill prediction. + +Full methods, confidence intervals, corrected probability values, sensitivity +analyses, and limitations are provided in the +[analysis guide](docs/ANALYSIS.md). + +## Representative results + +### Procedure experience and motion + +![Within-cohort experience links](paper/figures/fig4_experience_links.png) + +The same experience measure can have different motion relationships in each +cohort. The top row shows bimanual correlation across all 107 primary +recordings. The lower row uses the phase-labelled subset to show mean cycle +duration. Corrected all-recording results are available in +[`all_trial_feature_statistics.csv`](data/derived/all_trial_feature_statistics.csv). + +### Why cohort adjustment matters + +![Cohort and procedure effects](paper/figures/fig21_cohort_effect_forest.png) + +Each colour shows the expert-minus-novice effect estimated within one cohort. +The wide and sometimes inconsistent intervals show why a pooled effect can +hide acquisition-specific uncertainty. The analysis therefore avoids treating +the three cohorts as if their coordinate systems and equipment were +interchangeable. + +### Continuous score checks + +![Continuous motion-score validation](paper/figures/fig23_continuous_performance_validation.png) + +The coordination and control score is interpreted continuously. Duration and +task efficiency are shown as contextual measurements rather than external +clinical validation. -## Getting the data +Additional examples include the +[cohort inventory](paper/figures/fig1_cohort_structure.png) and +[phase timing analysis](paper/figures/fig3_phase_timing.png). + +## Reproducing the analysis -Download from the Zenodo record: **[10.5281/zenodo.20752650](https://doi.org/10.5281/zenodo.20752650)** +Create an environment and install the recorded package versions: + +```bash +python3 -m venv .venv +source .venv/bin/activate +python -m pip install -r requirements.txt +``` -Released under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), so it -may be used commercially and redistributed provided the dataset is credited. +The script uses the sibling `BTPN-MT` and `AI-ELT` paths by default. Other +locations can be supplied explicitly: -## Work using LASK +```bash +export LASK_PHASE_CACHE=/path/to/phase_cache +export LASK_AI_ELT_ROOT=/path/to/AI-ELT +export LASK_ORIGIN_MOTION=/path/to/per_recording_kinematic_json +python scripts/build_scirep_analysis.py +``` -| Work | Venue | What it did | -|:--|:--|:--| -| [7-DoF Laparoscopic Peg Transfer Dataset for Surgical Skill Assessment](https://doi.org/10.3389/978-2-8325-5137-0) | MIUA 2025 | Introduced the dataset. Won Best Presentation at the Doctoral Consortium | -| [Real-Time Tool Detection in Laparoscopic Datasets for Surgical Training in Low-Resource Settings](https://doi.org/10.1049/htl2.70045) | *Healthcare Technology Letters* **12**(1) | Real-time detection on low-cost embedded devices | -| [Bayesian Temporal Pose Networks](https://github.com/omariosc/BTPN) | MICCAI 2026 | Uncertainty-calibrated 7-DoF vision-only pose tracking | +Expected inputs and their schemas are listed in +[`data/README.md`](data/README.md). The current Zenodo release does not yet +contain every cache needed to regenerate the 115-recording paper analysis. +Until the staged release is expanded, the repository provides the aggregate +outputs and file hashes produced by the complete internal collection. + +## Interpretation boundaries + +Procedure volume is an experience measure, not a direct assessment of +competence. The motion-score bands are relative partitions of two calculated +motion domains. They are not scores from the Objective Structured Assessment +of Technical Skills, Global Operative Assessment of Laparoscopic Skills, +Global Evaluative Assessment of Robotic Skills, McGill Inanimate System for +Training and Evaluation of Laparoscopic Skills, or Fundamentals of +Laparoscopic Surgery. + +One trained researcher annotated the action phases. Participant experience +metadata were not visible during annotation. Differences in apparent +confidence and fluency could still be perceived from the videos, but informal +impressions of skill were not recorded and were not used to define phase +labels. Independent phase annotation and expert rating remain planned +validation work. ## Citation -Please cite the dataset by its DOI. Machine-readable metadata is in -[`CITATION.cff`](CITATION.cff). +Please cite the dataset using the concept DOI so that the citation resolves to +the latest release: ```bibtex @dataset{Choudhry2026LASK, @@ -91,32 +188,18 @@ Please cite the dataset by its DOI. Machine-readable metadata is in author = {Choudhry, Omar and Jones, Dominic}, year = {2026}, publisher = {Zenodo}, - version = {1.0}, doi = {10.5281/zenodo.20752650}, url = {https://doi.org/10.5281/zenodo.20752650} } ``` -If you use the dataset for skill assessment, please also cite the paper that -introduced it: - -```bibtex -@inproceedings{Choudhry2025PegTransfer, - title = {7-DoF Laparoscopic Peg Transfer Dataset for Surgical Skill Assessment}, - author = {Choudhry, Omar and Ali, Sharib and Rajasundaram, Ramanan and - Biyani, Chandra Shekhar and Jones, Dominic}, - booktitle = {Medical Image Understanding and Analysis (MIUA)}, - publisher = {Frontiers Media SA}, - year = {2025}, - doi = {10.3389/978-2-8325-5137-0} -} -``` - -## Licence - -Dataset and the contents of this repository: [CC BY 4.0](LICENSE). +The original dataset paper and related work are listed in +[`CITATION.cff`](CITATION.cff). -## Contact +## Licence and contact -[Omar Choudhry](https://omarchoudhry.co.uk), School of Computing, University of -Leeds. Open an issue here with questions about the dataset. +The dataset and repository contents are released under the +[Creative Commons Attribution 4.0 licence](LICENSE). For questions, open a +GitHub issue or contact +[Omar Choudhry](https://omarchoudhry.co.uk), School of Computing, +University of Leeds. diff --git a/data/README.md b/data/README.md new file mode 100644 index 0000000..fbb2351 --- /dev/null +++ b/data/README.md @@ -0,0 +1,80 @@ +# Analysis data + +## Public contents + +`derived/` contains aggregate tables and machine-readable summaries generated +from the complete collection. These files support review of the reported +statistics without exposing participant-level rows that are not yet available +in the staged Zenodo release. + +Important files: + +| File | Contents | +|:--|:--| +| `analysis_manifest.json` | Software versions, random seeds, input hashes, and portable input locations | +| `analysis_summary.json` | Main denominators, model summaries, clustering diagnostics, and sensitivity checks | +| `all_trial_feature_statistics.csv` | Effect sizes, confidence intervals, continuous correlations, and corrected probabilities for 29 features | +| `cohort_specific_effects.csv` | Cohort-specific novice-versus-expert estimates | +| `cohort_adjusted_models.csv` | Cohort-adjusted procedure-volume models | +| `feature_dictionary.csv` | Feature labels, interpretation, direction, domain, and availability | +| `classification_summary.json` | Procedure-group classification checks | +| `metric_band_classification_summary.json` | Procedure-based targets and circular motion-band reconstruction checks | +| `kmeans_cluster_summary.csv` | Descriptive motion-score band sizes and centres | +| `kmeans_validation.csv` | Internal indices for alternative values of `k` | +| `processing_sensitivity.csv` | Position and orientation processing sensitivity | +| `trimming_rule_validation.csv` | Automatic versus labelled task-boundary agreement | +| `phase_kinematics_summary.csv` | Aggregate phase-specific duration, speed, and path-rate summaries | + +## Inputs required by the full script + +The complete analysis entry point expects two roots. + +### Phase cache + +Set `LASK_PHASE_CACHE` to a directory containing: + +| File | Minimum fields | +|:--|:--| +| `canonical_trials.csv` | `dataset`, `trial_name`, `trial_number`, `total_procedures`, `skill_category`, inclusion flags | +| `trials.parquet` | Recording identifiers, frame count, duration, cycle count, phase fractions, procedure metadata | +| `cycles.parquet` | Recording identifier, cycle index, duration, transitions, and phase fractions | +| `frames.parquet` | Recording identifier, frame index, phase labels, cycle index, and tool-specific labels | + +### AI-ELT root + +Set `LASK_AI_ELT_ROOT` to the AI-ELT project root containing: + +```text +outputs/ +├── motion/ +│ └── combined_motion_metrics.csv +├── papers/paper1/results/ +│ └── extended_features_cache_trimmed.csv +└── ssl/origin/origin_data/ORIGIN_ALL/ + └── .json +``` + +The per-recording JSON files contain a dense `features` matrix. Its first +14 columns are: + +```text +tool1 x, y, z, qw, qx, qy, qz, +tool2 x, y, z, qw, qx, qy, qz +``` + +`LASK_ORIGIN_MOTION` can override that JSON directory. + +## Output policy + +The full script also writes participant-level intermediates. These remain +ignored by Git until the corresponding recordings and metadata are released +through the governed Zenodo record. Aggregate tables are tracked. + +When the Zenodo release is expanded, the release process should include: + +1. an analysis-ready manifest mapping public trial names to analysis keys; +2. the complete phase cache or a deterministic builder; +3. a converter from released kinematic CSV files to the per-recording analysis + input; +4. checksums matching `analysis_manifest.json`; +5. a rerun of the complete analysis from a clean environment. diff --git a/data/derived/all_trial_feature_statistics.csv b/data/derived/all_trial_feature_statistics.csv new file mode 100644 index 0000000..ce1656b --- /dev/null +++ b/data/derived/all_trial_feature_statistics.csv @@ -0,0 +1,30 @@ +feature,label,cliffs_delta_novice_expert,delta_ci_low,delta_ci_high,kruskal_h,kruskal_p,spearman_rho_procedures,spearman_p,spearman_ci_low,spearman_ci_high,spearman_meta_i2,n_cohorts,n_nonmissing,kruskal_q,spearman_q +bimanual_correlation,Bimanual correlation,-0.44337811900191937,-0.6813819577735125,-0.1746641074856046,11.583733754844957,0.07192611507002791,0.26519610813065986,0.007154035304095336,0.07356633757928907,0.43794014383705293,59.69385918068588,3,107,0.3170324957516792,0.025933377977345594 +tool2_avg_speed,Tool 2 speed,-0.43953934740882916,-0.6852207293666027,-0.16314779270633398,9.446343678317177,0.14998807706400527,0.26545918253608347,0.007094210430320777,0.07384779717900485,0.4381688360883283,0.0,3,107,0.3170324957516792,0.025933377977345594 +tool1_avg_speed,Tool 1 speed,-0.3666026871401152,-0.6314779270633397,-0.08253358925143954,10.070936294222903,0.12169634914428706,0.20642377607265003,0.0381460925868868,0.011442656610917675,0.3862823505464995,0.0,3,107,0.3170324957516792,0.11062366850197172 +tool2_range_z,Tool 2 depth range,-0.362763915547025,-0.6353166986564299,-0.05566218809980806,8.038309445980472,0.23531007622449016,0.23875854482084943,0.015948005812675872,0.04543599067993563,0.4148432170028269,0.0,3,107,0.45493281403401425,0.051388018729733365 +tool2_working_volume,Tool 2 working volume,-0.2629558541266795,-0.5470249520153551,0.02111324376199616,11.752049475787643,0.06773444765157813,0.19246671234055343,0.05368284045721828,-0.0030923734558430975,0.3738467701508323,0.0,3,107,0.3170324957516792,0.12973353110494418 +tool2_active_time_ratio,Tool 2 active time,-0.236084452975048,-0.5124760076775432,0.0710172744721689,3.852667833233512,0.6966064736925249,0.17384877612433292,0.08209198970146667,-0.022353502034510433,0.3571562667897536,0.0,3,107,0.8417328223784676,0.18312828471865641 +tool1_range_z,Tool 1 depth range,-0.2053742802303263,-0.4779270633397313,0.0671785028790787,11.39277866522508,0.07696966614726616,0.0024388652860445384,0.9807380796990711,-0.19309593792515908,0.19778735062844746,78.79217874757137,3,107,0.3170324957516792,0.9807380796990711 +tool2_working_area_xy,Tool 2 working area,-0.16314779270633398,-0.4473128598848368,0.1324376199616123,12.920231023058719,0.044320318949920945,0.15332898025471015,0.1260303123915256,-0.04341479499768882,0.3386241785150563,54.01057825144936,3,107,0.3170324957516792,0.24365860395694947 +simultaneous_motion_ratio,Simultaneous motion,-0.15547024952015356,-0.43570057581573896,0.1325335892514399,2.352682271610704,0.8845768427286301,0.14830662457394425,0.13912187580250768,-0.04854318415091862,0.33406632214142973,0.0,3,107,0.9866434015050106,0.25215839989204514 +tool1_angular_velocity_cv,Tool 1 angular velocity variability,-0.11708253358925144,-0.4165067178502879,0.1746641074856046,5.405935780460767,0.4928977444594195,-0.007374101334269107,0.941805160971722,-0.20252498172427333,0.1883400995702248,49.41660025033508,3,107,0.6806683137772935,0.9754410595778549 +tool1_working_volume,Tool 1 working volume,-0.09788867562380038,-0.381957773512476,0.21689059500959693,9.442730244602913,0.15016726399115785,-0.05283186103628268,0.6006290186190759,-0.24573723779662934,0.1440988087013587,70.2484119675861,3,107,0.3170324957516792,0.6451200570353037 +bimanual_symmetry,Bimanual symmetry,-0.09404990403071017,-0.38589251439539346,0.2092130518234165,1.4775509440425625,0.9609718010133059,0.07096090270086099,0.4816446805886372,-0.12623255305805667,0.2627595073773897,0.0,3,107,0.9877753958666414,0.6072911190030643 +tool_distance_cv,Tool distance variability,-0.07869481765834933,-0.381957773512476,0.22082533589251474,0.9402734096993726,0.9877753958666414,0.0967073250888628,0.33687656619412654,-0.10063756236961648,0.2867306638025451,0.0,3,107,0.9877753958666414,0.48526714094510986 +tool1_active_time_ratio,Tool 1 active time,-0.07869481765834933,-0.381957773512476,0.22840690978886757,1.8615186143753135,0.9319837998880092,0.0619234676460434,0.5393498793878274,-0.1351550073394433,0.25428870263461834,0.0,3,107,0.9877753958666414,0.6288042457022069 +tool1_rotation_per_path,Tool 1 rotation per path,-0.04798464491362764,-0.3550863723608445,0.2476007677543186,6.11896892398272,0.4099960344698175,0.0615094119510837,0.5420726256053509,-0.1355630308075032,0.25389989907560206,69.18693626791988,3,107,0.6605491666458172,0.6288042457022069 +tool2_rotation_per_path,Tool 2 rotation per path,-0.04030710172744722,-0.33589251439539347,0.2591170825335892,4.939842744995474,0.5515516316447138,0.0897623157386279,0.37292929730177227,-0.10756754659238395,0.2802878771885398,26.67760421067217,3,107,0.7270453326225772,0.491588619170518 +tool1_working_area_xy,Tool 1 working area,0.036468330134357005,-0.2514395393474088,0.3435700575815739,5.820839351524582,0.44355627473497816,-0.0938566809851888,0.35140034344301063,-0.2840882397713419,0.10348435799322389,27.571098955890267,3,107,0.6770069456481246,0.48526714094510986 +bimanual_lag_s,Bimanual lag,0.12284069097888675,-0.0671785028790787,0.30906909788867576,3.4167085736608502,0.49065545885155004,-0.12756724230420405,0.26036445587208346,-0.33781924920756906,0.0948110353497303,0.0,2,107,0.6806683137772935,0.39739838001528527 +bimanual_concurrent_efficiency,Concurrent efficiency,0.1324376199616123,-0.16698656429942418,0.42034548944337813,6.255847554442752,0.3951487351725862,0.05434034789577619,0.5902509335709227,-0.14261706874968966,0.24715818464282197,0.0,3,107,0.6605491666458172,0.6451200570353037 +combined_idle_ratio,Combined idle ratio,0.15930902111324377,-0.1362763915547025,0.43570057581573896,2.582682735526149,0.8591018094151637,-0.12851294408927272,0.20079592076353536,-0.3160182986269308,0.0686542006839411,0.0,3,107,0.9866434015050106,0.3235045390079181 +tool2_path_length,Tool 2 path length,0.16698656429942418,-0.12859884836852206,0.45873320537428025,4.3259270970116,0.6326606280766702,-0.1626993657295065,0.10414478195750654,-0.34710474781701767,0.033818780204501575,0.0,3,107,0.7977025310531929,0.21572847691197783 +bimanual_dist_speed_corr,Distance-speed coupling,0.21305182341650672,-0.09788867562380038,0.4971209213051823,6.457136135650996,0.37397349378076755,-0.13287305287754708,0.18576878872865032,-0.32000556622565396,0.06423790866459668,19.20870804646566,3,107,0.6605491666458172,0.3168996984194623 +tool1_path_length,Tool 1 path length,0.2783109404990403,-0.028790786948176585,0.5547024952015355,9.38510505560636,0.15305017036287963,-0.27769187125220074,0.00475570678189519,-0.44877815668567483,-0.08696917530738506,0.0,3,107,0.3170324957516792,0.022985916112493423 +tool2_angular_velocity_cv,Tool 2 angular velocity variability,0.30902111324376197,0.028790786948176585,0.5585412667946257,10.774072184447647,0.0956150561686818,-0.1949345551877209,0.050610254353440826,-0.3760503454483363,0.0005283360255154149,0.0,3,107,0.3170324957516792,0.12973353110494418 +tool2_normalized_jerk,Tool 2 normalised jerk,0.4126679462571977,0.1362763915547025,0.6660268714011516,10.234331232795597,0.11512439345342916,-0.30095850521529366,0.0021084284496400976,-0.4688249105810884,-0.11211007560374386,0.0,3,107,0.3170324957516792,0.02038147501318761 +tool2_num_speed_peaks,Tool 2 speed peaks,0.4165067178502879,0.1457773512476008,0.6776391554702499,9.957316556589404,0.1264610585640119,-0.28802921047107855,0.0033422853252693006,-0.4577062141617639,-0.0981093391515713,0.0,3,107,0.3170324957516792,0.022985916112493423 +tool1_num_speed_peaks,Tool 1 speed peaks,0.418426103646833,0.12471209213051825,0.6890595009596929,9.917667997223782,0.1281622922367285,-0.282473804927565,0.0040466778158233735,-0.452912422522839,-0.09211656414791568,0.0,3,107,0.3170324957516792,0.022985916112493423 +total_time,Analysed duration,0.4472168905950096,0.1785028790786948,0.6929942418426107,11.451832434664146,0.07537628840171491,-0.32716976238946716,0.0007726322842619239,-0.49120351688973213,-0.14072539886146385,0.0,3,107,0.3170324957516792,0.011203168121797896 +tool1_normalized_jerk,Tool 1 normalised jerk,0.45489443378119004,0.1708253358925144,0.708253358925144,12.231543642480347,0.05699825695363934,-0.33800207579813035,0.0004958456978932772,-0.500389104235357,-0.15264291333999488,0.0,3,107,0.3170324957516792,0.011203168121797896 diff --git a/data/derived/analysis_manifest.json b/data/derived/analysis_manifest.json new file mode 100644 index 0000000..61c8b63 --- /dev/null +++ b/data/derived/analysis_manifest.json @@ -0,0 +1,64 @@ +{ + "analysis_script": { + "path": "scripts/build_scirep_analysis.py", + "sha256": "2a147245ae25e03f5c998ea95fa94efb905e5b05e78dcdcbb942dbf5d2cafe82" + }, + "python": { + "executable": "python3.14", + "version": "3.14.6 (main, Jun 10 2026, 10:03:53) [Clang 21.0.0 (clang-2100.0.123.102)]", + "platform": "macOS-26.5.2-arm64-arm-64bit-Mach-O" + }, + "packages": { + "numpy": "2.4.4", + "pandas": "3.0.1", + "matplotlib": "3.10.8", + "seaborn": "0.13.2", + "scipy": "1.17.1", + "scikit-learn": "1.8.0", + "pyarrow": "23.0.1" + }, + "inputs": { + "canonical_trials": { + "path": "$LASK_PHASE_CACHE/canonical_trials.csv", + "exists": true, + "size_bytes": 10880, + "sha256": "21fdd897bd4fadce9654339159b12e5519efb14d42dfc04cddb2e931bbc49914" + }, + "phase_trials": { + "path": "$LASK_PHASE_CACHE/trials.parquet", + "exists": true, + "size_bytes": 18820, + "sha256": "33a59d1db3d2202c5f82fa0f7d32ecdf8d451fdff779af0182b04935df8ff30f" + }, + "phase_cycles": { + "path": "$LASK_PHASE_CACHE/cycles.parquet", + "exists": true, + "size_bytes": 33995, + "sha256": "60f96435ee9ca525661c83c7c0a3a83483131487a54b333232d12ed3b7ac70bb" + }, + "phase_frames": { + "path": "$LASK_PHASE_CACHE/frames.parquet", + "exists": true, + "size_bytes": 384362, + "sha256": "f59217f43a631b618a138e6b7c37d9fbecfb10b283cd47ab0c648cf0b7b2ffd5" + }, + "combined_motion_metrics": { + "path": "$LASK_AI_ELT_ROOT/outputs/motion/combined_motion_metrics.csv", + "exists": true, + "size_bytes": 115865, + "sha256": "dadbc6c7d4629c8058bf3bf34df7e9c73f273861d43ef8fe11ef1681fb4f1265" + }, + "trimmed_extended_features": { + "path": "$LASK_AI_ELT_ROOT/outputs/papers/paper1/results/extended_features_cache_trimmed.csv", + "exists": true, + "size_bytes": 297728, + "sha256": "1a72effd894355ef4a8f1f625845cac274b456f4759db8c4e33a7e095002ded2" + } + }, + "random_seeds": { + "bootstrap_and_sampling": 20260618, + "classification_cv": 13, + "pca": 20260618, + "kmeans": 20260618 + } +} \ No newline at end of file diff --git a/data/derived/analysis_summary.json b/data/derived/analysis_summary.json new file mode 100644 index 0000000..804a956 --- /dev/null +++ b/data/derived/analysis_summary.json @@ -0,0 +1,940 @@ +{ + "all_trials": 115, + "phase_trials": 38, + "phase_cycles": 425, + "feature_dictionary_rows": 30, + "trimming_rule_validation": [ + { + "cohort": "All cohorts", + "n": 34, + "median_abs_start_error_s": 2.576923076923077, + "median_abs_end_error_s": 1.5, + "median_abs_duration_error_s": 4.653846153846146, + "median_interval_iou": 0.9678538255991654 + }, + { + "cohort": "Paediatric", + "n": 9, + "median_abs_start_error_s": 3.6923076923076925, + "median_abs_end_error_s": 1.6153846153846154, + "median_abs_duration_error_s": 5.307692307692321, + "median_interval_iou": 0.9521149241819633 + }, + { + "cohort": "Urology 1 (2023)", + "n": 10, + "median_abs_start_error_s": 1.3653846153846154, + "median_abs_end_error_s": 1.3653846153846154, + "median_abs_duration_error_s": 2.5576923076923137, + "median_interval_iou": 0.9803009547741184 + }, + { + "cohort": "Urology 2 (2024)", + "n": 15, + "median_abs_start_error_s": 4.230769230769231, + "median_abs_end_error_s": 1.5384615384615385, + "median_abs_duration_error_s": 6.307692307692292, + "median_interval_iou": 0.955458989679522 + } + ], + "processing_sensitivity": [ + { + "processing": "No position smoothing", + "position_window_s": 0.0, + "orientation_window_s": 0.0, + "n": 107, + "score_spearman_rho": 0.9833552945234894, + "median_absolute_score_change": 0.054545454545454675, + "fixed_cut_assignment_ari": 0.7461892039309828, + "refit_assignment_ari": 0.3175844249017427 + }, + { + "processing": "Primary processing", + "position_window_s": 0.4, + "orientation_window_s": 0.0, + "n": 107, + "score_spearman_rho": 1.0, + "median_absolute_score_change": 0.0, + "fixed_cut_assignment_ari": 1.0, + "refit_assignment_ari": 1.0 + }, + { + "processing": "0.8 s position window", + "position_window_s": 0.8, + "orientation_window_s": 0.0, + "n": 107, + "score_spearman_rho": 0.9836590342619369, + "median_absolute_score_change": 0.054545454545454675, + "fixed_cut_assignment_ari": 0.85387290419947, + "refit_assignment_ari": 0.8053423741454286 + }, + { + "processing": "0.4 s orientation sensitivity", + "position_window_s": 0.4, + "orientation_window_s": 0.4, + "n": 107, + "score_spearman_rho": 0.9880088170937018, + "median_absolute_score_change": 0.042424242424242475, + "fixed_cut_assignment_ari": 0.8286069303742338, + "refit_assignment_ari": 0.42755379100614965 + } + ], + "classification": { + "available": true, + "features": [ + "total_time", + "bimanual_correlation", + "bimanual_lag_s", + "bimanual_concurrent_efficiency", + "bimanual_dist_speed_corr", + "simultaneous_motion_ratio", + "bimanual_symmetry", + "combined_idle_ratio", + "tool1_normalized_jerk", + "tool2_normalized_jerk", + "tool1_active_time_ratio", + "tool2_active_time_ratio", + "tool1_path_length", + "tool2_path_length", + "tool1_avg_speed", + "tool2_avg_speed", + "tool_distance_cv", + "tool_close_proximity_ratio", + "tool1_working_volume", + "tool2_working_volume", + "tool1_working_area_xy", + "tool2_working_area_xy", + "tool1_range_z", + "tool2_range_z", + "tool1_rotation_per_path", + "tool2_rotation_per_path", + "tool1_angular_velocity_cv", + "tool2_angular_velocity_cv", + "tool1_num_speed_peaks", + "tool2_num_speed_peaks" + ], + "time_only_features": [ + "total_time" + ], + "stratified_group_5fold": { + "time_only_logistic_regression": { + "mean_balanced_accuracy": 0.44841269841269843, + "sd": 0.16861577600976474, + "features": [ + "total_time" + ] + }, + "time_only_random_forest": { + "mean_balanced_accuracy": 0.39550264550264547, + "sd": 0.05432467376806009, + "features": [ + "total_time" + ] + }, + "all_features_logistic_regression": { + "mean_balanced_accuracy": 0.3603174603174603, + "sd": 0.06844059019686591, + "features": [ + "total_time", + "bimanual_correlation", + "bimanual_lag_s", + "bimanual_concurrent_efficiency", + "bimanual_dist_speed_corr", + "simultaneous_motion_ratio", + "bimanual_symmetry", + "combined_idle_ratio", + "tool1_normalized_jerk", + "tool2_normalized_jerk", + "tool1_active_time_ratio", + "tool2_active_time_ratio", + "tool1_path_length", + "tool2_path_length", + "tool1_avg_speed", + "tool2_avg_speed", + "tool_distance_cv", + "tool_close_proximity_ratio", + "tool1_working_volume", + "tool2_working_volume", + "tool1_working_area_xy", + "tool2_working_area_xy", + "tool1_range_z", + "tool2_range_z", + "tool1_rotation_per_path", + "tool2_rotation_per_path", + "tool1_angular_velocity_cv", + "tool2_angular_velocity_cv", + "tool1_num_speed_peaks", + "tool2_num_speed_peaks" + ] + }, + "all_features_random_forest": { + "mean_balanced_accuracy": 0.34325396825396826, + "sd": 0.10826701395943916, + "features": [ + "total_time", + "bimanual_correlation", + "bimanual_lag_s", + "bimanual_concurrent_efficiency", + "bimanual_dist_speed_corr", + "simultaneous_motion_ratio", + "bimanual_symmetry", + "combined_idle_ratio", + "tool1_normalized_jerk", + "tool2_normalized_jerk", + "tool1_active_time_ratio", + "tool2_active_time_ratio", + "tool1_path_length", + "tool2_path_length", + "tool1_avg_speed", + "tool2_avg_speed", + "tool_distance_cv", + "tool_close_proximity_ratio", + "tool1_working_volume", + "tool2_working_volume", + "tool1_working_area_xy", + "tool2_working_area_xy", + "tool1_range_z", + "tool2_range_z", + "tool1_rotation_per_path", + "tool2_rotation_per_path", + "tool1_angular_velocity_cv", + "tool2_angular_velocity_cv", + "tool1_num_speed_peaks", + "tool2_num_speed_peaks" + ] + } + }, + "leave_one_dataset_out": { + "time_only_logistic_regression": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 0.3333333333333333, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.5279866332497911, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 0.5413165266106442, + "n_test": 28 + } + ], + "time_only_random_forest": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 0.5370370370370371, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.4357560568086884, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 0.4747899159663866, + "n_test": 28 + } + ], + "all_features_logistic_regression": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 0.46296296296296297, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.32497911445279865, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 0.36274509803921573, + "n_test": 28 + } + ], + "all_features_random_forest": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 0.27777777777777773, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.3505430242272347, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 0.30392156862745096, + "n_test": 28 + } + ] + }, + "top_random_forest_features": [] + }, + "metric_band_classification": { + "available": true, + "features": [ + "Bimanual coordination", + "Instrument motion control", + "Coordination-control composite" + ], + "targets": { + "motion_defined": { + "available": true, + "label": "Motion-score bands", + "class_counts": { + "metric_high": 50, + "metric_middle": 41, + "metric_low": 16 + }, + "models": { + "logistic_regression": { + "stratified_cv": { + "mean_balanced_accuracy": 0.9481481481481481, + "sd": 0.0863844725162267, + "n_splits": 5 + }, + "leave_one_dataset_out": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 1.0, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.9722222222222222, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 1.0, + "n_test": 28 + } + ] + }, + "random_forest": { + "stratified_cv": { + "mean_balanced_accuracy": 0.9555555555555555, + "sd": 0.054433105395181765, + "n_splits": 5 + }, + "leave_one_dataset_out": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 1.0, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.9583333333333334, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 1.0, + "n_test": 28 + } + ] + } + } + }, + "procedure_fixed": { + "available": true, + "label": "Procedure thresholds", + "class_counts": { + "procedure_expert": 42, + "procedure_novice": 34, + "procedure_intermediate": 31 + }, + "models": { + "logistic_regression": { + "stratified_cv": { + "mean_balanced_accuracy": 0.3843915343915344, + "sd": 0.11729933197995121, + "n_splits": 5 + }, + "leave_one_dataset_out": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 0.4074074074074074, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.4484544695071011, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 0.26820728291316526, + "n_test": 28 + } + ] + }, + "random_forest": { + "stratified_cv": { + "mean_balanced_accuracy": 0.362962962962963, + "sd": 0.06755414162236494, + "n_splits": 5 + }, + "leave_one_dataset_out": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 0.3333333333333333, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.33266499582289055, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 0.3991596638655462, + "n_test": 28 + } + ] + } + } + }, + "procedure_tertiles": { + "available": true, + "label": "Procedure tertiles", + "class_counts": { + "procedure_tertile_low": 36, + "procedure_tertile_high": 36, + "procedure_tertile_mid": 35 + }, + "models": { + "logistic_regression": { + "stratified_cv": { + "mean_balanced_accuracy": 0.33333333333333337, + "sd": 0.12192940599113683, + "n_splits": 5 + }, + "leave_one_dataset_out": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 0.4598484848484849, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.41319966583124473, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 0.3333333333333333, + "n_test": 28 + } + ] + }, + "random_forest": { + "stratified_cv": { + "mean_balanced_accuracy": 0.2702380952380952, + "sd": 0.028071014577503817, + "n_splits": 5 + }, + "leave_one_dataset_out": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 0.36287878787878786, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.454469507101086, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 0.2916666666666667, + "n_test": 28 + } + ] + } + } + }, + "procedure_kmeans": { + "available": true, + "label": "Procedure K-means", + "class_counts": { + "procedure_kmeans_mid": 53, + "procedure_kmeans_high": 32, + "procedure_kmeans_low": 22 + }, + "models": { + "logistic_regression": { + "stratified_cv": { + "mean_balanced_accuracy": 0.5048340548340549, + "sd": 0.16704300258582674, + "n_splits": 5 + }, + "leave_one_dataset_out": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 0.5222222222222223, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.5847222222222223, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 0.28571428571428575, + "n_test": 28 + } + ] + }, + "random_forest": { + "stratified_cv": { + "mean_balanced_accuracy": 0.26275613275613274, + "sd": 0.04702399204348823, + "n_splits": 5 + }, + "leave_one_dataset_out": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 0.3277777777777778, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.3194444444444444, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 0.1984126984126984, + "n_test": 28 + } + ] + } + } + } + }, + "comparison_rows": [ + { + "target": "motion_defined", + "target_label": "Motion-score bands", + "model": "logistic_regression", + "model_label": "Logistic regression", + "stratified_cv_balanced_accuracy": 0.9481481481481481, + "stratified_cv_sd": 0.0863844725162267, + "leave_one_dataset_out_balanced_accuracy": 0.9907407407407408, + "leave_one_dataset_out_min": 0.9722222222222222, + "leave_one_dataset_out_max": 1.0, + "n_splits": 5 + }, + { + "target": "motion_defined", + "target_label": "Motion-score bands", + "model": "random_forest", + "model_label": "Random forest", + "stratified_cv_balanced_accuracy": 0.9555555555555555, + "stratified_cv_sd": 0.054433105395181765, + "leave_one_dataset_out_balanced_accuracy": 0.9861111111111112, + "leave_one_dataset_out_min": 0.9583333333333334, + "leave_one_dataset_out_max": 1.0, + "n_splits": 5 + }, + { + "target": "procedure_fixed", + "target_label": "Procedure thresholds", + "model": "logistic_regression", + "model_label": "Logistic regression", + "stratified_cv_balanced_accuracy": 0.3843915343915344, + "stratified_cv_sd": 0.11729933197995121, + "leave_one_dataset_out_balanced_accuracy": 0.3746897199425579, + "leave_one_dataset_out_min": 0.26820728291316526, + "leave_one_dataset_out_max": 0.4484544695071011, + "n_splits": 5 + }, + { + "target": "procedure_fixed", + "target_label": "Procedure thresholds", + "model": "random_forest", + "model_label": "Random forest", + "stratified_cv_balanced_accuracy": 0.362962962962963, + "stratified_cv_sd": 0.06755414162236494, + "leave_one_dataset_out_balanced_accuracy": 0.35505266434059, + "leave_one_dataset_out_min": 0.33266499582289055, + "leave_one_dataset_out_max": 0.3991596638655462, + "n_splits": 5 + }, + { + "target": "procedure_tertiles", + "target_label": "Procedure tertiles", + "model": "logistic_regression", + "model_label": "Logistic regression", + "stratified_cv_balanced_accuracy": 0.33333333333333337, + "stratified_cv_sd": 0.12192940599113683, + "leave_one_dataset_out_balanced_accuracy": 0.4021271613376876, + "leave_one_dataset_out_min": 0.3333333333333333, + "leave_one_dataset_out_max": 0.4598484848484849, + "n_splits": 5 + }, + { + "target": "procedure_tertiles", + "target_label": "Procedure tertiles", + "model": "random_forest", + "model_label": "Random forest", + "stratified_cv_balanced_accuracy": 0.2702380952380952, + "stratified_cv_sd": 0.028071014577503817, + "leave_one_dataset_out_balanced_accuracy": 0.3696716538821802, + "leave_one_dataset_out_min": 0.2916666666666667, + "leave_one_dataset_out_max": 0.454469507101086, + "n_splits": 5 + }, + { + "target": "procedure_kmeans", + "target_label": "Procedure K-means", + "model": "logistic_regression", + "model_label": "Logistic regression", + "stratified_cv_balanced_accuracy": 0.5048340548340549, + "stratified_cv_sd": 0.16704300258582674, + "leave_one_dataset_out_balanced_accuracy": 0.46421957671957675, + "leave_one_dataset_out_min": 0.28571428571428575, + "leave_one_dataset_out_max": 0.5847222222222223, + "n_splits": 5 + }, + { + "target": "procedure_kmeans", + "target_label": "Procedure K-means", + "model": "random_forest", + "model_label": "Random forest", + "stratified_cv_balanced_accuracy": 0.26275613275613274, + "stratified_cv_sd": 0.04702399204348823, + "leave_one_dataset_out_balanced_accuracy": 0.28187830687830684, + "leave_one_dataset_out_min": 0.1984126984126984, + "leave_one_dataset_out_max": 0.3277777777777778, + "n_splits": 5 + } + ], + "stratified_cv": { + "metric_band_logistic_regression": { + "mean_balanced_accuracy": 0.9481481481481481, + "sd": 0.0863844725162267, + "n_splits": 5 + }, + "metric_band_random_forest": { + "mean_balanced_accuracy": 0.9555555555555555, + "sd": 0.054433105395181765, + "n_splits": 5 + } + }, + "leave_one_dataset_out": { + "metric_band_logistic_regression": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 1.0, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.9722222222222222, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 1.0, + "n_test": 28 + } + ], + "metric_band_random_forest": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 1.0, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.9583333333333334, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 1.0, + "n_test": 28 + } + ] + } + }, + "kmeans": { + "available": true, + "features": [ + "Coordination-control composite" + ], + "n_recordings_assigned": 107, + "n_independent_identifiers_fitted": 107, + "metric_band_silhouette": 0.5340644126720104, + "metric_band_davies_bouldin": 0.5574945498396043, + "metric_band_calinski_harabasz": 205.40036661359844, + "metric_band_seed_ari_mean": 0.6881185433201465, + "metric_band_seed_ari_min": 0.2457480281764961, + "metric_band_bootstrap_assignment_ari_median": 0.7557894702759759, + "metric_band_bootstrap_assignment_ari_ci": [ + 0.25019440016739297, + 1.0 + ], + "metric_band_centres": [ + 2.1605203823953825, + 2.8661563368880443, + 3.498385281385281 + ], + "metric_band_thresholds": [ + 2.5133383596417134, + 3.1822708091366625 + ], + "metric_band_threshold_bootstrap_ci": [ + { + "threshold": 1, + "ci_low": 2.2926625593349086, + "median": 2.549881584464918, + "ci_high": 2.9269077055625816 + }, + { + "threshold": 2, + "ci_low": 3.0849795438675742, + "median": 3.198773797443426, + "ci_high": 3.5601637509174164 + } + ], + "sensitivity": { + "complete_case": { + "n_trials": 107, + "thresholds": [ + 2.5133383596417134, + 3.1822708091366625 + ], + "assignment_adjusted_rand_index": 1.0 + }, + "domain_weight_perturbation": { + "n_repetitions": 500, + "adjusted_rand_index_median": 0.9591035280410379, + "adjusted_rand_index_ci_low": 0.7199041122076191, + "adjusted_rand_index_ci_high": 1.0 + }, + "leave_one_domain_out": [ + { + "omitted_domain": "Bimanual coordination", + "adjusted_rand_index": 0.13060915248255114, + "thresholds": [ + 2.7302769243898277, + 3.630029209142112 + ] + }, + { + "omitted_domain": "Instrument motion control", + "adjusted_rand_index": 0.35444949343374316, + "thresholds": [ + 2.334584187210237, + 3.2698409477427335 + ] + } + ], + "leave_one_cohort_out": [ + { + "held_out_dataset": "BAPES2024", + "thresholds": [ + 2.3904748376623375, + 3.1671951659451656 + ], + "held_out_adjusted_rand_index": 0.865164531375405 + }, + { + "held_out_dataset": "6DOF2023", + "thresholds": [ + 2.5767321004648194, + 3.1817356808443398 + ], + "held_out_adjusted_rand_index": 1.0 + }, + { + "held_out_dataset": "7DOF2024", + "thresholds": [ + 2.535273368606702, + 3.215837742504409 + ], + "held_out_adjusted_rand_index": 0.8914523798531924 + } + ] + }, + "k_validation": [ + { + "k": 2, + "silhouette": 0.5662174552602269, + "davies_bouldin": 0.5878701558520018, + "calinski_harabasz": 183.48140711375248, + "inertia": 10.989325724233584 + }, + { + "k": 3, + "silhouette": 0.5340644126720104, + "davies_bouldin": 0.5574945498396043, + "calinski_harabasz": 205.40036661359844, + "inertia": 6.099493281079126 + }, + { + "k": 4, + "silhouette": 0.5526414765421528, + "davies_bouldin": 0.5339018410670197, + "calinski_harabasz": 274.1045156576356, + "inertia": 3.3608403214706066 + }, + { + "k": 5, + "silhouette": 0.5435087697321636, + "davies_bouldin": 0.5047211727805098, + "calinski_harabasz": 309.8046641567337, + "inertia": 2.296149497107527 + }, + { + "k": 6, + "silhouette": 0.5354954704018147, + "davies_bouldin": 0.4844300101979635, + "calinski_harabasz": 340.0575213267391, + "inertia": 1.692925659373024 + } + ], + "pca_variance": [ + 0.6118434437413051, + 0.38815655625869483 + ], + "adjusted_rand_vs_original_skill": 0.018846337788122808, + "cluster_summary": [ + { + "metric_cluster": "metric_low", + "cluster_label": "Lower motion-score band", + "n": 16, + "median_total_procedures": 40.0, + "procedure_iqr_low": 13.0, + "procedure_iqr_high": 85.0, + "mean_coordination_control_composite": 2.1605203823953825 + }, + { + "metric_cluster": "metric_middle", + "cluster_label": "Middle motion-score band", + "n": 41, + "median_total_procedures": 20.0, + "procedure_iqr_low": 5.0, + "procedure_iqr_high": 100.0, + "mean_coordination_control_composite": 2.8661563368880443 + }, + { + "metric_cluster": "metric_high", + "cluster_label": "Upper motion-score band", + "n": 50, + "median_total_procedures": 80.0, + "procedure_iqr_low": 16.25, + "procedure_iqr_high": 300.0, + "mean_coordination_control_composite": 3.4983852813852807 + } + ] + }, + "core_motion_score_mean_by_procedure_group": { + "expert": 3.180458496529925, + "intermediate": 2.9892845505748733, + "novice": 2.9633212375859435 + }, + "top_feature_effects": [ + { + "feature": "bimanual_correlation", + "label": "Bimanual correlation", + "cliffs_delta_novice_expert": -0.44337811900191937, + "delta_ci_low": -0.6813819577735125, + "delta_ci_high": -0.1746641074856046, + "kruskal_h": 11.583733754844957, + "kruskal_p": 0.07192611507002791, + "spearman_rho_procedures": 0.26519610813065986, + "spearman_p": 0.007154035304095336, + "spearman_ci_low": 0.07356633757928907, + "spearman_ci_high": 0.43794014383705293, + "spearman_meta_i2": 59.69385918068588, + "n_cohorts": 3, + "n_nonmissing": 107, + "kruskal_q": 0.3170324957516792, + "spearman_q": 0.025933377977345594 + }, + { + "feature": "tool2_avg_speed", + "label": "Tool 2 speed", + "cliffs_delta_novice_expert": -0.43953934740882916, + "delta_ci_low": -0.6852207293666027, + "delta_ci_high": -0.16314779270633398, + "kruskal_h": 9.446343678317177, + "kruskal_p": 0.14998807706400527, + "spearman_rho_procedures": 0.26545918253608347, + "spearman_p": 0.007094210430320777, + "spearman_ci_low": 0.07384779717900485, + "spearman_ci_high": 0.4381688360883283, + "spearman_meta_i2": 0.0, + "n_cohorts": 3, + "n_nonmissing": 107, + "kruskal_q": 0.3170324957516792, + "spearman_q": 0.025933377977345594 + }, + { + "feature": "tool1_avg_speed", + "label": "Tool 1 speed", + "cliffs_delta_novice_expert": -0.3666026871401152, + "delta_ci_low": -0.6314779270633397, + "delta_ci_high": -0.08253358925143954, + "kruskal_h": 10.070936294222903, + "kruskal_p": 0.12169634914428706, + "spearman_rho_procedures": 0.20642377607265003, + "spearman_p": 0.0381460925868868, + "spearman_ci_low": 0.011442656610917675, + "spearman_ci_high": 0.3862823505464995, + "spearman_meta_i2": 0.0, + "n_cohorts": 3, + "n_nonmissing": 107, + "kruskal_q": 0.3170324957516792, + "spearman_q": 0.11062366850197172 + }, + { + "feature": "tool2_range_z", + "label": "Tool 2 depth range", + "cliffs_delta_novice_expert": -0.362763915547025, + "delta_ci_low": -0.6353166986564299, + "delta_ci_high": -0.05566218809980806, + "kruskal_h": 8.038309445980472, + "kruskal_p": 0.23531007622449016, + "spearman_rho_procedures": 0.23875854482084943, + "spearman_p": 0.015948005812675872, + "spearman_ci_low": 0.04543599067993563, + "spearman_ci_high": 0.4148432170028269, + "spearman_meta_i2": 0.0, + "n_cohorts": 3, + "n_nonmissing": 107, + "kruskal_q": 0.45493281403401425, + "spearman_q": 0.051388018729733365 + }, + { + "feature": "tool2_working_volume", + "label": "Tool 2 working volume", + "cliffs_delta_novice_expert": -0.2629558541266795, + "delta_ci_low": -0.5470249520153551, + "delta_ci_high": 0.02111324376199616, + "kruskal_h": 11.752049475787643, + "kruskal_p": 0.06773444765157813, + "spearman_rho_procedures": 0.19246671234055343, + "spearman_p": 0.05368284045721828, + "spearman_ci_low": -0.0030923734558430975, + "spearman_ci_high": 0.3738467701508323, + "spearman_meta_i2": 0.0, + "n_cohorts": 3, + "n_nonmissing": 107, + "kruskal_q": 0.3170324957516792, + "spearman_q": 0.12973353110494418 + } + ] +} \ No newline at end of file diff --git a/data/derived/classification_summary.json b/data/derived/classification_summary.json new file mode 100644 index 0000000..4113477 --- /dev/null +++ b/data/derived/classification_summary.json @@ -0,0 +1,197 @@ +{ + "available": true, + "features": [ + "total_time", + "bimanual_correlation", + "bimanual_lag_s", + "bimanual_concurrent_efficiency", + "bimanual_dist_speed_corr", + "simultaneous_motion_ratio", + "bimanual_symmetry", + "combined_idle_ratio", + "tool1_normalized_jerk", + "tool2_normalized_jerk", + "tool1_active_time_ratio", + "tool2_active_time_ratio", + "tool1_path_length", + "tool2_path_length", + "tool1_avg_speed", + "tool2_avg_speed", + "tool_distance_cv", + "tool_close_proximity_ratio", + "tool1_working_volume", + "tool2_working_volume", + "tool1_working_area_xy", + "tool2_working_area_xy", + "tool1_range_z", + "tool2_range_z", + "tool1_rotation_per_path", + "tool2_rotation_per_path", + "tool1_angular_velocity_cv", + "tool2_angular_velocity_cv", + "tool1_num_speed_peaks", + "tool2_num_speed_peaks" + ], + "time_only_features": [ + "total_time" + ], + "stratified_group_5fold": { + "time_only_logistic_regression": { + "mean_balanced_accuracy": 0.44841269841269843, + "sd": 0.16861577600976474, + "features": [ + "total_time" + ] + }, + "time_only_random_forest": { + "mean_balanced_accuracy": 0.39550264550264547, + "sd": 0.05432467376806009, + "features": [ + "total_time" + ] + }, + "all_features_logistic_regression": { + "mean_balanced_accuracy": 0.3603174603174603, + "sd": 0.06844059019686591, + "features": [ + "total_time", + "bimanual_correlation", + "bimanual_lag_s", + "bimanual_concurrent_efficiency", + "bimanual_dist_speed_corr", + "simultaneous_motion_ratio", + "bimanual_symmetry", + "combined_idle_ratio", + "tool1_normalized_jerk", + "tool2_normalized_jerk", + "tool1_active_time_ratio", + "tool2_active_time_ratio", + "tool1_path_length", + "tool2_path_length", + "tool1_avg_speed", + "tool2_avg_speed", + "tool_distance_cv", + "tool_close_proximity_ratio", + "tool1_working_volume", + "tool2_working_volume", + "tool1_working_area_xy", + "tool2_working_area_xy", + "tool1_range_z", + "tool2_range_z", + "tool1_rotation_per_path", + "tool2_rotation_per_path", + "tool1_angular_velocity_cv", + "tool2_angular_velocity_cv", + "tool1_num_speed_peaks", + "tool2_num_speed_peaks" + ] + }, + "all_features_random_forest": { + "mean_balanced_accuracy": 0.34325396825396826, + "sd": 0.10826701395943916, + "features": [ + "total_time", + "bimanual_correlation", + "bimanual_lag_s", + "bimanual_concurrent_efficiency", + "bimanual_dist_speed_corr", + "simultaneous_motion_ratio", + "bimanual_symmetry", + "combined_idle_ratio", + "tool1_normalized_jerk", + "tool2_normalized_jerk", + "tool1_active_time_ratio", + "tool2_active_time_ratio", + "tool1_path_length", + "tool2_path_length", + "tool1_avg_speed", + "tool2_avg_speed", + "tool_distance_cv", + "tool_close_proximity_ratio", + "tool1_working_volume", + "tool2_working_volume", + "tool1_working_area_xy", + "tool2_working_area_xy", + "tool1_range_z", + "tool2_range_z", + "tool1_rotation_per_path", + "tool2_rotation_per_path", + "tool1_angular_velocity_cv", + "tool2_angular_velocity_cv", + "tool1_num_speed_peaks", + "tool2_num_speed_peaks" + ] + } + }, + "leave_one_dataset_out": { + "time_only_logistic_regression": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 0.3333333333333333, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.5279866332497911, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 0.5413165266106442, + "n_test": 28 + } + ], + "time_only_random_forest": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 0.5370370370370371, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.4357560568086884, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 0.4747899159663866, + "n_test": 28 + } + ], + "all_features_logistic_regression": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 0.46296296296296297, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.32497911445279865, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 0.36274509803921573, + "n_test": 28 + } + ], + "all_features_random_forest": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 0.27777777777777773, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.3505430242272347, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 0.30392156862745096, + "n_test": 28 + } + ] + }, + "top_random_forest_features": [] +} \ No newline at end of file diff --git a/data/derived/cohort_adjusted_models.csv b/data/derived/cohort_adjusted_models.csv new file mode 100644 index 0000000..74d6516 --- /dev/null +++ b/data/derived/cohort_adjusted_models.csv @@ -0,0 +1,9 @@ +outcome,label,n,beta_log10_procedures,ci_low,ci_high,procedure_p,r2_procedure_only,r2_cohort_only,r2_full,cohort_delta_r2_after_procedure,procedure_q +total_time,Analysed duration,107,-0.42733493177412707,-0.7210666407293955,-0.1867809146394167,0.0001999600079984003,0.1329750713357727,0.018294307226203954,0.1488697330305392,0.0158946616947665,0.0015996800639872025 +bimanual_correlation,Bimanual correlation,107,0.29244008987169356,0.09152485904450995,0.5145501031277906,0.007398520295940812,0.05784230200288021,0.11128877039829821,0.17243905438252594,0.11459675237964573,0.02959408118376325 +tool1_avg_speed,Tool 1 speed,107,0.010798900046193131,-0.06338028617402766,0.0772080729996927,0.8016396720655868,0.009102444209678429,0.8753372340442597,0.8754206182322058,0.8663181740225274,0.8016396720655868 +tool2_avg_speed,Tool 2 speed,107,0.06356029050664681,-0.0023985628506424193,0.133968472852232,0.04799040191961608,0.00308542926382005,0.9249964885062787,0.9278851483746007,0.9247997191107806,0.07678464307138573 +combined_idle_ratio,Combined idle ratio,107,-0.07971270303197589,-0.20172280757710917,0.026271543507389142,0.17556488702259548,0.0006216419971403209,0.7603364482992011,0.7648798353216057,0.7642581933244654,0.2340865160301273 +tool1_range_z,Tool 1 depth range,107,-0.042217666962035216,-0.2449249058902264,0.15589781666696684,0.6914617076584683,0.011659559009017606,0.17780657175161974,0.17908099334106864,0.16742143433205103,0.790241951609678 +tool2_range_z,Tool 2 depth range,107,0.23582273751353064,0.05054699263230346,0.42192360858637795,0.02979404119176165,0.014836525031217462,0.13513978127316173,0.17490432594371252,0.16006780091249506,0.0595880823835233 +Coordination-control composite,Coordination and control score,107,0.28042398109730016,0.06831070397570142,0.5080588734377782,0.012397520495900819,0.05433644447282082,0.0015170135435146337,0.0577453146695327,0.0034088701967118773,0.03306005465573552 diff --git a/data/derived/cohort_specific_effects.csv b/data/derived/cohort_specific_effects.csv new file mode 100644 index 0000000..80c4ce8 --- /dev/null +++ b/data/derived/cohort_specific_effects.csv @@ -0,0 +1,22 @@ +feature,dataset,delta,lo,hi +Tool 2 speed,BAPES2024,0.47058823529411764,-0.23529411764705882,1.0 +Tool 2 speed,6DOF2023,0.2222222222222222,-0.37037037037037035,0.7777777777777778 +Tool 2 speed,7DOF2024,0.46365914786967416,0.10263157894736842,0.7694235588972431 +Tool 1 speed,BAPES2024,0.5,-0.2654411764705882,1.0 +Tool 1 speed,6DOF2023,0.07407407407407407,-0.5194444444444444,0.7416666666666658 +Tool 1 speed,7DOF2024,0.38345864661654133,0.01741854636591479,0.6942355889724311 +Bimanual correlation,BAPES2024,0.4117647058823529,-0.29411764705882354,1.0 +Bimanual correlation,6DOF2023,-0.14814814814814814,-0.7777777777777778,0.5555555555555556 +Bimanual correlation,7DOF2024,0.5288220551378446,0.18796992481203006,0.7997493734335838 +Tool 2 stop-start peaks,BAPES2024,0.3235294117647059,-0.4419117647058823,0.9117647058823529 +Tool 2 stop-start peaks,6DOF2023,0.2222222222222222,-0.4074074074074074,0.7777777777777778 +Tool 2 stop-start peaks,7DOF2024,0.45864661654135336,0.13283208020050125,0.7520050125313281 +Tool 1 stop-start peaks,BAPES2024,0.3235294117647059,-0.5007352941176471,0.9411764705882353 +Tool 1 stop-start peaks,6DOF2023,0.37037037037037035,-0.2222222222222222,0.889814814814814 +Tool 1 stop-start peaks,7DOF2024,0.44110275689223055,0.07268170426065163,0.7494987468671678 +Analysed duration,BAPES2024,0.38235294117647056,-0.47058823529411764,0.9705882352941176 +Analysed duration,6DOF2023,0.2962962962962963,-0.3333333333333333,0.8148148148148148 +Analysed duration,7DOF2024,0.47869674185463656,0.14786967418546365,0.7493734335839599 +Tool 2 depth range,BAPES2024,-0.20588235294117646,-0.8823529411764706,0.5294117647058824 +Tool 2 depth range,6DOF2023,-0.48148148148148145,-1.0,0.18518518518518517 +Tool 2 depth range,7DOF2024,-0.37343358395989973,-0.7045112781954888,-0.022556390977443608 diff --git a/data/derived/continuous_performance_validation.csv b/data/derived/continuous_performance_validation.csv new file mode 100644 index 0000000..ee50195 --- /dev/null +++ b/data/derived/continuous_performance_validation.csv @@ -0,0 +1,7 @@ +dataset,outcome,n,spearman_rho,ci_low,ci_high,p,q +BAPES2024,Task efficiency,28,0.4738571037503423,0.10120811268230709,0.7593587564884463,0.010856998437097476,0.021713996874194952 +6DOF2023,Task efficiency,24,0.3756521739130434,-0.04782799473453269,0.7072115384615385,0.07045361689375705,0.0951498225567684 +7DOF2024,Task efficiency,55,0.7467349736633234,0.6046869747002657,0.8353758657774063,5.919503255200333e-11,3.5517019531202e-10 +BAPES2024,Analysed duration (s),28,-0.33721089682147404,-0.666205289903589,0.046433734184466384,0.079291518797307,0.0951498225567684 +6DOF2023,Analysed duration (s),24,-0.31478260869565217,-0.6462501377781588,0.09987353003433055,0.13408706839947865,0.13408706839947865 +7DOF2024,Analysed duration (s),55,-0.7188339918553194,-0.813942675630546,-0.5675621268336416,6.386065820756053e-10,1.915819746226816e-09 diff --git a/data/derived/coordination_control_time_correlation.csv b/data/derived/coordination_control_time_correlation.csv new file mode 100644 index 0000000..91b5d16 --- /dev/null +++ b/data/derived/coordination_control_time_correlation.csv @@ -0,0 +1,4 @@ +dataset,n,spearman_rho,ci_low,ci_high,p +BAPES2024,28,-0.38368910782703886,-0.7465771840836282,0.05147759017516738,0.04383971743892305 +6DOF2023,24,-0.041739130434782605,-0.41095636278631287,0.3395114421575783,0.8464521133997217 +7DOF2024,55,-0.47616299003038437,-0.6566871273281804,-0.24345247671185027,0.00023823151622729487 diff --git a/data/derived/cycle_duration_ci.csv b/data/derived/cycle_duration_ci.csv new file mode 100644 index 0000000..79b46e3 --- /dev/null +++ b/data/derived/cycle_duration_ci.csv @@ -0,0 +1,10 @@ +dataset,skill_category,n_cycles,n_trials,mean_duration_s,ci_low,ci_high +6DOF2023,expert,23,2,10.618444055944057,8.586538461538462,12.650349650349652 +6DOF2023,intermediate,44,4,12.394070512820512,10.692307692307693,13.353685897435897 +6DOF2023,novice,48,4,12.45673076923077,10.665064102564102,14.248397435897436 +7DOF2024,expert,58,5,12.94025641025641,11.612564102564104,15.010256410256408 +7DOF2024,intermediate,36,3,15.34188034188034,9.512820512820513,19.01923076923077 +7DOF2024,novice,84,7,13.602564102564102,9.774725274725274,18.555860805860807 +BAPES2024,expert,60,6,15.152777777777779,12.998824786324786,17.550213675213676 +BAPES2024,intermediate,24,2,11.067307692307693,10.833333333333334,11.301282051282051 +BAPES2024,novice,6,1,15.294871794871796,15.294871794871796,15.294871794871796 diff --git a/data/derived/feature_dictionary.csv b/data/derived/feature_dictionary.csv new file mode 100644 index 0000000..2a394a6 --- /dev/null +++ b/data/derived/feature_dictionary.csv @@ -0,0 +1,31 @@ +feature,label,favourable_direction,interpretation,domain,available_cohorts,nonmissing_trials,missing_trials +total_time,Analysed duration,downarrow,shorter analysed task interval,Task efficiency,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +bimanual_correlation,Bimanual correlation,uparrow,more synchronous tool motion,Bimanual coordination,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +bimanual_lag_s,Bimanual lag,downarrow,less timing delay between tools,,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +bimanual_concurrent_efficiency,Concurrent efficiency,uparrow,more efficient simultaneous tool use,Bimanual coordination,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +bimanual_dist_speed_corr,Distance-speed coupling,uparrow,more coupled spacing and speed control,,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +simultaneous_motion_ratio,Simultaneous motion,uparrow,larger fraction of active frames with both tools moving,Bimanual coordination,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +bimanual_symmetry,Bimanual symmetry,uparrow,more balanced left/right tool use,,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +combined_idle_ratio,Combined idle ratio,downarrow,less inactive task time,Task efficiency,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +tool1_normalized_jerk,Tool 1 normalised jerk,downarrow,smoother Tool 1 motion,Instrument motion control,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +tool2_normalized_jerk,Tool 2 normalised jerk,downarrow,smoother Tool 2 motion,Instrument motion control,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +tool1_active_time_ratio,Tool 1 active time,uparrow,more active Tool 1 use,Task efficiency,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +tool2_active_time_ratio,Tool 2 active time,uparrow,more active Tool 2 use,Task efficiency,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +tool1_path_length,Tool 1 path length,downarrow,shorter Tool 1 travel distance,,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +tool2_path_length,Tool 2 path length,downarrow,shorter Tool 2 travel distance,,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +tool1_avg_speed,Tool 1 speed,uparrow,faster Tool 1 movement,,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +tool2_avg_speed,Tool 2 speed,uparrow,faster Tool 2 movement,,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +tool_distance_cv,Tool distance variability,downarrow,steadier distance between tools,Bimanual coordination,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +tool_close_proximity_ratio,Close proximity,downarrow,less time with tools very close together,,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +tool1_working_volume,Tool 1 working volume,downarrow,more compact Tool 1 three-dimensional workspace,Workspace excursion,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +tool2_working_volume,Tool 2 working volume,downarrow,more compact Tool 2 three-dimensional workspace,Workspace excursion,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +tool1_working_area_xy,Tool 1 working area,downarrow,more compact Tool 1 image-plane workspace,Workspace excursion,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +tool2_working_area_xy,Tool 2 working area,downarrow,more compact Tool 2 image-plane workspace,Workspace excursion,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +tool1_range_z,Tool 1 depth range,downarrow,less Tool 1 camera-axis excursion,Workspace excursion,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +tool2_range_z,Tool 2 depth range,downarrow,less Tool 2 camera-axis excursion,Workspace excursion,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +tool1_rotation_per_path,Tool 1 rotation per path,downarrow,less Tool 1 rotation per millimetre travelled,Instrument motion control,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +tool2_rotation_per_path,Tool 2 rotation per path,downarrow,less Tool 2 rotation per millimetre travelled,Instrument motion control,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +tool1_angular_velocity_cv,Tool 1 angular velocity variability,downarrow,steadier Tool 1 rotational speed,Instrument motion control,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +tool2_angular_velocity_cv,Tool 2 angular velocity variability,downarrow,steadier Tool 2 rotational speed,Instrument motion control,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +tool1_num_speed_peaks,Tool 1 speed peaks,downarrow,fewer Tool 1 stop-start speed peaks,Task efficiency,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 +tool2_num_speed_peaks,Tool 2 speed peaks,downarrow,fewer Tool 2 stop-start speed peaks,Task efficiency,Paediatric; Urology 1 (2023); Urology 2 (2024),107,8 diff --git a/data/derived/kmeans_cluster_summary.csv b/data/derived/kmeans_cluster_summary.csv new file mode 100644 index 0000000..be348ca --- /dev/null +++ b/data/derived/kmeans_cluster_summary.csv @@ -0,0 +1,4 @@ +metric_cluster,cluster_label,n,median_total_procedures,procedure_iqr_low,procedure_iqr_high,mean_coordination_control_composite +metric_low,Lower motion-score band,16,40.0,13.0,85.0,2.1605203823953825 +metric_middle,Middle motion-score band,41,20.0,5.0,100.0,2.8661563368880443 +metric_high,Upper motion-score band,50,80.0,16.25,300.0,3.4983852813852807 diff --git a/data/derived/kmeans_thresholds.json b/data/derived/kmeans_thresholds.json new file mode 100644 index 0000000..50db8d2 --- /dev/null +++ b/data/derived/kmeans_thresholds.json @@ -0,0 +1,172 @@ +{ + "available": true, + "features": [ + "Coordination-control composite" + ], + "n_recordings_assigned": 107, + "n_independent_identifiers_fitted": 107, + "metric_band_silhouette": 0.5340644126720104, + "metric_band_davies_bouldin": 0.5574945498396043, + "metric_band_calinski_harabasz": 205.40036661359844, + "metric_band_seed_ari_mean": 0.6881185433201465, + "metric_band_seed_ari_min": 0.2457480281764961, + "metric_band_bootstrap_assignment_ari_median": 0.7557894702759759, + "metric_band_bootstrap_assignment_ari_ci": [ + 0.25019440016739297, + 1.0 + ], + "metric_band_centres": [ + 2.1605203823953825, + 2.8661563368880443, + 3.498385281385281 + ], + "metric_band_thresholds": [ + 2.5133383596417134, + 3.1822708091366625 + ], + "metric_band_threshold_bootstrap_ci": [ + { + "threshold": 1, + "ci_low": 2.2926625593349086, + "median": 2.549881584464918, + "ci_high": 2.9269077055625816 + }, + { + "threshold": 2, + "ci_low": 3.0849795438675742, + "median": 3.198773797443426, + "ci_high": 3.5601637509174164 + } + ], + "sensitivity": { + "complete_case": { + "n_trials": 107, + "thresholds": [ + 2.5133383596417134, + 3.1822708091366625 + ], + "assignment_adjusted_rand_index": 1.0 + }, + "domain_weight_perturbation": { + "n_repetitions": 500, + "adjusted_rand_index_median": 0.9591035280410379, + "adjusted_rand_index_ci_low": 0.7199041122076191, + "adjusted_rand_index_ci_high": 1.0 + }, + "leave_one_domain_out": [ + { + "omitted_domain": "Bimanual coordination", + "adjusted_rand_index": 0.13060915248255114, + "thresholds": [ + 2.7302769243898277, + 3.630029209142112 + ] + }, + { + "omitted_domain": "Instrument motion control", + "adjusted_rand_index": 0.35444949343374316, + "thresholds": [ + 2.334584187210237, + 3.2698409477427335 + ] + } + ], + "leave_one_cohort_out": [ + { + "held_out_dataset": "BAPES2024", + "thresholds": [ + 2.3904748376623375, + 3.1671951659451656 + ], + "held_out_adjusted_rand_index": 0.865164531375405 + }, + { + "held_out_dataset": "6DOF2023", + "thresholds": [ + 2.5767321004648194, + 3.1817356808443398 + ], + "held_out_adjusted_rand_index": 1.0 + }, + { + "held_out_dataset": "7DOF2024", + "thresholds": [ + 2.535273368606702, + 3.215837742504409 + ], + "held_out_adjusted_rand_index": 0.8914523798531924 + } + ] + }, + "k_validation": [ + { + "k": 2, + "silhouette": 0.5662174552602269, + "davies_bouldin": 0.5878701558520018, + "calinski_harabasz": 183.48140711375248, + "inertia": 10.989325724233584 + }, + { + "k": 3, + "silhouette": 0.5340644126720104, + "davies_bouldin": 0.5574945498396043, + "calinski_harabasz": 205.40036661359844, + "inertia": 6.099493281079126 + }, + { + "k": 4, + "silhouette": 0.5526414765421528, + "davies_bouldin": 0.5339018410670197, + "calinski_harabasz": 274.1045156576356, + "inertia": 3.3608403214706066 + }, + { + "k": 5, + "silhouette": 0.5435087697321636, + "davies_bouldin": 0.5047211727805098, + "calinski_harabasz": 309.8046641567337, + "inertia": 2.296149497107527 + }, + { + "k": 6, + "silhouette": 0.5354954704018147, + "davies_bouldin": 0.4844300101979635, + "calinski_harabasz": 340.0575213267391, + "inertia": 1.692925659373024 + } + ], + "pca_variance": [ + 0.6118434437413051, + 0.38815655625869483 + ], + "adjusted_rand_vs_original_skill": 0.018846337788122808, + "cluster_summary": [ + { + "metric_cluster": "metric_low", + "cluster_label": "Lower motion-score band", + "n": 16, + "median_total_procedures": 40.0, + "procedure_iqr_low": 13.0, + "procedure_iqr_high": 85.0, + "mean_coordination_control_composite": 2.1605203823953825 + }, + { + "metric_cluster": "metric_middle", + "cluster_label": "Middle motion-score band", + "n": 41, + "median_total_procedures": 20.0, + "procedure_iqr_low": 5.0, + "procedure_iqr_high": 100.0, + "mean_coordination_control_composite": 2.8661563368880443 + }, + { + "metric_cluster": "metric_high", + "cluster_label": "Upper motion-score band", + "n": 50, + "median_total_procedures": 80.0, + "procedure_iqr_low": 16.25, + "procedure_iqr_high": 300.0, + "mean_coordination_control_composite": 3.4983852813852807 + } + ] +} \ No newline at end of file diff --git a/data/derived/kmeans_validation.csv b/data/derived/kmeans_validation.csv new file mode 100644 index 0000000..e7c2d33 --- /dev/null +++ b/data/derived/kmeans_validation.csv @@ -0,0 +1,6 @@ +k,silhouette,davies_bouldin,calinski_harabasz,inertia +2,0.5662174552602269,0.5878701558520018,183.48140711375248,10.989325724233584 +3,0.5340644126720104,0.5574945498396043,205.40036661359844,6.099493281079126 +4,0.5526414765421528,0.5339018410670197,274.1045156576356,3.3608403214706066 +5,0.5435087697321636,0.5047211727805098,309.8046641567337,2.296149497107527 +6,0.5354954704018147,0.4844300101979635,340.0575213267391,1.692925659373024 diff --git a/data/derived/metric_band_classification_comparison.csv b/data/derived/metric_band_classification_comparison.csv new file mode 100644 index 0000000..d05c26b --- /dev/null +++ b/data/derived/metric_band_classification_comparison.csv @@ -0,0 +1,9 @@ +target,target_label,model,model_label,stratified_cv_balanced_accuracy,stratified_cv_sd,leave_one_dataset_out_balanced_accuracy,leave_one_dataset_out_min,leave_one_dataset_out_max,n_splits +motion_defined,Motion-score bands,logistic_regression,Logistic regression,0.9481481481481481,0.0863844725162267,0.9907407407407408,0.9722222222222222,1.0,5 +motion_defined,Motion-score bands,random_forest,Random forest,0.9555555555555555,0.054433105395181765,0.9861111111111112,0.9583333333333334,1.0,5 +procedure_fixed,Procedure thresholds,logistic_regression,Logistic regression,0.3843915343915344,0.11729933197995121,0.3746897199425579,0.26820728291316526,0.4484544695071011,5 +procedure_fixed,Procedure thresholds,random_forest,Random forest,0.362962962962963,0.06755414162236494,0.35505266434059,0.33266499582289055,0.3991596638655462,5 +procedure_tertiles,Procedure tertiles,logistic_regression,Logistic regression,0.33333333333333337,0.12192940599113683,0.4021271613376876,0.3333333333333333,0.4598484848484849,5 +procedure_tertiles,Procedure tertiles,random_forest,Random forest,0.2702380952380952,0.028071014577503817,0.3696716538821802,0.2916666666666667,0.454469507101086,5 +procedure_kmeans,Procedure K-means,logistic_regression,Logistic regression,0.5048340548340549,0.16704300258582674,0.46421957671957675,0.28571428571428575,0.5847222222222223,5 +procedure_kmeans,Procedure K-means,random_forest,Random forest,0.26275613275613274,0.04702399204348823,0.28187830687830684,0.1984126984126984,0.3277777777777778,5 diff --git a/data/derived/metric_band_classification_summary.json b/data/derived/metric_band_classification_summary.json new file mode 100644 index 0000000..927bccb --- /dev/null +++ b/data/derived/metric_band_classification_summary.json @@ -0,0 +1,392 @@ +{ + "available": true, + "features": [ + "Bimanual coordination", + "Instrument motion control", + "Coordination-control composite" + ], + "targets": { + "motion_defined": { + "available": true, + "label": "Motion-score bands", + "class_counts": { + "metric_high": 50, + "metric_middle": 41, + "metric_low": 16 + }, + "models": { + "logistic_regression": { + "stratified_cv": { + "mean_balanced_accuracy": 0.9481481481481481, + "sd": 0.0863844725162267, + "n_splits": 5 + }, + "leave_one_dataset_out": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 1.0, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.9722222222222222, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 1.0, + "n_test": 28 + } + ] + }, + "random_forest": { + "stratified_cv": { + "mean_balanced_accuracy": 0.9555555555555555, + "sd": 0.054433105395181765, + "n_splits": 5 + }, + "leave_one_dataset_out": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 1.0, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.9583333333333334, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 1.0, + "n_test": 28 + } + ] + } + } + }, + "procedure_fixed": { + "available": true, + "label": "Procedure thresholds", + "class_counts": { + "procedure_expert": 42, + "procedure_novice": 34, + "procedure_intermediate": 31 + }, + "models": { + "logistic_regression": { + "stratified_cv": { + "mean_balanced_accuracy": 0.3843915343915344, + "sd": 0.11729933197995121, + "n_splits": 5 + }, + "leave_one_dataset_out": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 0.4074074074074074, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.4484544695071011, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 0.26820728291316526, + "n_test": 28 + } + ] + }, + "random_forest": { + "stratified_cv": { + "mean_balanced_accuracy": 0.362962962962963, + "sd": 0.06755414162236494, + "n_splits": 5 + }, + "leave_one_dataset_out": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 0.3333333333333333, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.33266499582289055, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 0.3991596638655462, + "n_test": 28 + } + ] + } + } + }, + "procedure_tertiles": { + "available": true, + "label": "Procedure tertiles", + "class_counts": { + "procedure_tertile_low": 36, + "procedure_tertile_high": 36, + "procedure_tertile_mid": 35 + }, + "models": { + "logistic_regression": { + "stratified_cv": { + "mean_balanced_accuracy": 0.33333333333333337, + "sd": 0.12192940599113683, + "n_splits": 5 + }, + "leave_one_dataset_out": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 0.4598484848484849, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.41319966583124473, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 0.3333333333333333, + "n_test": 28 + } + ] + }, + "random_forest": { + "stratified_cv": { + "mean_balanced_accuracy": 0.2702380952380952, + "sd": 0.028071014577503817, + "n_splits": 5 + }, + "leave_one_dataset_out": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 0.36287878787878786, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.454469507101086, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 0.2916666666666667, + "n_test": 28 + } + ] + } + } + }, + "procedure_kmeans": { + "available": true, + "label": "Procedure K-means", + "class_counts": { + "procedure_kmeans_mid": 53, + "procedure_kmeans_high": 32, + "procedure_kmeans_low": 22 + }, + "models": { + "logistic_regression": { + "stratified_cv": { + "mean_balanced_accuracy": 0.5048340548340549, + "sd": 0.16704300258582674, + "n_splits": 5 + }, + "leave_one_dataset_out": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 0.5222222222222223, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.5847222222222223, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 0.28571428571428575, + "n_test": 28 + } + ] + }, + "random_forest": { + "stratified_cv": { + "mean_balanced_accuracy": 0.26275613275613274, + "sd": 0.04702399204348823, + "n_splits": 5 + }, + "leave_one_dataset_out": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 0.3277777777777778, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.3194444444444444, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 0.1984126984126984, + "n_test": 28 + } + ] + } + } + } + }, + "comparison_rows": [ + { + "target": "motion_defined", + "target_label": "Motion-score bands", + "model": "logistic_regression", + "model_label": "Logistic regression", + "stratified_cv_balanced_accuracy": 0.9481481481481481, + "stratified_cv_sd": 0.0863844725162267, + "leave_one_dataset_out_balanced_accuracy": 0.9907407407407408, + "leave_one_dataset_out_min": 0.9722222222222222, + "leave_one_dataset_out_max": 1.0, + "n_splits": 5 + }, + { + "target": "motion_defined", + "target_label": "Motion-score bands", + "model": "random_forest", + "model_label": "Random forest", + "stratified_cv_balanced_accuracy": 0.9555555555555555, + "stratified_cv_sd": 0.054433105395181765, + "leave_one_dataset_out_balanced_accuracy": 0.9861111111111112, + "leave_one_dataset_out_min": 0.9583333333333334, + "leave_one_dataset_out_max": 1.0, + "n_splits": 5 + }, + { + "target": "procedure_fixed", + "target_label": "Procedure thresholds", + "model": "logistic_regression", + "model_label": "Logistic regression", + "stratified_cv_balanced_accuracy": 0.3843915343915344, + "stratified_cv_sd": 0.11729933197995121, + "leave_one_dataset_out_balanced_accuracy": 0.3746897199425579, + "leave_one_dataset_out_min": 0.26820728291316526, + "leave_one_dataset_out_max": 0.4484544695071011, + "n_splits": 5 + }, + { + "target": "procedure_fixed", + "target_label": "Procedure thresholds", + "model": "random_forest", + "model_label": "Random forest", + "stratified_cv_balanced_accuracy": 0.362962962962963, + "stratified_cv_sd": 0.06755414162236494, + "leave_one_dataset_out_balanced_accuracy": 0.35505266434059, + "leave_one_dataset_out_min": 0.33266499582289055, + "leave_one_dataset_out_max": 0.3991596638655462, + "n_splits": 5 + }, + { + "target": "procedure_tertiles", + "target_label": "Procedure tertiles", + "model": "logistic_regression", + "model_label": "Logistic regression", + "stratified_cv_balanced_accuracy": 0.33333333333333337, + "stratified_cv_sd": 0.12192940599113683, + "leave_one_dataset_out_balanced_accuracy": 0.4021271613376876, + "leave_one_dataset_out_min": 0.3333333333333333, + "leave_one_dataset_out_max": 0.4598484848484849, + "n_splits": 5 + }, + { + "target": "procedure_tertiles", + "target_label": "Procedure tertiles", + "model": "random_forest", + "model_label": "Random forest", + "stratified_cv_balanced_accuracy": 0.2702380952380952, + "stratified_cv_sd": 0.028071014577503817, + "leave_one_dataset_out_balanced_accuracy": 0.3696716538821802, + "leave_one_dataset_out_min": 0.2916666666666667, + "leave_one_dataset_out_max": 0.454469507101086, + "n_splits": 5 + }, + { + "target": "procedure_kmeans", + "target_label": "Procedure K-means", + "model": "logistic_regression", + "model_label": "Logistic regression", + "stratified_cv_balanced_accuracy": 0.5048340548340549, + "stratified_cv_sd": 0.16704300258582674, + "leave_one_dataset_out_balanced_accuracy": 0.46421957671957675, + "leave_one_dataset_out_min": 0.28571428571428575, + "leave_one_dataset_out_max": 0.5847222222222223, + "n_splits": 5 + }, + { + "target": "procedure_kmeans", + "target_label": "Procedure K-means", + "model": "random_forest", + "model_label": "Random forest", + "stratified_cv_balanced_accuracy": 0.26275613275613274, + "stratified_cv_sd": 0.04702399204348823, + "leave_one_dataset_out_balanced_accuracy": 0.28187830687830684, + "leave_one_dataset_out_min": 0.1984126984126984, + "leave_one_dataset_out_max": 0.3277777777777778, + "n_splits": 5 + } + ], + "stratified_cv": { + "metric_band_logistic_regression": { + "mean_balanced_accuracy": 0.9481481481481481, + "sd": 0.0863844725162267, + "n_splits": 5 + }, + "metric_band_random_forest": { + "mean_balanced_accuracy": 0.9555555555555555, + "sd": 0.054433105395181765, + "n_splits": 5 + } + }, + "leave_one_dataset_out": { + "metric_band_logistic_regression": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 1.0, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.9722222222222222, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 1.0, + "n_test": 28 + } + ], + "metric_band_random_forest": [ + { + "held_out_dataset": "6DOF2023", + "balanced_accuracy": 1.0, + "n_test": 24 + }, + { + "held_out_dataset": "7DOF2024", + "balanced_accuracy": 0.9583333333333334, + "n_test": 55 + }, + { + "held_out_dataset": "BAPES2024", + "balanced_accuracy": 1.0, + "n_test": 28 + } + ] + } +} \ No newline at end of file diff --git a/data/derived/phase_fraction_ci.csv b/data/derived/phase_fraction_ci.csv new file mode 100644 index 0000000..7f4c2ed --- /dev/null +++ b/data/derived/phase_fraction_ci.csv @@ -0,0 +1,28 @@ +skill_category,phase,n_trials,mean_fraction,ci_low,ci_high +expert,dropped,13,0.0032817445805510023,0.0,0.007169367647976989 +expert,idle,13,0.03470974466434072,0.021452542600950437,0.049264162164491775 +expert,active1,13,0.0,0.0,0.0 +expert,active2,13,0.0,0.0,0.0 +expert,transfer,13,0.286860806331103,0.21271746031310187,0.3500414969360202 +expert,place,13,0.3315762725924012,0.29056076161408195,0.3756211675337971 +expert,grasp,13,0.13664443229267087,0.11697067552680984,0.1580611768405519 +expert,reach,13,0.17887888507026897,0.16172897787677873,0.19625276708345085 +expert,nudge,13,0.02804811446866428,0.018417527012453392,0.0385352844311838 +intermediate,dropped,9,0.0020357287263343036,0.0005140066820868671,0.003772565709507457 +intermediate,idle,9,0.04690651359583262,0.035785545137860995,0.057908686010548965 +intermediate,active1,9,0.0,0.0,0.0 +intermediate,active2,9,0.0,0.0,0.0 +intermediate,transfer,9,0.2916955450368333,0.21176998348410092,0.3420442979604823 +intermediate,place,9,0.3228310284306484,0.28248570711722043,0.36699889724984497 +intermediate,grasp,9,0.14027477448808673,0.11291882445431675,0.17480857196349225 +intermediate,reach,9,0.16174108770157322,0.13532074562555016,0.185591989939403 +intermediate,nudge,9,0.034515322020691346,0.02428755041242684,0.04502943912146738 +novice,dropped,12,0.0017370348657187458,0.0002821670428893905,0.0032989161642641165 +novice,idle,12,0.032488503311202115,0.02471049050225703,0.041689781566996674 +novice,active1,12,0.0,0.0,0.0 +novice,active2,12,0.0,0.0,0.0 +novice,transfer,12,0.32562627065469996,0.3089926171556426,0.342253663901653 +novice,place,12,0.3325447097930767,0.3141083832884708,0.3536370969958957 +novice,grasp,12,0.13125037260593608,0.11878101120890072,0.1435458540047876 +novice,reach,12,0.1554831274418424,0.12965532306806185,0.17818568165798385 +novice,nudge,12,0.020869981327523962,0.0134675390962613,0.028250321998084943 diff --git a/data/derived/phase_kinematics_summary.csv b/data/derived/phase_kinematics_summary.csv new file mode 100644 index 0000000..2d9308d --- /dev/null +++ b/data/derived/phase_kinematics_summary.csv @@ -0,0 +1,8 @@ +phase,n_trials,duration_s,tool1_speed_mm_s,tool2_speed_mm_s,combined_path_rate_mm_s +reach,34,874.1923076923075,43.64497380933804,38.63477297139324,82.27974678073127 +grasp,34,693.6153846153845,42.33294602684745,39.058830625868666,81.39177665271612 +transfer,31,1617.4999999999998,38.377615719404794,32.292785148904876,70.67040086830967 +place,34,1728.5769230769229,42.69559837613292,37.25730176261506,79.95290013874798 +nudge,32,139.65384615384613,36.003999240375705,30.559871943533597,66.5638711839093 +idle,34,200.88461538461536,57.38604534269178,50.430112252669474,107.81615759536125 +dropped,11,14.230769230769234,54.876743361268126,37.98917245393057,92.86591581519869 diff --git a/data/derived/phase_segment_summary.csv b/data/derived/phase_segment_summary.csv new file mode 100644 index 0000000..bb448fc --- /dev/null +++ b/data/derived/phase_segment_summary.csv @@ -0,0 +1,8 @@ +phase,n_segments,mean_duration_s,median_duration_s +reach,620,1.5572580645161305,1.3846153846153868 +grasp,485,1.5296590007930229,1.4615384615384386 +transfer,394,4.41419367434596,4.153846153846157 +place,438,4.157709870038639,3.69230769230769 +nudge,179,0.8594757198109167,0.6923076923076934 +idle,309,0.711102813044562,0.461538461538467 +dropped,22,0.6958041958041984,0.6538461538461587 diff --git a/data/derived/position_smoothing_sensitivity.csv b/data/derived/position_smoothing_sensitivity.csv new file mode 100644 index 0000000..7cbc84e --- /dev/null +++ b/data/derived/position_smoothing_sensitivity.csv @@ -0,0 +1,4 @@ +position_smoothing,window_s,n,score_spearman_rho,median_absolute_score_change,fixed_cut_assignment_ari,refit_assignment_ari +No position smoothing,0.0,107,0.9833552945234894,0.054545454545454675,0.7461892039309828,0.3175844249017427 +0.4 s primary window,0.4,107,1.0,0.0,1.0,1.0 +0.8 s window,0.8,107,0.9836590342619369,0.054545454545454675,0.85387290419947,0.8053423741454286 diff --git a/data/derived/processing_sensitivity.csv b/data/derived/processing_sensitivity.csv new file mode 100644 index 0000000..f4c0dc1 --- /dev/null +++ b/data/derived/processing_sensitivity.csv @@ -0,0 +1,5 @@ +processing,position_window_s,orientation_window_s,n,score_spearman_rho,median_absolute_score_change,fixed_cut_assignment_ari,refit_assignment_ari +No position smoothing,0.0,0.0,107,0.9833552945234894,0.054545454545454675,0.7461892039309828,0.3175844249017427 +Primary processing,0.4,0.0,107,1.0,0.0,1.0,1.0 +0.8 s position window,0.8,0.0,107,0.9836590342619369,0.054545454545454675,0.85387290419947,0.8053423741454286 +0.4 s orientation sensitivity,0.4,0.4,107,0.9880088170937018,0.042424242424242475,0.8286069303742338,0.42755379100614965 diff --git a/data/derived/trimming_rule_validation.csv b/data/derived/trimming_rule_validation.csv new file mode 100644 index 0000000..e273bb0 --- /dev/null +++ b/data/derived/trimming_rule_validation.csv @@ -0,0 +1,5 @@ +cohort,n,median_abs_start_error_s,median_abs_end_error_s,median_abs_duration_error_s,median_interval_iou +All cohorts,34,2.576923076923077,1.5,4.653846153846146,0.9678538255991654 +Paediatric,9,3.6923076923076925,1.6153846153846154,5.307692307692321,0.9521149241819633 +Urology 1 (2023),10,1.3653846153846154,1.3653846153846154,2.5576923076923137,0.9803009547741184 +Urology 2 (2024),15,4.230769230769231,1.5384615384615385,6.307692307692292,0.955458989679522 diff --git a/docs/ANALYSIS.md b/docs/ANALYSIS.md new file mode 100644 index 0000000..cb500c2 --- /dev/null +++ b/docs/ANALYSIS.md @@ -0,0 +1,285 @@ +# Quantitative peg-transfer analysis + +## Research question + +The analysis asks which measurable aspects of instrument motion are associated +with laparoscopic experience during peg transfer, and whether they can support +transparent quantitative feedback. + +The intended clinical use is not to replace an educator with an unvalidated +score. It is to identify reproducible measurements that could complement +expert observation, make feedback more specific, and support later automated +assessment after external validation. + +## Analysis populations + +Four populations are kept separate: + +| Population | Recordings | Study identifiers | Cycles | Use | +|:--|--:|--:|--:|:--| +| Complete inventory | 115 | 111 | Not applicable | Dataset description | +| Primary motion set | 107 | 107 | Not applicable | Motion inference and modelling | +| Phase inventory | 38 | 37 | 425 | All available dense phase labels | +| Primary phase set | 34 | 34 | 383 | Recording-level phase comparisons | + +The study identifiers cannot prove that a participant who attended two +different events received the same identifier. The paper therefore refers to +recordings rather than claiming 107 confirmed unique people. + +## Cohort handling + +The collection settings differ in tools, cameras, trainers, frame rate, and +coordinate distributions. Paediatric, Urology 1, and Urology 2 are not treated +as interchangeable samples from one acquisition system. + +The analysis therefore uses: + +- descriptive plots separated by cohort; +- feature correlations calculated within cohort and combined afterwards; +- cohort-adjusted linear models; +- within-cohort percentiles when constructing relative motion domains; +- leave-one-cohort-out checks for exploratory models. + +This approach retains common directional evidence without interpreting raw +millimetre, speed, or workspace values as directly comparable across rigs. + +## Task interval and motion extraction + +Blank start and end frames are excluded using one automatic sustained-motion +rule across all primary recordings. The interval begins shortly before the +first sustained instrument motion and ends shortly after the last. Dense phase +labels are used only to check this boundary rule. + +Position is smoothed with an approximately 0.4-second Savitzky-Golay window. +Velocity, acceleration, jerk, path length, workspace range, rotation, active +time, and bimanual measurements are then calculated from the retained frames. +The complete feature definitions are in [`FEATURES.md`](FEATURES.md). + +## Statistical analysis + +### Feature screen + +One constant feature was removed before inference, leaving 29 motion features. + +For each feature: + +1. novice, intermediate, and expert procedure groups were compared separately + within each cohort using the Kruskal-Wallis rank test, which does not assume + a normal distribution; +2. the three cohort probabilities were combined using Fisher's method, which + tests whether the cohort results collectively depart from the null + hypothesis; +3. associations with lifetime procedure count were estimated using Spearman + rank correlation within each cohort; +4. correlations were combined using fixed-effect meta-analysis, which weights + more precise cohort estimates more strongly; +5. false discovery rate correction was applied separately across the 29 group + tests and 29 continuous correlations. + +The corrected probability is reported as `q`. Cliff's delta compares novice +and expert procedure groups without assuming a normal distribution. It +estimates how often a value from one group exceeds a value from the other after +accounting for ties. Confidence intervals use 3,000 bootstrap resamples within +cohort. + +### Cohort-adjusted models + +Eight outcomes were selected to represent task duration, bimanual +coordination, speed, idle time, depth excursion, and the continuous +coordination and control score. + +Each standardised outcome was regressed on: + +- `log10(lifetime procedures + 1)`; and +- indicators for acquisition cohort. + +A one-unit change in the procedure term represents an approximately tenfold +increase in procedures plus one. Confidence intervals use 2,000 bootstrap +resamples within cohort. Probabilities use 5,000 permutations of procedure +volume within cohort and are corrected across the eight models. + +### Exploratory classification + +Logistic regression and random forest models compare: + +- duration alone; +- all 30 retained classifier inputs; +- fixed procedure-count groups; +- procedure tertiles; +- procedure clusters; +- data-derived motion-score bands. + +Five-fold evaluation preserves approximate class proportions. A separate +leave-one-cohort-out evaluation trains on two cohorts and tests on the third. +Balanced accuracy is the mean sensitivity across classes, so each class +contributes equally despite unequal sample sizes. + +## Main results + +### Procedure groups did not define clear motion classes + +No novice, intermediate, and expert feature comparison remained significant +after false discovery rate correction. This is an important result. It means +that the analysis cannot assume every high-volume participant performs the +recorded task better than every low-volume participant. + +Procedure-group classification was also weak: + +| Input and model | Five-fold balanced accuracy | +|:--|--:| +| Duration only, logistic regression | 0.45 +/- 0.17 | +| Duration only, random forest | 0.40 +/- 0.05 | +| All motion features, logistic regression | 0.36 +/- 0.07 | +| All motion features, random forest | 0.34 +/- 0.11 | + +Adding more kinematic features did not rescue the noisy procedure-count target. +This guards against presenting case volume as ground truth skill. + +### Continuous procedure volume retained modest associations + +Eight of 29 within-cohort meta-analytic correlations remained significant: + +| Feature | Spearman correlation | 95% confidence interval | Corrected `q` | +|:--|--:|:--|--:| +| Tool 1 normalised jerk | -0.338 | -0.500 to -0.153 | 0.011 | +| Analysed duration | -0.327 | -0.491 to -0.141 | 0.011 | +| Tool 2 normalised jerk | -0.301 | -0.469 to -0.112 | 0.020 | +| Tool 2 speed peaks | -0.288 | -0.458 to -0.098 | 0.023 | +| Tool 1 speed peaks | -0.282 | -0.453 to -0.092 | 0.023 | +| Tool 1 path length | -0.278 | -0.449 to -0.087 | 0.023 | +| Tool 2 speed | 0.265 | 0.074 to 0.438 | 0.026 | +| Bimanual correlation | 0.265 | 0.074 to 0.438 | 0.026 | + +The effects are modest and distributions overlap. Bimanual correlation also +showed moderate between-cohort heterogeneity (`I2 = 60%`). The `I2` statistic +estimates the percentage of observed variation attributable to differences +between cohorts rather than sampling uncertainty. This result should not be +treated as a universal threshold. + +### Cohort-adjusted estimates + +Three prespecified outcomes remained significant after correction: + +| Outcome | Standardised change per tenfold procedure increase | 95% confidence interval | Corrected `q` | +|:--|--:|:--|--:| +| Analysed duration | -0.43 | -0.72 to -0.19 | 0.002 | +| Bimanual correlation | 0.29 | 0.09 to 0.51 | 0.030 | +| Coordination and control score | 0.28 | 0.07 to 0.51 | 0.033 | + +These estimates support faster completion and stronger temporal coordination +as the clearest repeated signals. They do not establish causal effects of +training. + +### Acquisition setting can dominate raw movement + +Cohort alone explained 88% of the variance in Tool 1 speed and 92% in Tool 2 +speed. Procedure volume added little after cohort for these outcomes. + +This result supports separate cohort plots and warns against a single raw-speed +threshold across equipment configurations. + +## Data-derived motion-score bands + +The coordination and control score combines bimanual coordination and +instrument motion control. Within-cohort percentiles reduce the effect of +acquisition scale. K-means with three centres gives: + +| Band | Recordings | Centre | Procedure-count median | +|:--|--:|--:|--:| +| Lower | 16 | 2.16 | 40 | +| Middle | 41 | 2.87 | 20 | +| Upper | 50 | 3.50 | 80 | + +Observed cut points are 2.51 and 3.18. Agreement with fixed procedure-count +groups is negligible (adjusted Rand index 0.019). The adjusted Rand index +measures agreement between two group assignments after allowing for chance. A +value of one indicates identical assignments, while a value near zero +indicates no greater agreement than expected by chance. + +This mismatch is clinically informative. Defining skill from procedure count +alone can label a strong low-volume performance as novice and an inefficient +high-volume performance as expert. Motion and experience should therefore be +reported as related but distinct evidence. + +The three-band solution has silhouette 0.534 and Davies-Bouldin index 0.557. +The silhouette score is higher when recordings are closer to their assigned +group than neighbouring groups. The Davies-Bouldin index is lower when groups +are compact and well separated. Two- and four-band solutions also have +plausible internal indices. Three bands are retained to aid interpretation, +not because the data prove three natural competence classes. + +Logistic regression and random forest recover the band rule with balanced +accuracy around 0.95. This is expected because the target bands are calculated +from the same motion domains supplied to the classifier. It confirms software +consistency but is not independent prediction and is not evidence of clinical +validity. + +## Phase analysis + +The phase subset describes where time and corrections occur within a transfer +cycle. Labels include reach, grasp, transfer, place, nudge, idle, and dropped +object. + +Only four lower-band recordings enter the primary phase comparison. Drop +episodes are sparse, and several phase measures are non-monotonic across bands. +The phase results are therefore exploratory. Expanded annotation will improve +coverage, while an independently annotated sample is needed to quantify label +reliability. + +The current phase analysis should be used to: + +- identify actions responsible for long cycles; +- examine phase-specific speed or path rate; +- count visible drop episodes; +- develop candidate feedback for corrective nudges or repeated grasp attempts. + +It should not yet be used to assign clinical grades. + +## Potential value to surgeons and trainers + +With further validation, the framework could support: + +1. objective evidence alongside expert observation; +2. feedback that distinguishes timing, bimanual coordination, motion + smoothness, and workspace use; +3. longitudinal tracking within the same simulator setup; +4. identification of a specific phase responsible for inefficient completion; +5. transparent comparison of training curricula without assuming procedure + volume equals competence; +6. development of video-based systems trained against high-fidelity motion + measurements. + +The strongest near-term application is formative feedback. Summative +assessment would require blinded expert ratings, independent cohorts, +predefined thresholds, test-retest reliability, and evidence that score +changes correspond to meaningful training or clinical outcomes. + +## Reproducibility + +The analysis entry point is +[`scripts/build_scirep_analysis.py`](../scripts/build_scirep_analysis.py). +Package versions are pinned in [`requirements.txt`](../requirements.txt). + +Random seeds: + +| Operation | Seed | +|:--|--:| +| Bootstrap and sampling | 20260618 | +| Classification | 13 | +| Principal component analysis | 20260618 | +| K-means | 20260618 | + +Aggregate outputs include: + +- [`all_trial_feature_statistics.csv`](../data/derived/all_trial_feature_statistics.csv); +- [`cohort_adjusted_models.csv`](../data/derived/cohort_adjusted_models.csv); +- [`cohort_specific_effects.csv`](../data/derived/cohort_specific_effects.csv); +- [`continuous_performance_validation.csv`](../data/derived/continuous_performance_validation.csv); +- [`kmeans_cluster_summary.csv`](../data/derived/kmeans_cluster_summary.csv); +- [`kmeans_validation.csv`](../data/derived/kmeans_validation.csv); +- [`processing_sensitivity.csv`](../data/derived/processing_sensitivity.csv); +- [`phase_kinematics_summary.csv`](../data/derived/phase_kinematics_summary.csv); +- [`analysis_manifest.json`](../data/derived/analysis_manifest.json). + +Participant-level intermediate tables are deliberately omitted until the +complete governed dataset release is available. diff --git a/docs/DATASET.md b/docs/DATASET.md new file mode 100644 index 0000000..07b6d89 --- /dev/null +++ b/docs/DATASET.md @@ -0,0 +1,214 @@ +# Dataset guide + +## Scope + +LASK contains video and instrument measurements from a laparoscopic +peg-transfer task performed in box trainers. A participant uses two graspers to +move objects between pegs. One recording contains one participant attempt. + +The collection was designed to support: + +- instrument detection, segmentation, and landmark localisation; +- six-channel and seven-channel pose estimation from video; +- instrument tracking through occlusion; +- analysis of motion, coordination, and task timing; +- study of acquisition shift between training settings. + +It was not designed as a validated clinical examination. Procedure counts, +career stage, and calculated motion scores should not be interpreted as +interchangeable measures of competence. + +## Release stages + +The permanent concept DOI is +[10.5281/zenodo.20752650](https://doi.org/10.5281/zenodo.20752650). +[Version 1.0](https://zenodo.org/records/20752651) contains 37 recordings. +Further recordings and phase labels will be added as new versions. + +### Public version 1.0 + +| Cohort | Archive | Role | Recordings | +|:--|:--|:--|--:| +| Paediatric | `DatasetB_BAPES_val.zip` | Validation | 10 | +| Urology 1 | `DatasetC_6DOF_test.zip` | Testing | 8 | +| Urology 2 | `DatasetA_7DOF_train.zip` | Training | 19 | +| **Total** | | | **37** | + +### Complete collection used in the quantitative analysis + +| Cohort | Available | Primary motion set | Phase labelled | Primary phase set | +|:--|--:|--:|--:|--:| +| Paediatric | 30 | 28 | 9 | 9 | +| Urology 1 | 24 | 24 | 10 | 10 | +| Urology 2 | 61 | 55 | 19 | 15 | +| **Total** | **115** | **107** | **38** | **34** | + +The primary sets retain study identifiers represented by one recording. +Repeated or multipart recordings remain in the dataset inventory but are not +treated as independent observations in the primary inferential analyses. + +## Cohorts + +### Paediatric + +Data were collected at the British Association of Paediatric Endoscopic +Surgeons meeting in November 2024. Participants were paediatric consultants or +trainees between specialty training years 3 and 7. The questionnaire recorded +lifetime and previous-year skin-to-skin procedure counts. Position, +orientation, and relative jaw-opening channels were recorded at 13 frames per +second. + +### Urology 1 + +Data were collected at a urology simulation boot camp in October 2023. +Fenestrated and curved instruments were tracked at approximately 26 frames per +second. Position and orientation were available, but no jaw-opening channel was +recorded. + +### Urology 2 + +Data were collected at a urology simulation boot camp in October 2024. +Position, orientation, and relative jaw-opening channels were recorded at +13 frames per second. + +The trainers, tools, camera settings, coordinate distributions, and insertion +angles differed between cohorts. Raw kinematic values should not be pooled +without cohort adjustment. + +Degrees of freedom describe the independently measured motion channels. Six +degrees of freedom comprise three-dimensional position and three-dimensional +orientation. The seventh channel is the relative jaw-opening measurement. + +## Archive structure + +Each public archive follows this layout: + +```text +DatasetX_.../ +├── videos/ +│ └── .mp4 +├── annotations/ +│ └── .npz +├── DatasetX_..._kinematics.csv +├── participants.csv +└── README.md +``` + +The videos are H.264 working encodes. Dense kinematics are aligned by frame +number and time. Instrument annotations are sparse, usually sampled at +approximately every 100th frame. + +## Kinematic files + +The Aurora electromagnetic tracker from Northern Digital Inc. records tool +pose on every sampled frame. + +### Position + +Position columns ending in `px`, `py`, and `pz` are expressed in millimetres. +The sensor coils are mounted near the instrument base. A fixed calibration +transform estimates the instrument tip, and positions can then be represented +relative to the camera frame. + +### Orientation + +Orientations are stored as unit quaternions. The seven-channel archives use +`qw`, `qx`, `qy`, and `qz`. The six-channel archive retains its original +`q0`, `q1`, `q2`, and `q3` naming. Check the archive README before converting +between quaternion conventions. + +Angular movement in the companion analysis is calculated from the relative +rotation between adjacent unit quaternions. Quaternion signs are aligned before +the optional orientation-smoothing sensitivity analysis because `q` and `-q` +represent the same rotation. + +### Jaw opening + +The two seven-channel cohorts contain voltage-derived jaw measurements. The +current files may retain `tool1_angle` and `tool2_angle` as historical column +names. These channels should be treated as relative aperture signals unless an +independent physical angle calibration is supplied. + +For descriptive analysis, the voltage is low-pass filtered and mapped within +each recording so that the 10th percentile represents closed and the 90th +percentile represents open. Values are clipped to an opening fraction from +zero to one. This removes between-recording voltage offsets but does not +produce an angle in radians or degrees. + +### Time + +The seven-channel cohorts use seconds. The six-channel archive retains a +millisecond time column. The paper analysis uses fixed cohort rates of +13 frames per second for Paediatric and Urology 2, and 26 frames per second for +Urology 1. + +## Instrument annotation files + +The `.npz` files are compressed NumPy array archives and can be loaded without +pickle: + +```python +import numpy as np + +annotation = np.load("annotations/Trial01.npz") +print(annotation.files) +``` + +Important arrays include: + +| Array | Shape | Meaning | +|:--|:--|:--| +| `frame_idx` | `(F,)` | Frame number in the source video and kinematic file | +| `toolN_mask_points` | `(M, 2)` | Concatenated polygon coordinates in pixels | +| `toolN_mask_offsets` | `(F+1,)` | Start and end offsets for each frame polygon | +| `toolN_ee_tip` | `(F, 2)` | Instrument-tip landmark | +| `toolN_ee_left` | `(F, 2)` | Left jaw landmark | +| `toolN_ee_right` | `(F, 2)` | Right jaw landmark | +| `toolN_joint` | `(F, 2)` | End-effector or shaft-joint landmark | +| `toolN_vis_mask` | `(F,)` | Whether a segmentation mask is present | + +`N` is 1 or 2. Landmark coordinates are stored as image `(x, y)` positions. +Unavailable landmarks are represented by `NaN`, meaning not a number. + +## Participant metadata + +`participants.csv` contains one row per released recording: + +- dataset and split; +- release trial identifier; +- handedness; +- lifetime laparoscopic procedure count; +- procedure count during the previous year, where collected. + +The handedness questionnaire was based on the Edinburgh Handedness Inventory. +The analysis uses the lifetime procedure count as a continuous experience +measure. The historical categories are: + +- novice: fewer than 20 procedures; +- intermediate: 20 to 99 procedures; +- expert: at least 100 procedures. + +These labels describe procedure-volume strata. They are not expert ratings of +the recorded peg-transfer attempt. + +## Dense phase labels + +The phase subset includes reach, grasp, transfer, place, nudge, idle, and +dropped-object labels. It is documented separately in +[`PHASES.md`](PHASES.md). + +## Known limitations + +- The current public release is smaller than the complete collection. +- Cohort and acquisition setting are confounded. +- Jaw opening is absent from Urology 1. +- The relative jaw signal does not provide an absolute physical aperture. +- Fine object possession and grasp quality cannot always be inferred from the + kinematic channels alone. +- Experience metadata were self-reported. +- Phase labels were produced by one trained annotator. +- Study identifiers cannot exclude the possibility that a participant + attended more than one event under different identifiers. + +These limitations are retained explicitly so that future benchmark results can +be interpreted against the evidence the dataset actually provides. diff --git a/docs/FEATURES.md b/docs/FEATURES.md new file mode 100644 index 0000000..339ab0f --- /dev/null +++ b/docs/FEATURES.md @@ -0,0 +1,241 @@ +# Motion feature definitions + +## Overview + +The analysis converts dense three-dimensional position and orientation +measurements into interpretable summaries of instrument use. This page defines +the main quantities in plain language and gives the calculation where it +matters. + +The machine-readable dictionary is +[`data/derived/feature_dictionary.csv`](../data/derived/feature_dictionary.csv). +Its display directions are analytical hypotheses, not validated clinical +preferences. + +## Preprocessing + +For Paediatric and Urology 2, time is calculated at 13 frames per second. +Urology 1 uses 26 frames per second. + +Position is smoothed separately on each axis using a third-order +Savitzky-Golay filter over approximately 0.4 seconds. This corresponds to +5 frames at 13 frames per second and 11 frames at 26 frames per second. The +filter fits a short polynomial within each moving window, reducing +frame-to-frame noise while retaining the overall path. + +The analysed task interval starts 0.5 seconds before the first period of +sustained motion above 2 mm/s and ends 0.5 seconds after the final sustained +period. The sustained interval must last approximately 0.4 seconds. The same +automatic rule is applied to all primary recordings. + +Dense phase labels are used to validate, but not define, the primary automatic +interval. In 34 phase-labelled primary recordings, median interval overlap was +0.968 and the median absolute duration difference was 4.65 seconds. + +## Single-instrument features + +Let `p(t)` be tool-tip position at time `t`. + +### Speed + +Velocity is the rate of change of position: + +```text +v(t) = dp(t) / dt +speed(t) = ||v(t)|| +``` + +Average speed is the mean speed across the analysed interval. + +### Path length + +Path length is the sum of the three-dimensional distances between consecutive +positions: + +```text +path length = sum ||p(i) - p(i-1)|| +``` + +It measures total instrument travel in millimetres. A shorter path is not +automatically better because the required path depends on object and peg +locations. + +### Acceleration and jerk + +Acceleration is the rate of change of velocity. Jerk is the rate of change of +acceleration. Abrupt starts, stops, or corrections increase jerk. + +The dimensionless normalised jerk used here is: + +```text +normalised jerk = +sqrt(0.5 * integral(||jerk(t)||^2 dt) * duration^5 / path_length^2) +``` + +Duration and path length appear in the normalisation. Normalised jerk is +therefore not independent of task time. + +### Active and idle fractions + +A tool is considered active at a frame when speed is at least 5 mm/s. Its +active fraction is the proportion of active frames. Idle episodes are +contiguous periods below 5 mm/s lasting at least 0.25 seconds. + +### Speed peaks + +Speed peaks are local maxima above 5 mm/s with at least 2 mm/s prominence and +at least 0.25 seconds separation. They provide a simple description of +stop-start movement, not a direct count of corrective actions. + +### Workspace + +- Image-plane working area is the `x` range multiplied by the `y` range. +- Working volume is the product of the `x`, `y`, and `z` ranges. +- Depth range is the range along the camera axis. + +These are axis-aligned bounding measures. They do not reconstruct the exact +shape or occupied volume of the path. + +### Rotation + +The change in orientation between two frames is obtained from the relative +rotation between their unit quaternions. Total rotation is the sum of the +frame-to-frame rotation magnitudes in degrees. + +Rotation per path is: + +```text +total rotation in degrees / path length in millimetres +``` + +Angular velocity variability is the standard deviation of non-zero angular +speed divided by its mean. + +## Bimanual features + +### Bimanual correlation + +Bimanual correlation is the Pearson correlation between the simultaneous Tool +1 and Tool 2 speed traces. A positive value means the tools tend to speed up +and slow down together. It does not show that the instruments follow the same +spatial path. + +### Bimanual lag + +Cross-correlation compares one speed trace with shifted copies of the other. +The shift with the greatest similarity, searched within plus or minus +5 seconds, defines the bimanual lag. A lag of zero means the strongest +similarity occurs without shifting either trace. A larger lag indicates a +greater timing offset, but it does not identify which hand caused it. + +### Simultaneous motion + +Frames above 10 mm/s are treated as clearly moving: + +```text +simultaneous motion = +frames where both tools move / frames where either tool moves +``` + +### Concurrent efficiency + +When both tools move faster than 5 mm/s, their speed balance is calculated as: + +```text +minimum(tool speeds) / maximum(tool speeds) +``` + +The reported value is the mean across those frames. A value near one indicates +similar concurrent speeds. This is called concurrent efficiency rather than +concurrent tool use because it measures speed balance during concurrent +movement. + +### Bimanual symmetry + +Bimanual symmetry is the shorter tool path divided by the longer tool path. +It approaches one when path lengths are similar. Equal path lengths are not +necessarily optimal for every transfer. + +### Tool-distance variability + +The distance between tool tips is calculated at each frame. Its coefficient of +variation is the standard deviation divided by the mean. This describes the +stability of inter-tool spacing. + +## Motion domains + +The paper uses four descriptive domains. Closely related or mirrored tool +measurements are averaged into constructs first so that duplicate channels do +not receive extra weight. + +### Bimanual coordination + +Equal-weighted constructs: + +1. bimanual speed correlation; +2. simultaneous motion and concurrent efficiency; +3. stability of the distance between tools. + +### Instrument motion control + +Equal-weighted constructs: + +1. normalised jerk for both tools; +2. rotation per path for both tools; +3. angular velocity variability for both tools. + +### Task efficiency + +Equal-weighted constructs: + +1. analysed duration; +2. idle and active fractions; +3. speed-peak counts. + +### Descriptive workspace compactness + +Equal-weighted constructs: + +1. working volumes; +2. image-plane working areas; +3. depth ranges. + +No clinical preference for a smaller workspace is assumed because appropriate +excursion depends on task phase and trainer geometry. + +## Coordination and control score + +Each feature is first oriented according to its prespecified display direction +and converted to a percentile within its acquisition cohort. Let `r` be the +mean construct percentile. A domain is displayed on a relative 1 to 5 scale: + +```text +domain score = 1 + 4 * r +``` + +The coordination and control score is the equal-weighted mean of bimanual +coordination and instrument motion control. Task efficiency and workspace are +not entered as separate score features. + +This score is relative to the observed cohort. It is not a validated Objective +Structured Assessment of Technical Skills, Global Operative Assessment of +Laparoscopic Skills, Global Evaluative Assessment of Robotic Skills, McGill +Inanimate System for Training and Evaluation of Laparoscopic Skills, or +Fundamentals of Laparoscopic Surgery rating. + +## Motion-score bands + +K-means groups similar score values around a chosen number of centres. With +three centres, it partitions the continuous coordination and control score +into descriptive bands: + +| Band | Recordings | Centre | Observed cut point | +|:--|--:|--:|--:| +| Lower | 16 | 2.16 | Below 2.51 | +| Middle | 41 | 2.87 | 2.51 to 3.18 | +| Upper | 50 | 3.50 | Above 3.18 | + +The cut points are conditional on the current score construction and cohort +percentiles. They should be recalculated when the dataset expands. Two- and +four-band solutions also had plausible internal indices, so three bands are +retained for interpretability rather than claimed as natural clinical classes. diff --git a/docs/PHASES.md b/docs/PHASES.md new file mode 100644 index 0000000..61cf67c --- /dev/null +++ b/docs/PHASES.md @@ -0,0 +1,74 @@ +# Phase annotation protocol + +## Purpose + +Dense phase labels divide a peg-transfer recording into observable actions. +They support cycle timing, action composition, and phase-specific kinematic +analysis. They are not ratings of how well an action was performed. + +## Annotation process + +One researcher, O.C., annotated the phases. The definitions were developed +through direct instruction and discussion with surgeons at the urology and +paediatric boot camps, together with observation of peg-transfer performance +at those events. + +Participant seniority and procedure-count metadata were not visible during +annotation. Differences in apparent confidence and fluency could still be +perceived from the videos, and the annotator sometimes formed informal +impressions of skill. Those impressions were not recorded and were not used to +define the phase labels. + +No second annotator or adjudication process has yet been completed. Inter-rater +agreement therefore cannot currently be reported. + +## Labels + +| Phase | Operational definition | +|:--|:--| +| Reach | Movement towards an object before attempting control | +| Grasp | Attempt to obtain control of an object | +| Transfer | Movement of an object between instruments | +| Place | Positioning or releasing an object at a destination peg | +| Nudge | Corrective contact intended to reposition an object | +| Idle | No task-directed instrument action | +| Dropped | Visible loss of object control | + +Per-frame exports can also contain tool-specific labels, cycle index, active +tool, and events. The `active_tool` field in an earlier consolidated export is +zero for every frame and is not used by the paper analysis. Tool activity is +instead derived from speed or from the phase label, depending on the analysis. + +## From frames to cycles + +A candidate cycle is retained only when: + +1. it contains a `place` label; and +2. it contains at least one `reach`, `grasp`, `transfer`, or `nudge` label. + +An exporter could occasionally place a boundary segment containing only +placement frames into the next cycle index. Such a segment is attached to the +immediately preceding interval only when that interval has no placement. +Other placement-only residuals and attempts without placement are excluded. + +This rule produced: + +| Analysis set | Recordings | Placement-complete cycles | +|:--|--:|--:| +| Full phase inventory | 38 | 425 | +| Primary phase set | 34 | 383 | + +Cycle measurements are first averaged within recording and then across +recordings. A participant with more completed transfers therefore does not +receive more weight in recording-level comparisons. + +## Current interpretation + +Phase results are descriptive. The annotated subset is incomplete and its +motion-score composition is imbalanced. In particular, only four recordings in +the lower motion-score band enter the primary phase comparison. Expanded +annotation and an independent reliability sample are planned. + +Phase labels may be used to locate where time, corrections, or dropped-object +episodes occur. They should not be converted directly into clinical competence +grades without expert validation. diff --git a/paper/figures/fig1_cohort_structure.png b/paper/figures/fig1_cohort_structure.png new file mode 100644 index 0000000000000000000000000000000000000000..e6781106a729e61e2afec3de2f31841117b00aeb GIT binary patch literal 54496 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 literal 0 HcmV?d00001 diff --git a/paper/figures/fig21_cohort_effect_forest.png b/paper/figures/fig21_cohort_effect_forest.png new file mode 100644 index 0000000000000000000000000000000000000000..f2f44132dae40e805a992ac8461e5a0d67cde015 GIT binary patch literal 106271 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 h|6l(6-k(j>Ivit?&*_&X1u{Wo+rhExCm literal 0 HcmV?d00001 diff --git a/paper/figures/fig23_continuous_performance_validation.png b/paper/figures/fig23_continuous_performance_validation.png new file mode 100644 index 0000000000000000000000000000000000000000..d2dd303c12869112639abeea691b5cc9e3523de9 GIT binary patch literal 265783 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%0DCqm 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

    *yZ1YIfWU_%9Z zIsBs9OR2gJ;1i^}VEga^z0SslHCJC&NT&;B%-OT7pFmfNKgS*cIKO&JLXyX>;It1PTdZ0ksoj}XDZuM0_0Fi57D(*!I zJ0ct0H!_>>6;-pcZapp5QJBMgRgURg0xQNSB(YhQKe?aKQ+B4h1jqA^cw}$tb8nC= z24L!mhhl=oOtwX_D6G@DA3vrkP3Be5rgz{4UB1Gkr=2o0J39s1?wXmgVg&11eGrFV z-~jF&ND7&LW3)OKaH6xTsd^1G zFPZ@B_Z@=zK=^1Oe-aOQLJwu%>cw^$!^skR$lu~zm+KKfY!K@&>sOit*F4y6;M;W< z?#<%|7p^~NBWu6B6^i$AW@cs%bXZ>!(te#>Bwwe;V|WMQa+TI?>FO}gHA(#ZV;Km$ik*_~h6{LE2B zeKvI$j6nQ*aa~pU&hQDQm}z7+%WzQPeaX%77>|BbT^jruKxL!$gSzMki=bJGQ=>O- z7>@{S$b@%K!bsth65aNFxbVGwoS{*~TtbL|n!j&lu(!AO$&i6hX4h<2{ED;N{O45G z#-RZX$1mTZF+(gNA#u6-IIQeKplFTn4~*vJ-={#ixohbH{!ZdkTfopqYn&jk~AJ%-s(qk#xVHL$^?fIBRa2cc(beS0JzRWM*LC2#j-i;V0V{9IRVB#8HUuU+1zttiQHF@wA3hfCI;ygYV?U8X4ZhTmpgU&GOSQ0G z`uw@3ro6F^=gvGcZ>++j60OHyt2G5pu3hN!oU;fbq2zx29>zql0+1EoGU<3nI&d96 z3d?4N?0`0=Y)Av=%Q<@@XT4bI2hLXjiX{rzYlAN(O|##hjbguw56PYm!=Dpp+eYNL z{&^MfmC+|w9ZAY@1GU-mUHec)#f;9~J9TLlfzRkc<8Q)})BXO&pvB7E@gJnAP~K{T)M=9fCvfznc3VOt^;3SXN;| zy9toxFAo=VF5LYgqGH<3&d#3GzaMxvc?ax&U=r6~IV{M{#Z}Vp&%692DJhBWc~=a4 zMB=wqM(zw88Z*3=#lMjI`~IlVu*hWsb++x{mH`U&(Z9PD;@+=W2L`W)f8|%->*+4{ z&s-5Z3Heh&_l$IWXi%Kz-c1ML?T5TM_7=-m*`p~RtEujH4<%y>=G9TYv~+F}n4&Y% zw`K%(Xg|}lCJiTxo`~q^EK$E@89!nn@T>YcEQwblt+5KDt%eloFzbF*^~;=`oRCHF zM;v~f?c-=`YZHiPW@d){T;-Ak9T=epFQ^eP+WAMVF1VH6VjtW6uj%=oq!G{7EjkV( zP`r$sXRr2+4nZ}i-|1g5Zow^ytBihko}J>Fkx2t+FTBP%a}PtI$o@pc$10p z&Z}bOy%?c2e`p^&t>A$*^TO8h-PO7SfB&wpV)Iq&{ndfVl}KWe-2#Hgh!%$9xH~zy zzFUFfF|HM=FqAZ+U#|La09GBI%LR?>z@cX;O*WUR+oMcOOil?5jF(&Mfc4_#5|@bA z*?)}}m7628Bk@^R3U{8pR<*iOTNIH-=#3I*1ISRqxYckSXrNDbxrvlW{GBx+G115N zwndlroBxR!UGm*1YL`$M0B}d5%^6?vM^;u_>VEuqJZje~Uk*YX&|^a+pg}1U1XolT zS0SXl_rfIsvJ;4ytg_21ouPLCquCc>>-P3Jkqp6W;>!fuvjpgEOcw* zb^A$4)ss3fv~e2dk=I_z5?lPL}mzp1o!jU zUi2bk3bmz3%FU%aOE3E~eoyO`U)1XS0>%HmFARgz1dO%Nv2y}Xt-Y7Tpe*bT(Gv`K zRapRE`_;{y1SHU?A9W|(iR(h3ybB&MvtD=rAP%>W9?*Bl0PD@ef}N{Y3p9gnY)B4p z=_tslk!~@}kx4DyzcS7V+)6|BkN57AJU}cPN8f=yGLp+dpJ7(~BIYCZF*4FvyX&P79wlQW?@ZVhS@`)a;Uz~H`y38d!axGcu9v%WZS>dbqHcV1v2TUt2|*+swP75N2+z18L^2&KwlgK$(dfXYJ80CV5H;28J)L8fE%|M;X6UFD2X2&1SevcsG1(8f9>r=tsuoYgVi279LLCfgKMpu0r z^P!bzXEMqXJ!ZdilMl4o=g5h-ee||R!eqDCP^Deb;ck3V%BjOHb$!$nkP0w71#|;D>!f^miX=&T?-tlM_j0Yu8t20_s`u8 z1fP+VBrODc9k#*BDxP`ItC5V>`;m)_RB_Ma;}cO^za^@bjvt+f!F9R&piMj{uPOE#F5?EIkj9%gv;8-$7` z`tB(CO6Z#x=7na*CzacJPDoP5_{wERh2Goud6gQg^j z0Ik5V+6ANz-qC4`MTE1wWjV4_CgT7V^Y04Id4lw!tG&c~5+fhF=Fo(r$4vPl<3BcJ zN3~aM6CylS)X9&pu4}Ih{~0o@^Jzba6a-*mxJk-!0&G_(ApYc`EeZt zj|2{WPnmHb1>y+#tb<#_TTmNP_vRLL;Y5a-!D17#z$rb;Gx`*gT0(%uFoGtY_7D2R zMxe84kh)Y&1>YX|!7p17V9`ZCvvZ4nu>E15!Fr{975Mm5U`QusY|IEKKp&|1rAoe<>zzcTE;0lu@OLu(=ju;^HU=OPt`r&- zv;lP|uk*?mXaT}=g8*Nwfi?Z0J)*^qDml3RnxPjY;xsUtM#Xai39UrivV&_-Ct2o| z5OngL08Mtk>KSVgf;LAC^O}$2e-cf z=Zi3T<p1~cdf*6V3)ddi$lmtrJNY3;7!&f)*`vPjc||xVA6L=!qT5StZ|XQm ziU&)aZ~vbPE3doB%1!)8T@?cs2n$c)f^IEe)p8@ty}2 zBhvz?4*?zI^-90~32@%7)(Ial>9$SGJZ?LZip{{H@=PA8F@JrSCa z`1SQMF%#}jKBRQc@2_F7zBhd@xI-rhK_&hK4$TA@TL@O#%}+WCYhJi%zkouL9W*}s zKZ0hy{I7Ic(#~AOec%zFA54!-5x#j}$Lt$>nWIjW@1!z3{a_i9CbTkE<(RcwQMURK&c~iU5=BvPyk5wch>HnIa%` zm)LJs;Jj|K5mkR*i9PPiMP}~DLr;M>;j`f;DE_TDKe&jnv8b% zM6PQ`L>bYb_xH1JhRKW-BIK~&U@zu#=f$bj=JSkyhLsY}3KD3c3rYcp1U9Ku zIPQ&q09U^JSKYNLD~0^UCB*oGh1luox&m0@q|3Xi1oh1STXd)~1!$XF&CxKkva){g z_*-CYJ~`UlqJDXG2mE>vf$TX(MhEpha}Y1yOr^~vU~nwoK2iMhGC{acM=1bIlRKG42g@GOu7 z+IR+avxB;h)QDlQ=vRP2>sJz$Up%?nLrRD^C3`q4KeEE% zPDgSKW(94qTz*K;5n4y=o7#Yf8MzxmlOyT}192m`B)SJj&le`r0H9I!54wny?aWIU z5g7>(afRL=e|qdhA7VXiv0*U`l>Z&%Br$pFfQ?T#FHWp zem4uFl_o&&2c)k?$n+1P+1uCrpH$Num1qh?gm1ly!m9D(P&>ITV!}xS_=4)#_~9{r zg-8mLD!`8b%ho4LC4=buNuY~2$>V*Oc9Qqc9l!*;D1(-k=l=%m@ab%DlZy9Y#`||7 zBM5@-k}RdmoF@fgH1}*s2JLCz#>B#*^v-u57}&v{2kY_R!ds50@JLHbI{^Y(JFo`4 zJ$?ch-EeiX2~kRd;lR@N2>dGTc~a5|=;ErYp2w^pKR;%;IaR&h*?<`RBHIW0T@U~x zI&3)H5Sbb7&cf3^gRklhfPTY*{rWlQ|D;6uofea6A)g9w`)e3RER%Y30WVKPm;V;O zpdHz%1ugn8aTnQ_JEO1Oc8rT8>F4}6-&^j_iX7jP)au&@EGDZH@8h9s8!KS&H37_| z1_0p~+^;`QW#6aF{!v<@2`R_ZV;wHSW14;37c>bLuJe7ok{`45CNs!C%zX&|- z0FKJjfS<}mNBoBD0!HQsfNQunTW2H0)=vx`9UW(+o+8jiJQcr^Q=k>q2>w$ax>R=! z>~Fc$nha2MgL#9r^NDLrRakuAQMGl*Lx;T1=YL#N0o1NHFc1I?8h}SvDUC=?a7P!AWT2T&}TfY#{XZRtX zOIH&MH2nFk{x@WE)_{wig2j;3)uqP6$A=PVPfUKttVHYJJra*tm_+@M7Cql=%nOMC zGSF+#Q^L1?r(I-n7O@fr6E~DMadRL=gVN+>Wbk+XQdSKZGi*Ir-r+2$sO&ow3cj0t zWjwjm!&Ebh@3+(WG~^=RD8s0SzIZOl1vYc@zp|T1b>27W=0U^G9zG5O(1P~#IOfpTs{GOA;hRE2X^FX zGi-Tv8K_dQQz>K~pNs?m*U1awI%!x)BGW7Tw6Tgdpo0Zccn8woe_=r!?C<9GDOe7sp@_Li5#Sk$n`P z+~|ceVUQtf#uViMGeQbl3YlLBET`x4f288tF-JVID!$cRm@=&X6ww%_C4YnsBT_aJ z^#f^#VCL{4=)BkMT8x$xLC*dDu*{MCzKz=K_*2C|7F=;_pZm`)HI0pp>B`7n+2OQ2 zs}hsMuB4;IB7vW(VU4eFx*qrZ>C2a&T?pOIon7MT9sBXg#POkHQIYHTV9D^Xv+-BH zJh`~H<1t0xvYrYsy}K;R7l;xZdQz9$$KCa26W_}E&FE8Xc$3p$!3$lpb?cyJa6#af z?UjPP--%+?TiEdJpbS8cYO<^%j_v%=HtIc&&!%Ko3qfBP$)8Ne-M8d{oo(5>Q4vRU z%nV56Z{bkeDaC&G+@6W-<^J+G>^n?fZVl?#rs_J5aY3TtdQ;aDT%6`XZ%AI2v&QZn zAYnh-w6jM77~u0Qi;-JZcvz2ADopS7rf>?Gh1<*T>@|c(FC22h<#mTAHvXofqm|Kl zl<4i>xdmj36p+giT7vhT&rFY#=}j+-&Gx-UC&FGEFK}5thC5Yxgk^wa@dQ>vF-uFb zFVvU)y|7Kp2-{ndg*zX3ffeEd)#XtCcxE#bbZR*i-oD`xA_jl-CW# zwE(Hz3*FS$%jHwSzhL^30=dy;kZE={1#wPAm=hIOVLfHKX+Ihj9xafmJV3hmmfzAY zIU8BgC}$SLj9Qz2_eYWJOJcAWi&Nm8@cMBxuv8T8JXu(pg6Zf6mr6bnRzeAs&XFq6 z@hh6FcHgahlU+9M;kr|IxLa2YgI%L>@gES67htSV3Dszk9s%Oc`U`j+eHxa4T{B(G zDeL@trW_bJpWCkH#f;J3X*tb+nCs5J5+gAEHG3NC)u6_m#xyNjxGp7EmM2*`r801i zJ6^o?NJ$HFfPhZ&c!^@t558C>bDse9a`*G+7xFaJ%Ma9=Fp!@KNU*XYJFW9&}>9%EkC85W? z3gR^2n(ceD)brkUk_cW1rV-@t006ovux7Kb3)Y4XLGJnsP%o(v&MU1CAv5YVj?|49 z3;sD3X!v%Ihm;fMtW{^Q9uZT!b`C!}_CZ6jIj)A%SQjosq(RINdfw{%(D3Lr3}BBS z5d786-5-uwhM`<{twQy>yQayhE*tFwI9MWMK0HxxVQMM7D`@@geNrz(jm{4|=Rl04 z^us>rQ#~d#%(fWb%kO|EPyz6o`CqV}-W|*pYwj~nWV~pst4p>VKVtu*n`QAh{P8w? zM$6J+6HS(azK7>>-k{Eiu)8=eN0jO%?7VV6Te9)I-3ZydPxhc$I1hfrU6!1MEp&{t z?TW5|kHX&)gdcFFMQU*%@;pI>9avbZ_H$eh7fO~*fy zK31{Ls-E)Jv8Qg2Zo0sRO})2LYr5?25qnq1My5?Z4z)7##eVrUJMAL!hojz%=;^=0 zI-8H`@|f=<h#mrVwX%!Ge6tgwn|P4l9S{Nin>q{kSvSTN=_mIiwti}?0wGJr(WHvckAA& zd#fH*8*$sfTJxXt3uBCLOupt+eX8p#;|2>4<`aS^>CWsNZlCee|0Rsy;N1H;L$iK< zgdAocz1rj2A$eCqe8^+jAn#d3+~GHTc-Lhuoji{EG-e-@jd*=pyYQA>!&5B-bEnrU0U*3ZJCu3yJN&AJn{*s%f|i=p5e}<8t>~WG-yH5dHLc~A(_}QK zs$w&oE9lrU$n%ip?3(}yw?rp)vFF(9Q(Zgp>OOs?=UOXxWFd zKCWdP)kcJEd|~jq0lk%u{VD{oPzKj6rf=F_OVf=&J|Ei`>CD58w&6rIkBWT}OM?qY z8kEyc9v{Y^?ZGd4dOFuOSQdNW_MsQ3CQU1d+Bvqd0!6PNd@e?5 zNPsGZz@+l!a34>SW80~2_naL%eg~q-zM-Q#qQJt4Z+_s2n&0GECGJ@eFI%Fu3ni?K z=&yY6%q$*GF-IT6*TM0nQbSlA8A&J@rkq-?U`BG5YobcA3C@UMSa%zGz%4k&9>S)ZiCIg)rf_Cf*xzsk# z+-qq>zwtgJR|C>YJL9NhG>k?VAqAJOYr94r%@U*_Y;N!oe%iVXwQZA?gUr@ zOX?y~n!_V+C^fTO4)IWX9#wQB@_vw-o=YEVwRGSEGac!; z{#c;_H}!TruOkl-E1S1N2Bpr^x3}>AmC=?q0{D*c#QPpCAIu{rX;(Un9pzC6@fLTG zQ189XwrskkDO10~>S8}66Q^Jw%rl0BeUQVps4rMPvwYq{%Q#52fn1`D2J_gW+K-!9v@jZTt3v`5D&iImu)+#uF!$CMLown5e9sh4Tm zec9v39xt^BTkuG5HE@<xLQrwYYS2$0Gh` zo&w^?fBXnz#{adCTQs;pL@)rgW;{&G;;7w%>|>p!F} z%J{cT+B`LgpUH?~<|Klm!Zg$5orm*eBHELah!*b20PDwF<%8cu1M2=THS`fpCC=lypU!QGCkA7H zArIwk^zZBPBMCcRn_Fjf3{Ce%a%*IX7_O~+B5I`Z>^d7R0ORCvGG!s z7FXSph|Ds4TAAIJ(W%hgmC<>|vY}zvn5wpPu{|Z(Oj~GU4h4tzA(Q6yKdn{-n@D^n zfwwG?d3+4sPOd{}gshsz)>DJgQXaC#g$_ec?`*SpGRpv@2|HQzJxiLFl0M`L@LvO389~+`L1bf+DNV@mt4f=XVG0^-}!yJdO}| zvA2O1p$NSE05Sf1RK0|1vZoS-^RWHM~TUV0Sis~^W^_qgC`#rq!gkIMfxI)EN6U}2$ zloR!6Yn*Ig2Yygggs7v%H%N@$rRTM16>VVF;hzCl+ILLTs9*-lfhQx)sp{{iRhQbJ z@srOOz`H+I)PW}xo_Yag>BkITy8xMp0^r%-BXL7sv>Uopwp_i|Z~d0G_#{<+$I`j6 zpuqCfr|{fd*RXt5sfK)uV^lT&S7|xbd?mYRisuQ%+~%g*Zc}3Y4au&ytG(ol4_mg; z$n(cnET+abXl0r=CK$&srsY#Dyhj?aP4#K67{2Iv6vLd3RrAjtvkv>Whrlef>nzKk zu3>`a$~J!-41U+;SAxy&01(CL8+O_IDD2TTHoLjC@#VI`+xCfzw8C1vLv$qVvG+ex zAM95v{i4o8w`-F04{b)0xFbSnIgVwfN;K|b>IH0d#->s9K{hB~YO#VIMNnw(p8*=z zPx_n6c|%umHR}aSWWm}Np&rFu89^z@0pq10$@!gu*f3caWEoX4=^m=kUxuz-y<`PQ z_j}w>Bh=nC(Ni^WOi3ko23mor2+NG3)xsjD#}%d$LezP`leOfd|IAlWsi#?NHStG2%GcVFSN_$bb@ulOyrJj_Wa&KfxgK-M%p#qf%ktcS1JUB= zoH1M<&c^L`>#yH7nS2>E%#_Ck%Gu{XJe5hiY*F?h-Xv9LIJ4zEgLE`M=k&KAbJP#j zt}nur)_Z-8=uo2L#p!m`Gj(SZ>?#fHTLui+6uJ!5!niS(xe$`qrq9u#`IVcwcj?X? zim-a55O`{qEQ<5gER(I%ZU-zZQ%=^5 zEP{kA|Dk%zbC=0haR^E}N_F$)&40H9Lycs|XxLc^o-{d(8Na7 zLbs5VviYI7&fk0qE&YtIohXQF|YciCT#FZ0Ur@An@(1pdgVL)oyoR#`dg=1 z!~n>eG+}ETw7PG^J=iy60d6DJ3FyRQch4Qt$4Zs{LoJ2(tM)A9Kkr%!U|h)*H2{RE zmL|KEyMZbw?WVpYQ)QkQ73}f(s=9!?y!H913w6Qh_YEX$Itq2PZO3PKe20W0$uU|( zQO9zdI5~a%foA%x~LsJ>{U3envuMyVd z8g!{ft*A*q{SNDcJ$Z^(w{Zgvl$DwPLnf_U{koSnmaBWx){sb#@!UAP^pJ&Vw0`aixuh(gYeY2d6jnz?p@M}+gSyVD1-|h zWnkgo-=0rWUKxx&k{b{Z@_KU@9i7oWT#6EPOqmq@w{%w1_%oe7`fuqBd+{-lpDdE< zg>JFWIf(16`zp~y?P_-jSU25_(38zJ257G~L+VuLO_gwrls95SMRrD?Fn++^aIxur z(4}} z+~+y_g|$(hms!t!;w=_ctm|FCsiKkWTEjJkw_Xc+{*VNsaE4|1s%sqv^-GY3z=sp>k@gK8-~0Z4zmz9?*}a_%Jkjd`?7|0Oo7 z7iay=IXtG6il8-V23fAa+=ea z&2o=eq0=c_w^m9XThcDxWW5CI=D^(a@CW&-MxPcr_s_#}G@i}2G%Ibox4T3SkZAVt z+pSIkvik=i3FjV}pd03vYz#x@bXpjQ@v4=4EP@WQkzlRSX!aPW^sB4bI-k^bEMz|Q zMAEY(GAw_}?EaGb0-Sua`7-9?pM!!kF0dR?dWtfvZ5(&Z3U~l`YTlQcZ#-G;-7*XN zs`io&N11VHFyO(l5=IVK5)3f5Cq9(^<_V-nG`M z=c5Vwpyf~_)Tp8;q531sLadzYDXFSP^LyO-NgX(<@TAkJo!1d*g)%iu8NjNB)S~uF z8+aq>F@JqVR`CI}T*lNJuNiXmj%YtdMR?Nf@zH=+i&@v0GdgS9yBxnzI}69gsGar! zKaYFue@*UZCm&3XVxGph7y$Q&49g#x>l{y4X^*(MovF@8(`7pDM!a;)A-O!hK9NAT z(~rm~M(wbI)%4FDsJXfWRrfSqeR9p{FOws$eb{V5Bd}W?PE&@06wY!)d1CTqR z*B#WEmO(idN}|LzP=a=(;}lTT*lHZJbpAT0cIyz!kuiyrQt&~^07+IP)S?l0WpafS zTeyl#xD`WO=fq+lm?>&W$)YY`#;A_BV)2K!a0CW39DqF-=eb-FpLkO_g_~IUbIHa?(3TlFj$YHcFuWZ0l({qkl^v*)%q^Y1129~ zV$)43Ig=F`NW=wYrj)!A7ixQ+Tg%?=)$%m*-x5qege*;~m5JC$T24x*7m5xhnvyOe zM)He~Fd);gF9&A+jK3Q|y><(2opm*7!*#`IkS@t+4?H|@K6~WXE)L^GeQdmee*nc40&dwv*2YgF(YiYx?HToh?vJ{ZPh`}NHqj(Yi@ z?GeRH`+)}6lqa)SjKsnrYY1h+71BTqQ}ZmHx(Q$)2`O|FRnWw(s$jE`2Y#`_GugX? z*4dE`uO}oN2o93->`9A;k-z9zA`;4TkngA2){1q@e?>CY{qww`x+8c(({5J@+|!la zB}DOO3&G6o6GWe!Q77HilUwI!={%WRU^$a^x_q^kDH{2&RejAsT28GTD&xx}S+tGV z2doP+L+w>7!z79*wB`J%7?jpIt~pw~LWai5BdQyPwEL93RGEZ!-3t|fmCdnLlV-}bFuK$r1)bw4 z!;t&_tVh-;1ll&m3H=3M|pKO^!>+f z5I9+RU+@8=ef>rv6w6FfzwWs?-xe(tDl#K1&bWCB9gGNe^45NDaNg$Nssi%^gm43c^rPZ@g zo!}G8cbD;KJ6Nblo6-r&6vk_>AKyBi^^Vi`IecPG3kX{DX!31A;G}KuN1X7sF<>dX zKoJO6=x6|LRYuvQd_{EV`6ye-1jAqUqbLd5#@)Bur=P`MP{sMZ5)Nw1GFMwSV4P*& z5g$4Ffbpoy1mm%BJhkPP`#qLo(Tp{7+lwL7ED7W5p>~#z={~@2&v#Zunn^add;fCBEY!OMGe z%lxYm<-ec5vC7XCc>Z$*HyeYD+E#eAZ93z9xom@_@gYb(doL&}@bUfzh00M$e}-F3Xaa(WpV~V(L7TdAG{$tB^_PEy+=NNw^$}tO z&^F@x?7E?Zz;%asOEf9zow)Ba(_-drL>(way{LfkSsB_!HmirnG*$AQr_y$_ie7MN zUfRX6{DjTI>W?2B!7_o7cH+(6|MB?SyW$Z6tldhS)&<$9wN~e*qkmIXsn56A8r}s( zf0#F;{L+QM0++c38~DYG#`F;Gh#=7E<720*ehWUL7m|Gb^=F~d zr*vM486n^urmr5AJ^Q6>C}{H>1NviJ#bTH+^59e(la|@DQU6vF#HCwzb_?tN`r8J~ z-Hj?2N}W54t9A{Y#Jav8KU7hUw0uZ4n_@Ly%JS&6XRPJK;-@nwi^uZYvrl~z z?m1J^RAAc;I4HJEeh#)$*#|U#oL{^aR54B}OTv@A?^(dT1Q(%^zk(LJU2H9HYDTdI zlN_Jy-fo~q`dZ)wR4h-T{T-e8Q+A)`fbnWdB^_=-nY`VY%{+>|jmI?QlS0hhrn#&W z6Jp1jS*|6_e*MmBnWprkY~;)9d!`axl!a`ly$5+dpSw-HbD!YZqUa0-Rk;4%EU~Mb zCI37_^M~H2(Hpn#i_}K@;XwQfaNNpMX_JtG5BO|j4<~Ms4%Iw4mu+zAWZMa{(QT6B zgFn;&MJs}mCz&G30rO@ZT*+x4VN-0Lw*a5sXymn;Z1e5n-_Q8>C0vOL*M=)RCvS)w z+U-;Y--@1PpaBvQnaV=aZu+2EfaPlQ%>brq(IA&+1QE!^ff&0v;N}+fJP$iig}Zh2 ziQ$z40ac_69Dyhx>P42I9I=P!?7V*!j*7CAyA(>1g9WBYL+=85pqMJ7F5wRLO9c3+ z=0!VM1f6EzF;$hl-KuYY)O$h=_Wp7~AFL&+^W#DfocHO4QoXE$z(lDR;DA|2PKvj1 z+OgU(JZZiHAdO9-->9A0C~!*VRzC%fr|6XYCf7pR7CoSF$;oDJK;df9Y=)KP0qA{#@gmK2(wurQ>4*2Ohpb@MkpkEQ@L3=a6A3bWH!fjFg zBzp5anI^Hoy8%Nu;~h|UJl4i*%ZW`Pk8I_eb46<7{MW;knkRk4dQ1V|)e*IZ_wO`# zzkF<2K)xM70LXQAf4XC)4n1lSd6=4^yaDxQb>M|g%|LX}RIGsHTaylmwT*2f={)mC zK?a4F{ZWJj)r+a~V4!_267R*JwQv|~FQ_}0pZCYmoTCkTS{+vupIm4Eo*;L|`SBEIaQ zORpiFH!0q8MlQO`d`Gc};RhCzJ=HE1b9@>HRk^9BPM69PT$-=GOQ9U8(*J zk;M6M(sL=Bl9rGrW2Sq@3gty6ZLAx0#R)v|N#g@C%A6Mp0e%|4N}XjQgUMlTga9kH zo=E>nZ*gJ2UBK!7cj>tea&2t+nA6YrEYY!R%%erqwAsa@zT|wf?X4=d=g2~OG=_0# z9!%bTBgz%AFL!rte)UGKe}FH+agpzy%<0b?!>^hmqg>f(qm_*ELiIf*LKpI zQiPoRg<9URLlIa6KjXMwdpv`so@{ZrhrQbf_#-5ta+&F7! z=XazLOx@^~srr(BSZ92CqrELx*pBz;v~lRIn((ZdPHKh{v=i?{qe2N#-x^;iY>j}@ zHeeC7Sae=K_TLaZq(?L6m5;;EVt=x#AUel7Ro1A4RF0EsQpxX%#5dZP6DaW*K3XoN6 zs3h)H&jnrc9DCjauQrAkZ*W2H)CiGg z2mwJ!4WLhx93O&*VmM| z^oJcD!#u|j5`;YZ^Xf{AbO}FVGLhgfOg%ynE<$7vAr z)93;ci2@97u0;8~6mJ_zZzvSH<2NvA>}S96a?KC{#+xJFtjrJ;jYLE9Hsg?*+8z-O zvpqy+mWxYrOj@a^{^MF)h-e@exgZhQrSMXLIojB^5kn;32g?_3d0@QEdk$B{$COb3 z)aED@>(b@!wMhHgq+yXpNuXF1HEHmMux`067gv7libs68h1GCsu)IgJeRAes6?Ykb zvmlKw&y50vfdn)kJe^qeA*|08@BzQhH^wYKL0=cl(=mZmoq&)hWu5hw$vn(B_9axGZ}`36FCAdp(rhDfc(GhdHcqfX^E6$3jXmF3#-)~ z(R?B~i!MoUIJKckeK?hpP>yv`=Y2fCc{$N2sQnDv4DbfiS4o(wOMoMakOc0nJGjn_ z@q%C1npVWiT+)^SUP)-NAu2l0svRF0#gE2A%h;4=O&k-Ma;I0Aef+%OAd{i}7fO(=yPu_SQj17b$f?_KXk{{H z0+BTQ<8b6dhI$>jDal*7dC$0@8@h_LL~4Q);GG2AzhNw~eg=k^-4wC=RS8BcdAFotrnEQc}{#m=q`)7)ASR3(NLh{}~{1--e z2iJR!fVm2V8y^Yun#7kt0Mv-;3F?bGYBw(jar@lsCXyGp#w*Jkc7Jq5hw9q0Zk&*W znJ@JrZ&6Vx0YKbH%0g@H(^VSl8RMMa;&i5DW{awzL5X z4t7D;2otWT=J5N@_3pPX$Szp{_;~5wUi*u*QWJE^xtQQHwN?uN9h`7}yM*BMc(;^W8p{u%X!R*G8m>ka zs;0f2V_G0ceO(K4mHv7cDU3@ug?7G?9ZwLr>AJT75Y}ZZhf}_nNz2Huk=(!#HAv*i zq5U!D+rz(By@%q@UDN?v)&>HKd1q}C`Rn$%_D)b)=6TI()d2(amTwF0m~{AH)Z>Vl zIxKVa3dh0u^6Y&~xUw(HgeoA|*eZG+shy?Bd4YZ5KtKhC?27B7)s2cFbjzvo%fIiD z{c0oI^*}Gw8_&T6 zPS*GPjM{*U=ePW2s`Gdps>a;+ha#?5DS2{?V?(yN8hY4C)(pbD@gg{8SttL1t8PeB zIRh@ZHR4oZRkcV)Y}L!pw9n(b?_uTFnpQ(B`1*ib&CL_mnb*EyOQkvKV}#s+ zfT27yINT=Hj-#IioH5efPx`P0&By4nNsuOcK;AWNpP z?BVWIOS--`VM*}nMZ48B4rn{?je&X9#m6?JAA4kdey{d~25B-RAe|_JurEhTyYAM< zre;KGdlY}}G#1RW%QQCLO4-X_LFN{a!EGW!yt zimurmQeVzs{jX{BWiXSSM{o*mE3eTJyhzi5>*dy|`HdvLSd83vI37@j;}XlS*ip;z zn6#G}YsmaW1};fzrXHp8d+`i-k;IZ6qppf}%gCV9uH*n2AkabZ{VBUJ`X^06yh=pY zs4T1EK@lQk_5k*g*Z?7VMyXSH%*+{46CI$h^lr96tZ~TgBZKhg{bDUfZHTzVFZ92P z?rv96{pdi{`~#Po9i(VV%R28@-U#;*#>1VGoC<5g_<)8nJ zzCxPrpDk{fnQac;_bQ{@W5J}choD9}M$z_dN9`l^kI!JE&Ap;fJ3)n5R%OQB2wxXgYL0D)67HTRYufs(fT=p8tXIFNIr zi=4^P*AZroKzU#AO9ZseKRC6*^<;OoJ^~X|yvrZ%Z8nM#Y^L?KAD~SFW4UInm1asf zN-@FRYZ^3`Q75MhSR-8@O_TcF?j$Lj<*xV&zuPops4shj?|5YZ;{{)*noKW39Gx>~ zWD3X+g!=TaA8QKe6W)0YR3rXhov~s;y%w zzW7J(Eh%sF>juG#zuQ-$!7>r7ZS#H~&fQGfbm;^B4nNM^sO{hTGOb<6@BmSsd-uVK z>_=rT85Og<2c$29TEtOx>nf}>|T=DuJ=Iiobi7osn@)=^dZY3^|G2%AjWG1mod zA^p)t^jS>jqT{U!zxa5M{qds4FCVjFl~aRdHk30eqnYlZH_)I}Hv_HdRMqfWUuv=o z|B^cx^&-^1;JE9n>Y3m`5WJ}vV(D-?q5+!xD4yJGf2=$zfjjR$?b zE18huES`1mkTB>^tV0AWLWkU>K_oY7Bc4g}gU6S1B4ZA_-uC;X(`;TZW^N>zS!|wVFg1=_D$)Qp>63lsB|y)%8C>S%~HL@*6f=I!`TX=P}n6 zdbafC3DML&!|1EmT}8KRkwztnmxPcHDn`v${5RZ2>W%-`6Bgpa!}Xhg(BD*Ua7S!i z`dd`5sY{(`?qoE_VdB+5Qb;FU8f#P*Xm5|7!ozbWgjY^GN-Zl_$v%!I0hU^?lM}@qh zwj9&+M$?W2!r&9N40Q^rG(Jd8EBQqraD{sojjf2Jqch0*N@f+Mh-geUfgDnjL2>y5 zKQMaAMJ58KsZ!|C9_(;`pD%(dZIl7Pq$mU~<)H^PE&vbP?kaW9tV%;RcLKpz%gD97 zOfFBgsGTHxlZ6{-<}X1(t92(JIc$z7ftHAn-}j0X+Mw(h>%`I%L)5Wf+^pz*@S{wxs$S3udHUDHMzWh zmukbQPs=StRx3DZ6-Jr6!hDsSs*v<1D77p=j~WjROf$X4$0NV%lH%>lI4YXV8)6(= zBilqduNL+`k~b;fx<3m>Gyvc7tDS?C{Nx*Dn$@dx39-g*v<8$nkVw9;VfH#Xru(u=|m5JdW>Xa-2 z!#DTS%7WpqQ@I4$ghw$Mc*5mfITa`l^={7D=iBza`;*`m#}`6VY6uBRB2#72)s+1e zkg7J2jx`^AVdawDVkzFk$kE+HK)^amN4qHKSY5Uk>l(Or{!9G4I3b$UZ#*cPk;e<2vzcmHR%PG_w8O0L)dL z>jIHrw!~?>Pnx3i%utF9iOU~L8(IG2DHVRE^50@87MauwiZ>>9LeLeKw&|6K$=CLM zc^j@(ca}rHz)aIsnI2WkD=3@yVPzZHYw6chBp@`C7biUT!a#gwmWhb{B8hT4O})x} zM}7*ug(uoF25JnU-43jm%o$)W4m9Z0X5xe0FGxM5Wr; z?wsT|%b8=QKm(_>x^XFw68!;L?V68%)+*gq>z?*q{r|pFq?gUBh#M%T>?ph42T)Qm zuT~7O3$x9@9bW&ufcg8sYIQ+Dta6atBHBoVw$m>iA$~J1d&rL40cw7Ht|{~SFpYmO zIZvVNND&*$RT1W~-KyA*4T&nVUnC)AV}5KwRZHo1?r9h4ac`0l4m@Ey&$ZHb-0Ko# zpBIT5gXZioUPpfd;dj(nVkV`XwQRp|-wvKW+7B&efhVrkQUZb=9@6`>G9>yblF2F8 zY}4s--7V5ql#EnqD@LX={;G2eFO*{dJ{XYR?6%zV@_CMFRpS*7CzB@ipbGNK|K29C zPL=mRQHXFd8RLZB6?g{qGMcu{59PPkXtuhfZcC=Jj3fo77=)y}PRhSP&`jtubwxoJ zHNb!FPX+}HPFbEB5f+?TK3avMIEYlnqf%o6?zU5Y8X-5X7KQhOrcm<W$B~F^N>^`vN@qpAAn&o$@KmND*)=+VIpRIcr%K?|dbYS9)~;8n6KJ{z50Q z04--drlp2cKdeYu9mOBrZAZ}q(!PwH~0|d-0;qS16-&%G%;k^ys^(!0B z{zcH$k}`x}rpmsFQf$m9t&ke285TJaAC=5ZZzioI{;d>Lcj42*S`m2tFZ9+_r<{Kw zD9a*H8%6c}TCA-1;AixTU><)@;2Y5#8c)ugw&RjvP`b{3t5t4gW(xv z?NeZt%d#G-SlKWY{Tf!1JkBR&CJ6!&r1?jw$H+v;#4$FE7ISi+2p7)s6#~+Fw(kj2mtj~V>22Wev z><@xMnB$^%N1HHuMRt?`LkRLUJ_}nRD^*|B&`n;`UGXDgh$Tr(1Z|e^_J%^{5Mfxo z>AHwG{N^0}(f&K)N>6H&ERy&+f_eJE4RLpPLWkD?&;q^+z$=(-n74FYV^9cYJ(M@> z)O2u4!!b(r{AnPL$pW^ys$GCDbaEGZ-LKxHjK$a;`Lfu<hJnbel` z)`2foFj@{CI$q_<>3F5~SU#8-wU5pqi>FSD2XDVBtzk`}rBK!Stn?$b1^g~_k%qdG z)-({BqOiW*6ObeGvgD6^WPfEJeaVHIImQqTRDt@5yGwp~lWv zZovj2;dbvOrB;Wctmsz1cCBusZ?8 zeM^rhiqq=`V3~0ABirgwlnpjmTQ16&eqvFfQ()7%xv}80p>GFKHV|3MmJwn-vZXOZ z(mdIa+!6l8t6$ION)RR(UWQ(Hyb}m{SrSF7jy>bdA zEq8l#_tH1#B2rYeWT8&m9lQeiFshSzfuDN97IU@U161Hz9Vinmta=D;j{>SK+vTer z#KO8p(PpnhJrMjbe2=^$)?^(2B>2${5YAV{$PBoA#QA;LyWg9flYDQlTbIk$p1?m!EsF2a$r z+HzHsgdklY5D>H|{ZspX&OgGB#q<2 zVh7L^-Pb#z-3>iG9zK$8+hIu$?GEp*dCbuZj~`Uqa3x{6u|J(+(H ze1?TFsUMYhUFG4q@A{?YdOSOJuX#exEMqoED*v_zjPqJX{zBQ)(%<{YAQl6=sNll( zYwMq5c;xX0p9kKbe{kMsHh88{MFc<#)%weiyno^9b%Z(SfauM^heS$ZvEGJr7Y)+| z#s)F&FO5igzM(7LxziR!xqf`OVzVv1@aQr2vfACA26+*wxfTpInz^> zYw_`RS(%8c$u!p$f<%nD$nYPN;-wz%*N0O}_KhYoY6#pmiMHnKBDtQq&C_>C_3d(< zt>xVXm=0I;kxe^#T6&PDMSpr-Vd>{hgsa(7rM*bBLv5b^Hxx(f%nFdGxW$})OztHk z2~S^W+{z369BpX5yPb8x8e)J9C$GEFhMoRJ9!eMLu+N(J9j??P-G!45+Bc8p1nC>! z(ViQXRcbTt%U~^yoH$%*YG<|UB!mJTi18{SCSH>f-Ms{97!|oMtbr$-tQM!#yQD`5U|1|CcG_smbAS2M0M@r*X}r9Z63Ku2*%cg>(oAFgy_EcNXunyA!y^n0I>GXaS$v?UY?B7yuSCUfbBV8zv z!K}(*iP&08pYdd}9j7onT3h|b(P{Skm$u~$)*t?@ z0fjz6uKT9#04A%7@nw|H50A344=iJl?MXY72Lu|_DQgMao-F%Gn6`l~{T{aae`3K@ zq=BpYb6Zo75it1YXYSdpso$E^bJwHJVqi@AjK$BnswAniOQJv;=8Si?*Pc5p&zpCx zrCL_kRnhO0+TD|!H(3t&(tjt~K+WwIj9b&vopVsr(^sWue>kT3o!7PVf!-#r$ZIJD z#h)q4UqVCGA|Nw5TtI|b21)e3(hs>SA5R=mUVn@kY)}VEAA2&+!4%FjeQP4}H4s%@ z`)K;byUL9{1F#Y}x<1HIj7&2TP(IssOJBk9H)DfJpeaH=677TZ>*qvt3X;&{7Y@G* zY;~V=jIv@3C3aFg7`N&|{o#P%>(*jpC*~UOclD~k$&H6nmoNNvvQj?JTGqpLoA1kC zr}nZ`*{_#Zgl_xX{-bM6v!vqKIdAN-Zr|0;Y(0hRDuu;paRr5_icX0oa+dDmBe zPKXVmwK0yn+xH!y5ZS{ByFfrE{kkeUm5>`MQw@6tjPH6GvBl|rb*}(#uz5^bb+2h& z-r2jt;D%QoHRAM6Ta5VLFzaAmI9gjo-{&)!o}FKHwB@Ab={ie_o}Wp6ry~PbzZWOV zo&mkcN!)~>oL*febmI3&#=rbVF0NPY5lNTde}Z~4qit^F!ut8Ix9;zo<$Q4}j+$X` za%9hmfHt!_`pNzRp^Th*hhKHwW_b>|+I*DqT>smMA*@33Bm)PJ=Ic!K%kFZplaysS zU7J_fB_ks7`@EfhdL}(erMG$Pw_9ZYa|5B0Fo(#XNnP@F$_GLv9HW?Otn`o=+AQNC zE&qvc*?j)h)8FI-p-DnndOV)kTY;BJB%mCyuSAIDpA(%D0BEZm*PUz3`h-DxP9cCN zk|ByHOy496J!ow+4%R$G6fhnLoXMtj(K)V<>C8CsyG?{ZW~6)1Z@#Um@RN?G`xJY} zm83!~Ffxs3W+FE9Xh-Z+6c<>6SK~z@yA$nwc-~~XAA+^?P=tQEGajmV3$X{Nr_7GR zcw-|m$|}a|C3RmTS{mvwbrCi-ikQ<{O>*nu&vE-uA}k?re44%MUYH$`fOWyAuSBP} zI$eQQL`@5%jIw1GjQJ8EDNaO^JuyApY^i3u4W217kQC5iFflY|y^>!`cjjaf zbR8;$=7*Lbg6OE4(Aqz+T|oJIa0@4yIsP3E7H4vljUc^C%9O+R_VHgnNk_-42mKPM zpC6L^kc(4be4t!T$e{A>6s%1|{aJ;MNr2=_=hXNI9o;o1EE(PHc?%i5X8{(t7uIOOk^i%`xPR|CI3WEGJc9n-b&e-6 z%$WjLJyUMg30_EYxU)5@zY3Psgy;# zeYVgLI}yL1t68gI`d6lEXn_|l^)wdj^tycBYgV{Sa=3cbd69jlYD$iX8WP~)@SJGQ zAZRVqy59p4nIceF1te&wWM#AxMZ6Le=Oq;)X05}2y#6HEx6qo?J>lHZ&03oYOU9Mz z+D!TpRY&xoO_mb%OhjM!Wqi>4I~*iGwv=H-jAsbUGz2(Fo=nv-(WRxr)jXc4kbg^^ z*8qywNao3FMSA>V8x?_`kFuVCY^~X{OfXO+Az_(cRAJ8ZdidpWf&CtFJ%qQLd}1@a-TH^ATzMO{ zt@Bh}(XnQ?A1|LZBweP-^r3n=g$R)o3VWvQ!v(*7fhXJd!XB@kVmB4o-T1^$A{%yNW2hse}`x6680bmO^`Swc}>ViWQleM$NE88ZL;4UnWvXE{jFgjH1pbBk$G zKf!sefmgSULF^znVw{yiCXLGAfoTpExgzlgh_gA#aME}xiMXXUd^Y8fe_TF$r07gz;EYa8(BRT3=3%q z8hozdamJy-F3RDHbN7bY+cV@I%epJyjHW+yW$}CGXyWAWzVSsfbB@EM@Wg!P5OOU! zW#c~4NA_HZRQkv~St0Tx$7)Wl z1rH>);91u1_f=#hV<_eJRzv&0ZZ#|q_4@FRIj4_X6MS?78rUfBUtXg*j)EEx7(YQ> zr?0sJYhwPEI{xs3V`q7SMs42nzV(b%71Q>tcJGfKymSBL1K1u;*j7B^)lW{@cW3&v z^N(tww{yg0@KZ-=4_W#e9@h)vGwFv@7~aEHaph@2^t<3q4}AAAdbuxj44*&I`Zo8E zp{jyS#?|V@WK^3>^_57#YB8xVBoM0bA;HD$Z$E^tEC<-lQ_LoQ! zFCR^k4$&Mh^}VZEB#^L1Iqvi)(+wgg1>Q_?EPuaewM^8x06$KOg-Fglw<#NKKIH1z z0fVUq2=^ixM#z0)iR-qB?038J#P-9WQroAG(+r&bZ|$?((-PC!U;|nV8mAErb5vRW zU5pkUb*u56JgR5(^>fYkWW8oGUEv9o5vl0QlYNm!Ex-{^Bt%lL z(SUu?=(Hp8GOFzsQ4iL#NFFWa0Bx1$0<~W_2^+b1+a{T>4(PQK6j;}bNH1kL(kNJ!5PLMKsO>Gcd)t0uj`a=;ncyOKZ3-g(p8UD$5{2|9NNvq3z*fjeRa4VqlV z?Azm;8#(#2p$bU^&mgdcRpy<*xj#vMYs6gVpF}okRZf4&2EeB|4!a`87B7*M$@I$~ zJF1A*j<_98!Q)wMi=C2}o#bW2*r@3dGCVh$L+XgS7V_OuPnI0@680I*P;E`Tl z6@)tcvo@K2b{|03QCE6vqN!kDBbRLI!&o%`uqKv zoasF2diiU2X~f;>`WL^!_q@NW*Qd4v@X3DhmQ3dn&cE^m;|;iO9(R@jr^qdKU2k3Xlod+9OnGKlLVTErd%$yu9Hoc_!4@v!j;&ee zz_>oZQf7UDS*W>D6`Wv&uRIhb4&kA~CET1ZnFr1;3mw(t;MAEVh-CrSR+a&E$(Ir1 zr!h;a{!!0}h{Gz2Id2r=ZT?K+e-VMR_phFjffKB1s_R3!Zm$ko5o72XGAgUda^m+z zQWP=`GB92V&|~59i}AAdkKWM}{sUY|Jb?A*W`7YwO|#C`+U{xCPxJBR0@-Kw9{jWt zD-UahyH7Z+vM`WqB5|VT$XZnaD~GAQyAQldDYKMTyjtcu{lV4tfq`Y}gB=D_=XM(o zwuL69(BHmbtISxQbZqTI#z!es6~it9PcH=+gcv0amZlg`;5Em+c0BqMUvYq9R~T?_d+h$9*R zl?Hn+5q^ZVk?V}=vF|KvD1&XhKF8`}#9RafU6);&)Yt#cwPSZ#G6nwqT9~T_<7#Ad zH_|+`BRAQ+f!Y6L$Mo|$smn#ljnt`(`(K{mPREH+r>Pq(zkOLOYDG?(N|ahU>b6AB zc*L*EYZ9upqRKJ)_p-P6Yu`iE{-vXoeyE>N0V6}FTzB|C^i-WF-c=^#Lw}6iLMNox zNb-#LGS@?nXWb$(Uxj`li>>|lV!KPZoC_Bj^OE=x#04*POK6Du!$+Ny^%^(_$>7xW zf;iJ;mJ`_)bvASSUroZKKz|w)^ZW4dL!;o%?zTdVo2n5N8qz4?s~|&m{)= z`qCTzI@LRYF7*z({Eg;&$5q0Gv+UG_t-pG;wr(a@KYRbGG_{`PRYFRY>y#+V>nBxL z-#IF^yVtvEPw}xBBtgnoL75WqO4;TW&0Ka+hD87d7fjNvQRDIHpTz zlKjYVmf~(3KT*uQX1UO0mza7i^BWOG!zBzi*!j2SiWC@`Igt!w{da~rVLtqXqN~rf zfsI>w{h=S{-^lRCJ|Q+fH{5XDLURH;6n|~w2+gOk@8!K0;zANxC{FNpeYYHNTe&&9 zIkq5)O#M)cIYSu?atv+(PK z%G|-D0&9P-m~YM;E-j}9bhB)9F)2IDq%G;n?r-qPQak_IfWopknR@e$PONt@Ul#Yj zdWfNM)eTU9hckk>6v`BUN_G!iKM>s^2D_` zhfaBKMSYLy)-R$)nU)OGXtJ(X#LeXT@U%WOHl?^w#ee$Bw?@9^t{WAykP)zL)^i?7 zLAGxD{{DcgU|Jv%gxnCTNORagHuu(_72oCgo8N+qg_UpflbtP3xbQ+<$Im@`R2dw3 zO21daiup%K#Yay#J?LQvtyZ4R0@&K&?^}<`F4TG`4}b68f3;2Y=F<4Q)*mciZ$YE|-bVJgncd~8 z33iF>CG^hLxmEA)g~u}I{d{MKyrSX!cq?Jx*<|h)QCeh9J#oV)j@NR;mtxepJh86$ zzKbt|z8>@3fk&Wgx;FAMpD&!j-Eq_+Wyf~|hLMNye$QC{>q%L)O7ga)>c^#7ChIL_ zPv`9>rejREHAov&L5Lx%*OJS`;-1*H8& zBF@*l5rzbFb}RcF5ilZtas5B-UHd!K`5sT&b~-LgPli;wsDugaSl31!mr)2|ayug# z8*0H8YvJ>$B$*^-wiA>JHK&62vOO^ z6ol^w(;~p`v6dY_W0~|S{K&@^g>%a&z7YB71TL_AH~S)Y1A`hb41u3pxV&j~x`FP* zOG7RUs485`A{<1w-;v+{ZU86U_^o;XE~Ka9fMdE$#@7i*w<`#W)&+XCFG7_EWW~C` z39Tm-!s!IZ--D=Wub7JMDCo)g;z#(SsW(qR{?SoiCdjr`{NY6ElVOHcwF07Z)7DNj zfkC{CK1?PO1P3l07vBNKURG^H{$^+|`Se zwPm^iBb5IP+g=qvOXb43yGqb<+Rup}t{FsX(hP#&RFT5k&HksR;Zc@C;|iR+`e`PR za{nD0@0iiusP~dOk__JM;#yl6ILQ$&Utdbjpft zl%FHt;tS~X&hMQ7J&b19VIwYsT~VbOW!=44{zEhhj`oiD?OCzC@AqZ~`w{6vMMgMI zzPFpE_8cLH_sDm3AA~tSF9$&I!az)`SXzZxRofTaKEs6?6H(?AcZ){s9@&CiqX-&|r}=gMZayVh zb?GO^FN4tAQNq9LXy_n*`bmbe*O13BDY5!eiIR9)>JBMihBUeUHHDCMFt!!4$d1*? z45El66t<}-62Ne5zzSC>*qkRnHBn)bX6~*TYfBO*qJEXBkfUzT(;fJxik|>WR7Yxi zjy^VqsReRt-10WD$qz{Eh%hLy!Cm4^qT~jJ=GRIF#XZ_K6L}BuOP_@hc6ea^ly;Xd8xd;p z+eFrbhHq&yKhx&d1;=+Rc7@Dz-lqnfks3!dn!inJ0bLzX;p6prdchVn>Wr7qfUC`& zB=*|KOGk3-m9pv@Dk{CO8%dLrz_Zj)3+@nXk=gOrpdq*A0^1;X?z+G&o3};%p)o1! zAITl(;xa0(ZWsnlVurv-;X#^{5$(I=iIT{b-m|6mBfON(C+#7|9Y;+&x7o@k)h zLn)mF-L^dlcpem72A$(PRhzc0uy*7ThW|J;=NrjH1VS2?BIPjdgdE`-u|t)WSk*YD z23@Jj{$SeS*hp#`LNe1Ci9_Zcy2dFV8^6Clau4y!z=9sG0*HVUNOh|QB?2dXo+O?b z3W)Y8tkYe!qOeV}lz+awm(XQ9KbY?mCub?ZnXg*qA5~3_5@zuQQt~C^GkNVR&#|Tj zpI%Mde~PIrk(QFgH}0n{5Vdp@+|wxfZsI0!(v%aw&Zb@hY?Lk#94Ixrr$d`djTYWq z$ zn`s?kO}1fFh(9FZuSQeaG`i>az@0I$BqAR=aDUq$sr9}!sHgQucH%VgxsUgoSy^g% z(W;up6-@oUbiF@fpJlgl>y>1~G)UCHn|de3boJbf%DLapt}DgaaY7@Ww?g*x4PFU%U%)`r3Gg>7VtX6m9*#J`_0u zRIk8mU0KxsP;a|QvdPUomvNpM&mJD<^H*oK_zW>r%PkYF%Wd8Ulv7%l$}hhSh~JwM z(~=y0PWV-$b-ln9|2ohfx~C?~wEgWYcD3ADDiq!c;Tn{N6owfxi?^6|)QpVfmnikp z^8)S5O3J5+UNK#meIW}R!-o0My}`5kWs3+XEtV5?6hu4YViO`-g8Bpce-2)PWR-zA z7CnUg*|W(IP6j~tGnyCa6#4{*YaQ{qZ?3QW(7z6@HmUT0#8Jn)IRS@yt8A;6zNe#= zhPB>?MAtM>EP_Ys=%SS(v~3ny;n>0AWN2AZPHE#62&f`sqz8Sq8 zB?zO(mB=>BAf0hOAfcN5EmYeFfra@F98w)ynIO=7hvHsPve#zRev?=5M@k?27o`tt k@)x;^?x<*owDqsE4%>L|p8Xm`D;qYPG_y9XHg=Ew4|^3YRsaA1 literal 0 HcmV?d00001 diff --git a/paper/figures/fig2_feature_effects.png b/paper/figures/fig2_feature_effects.png new file mode 100644 index 0000000000000000000000000000000000000000..87ac96638aefaa7d0565d5948277790a39702781 GIT binary patch literal 134389 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 NdvpzUX6&%>|34~5_ksWb literal 0 HcmV?d00001 diff --git a/paper/figures/fig3_phase_timing.png b/paper/figures/fig3_phase_timing.png new file mode 100644 index 0000000000000000000000000000000000000000..939a410056c5eb0400ddfcc93486a15b7b8d8e0e GIT binary patch literal 92115 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

    iB%+^!!2lnE5+l=Y6%huBm zJgi3#q-<4({mSUg2JH#yIXxJ?`tv)c6g-3VVPGPS3RJt%X+jI*lrh2`Up==NVA z5Kgb|OqXeT@&4piL-WAJjY$5spCHb9SlLmzr6?Sh8gj~NANCz@+9LxgY7pK{(vFWh zzMVnq(ho5*%S_8qW4 zc8)wHRs7_o{ROoNntrUU09OHik(3gjbEOGX1%oS(HA~kUQG|hswEl#o`LXmKS~*ut zl$_55c{8knb=UXqr_(S^1DADxjjy0Vxegka@=1ba&>4DjeFw8FUX$a&`ce5G6M_@# z8d_$&J(5Nvun<4+!GuejL1ww3X1LqUq3J=9AM3kxF{HWR#y`(M{@|A>gS&I%KQq0f6|`fDZl=UvU-M&W5?VUIWcT z8F-jcdE;Upm$;EJL_Z8k1L^3r4EEwtg(AoUQL6;1Rt`MYMV3tv4wlYy>*wQ15SxlL zc}Qb=6tjL9w}1NTa1t&OE*ywdTQs_JH_ze*(V)bNTQEpw?84{V*g;{o)ZQQcE}*hl zY-q#_2pPrq_*mxvW~nX%8aiJH?3fr@g(-3mi}bVT$4vtz9YGB{Zz<%}n6;cN$AM-5 z4Rk1dN-@#@4y;b($++xxZV!<2;$0CJw)5bfibl{tWsE@ZoKIy4u46pw*vhaUtUldp zp{#BMh~D~6JrW7!ag^Sauj+VEY%39laml$p)7ZMHz8TwE3Ej*ISke>+PrEKC$#j`M zEV>5(^1cbbLD1B>1jI=%jQj$+W2OE<4>cBsi;Fq016(@YLn8xHu=*FjZ!8`-9oT!c zh#52dbPi;|md{Mrp^?Zyff%i(!1s(>6MAz$%Q{acCA)AM#{aSt$K-0E*af#(QBKlqrygoOH6SRb)fhd8hK?M z0Qh4%Z07{c*1RDooNHt`>t9I!(K?uSECj!!4oqtE)v%yerSu8hvOQ2TV&Z;LZlt?n zGs~>*1oK9sA^i`4{C6*8(`N36fZslI2qBUJlcZW|NKc<|mX&20NwnxX=3pFcmv9-% z&5AV$l_wyF4w8C%3oZURvcL_YrH6;&Mm0qSM;&VcvzxaTT4nvjjxBqdj`h4c= zl&n^v`|acx((#x~=TJE#W9BVEGqq2CQ{~W+%^Qyj-%$qFr&UV2zs5#TI=+7MZ2r}{ z&2x{5B_Akqob6Qgc(Mv8t+7*Bua=a4d7vP0Fl6%!$bn8pT5LR4axQ*|6>m3os9tu} zRc%Oj7#ll)28hn+d+R--(HLSC;vv^*PDr+YS%#ja)?Z6xqrCK--kK&Mm+p4fp;e^` zy~fNwIbo43);G+xe}W{A3u&j8(mzb!JlgP4&>WZJezNfJZ&!5>#VmgVLa~3Fh3EII zi>t#H-J1|n;g!W&=kdM-Sa6KQ;W(4$&}<^PdK{hZeRW);PJ*P+u*73h!-~Z2mV?Bu zCG*??2plmf?G{nXoT0QcW8K1exTHA=h>HYm`JouuK_{+Sy{np$5_^U21RAr<$ekNM zTrO-T6jJLs^Q*|BEJ63%!_ha>ia;h+*OD^PklT&9JdZ#VU*-JGatYWS)7)t7+>Kta zM8w#KdjmhwaKUj?RNUPrFM70U0yA z&gxqf)K5xxOr5qAS@!%?)abV{BnpnXjRLm|NgQjDr+v(JY-kxd&87lwJYT0`#u~S` zUxYE0`8=124^SI}Bc&3LCkcZe=<^qi2!m&rRD}!kcL;U?xC37A>E%}pjw_k zTnTheFS zf+!MsQasjwQEiq8`8+G-AeRX#g28pmN8>F=(}U`5!=2&+LCvKRf6ESP?2ye}6q)jN z=k-T2-4AUwIv1{?!M7jIrTS|POj%yY#~?B#>5waw( zZTv2O%(SA`KFDg4+1N3|I+wykP_VsrGlT&MSKf>%5S4oXLTmM<4d&~q0`_pcm45i{ zq@T4}yJSULc(|O&LtIkotfTqP$->FR)80j{r^}0-?m;*cx#+C?u-}XVfN<;wxVX56 zK$bV6sY3AEfLcFn9+F^djk~o8dT>OOV09F0nmLTgjU>e&i>l%nG(nLEkJ|)_`#qC5 z1yRI((5m2GgBB=VymnTi@)MA%Tw_w*?!L}&4o{E-R?MbFmJ=kTkRuUBdUmePWiQ5G zOTN`=^%)MlSwWqal6PT@38n0k$zOcN;8QxkxjzWQzQ)(bjm{ zilB9dswElxAZjwOme#)ryS6c_llyx)K`hT!=l3nFs&yVWW2i{h6CbREwVXAL%7Pk2 zrjqqm#-@ru@iew>B34dk>a{0Dois->%>A?G)J<^GOT$& z13=C;_EdhFyHDKLL3sm<|84<2kL|8up?kUfRDBb|3$GJxE*y)q(XBZSLVlb@fzW_zwK}6 z1Q|~^{^?w~0wM&lp_`XA^VhZ#S>*O)0I{9PF~P95vKAl?-CjSglE19DA=2ow#+_+l z*GwDREZQ$NHJW?Y;sclaH{m8uhiYP~VF{#iKNBZoAn=W!l;BjfSbl(9{}X~K+{hpq zcxzSJ>~BTLaK8r$1kG{BDWgcuG86;_q&nj`z6>B?tB;jKBim%AVk!hlHt^aN2Xt3C zfoE%Qrp9F<+l@_|Z@L`$JbawNHPP_;h!tMYCxLZL`S<6MXD00CGBk9}zeGvP*r!vU zC~gH1K`v2Ne5HV0)}A6yJxm$&WIPjOr=YtsN|~7ZU&js%%XUGZYKh4R7J&x&yGTsx zyYcSO7YgZm+!S)v&s=Ch6YX#+QwN#A#E5$ z<4@{O2r{M;hc!p?o&S7(Or^ooyCvv34AKWDG>R->%Q_{~BUv+E23)cDJ>x@pUwV?y0+R=2?37Ki0y51DwYpJWYOC)q>_Gj&4 z&EjR>TE3gEFRoeq9MnU^ghx6;6h;Y-keO1nKeoMyZ+v9`$gO>7AuC)`G9hkV)Oon& z6Qb{vKZs^e40T$YV*>ywaLan=v4Qf5$k0{Ig5<<)q|et{$QQb#p?%Kz7v6wEWn4dU z#`i3q9adcTfk~-20g!U&KF`{#>d@w?4dQfunb!0fuKEX+^_zvh0nXWO+?d=uoA>Me zo3{u90T-J5taF>5@qJs%(|uuZElTvPWo&jp+?W&GZ7T|d2${8bf!>kIfRwbw zi^coXTaBd@Ws%9m=MIU2P(q@M;A}Q&)y>kDWY;UR*Yn;F+C&{rJj_)-rHQr*6yP%uf3UZ#RO$SK&+E$bKt*2xk=efI#2920oe^StkIL+uWqt%qp zQgrbaRN+PQ$&S}@Tf+mAtO)6**yCJL5CTz*vdp10{WWbd1dC+RIb&D?temZA*nP^~ zJV$fICB=Py0LkTz-6fZn1lZfQ_2-N!i(7jCh@7lZeKPEU-#Dr;ytv;fnfNPD9DlDP zLn0%@r7%8f`IV&WyRufdQ>u7Gw_Y@9e}1E0p|1Gr_kKE&j<}h0Gl496+6A6d%SC&o zKVvZ0PM%j)F(h4NEJJ?Aje@2Il+{vR7&8R^`6|Wk(?T5O6B`AJy$m)Q9|JS_c_8oZ z>0~F9a{F%*(+W)uZxM2B;Mp*#VeVVb8{}g{PB*cV-@YqkZ>E9R!R3r{kSa=syA!lI z=i@wi*^ z(E^BvI%-qA=h6tKj0KHL9j6;s|2U-GpT;#zc)-_$`rylk() z4t)XF(OEDE7HxHn)RE|1FEo)8@xePIvL{JrHljKfH^|ghdwlSM^fs%l#&wFRu>HD} z+--F;@*bSwko=LYsE!gE*d20ykyv!(e~|V@457@qh(%%LoyxzFgsAor=zH@R_`v^H z<7cgMk4vl1$KH}<4uG~*(W>nc)pH1PsoZy_?6tvIlA}dfnuj7Y{!|b?+rGpe1i84T z$0coYs%_~d^rEQ`hwg8R0t%U8@h;C_n!fI^N8A z3>{F#4>)J+Jgyexplilao-V#;D+eWQRZaS;<@#@~Pq?(aG+vmdG!=-hdAHhdo7IT0 zHU6VKH|Gn)&3!JMMCk~)I~{Unee^bJUyutJ%FMlYb?B8fmq>Jlzl=tHCQ14VWKX|B z0qWsy^86`x{WOGRfx44^;ROh-fh0v2D5T0A!;ezx}In$g(4oR@ zZakq~sB6&0Jt2v0dDZ!?$e5oF5V%D zT^Gks1?^1~&%QfBtoz>9O`yJZwTk}+EXin^Cw@I%UvtUgl z;x8XdQWp$#0EOy&Nk1_-)}te%8qH>IIh9=1s$P~7|31*2CDZ#k?ns}$VZ8A)Oq6`1 z_H62no}^E~LnFdZ-N!cctoAS$Hu0qamy33I?j2$z_2-rXi9M5iWk^9WQT|4ob^rIQ zYJGEVwJHaUg@dEV@BH3TbIyX;+m03@w^#0QoR(u$ZcY7unDI$VdAc#~fs5PX#jE99 z>Os2JW^9B^1CAPNo^iX2dI6ag^|*Q#BiA?LUaeFsxc1QWUTgD>3XfxsPH(dOvA&^v-C8M4MKOtGYVhL#HkMsChAMrj9QK+u z3Dp*tw+zw?5;;DS4|8_uBs4#T4s_tpu3olIcFI1cMuO0J3X!HNfJ>ur?{u7RTTGTkw$?^L!nn)&^D07r~TUDwkK%s z#onE#(1cY(*gBHLu(Eer1hkQ($ze&)er~5*Ps`LTnipfcrQXAU^)bpg$%_TMt`2`K zCN-m2v|pVm1pSB^k~+ot3(FKuX$0@2la_$L%-=p6yO&Q|{A^ipU~kGK;hT~{5MDip zI)k0tzCmMxxyIp`N&vx4o8+WKvro`R!}g$~3B@B}i|?YBjd(J?Yte|?7YTR;u;Skw zZ)fAp0DD1h^x<~H`^o}|a%P5-&(b?oIZE?vvv%Udb(IBzL-{{{3fs@JrE)c^UC&oR zt!X;!b)v`TJggnNE@aLagenvcuNbdRUp9&H34MaU``kNd7w=s6i2rSY;PY7wdPzRM zD%2tMyeq?4mh0x)`6}gKi}S^ojLG&#ACY*s6txBNxCWOlTG!j~6Rt7V2q~mc7E0d8 ziE&-QPMb)rXM5G%q_NbX%1sP-5)(GpD9KqIf}yd|y!v>{y2t_`_s=^1zPcqE zoU4t51$Dk#rS$BA&T^C4YRcx<}rTCQab7_y`syJ0Hb4+^38CS~JTl>!r zOesjdNS|RZ{QcQ8igvDkiJD-kBKeLG=TF6SdsD<^EW_rg-3=p55U73zRl=%bk1DI2 zCDr1e=F3#1Ez*_e&Qe=1JZ?*TYQP)o_-uyjD)>{Nj(4?G&El=!)O@BVxp@M{ zMI3bsx^FVDU-^d51a-Su&LXv5?%@?~lHV$cqj)f%L@yqtSBKx|6pam0osb65(ldZ; zZrGo1B97nT!&$IFWTQFhdz7urRE0r5?x>ob5v0jY1he-=w)l(lWy|=FsK}#a_7wVm*>}>GHy;-H7HE{>iNb~Z@RGENK|<-vciNZ$otS--+N{& zLnoS~oZYGV{cCs`e4dTfLlLP*v=tPYR-^&^r^M!(eJB#GmKaROTr2T~d%wYuB8_Ov z{GNIi%auDdlYRF}(^umhKZNz-rF{zwgM>4fYx#opw}gacKw#cC^;@%WZO3lDa!Z(B zH@>0Z_l;6=A)ukDcB$LZe^KY;^L@jsa_UR`^rO?2vHXS{!|ik{pjKKlKIH50xDUGt z=%@>2(}%0y^%BmmSdhGhQv;Dmpc$v+*VG~``XW`ac)mD(@j@8id;{6Vq)5+hzrwJ0 zHUAW=>Pz>Di`Xyf-A}`UsmlV-QnZ&eZq*a6VBK3)hnFNP74suEv!dLN|4i{v)SRmyb_RxTIf9kaQTGXG_g=V=SLjQv4BTvsl_D z%u--XFCzGDM#;lDotJv$GzuE1eX_tFN1>tc=R@hVrLyglcInJxy<7y{t#o(BPu=#n zmr!yrE;#;>P*ID{@U2#myv=sFqBy5kS*a(fG?_IVTMb&Aw&nI(?h1|uSvstNsRaUD z4|HjrT$^YDx4;q@oh0*PeDm$SyK8crU&m?X<$ipQ4{5-tlBa*_31mQ;-2zTUFzWSI zy1|{!P*W4tS~36nor-hCJKrKaBV~mqEumJ9!f1L3VwI}inbOb;${7VQ3|C-!I986D z|9})-toIw=Lv{WiYE7=jW)?7g@sgA6D-j$BUBe#pYtrGe{JgW^VyTg|3ROU8PhZ6} zv8+c!DZf)cFebp5!m3K7JcsDI`Y7%-1@Bzf$SeInPM&F{yi+eiD3aRNvgt4GD&Dg| zDOet@9?h(g8Jm&7yC5O4PMApwbD%skVLBbd`Z6_@GETXxf<&~xmqEJ;sg_(Btl>GX zFOUX(>d%gMQm2Ye?A5Mwh)Zz{obfZ|r1aQGE!|YpKW`k~va|gxC@)lj7-juwBqU_tkl?p%zqX#y}eMAD_Yvbfo9Y}0Yxg-U{M4E|g#-?e@kQ3QFhUN+OAo+#W=I-bhjmRnL z0aSK8yV;e;Js>@{;*z-Xj+G~@A{{~+x*rw1>X7S})}HoL2IwoJFz*)}mlzrwH$E}~ zEJqLg&xG`rXH(bQAuCQ31}B}L%8a=v32t?a2n zH=aUySGf#ahtBUsf4D02p^Y3{41Q#KMq0~i}Q%k@72M2q!i~G0Cr2Q z)3Yzn)=e-htGvn5eNY5K&H+ zTVZ$t%q%$h$V~RZ5rOcE_iNl*@+uPcURP;OM z_kb(u#Bj;Y#MnlZYB_HE`#Jnd73a9$lI0d&Q+Stx+V| zczL4i#PgHCWFe$xwg)0oTKzgWuRY)Eo?2cF?j%jXY$9zZq-ViS6D}=W$z4Y~;-K~W zxro!b!7pGq`R$iKJD@>Qx_VgmL~7>6N9Tv~VXD?~$6+QF%~;N<0*za3F5lF7aAkjd zyaxB~e3D`AF1nwIu~p36(J{!p8q#GOy!FR^Mbl=M91f1tka+YN0wFY<&q^MP%-$_a z2$Ks|eJ1+qqr{7zn5zb5G}oTHos)wy^fOF~PmefcasJ|Cnd*m^?Yu?7!eDZdEL-9w zNq7fe$o;Z_%hB`&p&|Y71_8OP(hp)`hPX1@vS+=twZOI;K>CIwuF!F+f$tO7!-oPl zlVg*5PrR_^;WYdLeyDeKs@zQ%5B6+b(oY}%w%+M-CMrz`zw>#oS3WRDdRMc4D{2piq^1HGR&=Bn4x#~l$(h#sA$P**Gzg6+d5njL7K-rnkbN?)19TRCawj2v{ zKNWqI@%h;DTcHOUDGJ1?Z%v64de7dbe(~v`*FDCqe4e#`cR#fR^YL>iaDA*{w8Oge zN!R`39TY;%?)(y^Y+baE%>ql92=^*Nj+I}Lw%NS9{BzdyMbazQP)VovxE-ZOA2TN0 zVkC*8Au%6M>KX^GrhmN}^*C_+{|y zEKOF5Da&DQDNcPseDhMahremw9?MHP6QMC3pKGMOims`(%lDW(P7aln^pGyDna=as zb?5Wj-KPs~Q}Ei!#0>sP<{1C&_mLp(ef*gzkG#)~KhIA`Ua*O2a0NGhWJ?v`U{Ww4 zDf4+nyo$t~YhrRR`6x8-?(@qgJ+on{N900~DasKbvccBN@-dfUME2yIZ;TiCbZRrR zBBRVNbH2SC6J~02q${YyeXr2FseJ|<1t5@pTqCa3C`S33@000;_U?d7Z^Hc$mlrB#D(x{;o`d$mb(N)nkf%9x-0N&A7{7)hU)P3 zr_e*Zvb?j;^25$6wC=Lhd@t!tkG(~56IIM5w{&dJ$K0=bI>WBUhGi|k*VhtdJF25G z_sJ*71{3^%jz2XPBlPxJjNPk!8-A@v%#u@5`RFM=gtPb*?oW+6Ve;YEiQq&t)l3g= z+XMPhpA{GTVRV^etidID)m%18x_um?)jy*@uecs{=x=wDhYVwfW2<*;4rw0zg?@D1 zi;v5b|J3~t_TK!R%Kd#GwpgYN5iN6MmU)cGP{=Y*nG!-|%#m$ql7eZJ3jjfljKA&0saSiCT*tP}GxpOKmDZ@xulqo66RWWuy`I3Sw z*;9jSsgz!aH@T}^&00`@M%8TpuG_X1x@h=q5@$!E!*A*L2L z<_NS=XaWl++8a49-u#Dq*<)ePs@MWoX?bkK{G748V})6Ht!b0HBJ)SUsCp*g;elZ@2Jh43GcvM5$QB^)a0(nL!7hDUVM+*R2KV%mB#hXe3{axlTqiQ zv+OuL+-d2`mN*C@CK<1(fXvsiFF`oh)xF8#$ZXe!3v{eXysofGG|@fI-qwU&uqN$t zc0jisd+bJGZ($csYQLIBa|3PQs}fGpR1T)$yo+9Z1E)5E&ICUM>i!a2Tc^REFhkbl zeBhQ&#yh)JRE?!lIuSM^+rogj4RsUzA3wuhjk!RDMz!^AN>h7ZCSSG}Ec6mRnv#2} zNuADgYUkA+mNUz@jzKbFp)&jNqFP`52}9tZzB$Yzjs5_{Mb-z2;lg0im`ve5}K`~ ztbV5Amp_y!mr8wxk4`-8)Zj0Ak!Y%tC>GNZ`2J9$Qd8a4JHp*~Ax@M-zltr4*7bT| zs&-8#+Dwv}Kgte@nI$ME9?50+O|M8fNhZX(Nw(&_a>!KE$U0BY+jEbD;YO;DiaQJy z#$i<=h%&;SnBpY{Elt0Ne&E+D{*s^5(?+)SyxYbL#(6I_0!a8ggUgYLo*`P{x}67- z`%CXOl&iK%2OsmN<5~OFSD$9`HSvXJKZ)ewOoJm!o*!#TsM;eR<3p*U3x=l~@3Ax{ zcqD0bTiXc5$M6m)`8*i655?(SL6gl(qFAgm*-j@!sV)MBt$A0qmF`JBvzu4;)EHsk zS@}Lun0=s?=QE{aT>`QS6C*ymGI2vn6fC{4;$mrh%BbJz?OjK)ED;JvCtkbHKBU7d z(XXP2G(RV?2W3=K>E2)vK4AG2Hm;Q!OlrX<>ht@{beDlsu)z4_>hgJPvC!&yms{q6l45J_4iQ;?672EeLgm=V&{3mH8stf8!Yq_ht3_m(@=NN% z^etoYuK2HhjaI{^^GzWlZwy=m|`L+OXBbUgKl1(i*af9Pfqwbm;G_dEg;&}dr0}0c|WSuoWwH~+M2yQ zN}6QiUtUVClurK7Ny4*; z+m7_S?X2BHxZvsMq+Gsi@eUigt*!Q4L~Iul{;~uKNQ4ik;K>G)cT=KLWHzto4iMxg zuJ}^QEGox=chh)VjETMipWG!n>WV(G#&%kp#b_6%1kNsEYtJhi0TFtvqYOg}4r-bt z{>+gyj{R#=p?&NUC^9sYS7_~UT+;GGB^B)@zFwn9E`B+IFgX!&qIta+j&_c#;gf;v zzWiv#s>6#%_jf;P*A67V5B+v)qO~{c#1r==;Sb6zO}roT@prxfHz@?tzSlAUf~7BJ zIK=(2y7^{%_BS%r?0|sL!yvJ}>p(mD~h~57#OiTOVH$q!b+B^&cA!0w9x@YX$(#U zEZ6^pK)6hYZu-Q~71)TQ17fWo0Y|w|L^jpH6i51Ew(np7r#N`0u<6W@Ee$hD}dM1vi~{=B6S(k#l-H6+cyfA9PWZX zoXUfT`|d-pQ~9 zZ?2?8L*JwO4QU`<)qfUx-&7?dI`0(MnG}lmsb*F}#zRi{N8Eas%lO_69+J??bLCg~ zobmAgot!21OrN^ZqsOpSGMaxuZrChwBW}x|>q4rjxx(ueXm#SFOu4^Bv-Yu&M*XrU zur7H=Kj=XEx~1p!@slOjE^^o`uNX1KYy~#mbiJO~{9s3|z3GE}6937@py)fKnYund zU-W43r-DFCG~|@b4Z|88LCqt=ipZ!O;g%L@x`9PAYF$T`p^cMIUj_w6urKc5CeCE3|iWZa>_xYX^5#%VYw&xb=~hp1Rinl_9Ud?KN=&y}8NxxxXPi6zkUi;et4Kwo;gYr$!Dpglm+EsF zHuK`Z0n_KEo}5dG%Zlbg%P34k25;e4Ifhn+8)0!=9B+H09fm(H_FS89C35|0w6+SJ zZ5*p4wWcMr8`x&yi}NM@9o&bYOtj+9bv!hfM1^8Z^;ceY1JY|Di0o) znvL~prPG%tdsTB8XVDi2KvuPWvs>+Q^5^wbQ6dn5B!?v)+JpgEZ( zfHTC|tDy(m>%Q0jzFR~4NJZ6sfjjgmv3#k&%kXz%AS>}v#_f`qoJl%%!((>t7k~Qn z+G%G6&hLGx&DreVmD=gkq>Okt9;UI>0W-t$+DYLJ(clf!oXKk2dH;4D&6=|zq? zit%M{Qs(0Z`}a-3cinGK`M$D4(M^SbRbl5og;1AJ{DlTIL6LXCADzpeJT`3NND z+~BH8$s@t^Mw#(lQ7a48i8K&Mw32D~gn0!;R+QjfM637-GgQ7J6UQvc%>hAaUH)8t zpdn(`q3N8KhhFxo?7qZBY)QEipuKIrDl@G70mC?1-lJB*_;VZxJqC}yd9jrR|ERWG zp!RWyh>N26iRij2zjQx|O$Uq_;GpFOcjGH%~K>+x&Jg(b9ohbg+aNddX^S$vbsW=>yVSwtn8 zAV}q|(Vt%B5*}#27%~m?x8Da1rULMn#RCp=+JDot=7Z)!S9w+MnM%WSlH)#;2}7Zs z%#MtCG^e$~RPntcj_mO}@5rj5>QY?v^L;R3|A3*BG08NApaw5wV7#Wa@XTj=;-qm2 zwMO-$0{P==Y#npFdZA?WqwmPF?gwLjc*6jVIfs^1!<(51s?MEky|5fN@JTo$-V`2X zjQP9Nihv>?Dx~Ri1p1;GpN;fZ28etpJ3HldQT^>=xX5+d2h=P{$kMR&uT*W6BK-&3 z<)M0TV*dE;Dq^!57W8>o&|sy)l1WsErg9K@yWp@;yekx)d)+W(%Dby$NWEu~w4t~4 z9=mC4OB?06lEVzMpP1wbJMQ>H=HSL2ny}uVpC|>g6KDa@`IAX`iCFy_^lHN|#CKSr zPdL0UvzSuqc-E)Vu>jA4?4#60#*)#T$<_C~^sB3Jk6!{3VsQS>Rus*Z{uZg5+KXnG zIUgrWVj>FW!AHSC5$KE`*BzLzvtUmSy8X&fGP8hssH@McHG_Xhv^pGF2j)#Jch_k7 zH(01Luf5SR=3BI#2A>fMNs9Fw4OzP4GRIUI`8Qq=^0LniHaHn^-}ZxYe$xD zSvReReV*3mp5spt6kYtVKlLU^vAvIsRy$IH)eDE6B<1;Ih%AW;O~qVV)mg*!pnra} ztN&Vg_@*S0%4`%*{-Ry&uxOH#?X3wjvQ zr3P_|$j+I8CTi|t=ZyFK!bG*tebim`-{hFMF`&I*C{L5H38cj1I9E;QR3bE{2h>a% zus=HG699ho@q-J1BC(N}E`ORw36qQ>Fc<7BRFLA5Xj6uX;_q7&8SUXDB!>fw0T z9L@YqmhQ#Ll7Svi)?SJP%KIWhCXdw4wi!2R#?9i4o6M!k-xtFE5{Yx|)EhCSAH`E- z+@9F{G+Pz;0tjc~)94M84%4UgFfiH|o}E1W)r;C+lAcs!(k}Aco2PrQGCPp(RuR`s}ZDWHO`2mH*iJ5id1WRSb#M zX{%=@DTHyj1=RXK`~V%$_$h+z z&CxWr{NO}~uK}>G2oTd0#bostNoMgqAmR@<&%3lGlQ%U+M66D6-WpR zwD4badMwaws_HZjgZ`;E1svSPWTA6oaq|6y>Ld<~i)^r5lrO!epRQotoSd4dI?qn` z3(%0RY!5Kkb7)4)USnyT_rbN>k%0-gXlc(gsZJrjDN`6r@ek`f1*?F6oir*T=kPPc zzs}#(#-D3RuFPZAK4Ey`DGcd-DCu7+)53u{)})0}-*zWBNDqvb+qQg9(KeQ~eqf>N z(ArCTC4a`!kKj-CqQ=Bg=9^@oTHN2)Fm4vErR41D6_mf-Gk8I?4De_nPtLQR)@bay zRq~U;#ti#?7(IBjB22yP!ZUG_%jJ{Yo5`0`h1q~D8~Hr4L%n}RmxrDF*b;g~;m9?@ zV2Llp|LpC~zrdzdNc>q;3X4tR#cnHj<@r>)x$aG(S3JR`DY5Obo(=mGsqz#y2X9XF z@nlq3hyw5y&oUlf7in`_gHEK9{sqk0$;KUk5egpagiBnTus9_JJUA|I2XCID;O8Gf zEjR@Rul|5p$z>R(OHu4@>r3J-3E2xh{h-u*LtTbLo0vFC*V&n^(JRKq!N*JW`ooOR z-_#3E2>peAr2yisjHiHwUFv1CXg_QG2w=B29jc~?h_NhGt~Dw(!U_*!alY+;TaFIa z1k*1pF=F0PIB{R+jPdSx6@`Q2aZvKv=-rRaT8PSBW#8beb8#OHo%``3>XQH;R~Ie` zi#m+moxa3sgsm>ieEMZ}oAMJLBg7DcKVI-#kRb|W(1EchM4RIG@0dh{&cSjtMU5f2 z&Ph(>fz4qd0ko&`)LRh<=lVpBmSblzK{X5K^ zWaZ3f0JBZNnrnoV$(jy@9+keHw1&_Sf0v5%XeLGBfPK6TPfUae8Sd=ASv7|XIRe^M z`2&FvYx&Xm7DGV4#Vie{Q69}^S?p^!8G78;q-_GDn zzcj8?>8!BxpPzwoIA)T-=LcHbll{Y<^zE(l-$18-qA?8)OHQ}HDxE;dC80|nVQ65y zA*D}53+`c-Ps%Z#J|?OSkv}G{Q)jOBX3!fND%cvbaOv9Ol$EY`ciXh?yNKyjz%KAk zi*RGol$Z|Dx~UUgb|YqA=WB%$D(E_inZtFd^C&M|I3-bScN<`g zuD4TwQYRw3noYtp-D8p8AO`EL-!1&9_&qPuo@kKPR*EhR74TISf|o>N-4#cUnOfLt z)s^v{SL+)bzS!ulUjOG7S=#V~hUZUvrE3H)Qc!SptF@xhgl7MRAhqjZ5)(8+IROX& zsZfOg*m5Fy7TmGM)d7HS^Yp3Fm-hukx)TTQZADMQ_S;-m6jhU$zWCjn$n0yE=P>ji zz?O3UY=gMRShA(%U~Xw})3x$%TKL)No&YH*$5Vg&H9DM!HO?`t!D#-(9{h=0jGChZrb8Z_DQT6TOGGI?77fISKrDz4Hg>K%|re=@SRJqtV}s? zGV)!?JR3X{PR{+lz8)JhN%;p^#`jFb9>5%j54qk%4y3*4gtpW`Gh$L7LrD-|&oOhp zpLWh(j}P5{rbPA!tjZi1#^9cviaA6JC$qege_+>ip@byP7hu&wG8$GqvV1LqL9kj= z?mmJ`^s>nh31gG^(=#cSOQybAJ7r$y78TFYJ=YA)pYN2-iUq4P_rO<+D4t*r5@WL5 zn&S+LYcArCgsPvPSDx0iIzPPVQUC2hCEcYvUhjX;TSZWpBD(3)@{3zaRJW+pEM*j7 zlNV3yS(01Bw;f!Wj>ia*@D1!Q>olfvz7rE9rg(Hj_Ah*ttX8zSR(4=?!1wFX;rRnE zDYE%W)c0um(xW= zC0b($_gm2yD;Dh7_HJ)H3x0DPIB1E%x{SwF>o(5iY(%+IaQybAow8 zYo}^vIe5Ml!hnTrTI7qA>|-AacVdTZ zANY(Scs*x{k5Mqz1I5mhj9M6z>J(17cm-fRm`#zQtd4>*|=rq`lhnC#St zK|0do`M;2+l~qlbN~A)yq42EGQR&AMXp%L)Gz)ImT|_${LTDI0BhoC6tv>tjC}2k} z<~mzI=yn*4oVNTfpvC1(&SMy6cTLXW8<>DbDI{qyU6ncY&NqYUX*LnX31%41i5;`_ zsQt*DKm-`c?OiAZ5qZM+e1|oK8VP&+3I&>52FiO5m_$uPp*+hHc(Ef{YUpitss{)^ zLJDizCPlejONun^yu9_v(pj_RJoZ+U#x8h-Dq)VG6#8qC!Ul~-@2kG$-9AGSw`4KD=)UbfK1kb0b$LaWi7+8#O<(@{2OXV1zqJ3g}BCeE+Y zOMPG|#9l(g;;vJwg3uN~P8&E<*^!X(QMM{|!**F_73rcX;MfWyY0n8RDrA@(tc4!2 zq0k)zEJ_a=m?X%PaJaL#7m~>OM@|%nAzhj_-+bUnV#@AL|Aka@O)|7i%wv+!{W;D# z$^Y-GjyvOmF^UP%Rs|;7GeojAydOCg4DFKj0eBX<*!mPvbL5L6i<6mUgy zq@wapxdDK#URmXq@%c*9GOkI&Ah-qUm9rs*yr{?-`%$HqWbJsOa9D?aj{6Jcu^Inn zGi&b-t*7Za3<=&d9Za^5aUfmkL4+`u^i+E}v%TI@CU%6Oq&{pa#dDF(k7Zk+53byN zb28GI=V!rQ*T0B8yp=#;&*-yjeg?_|dZN~#OJC86Ehe2rpsu+SbP{*GO58XiEQuV= zT2aY;1ym}%Y|=Jx$?9=5Z2h%R2@D95(Q75;+i))JM)`z-SKu%LQ=g({;B9S9_aO!F zTf>pMRcW)Ip^l)o4ytqkOXiB7#c3n* zo)j&(Q(1}B+zI$Q`Sr}U9;&+h#KynAeS*bPYYJLnUDWLI75jhe+k@7bNB>L$DmF)8 zk1|Be5evZ*RH2GRq^g@+@|Q9cx7^DiP=n|qnfwGfD0j`zfvTvtYp{((!333flw!*a zp4T#aKeVz~CjL8QEQW)2@JVqv~JfP=`e4!fsD*^#&%R$(!$J&OTNXq1r|iNXuXgzI%RMNeQGp zMjKqt?1I4VHyFcozP+K|Pi4%XK;^YLxP#hYMsBA*e?(9@itd6Dc3$qEVEVvZo55J0Xcc~MY6NaqC1Mz4?C-%-Vm;C_BOasZSM4t}mr<|R3s7oe0{ zf&yC5nZeG6hn%v)D8i0pQA|)zwGg$4h2`YA`YZIQ7zZ-4~Yd{gY?*UZCRNgbU$*lrLd5x>D1#MORl-ER^Pj;iw zh?;B-#@s^CR5f655W*?vZt)r}ibI~hTqMjgsgMzpoTw*7|0`#jyEj?UbP1Q~L2Vjz z2bd~*_mnFd;Oi81ftonNE;V1Hj9$%8Jad>?+9K* z^i}}aUK)Tn!Ya_{jhsl0`E!;*Npc$26oe$%8f!U}ts+Wrjh8}E-{|32Rc({(VrPhV z&Z8ox4hRkrU}yyuk+t$7tJ@2svc9f}Lr7@WA;&w`ZU7yx{)w=Yv}Ox1qJx(n5fO@b zzY%+s9?1f`v7760t;AA1$d&Z|drbI60s;n8=*k1i$Rmsrxz07f{OSrKxWF0*SHHhN z)sam(L7oxwl#!QBBxBO<)BCFb z|Fy5@jkgG4M8mTl)dO;uIdOd?j7DX45T`_o-v5QP_XHsV1WA7Z_gUTPAVgCEiMjx3 z^W!u+Nig4iJHwIICxVLkJFLvyU4m$IriGu6o_Rk)gyd*%tc80-%?NDN^W9M>YWz>( zG&Zhhtw5(`!1@I`7Aha@R>bn#0EW9Cp9|lo@xh``Z9-d%2XZqsEA>u-%z}H}zc`8C z;~k2jW|89M@M=XZfmkqBmjr1gf&>EW5d1fm4ZuG=aADed90CXk)}$j9z9KEjfa?UY z4>bY;=OO@;AZG=nw2s+xC^Y`yn!u51QN^~t(Urc^?mtc<3El0pwKu}O4pbO^^XCtfO~C2ZY548z>5pLLW9%g5vAn@kQTGJS z@PbLe3q9hguB3Bu}G(ggdrD*#V@vR@|Jl1 zpRZYZ6%n;IaZhk&#!o=;+&94r;mPT&6XY=Snlrcd5XHl9AX9ykI@#rm};B7l7|3A~VTv!urXkzJj|)x2Yk` zbrkb2p{EA9_g$aAOcR3w%;J~06J?%KE20+*MZbfV&F4Vymt^-x9k*K`+jwrosm$vgG% zU+HftBrWIuH2e8qX#%O@qrktH5k*bxNOS|BRW!{!#~=KXKv-D!cJu_Sz2&|UHcZxG zOo2ayX6%q0vZF{j(!v=O46|QDZLe^VFa)P3NWyCnPt7ISjz2#>DNg zHSn_&Zz*S&P)#G!W-|Sxch)yd=I{S}f8I>w{u5EHI&zG|L7TfR#ZXb*@~VnBRc_L~ zx~7$w3J-atA*hKxpmp{TSeuh7NKZB=y23!M+Da5ohDPl}*r30m`erjbJggPf%g_%j zc!_zrjrUz;<#J?GRhMtz7yDmfDD?2ke+L_>kI>TeTE-mRnW$V4zSe+%uRZ?&3F)vj zWe|Hud4d=zlege)7XcX;m+mqHsxximXzuHl+=EiHA-jYtv`C~4u;&zgrS_MEhYZM~vBr zmyAQCOERE*09h{CpSOUc(uI@YPYs1r?kW>gR6vd_01Qb6*@IXDl9|Ml*I>#8dGapE z)s7@TE*GYngm4|mkK-*NgTqx4m!L-kQu*6KM{p^JdE%9%dWLKrVr7xyte21GQ8@Wj z9W?P>Lkdw`!=?Ux^t?teW0$A%R+Kcg;2Ky7^ z?ep`5vtTYkOfDF27})Z^KHmC#68@a^<7e%vuxg0MmxyWyS{oa{6YZu{Dn*EpDiQ{2 zjj{k183r)QwD~+ak=GO?Toq&&mai4)C5Iux;1G3GX;&W#B$L*jYDxbS60jQ3HW_pD zQXML=wZVq%5r70N9E@6C5xkF}v(Z&9M*F&$LozMIUZ;5`QS{P9nY+)+^wno5{ z$F240!&6qxhZ~;+4Ebi~tQZjh@_W@H7qI-A%sa*$wXOO^*rkk&#Xh2_}<>I=68d?Y> zqtp6dzn$p6Q?Sr+0K85S0yMzpHm)}iB#lDsx)V+#qa_P7VG!h%YQYM&ijLiX{Mx$j zI&-R^Z30gCe?7mF>k1@L>G-fjfGmnH2hfuxSVpUlbn|HP7Y&P9CBPvqL6fbEy!vG@ zb~*=DqzT-hgHRrq2bKR5PxpF|+INu32Wc`#0P;@KjAPG4`T&IY^@p0U1`hjJK#8704>ti}jTUXw%EPuLe@}{!u zuJj&<)<}EKq_UCtVN#=V)kl~N$@=)_i`+-5=hKSMro)#j4-MWVEJx-XZ4lstkOsP6 z7Y#jT)?Mg3M{Mr?Oa;!>=IAxd1`dK=)H?O%C<)PYDFQDS;#;CmgvUM+Me zatE8ZBi-jOs4~z)YdpR}i2H2G3p&Lj#ec4DE;owPT`T=@5ia%Q>r2SZG_*%^lM|22i|tbI$#( zAcTIu+I#@KkwexOYgn2ANlbqUvZD@?uFrv1nY-8y{#O6!PnU|*)}+b#+klH}BskSJ z^V(+D!Q@-)4~}qR&>dZjC2+!EqYH$7EJ7VxQx!~nfI2G^=>yg~tx{u>QxR2*MSHnY zdHpKv!mHK)`U6OVCy-JeA`)jmC_W1zV~zFv(7N>vI?QNgdyg?ZQn?@OZw}QeA0hY? z=~(+_3i|()4saS?2BIgLD-uzTV9tWnBY6uRZ@<)0JOGt%WV~itYaj;>eXq;EvkWAX z9*EC^&H<{$!}ZYD1$1LbW#9tXN#&onyRSft)UkUODgc&)w1Q0Hm_d~%8H4({o&uNmeFDwiMgZ#E8Bp#$&(%55j z`3s=S2pn`K+iU|}$DF{$%q4@+J(Fx_J0_NxTtw`?2X2fUio+IkIqz4QOO!33VdWum zhSEC=-!(GGAoCl%n$jX?otRc4=CX7aleqco%KYMlnZHjuh9#Yjvb0`+je;g!cBUlBH)Vw^vN44sOYb}xk<{hdbR`egIK zm$)(}iyF=TysVHCVGH@!AuK98n>g*POzHU1TL^_4dU17sSRl?$-e7=`%K}wVq2kLF{rN`2PQH+~PJK~|cI=j;XdavbtZHz93{kvZ4^5ZU_Uac!n{?K(KLGot zLNv}9$9CAf4Px(9D}}2OE{%`*FJDg~GJFK~HuC{HsNf zz?$~uzaAHQ9z#`@oj%oRPHWl=!>FHh-|DDNvIh7neu07erxE4jegXDwZ8Wx zC}NV3@e|oPXbP5u4jXkCOr{!ohH6t)iXZfof&oyp8{L@P;4_4v`vO0nA?Pba9A?6C zoOkY}-8_VegnxSbGUt$jFN{eSA&_3#v#sk5affr9N5%BxJbF}!BqwFB8x$xQ+yqvQ zQ^HwbCgz8ZX4oK-=;jWmZa-IV`3VG2oZE>5)xkb!k!24c$mD##o5#pRI6Y=w7XG-a zz6>U4d?JR}0QN+98&@z#v_9TY=n3;AA6iliivYq9-P1tEOS4UaFo+ND7Lq2mD-mqt zyPNly{3h<}tMYY-IM-$4D<8Hr9%&a`_+j0B#wZ8`nC&8?$3DAC>@0s2#;9m@^|X&5 z#4J?_q8bzNtoUWyPD~yn3yPt*84`@@O%PYeICdu>b3S; z@7rtt9iBicEtCrKT^8umTx23Qs=klc-JG^ybZpyzH}Ob=&i@s?pkYI6D9pm*p@Hqd z%Mw2PL$blvIN%HW9|S6I-|Y?@;?~YJRbFpr7=etJ0i%^CV_t#-;k6o6w(UoZZNcl# zSx%fSX20GHnH=)|i!hS}(iqHCT3>91;X7FeWd5@?4CPI$1fxXs6zvLa+ah=2m~vNB z5axjFXC#o0Y4AVX<<@$*8AEix<>2SdCFsJ-*1uX9?n1%FPL+h_{-xNarj)y;f&SpF zvL<{NR5Y`4&GIVJgO|$6vmeHv|823)rcl0n_PxHL^Amp(1iy5JNsp8muCVwPCJz#V ztl9-MH6~tE&kY%diglaEf3hY>_vR~8Nn|r^F*;r6PtfU44dR0ss0fI~w&lXi>249U+B=a*JkH zL_ZePFmgXD-qC&#n9rUKx*m7WdrFhd!?E=-5EcK*Qzv4P#}yK77pRh7h}cx=-0L9q zS2TMU=g5B@-s87%>;-LC{#eARyrzf$NqYoUvOWIp5JRoVN=1}6OcizvGUZ;BQ2ol$ zb3vOAqnnv+Uvw;!Vto5;zAms6vmrJQ!Gsyn;=~PIpi-kni-uuIZnxZUt&~W=?8I37 z;LBg#QM14H??d zZd>7Ix5zN)FyxN{uKIT*e&H%IDAGKDnk5HegElq;jssPFOE-#MN%d|elrx>d2vsfe zN^67-XNh5$*zKUzt*96z=E7Z8PJiO@$`alAEs7^DN&|z@P6MGqfU@F;f3v>_BCCYf zC&>6l8Iv_ZYVf?jY_->0yfhV;Bg&3GD(^lwMoZp2Ksn}26K06-SCj~aNyJX)p!;B; z_ERs8g?e;{WFXCFO3cN!+GGur!&5VB?Qf4$$s?odjwtR{)lw?7_lZ_ZYU&I|k;Bd1 zK{b4~L-urb*A|Q05AiAsU+4)gg&Bfp@Cc#@7?X~0@o6cSve*X6U;GbY!gbmVzF!Yk zxJ9B)5Xn@&-X2bw$!d#mIMw(5)d=AUbD5>%z0wCi+7Pw+58sAEZ`#UMY)jl@4yA{O z!efe345JT1xWUWyt>h<%?Cy-mL?(NwDZ;1g!+ubW*-CkY<96#L$>v#m%Wm%B91Hqb zSmeb}!NynT_K~I7&*D4TQ7rS{pM5arQFYRmynVrt*q4f3z&5mg(eL~F(-AK-<1ggsst+8 zoQuzco=Uiw-J)9S-31}VHm#pF>aE1d#u2fo?xO(@Qvu8;WxKby;h0CmS#7nVF{Eu1|J87Y>uE$iO!MN z5aC}`z4!R40!vJ)$S0}OWc-hy_4#^3<$aL>XEpte2iGbihHfZ_)+>7tR@AE{P?hWp zEM%W%4hxf}vwJstjNsfEp~!OF!Wx~ax{=Rssd{Eew!-&yRP@50+XibPw8O3Go z3fU)byHs~y{B@$fS=wlDI!g5z|8PT`&ImD1Z!ZuXlav|xCD(dVKAz%xPw=bgZ+q>M z7B?IT8~81zo&eQfY$%@&Uku!3|CNZc74eM_%I4D~SlSD{T5I}bBy@HXm8L(3=Vv#O zZI@|GtDsJp`?J3|^Mmr+IpZgk+Zsy-!{mIwUIYvfjgeOAeSDx{p3srEvE5@s8o_X; zdc*KcRBNMsAujrA9sac{7d1->1>+?Aw9dvBt7%tb`d^(5{kuk!glspqa8IZrH*{@2 zSOBjyAX)j2Sn)c=cwh%NiAxftNHI-v?aH#a7&oSpjnBZo@;R&0Dl!@nJ>JxJPJCHn zDFtWVKF`W9j3;{WU`OYTm4EGMVSQc}Qk&7ww6>UJvEow(O7^jJN|GXl5`h|At+2U` zsjiZtP>PP<;Jr^7orKAxqr_5f&-=uMjwdfRAgJXn3J^wtDakkl*7s9}wQz6vS-Z2h z`TWZkj4AdfOLj7=8MH>OC_Bpw_?X3NulUX1dAHg(yBZ>OY}9{{k;zg1w(tSSC?Bt- z){bn}KD>GpO@Xwk*%9D^C(DpjO&Imp>t9QyrucX$hyFv)e){8mWY8zV#bQQ)3dJHp zG36+5G;hsDVdwBIH%}I`8KZW$p-F!sP@CoD=Rq1`bT_N%gzda+y;IV_BhozWEtO3L z4MW4)j?*r#bP1YEtb@lpFXQ)$Y%g1GI9YLNi8+_%Q(u;?O)V!`E0;reI-xHz4qYs} z;@H%On$pM)-DU41yfQVXxPi))=HJ;=Ii1bcAM5q9L{9uIK_zrhSZ5i;e9`~a#AroT ziwb<1)B;%sQK{%vr?ScZIalG^hBPsXEH0n0MY^4lv%KE)vNDOcRm`QI5=DHT4-XoA z%%vxUIr8P0w2lupHf)r8{(HCFgT5vzr7CcYnjqTPE+}r?FW8FqSU|Hb`C5KI{YBbR z*+TVcr%dB}ekOunS&9B4T_lCfGu>W=i+cXet)9BWhrWjxCb%A%(K$>jTSLk1sfyB; zF*3{EWF=@cI)Tn>@}j;CY?+s(gHRAz}gUvUd)hV4QX){YU1M8|fHUDrR0p zvG%-px+GDXx>D|nigg{HrNM>UR-kYmp5Ct2g-&@nRd{ADeLiH+pzvyu21A*C6YpVdn$W zLG(}psUz6aS8n=R@zjSom>f@sec5&Bg~=0+QOD}f zj>&q3mZ2Xu0rHNh$NJ_mOfiI4N&OQJ|NzG#~DsdzmrlITyi{*d2`6|Y5h?(>Q$BJ?4n4&CSj z4$qZ4JYig87oC}C2#fP%Cm4UsVs7KG($5h6qH$6=G}TM6*2MrRt#g`BO%Pj91MCt% zta7*>U+?ephCA#V5LG!Va|>>3?Zj#P{#VnSoJ6(~u0M1~zqz}kpMKTfvcbK3^f!~x zgof4a0A&}a3y-!zkWmvvYxuj=BG=XRB+2>B*~59RE9BQJzVFb7b=`fIJq9&3OPi15 zM|&p!O3thy$=-Mgr);|NE2TOne|K>S`wB(wgYDXUdkX0g@&17xx{I)*Pjsxx@#zr) zcdSW1fBDKPsEDzx1*YJv;x*F3k#Z}<>B9!hnm@Xl5qP$*eV&VCxLq21`3dNKLb41f zw2~t_x*@|ThB#e|AbqzKZp`lZi%V9NPh$i936DPSh`%MEw*{;&r%)c^d?kPMyhOB5 zRX?_`EEjmun~x4fhqrzKO?D|7<@yP5#LQcVchHm-cA3%#bn2JRd`CP@Jyu=}5{B@- zV>TF{&Nz-MKjvVFPX6-R)vQDdt%9kOEdB_o(z7hC4APV(_+jPS-YJYdYUte{L?JKm zhg~YlROg$Ro*Vk6bRkM{hcd5(Uwo7>ziN!W#VR=#1(0O1c&5N_zjc2-EzI=w2G(U%~w4Tu<|<< zOeXXoEDly$)%!$|&xME4Ld)J_O~2l*{{=-;GOQi#V2z(}uO6^BLW9zVV=bhj_z2p! zH%%j%RzH)CZC}fuPIH@$Nco9>_rebve2qsJmOZqk-vT^qovX@S{D3t2b*H1Kni7Lz z(HVgZEcsQ-LPvlrMaYkjreVWhzxp_T6^B5KuJ7~O91n%@LM>)`Vi=}P+6sGxL~VvE zDVe4#?_ao6rCB;<*2j(!-UNX?K<%pG^WSR&W9kv~$P74@cq&*0WNmC;DRsML)ahir z7n4eGQ9djGaJ=oRX!nB|v=nBZbbOzE@Up9=In^=?$ocMoWSED@EbFuHb>l&%h$%s7 zS)t6c2w=Lt%Co6wrgR)8Z8MSnS!Ej1U~(!}Y=@){uwG^oV|(y0Q;xnmW*skRGzLIL zX;%+{C42!vVLx`gCokYlH#I-#M3mNuNPi)g#_@iZ84F4GuQZhw#J=k_^!3llLK(c0 z2^s)i;s0d|7Ou6p7yAwMR~7)~D6gE`1v!D>^pO3vuigV(*)rb&&+@~U@^+k?AlG6T z5R<~_sb=X&OqeRk#guh?85*s=?(@j!*r>}8gUkM)J^`THbFQzCGfQw0Q`NTsyI(67 zu)$h;jZiC7o6)~ejk`U28_GoE*ZQ$d@)n|Ag#pUp)SQ7*kA0uj`zCKj-=`;z+-UFy zd+LL=w*L-~fC7j(RhV{&l2(?>`uz3r=G;s9t{yectf zq=cytFGwK4tu-|!Za$zK3q9P#m4Jbv_asm;HeXqi6KS}_KUY_@?HVdbHi8B&O(4Va z#%Ts}l%nHFE)uQWiiN3J*>Q!m%J1Fq;-$RwH=8G(nkhNQ2;NmSJHa3AtF4dmke|+= z9#o?ku6f(;=6#lFEW(xQ$L?k((+>sPM`|}GV3?h*B(-gpiy$(_6(W{)Hg8pWJ4a}z zO*VPxcBi_RH@OT$Z^NK8fs9~JkD^4}BC>~+;-d-R57U8`6S}$SY3#*0_TjPLsz?gP z$p43YrUK_LQ+^_K0k z*Jxdz4yBcgcJoDyQ+@_D$oRMZ25quaWjA-HkO2<_YD&X^B~`aoYeN>3d7ua?7(Rk2 z@O)L62)MV&e!T?nM(^0ALG#{(itcyYwIGIBzf;38oRWW}+4vV|hOQluyX$Q!z+tpq z2G#RR771n?eN<<@z!-BGrDK$XbxNeB@9)@_{RQy_e_RqOa6KhNFcT$zJTP7)0K;U) z!s+7~0wVyj7=6k`e!GXhv8wX^*G2@c7o83Mz@RVxRI~L9XwRM?8aST^>|d!Cj{k!? zQwMG(hyK8)EhM>K#1)U&40!pp1M<90~z=~!%T!tvjUJ@2NaIimH@%ySPKB}7_X_J zIkPJswZkXPt&Ku*fP$$*1T?8&!f&|;9G|NaBE>EMJw)EV^{G0jfYQKl!FbLa*`xL! zH+V1zI-CO7N0g4Jsn%EL)*+}*$?WSqhZ)tzHEj?mU3CFmP6V;qtZ6@?lY+7KYD35_ zYbzl0bY5Pm6UzZ~xd0jCY9jap!nUl?>s-H)y*C>pKC3h{g{%=@Y9%=?f-J`Jo<{sf zvj8;Ffgh)b(41#f9_|<_iLJ%>?nB`fyK_}Yr3?%g|M?OjLkKB|Ud0&P{&YYiABu2d zw>Hk29&E$Mr?G-GdRuA64S2n>^*`XaX&O8Q5mDi5r7fJoVcgL^LH-bA#fFIDa0%X+ z&;jVRyvu$~C<6efgP3w6dl(BKm%260`EUfoVbF#bEj$3V#N3ybPFA;eHw1c{%X!x{ zCg<@vg^Y&PbS^jt1~)F-#{6I)h^!Sv{a_h;31f&I-e6m_ZVXmtIxs(P7TdLc^X2b4 zOK`0#`gSDw@hr^dIt8t|{xCoUWDG$epu#H+`PAsQWE|2DJe92#u&vLA#z1^J43O!` zI;0+3Zz$rZ|DGSysVH~Q136fs%&n;laPF#6*f2JX&_`C&$30r1_+URU{QQ6vW08j_ z)lyD@aHnKX5evZam7oX0Dr-}n!3>+AiR~a%Wx+2}SOY9uSLKZn7J{S=F)p}_(%}5I z=|{p>z`F{NVd=f-pvAMFZ#)}@2f=^~^mMT93LMgVui0OF$x%ZiI@r?sX%fwz$z%$XuQ0g3h;>j)h6;T9OR z{*$vyyvQRT8ejvaDbEMR=MQb@3A&)a)Pbq6N1F*hm>sH+eMv_>aC@FA{259?b0V{? zFvVDm;?sVl=m&g^sS1pINJ!mEP{;$jD`-8e(pN}U_MHBov74v9&N?jvT0-N?cUlsp z4~Q=Lv=tRC$zFcNKb66e&tfSH^U}2%6CElAfs&a~8`3pFih#&?=DOJ3%YbgI7t}B? z1hx9FG)xD|EMo;OXaX+hnt1`Z!sxVpzoc{E@rX?Ey@EO8~|#?E(Ia+K%j&%t0Y%BN2r zslZ_8c3?1y^Jgf)nclBFC&0hN93N{ss@kF)oek|xV2Xy0udQqyt;}EDa5AxXFt@dV z^YY*072&>N=IHp^L5z>j`oBNHYin=HSFeNa09QHt`iYhU490sK`iIOVL)r;O27^6) zbYIOSVQKWNiyCfsXVrP@bL8i5Y@8=lPPSy;#i`uIMLm9@WBkHgeNnkY?Wj+q?^9HN zkoIEF10749`z3GXFP}5B&eq{M$9dy!(Y2FWVLpT5gDXd_o%enkCtKZ#^^op_kBK{U ziaN})p+vT8=Ol$&i@3qx{g0!Ib3mtx{69{C|53X2o%Vm7GkbjI@2UTFPW$o+kNp3SHqfl`N@J82~qgGU^ORa~6Ir#XZ4S)KnioQcJ>NKDEx| z;N6!73LhTsc6vXvvn$*n;FTMLnHU@x#4<{IB=M6{XabbMg(y4&2`Y~QbC`fHyVn$Su-jgcx-E~o?2 zrv3ho-9le>xW^2aL1?}2X#}BjvhL^r87TlsyZ{` z&>6YjA+Ef%MVfIODKQVPS#4yP+}>-S>$Wq@vyO;}h$&p&S{`P-bmsR$Rkb{<-Sf3EHx5WV>jqmHWiCL6Q5&z^lUHZh5PgENWNV;eu* zDkn(FSe`vi#T?PZ;;nnQktO|9Uq8v!y6@`?p`?I>1jhB9;qgN@X;ODcy3lZuNx<1h z8g+-8n6t;rd+6gE^3!pDT8BIcI^$tTeb9yNx5SKg!T@2+)MOlVhwK6x)-k(L(Wxvi#Ns&Rd$FX)w ztOuU-tv}b)Au@Hrb*ZqaEk-)(`w+|ipVMm_y~^?5UnbtjHL`6jn(p*IEcRHBAI~eT zrSP_t7VHv<(>JXkE#@lL_4f2wSWjhVC4~(Zo5nlP3sU%yIttoGG;Qv~M>?E`Oltv3PrnvMhh;?RnmNQ^|)1dx!=1+1c5awph60_a$E{ zDb0z2FAqOV`!U#j97)UDchBC|;j8)kLu`ENcj#^VgH3$AB@3;AN8#BP&p&TYE6A+& zWXQK~1`W**ICLb4W@5TWY|2MG*4x**9#Z)?O@;coOoz&~RcI4AkV^C!Q!PYKqWjt= z##_&(?!XB?cojC3*3ZIo5+;*Su{C6=cqwm8mjE8>y^+|k{e0IK`>jFK_&n)2b-B}O z&|oyLq>*LjCw7c5B5V>AlBKX6MPdWJ^=T-kp0E_)_Rm~eM=(5x+Aamb^&9$y>9I^g4(o{YaXk= zXxn!#)0lVVj_vd@_}-Qc{2ZoZuz&EJ@<})RZTa_>KH3sq&Hynj*1on*vQW`WOk)d>X1Pce|V+ zjAJ)geC6wEMS)ma@)4L#pXGTg(_7M2VP*(!80>Y+!334}w+%~87Em9mXf9CPZhH3Y zS=;LL^z@V1jSWWv_!Tp1>FiGFBZ(g3i!|9%O=%CQR57Nn@xpYLQ`930K04(D2<<>7M7k3yt@C$8o9 z?~fY~Th-=%Qc0Hxz~TAOviUJLP;43^(I?!4z}Yuw)TULC7<%zee!amF z3F$iVo>sex0p_D|m?-4Dq8lDc2D@~W3Loo7>{){%uJwMp)!@+n{i=?9PvpzjVW=+8 z#q2DF{@YAc!qNNt9>wYA#4+q~%Peg|KW1(Zblk)tkvpEncCY}x}I&8RVuUn@*7*AX4-Ec7$HEKMFO+iUe>sH}HEuv6%E3CcESX{DMN z1&x{ULeL>&oaEw6v_Y_O@DS)z(=#(TmyT<^x@JYRmKs@a-@c`9g@!7h2@F;Gpmjh% zK>IVvI3dK4mT96%aI#$^-R!PuvL{O5kFa0CqJYzqCS16WMwPR7b&#}4Q1o`3i88Bt z*47fq1vN#X&hzKb&wy!!+45v|oxVI+<65lsYyN}uzG37Pt)64(u7_AsuFc5q-=9>i zOM}HG-KmemLPK9n!~{E|aWV7!W}c1i!yDp9}8m$k*>BRhunSDfo~3@@F7$>`CZ z7UBY2$NH&!2v)mz=&d4y5x{e7;(tHie0U4N&(-U#YUYL-ykh@o)w|Y>`R=rqLLtlkM_cZji|R%U09*zv9f6XT z_d48bZMvC%`%9)*gT0Xk{N#sXO1ueJk|_7R<#PNU7CbF1rScKRrbl;*U0qj~dwbm5 zJ8`O|m9MU*gMh2b2|-=6DX=rq*49qE-?=Ht=a#&elUpD_hLhf(pvt%z?z%Z*R+Lq} zQk6TlNtTiiQ9d7yrJdC&nj|E%PrgB&enBnCVqvg2D>fs$_!?Rxi`R9xnLW90u$FgF z6uqcM{Une4ar;UdTuNwNS+BlfxXd~{7H%4s_fRaQr%h4}b_ft1!NWjLO3hSjv1h)D z+YRmbdJ8P>`VIEmw|}->!rh-l)~?aO;i}P5{+V<>q-~->26cAH9k6}Oq5phM?FD#<%PKTsj2 zM3|%(HUBm;*ycH1_&QZNU#Pi}X4Dj{-f~oTw0)El(aW!6nQEkX5StUgTlKYjd1huN zb{RA^aTDk0f# z1%O2ddwzMUrC+kZs%?j3N!gne&M0c1-rN}36wG9~QBmZ+y%KsrCB5I3u3pi8P5e%l5WtcBZmcl_uO zndCBgcCgUsgT#6pd~$tv8t^TwmJO@NdZ7UJ#r`PK3x6R!Q#sk@gpH7ioFm^hPX(tAsAho9waAyTBT9t-jYVHmH?T-2ppgnw=t z#_}bG;u6718L)+!r)c3hKS~B;0Hjg@)OrIqHZ^c?&Hc(X)AYj4*5gtho{SnQSAcOmJCAO4k?J)O^^9b zW6%oMCIk55U=ydAUA~_@SmcKm(CP$sdkh|{Qe0FtEhkNSVeJ3AJsuIykBhghH9z4l zB(lNhy(|BoKZN37@wzg*)#AXTCKmcfxjIaH7Z^qEW%|dLb{7UyY%T6Qx3yV}c|45g zPYYHRoC*r=PGuL-$efA;C@1D=z%i{9`J3oG#!vP`Y^6H|g{`FbGV59Z2u>k>B17uu zY}yVTMCdMNjOH>tQul&PwAm81C`@o&M)^tYv@$4~y2H7yOwH0sfW-&okq zDbVNsF=cwND{E?<6QHl!CF6w6Orh2_%BZ87VD(9MTg-ObgsS34WFXgYV}*c(S5L$J za5hDYz6zBl*TTGg738hVzYTv{rk-J=>6jh-#xZQ&^*tFG8JkHW^iq6NjX}Bhr1F=7 z5M!Tr*XQCLQl!WIdLBKW=&Ueq4x=b1hgp9DGgsr|=3CFv7?yk+yEFR2BANlvi3Yx2wS}Vs2{HmG`ljp7*H<%gl+#aRP z_MVAEYKR^JhT6}_AYlAaT}@4GA_h+=?T|j&e{ujYvAW11V945l;FeHOF*9PvxKItLbuEF2&~= z>`&5aJb3VS=Cw#3n$RCBCf3+Zyv|eodg6yglVEIY>}-V%K;(MX-W%{f;Q|$;9y(I= zFg$rby``|Grsnq!J3oIniRgW#lMxvF<;Qp^9M$&Ket)f%FJxmP#Ctz&p&FbHW|p)- z1MHzP3z)<=iz3fGCsjbdcY|)k}VV5T4IN$Z;2njH*!|41W8#_Ca zjz}&e(M>3D^W28&(dKt@DotpemjddPo05`}QB46eI|-<_r7qnv7?E1@y`w|o5xv?G zm@)>_a0pcgttjt!t$@31=WNnkCj`#L(Jc?`Obq9)3 zJUS>;g~jZb7T&u3wcoWJj-z$n-tPxf%152z2akTT9KI|%C)cZ$J7l8>#3M_Te=wtH zQNP0)&@Otd(1V&;y;>77sK9f%#2&6H!GhXyRLkOco%b|a@1iW6Du_i|Uy3w;JKUN8 z+G+$KfW=md8=~34{rEi1s{KF|N5RsM^L&9zwj&k%YsD0>l6?M5-n~t5!`jSVJBGzI zI$BylKRXZW`XNYI_-6QX8tO#%W+6(an0Z6*{xo>Y$<2B6`m!ob?s1i}@a@GM*2o3I z`D@%Cxw~^>RTv&1sa=7_05rSqjjST2M6qTFa{b;O5yI=<*2k1Tppz_^VghUisc!xd z4*LMmphG6HTizRJW`oA87ke)}6LMY1h*l^|_VXH>Eivz93vYgs=(#l*WWy(6(--Nw zw3QP*zd3g~Q@TzQS8`4n4K28WNK4^74%N&)EqzQr!9~0HKA|Z88C-$jqJ_aW=F5ZcaN4E&kw|^I<~*H5u%h-* zXq;bCwV6%%@V>abIoll6*{c*`X3LYj-?stf6_R(dlnJJQE&SRPU#a*hQ47jREbE+O zGjUO6iyYQ<#qm$t_zU{B9I~$@rc7E7w2%FuNp$SXF#r-JiUKow7+%vSXR|%LqV4}D8+*Y;7!_a?R0qs@ab6q?)rVeUaDKpjS zhQ+Y5$OYGPxhw0xo^_%%H`<>_601fmHWd4-NV#wH>8CS}8o$~+Wzt(wi>9dh^Y(n( zDKE-*V8&3Au-gzru5wzosEtOawgNGT7h2_7!3SW;Dat!vhIO5L6vDR=H~ov&fYG&J z{HB|)%0k6W4sm5gjoB-i?#1>;SSd=le9V6vgmEbxXi!!j4(Le;Br|?|^@?lJ&-A1Jq z&ky-v4d!s+cVn;nzia3{P$$RcP)pL47pxjN`osjA8eKkfayrR zSb-;=K&)aJmBVh;zWVhkW=zL+(GRyF4%$&9#nF7JI@T|zo{faf#Cr+F%IxeZvWv`b z)&nW#-3wv%-WhX1dx2)x3gli}2ke)s235-XiYqei)CjU#F`54QzXOFv z?T>BS-=@%A+C=4{$ol9C4FL%74NEos4TzkI<7~DU`^?;2eEk6E{nOy%vtJOu1uvBg zP~MSr`J1vdT8+5Umb)QDDU7R{hr2S?~Z zmBxjSQp}d)j#mm%6SxaM3=Y?#jdIeYEwNr-@Mn^|Nak=lk%S=RW7EDIMaOTI!Fyyk z^vyCQu*!5DN(IypHf^!NH-%z-P-Ou?Uc%tG$i-kO=$E>KhmDb>(c0G&4*>oMYi=9w znR=$@s*YTsaMUkRD9O1x)ti5A9+n^INuPc=neX0M5! zJLu+K`h+G#lq5cC+LGo`VOVrr*3z#Rcwr(j(rj;XCxXhJ%` zQlWU@`dACxQQHFeCx*xcl-ik97Yp6D0{wT$g@Q_7WyJdZaP(iPVnh4AXSYaN+>RA> zKpCIN=JnNf<=!C?FmfF;*5#ubQ||Luk|AfTy_Q#t87t6wbhs@YZoY6@dgo1v2C10J z(yaebj@k7QuzBj5*JfG?ZE*~qJUZ}OxGjf^$_=>j_IdAOHMyodH=|A9aeRiT{^sEY z+~#^wD{sI^1paIldZFvfLt_I1Oh%$>$uSasc5!^DYDHDn+khN4L;;|hscyCrPvZ4# zEs{`5Y3B5^EPLJTWP@;(`Igj)mvfodk$&cD8C79)%VSubS|De|H7nrs*s0usZJ=nd zIhXDqVd3`9{B6)*OSdu0pU1_KmaG;7w1h}LZ9O(2ZAF6z-SyAFK+w2RD@4EPHW?SR z#GqQ}5H`Arv36;7R7P5p>b8gP;fs%`gsGUs?zEfFbtDP^R_Q>lcG|~nir;Oav;U5p z3`RcT1Z?tyl0diBnMm`O3Nu7qtV}NLSFrAo0Lb6oD?E8iBNI(u9rtu&#}KHe{LwgK zdX!5tZ~HCbFqG~tR`gLPe-*ZgLm60CGRNZ6w9E9ZDIi5^f2 zL)}5I#z=ary!s|g&Dyi@Jl>%JyP2sFX&bhy3k@%@ABGsGT0(Ej^$%sDwEOqE#SZhh z((F9hIq|3eYw`mHGNZ*ZlCK9}qV{0p3JQAL&LegonqOiDT^-L}{qXa$sw9(-A9>hu zIc+Tx2ExJXJ7%Sjh=2zj?nt)iB#tdgAky3^+t!nygF2fGk_5j2M&Qnm<;|t9jY)aa zzqd`ql-79hCN7+ZnN_PD z!g1d>G}vuH((g-Et!Y^gzFBl*VG3Vp*KGe?f+lFd3;L`I-HM;vrY!Ev0xpFqRu-Gs zfXMl@hsC#ClzC75+qmxRLithQtfi$Tit&#)hJJ`HNdUIV*7|~bBh%3(8wb>|y8ggW z!%`mC9BJ?Nf^@BdjoFf5qj=I$E*S9Y4h7{%OcO%*B{NL>e0zt!)=WmZ9&hwM080^E z1rK%9Z-9y2$$s)dll;Y?wYZIZIoZhD8@0PwkPV-|KQg#)?BN)Y+mIp&gPL)-IO zGV~Sct>JRH3%8scI_Sw@DWdZ->ZazLiC^d}Ut@ra@)U&fk%c%cix;J4^9J0!Pt&CfRm(ixSB4ex;WoeLMKwjHm{`f3XE znN<;GP<7#`AW;O8!ITn#$s**k8MH~j$1ekQiyrskEH&GsC`Vk|V^H*R3iG@$@1m0u zBwX#WV{;G>;SSB=DmLr?QZ*(AnMt|!`}yT#0+>3$sZphoK*#-&_bD?RUaEJXP*?>{ zwzta&c^`W00={CQ5wv@_UB{QNRp)hZYfmnOIjAy;0%_@#22uA5wWW%|K}k1q!=DJ< z6&aDefB$|^{m*CQPFc#y`qp$zS&M6#+FL-p&Hd(RgEk>>c}NNRh+OMVHt9;azv(3n zGqZ*~qM||EwfU==&GZ{XS!}Q_;&+?Ts>D?N6R@~*z^q_FO070fvypWdnY3E8o9T?N zsy=Lr%tc~^r+zjuyDMZW#9nde$$+d)eC?J{F=nnJGhJZ=!8T@Nt&aro5JU2?&U**$fy$JG?;e|CEo?CUX(qR{YX=(sjFs(1NgJ_k+GhcA}Toiudwl&lf7@tjw*P29P9SlQ1? z+K1f3f98pW_Dvpk_PK~{(82ewBOA9X)S#Tu*t6e*jvIYmqZ{QT-#o5fb^S4~J?ml&UBpkW=10B! z*{G>eNWcv_WVBp^G@F&$JsWeIiS_8Pupg30*s?E8*4p}dKCo)En8ck*u3Wj22iC!Y z`W9yh(4@*Us?Wj9J^&Tg|F?7K&xvp6&Yvf!*QsVHg_3|tg+>4UbDsceSTW>8XoGM_ z8Bnv^`LlY>mw^WAw$Uw@pCKO|SLIbVPHIHdzL*i`2lnhD5b|fh5Um5+q0P$5N;9?{ zt}NwWl27G{0j?;I{XR&@6xD8(Vjc$%FFO%H=9wcURvVh%x!OnA#yRpk&`_Y6@YomD;93>KX!CfCQKpHyaQ)xsMYeBIgQG`yJRiVDy z0xQU(kfI{v;w+X&DvR}{En(lYfzfEHwrj&EWT6%`0}QY@i>4SrZYJd@fHwtvmRE<^ z0`Fo_XsjEl(3OOO>bC1s5NQiC*%&{VAij0zlq~Px`UEWA`@R&98!w7cHWVyLrKgbO^dkP z=*K`&!lLKo--C95vekyEu!#NH zcw22CGlf)Q_JGpcPpE0I=aJF|`hR*y1c&P4ratgPf9d&PDE`j>T5M}mSU;_IWcST= z9c2k19%O82gY=2`>pwo5K*Vcb1QPIjVg?X>M@BC7-hVn%uZ|Y{TwZm)3FtiKP9OzA zVc(7M-mV_c?<$~Z1GQ&7uPo^Gp8_vujX9uvf9vV(<%+;FL<0dzNFO&sbhFZ_f590fR^0xIh~^I zXTK231ZUivdzIFv~J#Lj#zS`pkSzPyV-5_Nm z+9{OS3mTdhc&{#9NLmdpn$_sx2TB6{S7tG<d{l<2)t1x)%IxhYby;U|b-{@=0Mk%N< zqY-E8#-r=@O&p9cYeCPMO!Yu14=rq?^4@u93FL58YPwQcAF&Q(rL-XsSe7iN)YA$4 z@2s_l>_ID_)N~}j310qTG?1B&aD{wqDbosNH{UHN)g@X^TDQ2%gl`mhx&dXA5Yk4H zrX&{-6SA~Y_O&Vv44&9D&8x$J*P6TQ8q9zwXc5s^ASRB@=P9!&Ngr&Sd(#SJyYbsi zf&;p?`-{ZH!xb}Wo7!EJ<@E2+&A0{pqfpU*X2EjaxBZKmhm@OW97?YO>?xL9zub>It~egn!(4=BcR!#0{%uWjdk zlO{cP-qfeKq6VdydtVy2b2;3Dlmu~3LOP#=CpOm2zkdxri!OR)?fCc_Q}n{L0_6!s zd3m^XpX0hJ`?p5=`RwF64k*CXpWKun>OenI795T)6|t6U+QxM=42fOL@1%UrV}Q?* zawAvubwwBDja|n-&51<*^uNaRhmr8Gm`A<#tOO`}xd0WL8c6~%mqtXfFh{ERs%Nxv5S2B z_Qbljg+UMtdO^c83DwUdm)ET3+mu{K$Fk7){ zXVk&ob}J}!7S`KP=rVbKn%y3RzE)i%dNf8rh{_&-fL0J3Fagz{XEae*4l~ZDQ>Fk? zMN+$f84vZ0lKHR!dBEU_tgIhMe{wcS?f-p9Ct!TWlpZz-xa<&rLEb#D?LM<7d#FGQ zS*zl;A^Z^4$d1)m2bXC9Da)C~T#U`a3hX<_WgsVr$sD#IYi|L75sHUmAX=67Cexy1 zwUDXnlX>nh6C4$|4_Iu$-yw*I^YWg6U7|Yi#>WFJG6XfUKTnHVHIar(BPKplR8+Jy zib2Yw0)w*gK!&0BX|bnQmQH3AiM?>D4)W$@FWc3`$hp1@;JThr3;0tTBrJJpf{vUw(}lfO_`rXgeg+D>+fUR92gwsxGv z!A9@N?Gt9mArBv0D9H1o4xOjg+ zru{{W?cB5K80dkQ*9CP$%_u+C|1l{@JA^=!>tZae$1mWjAm%aM<*l#{CM{85Jannp+$sh z{d?G_s@(kbMOxdtF0=RV--EUs{Ts^A(18i;x(v*_4-jFRbuR{P^1d1vfdD&`cCU>z zmROu&Er_nz89a|ut?xzB8Pm&4t;_R>=@Gg~VS24%xs1d!;LIRUyAiV_8w zzU}c8#K%xKn0Q!OAG0aM-1tDn5(O-5|8|u4DJ-;C23Eob%8?)$Hu3;qQ-o2YSvb40 zFfDbOug8#E$`u$a68IghiipuWP>bWLS+TEd6H-@y{`}=z4-j?rpdRSM7}PzfgpwEE z|Cm)pWO|i@nP?CcKz&$$n&meLXG5{a*r$STJ_(BKgNQAZMrZ|rY*9(rWRh2tVw_-h zN82|2rG1bsx)0fNiAA+!z?i#^><5ioKO71Jt;LV;HwNav=$7Zh8f(1k_7(?y#HW`$ zMK34D?<-}G)nzxbQnsp*;XPs?n5*=F>vj-dnsqj;O-o^f+ofHUjD3 zZHn6MKhkN_(Sxh=f5spRWUO}rc4N%!-U{GmmI5{!c6M_AybST2KHfWk0yZ-Ps zpU+layXjv_of?-y3BXp09Ojh5yPZMujLrSWDO%l29BFWrH{b;^FUP=O=z>ibH$gHn z6vP1GVQ6R%6s$`MzGDF+0(xj+Qv!HL%Sfez;_OMv72HhEi8nIoHTutMK!>_5?|8hC z=#mrY4dKnYL^+ExcP58mdZA}k&cu$V$JZ*U``7j$`e)>>b?b@582^;+U>0c`fs^}y zDZ>#a=m!fxDl-9seS#JA*Z(=%{r>fP|8)Yyx@Zc^q0J}%c_ci7;)(xpbbY!6LVEvs zl-z=d!hat5Xa4CQ|8`b}>%sr4FE?qma4}_>PR#Ku@C}hb2FL(*1XMA>VP}Ic&{I)U zy904L55OeBc|o$qNa$xutc{VY@A+B5fBI|*WR_?}nI!f&KZ?hLWPNjIr|p6b^eHpb zo}Qj*z(~v%Y*NnND>wN!(b=&~weNZ4Y z&IYIGE<7_y4isr{WL*Ig+>aPg3}7G^A!NH)&SFN1#5zpho{|`5VQq)eRGZLx-nqciifesm!*MXsQ-Of z{|4B28t5waAa*SK*8L}{E#@ZJp;LZ#BT>S&sCkVcAd(B&lBpP<4p5;`6hKJMcO)hC zYB%$3g-Gz@>sXj#rbPbxim;SO5x0%6+#r~_6ao>l)rN*gfK>#ZJVE9PcDTH1tqVwZuR z^^36CKZsIM3A;ciklrrk=SizWW;u1=AAM1oy5fETOlWSVv+ zp>(vhIpYzwQ4>EuAV{9c?kl3}ULfxqmD%zrPwNdqzL*lKQ8MnwA?E+OP|0QB@(2zC zWLG$7g^Ox#YXg~^;j;X0vRa^vhCzc4?Og&}#NvKHo1VsMTorpjavW@~x$Q20yvyca zm%8LWs{?c@Z6mt&6$U4;XF@i4Xr?t<{@(Qn=qaiIqyvB53ZjMob@&M1;^XVIqNb*{ zRlIG#2$Ik=JPMpkuDj1v=JA1 ztBvnenY`S-x+)TnTKLzXmGI4w)mce;X|A;dWb_fkFDgYFyM!6PbVIC)RE+wmw$9l5 zgS1?!!p3S~V4y5^9BhU%f%dimjpm6eB;U`paAESCv6dLD27tH&=|CL@#^&XXNcr72 z`B(0?P`4sEg^{Q2?wEdLcTXA6V@Kw|hR6%R-}k9_eXmYU!$$m;rL-vL`k2!yGQ$n6r{+98 zawXCr9>+FcmY$y8D6qS`8+y=@D2@2U|8qp$fZb8@1sXfb2RaDr%b$>dA6S2uT*aM#A!zT zbhF|PyqPEatP=Hw8lq-)Tivu(^OH%xe-(_>0?|mC)`Xy36K6yH`MB_M1^d>3jPFQ| z8NrOID|g^Go2`VdyBKua#d@!tY<_a%=iRtYfIp3a*39<3yrQCFD6kBwBEu`A)vX{W z&#Gl1kq!JJO;U^3|a$FBB{gN&=pqt;2M<FB~xQHF2d9LL_JvOcs(Y!3E z<5_?q*zsh|lqU7#oxq2o!=b&I7<6)*+)7q_iEOWJLSb|NlI*F9@Lqb)l z)lxDavkYrD=}CY3s(koY5%=IX!-u6N!q!8^Wz=j6m*U&|zb;`d7W=X(ZJ>hjmBYbS zqym3#=a;+72N#E}M{nJ&l|lwapQ0>VqG@8Lv^yfCtA_jVPChP=A;4f3eyygEowK4` z^H~jAnRZC=)cp4Hjj^#Yw6!ojC1rB$7mz?u%0-9MrcQUkymZOOS_c;z-^vtA9Lo~fG0|_>E&II;? z4er9~E1VJdInwcS>JvDuo1FL8ukA9*INXLdsF#Rxl{4`VzZLMl<6uh+yt67|d6X3d z-pPbQt+sUE*o112?eWvWO7ua=LY1AWEqXFLHpW3WnSFIYC-z^T94{%C?qlv^gpf2) zAK&hHNX3ewb3j)A5zukDwM(7==)nve3rpj}{ay9Ne9giKQU@EVkYmQJS5?x#?E-Dk zx%LO-BmX`Gm`f&{bN^n+mB-&oZiH3hah2r*dP&-Z1v?(vj_KUZv|;i|N(la>D1z!` zyv#1w?qySmw}OX{peeTf%)x}w^KNICQ>^~y-p!I*$i1}OUsexx@^A?cx4laj^L77O zk`NVAP&fPCsh77)S2l#12c)(?gG4G2X+DDO#m#^;-2u*b1OO-6jKQC{60?Cx{s0QS zo_Ghjw3d6VQ9R)wlMn|IHZU30v!s>`vsUe5BHxAl5yF#>Ja`2{0ZjOL(&Ko1jMMP> zgS-s)@#xf$!<+9}YOKmgHIj+GTer$`A%vLU(EsqgislNf?Tx#qW~A1&Wy5myt<825 zQh`uD+`U!C#2aBa$P}NA|JNh6moZCozpu4lr63QzP(zpW{JTwFiHDL_Xf|fq%zZeR zCCV^%u)WVxM&a8E&_t-$v*&?d)BJ}aV0rlAed6&Qb4q_xe{1so)v1~*+~-aHpzoOW z9Ee7Jn|*>1gc&zHGx6^Dkq!AydKpM+$zr5#MR-d%mlEU2X7r*svWm3M97 zcHFgphN7A4tjQ?P_UXrY&t=C>n&K3$mUgdcD-U;l7&eTqnSB23-aofKlw7m+ynpm{ zqh81;$60<9k+OG98zV7~Sgu&U*v!Re9(4%y92p&&yDe}X!lN>+_}<%2$OqV=t~Kq> zwdi;!tBcO*qb^tfy>XboEcSBZx_&8s^rmoh)5(KtHRU4`VWg1Iz`}C>(eQy(Pr0dM zN;DLqV$fwpe!tZ!(aGI+$Zo(I#ZdBKIb!F8V!zx!H(0`xao9CY^r5ku7Gke{@*E@j zeu!iB16%HK*?PcjU~a~6VKl9Lkm1^oulMua%E!<7H5x=Aq}Vk{0c+FqMWU0ERl^cg zQP)1!-9v;Oh{Q?WR8QcDeMS6i@%D{p_GQrs;%;h@_Z zyC&xxPa3*7#0Gt(g-m={==Ca&NxPxPR<~vjQzCW=(Vj@CYuFBTJB2?$*g<~`-0C5~ zRBioJXH0@QsYn^z&+FpbwDk#(%fstczCs^({$}ctuvR?R)d-8-R@Qm0T)bA#nl@im z;_K?wJH*IS?7r?HOP^Cv9A$$Ip*>n7qkH~YO@oswP8w#z*ksrLsrOyN#|VEY;?1b) zonKQ|%YX7_Cp~{|qi<(+_Lt`SR!dK7xnYJbo(wJ0KYiV&-xgrKr*^Il*3M6Ixaw=7 zkovk9;U6=lwPk6`luwBL+{aq7PgzU2g7b z=3kTRYDn+Rsg9LbTk!A)gB}h6*e`)K{9T~KR2}XVSI0R0Gn`#g=8dCvg9mM1s0VlB zZEds)Bbs7GRpNjhB_9RIiD`B0) z5TLHJ9RPh3EKI~|2^lCl{uj$NUp24%s1ft^_~(7_C6KvHF04jMLfg0JK0*!~j zm_}9$*vVl0_fP$?k_@COPGCnzCm-$4+4m|Unt>a@dOeWmp{FMJ-i-YjK5zf*r3U|1 zbRjg8%<}Tm1?hURA%n!oo~I*DS)iE@CV8t}jGC6$%8)VmcLd;eCv){7G^#!p6=Eh& zRgU<-9CTnCW*q~-wAudaw8|uX_r8JFf8Jz8k9z~omG}Rm`u;Nsv!1t5*;qy$rtW^@ zy#ygE8wQ;G7892co$H>HQkbMGtI8zh6QviGt}Y2qpn_dFqfH~QX8~~d3VLX{haKKr zLJpIW|NXyN_rq{xV+ac$wEtGert&fH6&)*&4)=^~9Gb&eCs$pj!LHZVI4k+hcqvqnlY;KI0iwl1c@8KP~ z_|FW9n0IQ~m+y!Id|>*~XWOEy5xcDA16-$OYR}!rzWN_J@WuOZqvJ`~2et%jKt57f zfy^ogQb2bA-LpgW1{GTEMr&7=w+x zYaqSxTUA+7-8BB!uU~6mH)22iNPKwsZSZvw;Se_-u{m)OJiO1M@tr%(Q@44ePw9+* zMt^XM{iEmU;!DOswZm$5>X%J%fL!t8L8eeQqpEHGSogClkOBZGeK* z&J>!>1wVRIJHMd_#ZfGDU@I`X-ecxP7Q>gd)|+2&aBm~e%&T)SX9Y@E2PiOhDY~WO zY!^UPiW>s474VfadTI~_Ej0n&1nPtb_;L_lWr@{CiDZ>v>y?1<@6Xz;H9M05vz}Q1 zV}BfjhI&=m*KzJ*rDlONK|*VDP*}_1W%X533)jhwoU74tji%e-{#jI?nf=Xq`j5X2 z$}Cs#N%^{oL&nr^LdNS}PL81(Spc?ZPPi#nLJ&$q{}@8KQTdw&PhTj;eMe;s2Kv?t z6eep*vRylFsnj;K)~6wGb%Pfu2%lqVHzEif;))O!ta+6TAWPW1{S(>lP0B0#p221-~-uDx_qMU>FnaVa}K`W_Nzz@|``I1Cr zLDzopTBKH=F&F_XV&Hw@*Z%CZb<F|mB(-@m)_RTB!$^Y-2Yrb zH<#)l&Z`q~fa(pMM%CA|-N*%v9eXf<>3%a-bA9>E-FA>?kSLQNDl^p*=VQ|*CoL@< z2==jq7sUVoIxU)Y_S^;fl2>YSmDF(2C9|BX=3$zToiCUMp=_=V(@N@7u@wucB?z-T zCq}rw)=7r-X zwRV~=r=5zv9hxuT{qW+!R33$5mv030`5umem;Y`|&HA&kR7(XIF3%AiO>HBt0`3uy>SCJ7Op z+K{P?e*M(d#$sATJZVAMPrJds>J4pP?kttt{yj+O`fx9B6j9+nzIFxaLt%54qss(J zArlGf>C(@+qdETwASy>}J?&i@XgtP=me97YK@Yu@FH z9WDK3bdLqk80~|CR~7$;Uc`J!cRzkk6ln8$C>n82T!dsPK*-|2tr`#&#RxRAA=G_; zpchq>e{oqoCl7-4bTIjCmtUV#wY~w03`8XY22)DaG`X{kiqwciPT8!1oyBQ)`|1iL z&s=)zxS0ry%6%lmXWCB3<8cEPpJv?~t!?Vx-yI{I7}-PNm4*DQDA@85?;x-=5U&yne|@5XXXfw45no;a318y% zW59xIvaDA<1-+#2#D(8)b`HLYgFX;`|33(icd0BF7lLML5pN>MS%Y7Z^47uLOb;qU zLt{G-pq!0pko`f$&7DtIK=8-Eg#SeH1_$pzj)@OwX5^8b(FRg+#$dx*LTrzQ1(P&k zU_S)WiEXwVgk&I2j;B|7O-3ql{(p)AN)-G);~YdeTK2$C1(nv*eCt( zl6faKjEp?BStviEhdVXL4*?DWVb*Dd{h@*6?{9x1kI$gIog8gCN-|e;z;k z{|bt2dy*^vLD00wBXAcIX$Uf^=82sBH#@I>;2R1_sU{FpwMl=o>CjR>8Gt7hfG0jr zLv|$O-mkqX<+xlbNzI@93!d&vL}CR2Nn?n*A>I`HktnbzE6m%1G&@DVFE71z^WdMe zp`q2KOoNQoGE2JUAUW>nk)@iv8AldqL<54}R1xg&N3bPcJvr1X^e^Ozn0n@#V(?|y zL4)E!S#|E`$21^UXr>Piqo#|Zzu67BQFfzik6AWwl4H2^Ed%rA+#EyZ`}N77iuLcs zc@=OgA%Yy;-@-2tbNdwhJ!~AjYrvZkkf)}L8yXsFl!BSNrRzUWqLcGWbuTo(Rkddn zUTfrIUI>PgJslc`Pj4hFE{ka04CsD#Z2_7qmc2gQ0RJ-TUo@K#Dm{0|E?4*c9bXnD z`~^lPrqrBzknA)dECdTAi{X?4?_D?wp79WbbIZfuzd13*8guwZ{x7t^{`zHeGzA8B!@T7O4P&p;v;5v8m`EIpir8yXlkOiq_J$(!K`obQ5PH<1EE}x zG(vyCtxBtznA47V(l2t7gB~k92{L;sCE`DN<2$wH#4Qtxx{*jw*NA8=7(73G{465s zV^GMrb?n%&s~45>jAP%xBaUQsfrR7CE5s!T>zWqS(@UV_>)0eiLNe^Zq=4*?Rpv-O z3B0`Q{y@~jUG3igg105?wuEQVOTQ`lFiMR2$Cz48xu7!D;dw^R@?zOCy&RVS=Bs=M zmZZCeUz=RSk#JYvGC}@Esr;@fZtxke++-mr?@cV`G^ccT3_JOlETx|MIG)8w zd5e%O+s1LH4HWcPT;;U>woaY_&zk@RheQmhZI|j<8!MGdU^}33Gh)awBG4o~*wXH2 z{x=X@og0*jP(<iQjM8hky-to~ zVeySwt}NC2)Yk8!2#alyxLWu&^&c*r$Z4%FChpTSEBLz4%3K{|@9K<>)^v4p;4YM~ zN%=9?(V5k{sK;6v^lhpg<0`C?+br%$`v8Z;orSAT+Jw?y!vg45Pb7}dzhJg{YaYg; z7Fl~CQnoV1LuKsXOm&w1;MS^{b3$n%AVKi_v8I%?GH=^eqFHL5{$DtK&xAotdM~WFJEvt2bfPt|RX^fFDe# z=y&e3P(;Y^Jr*TDsw^D^nH!^3h@ zhX$_w!YtK$4m*DaDmxNyjz5EnC9LdU;B9_B8zGdZn|(GZh3ansOH2bv=zxT@GMPy) zX~2}|wY0IIbDd~F8sT!VTMF65oY3n=C#8-+A9kl$c}yefz<4U|_o@cZQF=S~dEKG@ zSIS&IC)E3$*Yf@gLDh3TjonnigY?iv_VsUi)ANhX(5BA2PaZI;X)AAXzVq(d_}HI_ z$^YYvw7x9-p0O3SQ~&%v$6#N^Q#!xvK56I&zgm0EM`P*W$v=8}EG)%>@_TB-WFn!y z+&KW{-u2?<9>)L;0vqimdBu~pebZBYU^yKIyw{y|;~Cr(XKUeK$};D?YyTZXj$K85 zZVVl%eYPburD5Q6Z5l`6_glQ>O|ow57+H2V)bf!h@S9udwN8D~+OXf$U#ZSd;#Q`U zM!zK|C(mUBv}lO0322qdiP8cuJA%KdX}9};TRwnUGYHFJCBG!KIy*AB(^j;1(m%9= z@-4b7a1Pcmv-o&AhNO3jD<}%@nCOF0Sqk`81A z1HwOEa?YZE{U$P-j3Y1jFMT~!-%TXlptph_c|4?ZGuBeNGLSt6XqOm+bo;oV40}$7 zyOXsH-^-gilv*?#4k;c-qC(LxFZv6(_mRBIINxquAI_g{OkT(v58pCz4jT~%={Mk z=&eB@`;i>6*tDXXLTREVHX8Ppf??L17|5M}iYACKV%YCp;AuXz-UA>(f7F#5M&9eD zmOe>l^NQFO5Tc9n)(o>%6zn6zxN_Ijqq|3Pn-NF^!sQ_Eoyud%=|EGW=`JC@-y!fq zeRZOufnhsLucyE9Nac_UGT4j(h`$z&F@z`e4o_rW3(fgtJp#!dG`IHXF2nJyfWs)r zdt>dvdaReRwy!4PN)IT3XPjtg!ykd`epJp$<5y`5_0M6PVl z53%-}IfJs9yt8abM;Zrm>Y1GiXouc99jjstc8gJOyE%NSCni3b~Ni^f|^I2)yg@!ePQSeOtW z)?#tN5scReH&_~4yxxAeC%npce1BD<|2IL|&@lBSDX%OzA~le(PP4QIEmq9D@MbGW z5?}!Y3n$k|A$S`sLG1I_O-Dt#ArDL$T!{dm&%VKt37T_Idm*stdD?Ly15v7wE~4h{ zylmyZwDgQLuoYV&HW-NHl)EdP0#f0wk#$yb(e5_4mg!5R+3)ztx}tmIE!6%t(lj z)fQr20n0&s)(W_Tn-39S>p0n0pAa4Pq(`e0-q>muP#0)DX)C)bm(Ud=d$)I3{M&1! zys=4Rc#UwLuGaqxG=}l%{osX7tDAeNI#ovV{-jSgih*M8*H{7pfmeUfNjmc7pnHF= zvf)zB)Mc_royyAx7!UfIV(_{DRbQD5;t(Vl*9J^fQ|-G*K(wn}Bc!=*Ko-GWW9Ft4 zP!v;QMm?d$=D`MNQd}qjq6!J8Hz{IR9d%zD{y>e3R{M8~4aYx{&a&~{=)QYo`3_de z5kG>%_C)$eVovbjmi>)}x~@=uu*~Y$d>!YXv${u=vd`Tj>eFL!x0+S&!5ler03e~i zcasO0F%-dA(@p-L6vFeo{xfb6L#K&48^&vu+TA&%8iHzn&VQuo?E1bofM!Va@PCNG z*c4RQ&&y+H7l?-$Wt30~uo_wtv&!(iDv|^ykQH`+Bk!(0Z<^kCT0Liw!UWIJICHSs z2$iya8RVWbbfCBY0hYZpDkZ|7xB`U-x$FAla?QiGPlkOt)%klDbheEDFRi*SCWP%{ zmehS;6v;L0|HRmusV$Ys$jBH376n9!tNzRm97HtMz=|-x%9j+*Jo#gEw5?Fp#Ka_X z`AAu9eetjmJ^hfMh78_uO&RkSXO<(%=<&;zg3sK_pnJxjGB_JvjhpvEow%|WG$pWQ zICI4i-CX9Siey)Hv+5_6exFfwNHp_Wn9iq0GYauDfOA67+C-~yt5aI0F99GuV>DS5gv>q z@9t&?3Nl0m(4`NxH`@ip+0^GE-7#tP8pimi$HFNdGp30pgBT&rlrdE=9!WwKymve_5)t|sH+r0uEs!Aej3IKAX%n;7M&`H zbaVq82lOBw(|Ip|?c7lfJ#THa4yYVLhg2h48B@O%OH_5#vHh*0Pk^iAB`xJ}!(hM= zs{aS%9CquejacQlBwL_32q!-62w;s|ICxlMR49=92H}fw`u2a*V^Kz}*bwT{z$Bod$?gcC3x^pcl5 zvib4burOi-mhIw%8=pk7q4Tm~nKhA}?8AxSmohxMkC&i{?SUE-V6`O+RkjgUdxvI1 zjvO=(%c7GS&=FSORhFayU{~=}2@R+)#Ot{_N(=2&;Ye8~K(uRy9X8#)k=O9z~Rmmace8qexGP!aYOzNe5Yx>4Fysg<#;WgS3WZn8vZ zqENy>m2Zlk&O7L^^Z0$o$4N-NaLgJs$B$K8 z$C{>vQF_j49R%4jI>GX^$Elz$sOTb*-$$@xBye(do5FE&EhI&P9d%X4W?rd`CAWRk zN@`rO;3qp_*lIgG#DSqBcH-<0RDp0|eTmjw`;cmGKiy7Cfr#u=MfV}qIOMHpo=v9b z+mFk%ZqMOQpop(McJ3wvJ6IJunb+X!9w^bcyLAu^`W<&9Dp6Ql!oYi#0@8a#E%wrDGow_n&_FB zl>?y0IhYfYj6|G`U@y$pT%GIJ%K_152xQn)w;4hWSHBAGsHAjpKxpba40G>dxngEH zpc#Ff`VK9lF4v}mzNSOTEFO_rwY@s%$xr4UHNr^+XVsImxQg9#T3RpN`-K)D>i9O#=s{5yl8%xdBE`CW7$BrYRSd z3sGYmdC;EzOp*k8seP$oXAvGK;JGXy5sVSB!EGUVL8g3yf@&RUYDTWkFcqdFv^NTZ zO#pI5Kq+8V<&?B~bMDLTL3lPt-X4Y`Il7QmCd z9($2t{=201|3FH)tAoch2+2sE83fA+&3&#OklT+z8b}C)+1^hr z-QCpM(#MeGms%A{r~Tm7FnreT<|iA*`)?pg2h?SbAEQnK+oproEoPx}rr{88)RK-eV@yD3f=p3%7VLI~qZU0z|Upf1-Aw^@ToX83TY)xtj_h_hEug zjzPBcvdOQd1a}^uAmh6t7Q&QbY7d9k5{wS&I)nwYFdl%%Ra12k>QkFt5Hl&LI&NqN zlAagZ{=DBtbz322aLg4s*AmcX7U&=XSwWix>sBWCqQo8#_RCB!G4zJAFEw;$!rXF; z#pvHW7Wq+Iuvzk5Yd>^$7#O~YcmSm1ZZIAP1r|_hdU`P=uLN;%BJSA{W3Eqa`H)fl z0q`#xA?wZM$@ZKrm}L+lUhE|Gdyt5Cs5M-~quBj`7p0Q}h|p6j z+86S{&}?;H7)|=C6ozlfCce|5v5(g4P$5r6wC27JQ3Z<$(IF0nJSS>Yj|FhoocBU> zrPd@gk~&=Y9S*P&KV=$Bl4A}m&t-xnXchvDS@52$u3 zZkda<7oJ*OzEyX`K@%(=$2I4&8Pd7?7r}po zw*FNzb4wqvWyDAHtDuK>D*wVFvrt1h@8jG}KYkF3$u&@X_9ckqeb4jZg*Jw(?ox+c1cnb(35ruh@ZGuM4Z!AZrl+7y_Djvpu zXx^PI-470!rc~G7Zz7T**q7Bphd9)(UHvqBD5T%ewKs!^H@rRwSyT%z79z8Hz6lLlG04*ojvH>UJ4J z`8zp@2{5dIv6Z4fUzjO)x{*gp)&bf8;30N9ZXfv{)K?fy%YSse0O!kc8~zQaAGwQx z!T9pmIlBhL+}JB$J!%~VQ%f+Q+z(*R*S!6RbsYzrmSvqr%<^eCT^d~DwHqZEBR6EF z!|P|PT$HUkY%*ropMYlFpRly^5Qerjp{9^6CoASY_*Lom*v5ObI70}5V{ICaS$|y$ z@&S=!!`#UTl)9_q@c|`6G6bzbfRDL*`pqTSLUvU_;BJD~$xb$7gMF${YP;MSz(XeR z$mGpRnshM`H6?Z1vHPUqYkK26C654jp2k`QvbO!)EAdX765@9bdE9rAUv^bzVTrk6OKKsip=%sf& zr{omwT>pdD^aC-2hn6kpUQ?r=k-CQpXBQCKcQp7+1av`zob0V&2Qs&@+yApMmt0Fs z=|JR)b=&6YhUnMvDGIbKh2S*EQtsW(M01mhn5Fw#BSLONv-U5;ukj)19@g6f+TS4PFA4`dSzoSJ&*IV{cq5!cS5hSvz=Btq07yP~p8nSR zm5+fB;e&pYoR(`N_U(L{qw=W2!d3Q_>?n}>7&JFxVa)pfk_}-rDMP#3pnu$6ljffc zg+uGW?)`(GNr<6a#!PkB{o-~7yY#|#v-?5gf*ly#8w|RlZ8Ft~u*6t0jmiQdx-trts$QThS*% zICk$ZcZ`q$VpOx9Wc0^C{YBzMy!=?ww-;tGu|a00j23LWR5c|x4-fJ;)PM*~CCbjH ze=IROdY^M~cjBx7%2JZ__n+>u-Tn;n$gd=Lw^$amtZ!l#rXK_BxaU<)?(F(7`glf` z$%vcQ5PyOGE8L-MEXPH%flC9C{9r~oEZP%EmR=ZG-|>c-{u&elbWY~EiBdFbZ0lBV z$lg}!2zPLLlG@D^z&icwnjD+Q+2d6pCyhv{ZeO|N%t4dJ_r`)V(xg+}O7!N-ZZQ26 zbi=XkmBY34Tv@ znKVp{AQKBvY{IMZGJb#zns>9SILl(HQye3L6p6ONI2hq&$U5HuxhdF}YEP;vyg*R_ zK~r1ViX$Q`P5c9W?)6{{rn^aRFBUX8ej|hRgC^&!vb$yeM`~{1{b2#z9u|CJxeo7X zd>TFThmUO#S|M|LES@x?f>ie$hVirC&su<1*~1e`S3Y-=;~k#pkQ=(izvXR77&S*T zP363LkMmRH38Dw; zv>Qk4xcD8_hCU@3V znmxEGRN2c`#4uLwukXfWl=cPH8**ev8g`?b{K18tX!spCJA@9~di@)Ih<(Xh@Ku>`)AZM;T{+9O!3*k*CwC5TlMeNT-_DpM_037Au7yH$YBe9d%UQ!w^$$ujRv-|*a z8&Y+;M!~yerXlq}l{ybu<^in+IihNVGNIaa=*Ko2os1wfE%Wzg-3&2%{oQUr>FDm{ zr%#JjfpASpVam!RXj(6Eex4O0#-wK7ZZCAa`yV*J#Orw&vxWFd(L*2(ZT3iM+|jvW zu!cl9Q&UsdAPDY2|NWm#J@OEOr1i$q7V*9N1sJ zK0Jru(_L0yZH+rc>>i6wh>V-;+0GD0TtGLz@8zqTh@g+H|RyAKE zHISvHqltApwq227&^ty1$X;5S=xRiKfS=rkc8sY|$bv8#R2|nbM^>LdB)XPbdUtg> zIkfla-hi&d4u9J!AXw{{KwEn2K(MDM^mm2;tfk~&m#4w70vBV3`J^;JyoPSQxeQ{C zo2_rd*UrOiA`mV;fOMu7OQJp!jz2iguput|ffU4A38#`fD~1$b)bTD1;_=5OCGhB= zX6EVmv|R1_Efbc-rYYeBgOH@4U)mYOXY@8?^yhozDxGDkmV!KT%AJ9CN^X)?`J8FHA36Q?3{N;Tbv(jrsv39CP@W{{dNi8d@Gq zuRR(@_)#rkJ@B2TzF?58~x%_({FEZ3}USN5T zrj|Y3=Chzv0$WUW%@2&G)s$_9tjJGVM4c~-!t-;jMDIi?lplDfrXyBYGx_L|Ys%u- zC-JhSSkh{1F^2EU`!z&$X*k^4@@FxB*NxC{Do&mZV)opHf0~#2$uNf6{!mgH21_Fm zO_9($Yh7rMAB8zipoqD~>4+raN#*26KK!1gPU=`_$R)Z>6*s>xqs#dR7eI|H>IP>i=UwFTWV&H?V`GC(7QuIFco)& zz5#7Uq#_7UqC-DkKs+vJI=$_nQ6=h`?-SFP%mr(&HG$E&!9}-6j+}q8)(D^s%|^m` z%o5)$;2se93<7p9L4sHvC^^R<88g4nyj6n5VbdHpTAnHPdR9N6Qc8}inQv>YN`8{s zAOnLTKqm;9OY3V$g8W9tQz@#&J%{E$L0;%1B`rwm(JF*!%SGGb72*VdNIGXAt{F8J zu*%dt84Lg}*M-rD4h7pd4RGJRY0u-E2!XO#Kj;^^eqeyXPybJ)&Kah(m26T2qu#}e zZ6V}O$DBFfBfBmdrqe#ph{k!bG}V45uL!WkK+5Q3%!U@V%2LGKStw?d&K)^2*TWf5 z%XvSPYCyO*Zu_THrJeO%9Xp*u8~(_AIh5zr%5~thC5yYHZ^bA=(i1YJ5gEMjC`tBq z@Iz8T$0CJ0D}PE|aiVSjbPn<@4zW*QW-7kks~YkUQ9n3aA76Mx=64qoCuI%7qWSH@ z4M6d%KTxFLK|oF>(~HdEDzAXapC>vR+5>^%eHx#(TRv4H|7=0cWfIArJYU^%0y>J;(4{qIgH2=Itd09kUFMSuwi#*QpZ8uJG(=#pC)nS37K5C=i)Jo(G{m>bd z9Fy#|D;$L?`b>Vc#H7J(PA~WM3R!@Tkod>xAc1oKvzIDu6;cjw5cS!?eiB+=%-+AB zhmzHBJx){tU*$vEs{?he_$-rBPV$#s7@S525ybBmE{*>if%7p-4zfa6G6xTv_AC4d z8=Gavj>oCh{nM`#lW1;SP~Y+7_~F&fUr=7ch3YfiUy*$$W(8D@EH3`UB9l{nVnzED z7dRFJYdifTFIjfhwnu;)3HS7vJIk74FeD1dz$pYYF5|lHN#_4%Z3<*p#71rOW5Zy| z{!e!p5jve|f;}?Z`Z9nEH z#zISMmPNDVq6!D?>CxVlv_rpmX)K~Pz1tyR-2FBxp806*7ZfOzx&5ku4>AF+Nitz% znS$!H>DTk!6A^#)muD-~)nX9B!I1&5^}9eqjLMa62Eo-=wXN9}w?O)fnXqNu8@d*G z1m^~SDSN?wiMlgkZ324$n1rO&!?w4#YaC$)hWazkK2-_Ka-?d8c}BOQopx=I(YO*D zJsC$kLBPs1{y^>Cy;$*Jj3!kbw5?iWW1t}*?6n4#y&3Ao<<`K{wN*+HOU{FD z8|Ti+s35<$5XzWFTO?PHEaV`4MtmW)Q23MlK?2Q<^zKs1ImA`a(&M0${T6xySbqp#q;gG^3F6gm;kBakI0192THflnr3Eb(5oA6lE=^AQsp zCv^585+{PBdmbDI;V3w8bM}B~^cloUa*POS%4<#%um81ZdHob|2g*gYmzfk~kP*rL5e<+NwC2I`dcu6OPh^_8_u-1twD&osbVQhUsanfsMdMP1&{ePocZ@mwZ zK}!K6Z9$YC0D-VzutV%otUciP`R$K-mDmp%*`c_JZyi<@d^I5+;)qj@CTr={K!L{=*?aRn;a3$D9S$ZztYhatj@N&BBn1(drVdqbdk7=HMP@)6hIUX33JPWn!j>G` zgP$uWBV-I;ax6fM$^XY&CskzcAvWr&dbj`FwQB~Wq0Y)w(0Z}hENR#vMxe2}phsBt z7JT^-&J(D)2683e{C*^l`Ccr8SZzy^5>XoopMpSp(Bq7)DcKdt+Si`nE=UcLHJum@I&*hd_9K>2*l4iluI$6J zJGnRATr4PEc2jCah7<*m2ONS5w2Z)y^9ZqLD5*$h(?H$lzoS}g`?bx`+U6lD;~B$G z$gii99*0fYE58x>H_jdE5I?JB`eQ$kXP-R`4^o0D@{HI=P9$e6{Taq{tQv;QT_xaK zaPBSzd)rlUzDG!`8qpne!vPV05wn??7|-D9{QUCzG`b%WzwQLt<)+mP4d^h(>PICJ z?t2AT7bxrw&0x+_p;gP|cr~xKFLukkIfpyfu0MEBGPnDxgM-wQXu7|}J~de)<`a1S zUL0CKd+r=isu1+2)mv<51?9i7`0VN=QNiausOj6~<6$a*R#I5x7tC_>Rp#8Tw*3DR z)Kj+zLmO(55|8L8pUKFr?ri$34?n?7+VB&ZHi+K*AYw6QjAi2+scAaHPR}E_%<_Pd zC9mGOYrSk%p2r$j)>+@DvW#VuIj`sb>hj~Lht5QFeK5P30qyTqZL689+HsZ~zq76? zZj|&Kn45Z1o0bjRdjD>h{Fo8>3A{|dZ7Slk&$_{^U){zCC4OaPiC0PB zk2Wk&*Eug6j+kT(isd0Wb?iUl^Yf?cx+Q3wI!KR6H1&Y~1mqk5 z_fJLzJeZw#aIK*G-(hXvuaBB=ruqwW#iRKYAV`?o?0dGUa~hLd0rDiCn*9AF)(FEi z=YwZ4ALhj+z3I*|i0FoF=FHfBgtWrQA_NO$5X5NGj4u`2uCQFNR}TyQgh)&iZrD|@ zWGWSqq+BgC8Po370DxI~fjxL>ccojO%H+=0{)YH+evq@TWI2ND zM|N&div~$Of>+G!6aH^^{#VXElqs+$O--=&+qYmO)$vO@_?_yI$m7*{h}4 zg(Vo|f`X3!3dH$4sQ>m&rg&&E?|zN%91Z7u8#HFe88M^^2Cp17Yccv?CK?LW3|YO$ zg>?t8RVXCSze-?V|fvj(h`No`8$Pj6HAwtxYxAtSLF30MTPXrS88 zlpG5@OdG9lcc~pVm;FH#6h0=0d<+U1+?#=oZeWlNE#xL2R)1hS30Sltz+TNk1?cU1K@Kyof4c=2Q@K=8zw&jYWc+k9vR zC~s!@A4FhXb14?~!1GT|W@;u;B$s1mxgoi1KV)A@HCW>oS0iVf}KGncz5;m*lnzf{FVvS-2GZf z%PaiuHt~q;Uh%DXiO%#=ov?ycg@W0NmB6K{89+(|w)aHyqKcLRu8!4&?u(9_HvP+U zadq}Ht;{xHGr!HU-k}BH<2V{jfvf~a-ILK;b8SN<(xp5{b0ec*_xE1%b>-#4o0 zkc{k29RyopWZgtOXn#Hvd|$`>A?QbAL>HTyo=#$9<>EiUKFQjT9C-?E4w;0l)UAOU zuC_pkPe*igXR*GYw`rleF3@;plM_u4shRmT+VZqs$nY{9sR&(a1B>*2LKt=|<5!8RcyHJwmEs4=!{ zfV7_pAJ>FhTVA$b-QG&W%n8rt;qkFhK|2&^D+14ROIGbi8awB_e=^N`aE~yi7}JvF z4HZf$3Hy|W7z1G)EG?e%ggD03?X-zdbnYLv93lZy6jap_%G6?(&8HQR`v-znsC!Pw z2k08su)=;zPh5F9o3WKGCjn*EX+7Sa0oZJ_wd&_WI=*UDrCt=d_$@T0I$N1bJqKd@ zm}`v!8uu5Jv*pR5>6K{ZJHITQib~_EDm|(pd27GcY!u$eN>^0CsCh(6ODB5`-d94@wv(FN z>$E?RX#O^`3s9#Zub${U+y#e?u@I$#U$GSTQy|z->z-YlSl_ht+TPn@UKhVlC2Lin z-O|%y!M%3xD6V|C5Yzc%FGQ2%zE<_nH~C~MW;15Lo2BYsUX(_)9#+yjm(RHAq?4VU z#?s57sRzN>udEfj!Rt3i_){nN>zl$MA_U!jI2%zhxP(^_j| z$B~CJ7gn6$p&t+B>U;IZo}rnkQOId7eMf2&dWoF1U*g+AB7wkNtGmj-fJM5r@=jH1+hn0NC8% z)@q>Fuh&P;>D?!9>r^ET-WtpW$qd-p=_UtNYeqg_(}=DQ(fVd##QwDVrP-a8<7%U( z(;btau?uutPfV=J#p^{kXTKU8yO8BTO^l1uZm6Dn<0I$YR74LNl+M*SD8HzApNB?VS(P7bIr?2RGra z1=mI40<~M{mpg<1x5vE$N57;~^T^P==)<|`NT4Ng?8~(2tK~VkeqTkx=e>E_o~lMZ zy_X7E)M7e~je=hWE)vcJZV)c?f7U({Ecv$c2m8{48j>c1Rc;ZT`#mCCL_BX6yPef7 zqh5CkQg4Z|DN}zanX11nzc}*UvL-i6xngH&uT+1~}#z4wo=Z(M_N+EFR7=gu+g=V>Xtf&SKqpAWZx*Ar;-w(#9bH?ccT=^dT0edb2m z@#9*uk4<)NJq$UEKe+{Oedv`#+UF^9)#XE2v$3jSUUr&B(II=yl4PoBcCtRte9ge? ziVehS-Z8yNjkjIBm-;?vX7#A`{9w;W`M{#qb4#;$b1_Ibuk%&~)#&lZ4O;>)+k2zS z)}RQSwmc z%loBnxh~g`#RcL`mBI~!Vm5K+ilq(q1-qrC&U=)U?~2~w$BJH&s-c_PYL%wfD5?(} zmsGfmR)OWwQtp2JFvLV&Z0p1O|-1~lvHvM^6cBD$$JaN4*HK#f*C*+Z1B-FFUHbhYd zOTO9+v0r>+i@z?)nm9OlgCVdoRpfkjc@wT%0pVPb$ytUd+MgE1GE<%=^WGkJEn-fi zv?AT&T7T%8K0U<4Zn6z_t|bbS$z9zAkL zlFWZSC2Ty`ihAtUxk=_EB51b>Q!Qh=Xczercf%sOUd>FG zKf>PI%WE^HW~?Kn^~n*tF}oQdje_wDD$^o)X(wHM@B`zYv<`6ICyI2Anl%s!*PY>N zdzVtw!V}(Wd9m?B_9=yMyUTsk*OhssYIv&km@i*FL^u+q#9>or)*ULb|JdGQE5J*> z`qT^3Q?bItaeRG!9iqP*bKO@}75K1q8~vX5%tZy6+1L`pA8{VWg~@(N!t@i%HC37m zfnDfjqlcVk)XnV8u=vPM+E2r(J5isyd@d0ATsM1qvK5705Y%g0%E$Cw!+zBwzyfaO zM=L_`jt+JLkI6u3!L-zHX(!DGn{7gI(75Wf9&wAbJ~l z0A{8?YyTwB*j;GFyt|^dXCboYgI-WePxphO(Cs-pD;iR*_iFbBQr)$Dfq>rzWXF znxp;YV=io`(s<08hhH1%azAs8o$C~JZAdrI;2mN(_^6`ZMtS*@zE!s>nnM{sY$y_c z&h+hWNEg0KYE6+l=4hi_mHyZBZat=1CfDbOM%Wym9w&962=iE5!`kL99eSXW>YW*6?2)~8$ey$`s-%<7SdjZ*s#3y zvaSAOjZ?uI&(6;Nn3!0O3_e7%+tSGAmteLEN$mZj$i$qxwz;rwy}WduUoWzK>TQlg zlAAlRlA|M?tBEO zgcL47OES&u6|6Z7ewHoVYVGRUVDxIKiZ4HwmSah6?&#eZH{2fgGrnxv^xaAQUXmNs z{&!f^-|_pmY~94PD(!f^xI|oQuW+|RukT!WU+s4foiz9*jtN`DJnYrtoOQrvFUN)D z9G_4$X!7y4l8x{HhCR1$(V{r<@U4dte?6>^cBM}*>1FFzam({KkP#Ei33HtiW{7Hg z{Iq8J?#_Ch>oaB=;>4;MI76D#?wJlbD+g%ZA-H;tk;tQ>X|Iv`;oHkLNG{1F3k%)d7LL45*YtfSuI- z_E21layqSx39`w4imM{sRWo`CjTM_tY)>nq zNxeQ0@?#a>B+fi186BH4>~8-Uvss7QiM$w08K-={eg=f%O;FI}4&k~=_Omm{RO(36 zI=c05Rwb-4E2WFRMnf^qvR_(OLr}HdM6=4$_31t%X+hLz?`*PohgS|KHZp{82kHPb1e!r zSi?s~kO~9B+uGWeb&Gmut5!PI(tJzNw~~$HdQndyWo|Q7OazA+;jNw5_(w@pv=tT$ zw>q)JZ{1=GcDKh&wi)zXdAN4-OCfvtNl8*U@1DmO22}WNAlrST2eSPJZrr*h+#c%i zz=D*?rjwx`YUa0IOHyKD$B{8*#U+o+UEhXF$gASme+9(5FOBNv*lE@@Fhjha+rN%6W)C^Lb4zyS(-s$;u|+;eRJQKu4F)Z; zNR3bPWEht5$E>|Xeq7FtRK8itKBwJkld-}d6cejo)VVB_rs$?jl*pVO?^atB)lH#d+z!s- zhk2i{9Qn2K+*PNp(@8NLiWksHyP)xPq725|23O4m}IuNQ~ zFgr6-37NFU9SYhj`Nf>{XMLW)>W2GC@_cJNQo`6Gt*_9$bTX8 zN@ z@aZ&NQgU+gmaV$F`dh3L?^{^V88Heh`TGs|at<_c45ldMPN~CW6UuJ_TlxrqY7Ilo z1g|uHhlN-L6SaA+=%Fiu<_UG0r$+_TiJRp(Ee5qU13pXR%4^}AsKE8?O^O{{{n0sf z+4vdu&2!A2!z=0xHPg=XevZpjefB>aYD^{8Upq?*)0Z;6hx=6-LiwSq>Q9G0;litMNM8;HAL+!cdF}dwk&-gR2Hy2X?aT0I!=2sloU)oMo=&CnGcy+#staHo_#%Ys4GWWR z-nWuphtS*(=T787r=$!RAJEV1toz{KmrGRJ5kF^~Rx##2j5{G)gM5kBMaDw&l4O~Q zrHu02#Ke0Mc4L0ivG+x!4x0fYIRX<2-5Rad{i;bxNv&bs zm7XAm?qVy=V8^THsvl}Qb-7+&PazxD!4*VJe`moHr$0WygIw$0m&GfxMeAIaw`Z>1 zw_|ygbL;eM;`#%1u|9z}8(0PXS!?(+b6j4Jw3%+!oICHr52w^Sb%>l3iIb+aH!&p- zDb0ca%`Wuy zu$g|5N*1^{*I!B${05KfqVd^~a)pbo!vfo!imYeu##6l%ze`fDAzp1q(=lnUkgy#P zba+R0T(fKqVkK`<`j;W65;A_Rr^Ai`WCylc6Q$dz(jhnUZ3<*+$wev&YO`!+hu z`Ad$u*9no?!sOlb$K_bttGT88hIwl>@9&guG#HHlrcD;SgI=WXwh7Wik3RZxl~6SW z_wfA@Gd=l7Uy@p6lP<~Prfv3ZA`grDKd7yN*tWeky zIc^0>=FrC>oR<%Fm5OJ>=8WgRt#aV6@eB#&r=4dNrF}Y{=N+mlor*L~2Te>E^Ylr0 zzvIWWw9eTQhpkt<@hK@OTecDnLy;~&fKd1fQUF8;Z5|?5T;sM;^_~Mn(e8f zZz!%lzBV4P|8TMhS{2_63MsXzJ(bYX*Gq0;VbKL#{p;EN1KhV{VQL?7;J{C)yBv0% zy-QE=ES@K}Y6zy^&jk}dLe(Igp_>G2TD3owZ61)OMsXgVCRtOjSUr1-aFQ&|`>3so zJXa=`&oupmN4D#4xR3{AF#NseXWe-cTa|FwEQrY}+f;-zkoM)pg{u zD65gteka4~FB>&aclAbfF#dU~ffj+Z>pi1mrNlf@lHw5PsAi_>v}19L(*IH~y0&~5 z7$l`SFbGHDJETX1h+5wLj3ZKW1u9YuW$djV}mjEUNzVVz^? z4{;oGiDI2eR)V%KLUBUu+p+WhLGEm#wUycY;+Nw5QIiX~-|zc;3*5MDNZwK0?xo54 z?LvGpb8<{}(K(W}86oN*uBpYCULWWL9|P*~@W}ZX8p?MADvldt>r-;2$6DDIfovLb zJvi^aQAY_Ie6NJ_V*#Qz&H*AKTw;V?VLR>6 zfKL;zsjJKJPWgWzwQ$LKFWDAz8J`J$1xeR&GuliS*aAM@?|FLp{?(q52mQetSPq6S zf=pOS0KEKpd8qJ7;|Zvj{0uT3PK(i|+xD{dGuBb+YAqMn%F{%i5LOez-ARQLMwOUG zqGCzm=dhK{=3YF}spilJN=iNu0EdN)cuWUf)q5;tMA;W0){azMGluiXbX4UzsojD2-flxx?wih`)Lh#(;$sHA{^qzclZ;sGQ@ zq*PKmMarT?x}-t6yA=eag`peiZie{wJ?QbA=Xu|6z4M2zbq+3O?zv*`Uu`z_Gu8*q z)K3c?`CFu!ET}v?I?9Y`XKV*M1LP*cIT7b4M))`bN^+Z+s2%*4L&7^?K>}1_ z=U5ih%i0iOA1r9gxeo{1x=m_wGA<%y#&+}hD9K<78jdtd8TBy0E&``__Ul`iLe){z3 z(!u`FfosR~mr3ExBBCBG`W_(|mGYl&yrk#u?oN%`r5ZvKOd8(+Gn1!IZo+54^l=?gPoYis$V6q1uRd%yJc_rHgUrxkTNkZ9VGr`H_*27w`7i^tkAc2?}KXKW!& z^a(kM{1b=gqlRem8@@edspxa?!R&*S>YU3)6nn|SSZAD-d~N%3$TW2 zZ0Fs${SaF72MR@h{tQy9bZF7ljAZUV-p+6gI%;!r>K!^^+yP1$)%g-tt*I2}cS3+eKzBQj~4c>=P8L7}hKwHMY51(r){e zMDI6ZblpWS^fz^grXc=pE2xDbyz(`cUauQt!)HMD!=ulV`MWzuO3K zQfZ$bOF{2)>hf0?2W;afN}yJiP-JtB;X!!i56wRZ&G!|IK|-_O?PytElY4^(KyJuo6ilxtn9A0awFmN~e{*+@xUxGIAzx~lNn&4|kAZR{JVfgb zvCbrC2^LIi^TwC=Q{VF>ZtVo3mbJx?)`$CO<=n#b0(MQYGxtos5b2`vf{dHaS}6NQO&`ohfjZwkW={Kzh`s4c+;k^t zb4vRMbUWlVCi$ej`xiTvp%KE~`mB&wrnY{ofBVA5T&pFfenmdksas2HUyHB5m40Ni zYuC{CU^ZP-v|R6M^cdzyEt)0$TuQK|SAWF|hIx6z{Arv;+ZOxWsvzXwUXEgDCx6~Q z7=zlhW@rs*sMM~XeosX)H7^_XT55_{moAdW67&AmYwK-7Q0>|W$8xmo-=$*~@(&u~ za~d4B9-1w9UK`h0u8x_DettYMPVR`G;(Z4xaTo$_wtu(aUD6Bth`uVI`LmHfTXXCd z^%~}~L5^nkDxqi!7sU&6vlG`%3k5UVr5HBnZ_Yg8`kwBr+{meDR`xgfS%*}#&wm_u zuepX_^`@YJ zzQ`o8Y@kGRv4v-|!Nz`&TO+ZRRCb^mBFDWDe)aE9W6F};SAcKzR8o1Rgt)(Hzie>c zqSEL*NAat&+qLnsB+2jNQM#pqEGXTG;+4m4vB^Ys;>fe)4*d&9x{bq-g6D5c*CQ^Z z7Fgik24;ML2A=r=4L-{@B9-50_bT)M!VB-!dDcEKd!*KJI|bqkhyBdcAPD_CgkCj>#h*nNR3ebcJbtsh!kV&DpuTzGn)$`3fo^6p&;5RO!@)W9wPr=PT*HH16N|Jl zYul~%!^;wO{w*_7&$~rW@StH8U+a{k7+i->+`yn6Pn;=Bf?xBpX5PKVc5A5aSR#+X zi$#@_o8Bswn@Iaf_(sgaKK11yFcZq9AfMb*?Z{@~%bw)JkdPEdp#(S5U@c!+P2L~a zKRz<3E{@{EU2PCFlx@sEh8}1h>BdklS8o#IYgqoIOSM@x6Bt)h_1<`(u4bp35miH2N#W<7yVTIKMm*=Gf1hGhuJNIO>}nxixp@MC;ch^nmf?Li^I}UX z`+=Lw^fV?Qw7~<5N>ZRWcEUJp}WJo|u!7=7X?V_o@_3CnD4q;UXSq*GWoqG6g z^`XK*s@LG_&$_PBRKOU-CGfpib{{faQ%{bUu~EKeTqoG-5$P*ABT(8$25gr8xJ9X5 zpNlE?n@>JR4{LzJL;iBgDmwVpi>ONI8;q-UGO-ac^G2S6vVScr-r5fnr#6?cxG2P1b@|#M?qB)-h zLVWM8{n@q?k$1gt@ftZ6O5-KDdFeWcJObWVjV#vy?od!n?a}ux%RuZ{IZVzu9%(mo z1+lNzIqWJ%?VMFgS5FQiaGVmoeC3Ku;{?B+s0pM0t!K}e5iWepx&l4GF(-r^HEm{3 z4)lh`>bmwLb?MNF`{Bu+IY*FfD~3f!I}nhl;r8Dg!m;?%Of8k8iZk~n*e6m32#9?( zIc%}__W}-P_LDU!K3vLWKFFWv3Ge;EjI*LE6|5ZUsHlfc-c#M4nfKm?c?VzVNBH2t z_+b$Yzv;m@hA(Q|mJ5=L;+o`s&g3kttY0Mny&Mx3hEyfMNOn&{29TXB47f(EL*;7< zGquNH!T|ZW5C(ppDUsy#!gV6p5Fh0j_gO#Eo-oiAfR@-DYfE73kYAl~XskY7LFOms zVSs8hqDl#{{|Km2FP*9nStQE+KyH#X1LmJg{<%tm>)6Zwfse13jDnAe25p|R1P3c+)p_hg@-_Q3%bYa(-w z2D22hBq1EiJm$+}yW*1c>7f04G&fmv>HK(LV-$_&_p|#n(sK?*PPST>vSB${w{$RK z4xD@YQkZ%GC*gQ4>>tryTaDgYW`-{pWD*JGnCzcVIME*7_}R@KLIM^VnB9wcWA;$M zBl8gO7B=p1oc{uzhZhboD}#Dv5A!qpe!fGoeOJcb<~qvkUtWA6^&(@>rXiR6+XXqj z+yK;Is9lAx8Ry_kG284^@ljqa8{}Wb2o}r_3ya;yeZnF`(CeR|31y652cDLEtFrgD zKh|D$-G2RVp!M+HuX3bEfBF3dzBUjm^z}@oS8bC2GH*53EU@?mz@DXa>$20x>^e`2 zAtnbIw8Y%XOR}`K1WpAw0OyXFpEo7)gWSOa5y7g0w_J;j-dx5vxT}mmHM?yx)IKbLxr~owbht;% zr%5Joag=nuiT9^pdj9+UdMMA_57kBPVU=GJCOf7{Mp^%! zXEkuE-@qr4`>XvAnza|yyp-6x)QQansFZOT%!cDWb+)K~zy(_R`IqT#Rw;Y&!4Dq1 zGT?vn@ydt>dh=Mph#0i9%L2EdW!W{pxXadZQt$$1^}$ja(f+@aA*)6)uXsj}4uO;5 zJPtl(CD_GY!Bo2x^!^Y)0gjqAGf!`-Wj?C%oui+~5aV}++VEuEhbh^R%jOqOZVTDj zJ?9xfj$_FrHrCrUYn;%);{i`#l`rlm8)lQp<&NvbyK5}kqC{&{*51!7(pY<+5&z45 zyMZxIOvxne=s=IDyv1F7d0VNbNO8Hm;E>Ql8R0Ht+u!htdmjYNpxc(`)nA|P>fLE? z4pnM(mnV&EWky!{^i+nfVl`Sm^;y4T^mJDIErr`W$jwq?xV=j;2jU~(er6i50HYw3(IfO`BnlMyQF6v;zA5+|v0+Js zjO1ZGh;PCQkU+IZbS=_O7IbNZVZ-xSib$!{!C)JvPh)K4>2ZH=&HwApf2nAeBiGF-W? zh|93?Tr`3H409*0XUWOtQNmJx{i>;nPw?FW#Yaj;Hin=#pBBe_M7)EvoX7zWowbZa z&EC0uw%vD864$c^C_qwbr!DO=VWVDd2Pi4OBnq!5`)i`HXts{P9i1Gz5Jb2JsNpsH zjpy$#0j!l0W!NrWn);;n$D{YhpD$Tplh-w_FlGM`PmTxd+Aj8ZhzK{ zC|4H178yw*?h8E4n*H8x$wzV6*#2j}$^t?2S{YQ+TEDzGK`E`qx7E$A&~_Jy~{ z{gcwtz5;(_2HMv#08!}?j{LmGwNH5mpt+#p>SsSz1Tf~)`dByrIb0(nkW8HF}x946avPiM{XDyhQ{ ziW1k2!;j;sYcvVACBj3psPF@aZkPCjU~KSrRgFi0+bOO!@I=eR zs2$eLa}iq`7e{|nR3(HV^}(^g z5SJR$>XD77Qw4k5d3Lzry)Rq8HsZuz3pV(1!ofXvL;5lgVdjNXb~>SqfSoy%*Sy&q zX@`~)IZ@ywpG9RzJbV~3$PVh$wK9nAGi|t%I4m%<-Tboapq97Xg=TL`q7XPgAG_4g zpPjXQPem8;BHB52Qjm91}a^XK2ZxNV<)Oedyj+<_*lf@>6PwH`Aj1RQv!`db!Bq? zKvJPOsruJwClQmFdo)X=G+UK8JAz8b%A>ZvFq!VHqs9|%D7_`1ZjKES)i<4C)UZuNO=wkNBU_{zIh7Lwbe9!zf zk7LGL>dgyT%NE!p2GV_wmyWZH%{E~1Yjyeg;vt8&>1Q_9>g*Q@kEcto81$31Mg8?S z`OL0y;y#O_7P%YmNBpN;5ih3J?Gd?s6D-KJg z^v%LeJDz{Ulnfy=tyfZoMXV{1!mN*mE$B3q4^=R#cNvgqTm)Lmbm$KZJZD64?({hp zz8SNMAs-J9?A`s%iaHRlyn!g-f}!~`WerPGmd0uoltYrD!ZX&mBIW8b>L8ciyEnt^ zeHgTdX6`3?IA8j~Jf^FuVVjlyVxUy9`#l1^(BHmY`hv-4ECq9QKd9VgBlw?HL4tzi zU*tv`5x;(UTuQxhT*Z))Z zVOgPxbJf9?YH6U*j9$}z{<>J~y(gR@I^I%@{@vNSr$?9h0@<~^L4RzgvM~>XeHRB4 zdvf$?UVQH_dI41p1oI=w_U?5Z1Y-Yh+hF{gq2 zx(=WgGpc?QSh4Y2J%YgTbo|uxu>XbCCEb;Jq@zOEHe7k zx_NeH7}0jm{5|Zc*a-S3^6H+q1^DRv&*bh*piuB*?V^Dtqe0dJBNn)t5*37x2<-HSJvJ~1YZ>7$eK(P3sIltW%HD$Hzl8r@--IzZIFZ-&PM7;EVP^Q? zQ1GmEMH9+@A(UadeuQ#m=blLUeT+&QbEMTC^DIdMzJO(Qs={dV>&VMYjkD8B;f3p6 zvX@%3EMql;GShtZ1_!Hwlmak@E{%Uk@xd!^)(Z$2BGl#kOTm)2tX%U&BhFUkcGF5} zyo<{1|2*il{n;nni1pbD2y#MVHZ!FUabj`M5D;5r+NdSPZ=cLks#g^(1!6m_s2 zwUy|+lc?P%VOVh}Eux<P-r$*3L9-pz3NgtbxfN4HbVqU0$_MwK zXCQ1?{J`y^7RAUz4a>jlyPk}_*lPcvH{QT)j)V>EGL~=TWvrhpAGGQ-f@1eCpDdVW zjuFWA!|}g0xLMBo9DN?&({gr`Mr1pxzFPwKb+dels>4Nw@m)C53{w_$e1sCTM@$@N z)e2!2V(uq9>-v>eybN0I)wwq^cW*ehKj+d<-e zxx9t;WzH7Ghl#WA1rGQN>y+1@(IjV{VPU=Tg`v_8s*AP4MPxN)*>4&f%?Y)WRczgH z0M%U`LUqFGD(D-S4Sq0VD)apES^jCC%~nwYgwJd5Gar~am4g2RSlt`X`|{IKghYjHK_Rd_$wWWLZ> zQuc0=t}Ui{S6bRUSl4W2G#>DCaLnEQMg5`rKP0Mz+DpT>XISn2{r1>B9z>Gcfjxw1 zo`e>nZoFWW?f9Y8#}wsYuCkGpntBFu$mc)G}5i- zw0nG9J|`u$$~d1mcJxe;?~w7?ACEp@*?nHN;m3+fSv;zNVWHFMXR+-F44_({DCunB zo^Z2|l}wQ1qr^9w4p_7-8e*S7Yx9M+TMemj#{R0_9@^d;cr8r!>w)}!E*C)8DUM!! zrVW_+($@7KSMl=8+_jOe;L$_q3iMI4UccDrJ1U-7)mHdTBg@u{Y5;H82~lNXeQW>T zr*=q)$;SOPY5!KbHA@$(HliT6<=Nel`bO-b&C*FBL{}XfJ)j;12hlQYE9@|yp6gu? zVe)Y6JP0db52~{qOU$=iEHN>A+o9_#SB=O-N*l0UjJW4i#R14yIM*&~{?lWAStBa`Lww55< z+g)Zp88hoT{O?4IEiK%2(=0}ld^#?`_hOE!PY>(P!P65w#_aD#ZnC(nqNQ8c_)Gq> zr|No22K3Dt#WPn0f$BZ!emfW@=VIG`Ei@ZL1m#3Q>gI2-Uq->`!2zeATv6m3dOaXS zvc_?UZJWAQR|>9`;((hAFxnP-UPl3D6{9|)Vq0xBNa3uB^S z|D~+;(u1mLHXqb<;+lpFX?Q1!`(}J34$X}94)$eZG`Ua*h{`lKuRxYNIrukr><9nD z9HF)9Q+nRR1$4Fe4RyZ|2h0MR$$+kIBss~wX8IL0$#C&=WpH;hZZ6y$ou8Ln=rc6g zTxdn-G?f98$}5MOK7B}H^MzBN7cSZ6?I2n}3F~7X(8bcubs_4U`x-|d1(A95p)%G% zQr@VMSb>&wzXZM#;whoY@E4|2t+aE!d8ZMxI&#!FJ_o}%B0w<)5Sm3bSF!+9nmafR z@7RhBx;K`=&43bltr`fjN1Ksg9UhaxRJ9(3o{B1SfP@_Y!KqWpDs+l5mT_R)5|Vdp zny?rxb9XqTDI>uulR_D|2V4-v)!$B)eyoRfr$L`q*pH?E#bchem<<4ScHEwZqtVWg z$+$G`uP{1X<+{~XQ10FWqJ^z-CK1~oAx1l*T@El`$a}jRX3oBW!Z_+nojZ-%-CqNgP(!a%;~e!gDZ-%D0Z=P1ViQpY z=zR}%0h7)-#Nx7cEd%uqW)@Ey;TkvGfjzreHPe~mX+#tMa2kC0t+Ux85+6)gU_&O- z4qq@SHER`KfPd=&Mh_4{X;rD*(@=HunBE}!8tPkt&K(s{L+4&6ybc1&BUJzt4dYYX6v#E)^E-Raz43O!%X!^8fgwW&;UTJ6I)0ZfX z4da0sBiw^?JtJDkf$HRZTtTaU&n(-kD!EIe%mY~jK}Lkl3ldgB&@ECCwdS=X^l2d{ zU~UI3T1uy@^6_ZRC$PLA>Mft`ZlrHS&Ht$?}>*^z=V7DV1&TAGQ(+| z*~0{Q?k#F6X9x7f!nNx61@? zr=cpoeWj14MHtNj(R;CSmFB}&{_&Xa34g#IT#-?F+;5Ab%eEEb&wu`s+^2G6ZH;pB z^i!R5x2FSRDcEaSfRSCNq;#|->7TeRxiEyw93f^tgwOY`ahL_a%9Mu9hg;F?34gWK ziwxbWk(DV}G2;uK-$}in$7XO7CXNbq&3e6W;W?)d2d#{b;vlwzJ;}-AYZmeJ$)7(< z*W|+iikl9{>+VWW#TOV+zMK=acLpMrP9weq=l4SG;NP-08YON2_VL0Jq-ceBcreL@ zx-B|P3ha2QLxX>?zj#m!Vk8m=bl*_zL;VQ%tlC90?M_d<$6s~&N^X~b1^j(IceGtF z_`-}k*5&2m^&exGgwcwnJZCHC-|5XDs_j?}{f7N=CY=0}H+*$3jt`&Lwu&I44V>wD z3$4CrVto9G%>nBu%^)l#ABGAX9&YZbMIXqIVOl8L9CRw!Y*q@AasZ(W<@8J~od)ns(;I<887j0+naV~OE#`e!- zo{cH2rR{NHczvfZCT`@I9_7|x3bI~d!K0Po>sbn@d|xp8f}>V>({|`dsS}IV8|-kT z=Hs>^mGx5KruYhJYMt5#g=FfcE<6j;nVX<76ScI=<2juHw*eww^Xa+j07Chg^mKWw zY6*{z69fhA3t`gn2ri`qAsvN?T?%GH8JOCzc-ZIMK1$G~uIl44ZIu(?W*r}~`Qy#4 zAAu*97JRk-?IjX(|8!UdHictp?9g5yZ2|19tf09*&&Ln^I%?=Uh7@BYQn z9;@Vc%m$NvaoZ?aDtz3i*Y7(LhQqhpRRmR9!o(9_C36jw*%#zbIBk{;QEm9JY7fBJ zmrpHY&z?RlzTn{VKugQ#P~(-JDT%fCZ&32$2gzB(uP;uNv4Ka%l7U64Gj%C<${nC z(`lry&y@eXr+pGjIR4*;pgdd^r$x%|jH6v$T}P?n{${FSDRUF6f2DoE_Rw{SB!$S) z(w}OS^(wSl)zX(9g)mZj90j9{T=7HD4&@eYels;u0u7V_U?1sBUKPY=qngcia5a`&6bOkvG_)bP-kgWkhZ| zQWgoaMiGIJiX9eK^ttK!eggcspoCo-Q9^8Y$gw-`Oe2-oZgP{yx}T{ z6jOvZAQ^8Iq^PyAKEiJSLD+L$QR;Wx9DuG}4M&&t*GfYEiWvd?+SaysAJEp-(oEn;!D=4mRJpFIQ_ z7GljVa}>PlKu^51hcxL<5t_N|;}2r%(6N_E*>GQfj}SD*=#>nhqh}3%=#m#UB>u26 z_UI58YBTivY!t*o!IN!*kvYx6HTuHGp3v=%%A+jN4ZF__15! z5zV_?v>uSDnF_NF;VBvA#dVGfLhEOZi>DcZj$nQ*Mu+U?H9Jeo^_QDbhiEP4&m=<0 z%htDRINuAHTmhvwMPc5DYkY!Ec;j{{vkKki_6&wwa(VOO*}7zcB(uIxjoKN9pkH9e zkW{#h-z%k=iYI~bcC)9Fho4BC=HC_%^&qj&@5#9LnFQb3Z;wJQvNHqqdPQ&;4cF;; zkQon4Iv602{?)~!Qn*`zTk1>p;jb@ofyy<8=PaN0H^5;z~n&_w?;+=pNwW7ZR55&iniDQV!4*PoaS@|BWt|yjO zR`^>w8X!8cfzvLxb2F=sx+8O`00am~n}VhJCzu0p4`0cfc?L86{#tdj5?=#ST33co zfi&nLPEHQhwB&{FHYFZ*Y5mK0E}4=BO)J@4{Z-tR{~?#|sd@XvvDW2~b+guysBmxv zi;rhaL(o(iw!?%)EKF!c=VpDIFvm-BQQjXeaz1bpM9<~84xR$Prr5`fxV;C*J`g9R z;%;Z$N~SSDb@ZxRsv@{4xG#$B5qUErgc}7V z+5B>@Q)C{~{i)@!WXvVEs`zSRrKkjblS#?Zfbq75T)UXgo4$GRs{#BY!Toij(XCR> zrJmGwCnqDUsiD|DQMT_NwL2cy;xmnZha6LV!6Zkomt^H8coiz4R$Q8j^?3~Uk85^9>Lnw1EI^jI=SE52y#FcyB)#13 zI>1Nt`nA5}PLO`_nLA0^|7jriCdl%1&j%}=Yqflh4ZjR;GeIr~{enYA7-wQtmfF9i zYQsjFy{F|CFiI$ORgg|OkK3Ndf!*B{%m$I>T)Qoj_grr&w8YG?7h=hLn3{+lM&==pGWEA;%< z)$w;05``u1D&zTtH1%+4ljf?uzH}!1X5r2HARAqUWok?J4E zAsq$(0&Zt;Yv!4;X0^9sFX$2ZM*Vq8Y7y{**rd#A7na$spObuH!qX2){*rk-RkGA< zX=a6`rsvsI^eB}0qobi1q4KCBu(tJrTciE)cg7+3jLuCZ&;u*%Jor=;XE_C}6nXAC zvVz22?^ednCldSiBNjaCi4Whqy^<4jt4#TFr8>vBizlzkvI7Hvi%Wth1^~fcI0=Xf zMl^jITZaoB%BiHP%RA%c@eZUBqmUqOLL)z_N#Mj^@xtZg+NSKWi|`g z*-zI|=Gd<44X~-^8r*gE6gC|`BD}xsLvXlKelN-g=kMc$BKN&xS)No)8GaB>WCOXW zPsRe#0_i`25Gg7Ld$CA~=<``GO|&HG7xjf#$-|v?rtNlGQxg&xcV{d1nHNe|RqYSvlg*p$;0djDqw*yrV>dLu;m*~787KHO*bx8B zj*Pkk^Ojs4g8%z9&6+=67&j}NifS;cPnE`4-VHeZk^Z245Keun5S=G(Rr)>1@<~~( zBT@M+?gW_VO96=(P+4cR4jLcOOLS>i54bls%OjcjAlp>(se=)F?hs=7Xl1;93;aS| zW7lq6+^E8#5&T(|365vpep4)J$i>OWipEWPvIsuKXj&qy+mR(=_v^a6Ai43mZ1eG7~6S5wwYJhzEn z9y-_?+5#QUD-&mQA0Loo9_zM;{0q_@;Y}t_#IxQ%_Ec|o>M>Cbnb`8&iIb7#=ivl$ z(0TpZ98@kH84*g1xLn3T9enT5$`tfth%@gGMX-{`_7Qssj5VTR?pLo~H3dyZ&AhPF zh2Y()`?o7$yyO>{T_BK(#w;c7bHB44*mNFMC_%WxP2t0E2iJTbvDmLC$kbl~+;q#e zEHT20;&V#M@;^*3c!{f1OS|zwns1AX`SDIR9?d91wg-Y-wY+-qUky|6i00p?>Qym4 zI*%?16VX*6nb!T?-td>I$3waW{YCdlYk<_J8eS4xK8&){-@tkDQ+9(UPz5lhfgn z>4`=Vq+f(0QS>lb-u_wdS6O_WN6Ys;M?R8NRnP1QWCx5_ojuVx zT%zAX?J%o0)NTsrOif1aR>Ktu4EJGR;J!;eV5fmSe1zDLWZB}N*BX;WQS6<1fp0%V z0C_jRU)~IOrNA8oNP!E0=|h^_z=)<%)Y|dlJ_bz0&h%EG27i=XxtQ3?8jUB;^W1Zf z85?B@rgU#m66PP^&n<0jubjK@n$a>@1LfDCu$PgsaqVE4{kk1D1=Xk!c&%dgCF8id z^LbyHvb<^jn4A_xd?x(*m6I9I)~;Kg>s_U#xV#-sV5b2#2>=e-s1;}_<)Wc|IiUGw zL%S*@FN#XZII|-659%VO{Ge>)O{Zr~8Kzx0>iMf%5Rzv#Nf@;Y-TE&Rw!_3516lu! zu_im(#=G8j7{2(4Er&BD|n=L0&)z*ER!9Ns|YjaPKsJ&Gqkcrtv=(e@XCHE zfmLqQ7N^;gza06R8(bB%FTPZVke+FPe(m0%45($TOlhj$T;}h%0_wz*wpd6~lBT}q zz9MF+5w(5dz(~{ji{=TWlu_pd-mlZTJr{=c_@fdM)8z&w9JMLlPfQFn2XS!Yxm`UY&USvhC zD7{!C1iLN~#)hj~pfG-_xJ(74<>w#_&GM6l*amW6f~YO&*hjx0R5Tcj@z9h~w*|iD zkX^Ldd0fb}CbTQceSZ9fB3M5D>BUwDNDXu^UNOWPCeV|W-++fwkCNCfAKc$nEqtXb z`Lwb?j^O=N<53~=o4)X9w9d9X{O0N+e_NALp&Vi?9zz@oMwzkEqffKG1*4=8Bn3}o zZ(3nJ-wo@S%Ms&ppijEh;B+D$F(789?n|!{f(89dRNtQNgvyN!Kcs8O%Ts*iNE|uf z_=zM%n42Uzow3E?u0e~ZL8g>i-tpdv7v+rObUlw4Lygx4&fmG;Lcgiax1QSvT_2&Z`k_q2{JbW5 z$mxy8+6(T0*5M*ai8+pkT380R!RhsHV(a5AZaRvN@lRCS*Youf-^)!LmGELULxW;+N~yZCL;(MBXUIFkl@sERS`PVTdHH{&hscy9AHO)k zJs|O+!$d|j%FTuW=|jBUGAmd8MLF7cQ}k+agWp;W0Dc-<}++*q^P)gn?LJ z#>@~r#*~keVyfvnxbk;lZbuy&e78h>%5WTK8LxB64QO{if0yVmw2<~y@zqOC%~vi! z4+9xWC9WDRL=zKDcht%-r5Ss4w&9(9uEwN?ozL@x%&0;V(r0+M=uxjbUi5iw#Or(v9GSZ)z}%h2j2@{)_fU@{1K~?j z^c9r3^g}2ilG$QsYF}5n@y7>(!#|Xqw<$sc_G~LhEULK7LeoW0P%M#x{;HT~Ll~-8 z8@TT?b?Wd-fmw!}IEpzV1B1$#JMRu1hvMRgJgM-!SFW}6`K~ce?n0*d2w-@gTP7=t zIuW1z2+=IBT(X-jSLJX0Wq9DUO)cxb;qcl+_407r;d(1|!!%lWsD$uWUq@OGoCTX} z4hRlAt$cOl@E2D7JA(o=la!_gGA7?Hylk=Eiu!9Tgd45|aPH$BZQKHn7-Fy$oR1-L zWJAhyF~B069$P}rRbMxbXDq5#7br}*vYkg}E| zDP#_u=QXDM*%Fn35aSIZ2v@44DiB|#6l&~4=FxNsV)G!k2EJdJ%cdG*!Yl&%SH-1~ zbu)62R>Lr*+-mS_s!6{O9wPpZvqwZzv(<3>sip+X#yJexda)lBH)EKT+IlX}NlLf}P4mA8|SB+~T9Gh3k0<#*fUd zgC%bS8WK9tS1aJn)Y-x|FoWp_qv0=_5u{rv=^4qreSnX;I?QI*yBP5{dlP%o-A6X4 zuWMG9*KR$(8tBhQAixrPA3e29)=z{Hl&;Vml6Cr+^ygcRG zP(q1)bS9oYgOm`nM)%MbdF@a7)XwuD##uO^nuBh_^%>M0b}ZxB)`gwZ$jwQWMF z|A@GtVs>+lOvKdq{mDt@anUr^m%gBAI5m%D!FlDk&TyX3dS!`bSP{8E<0L;tM6Dv9 zlj0Jm;q(3+(TswxvBj*bC+zTmp5`MT0-^1{!gG}$4G%_zU3;8$zAHn^2WA?T zX&tL*pRz}y8a^t@SHWnu2!E$r5W8lFs12ZhIu-s~i<>xf?oTg{+=((ZQEo2}r5=Rq zo(QA#QL6R(Qoz)eF)k`?qksiw@{Fj8a$>xcdZ@eX%8A6pBuo{Ox?HWs(RM&%RXC~E z2mdFF=JhB2VmS>|3o*BThv-4rk=(Bk zJy9vCH`tB^&wI@8(@cVD=>!5^s@qM+GZoc|eO!b{6T`druma`y)urDwgm07taP2xB5H66y+owwA(#28XN{ClO9Z}f)$xT^&oz*@< zkvSc2n0uLSj7ryd_ays3kO_)Tsf5`+&B(Xqic_hw8D-J~a9v$sTU0W7Jw-c_A)s zrJ>S^?!sdPoq2Q~8_AG^xiL6M?g@Yc-Zyvxq_tuC1ES{ha1?<8skRuLdukbtM<{R7 z8PP>HS5D5@fBFlM#E^{HZ(!9Ezy0SMqzl^1De2G-AHU_iAsG9Ns-kgU12J+OLs2^deR3Tgok%;dy zf3mNF;6~hE0R|`C*)+W$^cgd#Sygdm;bTle=Q;h9$|O^A9W)y!69R^d%&Fc?=^<&J_L090{P_B(|V+_9l7@GJ|SpeL9ua3lec&5id*cJ z2SFP`gv@{93WI}M>T+4c{K?}u8RO!V-#QJ*V;%L$DM{mviX=exDABqCBzUKx3=eV) zt7YjUrD{-?B}lyk2LAC0np}9621|$$yEsD7cE#*KSXD`>%dspgD@*I>(E2P2aluxB zo5*u*F$2bO@EVt`chRavz22#NNZFoNGvAqZoHl;`hbele)Z={%_T?Oi1Gz+T)dS@N z#c4DcEFc&>8(&Xfpxuurc-d+%JlDLA?9dz!8m2p6NegEAxr;-RkHfB~?I7w>GQVMZ zs~p>wspVDM`t>)ET7e{OcPeXnAyX@bs!L#*e{}wL!r{&5n1sXmJSIB10#40ulv$>F z?&)C)Eld}7ga~Em=<5gR`S5TUw}klF{(dYismlQ;i_0Li^s*VcHS#U^Nn$V&;Rvk> ziNdp;J|b2*i15AbW|+zPq!+P3umuaS?3PFfV8#F>%qW2V$Y!Yu$KK8DP12I#k!CVC z&|fSC7;xObZC<-IBb-4C-;_0@{VvYJY5vJJ;tVSMri}oRod7M0OT);-!Qoh% zy~}Uky&Ey7vRA&e+t=3S0%NL9!>}UC4M!xVY8Ht_y!rgU`(#WkqJ0s#jW_H9Y*!r| zjIkCi5|$gvt+H}3fM}_~M*?gjD6$6^Ylpkgq|DXI{ zj->c~NBJubw&YwxWE0SK`uh4&UDxGEWCB^LARX1`G+W_Ilap=d>E{E9Up{koVpXr= zWVk-uhn>hBu@Sv}Ka>l&)$JIY=G*yt?U{bQ#@m;euPu~5BkC!o29JtCHy3YfAJs;9 zPAk5>cgCmy_uG&+D%ME?v!+P`Se_$4?iM&ue?##Uar}@2ADZTVqq&9#RkP5hdcW;t z1Rn&;?r`gaHVEm%Jsl7uZc-wYNC-!nfa<$TvZAB^?CfExV(;S%rwT_J4KuwGxlT&V z>#0MXsqWECk}dz2;gG^Q_s5pWdMZ|5N|V~`N1^9p>T@H#-uFJ5`bFcPMri!v!7I;G;8Kc#5%nd0 z((&?qjGN1MFaJoi1h4(#Q;sbpwaKFfQT4Lg&tyDHFT#dA&Qaevk~S447YW=-DReRz z`(gNPNie>9|rahAD` zyOQl!*>K>QGU8$-9)gR#yRvYJgXk^HXjzVd*pXTUjED|^c2c%GB5z+uO}GNPguvn{ zy@`hH5xJ3Io^42TUZayMm#=}yVZ#?D|Dps}s`Oi&$QGOpeHKz$bT5W}H!wi$`^a&Y z+sQ007PlNdTXZG@MIna~0YPn6{NR6$0=ck)J=}=9Q_E%OMsg3PH-J>tbQ;meZOce3 z^*}{)kM=4va}CHO+*Met`maF**-W{nrsm*mC<5Uw)zIt{vX`w9hd0-_wpDzZ6zRD*>i)ZI&Fd9ExUm3Sd?{lvnLJum8Z#k8OYbfzSl} zLJnl7a{qL$YcJhcJR47Yj=a)MfGiP;od7rxkKC%r&zo!C21%X4Di`#4;A~k$d=;Px zB${0F z)cPD{95#ID4!dqeR6UN!{^G!80vppLE_bYmE9cw$Pp70*p$7G+Y@PLczqrvAfFDyy z^8xQ+rX!TLCfljo-2-NKFWAmXH$bEQNv{0g;n4{thXRA&i6fZRs|2YsM~7hc6qU8C znwr|?dT8k2J5sn;ln{iJOYb}1&#|7z2?+3YnT@S$7SfXlgqPnaoEau3yeE8Gqg1_* z_0o~a5ET?vc%zu=`eU5Q@XYV;u_v>$t8RF9oM`!CSd359b{9fs5gV2e;jPeMI|0I5 z<$?7!+r5myu!3l0MGj^w=v^eJH`E$mV~0cXhn75Cg_jT9k5Q)<7j(2f%IFwr%^!SO_vWz=$!he(uCu%Bf5`XQJa~3B-tJyyE=;dJZzmWd5;`P+x>%1hM2tV8Yu($@ug=XdbYL_7e)26xO|g$OaZUH-H5QYT@@k4P z0@tZ43-0;aj5_cuZcLOxMwEra9oDPqg%N4NV%!WsKIZAFXB6-l7Ap7F2nBF~!E}JW zKSe9HU-(ZJ5tHSTQMsbnM-=RDW(h}WtU)AUlydX(J@{@LMA|Evz4A7lM=jKCRY_lI zk_pO-7Q_o%`}D1BVMPU}jIG8ODT8l2L(TBwf~@Y{ajVB0al{V-w*cSWsqt?ddD&<> zrSvDK7HoA?6?YDUcUF|YkyVCnI-Z9)3+pGBBl**b^Qt&YOKe^lPgogmAuMtT;_Bl* z%T}>#e%>QmpVS_*SG{lOt^RB(*2p!u=fm}Zss;M?v{|afm1G6S&jRYWb|aAvdG!Sus;a68AUO<$3{|@$Qr!*y zb;!wPSqz@#UU+wrQjRvTp>olR?yPBSIp@iY#t>_ET@Y2(&a>K;v4;LIg5Zu%E%8AO zpUB#tU{Akyf3Ir@1@Lt1hNj_slQ+hLW_V>Vv+RzRr-K861|YNoq|mM8zB8R)vsF3p z5r5vDg9Ysxb?juzCd^IvN5)E{H2k>eXK2`AEZzwx5Mn+Cn0|-1UHw-OY~9B%lxoA*ZM(J=L2?8f5;_)YUtr_#o;X7_( zDdcJ<#?1mH?z9Uwh85*qYCuKr`z{kN1#EBd6YcdXK{^fL{B@$XddT>Ifi`x)NE`PUU=>vpd-tT3y~)K@A->BqJgdK&4!BmfhdOM$ z3-94WAyB+O;bMPwJ$=~)WJx4_{#*^C0o`EG?s3H7=L9#~V+b|e0&lX1nsLzyq!a@L z%-b#=p^B}87zdmW_Ree(-;0texrAjZ#{FUZ2o~f#6c9v1vwaMB^PkxHTI$hAoXDcG7;aQ=)}4ss`^ZEv`` z+mgUyJfCKGFyE%IFZ#O>5(x#Wj%t;20sF@uv{^U%tusA{(O4!J(`f3>ucgNwv{9=`09mH!`O=N*W3 z`~LmAbSGtm3YV3Uky-Z62qh$i$lhB*Hc3JuSs^nK*?TJzku8^8wq)dwjpo z@Ao{{AJrcvKI1%(^Elq`*IWH5R#eJ$M^RDn;bU7b#F^%bl*1@i5YAQc&DMx$nz&w> zp@P$)7p0T)E;6T*RN&GX8Z89sb8L)L-h%e@yMX3kt~0_V*^~!7l}R zn?BrQ#N^c^a7KhF1Xddjtr4T@x~Yyeu&E$fO)|_4*%8gs2QyxKTq(DluB39cimu!c z`x9%BzXFyV>zK2~M=DxMz{5xBvU3Fs3_NA3Hd+3JiAr(QZ-~$7sT*d@98_q|j$X$q z`jR(y9=$>!tXv_dkn1asoR|OlsOXa0a2@uW^rCHesI9qGofvHYa|8RxX z_sg%r0|A9DBs^LTReQ*9AaCBuq0#Mta*n04;SE9kyXTyqyg9TuU>iE%bCIFr-^g~h zst_M4G&eA{#Eq#{u@?2aAZZQ<_`ef<{x8P5>1V@J>)!`p)JRSvp?6olXny*yj21*t z1JAp~?bnn-sGw2E5vc{_FDNIq7hK6e@3El|A*u{jmdI14m!a^ioxAErtcj(R=d2Y1 z<;(-yH{_rIMIFgO!NLfzIVkrj5M?Z=v(CgEI^X8d4I_4|+uNUBQc&xv)3k5pw>CX< zK7RaPcXm1s!V8d5AB>Yrn=M~p9q|D_s;U15n{V93g3YZ2HZ;#safZP8DcH^ZtgaJ% zlO-7671O#(=ZZ0lUIz;YR~bo!rk4)1fzZ;=y zre{&(Rmt;Yb=jRa)D(;HfRdxOinH!RVZL{^s#y$?qs8Xk#u@q%9Xvijn>!gU5Hrqd zX-{`A=2XVR$o^Xd*$kpZdwX8G9j?;fAKpy}C6EJPKjFeOt(v-1A- zn4z!4Ags}@e3*vZKOfosS?4>J!W)HT=OK184~AVx>G;RTtdP6%KScKg___h&oJl%( zyTEslRe?YME)TWQbWO(p9ljyaA^!!_{RKhJLsw4eaV3}$2p>$e)_)36y1p^?2ZRk? zlaahl3Vlxqe^~@6H#I_AS^|mcG00QE`gl7l!1FEhC;gd4y_UCY8hbaw_*+0!?0U`Q z2EqDuvu}2Syrt9kX~a!3^j)L*H_jQ93c%_-wtlXP^N0>mD!iZkl)g`}dj0)UXv&eW_wIBoHBWBm`lln&Lu1y4(68so;xMzB9Qj|MQWZbSC#64LeMF>Mw7sR1x=H?BLCU?r0pHBoi+EGnmG21At+769K|6fUF9sEsJ<=gwEzh+>#2@O(8Qo8% zieNmEP~-a=L&_?4`aMs?$MwCZAsXTCIlc)6jK?@0f`F2|-{DG3Lh7(3;S z*qzIJLURi%ydAIbH}~gkz3SAfmm{DuEkm+;?m2xoK8%OsExzXekX@j~2`ZM< zPNq@wvU%@af%qmf=ub#<5?%>(FBs7+BPaYY;bc)~D{4&_mxm6^<^BDTVSn$qa?QWQ zZ2DfccX!(FJPZqKpXld~67&BXI;DfjJoysYqP4YkJqT{U=Lm@>5P_As=aA~(p`reR z-vM(@!6FfTCMc1*TRpEOyu!V$d z@yY&cv^tTV+2!~-&WpN#?EPkHd+*839yEFk+4jI%f=OEfwA*J8Qr-dmC;*6 z7!eBGTKQ}P)-OM;ntr~P8yuGzMIAnD(hiv_qB49it)J2g|kRvAxUC(6r`-gMgI4+G)s|1)u{A3FNn zDarGUMI|L;hO|56x6->4X9eKd?eM1JX>c30Tfl2rbDU-Y&<-{m0G3{eg?K{)f;tUu zBo%@=xxCQqw`vOed`&v{W?Yx9zwv36cjLRPqW=G$@Us#`ckzn!nwVTq#N!h(h+5YC z=iE%pfAcu3$kX!9E`p^&A`p>90V?P?(i9p7yU=HZvH_7%iLl8+Z-fZ}kg$_^|xHVm;*? z|9&V?(#W-@g9-&d`M@leRBLmP>zd~s@ZZAqQ z4@V5_@;y2_sz1y&xXt_vj(*-tG~REvn|<)IG5|k4PA#*4cf$+y%l*g02f=bKIhyuu?e0f6cj< z?+41#H~n@VZK01z9OiB(@60?$hOWAZTs21_Ke%pcN+-&Ug}hM}`i>tIxT;dDOG!q> z2FD?MumO5Ere9+PY&AA=zz;0q4DRCpOj8pY4q555%o$P8-6lbrCiLX^@!jIc0W9u0 zh*7ohk}ZnSM>YqZLKXdqO>)TWVwWL?dVUVYwerK&Mcw(%=Q9R~BLmd!vsQCgR0RXq zOR480^d5W|>qJP~zishRe{s6t+WUnSX3SR{_{}Fq6lO4K#k?@{ydxcvUR*QNQ$3LK z>nL+pXES@P1Jmx_Mncd-ZS&#zc~ZADh-k#NsUC`w{Df;5w)3zLB6VSokA)Z?$acK#pt{PPn&V7*H?H=j#ekb zJBFCW!Di%-Kx>f9)l|jU)TBYMv!O!7x8I3F(^q14XMJ-l#L`*)w|%teeF=8LeEIuA zNGOC?e7mD=PP+Jez6|Xv`@sJ7kYJm%BMBJ1v^u)+0#x5x8NOh}%j(WasI&9WLYiqd zG)(90Cf%dDbd=}0cma0Ugts9}tY89hOE-09>z@bIzY@CSKQ(^jFq;CZVsXmlh<{zs z=FqGR;7){wn|#Ywjkd%jF(+zKb7f^@DGGB^mWFRJpLFV+ynJRv#QbP$HsI6Lgz+GV zNO>F|pe(fC-m(5gxro{mOn+=kRL3SM^JdR2_!q^)SOF{asi2OpE;&KEhW=nMS$D%H z|9h@g^$YKuMc1l#nVF(LU!|+2O&3Gj2SVEi7xcHBkoypU^9C_lw@81J>IcpEf=kCc zj~H`gJJFKzthlePX?me~<~{|>dRaTMa-Ff@Dt!Y>%*$DrZSb!NyHcqzjb%A&YPlCx zsr3+)s>s9X#{isou2rm5(wD8LE$>jCbdZ?1Cmux#W*lqT$U|Awcs1c&1( zWT%(mJuO$9as9IkZnK!aUt-N7iV*Y+zq&|fM)`+kiLW^8Ky zFKCU8oWfHm%>gG1>9BSA4`y*1u)E~pFMdr+ns-9TD#NdYU#ix8tO25rfvk-9zmu#2 zZF^7Gn3CAc9g;6s-F`re_4g2Xy7I)(HS)Xb>M0CP`hl5f^!a=Utbzk+>&BUgM8oFe zU<{qQ_9Pl+(=`*5l0?;so>jc=7hG@pxDUK^+`0aFW*?I1>|7nhY#lvn5+qb~;{=Vl zYZ=e%ATFGd#SX_kiOr8hx%T7Nc?ASQ8mq7EWC843XrA1Bqea+xQ7-`7~_-b%D-OcaJS(*iIa}E%HuHLboBpkY4%JIF^ zS7zmXUu3MsPKC`J23#BhNW*Mj-ftm)E=mnO;a4{fd zph$tY)UB8!>RiO;}PR)HMR9B#8;_5{#dtk53-5cMnL>vRx_dfpoMQ6E7|B(#iCJ+ zdskg4E&kcvlCC0AS{vtG{@g_YavJM55eYM*oYDwEG^5b#Krd{e_ELqT`q36JS`GH2 z-(Z!&d_P9-qqb3mZx6l9Q#&yiMhvz#DY|^R>?Xyp^*SR=HTs32U%~C_eqqN2dSlU1wg=TDQr+=I4wa)+c;+&@PC4 zLlVu2HHSv&>uKJ-0jh!yvVzjcMd@6Fi*eiI2Yu$9!zUUvg4tV@e*-+F{`DkgCdJUq-xqoZHggc1rNB^7X9`{nxrL7MS6S ztI$~l)6{}I*kBBzpQ*;WA0rb*CP-~yU3*6u9{dZ}*s*B%-eMm?oPNGmg^h5mxR$^E zs->L7lLw(1t1Gc_!C*BlUkOd|aNn`PI-aU&QJbG-cCydZ8l_afQ&bJ9_Vf8Os{-CP zWDGalf_Y!5-z&?gAl9ztMDh>?vvDspq7RMz*Pgkk1PrdC;j(>y-HF5{StSZf_eF{lO#%Svw6CDPRl7_qf!)wV2a ze(IvwyyrnQ+2l-cO{Bc11C0@5++kbLB40MZV~09neG z@kHFM@=4Z<9iQ(Du}D_id?~j-{m4D;%gNV$i7i$58=ZDvnvD>`+G?jd5G(_2hFm77 z@uLt=wC>)tI-k|ff9D$#Twnb;m6jkrGKR#WB4};`vJHNx%)i`y>1m%LdqnYizQ&yK zEuob}L9sS1fj4#i-AbQ}YHl@n=d5fY0e+r%@+>kCGgZ^O?{OjH`p!d#4YQps$(|Pz zY&nm4$rLbIz6S3VcB-=x6PAv`-JI%tTioh31SwBodJ2o|X)rdcv**`%tx#LNEXugc zhK&zP`FOXd%w~|)WoaKV!gh509TO|zUCcaYrXbT1A4tnr{Ao@)nk!KY4`<qM*Ft#>av5^Re7H zv$nXIiGpV{q2%kHZ2=35K16CRqE#nJUOEJ8RncPzY|gs&0%69lg?^snqYqtglD{=ThuMlG?eE$3@;&M*w&WeUX8$UtZwSpAhK|;nxrm+jd@6!^{j`WaxlMLh#!(i&B z#W>#|jKgd}5F?kPLrmDY^DAa#3aR%ov`z+J zaJVe(WNU@&FWP;t?utfY*0Iwb!Un})``lkE05^&WV1rzoNb&YMmsJTAz@qKUSQ0ry;9 zS0#eM@WLbtXS~|rD@&Yz^ca(Y>$S4O87g)*br{wN*Zc_^CL;zDc#$KW2tz(2oQCAA1IecR!g$q#}q`7jx9Gdd&tw1xw-GNjwCJN7|Ghw^b9 zc`sfCwV!sAL9`QV0PpSK+nbyYOZEWB!PYAp=sh83j=C>ZA}^fXL_o*ihp7@--M4y> z^Soq25diXLt0Nm!$tqNfeE8DRxlpIWg7N0KISdPs{DAZ1_y`b2qs;z-rj}OG$k!LHoq*jKjwdF*j zi&qjF(B0i;AVon;)vgrJutA%x0TvZ;P+zD@E4baWIe%4ik?|gV+OyybJi_7d1cFSg9yY{>{xRh#G(@TF2D zC60mXiO%PNEM1anoI|RxX2pz5O_D>ypz6NgMp!j?E@Zm+E7>Gpf9!=ZBX`S6>4~UP zkKSBUTwr&jC-|_3PqWof{_aEDgt>x6M$t9t$jzLYd8_X3PNmp zU%n(b`}jSAn$%J5eh-OLiO<`rO~1oB63^mJ2I!RPk}rEA`ftMkgL=gDespWg-e$gM zD#O3!1>aO?>+VoVL9+=YqM8!He$LN+p^vOlk=*&SInWi3XP)^oaj~vS<_%@d#OXE8 zoP!I+`S~P>n+>|ezKAgbq z(=FtiKS9!y&gp0&FME^^X7bl^WwDinw0(vp@?_C&Ev`tj41WZJG2eN1OL=E?P6!`9 zqKj9LB78a@(%|BpfJ%)rf3R@#iQ84IZYkpQ>J=lL+GSB+EFc2D2;hJInLFuM`N%Vi z4mLQp6(sm^X;}O#2jxCbI<^YwSZplLC>AZPCEQZ$`8aDOC)|0QXE6JS3fn_>6})@( z#seH#R(GgTf9Z0pOCvU&4N&% z(bmmf{deJ&s#w0PVf*!VtxZqFhJZ$@7GCo@|3ksLhn?i2N%|BZV>}b^QAMFT9SU(A%OHCRKyALI`ud#EH?N`j`WwMgfRGop*@! zuxDikS}#w?XzKLN&Fp}Az8&uq2=xpqAqmXN!6%$)V}b@H-)(mNF_IigIGD|c6_Rft ztOebp&H3@7M98zyL=# zSRnZ$sZfNY8$Dm53CL28P-AniNiw5FT>23yBj8U{-1oO6r7E`;dHiP^d=8_*2zVec zqxP!@ft11nTN`Ihd7Mi`iP-O&_A2L&sU8>+w>Yi)jtuNKIkfPU_bgSo#?wb&mx_~= zP{hqty=c$$wHo**%oNt(NG%{du|ERB6Gv&^-!#AZr8^$`z4${Ap)w5H)SFAg3N9Q} z1&RZ2!LuVn9*=1v@rI1vKpVnGVTr@mL<(FM~PH>A$}7I`YN0l|9kS3l_Ppl-PGRHNyf&w>{d&o%l+H}Lp2TtTB z!Rk)0SbkPLTdMgn+w2QlW9qN1PALr5++%a7>7xJkb}<*xf{HG+RqTr?GD)a{thi-O z>>5VBnSN}JRv+7TKqxoxwNYZo&+$vpg+$nhdV``1yKTFMGU;v!-SCX;|MTf+{1QmBX+Lk6If}` zU>E_C>fEt7QuFzi&Z(_ATK+ZO4#J)A_D-583=^7?BInT=z=P)7d;qNk(m-H%22WPp zZ(qhiLY3R2kc{fChJ)8UC5&N|Kcvndx%818bD32k|R2Vi56luh7q+uM>j`UO%zc)OKr2JfwK% zr>Rhl?CrB#_jimZ4m~yDE|E%E9o{*-i$6;%C;jDa(&8sx%$Y1aB#crP!>dp}SQw-4 zzKT3bGQ2lC3<*wDSDv-bv3h#;WPIV!*Cy%t+4{!ViZk&6xA7+$kT6g>S zpHsN*hz(393QT(8;{+pbpz25t{ggnvoz}Qe|C7x!cPe_XcS*JYuyiB=TByY$E3G!4 z^SIZ)wB5ohnmA+m0PJnEptMaP2ME)(G z>Lh3UM|Ktb2&2%l+!3OKQ-7R!KJ0cl74yierT(IZ_MKNl3*vXZ&B`V@X6@nmOs98R zxcu4`H-kCNGp)K$?4;wmdZ?znM_TUp#WY*?_S_gduGJi1#%}N->T*omTA_D|H{j$&3u=E_CHhC#Sy?A?fC! zbC4NpTq?c!V`K8}Y3IZ<9mB5U5$d@{Ur27m37@UmYO%cuCq5*l9igNlwBntG8rszF z8y|x_%t37>v0Eo`9_83-2QY{+xnRt*AhLUYj$GpNzV4^4x1$Km6>_Zjx-A_;+BS^L zD{`!^-q9hpIf%XR`)b%cu%+*}Y%uiapL=?CN`79TUz|LZviR&{>Qk1J0wfksrdl4Q zrQ8BuO@2hI{ zTF5b)=-V2`7B64#Wn_CBDsbkRCHd7Dw+sCg43)hhl5Y&3pGUHx!1|Q63TiwLrwcn|rBZZgar=~Z8)AH65AaiP{VT#15o}G7pPt&oqxb$hPo#IaBu5W z-uCNfxpQ&CqW8_Xd^+qxuH-bXZ04pIFhwf8{}}$-huEzWSx;ob_tU2^x(}8~u-hzz zV5g;IpihVUdbHq;qxOUNzs)#DPjI~NaXdLxay%YSb#sI{`FVZMa^9X8$L6wHVO2i0 z8jEwMCl4D@SpgY??fflgrpS;+Lq-(Yk)dzz)rtBvJ9{zR-JiS{$l(n!92=i77|7Xh zc;fz`0~KhlU~4JZ$IyKWr*Xrja6mw!*(Ff@A4@r}_~HaEeUnj8P!Ja7zdc(2Ot~*1 zEbMV#pQh+~uVLv}u*f2kv3bRI0_?aAh?i7!ty^_-{$Y*V=MVtM%GTI>9qDPUJodh| z?1UqS-02e!6B*8R{9zZ$h090URQLs(1nV!0izkKmzTgfvf$#Rn;O%_f&sT$IzX2Ec zYb$zx?cYkCpk@mpQl#BP%_zpOA(8v z1J8|w2Wk(K^DJcc->!#1bR+a6gCw=Pimf5P@tx%@6V_$7ysajbm8*$_Q)Ndc#AeHk zMjm(P!1$Sy_x+r4jQ-++Ec}mYu?znd!E+7sb&|(~=_j9SHm<*7X<9OXeP**?EVknF zQFvy?wzia`kw`T(j#~Zf_X0O+9@{}tf=wHs10a4xNRO=0Y`LxaNHZ4@WMRDAA!_w)DX> z+2K&qpb_r{iGvl1u}Cc&iU0w{H?RM5cOd>~mnoO14%?@Oy$x$*Pq_Yd$sT_(;2S32 z=&-9K)tU)5a6@mjl787}t>3PCK+<$7|57A8BdE4Eucld$rfj*hu(8cJeubn3M+{^q zAQ4UQlFXtpn?QXEVO32X=1JJX_sb8^XwB%-g#>8nW#```<1Rbz(qXdg1L#lob%9Nsm8%|sIEfjVws5lRl>GSLx3S9s{NiA-RP1dte!gQ+RqBav{}AbI`L5kE?xjFVV} zN#Am-m(RO@P&ttk`%!Yg;^yWfEa^jCnP&1e67`rEz?Y9zg=IKaXR78~?fF-8 z$w(W^+@f5TYeLYSpr>a91W=oERa4V-n3WHG=*iN;9bf90q)WRMudX84Nd!GW7KT6j z7&JC!#NH7Jas*^0k;h;d%n0O;h!`gx`LQF)vhEg|Fy6zx_{cD>*LkaqWqD)4Ve!oo zFHdsX&E2#c%q=BSgwA4T%{LUy%+0U4%|R%m*n?Jv5YbKsMx?UEehi;c&p8yU-7D#| z7d-7Z)hR*Q8#$gC)fq1@6VBSJDPAlS!k4&LMBTcUx`&$Q>(_Cyc^g86#JD?f3@ph%Su4#_;%Sb>Q8q>NXjJPZr;+0qKHo z@$ALx@>Np+ohD`>hd187SOwCN!B@umUWqu=#1piezJ=@MimDseVr?y1GNPz*PDNZ5 z0=ATGb-u}0zOByQh6#zFMJ6dhgW(XiU(B>V$Xv31-Y9f?%!FL3x%~{k`d#ke0E;(!jAF1 zAB{Tj__oZtYuiFqXk_u~E{!gR4Ws|Whj~t*VEKiJ+ok27oKH+gqodw-_FgtH4=Q^w zLD(b=#9A=%(<8R5QLqs#CT1c)RNg*oR}-(x{S`Us)S<85;;LU$u!X0Yy<{cCgZ|7j zhIX27PP%wN`I;uF0n>I5S0+uz#*=q7a4S1Lj4ho<1;snvnBGrLPA=@(gNab~$KeA| z6Vv+D1qlrLBMkbXm2BVmGBKSMB6U>F;^D@wK9B;XgeP9hPIU$SCSB)_a1{Zy2{qjl}mJS^luPwdQ(M ztC{D`7q!}K`g2x2S-dN$7z4KdS{j?)G2LV9fAk?N_N8KdZLpl4T-~;4_@uY#)iwcpb^I3U)0E;B-cLWV0d1C|-t09?=Sh}23&Zv&Q`=EpO2CMu5Elz+eNx}iI<{1cNhHRn9 zNx`)#!Vp@C_(~lJ9-D|c*r_>q2F*WGga>dhdmcx~@0PiFy3Tgvn zeSAmyT0UZ8N&kNR4fZ(A$M#+y{Y7Qrd!t9it%eWYbwS}@E?9=bxoG5; zlK$Y3?2TyK(#rDqoJx}uwBQLHE{<%LJh`ODGdkDsa%6~Rz< z`_yS>gA=c!X(Rg))jfJ_+b_=1=Y&8vo!hpkk5-%!#8+lyN?v#o4BOa^~% zD=r@hzN{FsyPpvU>-|_U#-8~@zWv5x1swP5__F(wqg z`+k?1it5;I=#R!w)tb-z0wTDU{*Z+sj_%LZ#{nCfUo?*?y@0?*N;5c6Q^xiepGv%T zpoR69pgLINnC|y2t<2qpgHMqqPUfWo2KA0RQSzoC7$_a!|3ThunQ%gL)^JtVQ+US% zoV5!08B(ReVU-xx6`Nig+6MV&lefwj$Oja&epL5 zs#|DyNf#C1GAR~smw_Adn>Zr!QP5`2vti=hV5+TJzW1E!`&0R@eWOzKA>AB_t<7=I z?_6MqGOU7^$^UZk$BoI3H`u%>2nV2sP0uy3V^D^kxEqbGE4C)s(g7J#-M$8*=(>Cr zN{w}~AlIt0fvq>WFz$r~0iadY=^U9WD+T?|2FeV`#w5P6SSU$Ca0VW_7 zXz!feR*cr0IRH|;MItznO4TEqwT8CA;8NA=VB@>n{8xd3ySRh&aMI45C^8&)7V<`X za#uf{k3{N0DRq{%m&}cbg)dU~BXvte2x|gxtT}p}KN_<%8H|Y`<;fZcRG4CKOA7a+ z2dOkd31woZM_AK^t#2YZ4ur*7kkMoyMxXrLmSba!*w$J~^xS=)^80vevTnSaeXIo4 ze$6@s=i$bgKQ|rvj7<1;ru)PaN898A?n~XU$q7nV);Vg;W-1 zqP-r1{(6Fb^8Hely?EAVx5WOLBsvg!{^y-Dgiun_-=0!4Paf6&ip5&^VEoG_qZcgp zMz#r(^mrR6n;gX52wR%xrvS6Y#*crFNLQ>m%1gz=zNVYTTZxf#b51U*T>JjC=m|Qq zc(9ar^}1?K+{m(6|zcFuVE&D0( zqjwTV71Cq5H*mmC8`yCAM9CYW?rb_e3f(x}On`K(O>q54^F}V|_U*z+6PZ{dGfYC^ z{xxoS%|FIIGF3IQekdBhDP?nMg7>EsatyXC?O#-iNdnI$!JWxVho>oRN@r!pmP(Sr zh;#Ra>_%=Ic?}2Hn(IbuQ4{*UX^M_6H73s^7@a3q-tW^{=^1?QU@GKJyF95oNR9pl$ji435s zDV%9`CACBocD+fv5k6QJ^YnX|vUtGgsDbEeyL4X@TN)YoxU~2-+2&-^$%Krjo>TBF zLS&vHoJkq>+L0wg_O@xa(4Kt1eXw|h+Pg<~(MqZ*-yF|a$`$T7@XJI8wt1nf`K|kW zlauL@L_;%c>$$vz?236Q$Qlw~iEh(F)C23^(AXd-NWb_1V?u$iAu-6qnU=IC=tSkI znxlZ^zEq`B@|?P^60h3M(9ecY+2E&u@>HtFrDRM{Vi;~&8Z?ps3UHN(iG!W}6HIIq zP3?q8bE?)+*=0XbH)444baKeR%-)bDzQzijh7}&E@JBav39qYL`IZzm;mt(esnfcJ z$HP`5A_)DE<4KI%jPRcXb7e_QEn{HRnf%e{iAekE`<%oPT(*ww-E#oZT=KUWqxPD* zuXVU!E6sc=7<3%CF|{=3vhykI$J_foqA20M-q#Vhb>oVjIWN^F_T`^PZM6!!EJmR9 zQYbSneBv~aoR}~HD-m0N?0Kjwrgw|Al_$%2J&lb%lq4k`83K>c64AjT5eo;$x6jED zZ0e)cJM$vuvq<_F*kUHrWszI)xxy;sJ3}H{nme_>%$45R?Q#BwE(FLP`T>eYetV`E zIa-f19cH%=%v@I|RbUH1(73KI-tW>>-XHrM_EQWF)y{yJUwb%#OY3eYLxbQ+*KB4) z9LueP{0fl@@%?h(un1kR8$E0>NGvuqQzcEs;E1N`0<9}<(^e`F#Cm+sGSPio&g3KDJKLDBiLgZQ5y7+77>-8H&U8-?UZ=EH;to9{yNsmA@#kf zWide=16fj8zB#+11dFbLZ9Q3ok&Cv)r0;;>p!}1Rm>?Aj1v#4CGkv<4q>{Ixyq%@A zBYx<@`=Wij#Wr!69mkp%$lpwm@4GQTnr6W!WYugw^KGb%AT3=zM!9ZI3CE&T+qQWx zW-;Ra<-uZy>dY`Rt+yi=B-PBV&drN5x1($=l|&jZV(&=5kU}S6Ct(B}5?PbhdX5yG zWd7W|E3+xq|G|qE)pi*I;(=j?bSlN>!y*TLe2(rtS(Z6iRX*@#j(1K*|AEz;JKqW) z`D9QlbYs`zj{T@#^(7%h9nVESf16Y#uT# z6_CW19LiLE?`PnztjYE{ka1}GLL?&`Hx&=!Ey#}}xp%nFn1zqVR~!4Bmj2)ZfD4SMUmh%sfr1N_`NiqQQ6PK4LyiI%R1-pVmE$fwUlG087-bN z_Pt+0=CLBmnUeNy+7TTQ8tEU6;xaMo%+eu#7~HNIbXG7?(X=OoRZ`A4dRm0pCR5+3 ztD0y3z#WI?wI#$?j(kw_f+xI5Qc2tNV#JPdP4EL3$M~;NJKuwa?cv1nEekpg36xvz zS7WDl@VA;g5k-*BsCUFCR|eLOi&hV-h_*#Hj1W#`!e+UAX4jCDAxf)rC#qgw?baeL8hF4+#`xhH=CnoY7+#u>87zjy0lrYhO`MSj5~zH6@GcxK$!L<#Q$=Xseur5 zs;-Xg-s#(B{&?OzkGE2&51%ECn|3Nv8amKNm2IX8H)#IucY07?ClJ%@cu}on{@5}_ zy1|Y4&W!tAIYJr1JnC=3g>{Q2brBJ`Z2iZj39}u`^n1_EhVzhadE@xzY8jxkqOgAW&h%%7lcBJYD z<5xJ(Os;R<8=VT6$ag17TVi9NbmuCcq<0@BP56M=*u=)oM!PR9H&1|$crnP<{Y}Fr zlD}9!P+;2TFNy?SB;Oc$P?5XYf2&Go_F z4b%@)_8wt!^`%4XY<-3n8lH-;(pBkbXf!Gx>tLay)4|IcZ`Jg#bZK^AE1{UbkeqZz ztS2!^v1+hTS2~vD^J-*^uc_45wV+f)4z>s5b0pkUMr&}ci2BY?7v>i4hs$Ml;}L=c z)qT@5N;<2>Q=Q1)VjdL7sL1JbB*%_$WOcSh_?D9@Rxjz1(m&mx-<_wicI=rOsdDv7 zE>r(3vSKnR9Q|R@NCcD3Z;nCr-i&y7xN&qzuk9WpD7tVd#1+l!pp zUt9*$s(gKyewoLQ+PvWJ0y!q`(u5VueazNC^T3+it9^UNmV)x0sTYyZ)=wrC-QOHT z4W5PjHNQ5-V;kQkQ)1kFPKJKUL*h%TlN4T6XnXE3#hn2E#z4Q0tsVt4w>8#d2fJ*@ z$tQsYs-cOEzE(9PPg_U%+MNVkvPSHy9{*KYd*SxnJ7MLcwW=1p?9;3<$2WXWBL8X# z@7#{k3Eg~Z$CT)5s_^XIUg~9z_kJZQBqnOrD?))!*2>OnfsrTY9~*kyjq_P`wUe&d zQ)3Il&8p=_?xTB(nPD1HpVJ<#T_L(8w5^JAM{tGHbD$E#X$YpS`|&00{(vKT1ZGu2 zi0+G7`GB784BjRv?ur<88?hCUj*BF}MH}nqV1XEwyWx*L6zBXuvCmptb*T-~*Wlh| z4XRAipnA0aj(?-6?T$`KI)G()-X>0{6v{+D|9y48+l1I?Yp3l$fBTxGP-0YjQrOX8*7LFj2(&al}QR+bu&wWw9xmdlp?&P1!eYPg!bPv}J zeza(xZ2PoK?DCvFZ&R>+tx7#9Y>vJ?>r)NZ0#__W&fCTTxyVALWn+U$~Hs&dmUv24NV>mwyV`dqn6UGiqjW zYNmdIf8;X3Cyolaf*eG;pdOQIa%RVoI=RE|*QLk1DqdsbVSnDX%-r3HT0ZA zBaoEKl~j)JB?ZDM`RN(P0I-bgX_?ys!ZZv$GdR3J#S(f3XOC-AtCccBU+P_lQRw_!s*(^q`6VD)y$`|I!+%QaSER}lTzgeqv0XTa)+uIysDDRB*Yz? zOkNCU({?D+3wM~HO2nU>L&T~xx(CA5fS$Hw$UWw+o~6l`SOmul(&L&H^?gUp+>NN| zgVtIbQVZ_H-XR@nx!ozqn#5~99L{Z5xb+8A@ZEk&C|Z)aHzfP#kZ|xnvXSENXk~t| zuc-0B>l#;Dj7o!``F^}cg&Jk-h3>4ZsZc`lL8>&qs!FD@x@;2hNbj6V!kB+{7Um42 zV37ORdPX!lK_ldIiAr4WD}L)39l-glMm0BG=l_bdB`%!Vs_Jz&Cg2wsidc zM}J=dr#f=iUJpCX5lZtsi;Qz{K%vJQ^J`zKQ$#%^Q~!#zkCFtN0WtaWrbwX2z7gfZ zl<(LjYG6re+`7b*RR(AK{bNU!oSB#>y0iS3oJC!#z>ha%3$63b<47&2w=qB9x|3Bh zSPLTUCFuQ*R1EFSd(#LI2kDTAzBExH(7Gz3@0=f(8}T|=w60EVul|Z%T10N66R8bRO46zhx2-ym%!pAil0+_EeW_H*_u*1B+?ed?kfW9{2s{6jbnjn$Ls zioPjPl$m-)V|it9Jj=|@xFVi&PsX);_4~89uD8nUv}?4Q$2HwfVrR;VzTJA{9)8`7 z|C)s4dWoBFUfa|yNmVEz*{AWJ_s(4rP&BtYYbE!#Bhjp*rB9DD$7@;mm7pL!jaBEf z2X?*+2^02qGE$?%C+f!i9(LkuKQ+6J>po7_2qNS$WCz+`kvJel0;xUw-rU9>0pBnC zSpARVqkNbdwsQ5!7!o8LAn!V_m4w^&shc7$$KjMs8sS2kms3PR%;s0sKv@(~(l{Zf zcD-HTObFd+8#FeV0;q_j`K{rvk9sZxQ$ZaDOQ_1Z$w?a((a>FLzNC~CqYt##gx+Kv zbBBDD4a4vG#;!wEkcs#C$WUkJt*X_ip#|On(vEgq?F-?o1ipCK5o*tsm&d~JLzJa! z>@V7v$#*6ChTa&OY_aBU@8ju@+uT(URIII1Dll3|i;l|85lXsOS7RUJ@{iU~Zh$@2 zi{X+NXxyZh){dJY+|Ig2?)0m#G???|r}|VB4`f~qT9Nyux73gj7F(ZEOCeR;xdcSp z+|Y%`Z`t^nDBH&!+o!FrviD{xPAu;ht2UTU)WvCKYC!>pocrb0HdIk#M|7hs^+sMM z?60P26qvLmO3)xrVV;y!<;umAa@+c+^(!R~>hc7gXbI`ti6u?DrHUJ5RD#J0n0TzP zpwGSmQOhHQg+*ozwvL{cpiO5UW~=&6kxRUbAj+KH=I)6!UJ7i!?Lg`&p5f zj&yd7VX71KM~2qd*L4~yp}&Q|{e+Uy|r*RNq6leXMwvOLyl*uxV-3 z@_G-Uuf}pwcuz&UP2xZl!p~2IH1Jr3Ab>=8cO``BFa1&<47?@{&^pn;{)vN< zv&*~9nw~sZzq$3{+ATMwOGps~Oz{0aS!B6LyBR*-@bg*Dhtz>Ky@nA1zE5mX{%7R` zX&xJEaTAb=M^Wk&>^yfW3Ntl3l&p0}z0WQ`sk_}7rFZw-U#S`Y=x66q;**>^hvbb& zT$3>j=Owriooz3oRSBWoL-@aKP`rxDk)~kIs(@AzbI;73(I@hObjp@v=_j&*ACa%Qh5pj^^tP9PjN$j!Gc&w`I z&YDU*Ha9V%yM)vU#6gCS)=xlPMKq106su&(;`ej?gl3(}gl;$q{`sK^$-JRwyX+-? zkBF#dK7DR(yBeA>hYclu69iI;gqqXu+saO02Gi?EpRUuB6KtGV4HOL_Qn+Yh@P8P4 z?|7>J|NpCVA(@$FCgYI3MfM)qGbDTO(f9s5 z^jh!V=W_X-KV165>;3k8p6B!Nc--&z+wFQAOUK- zn^gGHfWzjhIglZI73ri;>U%klSMI&9ivwm)aq~$e{)gs55j0jih3<8O~|Y z3}4;yPxa^kuv;w8H0|~vZTi#-AfY6rpkuTZ-lxH$xp+7KN4xv-E1AbR3AZX5^)z$VQ`aB#30q%UanYe-8UDO^f2 z9RyM@lYxQ3DvBQC`kdYLg>e}ve||e^#hT}Y{?(Ru17~udTg0aMJ2ekbSzQ0XsUhab z+5c+7e&}*zaBjUmI=!n&Rj<5FF60y{t9+iqGnLb|E9NzeKzM||sYKo;e%5PB@ zZ2)z1N>aK&jiLBzudw@>&QT+hneQ9qbp@P#@A<^q`R})6Q+r#zcv;FJq%wO#=A~(M z&a4bSN#Pd*J;9L&1;~O4_d7SZ+{2wve)Zc=u-=Xk5uTc({k>W-2Zqc;-e7)uE3&Jx z-tJhe-S#sx6%?Q|7iM^TE186gapXtOExRjm-~KGtj6>w-G*wk_I5@O#=|kuZTtkMv4?j#%j4Im0a*jhmQ9k$h{=R z#P-uT&VC)<0)E&Pc)ZO4J&dKFU7qT;627Fi4hh$^keYf3VOr0Xu{--ja7124+6~Lq z*5AAe_A|Ez99=QkA4|leP9yA}J+@%DM=le3HFDIDo>!RIk~x7=x8c_Mkil5$>va99 zjTXa+-o4t4;pZDpV`z7V29w9u{!9!sSEM`IURjOSV?n|u&&7GV!Uh~R#4U1JAsPCC+Gma zTl~IHKXy|1T0r-U`F$r}ZE2vFAPh)J{awODVvas0_QWFoGGPD+Uq?AF>PI1n2|Hly zT`&6E@!P}8NSY0-9cAwrr0v5jpt1i0p6I5lGeD^e$rt70I|;ViQkWgQL~^o}GmTC| z8Jv-1v%R^t`W^55;>(vW+Kw~s`d40%Oi8eGys_Q5%vg(6dsp2WtATR3urD}%QKW@9 zTS)e*;`PGJ7{v3#-gAeKNmjD{s-Ya&D@zf!!fB4j+^u*;ozoGAOfR(EN|YXQ70f!M z%gkq}knD!#`4$pJB1qE|V2HI2XeYIEKE-DGB>Z>2s`0e&C>d~PUK6qW-aGL-Kg2PL~O47ap2ZQU82x%y~Z2Z9tPhli_m%dxJ#%M zXB7>fybYa|WFO~?$Ob4bZeZ9e-Ehxgb z0_!~qbmwhFZ^uFzWGgL8{91TDkMKXedQ-tvbFgo?dv?{5Am?K+ zV)2fH&P{szDVanwNzMmhjnv6rhGJQ62_p;0_E-?g_CQ9Qo*sIL#3VGg4Iglv`UZ2k zm+Ves()M{DK4`hqp5A%%`b$!;WX@n)C+en1d!@LL{~sb~%7=872x#srl$*qU`}{h# zWYk*LgK&f(+(d5WbhJX31J4KMsRB^gES{d0X*6#hHmm^682y9_b%kUZqsOzh@bi-w zJ;TXXEk-HmBcVP{FZCn))>@oR!y;+x;))qAz}q%s|$$=kBdTnuW44P0A&^ z@^5*nAP@av7{A$o1-Hw@pRGI7YV#EZGj7p*=gW=JSs6V0eDD;V`H`f-PklYvXbhOnagWV*h zTWno|9moff$xAx6$a(8R<%VgHNr&QX(PK!IX^~@ry%ZDF#_Vc2@4;<;`fPz%l7u^v zO-qhDiSw-M>bO#oKr_h>Jp9nJV{sXLXDnp(Am~nI%c#$Pu4~oMCTaiK#%Z?~NVU21 zIjBI_62i2ln)%GLf!kw`0bL{0-utM}Qd&!v!lkk=!pHF;Y@}smbegrHu{FvsJ)3Koo9NYBG{%)nE zBiXtp$^7R#gz@h%TTt{zK9n`~uF@;VA^B53<3m*C&JX!-r^SAp$eEXtRR3^aRvyn9 zKxR2{I6e2t>%nT)@g_>9XNuVEH(5M}*)}W(RbNx~zR_RUi{7wfyw4bN6_E#Ak@>)e zejr7ze?1b_YL+t?#x2(Vk&97#9>$I9`MxO$gH>&#G5CjVST+BO!*(tX2Q78>tHueQ zo!p!%e|z=!DdY@?*S0Ufx=3{tuKYB%li_0Yn=lML^XV*9DOriC?Ux+;gD=miN^l43 z8Wpb~*cO<==lVFGBD|C0TLDv-9f&M-)Fq#-DAAoY!qf}!hi_->`5Vt3Q|cc^66ivg z2!3IK)9E8bj_Nd6tqF&{HK%8Ot*qX>^}|4G;oq8MRA5TvYJ5U*^(cPN)%B=SKMM}v4!L6rA2mz;NyN}ftjkCng@4-*~M(im*{HfHo zsFb|J#L@n3udGY_+G<-~II>DtRM{HO@I)81Teh9i{mOq(Rqp4`(E5;2&MhiohQ-mk zdMH|oy>QxU0nUXCEZFQ&7b-bm%xeV?_B~4jAC9-f^_2?YWSPu)^S~W>AZLK+bl1I5 z|F{|adw={n3oKW_!7f6%J+j6$u~u!!p@<1*AYwc3#vc8iuh&`+*4daaHMn5A?qtS0 zS6sel>$_j5z6W9?7?hF3-X7B|SV`5XK*H*WK!rZ^R(R*Uh7lN4K9fg6O!~|H1D65z zNHUSGo=m+fp7v|U?X%we4WkkqXT%B{T-)xPc(#18`be{jD3UVvF9Xx=sx~L}+=6WK z9i=9tkiOtEb<~=KKzh|mG;e=$Ti-PFj8=m&0)AGH3Yt!ZA}bsj<=XtNEUJz;-A*OEM#sbLc1*nT z^V<1s3GRXJP;2-5`%)0o-?@hNR5A@TZC8?JAlW`SA-Q#jw_ucfis!YQAhgln3On^3 z7dD{7`0wp6T2Ck%UkQaAfgd@e;Z*M`cI;7Naf7yuu!)y}01o3W>_en>GD7WD43F;} zjkm%~A{1md11j>t_yp=>$oT4^Y1(la4^FQ!-hx_!;fkKsnf9wn`9s;fbK_;1d9L}*^@gWX@=A(sb*)cq zcE`Q)WL%L)Wv7hP3!y(>3^%y@z*wp zN~c`4bG6kjcciA^E;CFT*jo%-iU-}7W^iDIsxRKH0!-H0kL_GWhRBRRzl@6>Pj3)L z9JF@5@9a25Q~Q*C^ce$Oxyc&H|7TN+gkLQ$ zTaOZdBZrh_ZXO=(ngG^Qm!4hSgZR#o(8mH1o${lO(4+ol)vnGrz@rIRiXQ83<5i%c zy$lGTH0IWTMi!E#bmF9-qz}>wCiQ$w?Q?3Um2T!0K+T&b1@Xea?UQ^-g?pAUrE%-?o9mVZ?6r{8f1RnRKa zRx@Xu40+f4Hd7-g`O$0q8~?TDMM28v7Dv;UWuN;QEuIm0#>mG|THq745sJT2YNncL z@!H;vH%b5I{-EaD%-Tw)XTt6!!8sSJK_fkE*o+LoC=7#gCWgrQzhpIdd*?e>8T!>i zb5+?OI5R4&UQr`qX~|B@McTLB%FaKFwMK=V;eo7pDLegdCKHu_gO6qkRy5GFv0~0o z{i43%x z3yDX`BQaJseRgrlTL34H{P6Vm9wb^=JWA<<@N=u8zNl-8h*w9)*zn3{J#%SJWCo;W z#PEwrdjQ63sdMud@~z*ELgJ&1mG@Q62Qj~Xl0uMqzbNoDUf({kCR{0n9Y&Y^IFv3Z zQ#8Nf*=~#|0&ZXW)i2++^QDN3#nV%M-R&v)uG~n>=3Of{21-sVEFfDZc7}l(28<2G zb!n7mC7(Zp*7?mP|#@4+7Cw0v@=fc)l^BTiF^R81t*6Zur1cy>onWNA{T%FNX8yxZ2-JsKM|q^-mubJpDiIdTyXrgo#*9+z^-*j^T|3NPzWX4iR z1@c8_I?3`Dg}r<(qcvksedX{I8|TjUkk87|BSLQ`Q5 zG&p2DJUm^)c{(pGq6zlxCjE49>|Pqwi2JVS+%}W&Jrk^-b7YSG5G%6&;(O&IevPb5 zG~>Ry?+iJ@U9UPxVNlLZ%Gj;WnJ7QiTJ>`bBM^cSs@-%TAX_%7{BvRThy+8zyZ&)4ZMpIU;g~vMMU4 zf&2bqu(_in=qMe#M*eE_7C%4#r=+AZ9dBVAqUuFj2`wh<_4U?FEedN}&W^vtXiFdh z$+e`UP z-iXTU7npafcIfjpIst!8X5pbd>h!xHdD{Eh6o1)YrchE+-FGs15w~y-D;d0?+R`e% zY92tlBl~r6K3b-8$gR8Sj6pjf@9_2PZOGTX5XPlU2GToiGcWx|h$+-8HuKR-RpQog zrvLaF-thd>NFIWFKe8o*UL4Ox8V@SZ35^Gi13Lb0*%o^25?~h@sArZC-(OgVeff<+ ziw$n^$$4`s!$GsirVCJ(kA~UMSWox7x6W2V!U7N&I<5vuM6Ub#aCx$`z{}^SHVQES z-f+#)Fl{hBTQJ7j6N14|A~LtxAwrWBa|b8Eh`JLwkr-ciNC7H_0pW9Wk%b&rB)K=qrsA8gG9S$%iH&n{VTJ*IgVzfy zYE<5ZHtK{wXCMmcAeBB%!REcCAyLotupg+|&)r8|21p0SQ^xdI;!Wa6nWb63dtu8u zX9qP-6JLs%`*~iiQ&*S{qXH-60-(pIKCZ(cVmn_(Iaxzl6BD-S+zGa$dc{hsjv~e+ z({+nuvW*{rY@KI4RRSz|TM5$z;E8@kvSUEUO6dx4>(8*2jX;8o<# zIZo=wrDcScTq`}JoLIx5o?=A}M~3ESb658z>ZHbJ7vVcW<=?d3wcC>i>)!K9pMtJo z=4Yd=joB1v>{-3nB(|M`drMPPPZX6D+!n~fQDpN_Ok>uN8pg*Dr4`1(?dT~GdH%EeG8|J6$~3+zAvci#JT626RI(L z$sReakHuxI@lvzr&+Y@1egCUX$GCU-e2}c%*xbzdA*%(Fl^Y-nP&v<+N$`_fCA-c(Vv+dwy;ce_g+^1i2Jm4kLJ&K*}j9YB9bqSRg4+<1WEhKNg1 z8zK(h(T6?)J1CrpoAl|YK9|g1v7<+6N|hS8RIZBabEV2YRR7b4{*QKj!w$6TB679= z-aU^uRn}CNYAfM2!i7g5C){YB0uf^FgwvnQe3TWJwx-jekg4n<%9G@dNI1(jDd> z#(RUvt6R1Q{xNi(brr4uTVr;8!%#5vxT&?sq%Dy(_tEYz>4PfQ2j+!tfqXmxfqRna zdckun0ygN5ymtOFZ^TNz5lVkev(#+6QS^)u4M}8E3*U>FX?CXZ-%T9A(tE9Oj7G>E z*^-cBF%CBas{>kC6QXvmkb?}69)fqqog4DNfinju=J2L&kl9 z)8lDM=hA|U7h?hCfEkNd?@QON^DNprc0xD!HEM%HiGkVxl;E3}X|eL9O*r!!I0vmHoADL)xVPLq|ai@<5^5}fMa{cpErGNr2aOD- zXKf8WC{^f=j4hleIQVa$Mh1yd7YFiSophYGh!DHrYpspyv$hOf|MU<`DGOBf)3e>d zpoBX3e+oVNi&~J-C{j`ss^xG*H_=g4kLsbaAC=>h*@}O1@0}a4qugg^zP05>!P-gs zHKm2qkEvm_9081^KSu1`YgNc{7Pa^R}6jj!NtxKN|ubMdjS%VLZVY%>C*n{m8#-E~$+e zqG3n2ESz&zeugwVjPVD4svJ3GO&|H@eA3W$jXd#=SLZ+tlrUi}KoC*KRR(gM_YTzm z#1V8$ujH`JdAY#wMyK3G1TGUN9SGI>=5R?%47q0!N33IS&4gQAG#OOLS`~CKlT45) zB&*~WR;ij(`f*{C&EA(;sK8fIdvyjhZq_K}_|mgj>IX+NoSJ?nQXxfA-{TD|y{47N<-JpqpB!!-0L)r+pTilGhZ6TuAo;nReU3)cP zJuJv1A#rniQHJQ_F77_9anLZcWY+FFgO_#*4>+FeW+NxLBfxo7n5LluPG%1?d?=fx zrUKP6aTm`W7DzTE-zYF)yk{i6%J+H4(*>+YLSc%zi4bb2(tdQ<Dh&QWJQvNZJgi2lq5va!`ExNHGy|LVrAO2}0!v0he24wU2z+PP-Cm7NT)=xZl+4d*MfyQoYdg0a!V(!cCma^#IM^H;r1E3)Ccijs` z@9s!AZ|9DeZt`xPm(=T4Q!ukq^RJEuFw>Y?3gN@{G6LBHzj7Ebq zK~XN9HR2Dd;TWi9#W80cdfYw{nG$*KTlYTqES?DqnR02@I1pk<1tie|IN)N- z4R4;aJC4f#4?YdO!Y!RF$CV6i)_6i;rmYw zoP&pZIqr?|tW03{R5>C+FQZTzfbRp-mQ{dlxp0DlV(=L;%~eCghL*=Y(Bk|xIr&Xb zWZ`seFi%27;rhCLZ74rE1qFrebk3+fFp&&OKyU5f}{O%#cwcC=<9>V2IBb)q$S~{WNGBhkIGJef1^I zf#HNu8u!VO11iEL1=s%)i-FkI#yi6CurBg|L@HqQMZKtB_FFpBplMpn@a>j5kFUjt zmx%E6B#3(F_ShHgOyb5GqF(lY%cHJX`+6br&E0ACt3XY%FW@wNIGHCkR6T}dLbThr8vSjzjHs&XAZzx&#)mKMZN$%mK^|nBbL=eki_ZTcE4E z8~i;E)Z`xGDPWp#yMC_6aiMN?YsN*?$lDZ&o?C2^Oof!(2jGj(o+;em&@Lg`1oQtl z&{)3$@8!dxa!*@lO%j2UjzOoBIzrbSlwb%6}xQQWQ>+1^-}3|MS~)&X}NckWwia| zZsVxl1Ev$-lM-PZ3&5r!r|A~j?u)Qsa-(X5-m{yU8upTc^mkp$cCaC*Szym6WM2i;OO~p zmYNl@Ga;7t4@<2{AN|-KfuT4udIoC6f+kl@1z0FmTCt&=>TNJ+#DL@Lt1_Qr7Z>qs zM;5p5oxw-lBgXmtq?T*4q3nbO0N&U?Q@Y5eb8VD2Gn0<2*?Sxa$+*8I{umkjl&vpC ze_SKL*yO1!xcu`KtJ|Hx+y-iut5#V8~aK~qy z>oyi5e!m&CMrBM(8^{ERlM?}PSW6z&?{%E`&W zjQf9>1*wxH`q;^nCk@qRHrE#Bkd$>@UER{vzMW&4CtcCW5Pag-SiNO}B;^mgk1AGM zf3|I6{Mcw)xI$uGLBR_LkOdPo5}8bx?CPIu}oM|-M=x1pH76i5H`z?CbAPYFbFkAVz*t#8sXeaim2nDfyEQY)vh7lI(E#mWTk zXXd`$UuL$Ug{TXTTC*g6?Eeq>sD8DbZY{R~gqH-o6guk7rqb8C5WXSkrHrizVVkH? z|CGnPH<}f0T3?!2B1|8++Ypjji9uqaK2zp*>hB!J9A_pVD#1>KFCY{d%IOB(ZCtRl ziU+y%xFZTBO`ZZxl=Y>cNBKmKx`>SAJ2mQ|#*M)}{nE(WhGDnPI&%%2Dc@ch7R#Ji z+x#blLA{2wmO1%UB(yHMIc}&p8x^h|HtO0sidfG}^Pc#$v+)mn{lXfAizmKlTQ}|c z*pRWI5!oKF+*%xIF6H(PKd*w)sqJbSQ5ZSx5p4J5PEP~aQLP8%aGUODo@iZzV+=?k zyIW!|sg=ylFVRnpqu}5>l{J_77`?Z~7S3v*Z1rQ&(Ey1Yr!;t;Tp;ScWaNqV()jn) zVq%dGteMTW4j^$0Ykjq`+-*99N#&*7~L$_hkCAREkXHrSY`& z&U|Lj4y0>V3y{4!;+7W@hn%ziB}Hv%Gw0_x$J59>FC@YeALJ3!V!*)=rv*ezd6&yU z?+fQz!#g#}&Yx(07`mz)jYGEpW;Wb$@)0#y;ghAg`(UF!uU0yeAz4y@>plWbKRj#u z{L&-Yi|wG2vBHA1E;8OaK(g*>yjgE;rifU>IT;$cE)swO~l=GcGFvsZ06iqJwP zE?x`PW#MvU^_3Id;&$E~q8;jod{K#kCWLxR+NAaN_{@9m5o?LC1($MGkhi7jk(=c{ zi2bNmV+{$umyutRkAT-NbbslOOe>tIcd)&I1GcC&LNdnbmHS0k|BWLl);}4Lcdtu; zjqsuoJ$>!S|LOf5z)y-tpbK58l<_PbEVzAxD;gt)7lX#JFJ9#b}+~L^D%BQBz<hNeAT{yNZsPDEB*>Bzz{lb zk~fv9ZSO|t7x`gdJqaCfZ7|+<@VJ-Cp|bV%LgZ zL0Qu9j^d<#KjZuG-Zgim9%3+%O^p08i6QL2geie5}-_--v;~t^{fVwjmaJBGAu@R zX%|M%{jbczbO4DLaZry)R@D}Vn>ECc z4ghey!b7`&d*#l_7-aX5e#-XP<70{rk9VnkUEwNMTwuoYNIq@X;@>f75A*hc~NWRBRQoMNaVih9iJb?U$-Lndb z0IgG!qU-X#Gb@5<6ya;;-d^otV-d-^hd;Ry#@qjM*}bJQGH-ZKW0SL!G=cYZBCs7j$5gcqJ>94)AOKPQ~xKeBg!;l6#+R5W(* zUZ;U?w614})`f1ajSJUwQA&rQYBm`H_eIv{YNSLIwW)u1nfz%iqRP=<|E|*}xX zM|2g14fGu8{Er+PW zn^w}vNf?O)g3g|oB39Sp~O(B7d3!TLwL-Qp#&vmU2|8Qrkn|5`e_P_$> z>96%TKaHX(;GlS45@2p=nu@P|Q$04eYa;Pn()y{DsTZ5f)z-xo!+$@hbB&{b|EV#3 z*S&tdN~PUG-Fe)e+ZjxkSLO%e8ewKoU<`eS9lAznd(6M8W)~I?p-x63%ND`xd2vJ^ zeOFs z*BCP>2{#fx^zr#;sWL{dxNyX?R6lDsrXx#B$x20|E5r_!g}Qu_{--8c@5 zcIkj3cdJf*PuuY|IMVL;`w`N?VgrLGO>=QKz%kLY)f2Ki2#nIh8P>#81>29zGzd6= z3cj|9&D6%>iE7s7q$aBYH|ir1i%YF1|13(#OLeeKPW0##3k!3Y_ATemz)STNXm_s= z637+%#ZS1WC)qU;zal7dSXBD|e>$E)7!V{s*$zz;_^fX&{Q5UY8Run7^sm!@Xfp=` zGR(6IVXLiVZ$tjOi(Jp&8{@Yn)b5dg)L?FAljrd8wKAq|F7J0LI%f5=EUI#Ag2Xci zdFNV`c4e2Iny)i8q>6Xk0SYeexw?rhV_l<_zT=;IKLS^* zeG2;5h8#Q@H`GcJn%!BAf6P1j&dqQ7u6>cM`m%JY&XFQb>+#6f!w0k5?j>`T_4&t6`HM$S8nzUvk8M5`~MWky?>4H<%?WstQ=D3p4Z&*SBlo| z9e+-C?Y0z4DY~{lh%C2tAT(6F?aQ7u4Yp_fzHCp5Vuo(ZA#`%k z0F^G+F77}K4w+*8$=e7VgS%ocs(v=zl;rGTPHOm~Sw6Pf%;d*bq}~p!2m8dmQ}`*f zWWFgmULl8?$0b}J^Ch#DDhXA3a1>IdN3za5EllIY6!3t|7$l<>!Z@ z^=#EmNcOYt4s3@YfJ3j2HnE8EYC0YO;m$A8AHw*QqxbE~t_a#hnv7T*tSTWB07R1Y z{^N*Ezbi9doJw)2bq3dTzpJ~qr(2=jx%4T;6e3z{J8cL@4%rD^XK&tGOV7CF+cqYo z)ruxS7FLwdAgz-mdT{xVE0-XT+q*rN)E?Rn1-ZW`PL`K*%@4Vv!XM<2Ku z&$JH0tdjH%ZjeV^*o9{4A3)}P&c(>BPho8_vkM(Ci7aU6*sE|iKhr|my~1T!ItrS?$0hdH=`5uP@M zyB?KIPF?rTz*^U@iN(kn^9Jna87|)EG?i)${|55bU^^9PCW7CfS2Hs+e+c%k9drJ@ z(I1tXN=i*louc5vKmJgK57stQ=L@xq)2`QQP|x!|YIsVHTw0s$OT0PhXW}iQGFtr+Liag5THC>JFFB z;0DLElT8K8E$gIod5>9@juQWn@0inXFvGv?R)40EEu2DsPT9D^vam)}zCA=ak5b2j z=nlg`h<<~g^&M>4WWs&R{471Gi}K+|$dZpjcVVE>%d&X(r~X-a)i;tBzuq0x1ZyGM zwR`SR;@g&D<_7=mw|@W)PTRV25qzITb^m9)Tu529!E_RPm+$sTBj#g*ZM~Dscww?> zo(DTC-9@K)0k#Hdr>%G8_HvmE>kL!Vj$3dg+^5&@IO1bxilODu)Y$koAD?A5<8hRq z`Y`eylFG9q#OBDiv{ZyOpOoxJn9_r<-Xh49*svy@1?}0H8FP-~8+}SfSvz+0dwJja zQPVCmI608n<$Tn#kIEw=fN9)a2_%g-h!&K?CA^`*6q#+SYEWtOG!C?;6On{@a^YC z&C}gIlcCQE-)(ni0AQ0u`odJnjVYbP+DJ`P@P4zQ!k)FVT)Dk)vLi@E#a z42RYYF%DrBEFKAy85i)dsvv9l_T+Y=`fFHO(s_jEx(Lc+rx6~GygnBxJYuf)zp$a- z;;ekBzh-zNj9W_j*Mo?_kBZ{gli*kiDxPs@Y@%z7q=39lzqcP$c|Q7&ll`b8bg;@lo%{#(I2gF2>fR%x&1z?q~ zOrF91b*Fd!!F^|Lx#(B?B)YV*=!VUfd@l1hX1+vUD#ww`$(Qdr>)*#sD4Ty1+~)i# zddaBaJSI5B0DR<7q#S`ZY1dn(b5bak*cJ)H8>IrfgZ>bsvGm9a403oMwQq4oBb|1b zY!`^woS$U=Xkn)z5i)L-U%L=+e?s8JjN1MNw@aI!6w2SVSA*e1cEJY8HR#4}2e`6y zY|7A|2f-OK0~DF}@kY8V2w*>?EmZ8~F$9_6UNI!Lz51VTVe-kyi4xEuy_3oJDDNXz zb&&Hr1aj>SlkVqOd#m2L=Tq;+U70~|fL;wI)F8-ZR4cq-RoHLHDXUQg%5AwsNlSsR zfms3#AL|vJ3U67MYBulzx^kCJJz~d*a0+Tjpz|A~9v%S!F72_47tw)wKQtAtGTP&AM8cN9D7^7 zJNbY^$;gYl9$&OTQ z2cv&KSKQWBm)^%D$viJ)oS8hlvTR+Hxg1OMOksbi${I&Lzu3wL5B=IK0ZP`~(-3;% z&fQiDNA#xHt**BiIHE&yH{Gcx^GAwK?=>mx^!Ga{HRze>)49i*#z5yNi{i^1cS`Pw zbarZdlrO}t>r8k4w8eB_n6KJh)6Lw5dyKJd4L&z@5)9g@xzsJ@|U z&Tz$W9miJ5ZYceUg;WZj{gp#8w?6SLQQR!iH^Hjc)wg%|5zf?3H)-iT(F77cKl^zh z6ZB z9ff1&PS0-rI9cRgUM^7(4z%ynT#vPWeDf$cXlvXpp{7Qq0i_73ZS;S>w>H}gVNoCX zOMPSFGTUd9-RwM*6Ef2mFGw&>-_Bum>2AvlwF8ORC@|RQW=Kdq!xSY|)UNA#?D>*! zY-;T+wWkwinV72qS9MFwh~8o+Q@~M>IdS$RO7NH)uhfJ`#b&U$_YI}Te@LQ zr2(0(wz;O>EuDn6^w-7R6^;8-jiXB3qfUEgI_%~F$KNmp(+{!%u*+(bx3e24b45lS z;lx)_0qR|CJIDWAhxHBb!o5n?A`i*Tnp2X?eWSZia@;K~_~BNrF_pv_^E+iClYEc$ z$ceLEs~38Nc=+YZF|0{mUozdQ|31Z*V5#L$|B=b+R??7o3d0K38O+vOZQ*cXL2zoeY1+6hza1Ylvae@E=`e>>a{+8i&VoZ|^Hi4O);H zgj91G82BSJOyivx-oGzK?|N|813+qRkEBGu3l$uhX|motkyL>4;4sV2t7_-S$hm_V zv^97VS#)KlT+jX}OY4oS26t)j`25)RVvM}z@EUzIN>%@ZFlKy?r}3|P zpZhKV0c0}MCib4enOB>cGC}_bunB|>aQsVn{xNdTgr~?LDx)mx)5WcmO8_9tUms8S z-wn_)H26WVKwaX4Z+Wr`&L!>&b(2dXDw1tO@l_t2?fNEGeiear*0WrX2|}_dqL`75 zr;ObwDWzJB%{8o3MB04%>8{%9_DqAd>`Ds}bq`ln00m3e*pmq`Vyf_SI|W3FO4d9k ze7Zdg%13ZX)UP}qHFV8A^XPJ)2EG2OB{gIQK(fP2Ee`jrerLfc{yEz-OG`_C|Fs9z z&K@sj&FXm$Dih(?bx6D_fEa(jX>**)Xg90lY1e9wzBOxK5G3LxAOhh(A9Fg_i2qnI zrDj@(r#Ek@*A?(KTG`K~SFI+4u3ksM7{$cJYo_3oS2~Y9AB%v+$SJL2*_9kdt;Sj=6Fkj6a z#HHsIUIqq)HMFX#s#&*j)*z0`q!>)}M{2&T7yJa45aR=o)U1xMyTlWhO8n);VccFe z{Y?pt#8Ji_hpPL_s{+e>H=+Kh)N70EY0ohxxS(9eOhb|2;$1x-& zCVm6mFV_PQh1hT1JIP=7iRjrHvDD5bU}WIokJF3F0hOrygUNJ<^NA{H2iMltFpIqz zhDu$A&I=*^-w>yX%X*y4^NOLSje3y{BjW|(iNv(UWiRS_QRQ7PVaM@9L}oRtS-<*~ zj~qE-4w|6>h;~*d5#nA$P71I?olqWv}(}ZbZp)Z4L#G^)<#F;4QWr)H#eekwM!4yh6%1jZ)`b>iY$I48M9i` zAe{Di**aqO`0lJ7UM&Nr zHhCe5?d{k)5B*0e-_0FSe{@PL*naN+)11zDy%5@adh1W_ zd{VfJ0at9LolT@gT;%j4r(eI36Y3|QI8Snz9>c!3-`jaHD%Zc!#M+t{IS*o6VzIL; z-=uHcc(Fa`yK{8XPq*EitKi9Je%uh=I}v2J@N>)>T$=9Ubl4>3BC!amA2y>98;%|z z-Fe#NW3eVC<&igDH@3CmjJq?n%io;lIJ#dtfTfA6L}+!uRk_I7si>_d&jufU|MA!7 z2atI3+4Twh5a|6C=4Y}7&6HhB@rCP5<+)HvJf(1b?@xSFIz(GQCOQv6)WcG2|Z1IJ^t6cQ|;}>5Kfk5 zbU}!`THF4M{hPplkOLUI=Gn>xcG`lt-}znB$4#*e5PXV#+OFW3X|j~*=8_gRizi6@ zE|RY@JsxX#^d$3z_)X!af$-#Swh-~;ORQ;E_ZGmygZ1A?N?(d@Y7;`=TW+W-4@8P0c_zBQE z>stw3p0pEy_nsQg8{d;anqxG*i$P z^NH4{I^O0gc9mgiM0OT|B?!4eSR+!wiFyiKh;JGV9R_6h*)eks;V(N9Sg+}av4 zQdjRieZX-hXOspBMMV6oa%;;6uOF-JP0=phNl}73I!0?|2YDD1OJ%Q5uGmusLPVVL zV8L!c+?6D&e&-G2&E>43DXRz~4?w)pj?a98G@Rz3-}gG3>c8=v>SH-e)55D^yyhpN z34ZA1Xf6Daw~Csb7##0L$@eWiJL46G$T!ATe#MdLoT`}h!#e|1Bdc0RvUF%%F#86U<9IjVv>1>CH6@8iiS>0aH>f?K@_>rrh}J{GbJDRqAU0 z;!k}oQKT2$sHq|PD0H)jae++c`xly~JDfgWB}2ol+ElRK5xmB#^CZzb&ye{0?U%|v z5i^_n@0dpS@_men(JhWM1QoC7>kPy8@i7I4ft?6hah;)Bjyc;0_=a%dy!OirKkHhi z0$A0Kdx$p+7=Au;mT5$)z-PaN=;~LJ@ukGXMJiTFX7s%E0c$jBdHu;?^`*(fQ@Pr< zX&H5QRPA9OnW}3;Sk*N`Vf{Y60z7%)erb4z_-rbZqv$oMgI@Ai`9{ub8N z7rOJBk+*)Bu-y!<0%T}T8YP`+A1ABFIo^ z9WIokIn>?NwRrDx^B-r4Ulll4zQ~W=BXjvg5fTpj4Q=*&hzAxeFbW!MKF9- zF0jwYWN})_>!)tq@xMWgC~Eb>v16=%LgRdk6sEf}5*oNlZ>D5@{`|RtD>a<$UQfTP zW=L@Gx-h<=fV%V?=>R90jLF=g2M7GkC~jL{cbTftQhPc$e%d|YYRXu|C$x9-HkD|8 zR)xS8`W?jWY9|bJ1nR3~<~{F5h%GHeu8OHd$} zSeRLNC3c7Wco_HWZtM5&OQ&b28oIYCB}JZ;8{RT+0Xf~<_?-zHmMaQ?6*8V=1M{~p zzU2RS#`^1{4j=1|xr;_M%{YzHk!OQTjNSGzQ!Zt#y#sx%vY$-iqvLYWOVUsuqbKEu?U!L z9T7k6mE@%pGFWAu3E)bJdvfo z_%1CQNu%?GTsQpRvpmu%YKy!qFq1u|pP zFEpgOyl|E`ZZ2UtpTZa&qYxaV5b}P5ZnulN^&j$k5#lFi z7LcF8OuL6B%XwQNcZsMtYTw+VPrquPOCklHQqlT-B(U&QdcVBs|L}pona$p2X%FDV zS}pk9qkCdWJE=?rTWLm>(mwV0j~pncvhIDd7Whr!o~iFJIMY7srf;bQD+3s+W3CCK zX5Xu^}Ky(pdzTjr%p^v#)ixA6pI|@bhQ#W5`TGTW+%=0+sy5_l; zKPX;7Xuvc;CfpiH;7d@#w>_PKL)`3F66ZT|tV7m$4rrnppEzi+twK1(8>fwBbSVgb z2_FG2q_tbP7{mVc3rjw5;IbinL=N+p$-~vU9D_P?gg=aFXTssB0o-5v$3b3RUJ73P z&YQOL_P1_TJ?#(JoX$1)&h!9sU{)97L_NRWRaN~QxII2~w)5lpI4v(;+N&T(fjC`A z8*abQZ<}(99oHQfXCK&-!HA)LLCBHcB_ExOY;uK%-j`_ci5`2KwY81LWjf5Pahoe| zGiv6RSRT!{bI%g;ANEQmFuJ;k>$p0yf?J3Wk|Xtp_ZLFC=`#&kT`)lh@tKC>tXsBX zOh9at4Od3IE0zNsyC<|A{+$A)w0#IB-VG((G6*2Rb=ex)k_m==W~FG?%nLi0jxGug z#-LZL-)qapi3&Xs9&IP)SDirfEe*c8-$0_g*cOkR7tJl90WrD0|1T z4%vibJGS5T9Qus!_xqc#*YEk`qxyKp{XF-5-Pd@(-`Cxu4Ld}piVh~eD0opuUsTY^ zBM%P=8UPgMpKGLJT^@^j1Ck@`eSZDhPO4q~P_hPDfB;^?+7KoR030w?HEBci?4p?=Nv( zx6^FOGu>#~-Z*>`8sB>Kg>~uY#!U3v|^~Z=qs-n5Nz7Llxur z9warIP@Z2Kt`9nhoPE;7=73hYxZU}z+P&!jVDLB}ps__(2b_9CH%E-=TIWoFqEIUW z1>_E5?n7Z`VTE*8gIvShUp+q{D!0z_!vEfU30gxl^^r)^u%qOObIxy>cjjfw{vi7F z4Fv3*T#v*r(cCgKB!{g+3pUgjD@yMhy-!0VmA7l2j|9jqbG{4}G) z(>MCYjnncJWk|2}osR6ZeOX4Te|oY%s`~bMSBU$ai9wi!1qg9F9@z)uF1$xI8=_cK zvN2!hvmCcVuW~{NdHFBb~^QZdwk% zp6r{=*j~%1ZnD27Ik?-8%&crxkHFn20q&0JQV6jmeD;_j(HX}({+q~Ypnp0?M@ZM{ zdqSWrj|=L7-L&t!BcAT zBAW>XQCAj?-3h<@!=U6Xm+k>Xa#-|P9n$1Eu7`~B{4a=P84z_P@_w`4g1H1of6-;t z`7iej2jpNG4II>xY7`uMXDz?JoQOpbtvo?*%#f-2uKdi`sGepJKvj)<2qOG`b+y-V z@0hD2i;qJS@LN-JNDBw&I)UERR;Z${C| z8TDY9SFAMUuM|1s%|tdA+n|3!_x@6<-IcWaqhb=;7JP?BH6GB7_}9illjP--74HPC zKZ95=q!1G@f+}c7W*||~n$7}8!#D`v4=Pfnq)(k0_0={39M5Sm15=|#YX0`+s><$M z7{P%7Pa)ukeP*PAN*CbBzN(<(8>ZoY@Rp11XV4{(!o4Xg>*Hz5T+jNxE{;tQ_&_D_G?@*zQ6C$NapVDgaGIElp#_b0Er1Lan%+ERfWFPjXN$Q?KZ;7Hxi?7-TGEew>d7^0)3FaeY+;IFCdMw&pYbH-S2q#{b?5Vx>a#jd31QC#o)qYlIH zo#JBz70g$Fv|5Rf2#~%bP8sX^^>3dL=n5Y`$Y{E|OJ4`fx!{-RsK^yWZsA zkMKhgVW%2bJ@)?7fE5FT7^lsm_PID^f^yML3sxBQ@x3n0uh(HWY3gotzNGTN@`YI# zn?}c&6Wv;~7YIo_4S+0f&dY+29}fU#y5QH-gBFm@h-ryHI`)F#fYEOALPS{uw2%Eo zotF=F??$nIe~xp%<$l%3VF&tvWPMWz1)WR(2Nw@u#V+TDS&=;i;Zn$)!q05sX5@vF zva%G2zqJ19p)%Yce{t=U*?*=|<7Y6Y`By8`<9CoG(rh+0|-*5T4qCDK@QoZpad4A?`LRPYs94llTA?RU z3+n)v20|p1rjB8B_YvCmu~~Ajink(;^M+Lg57<{W-JsVoz7Q=h-{|ozNB@0c;pxAN z4@n@d#l-PnrH4{yyf!F4sRCh~)_Lkm38dy%pdb5lB#m0*A4%e+1<7;OXgr`LiE`(eem$)tTK0J43FX*-oIhFQ_RY^b0`~3NHlVw_3 z<6)8tLu`?)fXfOebf;bmx>kLxwV|mA6FZZxS=@?-?B2$CF?fH3rbb!1b$2y2(@e{N z32_)#FhoJa=v&6My9@vQL9VyJQ>JbIc*~J*4f9q zvBBR{>$eL zFfMTA6y2;#+3ClmtqBh(`#{VuYew`#qJU8xFfMM zC=A(%lIp)CcCL8)15&|Y>MZo>0I|(QE1_0(XJ{!chRHJ3sGt;L65xYhmQwM9( z=_^3_@!iLGW>${GT9VPQ`~(!1lBt8bg?d|Ct$vs*Mp(yy=-&fK>8KW144lp&G|Koh z5aefYZHPvKM#a!DdP?<_G7m{xP{{H=83J|Y7}6)Q<>LO8bk)o~$hQ0H)vI4tf|8qy zVY+JFdp5wi)<$$5*>|;K#ELG`+WXx&78TVvaj>xxU%u@Mede$PQqn(%L(aFuK>2*_ zDrmfc6fEKp%3r+W3^W{_9lZAZ8MiE$>bI_c$xlim1s=_|puwc{-4)o3D=nb&(QZht zb*)~1aCV>q5i5RW4k0O0ToPyM}ecK&qH`YkOT1eO03*aGihQmhAP z0NszO;+?RZa;Ml29|EUQqvf+76_*yMbG^3)+i!53#093!x2u{>JaWjpJ;e?mQ~=6X zLPA3Ff}tp%hu?pgPA@4?RyMFBE6KOf(1v<`H|i9bmfk3I+>7if@ggp{WS z?EE{Ek;?gaFd}3R66+@YZO}8@u60W!=B!T>+xON8>5ClIqmuu`1Q{H^sBXjk%}Yyi z-FSO%g-r$Ddk^Roa*)UlLr*N4QSlRMKK^{=d)*uMA-#0Y{T8=IS?~V>q1)azo<}`= zgwRd=ys$m)=d^B^CTT@;jP}|H(36fLel!qNPN=D=Z4`hlx_4{ByK*+9A6HT9h5iv5 zHDgr3e=Of-J*?5-Pg(t6D=glFVOx-;4;{~8$DwHRF6tffe~BwRW>88>N{?3ON1QbG z6kHH;+YpF$T~;F}>W6&8CVCr@*!SVVFLzK}rgfRUN`4A4gXH-V&LlBwx-@nrEuRoI zlBvTszjEWR{^ZXentn_JR5j4hrs6`6*0}s_tU;pj0SJ;Z*nJ|34xIR$Scu8uDK#$0 zeyFqhNN@GgN>QGbrT)ZD!5efF;LU&7J~b;!3^bf;_wF4<@<=&(dCQ&l;H$=g5L(P? zy*{{&pJ>;APflL39=(14{{3GdohxjJHFsa{A#~9Ca`xqo=HA|SB_)6_bpWEZB{cqh zxV}71Y($C(BneTreksObobQ5mWqlTCgp#ilPaBZmT%tFL>3QA{gn0sq0MH~LVwqjD zo75((+Kb%46OG->rDh%0P}lg@gk8XFgZ$iPf3OEa8YEz}Zf zFS$b4mtA`qH&M5;Srn6gfrIiLHdzE&@(Y?LS3D=9oUNeSI+EY##EKN7e9!Vn^UP#c z(N;`ml&52uE7zm(B^L^34r;Ajvm(Sv-TB);74ML*5t8IT!{nN#?vUX@`Z0SkHeS1& z3ef9Wz3Ic9cQ5-%I3EW&eCRm%4>^rhB4|W*wCxPpqsgyAC2d<&B=L`i9bMl3=BR8n z)@A%F+?lYpHS#xIp{?;xhg5|EEC}sFDsq;3?PV4iJ^4Gy8E35K_-Q zIqdT5HXR_#kKQXsRGOfh<b>*?Z_N z7@b+C%n2HkkItm!!W-wmDNiMA#yCGZ+b8ZwYL>3%aZn~{zU}W3zap{eA-FYH$7Zep zw)R3V>mf=#I00#M>246r}ni(UC8y#Hfr>Rj{n!-=A0Sy^0N zzanMS-A51td2k9Mm0)UoF$vL1aQ?W1r&{LAn-B?)i5dB^qiwhdeX781>Ere4{yd03 zJlOQ)dd>P^o^OHfS5I8N#q=?8%QB$qKXWb@n-H*Q?->vdjj6TkNO;s@W-W53A1$FuauClq6vO$VJL zpi*q52}Wn9qYJW34L)T9%&@~sM*WcW!wdWQZ>wMcXy|KmsQWP!xX6b|muU!Tx*t)% zLN7Y&r{*!uGp|>u=~P_E`1JAg(aJO&r}@)59?q7To0fhm!2J$qq{^tf5sM`|2(O$x z9%d#IlZaBUyE}J@;IrjZu&MtbCUrsLx{GYk0$}|24R4jF#pd}ozc^^* zB~);}YI%G#G7Rq@p^_erZ_0iBj6Ps3B6NpIol^LHqc{%9!o8r1?E4x+?6v5u=*-n? z{AFf&asTr9YFD$i)T{l=Z(aPeZPC$H$&=N{91>SUKGdxH%Ar3Bjb>%IO^zYlqHGJPuD z4)LLh11Xf!&6vj#LdxI1aCHpv@ounMi8QwK!@1WVDPp;cd_ik)_(bvnd{W>hSGwrQ z7DulBF{^=otxeIbh1QS_9pvi1+T_z!nM+YZCgM3%Uq4U^Ni*-WXG;f)zoPM79LK4E zDk-=iPvAc}ctCMH*LTu`0HQ|(<2~zA|CBJ`f})335U22-`YWrFqNRdE&)-{Cn$pwy zGG0-7z{=0m}y5pz}SKmKPkKnshnHaRj0gpa;;pWuRAfU zyN26h;nUt~OW|#H#7gkc{%>!vtW5PU-!HHO$)x=L@n;ov42uk}_Bs?NUN_eW^>wJ- z`uT9?<*}o`q$q{~$kCQJolc)A9?5EeZ*%+i1E9 zsK-|n(o8=er~w6~YD2j(q9Zm3{(KS_Gpa4SHIfbd7V2`baE?#ga~J1>o3$cj(z!M_ zENd3Y5axc%U5DgNjv`+T<#}PnqUlnyMu$~Dy-6YVu!A!;0!Y{Z8b*c$m1$mf_da1H6i^j@cE4Qk#bi5bNe-HZQG*D@MJ&)v*&hP^^Vn96OBoG)q{!<`M zhFcV?UzqitfjrI7I>WTW0&Xy+Bswi)@&2q35 zJ1NxzoHm%Rw2^k=L5J`-V^a_f`RWnJR*DD#D>Tj@c~x~}e}25+&vb@|r?sNAJ|TKp zV;s~VJ%y}affN6QryoAMgQtJ^mc3J%+OB>zUw{Fj)czrZfgL)_+WQ3bmlq{ol7Qj> z4f*6`Qiqi2}=dpKUMX7%ZxygzRYkLGy;jbTY+Dv9fNCoPcIMr%j8 znA>v`x)tf>{eKkhg%9X!Ta{R&V_dW3wu4~NOCgfnw-7ePGd1}C+!p?h?b z@At7#ZNmnpU@D!3A?e4VB)x}oY`zU~y;)0qnDE?giO$l=7%%r)y6{eiV{sy-t>n|U zpedW+9|i9?ImK;k-KUP{Nx_5crJOpewGo?|l}dX~pmsD2;MpK|MeYB{zV4{0?$qm> z0n^I{#zUXTbW2G~;H#QI*MJ={rQwigdGfGpGq3CR_6_-hmeH7V*5{>%G#!m4I&W!3 zk!4UF)5>S|8Pki|M?FDR;CWIL6V!WQgV7x}L0q|CW9O#~S{pqlqIQNCNY<~LzY z+9xA5&JXl~ycpQ|I5J92=9#zZc;R9!HaE087q_$RFZ{X}GS*);0}xNCZ=oJisC#!q z54=~p`k?mxMYc=oDxZ{HjZ@|`a@0-JazoUAD}WVAH~|PUG!wQ5&PtAsX>CvLPI&j+xUleSO1B zQ7k7SUre^iuDTgg_?qr5Yxa-jFdlw!?EnX8zEvH4slP1$;^FL`WiR{dayd7DTGn>+ zvuAmx=VzO2Yw!`FnnRNoY0hou8@+V6PL$bWaxCjI<*ao#emid9p-oBaDn+E6h+Xo# zcKk*8I#`~Na z3W9IfoZ^$_lDvIX1=9y{6{%0NOo@s8fM@iP+^vhBh0Pv_~shlsH(tWD<8 z=f2c&d=MCk3;lFFnT*&yGg*D~onyjqLKQ7FkZI&PNX^8(8Gx# z**y07+7E90my#u_m0ij#Y`bmH5F~zMiv5lx-FcMFsqJW*q@Kb;bWZzo zXH)t7g82hyH?}@J(sIVQP;MOe&z27h%J{XHQrgdh1BD{D!TCOS=KYzO zn;`SiWmGhZe7ZaJ$q{Ta)}_v9V>EEoPHOud5BHt1etz5iQ7!>@UA|T?&{Ge#_nLjI zdsM`*_AGSex^fh!x#<}aJ3*7A^*D~>oU+d=zVNl3K8x~L<}$ACbS2XAB3n|^me&2k zF(I!K#GtjAAMK~O#@8sMwb|b?B%mg7;jV%rOLo8Wy}aPCxBhi5yb4okuRV*6+RR>e zN8QUmL%Q`|JELCEE^9b}hXX~5@)l?As}-85jh*@N=GbF=-+r2mg+)yU8=6h~M=$NS zHB$GWP)v;EDT&KxyIQ=6P?pIX72oyFeq`sSaa{8M?fb&nxNTFYG2b{oJb7U{MNLoC z_0iry%-5cF6zYx6XnOA%a=h84k30ita<)-j2OSIlLxNe7Nr&oX`876G%`uxW^(RH5 zGA2a&q ze(I#&@(Q%WE$zK_-bJ9m*>hMwS?ZOw))z~7t}wE_}RMjiyCZliE&Wh3?Hd zSJ{?&+(q&!A-QC<^Wu9t4DRMveC>M6qYvc7AiG5T5<6nRx&gso$S3AEBrv z0Luu4`r_6%J;`)mkzKj@LR>_ag=j=T+o$4-T<9?`3=7qa-%@Xb^lM~MWt>6iDJL)_bd%FXT2;u0wu#F4C?h;Pi9+T0 zQr}s*`90dTf4el!<0nZ)dA?7GAI32kQ!|%f`3e~?%9eyxroN*aV~H7E^v1TAl)spC zh*EKmsxFd}CvhP{byl6-UzTiFfS6%+C|zvxxtyElC(G( zamg;yyX~kO+ThSfp(7#&)hhVOf@)5f|I{74N}h}LCfm>Up_odabUDuV*KFUpHG158 z)Jc@Wi)>b}KqT zg6IaHTjs0R7@)MI=ewy0;;$TgS~c+|MG_y#Zpd!gWvZRuQ<-(+8iVY|jjMB{llBYk z{!4c7h&CmSZL39%_Wn5Cj=iW~cbh3nGUN-?w_JZ5*45s6IM*4K6ra&Ez&Rj>g((f+ zInyc5nxk3J;Te%yo@;y|`T-@yxoM&~V_1w7zW#dao`(z+73kFv;sh%3y5%apbVn#8g-y-+Zk`XHJG&o+T4qT( zV2@oQy_Uq5VmB;js5g5T43y?|4l^%JnM)Oq9?>7YeY*Af*6IL7%A8jv)#8NnTc5-f z&AMamcPr@*MVNW5d5(?xHsbfX*}g`%TVzz651g=+>1R*j(%nyEjzW3$WjeYJ(+#l) za%uTq?pn@tQCspYj2@8>5Hr*q{!}IzK8X?vvvszYF6?J5yUW@AgnzzcDzkO&ChrNo zvh?`LwEkk*Tcam)+U^mfx_g4fuIqf&H@>~EkH@RW#;9KbZPiRM1Gdd_?JRi|)dWf; zaps8p8D!Y8w34^{y1F0GX6NofldT$8mSsf0enFV(FF*MV-}pj>@^JmQIgro4A7^~^ zcQ4-P!>CoK>AFyuC#Iz_QR01dlYB@U=}7q4OHVue{q^sGt_=OISJA%sTW3~(SMkYh z7!_djxCi>vQ_Ln}g7i8jqU0P7pqedtD%UrO7zOuAJoPSl;grA{Z#N`wsONPPW^hTI zhni&ntJ2CkjbB6(`k^t=Y(viEZ%zn{hirvobrjVySFRCtsTTFvjI>kP|J-uCM|tRN z3`=*RN=2zzaa+A&k^D@~6vc)SGC|BDVFeKA6clJWkR1D)iSBxJGY#^dL<)n zD5No8uvbs?ju;1zoE~A-UTD|Npll|8{_RQs=qr-vy!9ViA2dwvIaFD!_ISOH%K2l1 z^~i!~dsb@6t!qj88G6nYJyQGn$E)}v`PM_C!&zE0G(H}xt>XkMfC;XvRQBWe?S~h2 z(8EXLqMUhqCv${#B$U(D_92(_@a)v2tr5_BA6!~2@h-e@kejGq8=Sfb*L{@p&J7NU z3raseOJ8ZYIcU^nUPy$Jk`OdB%U%+gJ|8ts{ygD)a|y0k2t798lI@osi8F$AE+iAt z!(!biqCh&T_g227|59}*T8$PKX~0|aoM#zspYkWS%um>Whtn4o7~?s z&a7HFr=tlQ0rvw|SY{lXXtA-*8ilvvkG~Z?%UVcq*Ynevc8d$;bWbuk27E+;nTadqVs0A> zwlbH<5@Baaos*SL)SAzJJo5#BdX4tNQ+lNgqTGf40Tx!RSgZb@3|#gj%4(T~st2rF zM`q0o71W2qE@?^aVUT@i7nx8v9T+wE$}WdioD*Y%W9~f&@0M?y|KkO$iRgNtp5}G+ zHNMH*e!IA z`Xwp;z9fS&G);z$Uxba0eKz|WZ=M9_x`}5xKgPwfbT%jb-QZOiObdox@hzr#PG-!wKo)bhHTS}W1E^!q zJ#EZSyA{=+5>O9yDMW{w^&7aE{iImDw7Dgo^6>NR3E>+~{6k}4D&Y{M)O%UJa&T_C z?;MWyS*2Ev(zUWnWT8~yJ`EE`Be4w17cVM5bl2CK?gja&$g+A}?(%oKQ;@%*Gs&By6b2phb@VEl`(LFA_zE_7^8%oEyT4_GR$ zmAf!`$^CBY0}AjE!r41WurR#lzMP@K%BNqmer59pMg{`S^E+=y;H0#_-H_=kJM*6~ zL{@V9?_5-<=EC7*{kryNcizoSV^x7ar*)}mUF7h1$Kf(zx_o;cs5C}7o4@4(D`F5_4S5a9})-9H2N=fM`1am`x(4u$B9s05nCpw z!Zp6o97Z16K(X;P^@L-KtHONigOm-27i2RyRn9wqKk%YbFW;wO8hfEA>+#lejnjW6~+{1J#>-JdRe!@3Q z#CRAz| z3gKaEFtv|>i9TT3g-l2|a$u@0G?v{gddG9UR)r$~JZN~o=nKupKN59hz_JB`ttcp3 z9&NlugV<{UiCyCb!D>a>8*|U#c9Pp+eOwvk@*h-8&Z*IcP2eI!j%{VCzYSuymltdO zMEI5hIeHK%YTcjWrE%P+J5t**FPao&eoyX2p~IBCW#{yw=|lw&`1WQb>67$Qu|xWhkGIL}T@C zGv6($`GxPm%1n~YFq8X`-!aLT{eUH@IKxcok)B`gYMM0o@jHjX!83z$)BJ(LlnvLA zwRFos3Lo0GujX}&t4_^YhVFzXRsl!;lWg(hZGXk{G+mmo)>uljE8LF|+;^LI?}BX# z&FclZ?6ERxnG1@92R(k=oRgk`mB}trQ-mV9VA^lIWUiF-ZDZ+k=iQfqqVYwX`h5X0 zQI}L=n(wgFVI@0eE`utK{gp+9QTrbK$B(AA;VUOXu($H`SP(UxvA6TZb&+aLDM-xzHH}Y6snTa&6<4YFZ2V3-u60XS9cZ` z;oq)gR`DJB^Q$P-kvlRnGQ&V33I^QZL~EiCH7KHUxo>UosRo<~g zt~qiYB*=M{eiU%4SgZr_Rki%=2N3EjOdpp1SjP@K@9AzF+)VDgpsVpT7;ALY0)VbZU;(G&Jz$8~?Hg3GsP=PphsiPqW(hT1sZm zV8YN&(m+ubSlz;xbCj=RX9PI*&CYZ&jL@-%zRInGpbtH>m6;67^9m)ib>(qO+q$tW zWSKQWg39GXgP_E>FVlw=jFQR1asE30|EkL*Dbj+x+*{>Dl!2Vb_-8+|3pTlf6Q=65YA{KA+wH>1}&CEP_KyEBrX8lHAw zH(e1Zck@J6Zh}Is(YFEgbay1qE+P%_)7)s1ArIAvvE6+%l&>>j7@1EUikPgTw!Z!B z@hv}U!@PqhFCU3%!n`kTn@CW(pI~jy)N8z#c(5l|+U2H3JnYGBjCS@#T@iD_Qi)^r&Xppv-e${rAMuT#{jC5kZ4L)st zZ^Oz}#|a2dtic-**h!SYsW-l;IEv6tbY<&5dkmuJ`gtIgo(1igPV*Ywe_(eG8sZo& zm(KpGSi znaIQ&??rqj59O|V>TIy_MowzTe!N|Pna+`YB=1!4c!r2)Dl%r8b3hBcQimx1iyRf7 ztiO+!wF*0LbKLl2+15?_O1exA9yoA2{)Ol8=;*DC46Sl8cH%N0 zQpNfWErEx?!I|bquwEE3@2FqscmGKwX!|eexD07 z@-Btq*HX^H+|yGn*)q;%OC@{jSF(0+t^}mwDfc_rm7GFuweH;Y3il#tF4&PPL6WSHMDv-LotU_n3x+LawvsT>UtI5*ivctqEAxeEoziQ5&C$GfHY(X2&2u+Tppk_360#Y=rqMm|fe7VIXN*Y?kq$Z^j>6S(l$%^D1HfMp za3E_yj9ji6V`koGY)$9BVHtkqu_wu%0o;la;C%Gb5VC}xGeCdxD^zyehvN^}!&Wv2 z`m6YomJuO`my&=SPII(0vYt4o+V4CgYG@AWu-lSo*72aba^c>(FGo^O&Zy*~MT}q6 zf6uy|jRsG+_xME)E~?@S74>ba1GcqtD1qGmYCCZ^l$7$8sPOG78`l8OiBE1QXPG1& zYVLc4#D4w;h2SmN3U9(5kIGS%Rw|fG=Z`I~JY+vCXDJks>j_`G$P?X5Q5<}qZ?g{k z&tq3DEi-Sw<-7{KU*OF!2S%R7{f>XqFK9hl4Jx3ICwlTTdM&GHu4EKi4&5poe8s8* znp;*_TTBh$oLQWgrvl11r_JYQD-Qc$CPREU%2fS?eqR(^8;|dqOC`LH9I7RyArNiP?+FNqdtoBZH1$4WY~E+%6Ry=k9l3TF+hG znwo#xY~EFTu$~!w)_TTrRVi|ce$d7=*WNY7g(?xoHKuc37vg;A&w?~)` z(sK-^*7WC;wl>R;??utyYls%rfJUQ+LWgg{>_5}mP+QA&wI5LNl_jIVFVlTm+P#Sf z-dyO_XQVZ6uRPX)=DSwFw~{Otm=Hjwxx^TcPW6#&MD`?z6tEm+l z?BC(@S^n zohy!Bv4phMM|R47T-qRZE_21s{HXifnBLhfht#eNLTU`04aS`%tf09pM1+;NNWEg3 zE+x@fHbWI_m_BMtM2d>d?kaW8ua6P$e-I;Jsa?8hXlTdQ+TD zP()vE9bEzJwD}ytW}<{b%Zz22erc$wb^Uq^M5uZb=cV7wu&jj>s=_Xsq~Fgb52f5j#MUf`CFe#M5WMgS@ zOtk5qk~QrE{poUptlgL5A}qWKS<@)9JUth=@UD!Z`W37O*zkQQ4~OeJQ(Hcw$3#?q zTAqIJztR@8TYE2}P%nQ2(}8C|)3*Lf6_0=(K$G=~f!Q~=>atIh`}l!y`O@WELce=V z_ynhO+Ul2rgM*c+MUf8|%P1Gg*YMLVRJZ1%QtBD%Y^Noo>?je(tdxB%E`G16Ga(b^ z$oh@{`5twbNcqz9)syqy)T+;Vrbq3t=0a<*W9aWOIH4!138AAMOwVHR-u0!VSszvt zK1-d^m&KTebBkgMy`uX(^Giu1|CvOWD6zC#g#E>%(byp4cFm#yxMLqTC8 zY-6fZc=k7>aIh4`YUWZ+^>!kV!y07#l`2B(zc|&E{q@S`+7frq@83ph*?PXO&+vY% z;a&1C24;nvAJ}3!&sQ3)FAF|g?0xb<@XRD9A%!a-kha+f5*w?)q-F7;;s^zvV0)LA zy80#a^3A*y$|dZBW-jm~k9|xzlG%lSVY}3x9om_jZO+J%?wi%qAV5jc!T-6<{%dwu zgH!azY%wH&)SJrnz3#h}oO3BPNQFd3=Q}gYkrS^pwY)8VMS1hVPsU<_^-{6 zKbaJDgn#@OBwN($his}V8H*z)3nvD?+_g;P=ndc}CG0}t6V*69O)yvx`>l?4e3Xt|D(IRZ-vb&6Fi&Cv#6o!Miz>dKRDB zgL)&CvyfI>TWe(V+79pAS!{2fDxPfDpb4J->(kt~S6xafH4&NcF0J zCTyZDxel}o*u-L*N{%c5z&ON*y+{hwe-zF8fc-oSF-QQ7uw6Cf9g&vtwYa<0pXiXj zPAnW8VLF4@GI^8eLq}PUmyJ(aoAPCDv}?bJ*xJm8F(fTyH1_0srjKD;_&5gldgxHi zJ11&Sb6JbtMVsVxhvOd(K(Q}*=&!w3qJ*CCshGuum3|yPL{+|N-C8-F6B2 zWQ%rc3vQse83ZCd(wKBj-Idvaz?c}0CQkFed3r#m zQ}GwzK)i;Hg@wg-xg3bkfl*Ox7v5PsW%7Z*h|Il*@D4cxc2(4T%qdKnCC{{XdEB~*Pzb0Q>z+#aSG*8aLg>k zOL_Z|vKA4-osO6!COz~9dSS}5gS3ire>QLgqJfF93P4+Wu%yADJn=evFUni^zmg{R zSDz{%Srh*@c7Pi^Wk{9Z&3yfxHDMwStJ5vI%$vCE=GxQV(OGDnyaD2B0SLp5%cPUj zkQH$*5TC0dIyrY5G#W5^FiYX6k*O%UBetqjKLmPX=0YocBgh;N)6o~2HLAKijZ;Na zoBf!SIa;ShNik2lc@DN*Juf!u@%B0~zGByHsEF$gzreK5a-d?{&vCqMrc!=8Q!MY_ zso7x6lmL;$iP;ES6AFHgO4xT!>?upjv71&8=P?Wfma-%$JnDjX$YXww8-mw`j%08T zsftTieFLG5^6-EcT_`-TBuJ)pbXSm|Vl@*BqqxTE8FiP-`KAu8>Pe}|NxWipRTy2u zkS!U-KLaah)rJj(R86wfBl)6U!Bwej3K$_hKR@QDlai9}_Pvap93Cf84vr1UFQLu( zN~J)Ql?zKkM6X&yi|l92*c(Ekqx+I}UX6rCcA-K;2hQeYL)5urv)~|)F5l&(#g;_uHk|qzaWJ0*gJ&s zkY~7nWy8zSoEzFV8sX1dl8SZo{~f^cqHw~>K|X>|mu2crMS`|{D0;O+r@1Ok?5Dfi zbsE%)D->imVZHFvJR56>#0>Hx9~>pc7m#n7UnruT-E}jEJK;jbb30Rt zus#1|J5DxN6XNT@kPzLcWdMmcT<-2BT6s<>{|2_2+|eVDYD>r=o?%Nq9C)Ej{8}Sj zp9Ytxyd@;vBcldCE@a}|=hqn<9E9+DP=O7dnUCX%`oZv#R=F&9>Ff2Rs&F9Tx{p{B z5JOpk9U3jNP|rQsi(%Qx8B@PYe)yqNk*lF6w?{GScKikMnIdNz7QgxuR~o13fzLB# zFfbe^L^EXTM$IZ?k+xjlgXr8^VB$`rz2iQ4s9f8M&`XOOvPDnZ?hJ1hQ+l%de>y^H zIR*i}u6XP`P=4~p7j*RX^A}-! zbbC&qA|nZW$I}x&LckF}Pxj(k7Vu$C^P4>=y#nGCd_6Tm7b3+;`7pq#=2t7Qh;#IM z3w{Tmpc&!g1-`(J1iXHHUItv(%J6X3vIs6R<>Sas`9O2wdo7MRG(+K2Y=22wv7K9v z-~(;zW7paxDi%;j$`4I z;3cHzm*?c%?*nnE%pTYvM(g!5#6fz*x}}>}RJ8Q#l{+GH&s9U)pT-k*FM2^8zqi_X z%Ret?7PsBFEDIa|Z3mU>C1);MC)jfnp|KHu;-ka2p1BlMo%<7u%i52>nA* zwlRWN){}xpUB3?`Z*HsfgWRYi%+V28wW-+%R|TRT#~ab^TaF9bZG(dr`Sgi&=KW=w zTaf*dRZ|OpVAFE*9b`e^I5Y4&lmkgA)%vS=vu2d9l=U$wf4NYmc~_%rczo0aZw$N9F_Z5Kh__-{J`;roZW5Md)UVMv#-~RKe&9tI4m4j zv#*t^*kD$@$#;tyzCHy}|HLDb|bJ)<{mgBpLxrO&(`w3||UUA|j{kVpaD{)%nnv*xR zdf$t0PetckcSu0JQQg0i_kKO?BlgjRL^qaS8wSC)c^`QM4-#IpUIDdSqY%fr5unL2 zLpBza(sV$no6E2@fpiRH)Re$s)E8PoM4wuE+&3q+_)qOOlZp{@9R`MrX?6zT&3N2M zj7#``UdRcuphV?RqP<(TAbHmk^X%ht(^ujy#jMKk(_4Zc9zApoc)dk!t2a#jlyR>| zC2;&+?6^K@b1LB^&%Tb^x*97X&yS+uF=(cDoUgg?xa{#7eui%Pmqw)BW;^)8a2RNu zk@*dEnwG{FXVk5d_1b?wICU%%YbHe1O^q8D5u(~7u|D+T)O3F#Kgef4ePVE7-P_`V zbFyljhhvM6r<*IUZj1b~(4Dc#rh7uGdn6W)&YCiW)iJx3m)Bg$#g7eF_OsqgFI`p_ z1R`#v=uB1}dl2F_YxkS>|{lQnQErY2OdcAl=1TP5FRf^W-c!m4#-5S!UY5`I}Lq_fxX{P=JU z-8s9kJ6Tyh z@@e3^uc;?AZ#34oo3tD2$!&pL4w%90=rSpYbcFYmvGLeVsjB6fgp;i(D=YJLwl8Nl ziE;O!OPy+9@~W?;{J96=XQellc8+}YObF!F>z5=P3%7Q+CCwq0FhuX-2bUYM=+#1&zYhO!&^?|6~sdSNA9w zh3EkG5AD6KkSFBM7v!>v$i1ag(s(#S5vgSLjKFuj2Qw!QY9E52tyT}RgB5HO#;j~? zAwa0^dG4X#_^zucn^5=o>&d+&KEJOtVJpX&m?F+2ON09Ls>zb>$s4d^Rf3!fE6AFv zSXo&OLl!Y8D{D4Y=^SEZ8kBr)A#Af?4nukAbXKt_K{Ec7D|eg#6=^{ex@(WV&K}``X-m_ zn$0Ts#NWpjYCx;^B9P)z5d+Qz!*E&v0UV|nm-&~F@46oCF!=Ho=J1PadYg!JjI^Vp zqcO$lKQ|@(Jfmx!NPDE2JZHSG8}XxlLd6efi!vYu&zNV|G}%mdD|sHKV+Z2$JXCLL z2EY4^%vI4*c`EjU7QM82>!ZBrsr0vdsh7FEqTFZ3i%wmyVA5`BZbIF>11N3Hkv9HMx6u-IkV1gi`;_E(Nr<82duIRA#;c zRQ#8I=oKme#uaPAduZe4cXYV*lunJb^w{g&Ys7W^bG-8eq&ab1tjQ&|z%+1EEHbKa z!8XY~CLw)gxh0h#b&a?N1c(M?uFo+dX`P*e;$`8aGVU-w^n|QZ^98<4>HljSFySO7 zE+h%PbHrk&KU@w0a2_uvKXm3OfIZBLck#6*(w5JQmv4>#BRw>h`ca|r%+8s|PX0Y9 znsF!H3;Rs!Hh5baOJ9Tw4hqtDI@A9RTGenMq;63t`lJ7NdDFFL4^?MPp9PHV4sk-< zpn(5c)x=8oLKt9_VEZ8)$BzEvM(G{XSmqJ8jFoF&4fgd>-x2tHHgy;H3Mc{u5Vv!Z z5TT&H^XKMtnUaC@;sC#5+G0fo?WsNhmm-m-Oo@`I+ozr1kq|NHGjD=|)G$=nKJ}=v zGb@RuEPFAv>xRAK$v-q5!a|!IAAgwO(|BCJRuRyBPw9GCJ5hOpkYw)+ zK623YT}tc;E{)_;-AzeqAr7Wv-TCrLU#h@Ov+;h@&x*jT5x_~gI;7+gzzGsLYtl9z zfXDDq9^%hMc_e&}&rv^_v8^6z+Q~N3XW?In0O>Im+eK2B+M&n_TO0G7)C z9S7$;VV=LdTKul@-|H(k{-Y;*F7#G(qjJgn@!$vk41KnzAG5?uzBroqN(t9<_>aGd zcqpL|(Q-wd;Dx}-7q||SuiXyX6GH#DG zY&<2yx8E|`xuKEU8xRG`qCB1}{l5kWBp)Q$m{@Dpl$7AEnbM0IwX*e9x@BirmX&3~ z%ai&#FRQ#7PD+SO^L$eNp_A3xFY2-&%YeoCW`*m;%RDsid2giqbGUAVIIuE{vn|WF z2#L)L*!Iu>z){oLN&$tMW=9G}0E~swX?<1PZ!WT6D%lT7pZZh*;wr#x{XIHD_uH4P zL5_s=RqM*|fQoSBdpBPmz<=I@q9+o@-}+X%7V01Q>XMGJbYgJ(^NP~$Tz>2{&wmgw zkg44qPWbgFckl9roUG}16=+a^d2BE9-z1C~0}B_beG+{i_EcACGCZbikDm@cjQM1HpYGo*~nQp+U1SSGgcx;iJpd%r29_ zuz`TDqFlq(wBcNw99Sp@?*K~a$X0*vST`GGYfM@%9gdAP^keKD6YZdq;6tb1VXym5 zwO%LH8wvlb!pz8^rMb@_jm6dT1_4;7{Zf}!Yu~}u-@Da!{>deBNX|<*Uvf0WZCT7< zBAJF$k0CKm_yrvL+4r_}DN8){slMeiCT0ZAisZGjB1l=HP(1s<-bj4=C;Fh0YX8d~ z!?3SdZYFWzn+oszgoge+dd5O<`ht?-X8vV@<)QEUzp$r*u?s1G13g-8%RXM3ev?7` zl2Ke#16IPrbbQm)N!NF#m$7WZA7v6pJz{t8yVXM~gxtKkotFy@%42u{k_>=FJz9p& zQTl|`T=NT@DNd?jTry{zTcn@=^A;P<<-g$;Ff55N1P=bj0xV0nNuALi#8L}R3|jJS zKE4B#1*r>K0M9hXFzjZ#x?91pM4E<|pYJZr=j4_Y*+=4hIAPuPK|)YQBmbo7!Hj)5 zKVWBU7^*Y0ua5oHYjC0eeZ>F4-g`$?m3-Zzm?LV7Es6vaU<6T+986$BQ4}Pr2qICk zWE8UmC1)@JN)jYTZIB>29VDw{4ncAfxU&wn+Wq^!ckg(A+%eua-eC;shQmI!YgesW zYp%KGT3T~qB3^f_O{eCZ+!Z7h8(DFbf_iKpp-k}Lp2%OR8B?U38d|Rzp;^nX^vn;E zgZ=HV^z$`p?l!bp5{`p$MZ+R6h&lvV)U2k~1yh>$1Bq3aR{wtuIn%Be7~zlXNgz zNhC(zt+kRm((7uJDR2GsV%$6fXHMo%PUjJ@(cWfd;k6-7_0;i{dj2-%^-Vew0jv7X zs8}Aqq#4B=SXQJv++6!bjaCwZi7QIA2>{jT!_tYZ=NNk5QSu+<$osK|D&`qk3gY8RHpd3+zzO}6~D#Ay6o z*^j}5%=yfG+IM+pt*l7V^3Zt_u}CjHA@m4D>N-&?*X@yjjHXaB)Pt4cdm#_r0thW0 z&0fx?sYW}piYnSd_Af6nb4u^n!r5w>8L^9R6T91=6!n(cVg~=335>N)yGRab30=hz zCEUr^bFT|jIfFNR8eR65lo|9Sd=vVSzQ?Rv$m5IJVM>HB=>=XM z2v2u5I|uXD|2OLp!eNAU2w+t6ZT^d6ZYQOhNIQA`ymp$Cw62RoM8If;X7ohnNTpxGA(7jYu2;fhsz}iy@QQjdeJsnAHbd*z-xbM0$z&;O?kbYYZG! ztU>yU7PUillNKkUv(gx|zQ)~1&+%7tp7Ot7V5g|)>&PbFINuZ<_j=jHiwN$W3YhQd7K4#g9 zv}-F8FI)zr-SsClz+FD)#&NZjqB(S{&?u+>2t(uff9Eo|>pyMww2$6_{NtuC^J;p` z){9vuB~NEFoId)jfSKomF2eH5=AjQRc#b_vVCHQJ|2Ge=b~oq+r)_SUd7t0eM?;al{O#2&=^g)KLslN>%YJ#ni{evPnS#d@b^G8Zh6%lEj9;HU zd!|_u9D|6Tq8>|h!W+h@h&zI0p%0mJIvdL4z!#wkT2FR9?qi(Sbju1fGA zi3E=x{eP3T#-E$W!S(jw-ZA2fB7s;V4V`h;S4$^egoXU2jKX(;ZnGtK4}PWZ>FW;v zR~=KfOOYSHpWcB3H$UknEX@6zT{#^*rwKfW<6x{MH-?@LlFU6q*$q|$8usw5U#S0) z2H`cB`DLg6M>b-|CN+=w1&<0pz@aSaT?OLr&NrEFqs@9zZddeWjk(L5S*pC2vuC>h zYC3xXuQs!f{`*|q|ME9sps=`mZ34G}edh=E%M1)%Rqvt!9cS17pilm)8<4o_(PmQM zug-Y_{QD);6(5V;rhNom&Cp7c|53l3CY;HaPl^q`-ZRTQ55+Yn=d#|6 z_^i~Js2U2@%*^bxuZg&wb5bhf-K-SRMGu6dGe61xHTvYPCEqvr$f$-Yv}L)PW6tf~ z+um@ER(oLIwlRJ_-O&qzo%+cJU8{Ujjlv^7DenRY#khaLA&yTQVs}A=AjB`aE@p<0 znlu`O&-St!%} z52il~!r9q1{X8i*w0PGomyDK|m(NYpREqXn?7v>HeDK-ii=Ucb-JcOoMA z^sY?#2$`e0W~rZ)Sz`o8GWYzfEg@Tf_W|NYmi}j<()Q7XUGpu^hvaT|bMEGny*uRI zSo4JobVt0lE~W2m-22_chv$0Su5qLET@4v$K29|X-Bk7H9LRfd>-}ETGlLC+#!iR_>c4GQF{{xSKx@SOry>7mu-eLTLlQzA zWhRvNW1B#Ti4uDnq%4-=647*?3nt>#z#{gd*2n%PUduauwzFPs5Z9)~*pIbfBwD-P zbLO?qlPZ`Y2df(t@Lgcl!$w^T5hAdT8RZr?j#;NJa)*3Qz|Lwntr^lrM1uZZ7pz{^=|7WNWy zzk5TfZS8fWN;_WMUB3SE+>BJS9(<&sq2Z9_%=FaC6wOTAsgpMnAUqagnrhOyStZrX zCzs!qUFGArfN+wbRZ zQhuy$0sub~3!{ShU$>WN(*8Es=69gb{?wJ)xN9g3{t&whNxt(A>T=PldI@fvr=11w z6Y{NJk1wB2Hg%X%*Ecv$=*DdmK34;49!Ap!aedEx>pF>J#~#$*Xm&b#;euA2XJamfYjPaU7(viQ&RH^baOL1WEA zDp6G|Pc%?t=(R!B2DL{m+2|#hV@F}amaL~GC~8;EX_8Y+HH)-3;m6-(U9l$FYP8ow zZDyj{2->ADid~uI{m+M$09{_f6Obs1$?ScHkNh^hEDZK5GuO5t)TG!A|*u; z(z}-Hg-o;pZ2l&+J?<6mOOw4CRM+E~`Ms4pq`435PPMB+X3M6*Q@S`JiZ*8u$F2Rr z+9mvtuU{|w?74IcvWI!D>?f|gv!4?Z8~}n3dMQXDBeDeUn38XL?*@akOIemfLErZmWulO~ejC82hZ!L_hha*LNHD(g+)W&jP*&Y+$ig z`s3SqRu?Ht^cMN-jmGIddZwoF7OB4ASFo5g{P%81MPd`p5&CsGiOG#f?)vc??613Z zYc2pAdS_G?IjMrRF?C>G2H6o1g(W7n6sYpvy@@+^?hG%pI+Qv|S<#o1f&=I$h&?+1`(g)sgJmA>?%sMo$`39M zSwfe%P$yw{HsJp?&<+uQ78|+%kAl|KnN3YC-nEm)Mn;zv_pL2bN#yy(x8nzKx)COy7A!n2Vves|xsqo;XWonFom0a&^p1#&fgD>j zbwB&P;3;eW=9YIBY|%=I#q-}h5%}i^(+28zB}-kb-_Y4@Ub`T^F|f4@2wo4w zw{`h4Oupg&Y(^I9A6gzF?Z;u3s=~{bu3hzdVQz$KdaW+! z=|E=LB>4cl>2b|e6e{&wA~!T?Emrg9l0&j>o6l9FC_J6tU#pjcrGv=CeXv-#L|HBE zhGF{D%a<<)M(PawR(*qIRaYHFdk^;vn@Qj6eW*iGHkiQ@c!|zb=s|ljZ{6<~!+$@x z^B)=XSfR=PHi6FZViI)k%9?hwRJ7k6f7Cf<1;zd9n$U(@q|3Fp4WUin5DBC(i~Z|^ zzOKRn)`2q;?Yv~Z+h(2&5>v^Tp3niKp2OOT8kzX<2&2kYaKT>j8r^Ve?#Kj~o_TCQpqq2H_`jDrS3a3gd>O&EFeFSE2Nl*F|CM7#jAa}TCS3xXO63f5tQex2?^K8z4Sz5Z%J--rrKmI_1dDE|C;g6qX|M5Td zZI6<`$Jh*Q`{!%cu00OispY2=*?=A{d1&Xokudd9^W`I8`0P7m;q~0qCBOS$HLblC z`k+WN+#H0-Sn#Az$uEK@%75jf`}V!+IgWDC!>wLwAJLQT5UIE_p;Dwzfw`>^d*zrP zGbhYYINSHni|EB%hW{EDi$h`3c66S1d5IJMt63^LKfgSOwC`3l%{UuQX>B+98l?WA zq-E?48onf>1@NO2aqVI zt^L}x>=Q-yGO3;7pGP5;}~w4>_@QJ(NQ$MJwCX774Y9gkv7F z$_;erRbar2UkTnG5)lLKm(o%8{CWFls5t9Y`4)I_C&s>g8~L_asGt_i_dgfUj{pHP zTf~c0-6htynkzXhq~9yPb6B}fH=$!(`t<2Uxb*>RBMS!C^*g4JIpA2N{V`ignoJM_Buz0v zhxa}UIk}?JgG`d3j6BDF?T;-IDn6gWw%4tgqn3T=*|W_c_^NWGg;wi;wKI8g@s|)k zeeIEyo$^s}%q#Ahetp2{yYZS{(^Rjyblw*9#tjkOKvykElPMjZ%=J5j&miJX=ZWTG==8g)V`=h19*fS5kWpa*U+~_ zK2k){q*Bn?q_1j)+x!9HMs*ia%>e6xe7Pe>j-=bnK%4*MRcq09wElClkhbOGoECKc zeAURhl<^|(+R{LDmE~=jB#jo*I7-yBg}Z3a-T%jP$NgE;Hpc4w`?L4RHhYg3uyf|Y z!Fe8{t7JAu=+l4c(x2F~&K+w(xXo1U#+L=8MV$ci3c+T_eO*1`(__sql@j#_$exF% z*zhrWE{kd47TfUxwU6N94j)#z&&qO7fv9@r)0<0Y;T7BA zor=TBr9ABdU*S1;fmwdy`0=Ho&m4BEWhj%_?AYnk(TN7wr$z{Wys4NpH(-O_lonzh znipd;ESj>l#0>H$^`X^LR85L9*Py|h3;iOJBG049jpsk2Sp*K&pS$6S?(B^l{n!n6 ze(r_@RGhN(l8U>hr~b3zj%U%TbC)h%a(KTWwSg<^-b(&zzR$OcEds0H*tDXr5C4~U z5fQt5_G&y70sZv0P4n%FPTi{SdBzHdg0Ne)2V$~}lZ^w_<24G_8c&lx1^I=A?y{#v ztCUA4r}T^*wF1??e`VwlY4XNwidu?NB=-N@^DcsiA<`8+m=xWT$5@Qgf% z7@p;k*-gH3)(YaDkM75P-%QynIBNy756)V_4SX7Pn?FBF+7{yeUop)eT>DoP^i-2g zSZG>AN@#)Px%1~yR(qnws%bKiq=V3xt>oJA$GNAPGHgC*zU3SLRQ6cQSXg?qn3jb2 zs>R+^rf=0zMS#|mQM`7p(R#4RSuE|vzU!agag3%m^mZ7Zo>vp|`EMIve8Az;JvQ4U zw0*bJqKE|M-oHw-QmZ3vx@BaEof^X}U{AVj;A3C?2hErt)?wu*%Q|JRE#5+G{SoOJ z>-pAYU(h~OH(|ko1x|NIjf{<-SF114#nP64_~=p5a7ao84Q=H&IN(%l8t8#yU+nNa zQm}z`2`T}-??~MSGYs$mMD^n*#>)C#0xkp=Jd`nS9}4KRmg>!%vGqa7%?#a$vOWe9 z-!@nWS$4g07CX%QEseC`R8LW(8Kn#T`;v`G<6?_H?o3aHVW;qvG~>{cq8(agwYe+! z$mZ)-{;^S?g&cl1yCk)Wn(vZTD{sa+`yhGF$R?bmHpy<#dI{U_rw5kpbM-i?PS5oN z5jy+L8$wd1HcuBDUnxdH>1=y~yqe8<0-cN_d_Q?ZDRsPS`1|+oYuUtw?%w?XfTgxI z#$n9p{Q}0y@iD;7kA3!C{fLu@4P;WI8V#>}w9L}TzW)b{nd7IvJB+G(R8;H++=8-A z62BP>_Lszbh3Tp2?LhO0CZZw2%l&K&ZMb%j*k`M#sA$Nzh|3>+ICa_h*cEU2?zNDS zHRJkmG|R|tE~72VB+tVAY$w3 zt*0ldGxhr|I|M|$+^X}QY-xo7bZ49XcCXCt+qG5nET=OwwcAUO;yg+)M&ldAYU(c+ zcWZ9<+E{DzIaho-#-iUX;|8kG#-02PbJmwJmNPH^X+IxOMD*8WvK`0B`+u5{<6Gy^ zZ07?{G0io68Us(G98b?ap%@w21lBofCIVgsrlmZ!={%b`IYXr>y7?&>x%HcpL~wPX z|KL7;AzI0^>NTHXN566oyojw=gKW&=g!x%~h2^%baV6z<=vTpQD{44&zLsX}HAAr_kGL5aX3u2pOt!Tb1`j`rgX0i!Vt1vpZIpCqzKT`p^fC+_*zUw=7^xxW}f z6>a{Hpz-+75r(4oC9T=wxn#e7A8Q=VU`!A6^|dVR|83SMKfyiFuXJbmvBcRh@l3N5 zkM$q69RoM~F>tIERx)rTQTM6v?=EmfRV$x>CVU}HVT*wlZ-=DzAiIp3D22C@X{rY4 zQ({4<_v?PT7!_pE<`X%#wDd{4;94TI09f!bL)Eb(fdxcTrbK)uEkAb!2Kut38UFE! zz5DhFPsq3yW3IRD(=2@a;Sr;sd`0{k+DVv8{JbrzTPVfs>({U6Df;p=1}HmQ=`Mr& zxHr4%Ie*=UC!DL&*ZxU1_jjarYtdiClFpg!5sr^bQp4q&05evy3g^gVt^I=xouV1f~AU;v%ayc;Tr`P)IB_4z{c@V^D9U$k#tkbHsMEm%*u8+>M zQH~p;oP7!s%qUE}=i%n2&ILfmbff{Y7oKA0t`_;8H)sqEvejlW%>F~p);41p9vAKo zHPr>0Zx!$x%YeE=Pam7+tiS4QgX%c_d(n&Ub%_|%#D187cYBRs;lpiJm6hIu-*Gk? z9uz9YrLPwEz}4HpB764iWhW-Sk6n~VzhNLhm35f_k_wvpFQA8g!rYq@0XFDI_EKTy zwB3YkDzkX)3^TT90S?a4hyY=8ieG3`G}0A)N~BCH^y?}mq#mjuyFx_^x_ERk>rx(4 zwgIn$Lh9LBELxt(?ODfbjG3!%_r{ud85>((`{vT2p?a3FbW?<*6toEH>S?!dEdCJ< zanAaG-m{a4bNBCP2rGgX4Z%Sq(NGdRe{goQ>FF@SJTb?7eAwae&UPH2ww?xAQ70dObC7b0^RV^dhBdxGcHk z?cK!T5fsBHkP|ZkwRjAQSe13eROUKcR9VSsqNLcOQ~Pvj#QwBT9cVwLOf7f@16skNQq@1Ba3Sh50~ z)TJ0ED~B+AL82m(Xi$CIBa}l_E$E#AC{n0N5$`9DnpcOUXj4;=M)CCU^18|@UTgC$ zGOc?(eZv)Q&lYvu)805A?B~Nj?JE*Lsik> zc1=J*No$K(E(|`Aw~BQZY+E-dTBD!n*O!Tn9%BotkrJEj*rn%#F#mrbj)o8Zcc2ZY z1~UUg<9<~0hhy-=2R}UPgJT2N#dglnaw)%|RT9c?%!z2mKVP3*z%}{jYn9Z$s~70# z3~&GcZ~MnA{ok1o2~N`4Il1d~_||>NNZc8i_<&SiCQR%VhkP3c;)QKrO9gxaZxj?cw5te$PZF)i0N^#w} zuLFum23QcCn_F>|8Bo$dNGTv`xX=JI-!wqj9QEPV!wH1_RFm6}>d}1C*^gu^wz|q} zBPjS2A`FD)h^;|0-$QStH#&<&ycj{vmya#h?fJ?jkz299=~y!AeK zNu~2To`b~#&C7{kphcBtgxL3QhZwXQlMJ7CexAhn;{Cachzvs8%IL2poZdDui|5a! zrJ%RCh-@YtL83jf`ay%f7cwrs-!AFv>r1h%IGo+wpC`@VuoduT+w@WUK55PX6W8%0 zd1w)DY^*xWNQzhk7Vxq2wZ4~;%>hs{c0?MPFV{az*-h~y`5d+`{77XD5Hf7&n2qUvd-b#hkdIbCVjd^Bl3yrrU%==)j*|5f6CC2m4S)K9?`qIWc6J@_ z`gj4OXT<0aWArb{=s6#Ic(4Z?0Ud&5at9C)otYjA73Z^>CLBcc)Ac~1U)62nm8d0T zJf^7`qFWnxOh0pKgrj<*^R(R#97~S7F1!iOpL`P$Q8<5Q#fO~(wqsdr2^Q}X_lccy zJ&=f2^%JXvUJ|Jn(b0Ma^CrKzErZQ2;#@cyUUaq~vsvn65~6t1H`Wlw@{Vt;M%Z>N z`PxOMt+wAI_wulE=G&*>hdbwFZ@>~ST_O;0s?%|W`1fy`PSqFt@Tf0G=`1?uRdC+m z2Atui8PW+2(T~GbSvJ*#}}{AJk#%DcfX{4Uo~2|f0Bed z20!@1fuytQUf#yf#mn0)hWSFmSV30oS*}1JgP>9;R^^Bp|>UJwxJ*efR zk2jJvTpyG)%>4hXYyK%iK#V+Wqd@qm&Ya#03{`E5Q zbG24r2JOw7uM7C{*#ea{ZS;)ii5DK=Qp-qdwC(9mRnJ|qo>%Mf@(ueV%1ntZVN||; za|ty*6drg1u?v6MOF&@$Tpdzj+kixRL@FhIBsh3TE;20kDPh~Q!nWT8P=ozaY9S+k z_l*49{yUftV=!Rs=MR#|9l0`%gKt3marN`tiNo{>ndOk?p7-uvUIp;%wi7ZeKs5A= z1-)gPH~^tm2mxJ7Y^FT!fv2=#Dv6d<@2LuxADVy*(AB*R`yRW?hZ-7asqHWbU6w+z zDPO4K%kxNb0f#&7Fo;xBW*!oGyU=)>H#!3PN z%`HLgoZ{oh0{Tg$qNJaEMAC8HCLbT4w&{|R5-+Ig<%3In`r2trH4)&xdo2d8tcUBA zyc_D1tDY}>Io$su*QnJ){^Lkb-3FWQq$7Js!2m(W^(SHNHQ<=GQOhRv;V$Y;Csj3* zAbH7I7>kCq){{^HXvLeNN7o6Kf?Kl%waBTROu*zA2PwxVhI0qJt0%i*sNOoV2+Iu& z3>4Orlpt-(u4Ar_iD$cNS(YoK=OQ+tmCgg%A)U9A6NoJN)Q5N?M%`FP;Ssk0I=MDP z1yKHcNfy;6+~t_)=~|XaQnJi&O5lL2bPKrCE_S>wC`7YAd{FwBbPeLFN_VHHArX&g zrbLLC63=H*FQRmpn`)?3dPum&zys+c4e2=+6t%)=>0Ea#X@83t==i?2*WppIVq>4@ z=>WNANlv z(cRtML11PI9ulR)GKJfy9%8N6+|-%@bN$H@&L}#P69Lgmp;In=YnC1vC7GNu8IDty#2;|^PQ+iXVg*=Bd zBt=)o|H;VcH;kMP>y(J4{^p=iWJiR|z+VAlD}9$=k!F$4zTDar)9_&|Y^C-9b5)aG z*vq52MM(FEgSLC%SF$-BJ;Hze-2hF5I$yXIGTW%eu}>)uS*coS7mtSA z6&Wf$R5ni3Hd2|lphiIH8Cg-Wm&oeEarHC=9&!Htlvu8=k1!l(@s&et>8$P8?z?4E zeGpdq@Ce|+!&$DdARLwE!2<(E47`;*^2&xs(x;xhd7;V*w|vm0IOJeb(bT7_$0&Zm>$s}T#de=yO34>$~Kfy2BY^jhyjt3%RISJ*@=?*4hmXwrB ziK?yU44C^}3tU~Gzx(!d){7?VLFq^0QiphNM|}AT&n@j#$GJmcmb;j4RSmb51gUY( zk8pVf%GBGty=sv07!FsP+L1B?#2|s=l)n}Nx>Cz;?-xmLQ#PnJt?e=le}A3cyREIw z_nn^JL{h1Y<<=G@;m6DtgKDBJS>o*sOj!iK9h^i{ z*5`}F4EWrmf>NK_8}tm8%e+fuAC12o59OM}R9~H_Yu}8g(3<^zlb%I7OmP}Kd z-y}$Eyf`;2f894ov{{%;BfxIp%7w>P>KV43`Yhx{h+{DR(FL{unww+TPAb{$j=^Nh zFM-ciM3}9sgS99!YFpWWb8l?rN@>CpKJO z1-IYp^i^;r>WwD_fcRHq4#72E0Xrm}OmB5A>aAGu!KutS-YI}4U`2m7MrXr5&692= zbw`6UV(g=}w|%a2om32JVlu-HFn0)Q2fb0=WVa~WlNFQ+=JGn;&vmQl?=r4gb0L52 zx2oRSC*w>RAe`MduXHy(BYRd>QU?Dd01pI{R_2CI3nh%xm9PJQcLi(*gXG0kkd5qyUJE~HXYh~p*W1F7Z_;L#K z3aJ1W6)ySb>Na9(0WJ;ti8XSFF_0QBG(~C(HcDsMP!#7=S+x1r><3QHlbJJq=R?`%RWFv#@E`IU>fBoS{{=nJ551o4ob@qT8Ia^o8&i&m)Un$9~b*$48-E zoxbqM(xiDT>p~tCHXy~nglB)8>WL$_{1>I#Wex`Pc{f+xYDN^uzp3;~);<26pVJ`7 zNi5bT)`VBnlIm^d~qwVyfh)276@%(28O7rAeTU+^3 zB$Y(;y>=;FPMApQh9l%)OcLS+koToFOv6q~W_p6ldS*q4+2`*d$2qII+;-Ve{;4@J zGTTy3XU_!GZTF}Xo~Ad&xjqQ2{WhJ-Nwq#s8)o7txyPvIO6GP6UULRGStFv!v=8zk z$dNfhf=>LJ3GuT{w%TNL@pO!CrXQpl+rqbIu{?=s-hG7l3#>3AO>BS6+I9G%Wwe!# z{M^K-6xKiadaO(fKSlvSN=56ei{1_joTF+}lA(Hl4U?qPe2#df&ij9C>FTcj9C7#b z7WKN?n<@@`hwCp$7?lKymQk4$9Zl9wsxN?RhyC;;>l%ZV2K_zFz(}|UoP2u z5B9#&BuEA7Wd24U(XU2LoFT+%5mO$JxzKLlj`R73tsyTx^;le=q_Nj7y0(Sd(X7~4 z*LDLDI#YK9bM$649Se(OL35`CH#ZCtK`AI%nh@35@!DaME%1SGyY*;llio-_Z{?=% z@7iyg{i)w;Ay^qlHEH><5a26|jR2VzNlc4H7_kiG3zFU02UU)#;3u?W4kXC@?8Y(} z5Ul{DwmXL5uyEv#bd+teZ0G}}%^V?~RB9ufD2HJoT~O7iUkAqvhf#VJKYp#CxY!fE z!eQ~o756cEuS%nE7Bj7)M_u97hpTl$@ zRlO-7(`UAz7s2C^v%&%q?+bD&S1_FN+rQf~9U`&sqvIocn_z51^JAWryjnm+!u*CU zh>y+inxY@>0tn^N+`rI(ujqW!1SRp=rIJHaNxOILa#U4Iy8h*WcsnfUpXrT|dG82U z1j&1ZqaB`Z0T?dN*>tY9E~d}SefD%kmYG%e%yJ$5dtYletA(fFbk)GtlXk9N(cm<- z_af3~=oVqkAi;){b13FpMbPv)S7~^(LzVzq?y(}Wm(U^h)@;7^$2|aoj?-WiAz>0d zI7_Ikm&6Wu1*@Aa31>nmnP$Bohm)ohAW|5ZbiMQt=rzcw*kvJsl|ICP&>olP<1E1#v;O za8r5Sloise;L*#y6)QpI09%i*B?R=2OASs=IrWCWdd1_i(iCga{8RG?&M_y|Or&jI z#Kpyx@x>WOiUn>#(*w42F{lJq1SIf~h@99LdNU{6u`l=3mp1Jm8WBJWa`@J>A|JMJ z)T|y!-Gw~I39htn2aQ*3hy``D;wAs;rIg8T66*2m=RMxk=HFS{g|O0PD}zncgteG) z`qh#^S1+&XvU^xhrI(2*?YZe|Bu)Ued1r_PIeZB72UELqlq@olRX=U2OloT9&45#I z2?_&6g(v#^Y)4Zis}+z;snLFSTG)`1fG}SW{4{9^xzyp;-QBtsk>|vvbXMbtMY+$C)wbwpeU?AeCL4N+kHuPt$SjV&WL&i-chTHo7zFqHx{>`6oz>@U#l&7GPIKpN8c<;h@ZjU{Xugs`b9l5 z&(9Uuwv2AoD2axrsv*KLTq!#|vdG~8b*SRBi}N_yI0l8NZMa1IeV~#Fps7%MGQk6Q zHi$T`D$~x6dVh=an}sV`by-X+&ropEsS^Z=;=Wxr0+2{uEz+n5Tqd!YT@ZC%=EHHl zubsfXL)5g+5I-jW$eh43AAC)VlZkS9=! z;5^;b7K9J)Dbfgq>AMIN#dL-S>w#ppC74nv3Iyb=Hc0w%x5IXdnV4yGLeSo=5SuN8 zvosRRqGKB3powi6PK8ckQ|rc>W~Q&kXJ5LJ91ZDHY5ssaK$>p2#6=8ii`y4e< zPnaj;89Ri_6ik04KFs&?E8ECLcMXUAZIKH$wSE8GOD8HhM`SI0eWvf$kv8?Oi33rV z8x>`N70qig?Ppm}&QtyCfha>+Shj@`P)HzSN}!k=$%u3E+7UWkyZ-G!ew*dYV}hmu zL@PkE@MgR6q4!L&`uR5LFqk^f-FLE$1UMOsBdV+L!F=m2CF4Ml6^Plhs4oT-B(j$G zab10`f-Gpw>noNmR(uxU{VAlR5+z+&^_J#>H>3di##`e2I}}$H zCrntxHDBKqCmXp?pA<;a64F4`s5pWBr;9_4UeB&{H#(Ouq(Nkz;bEDw%0lmHGp%uzfl$d#y%v$&+l*2g)Y| z#lw^QO7wfR#}tHFqg7H98bx|`HB<^3gbkV~iRy0&u;u&wIyZ7K{&^&8>cZ-kk`4ic z9v(So-a_w=G!`!(1Yb$9DTuQGL4<%Zvl;j@oY(Hf?X6&cv7Ka9Vt3%-J{ zkm>6sF4QAzjPa@8we98RmDc79mOoA88;x)3<1fhs*7=_Ktri6ru$*rW$omqvn^c z-ai$DT#+gYG)Xn6(PU3z!Dz;4`og}InN8fJER0n4z`@}rJXV0w*$p;{rc^mWWRbQ) z=oO3nC60a;o1+1efF@fIs67U1c#=?zoyC|p_M-8~aTiw6t!tJ70h0OPrB;%4$c@P3eyV8TME0*mW58cKk3mgvkU`n=oGc6n40lidk2)$%a2_CTp zI`tsy%i|lBIA+FcN^H@}2>EsMp)YhtH_( z4CXG8SIdJ2^0nSOH~P+yaHR9`x) zsAV491`d?|c_KOR5+5x)2KThkGb&d?g)}omK1@Q@X81f(UMtNZgC?=N(jE6V`(R3W zyN<)ilbO?etA&v77}Va+MM1{I0yLPedPXiULVqe6MpZJyfM{=0a|_Asp^t;PFVuox zA1B#0Qm;{{^gXGe*IDdE(piW^3!8QCvD2NvHfKwpV$2-7qiosvl1Pj~;)TW1Q9`P$ z&k7F1J%YlpTD1JpSsTBT6E4hWJk5M3-_=?)L_|V2Y^U1>Q}$8;JP1<%eFi6tCjicR zlYs`5CLlxOXKw)PyXA%3DOciG8i6TfQfsB#`q6`Ax=-7VybUrPdYbJ)Ds*iDvh%0R zkSIzSW$5>YyzOuF*ELPcK?rq+Y{<#ZjzdVP-M7LJkfZ!Dgh7xgIJ=Gq8)Aw85#Ry- z{xX~mlYjpa8m5Z>Pp#7VSKTMw|J-_{|8L#tY)h`cSK-#x1+fI7BpUhKckDo&Ew`xU z&|?zN8fE_>Wis>y%N)4k%@<3?raPp>UD2l{xNPbki9zswe07w zhDeX=2`(C#+@^jnYZLL)Nlyy|%iO@>+eXlc#Wz!lRLQbfXOq9QzoGedXzG&deY4K0 zxfAcW{eIVYRn$g(t5K89=n-*Np3AqbaZtAPxdJ^zEdEDBXoHoG9Zh`U-OX;-E6{o2 zg!jr~v+n1J=vI@mD}paa8~fe0^eAb6WY*`jPROKVlPIl7Q=;9?WR4m{vMFWve*M+P z10ra`wR-6truz2&8z-+eIXW&!#r0n8%55;r)0@O;${7;vuI_WxcKg%jn)b)RyVF4L zlFEbL-eA`#y5JBw>c0 zMpC3yndG~nP-QZ7iFWm`7o??~>QS_1g!IJGYu8?V>M@JiRRDks^)y^0&LLS(7Mn0~ z#o5o0L&64pj`kCkj{a1JtS=2>)z}ve2Sz9 z8G5S}jSyy?J$G&^;r~Ev2Q*5l7SjF#+B2p@UuXtb=#z$*3I{qKDrX>(YB?z%rM$i& zTAemztrdPR_3p3EMm%Rucu&s^ZZ?~xYM?TtZDkA*=^}*$$jTRH(DJM+g}e9ANKP$D zv_EG#;gAN2hX~z~|V&3SO?&MCbrTy=5*a*x2qPW@8z^1Kw-OF0~AiiGD)HhwnSQN%RzXw}dr#m}==< z8AuCy5TGZ^dC5#ry6_yA*C|Z`)5X4bx+S(o%sH?|K{@QgtKcJ%Nd`$We;(E|Toi74 zKwD+is|}R&TE!Wz^Vhd;yS40y%&P5SyVm}BlTL$2;^5lYqQZa~<5Nd{z3GnS?av<_ z6d6t4HySwTw~rwx?@Hsi3Yjm7!^YtY_OMt*r*yqO{zbJJI7pOnd~|VL3_P2J24qs zqG%SQ)L$Ce+;W?slF${X)>-f6?tZRw8dXgm9v)SnsWjma@=0{16LI(D5=eojhdSI> zUDtTpk2gzgTT@Od&b&hB!^1zT%qD-8;M&WveA~TaM>(N; zwcbG3<`%JtTx69XprZ|~ZEbQwo?c#|h+3<)#8}{l{Qcs+eShUxlxn&n8q}P3&i(L# zFW-{(yC>=(fmN~EkxB6MOlTTM*IJW#5k!e@_9dai*gvPqX#>BURXx>d4Bff#(z<9x zeTSyExm|f%Tv~={W1zjgbZh;?>uu$)stlP!%c^Nx;{GnHNuv%>Vm8?P($)YlH#Y-~ z2Wp#dN(BFWV}5>q6{}i;uEO)^U-wL>2+@55ww$(>7TyU(+NV5eeUr5!d}ItPHKu=G z^d76FR(vkVQ?(sBwEI8oSsWl7j{SAs*$%*mVw_f)SUZwyZ%rnCeMsrX&0?SHKo&9W zs(kgaA3gqf|DGTsNAh}P47_kq5zqA`1D;a^P!_ZTsPRJ8Uq#dQlx<(k34lu0}a0HYD zQ%)Q^cFZa1EbV4#|3n^nw0Nx1q(U0`jn_usL2-*V(#1Xo1w!7V85oxSn_=4B`bOh! zsW%s~hK+wT;RnN!z(EgPTnyaNPYW;KL>xb$5FZks`c$R7TN5lBZFEy`i=-#NU6rhO zcu`YqaT=qF$(fhx9NEHXY-QDXj-j6KOCz8gNfu$Vh=d$M2TGmOj>S;^ns(KqJL6|N zpl$dH9P#s3Vw*M{FmJL+6r1SS@>e>!E*(n#PbAhGJ#t2_YR8wx*r<%QrF)ulT@rto zWe*l>`oVLomK~d<(GmfX{A&{~H0UMemEEo9Dk>`CFJ&#XN<)&N3uW2#bY4A0t#Z;{ zG*NR2Y8*-cBBAt1g3_kG>ZkWuUlTG=OiYY)IxqQniG4iCccCfR2|gxa9J~ZkF!;tt z8@ra zVTCVhD-Ej8suZDknDreRuHjX==J)&3n!8gjq7+&uLr6+}lF{3^suWv>4+fc@O-vc< zB6@E-Lf{IVX6K(zfDtbjKrw|rMqT{5tLVxNY=m4hjD_rzYNKCHBi(1ZHH?hmsC_X? zZ6NVvw7Rokj#(biB6Gd_W~03gX7%83Jx7Mvvm~|S*(1^_4NRF#S%ii7OZk^0U_eE< zh)-X@T9O4+7D!KSPo z1P3vIs2W)bgACqNmskz@p3W#7s|KA0r0b->5DTPVrH0TvUeT>{xo*l*Zl#2iHWNc< zjI*t1w-(td`ZDnh8~yHEXuCEyqfPu1oYiNqyogl`zB36#xX0>o7nk6}yzJlRA`Pj6 z5vE=~2raY>*c;#gZeX+Qcsd!WlQNl;o!tT8Hfq@SYjY=7+A5UPO>di-Tt!rvQ4YOV{k zq%r{d5n*B5su(LgZXlHtAL!-jnRAtPWyKHV36Rg2eU%mhx5(+0a%NU&79_>F(2p?z z1+8+Tf9_3t(!vUJEDeQ%O2A=Zpxo_Pv$W=MU#vz!cg#eWqDBfs6VRgJvozDAxcQ%# zMqzoD*%ub1m7UttkXk=}@?<6Ur5rU^7)GpHE+j1MDEO3N9H#?`V1x}KHnL{Gw2`CM zlJVKs8dqQXZ3hM4^wv)X_pk!lnM#P?FcpDoQ-uh?v^TjOfkT&l^(q#YNFXE?3$3t8 zbX=r^#2OlD$11Og(C<#$zApmK`bl3F27pV$By6S|DKx#7k&%j+?p5{hP*0saX;O`} zP{hSOT8AfRr>y!N~f48C6 zC=m*z+=!SV_N`kh$Jq0Wiz)EMt_Xic+Hj%8cDStvQ%5a3H_=R*)6L&aKX1&DM{7F) zrBTRJM7~wA$OeS4HH+tyXU+R*qP(J_Cj;DH`Vm@4X+QH1t1jIEB(NL}jCqaQPMRXf zp$w9QF?Qw=Fe2p+<$wI>TF|Opx{8O4{j=RaCW8U`Bo9#5wHc2>1?DEotnmBzU_4r8 zYnNzfYHFh=atcBrJ-WoF-rxEWoJB!BjPH{=xfIofHB?fC&HhTE}y`zw=P@OsP1 z+-tWJ9X>^{SOW1oAu(CwEKCxUP1!9yM-q$dM z^6XE=na~<(v1J)5`D+Tnv zlBC%X#d?C@DI3~O^Qgm6FH8optX<%eULMyuNwb^BZ#jQgO)Pg)ui7mrsc)X8lJEze zuP|q~)*;)3y#sI0f4$veZspGE6`^mKZ!PEKIzT1+JU#9P*{r+{!S+BD&6h>Y<`iT^I=p=S2n^v7S%gShyU2CBD zw4S}<{I`a=g6s><=Oj(VJnRuYyd>9A=A74bS}5%rS7}~}{aTKF(HGp>qRRdnR%p#- z9{h5s^a+FK$%@8p(RFui+pYbsCBAQv<-K%)`(=(4UuW%{;7uB9+pd)lBrAIRoEaZ| z&JbsnSnzUNVm02aJ6){rAX~wA>D``}IoX3*WDe}*c6s}~V%f*}>SEDfGc3!6jplwZ zBxCx^HFc zf?LTx3C0EjYaYwGhf0iS*1fN89r?)Mwb}gSEoD}<@f*TXd*q*f-*v}=|2SvBWfE1BE31M#h({hI&=|UrYbzyLSf_^hwPQxN!14%f3GD zzIvs#y?mEc)U;Pxe65vRI?B|RA*f&Mhu+9O@|1k@+`?l&_M7_bep{S)Stn|(#+91K zy`HqC(V0gzOdS!d_UG=Yr@rE~`!caBvfj5^t7Hxx(_as}BNg3!p1%33_Uxwmy6yYV zu#RTTY`u)@Yiv>zR=c#ju(0%FcjWhXWKh9(b~eTxT%fbI=CS_uYELXX{$w|0@$uM> z(>{Zm$_jajy0-6q@9b!di!BQzHr+n&e{uKcVKwf3|1h2@R}r>kC}D3~h)S9$4Q5J- zR5T)zMw;iAnUJZZk`}2{DwqQJ$}FEc#h|I z`oneI_qB#|o#$tGe_qp@aB6_=&J_9ja^_ikP8H^o?M^|Y($)Jp37u!GmQaH=*Ht4d zzT-Zpz6^(Cd`p{erJLH`JIdR(I#pYS_~nF^HVzo=J0EzeF+eua^1UZ{8M&C222nrD zfybFk@yx7~ncYGmC9U!yf}Q;pgP~qg!<~gG82 z88)5!{kn_|-pTf`*ztW+R?OdgZ1*g8y;D}5!fWG)y`Pnh+INhu#So7?d}=H)A(6s$ z=_k46ytvbKk6Ov4I+Qb4i=NB~bn(c>loKvp`@=px3N#r9$ME<8@9I&3*jbwD^Y8M` ziQJ$*^jc|KJVPxZyU|a!(YiOZvgk^5T=0IRaIP^~0XRhVA8q2qax2ubZngT*fVjiHZGomfd2x1`$8=?0*cdUR$*oq( zAss((%a1N8pJ8vfl$zgOm-)I7Z^K{vEb5%N;`|^p}xPxd`&E#skTs)CW^v@v;^{t=7yt~A5$ z^}~0YA32L!6`w01BeOvG`)RjnmH+)5>kz%f21y$gn_ zsd`HVwJx=``p-2?wM}&xR=$w*RbBn7I$bRxH|+&)m4;Z#K{xW#%N9*d=P?1?NWAPM zIx5OA!vHPJ0f85z{+4q6apvZ7MfVsR)ipnICGv|A^Y|1BP?M4fO`Pp~!HUGJQn@c# zAB&+gZ)?h`tTm;bF9lZ_xrY2q%NG$IeML_s!w~L*QnvpB4Lohy`$7@XBQFgMTRL~& z%3qelv!Engt9*+_)|h+mP_dL~xB-hgbeJf(TBLqt-%1d4s7^1;xV8CGvR#CxbUsY& z=K6+}(S0cftIu_j`)D|H%v|g2xox4mRw56mX}(=5a(CQ<=mwu-xsDPs#{67{9+&mi~#{AS*)wy46dGP1HdEIpf>?5VB@GnOnSg~z;O zD8}N3-)NODRV5^7b*^PQt~P1H zYT1#m+(yRRt1%=;uMm1Wj340b&=%DU-E_iZLn8ow73pp+gUJN$#^{JA6XA&>T-X0_NX%5 zPj}tyU&=xMy?4J_(U)S|`iB6<7O_c&tN4n# z$a?^t({9bxHAc#VeQkzEUo{P;+B1Wr?!!0pNiMJf3tS%U!-?~!crW)I)brLBSGXm+ zYM1X7R~CDH!Kdm~+!uvsmglm%=fxD`WZ0*%}Y?V;0}qA1Hj$ zmDSK${OMaY_elNrBQ~|DfO0aK)N^~_JYG1{?&qh$EmS%k)kA%M)(79J@GbQMAN0c1 z$J8!uKc{T-Z(q{&2znO|B~>T0E%Or!DF8y|cm0(JUFqry3H%Jm`lQ^@eZd$nR+}aP z9tUcWFf&4P7l!W4CuJt97|g=lW@6`6|9P-3ShAt_jilv!8P8kY5xUkl66+U6{@J`n zBIB*40YhaOBgdZ2qt)ErHjrY`WWd|e=Tw#G6+RQ;{-*oVLT7K$Ck3FRVSLIvr}&T+ z+N&PZH_qx|H`=8(oK5EAmgA=0>Nx(^WO?eXxOfvmlt;?UGoJ3~VN&(Et2==m`XyR~ zd#1{Q+&ph9u6Ib*wU4UrylrD2|kKOn8Xb4QRuoX#`!SH5#ciPN>QcpQ)BMOJLTnT&1;n=M=W^ z>}MN}ZZq?_z!X8n4=u>rqInCb5d~Z5WrLFK5mz+?w$yBKI_-e0Z#1e!;Jj z{q!@&wihh+^*gDmcejXNOS}*RpevIZN)6Fs&MCD*2oarKnd|_6s*h~z{k?nkl(kho zdsb*^T3%kxlSWXo9sInX0`1E``%609To|1nJH;UG(wk#^GX(uyV=7nebgA|cow*5f zPH1-9&L#s6k^5XtYI0vUs_H0c&ytWZr?JfYaX|9sos+}1UR!}qTf^c~`n;U8gKen8 zLi}-|hn0gVrz^y5?sAu|_g*di(USX0!*tK5FIFa3Sr0$4c*bxwh3hOEss6v56u#rUJ1~ryAGSq`V2t`WcAX3Y|C48e=9?m(TMc&{@%$_WS0 z>y0tw;CcJF>m%j5ofAA=)|oBnlsAwQ&Z%~xoadgpLJ4fTc*g9&b|Eix!U?W9~_m*;xem?-gfc?-?L54YqHz4oRy!a z2)+AYQGxc{X2YWo3O`$_m3@9cqM!XC|KLmBgWi?Fy-5q~ZmQg^Y_Mz%8Q+4xZ5WCEDJhLRl^*n zZ!S8HvWwUh9msQzX0?()9i$hJ2t-_5TwI!;kn-}ifx!U4$dZN1>cubwV3GyO)Ii5a zPy7`eN|N5Q@<_bN9YV&t!3cl=)JXf>-*zuOuxtbuXpvxKZDRv6^`zC@OY12EE2Br5-%cNLm_s;ia@ZwmFz@84~LGbBPZK&8;=eUhd&-^ z;j2grfc)!m zQsVp)FiUjOf$FjP9^k*rs$Kr={_Cuf{UJ?*8uv6Z3#F@cd11GXwykaJGX-u%+#Tj0 z$Rm`+4lU{U{iqvcnFLniKVJUV52pT`31{<{N)9!6XJ=e^JuTvx>=2T_OD+HXRr1aM zBP;sJ&}lnRo7O{yn2M1};l7-its4_shv3AsU)S>tsF6 zM8b$ad-klfjqA#rA&81>^MV4!~1DM|zLOynPk{|>F^haW>w+zj}z z04gOUF~_4*92%bKLQ%s)(#^nT(x{@=?7Kazvz}gF(Iw8gb%qF~8iK$$Sl5cFS;??s zWnP-q2W?|zv<;}dga~T-JQJ`IZ2H^SoTG#mPoETjx~^Ki+N`_&BMEXbZ-NNPP5YjZ zD(Rph1$${hfBR zF)>e%euRra{Ant; z$0=h-`xt)gHP{70f-7EZ=A;c=aiN4iqKy{)Znhz+bm37vgvn;RA+ zSk)R3-F|fXkg1?euDG3!3VP@eM&BjX8xv zRnODf#iH5aQ)6el^d_pT0ifr4FIo`SZ6e~_*P4*uDT55FP z+YXTScr8~a4Rm3j$D zyR4!RxzRi3PfW8Nw6|~H>g1Dshuuq*1qcO<*jjq2@$}h7&gyjY``y!4aj$#+@a`XM z;kAd3tyytt-E7;v;>&{Wj)*Jw?ylVM{Zdfc^R?6Vv*`WR{@<6758nW4$!Gv3;pe^Q z(F>g6MI@6M&i{(Q4A&JIbS}^xx znxT}TG6m8cnhaL^?Un7Gh?`&yE7X*UT%tHiU~69K!VbZV6QNVpK5#lS7Su=lxnR9w z=dYq(){FbXlvMV5QFWZu8^3JQV#?rnwtOVQ}i1NYB2m_{dMSYgEs@Uh+p0; zy+AaqVq_fU6{-qYw5G7}ydFwmfmYRPo|@;ybQBn2u4zkr1=bwIVV-A-)rWkou(Ijz zhM(9~79R1p&pfGobFlU#jm!$kWj0a^i!QNjQ!HxJM-{T1w=BDf9WQx};GCiLx-zLnzD%31a2eSxFF@HISXwKP->2RKauw%ZTVi=UK9ennj(yI1mb>c9m|?1{%da zkVAKy@pF>`J5mciGygXNwxuB%;fw5=wkW5JFf5a4BmIDhA_VV2UU&EIe3#VSx0c!I zP`8F|JWi*ypH3M1>yC5=X4E4a^3+5Ghd_x33+ z>nYIJ_z~9+f7!+hZW<0oW1=BhVZ}X^r0UQK7|q1Y5#OZ&v56vm(du>UawaqcLh4%} z?8*yLG&FSWx&-%yzpxSM0F!#_`t>46C|}K`WR?8$qO|dQFb1a(fe7S-6?0GI&5Tm4 zRv7Kokn6yOMOn|jBeqhpvg3LneZhS^99PTzfu;oB4A(f(T0Ru=mHGf4BM4-X8hTw4 z)=X^osTJZvj;WxR`AZ~zKgRotKu4wtFnlMy>8SPi>2_(`W8o%6khG~XUu&@f>y%JO zlw$N~pgvEBhQ~K!>J&EWfQr1cOXWlt&%VDrvg3`;j?npGy{Asg{@`E6Iyd?;i~!2t zNnleXDDozqu^gy7W$oPY%Mod zKcbWckT;L)(^>rUktNg8H>YF!*Fq%+eV;tB$VHl2maoX~>}O+<{EW~%h!&s1NzJxt z$Nyt3Y^vLtq#R;Dgg~klYFDBNW_KZ?!UV0o5-(UmRGMJ-$hCVf3W0LVG$IXwjYfYJ z2X+VJ>N9V6q^S`A@OK|cQXKo_qC9_`u*(6$htDG58NKrzK)S2EEsq}pjF5C2oBGYp8S8AWCoJVROp(ZxA# z08$-7ZVMDhRXgXU1#PT$Q$$%nxNaiJF*EZQyY5em;hGM$Rlss;T1ZZv(1pyKlCAJv zL{t>#X8MxWg}%=Z$Lyc+ns$7P0w3qJY@P+-7KZ|KSQ~q0Yh*Q8m#660-Q_=8f;*|y zW)EOqc=7Dg(;ct}8ZlBfJl2n6s~kGyjW|F1RH{Jo=bTX6nlu7L3;Btd>;C?4@2;a# zdmm~r-+u`sCkn;T3&y<>ar+=mJ^JmIx4N?kr}pww!JL_u6aY+~8;8jjS6S+Gsw4pg z%0cKv%Tz)e@hpsx*-Y|*j~f{wpSY-4WrxJZe@AU2&ur2Q9yETq#H!Jcuu=gv8CzMD zx{`b}Eh4RC>G;Vv@71ew(=@RSi6ub!bk8~bLSv+dwLfQAs2SF2+4n+3e$YMjU4`E5 z;P?mAovJ$AC?HJ&N9giFQ3^~weRGIf$H_-?C`~^1g|DaEte(9%bW@Na>JnMM+tE2E zx2LvsJD8s8vYhcyJ!CUQDEeM<$=f1PTP)s}OQ}kz50Mm|)bPa53m5P5-}v43=J4^* zZ*HGk7dCyqe_qe$;`!|Lxr_i7`+in~)|&P;&6^r*Mwi8~2@F6F*|*+oB=@YvDMZDIg-|M~#> z>4MjU+9E`x_}8k_tMx+n<}{h&{-D~jpLOMpu=RQC%wx&=qB~QWI94_EklU9@J7(KK zl}Y5CCdVnR3ja-qUi`pORnRsOn_x-r4L<)2izqC}l_88L7>M8sp8wV|S|YYN>fo30 zFC}kRy)dDVQJQr!Gi6jmwjz&9uHr$4%96n&!uH!xutFK~B>L=L@DQrZL*y;g-yx+5 zO(mUg!|ye{KNgISQu4pior2}ZH_Y*ul7IhilWLBCU(e$`qkd2P?F zZ%DG9zKs8~8*ONH*vAHIsgF9;YC^t_fBwXV#UYuTo4I8Ig3Z2#9o#dJUY&|jm&}yz zl{?krU@!2{KbmXW<+V~m>3dnfzFoa`Qm94W`~QQ4M3-0L7fMDOYKU&4@N>-cs7z*^ zZ*Kfo1KwtRU*C|Z8Og%4F^QO#j3-+RQe_76&f3)6kU)uZ)-bntQKiiHh{?~PExa&k ziZYpxGZ+*SuejEVsXxt|k<5MNjdX6ne7?x(hViHb1|20tWz?TO|27qKp4@1)mt39$ zJKGXN;w0G@bG-R^^Y`z2jerf;cpZ!*Jj^;GocjyqAHSm7;N%6|)sES<);R`yX zC@uul5m>k9_d1_8*sy=CJhVN#CngNXP0OAAS|ZuG>W7b6gwN|>F9=w3%ca&Mc4Jds zQta)Rz?c^}HJY64FP$KVsB7T4G^u0bul{GnNlJF>WK+pna!1I5_tH*6OR_oTujf4N z*K-!easKtKwsto3J@!HK`BG~?F%?fjDZ|&6Tbo!qZXY1uclE^Ns#5Swy8cw;ip94H zU(6i!X7;a+ zAmq2_K=Ci=^Xj3$u4%+2r7uNaGw{+!Jm%59N#zl*Y`DJMxQ=onxbbNZe)I5Pt>}oM>-%PC$X$0>_vNB+o;aCg>FcY^ zsBJ#{l-IA}v_sZvT)2g6iUNM|Ux~Jas15rqlk4r1>o2~sUXVC|Hr|oxMif7!W&xpdWFyn=S?TOc!~Dl$=yP$K zF!u~7Ov;$aR$c)_sncYDk^k!&P1gPqdx5kVA#odK5Qyr$JbnprG&(J==H}0dmVnfz zh|7c@%QR1<^AN=TGrFsHW)+XSMrSxE(`82;FfEs+Y((k#(ejfF34K< zI55z`(fW#z-mf2_G>#6VyS;tRXEviY8pqF9mtEd`JriPqa#05W7b$y* z2>`WxA!Peu$YKd~r-Yjv96zqT^8*Y1jbTA!nCV$N%{1h#=aE$#H16=V`z}RRmCoyI z0Y}xzU#WC`{%=!ik?OE(`{mi6!9+yDF{;JYs}=Tb5GdgRDy9%N&^9FGnD_RLPmZIV zUu(KljD;1|pZu}SwwGzcO9U(#kP!rs>;i5buDMxCLwLqhfD ze=$ec)WEVz`pyZ9iysgd7jG>Jy9Mli4!bJ3hsNrK0~VW(W-3v%&(x!;|_MSnyR+P>D(U{q8}0rOZ!u*mHz|w z0zH<+e*j;;c9N%hbv^NL5X~*T0=~;7rc@*SwldFEYY0jMO+Oj?_QQzGw(;@u%iopP zk2s&o$j3-G#Zj3B1X-Vb7U!UtN7R!wc{in&IIiYy`A+jf`0w!hK6qc_ey?#`J8Rg! zxnS#+rPfzRjm`WJW%Y^EB~PFlr>Sz81e{22e&09#yVUP+b=PFLMzde(F6Q>W;!@{! zK>7OK+gbX3nHoavmC_M6@4AXZR1uk`^fHho5-mA>%jrQqQVg=!ki}!id2~Fk6^W&4K_mwsGl2^7WgE(4bE7iyAlqjNPIJx1FM+4jgtZUtzfi7skx>>|>vD-4ewRqhNWWO8cU;FF;zAD36f~YZb8Arv>&Y!Vd+W$>frr zZl0OJH!YpSJ`f9B)BWXg_!)N4RE@;QF7Z& z{?OEYEIExdFD8TGh79;KEt;280LpPP~6qMo3%!O(b}@(vKlM zE*zqeBfLiG&m_25iV^U`d=#@d_NJFtB3vPrmHC?oLbqR;lQ`|nyUhvgngAc45NPTJ ztv~#3e-pN!2s=UY4X@61MfgGS?m%ECLVMoqb|eTI>AXy=M?CYjqmd=4;wgRO{>FT!!COM$X zFgHNVzFEQ}Af#_CPZB))&09qET_wG;R3B{E+M(kvZe@k=kDS!`toOi(+8VmZ!=NXd z*-xnj?4EI8xfra!9z#Vz{7=cboZVncTEOTdoL~BTs#s&d3*(1Jia_hqy}b+PK0&im zcg(a(dQ1z)2=P0Tc_(lpkK8a04jz$zR8Jj+D*s~Lhn8`s;O?Dj>Nxd6w@;NT^qm`~ z=o&$1BK62f;hr8kaE|77J+%20UQ*|mFHKrPT9n7`H1rrvAPpKCnwmh$?eRcNNiWo2 zreKEqdvd1rVIyoK@X;4p^5q2wrBZ2DZfitEOIu4K*#ZTlZfyy_YqoP&q2Esw!n%U$ zP9YI{dpaJeffFVK=`Gnoa+fF0A}fw#k4}|=>G4+ED_NS~;MUCzla<^bfrBFjwjJY^ z9#?4P`X#cE`>zTMSAz2v8@mH>K3MlY!`B%}oCIL43DRM)y7sauorv%`egq9AyDP8M zVOZ+>L_HyUTx(Tw99dTdVXNXt1}?$xr4szpoTPmpi-TN0#CGZt(Orow*GJmp#bklw zU-jdFTS@Tf+5kf>u?Vkfg1XZhPfVyq$fU|w~_cQ@j*Ahdl{nsZ8IifC##EfrcO-stw_*<%uV<8eG=pf52Td-n%h#UhDm; zWiwiR?vPjQ`SzD9slVs5zduq?39kh_wbplW#AVeW>SlR1~`nmR@8nrGLKLyKpx!TBulK*HP=51cNC8;uE_XtlqoVoIat^35hdi-*A4 z892AB8t$y}ckdrS_upL*IXvX#;Xl-AMgpxQ;qV{FmfA^T)J#}aH+O@GRHW}ZXpdN?(S5Q}m>A|b8j=GNZI`MmuFcn9Z7{uz9n0O67 zx5b*&pG|M%e#Wy_UcS0x7##qt_nFAFJ`K67{Wc9JPPgGSX(B%69do&P4u~R^ZZUjg9~2OWS3$ zH0x#Fo!q7{NB~T~OZi9M-h~1c^_tmtiUFpTihi4#PRe)a1Wpa?f`p(0i&b|A6B8hE z<0(Mgo_`V>B={?Z$|y%H06_XeNzU!3yB_Ume~%Hf$ivrgA_=nIRky{mVZ)sT41AgA7Sph{BEWtOKyrBS0R zt9kl6M_13DK?`{eg6UnABnl(&)e(qoEfo-m4A%(LlFPc` zCvD+Rm_z3yVO+}t-tT~BAkvq@U}y^$e3!?hutP{+nar*C&|UO_FDjdBm7P+hMQp|L z-5*wZE}+)t=6dEr2<`4G9NS3m4q?@vjVhURM*!Q9u#EOMmE_y#t=+MR}Di?tq<{f z;uQ5IHa>+29~>@kM!5M?G&(G=L-Vx$?4U-8LX<;Eg%8n~0u3QX(HQS#lY7PYQ&_pB z=aEF8%B<&`^0%m6nIkA^Qa~4Oa|IFT6BK0CL=7o^1FUwa!!3s!Un1Sb$16a_kECn* z$j~ze^Q;iEwdl8M-P~0c`y8rZzTO3W@p?tesZ6wD`W)llw+{US)X6FbT7(@i{!D3m z7S8dNX^M(#{HaY&Ky+uUOJ1W@`O~e@P%<&!w*?_6-jIF;xjh2wOeEOsE)x40V{`oY z@m^>~wPcMmnL^LZroIV1KvDqMXNzbb^o|rKfwSsGpS!J)A-oJaHU@qo?)T$G$I9xu zzSoh>lD6xM*2TU1_QhL?X5qAjWuTR0mA$dO7cO>7W>`6VbO# z6P?toKB9QcDAPw%znfW+-*ih9#{F6E9yR5BaN2OcR zcO2*FN8oDQa9LTIX+8rI52BwVdG^Y_TcPGmiZW*%5}i)Tu})0ib0$t!j{ojWd< zvD?*i93Ir_+u!nG?k}n04oQZ;A8A*w6MJHBu)G062S`T_PLGGNDs3?TclN}}LNrP0 z0q{qf4X(%yAzRM&Ih%JtT4hx*;p6ZnJmmAZPsFX;FGr>}3r%Ul$)RWG0UM_hwCgej zm~k^!i!KB)j^)7SRXc^bW>~Ol;vZb(u6EGxP6cQj@a1}kZ5F2jlA%Eb(={7Cc+o*R9=o`pjYb8M=M(CXL`5g7 z8c+t=25$}GBz8HnEN&F(mZWo`sZ~H7;$F5AWjywGXRo?u$V!UoTQ5l3Hmj3f7yV`F zBy);n;7U1k=v96#cKzIogCh$Si&d=+tD!qa$;~FyYvD-JCzz@Z4$08HpB;9pN*LDg z0o|qfT*9MLN0$OI$XBemOUh&%b8JyMwZg`4`Tf&25)2X>7ss9%#B&U>1Jchc5p7R+ z&VO=i8Ye#yXaU(K%|t;-QW=nFfS4sUWJ1^tZZ2}7A|ML7{lu>M4}8SWj;xaUmjdE- zD%|gsTy)KIG3|NeFxcH7i`<4BxnUv;y7|KTXzf3-+I_w?DQf~wwLVZ!4Nn#KSTwFf zCKo^NbFLjvKp@(Zy)|&QMT-D`1-BFkkThfZRA1P)m%Y@9GrozkNJ7dRNLgt(?^z_% z5|cCM5egGuVNDurH!!fR8^z3v6C>w21n`7GPjP>F8~Oz?=jS3%I20lfoNIm-Ld9GF z7_)!%Kh8Cv;|(^UgqT?Mabz{AgIsipj=iQlA#beje3b2E{s~-AyS0ZO%NyT{>0>i zvkQuqAKtD;a@yrAyQ3aYgi-j%IPP~N-$njtdrH>Jfu6s$o2c8!ki%ZtiZC43?^l*S z0WQ-5?L~ax^?d`6nQj|Si*6qx+aeo6XS@ZwPI3(z)}s5R^iU6_!l8?% z)r@9bx^?YZd0TQ>+2PdXkSZ&3NN)bcupeupwf=)(r!FXOXB^KDegsdF( zi@?5)4Np0~gtxvLZY=~7WnV~BY#11}gATmnj1^W40lRU~TQUKQv@U8QFVeopIcj*~ z^cl|bHxW#Ew`yH!8`OPtEXtQ&)2yfMG!-ZbEltSX@}?NiQ^qd!y{5;z)zrPgKeRnx zwJvU`cCborSct|+=(>buJU?}6Eet@7>cKRs?#pW<7z=7ell>G|sRNb^Equ<22i)k@}zHH6%2UnZ@RFF;hETVRF!j%C)t?X%w2TU3Ndd?w07$E-1HvD zKU*As+t6?K9)N<dNTl8@}%0t(U6A5xx&$60JYSI)An&L#wKf zjz1AlJvh9&W%EA|ean~MiTdAY`hLBH(^iz9oX25?U>iM_5ojLxaU)2brbvLmB z*rK-u8FzQ-fF1BRuH%JuQ1vQ+7=o%jO!pru; ztAw?<(oF`d9(6AQE#W;bngbVa`oIY&$TwGa-58;2kMYeNzuP~R$(TSCMc!l0QLjmG zfLcbCx%8Ftc-dJw&nit!r~2Dn5H1#uGI1LW73(_+{HxeHzKo)dJmQ$52t2|O{hgzr zP0(*qv=&omNaM>Zu@B*M=~d7{NGdOg=juBIxS@f{cmoP#+|=dED`>o%haV8 zz{t9#bF`Q6a$kyf8@8AGMY>PCf6uzvKm5IzXxJQaHi^|- z9DWb*ZwIITZBc(Sh#*g44$T)NL?l*2OYRhlUz-zSqeDPttt<*4d5tXm2(vC;>D8WA1ou zV%dmy{EgNB1qECwIXIJ`9;ruh=v=E~H!`WRk$etX2|}UE(Ie*mz;ixbb_qOl_|jvV z{Y;hin!k=a6Bj@axt>Ie=^~n990ACQ&P;L)p)mjyCYLHxW9Y5*e|*d#qz1wYG!H(z zF|yvxHz52*+IoxJ{6rTQMa7&))LKN*e&Lf>YhtkT0U?NT648;S85M02hTMQ`>5UxV zrr1^Z?QTw7290@z1Z9NNcw_bdkA>1C+CxlY{1a#k*8=Q7C&nSneyDy=cIF2udSuw_ zD`1#U3bW{^p>=NQKN)A9Br~qF=O)P$PQN8kz>Dx@G6RqEHk|Do-d_SjU3+17LJwbQ zX722$+?ooKH8K9juL8uN?%Ow#gJc5K6A@M3SsKZ~+jn9CAbyv(*LYjLO}v;x)dXYG zJ_rdbch%K#=sYdX1znevKgGC?TcMY%;~%#|<2?ln2uxXJogh{!RTmP?50JU_4BAfl~a~QuX>SAYjNDXWG z`(Lg{7v;bN|4ZhPHo>rR=y>C7dmo8Sg#@Gz_L5bG$pxX22ho7YuKc8L3n+Zc)`rRZ z^CxQhO4j2tF6Cn%+w60i`iol<#L0Ou>_c%}Uz}s$on zAs3@eB`GxYD~qme-o#z}vMriQr}#|LDGvV9l+Z#KqMQTwk;&CzIC-+x!Y5SZ*|MyR0$)}XqXKwPEiGJ)WeBJ+Mnh!DLt>Rgo~h}JUz4DJqGZikazKANu$bOvD zZLsV0A8QS+3`c5vr&5zN{jx2ISEpLlWxN?{zDWYq1 z2s)K%eLYiFvuxvuJsM(@h3<>h^;9_vh+Z_=yZ#n7bk`yS7y zl7DuiXe%g0@-*cx933g@9Eil~Da(#8BGt|4Cn+OB?8~i2ZYqMhKf^yf$3&i(TG8d4 z*iC?+^tG335CDdI)~vbDL~)mpUzz5qM3766BVhB6Z%;!&x_(HHP_b?!)|q0ImX*^Z zC((v>)&H|%S;#l%-F0pblLKVF-&2#_3o1)YF>&0dSZRqOw#ev~ycS!Jms@&k6`?Vg zyM8~1j?lKS5J$pa)<1?WQ5tQ1_4V~-@0Af8Tml-x^v#>bo-%Sp2B&dwOqSj^j$|GF zZOL~j^j3L_7&>h-r`&A#XLEwy0Rm5)EF^zWHE|dDx%hikd7vt$j{Vm9ZoPBxf{eLQ=AWQAQn~OOLR|n zOq;vq=mjRQ=~IKrI83)9#4t|KL3QRA0Po@8|E0!GKiH*A8bU7=)q6&QW-0wYN$fsU z6t4%GsMRgkOoM>1lZc!m=*Issj1S=Bbp?eylP!nxBUXUUEwSYSgf z5$(Fyf9Qk^?uvA}u-UqPPoPty-^IT4l>kL1p^;A!)LR3*Lxj zI|pP}O4{efWBcZhX+nT+>@b>)YP+OA?*NtjN7h+WJ*o~aP@a}P z9EY%V7cPG4X;S}~i0<>P7S&H_?{j@8ni48u<%ez3+o2@t6C9nQFyVshAfX_;%#NTY z){53k&QAe-d1$ZML2`WNa4E`kdpD^omlHg5t>v#FZM|awePIa zZ_1)rhdqVuQ`51Nl#<{?(BZAHq(oVd0bGeXD`Iox0R%hE=&}>jq&bOUfGvGP5Xb6U zOE<@6iyIkMdsHTvotlR^EOIFrONyxI|F;ok+@kuy!fS*Ns16LL%>Ha z+(gM9YSNOmr1C;eAw5$*nq-np{PC9pD>QGafo(#w)m2yM_ur4j*aX8+s~{(ry6cwa zy_AzuW)zvmp)O-7C4mKwajptYj7{?m-3J@`T`fqy!o=UzKap)-L_8)Zvlk36F8Dn^ ztk0QQV&5!fwE+x9Gyy(wW-`54GR}CC?|pUd?9$z2Fr$~$QuqNA3pW#o9sh*GPB*wq zDqL49PTFpu@xP=)Kn@1*U3LF{7LeyORu4L26x{xOyX5J@r%e07(QxEvhGS~=C5=lD zs2^*xn2<&jW;)H&wq$H~R~qNmkVVYxT}Q@ncTq~{=fWD(($J2Y2l>usLrzvZ|L&vv zsx>_Y%?^a!hP<1M2e zam~M2B=Sf=3V9DrYr*$X;&D<7lw~{U85lf5%dy=svozzZYv!FWS$|?^>4TvDV8HI3 zaJ(fLA)fqd_ZOlMjTF2W5D@wN`Fa=PbCYszf4u$5{n{GcYTyLEwb7^b$yX_@Bi1$QHEXiO zz_%qNKr2P0MS$&x3@*fBab;mgY-gkM!vMme6YDyO0sqD*kiYgZhzQgn$dvCuCU=;oO|)tMyemZ0-(=`67{dVT!~LKSNoSQIT?tDs;& zZ0^<_Xa-qGx=&TAmR-EEZsS0nv`N7V(nq2pjA9shawCm%U1yb;EB1vcj()Uns$SmH zSmJtJ5*~aEi|x~*{x+jcJK;O~A4as(sr~np!Q>M8VycY32MNCz_G>2Ku=<*(q$a57 zV8X7d2_B3{NCY_0pwD7(^R294q*CjLJ+$@|MI(jO^s&)lGi=8x=q_!Gjxi=AlW8fr zH*~(4t}{`2ke(w%WQYwu`<7yF!S;j*Bhl3oj^Dp<9{wG#D;U|Vb{MgFK6mty4Y@Ld z71djR*iOakP9@uPa-)k^CZWXSl(Lv1HJ*+!lw&w{e0zE*_~?GN9p-!4Jkkg* zB1!@%h&(FxM6)yR5IR`2s?4^P^jqcO2?$lj2F?id$TRveIwq@NL@rh7I@b@ORjXQ% z{2yDp5o=4vk8iUCN_nolNr)&ye5Z5b~gb2{w*eDN65n}2!9Q?rR$p1PjjFmqsB>jPh2VVOoYC-1v=3yW3A7ULiI zP9WB9_<2dT*qm&=AAf|cq3d6o!pHeg*vQD$a@D&Z-iz6B$G*%mGzeWAwmfue_1%CI z<75T((HwMd-QV8YcDtcqp!~=xLJQ2~k2q6`%OlGz7 zOybB^RX419-(7AOau*u^Eb8BQ%is9EOYQPndOCHmbjN`McXr)a{1~ohnIB{spoMz- zX`9OpaBlPJ_PkJWTmRWzy3w1o@U!lH=8GZ?*p<(AR~Akv-^Y!3j659+N-9Bp`pBWO zvxj2cnD#M`!bW_SQzH3k9JHZ2%~{5>qiSeDaDkJj@a`%VTRbHh@E!O{=S6d_*!|2h z%a$9k{IvGqruFZ3J9*!qCzAiji^(^*#WKO7PW#}E{m6Io*4C4aK^B+1;^_{45?qD2 zkEY3uoK`w;WJgyhU$*{6{Ta0)w>1u`pS)4IJQC4#-pF;^Y1fi}3dKi!DXo(b6VSz- z1~tTeX0W5pAvm0bc`(MYlo6}e8NQxNp}<7Yw> ztaH_T?hw)cK0y^KiAIDy94679lTT^?{ z{;!m+|2-J@s;%YD2c&!^8e#JSMreSzZ8MDKviLRXol93gpV4MtQHfAr*mv6E0-em> zP(hu38J1zcPT(9mr;-M;Snn&(#AqCRc9-3@03mu?s@l388@hLuGmjC+1Q|D@KUz2O zJs*8?EeMC+J8Qqm{z!+d+n%J)nE?Yw=ZruDk5N11b?YNyL@(qe0J9wrChvcted1F z81R<%359%Y=s)CVl$ri0DbYGh$j5%LnwPsjfo+`M`C#+jnWN4TdeIg7=jL(HN}pQ> zjmSJkMWK&uX&EV>V?R&D+LjrBhDeNZS1s zKuHJ|ckNoZZ7$osEjCBA2w{YBlgFR3&7 z6A>a^?egtl|6gb(64Qu@nSP1WHD9iC3)%fhE)M!CoT&ErIoj_CYRZ6^rUupKekPHl5h3vwmQT^bx6RFKX##1nu|| zT|4UDkB?lC3tHdjY=?~aHgH;uVVq9N&t#(Txjs3et1Nvl_nMelt$z2TT>;tA1&`Fy zq{a<-v)P~jX2^@$j@Y$oxpT);9h}mvos<=2o{320H}rReYaa>+-f41fN-gLufp(I2 z!^g)LVmQ|AOA0f2bc=clb!Jh=8~-X?z>|u$-4x=&nqnYc$qqjxhAiGW*jPr_jr#AqxK~A` zh%o!?WHK3Ze8pHuA9zNLNN`j-2MTw_Z*tv`N}anXn|)N$2Nlp4P%T-H@R zgP)HCT%0*CZ=b1Ez@-_{)V)jausjz3J9s+&9mjDJMY=z;T`LeZF_CcJOeaS;`r0Ht zQPstzDo8`mt?5Ku_seB;24{NSWD zF;S-)C+`WZ^bJe2x&yJXD=arHID|0n91Z8bjEW6CnQCYDGnlmtRMwB??Kq0zxB|uZl@~Ge*e5+r8Up#yjm;jpRM`wY|Y}K+J$G@y9#@b z$&DkT8k0~SG91$rs}aUo;gyPvb@|2xjin^mRyRvhperkzm1stSlWF(YV>uw*g!SJ8 zokynzf9K8k*-CNZ&vav>Wkat^pI8*JrujpsRG^bScYqqRaqj7_KP~q?&Qw}xnAiAlkr!H?s?>1DU8i}%k^ zl0v{89Yz)v9FogB+aw^`3Pgi%<-L0kAQ}PPv5x9v?g0tnjS(3i4m3CAO~x0iU5?Lh z=pN#;KhND!VJgsFa&gJ2EV-?6#2V|Nr30uXzJS&VcvKi2)gW-ocyEKY40Lq080RAk zyf^lEl5&yz;!-}&?ZR_p@q`fa-JPuO*`374?(?=HcPZbc%03PFZ!Lm5qh``uHhTq= zKD(s0g1V*;8l4KG;f=6ckv)Lu?jQ`)Jb3U4JUJ~8tQ~~oM9O1qWS6eu#KnK$EeXj$ zMUoh}Ep4wLyJl^+#s-%jcez1-vR@mXO%GpG5@Hxk`jzXPCu4iAWUWi5Je5sBe2$V$ zM9KDj{9eCvT^oL8jrwUX%D9Q`m2xob zqvXrQ54C@5Bx=fGpkfC}lM~U55o?I3wB)4c{i~Ts^+;ou4-{a_pO5YkI^K6qZcov* zzRp%q$VQ2L(qny(OSS#*+FO+;v;59j8Jzv_sq@bKNGvq*)@F}}9QJ+L%_aF5C`9y# zJu+|NO-mx&ygaZ@Q*O1(0+wqOOVQAb_{aEVEFa3B+Ln&vo$cVT+4wW!__5Y%TLkH3 zu-s5^wS#RMqNCA9;Cklk`7>-JLaO#9R~dX{-+6dDQ|*OobWR(ClFBr6mCJ@M!y^54 zN-co{1Y|7Z8LGQql6LVKHo2S9XJCV*-8UWTjsiEhKz(n)9TxkbPUg={=CBdGn3v>c zwYzGpUi&_5yu|ds1A5-=Q7r^tIP$E!XD zlCXKlr(O2Svb^DZj%6ohanTV*qUh_C!2bT|%)*>wA#aDwC*p=Y?GTrGx^0@tGAP|V zb`QXiTG^J2J!$mYqKp@e;NajkJBx|Cs3XMtiS1e~`L3Vee0%DnvOfna!qy41)dwp= za#)Fx)!-G1*rdc^^!y7ct_9ArKfIPmyf@g@OK5u1;sqXIru&D}nM|zXe%Kyr(`Wtxf)%m*n=>nk@>n=Bf1sE)k%@+Eo)!)rI~W@JO;30U%4ow z)@lIKX9)8FW)_bN;%o&b>eYEmkOrK1&#EibCwp|jmd{nrP;KwIs<8*kbyZ`B-z}3p z#HA?k_?hTvQU!LED3LFf=-@Qks-01&?@%3rfgHQbrUF(MGUmoH9LdBR?Nd|5=1_?S zzOIi_^q;)}=XF8t@XoEf5#+ovmK)wK5h_A>c?qmH-<-n-CPi|-Iup0hU#!RB-G54D zZK!tD@3@-!06BemS|Fot0_pr%*H!E|LIjz$BaJdVDda3lU+dk@)i3+CaCjM`jn?Ya zKixH_)n~?)DLc}61f-jZq!BrMPivSiGJT|4Ab&g7@P6xK>}Pq@S-0ft#JXZ>Q^h)Rb%wF%p zA&x%+2EVnTdRjzCJESlgF-w^L@N0~2qqrsNhR_zy|4w=k4#){DowIK7Y+>Yx*)u_0 zMKNc$AYk_K`*_E$UI8Na)3aYY93B&E6$69_A z2jX%_eg454`B9m);HoF|io`C~P{?1oLHCY3emwWDQ_G~jo*5A>r8K{>g@L!D1uZ|8nJrm=zlA|=#meK71cwrEataq zg~~tkmay;DwxNnMGqXG}m~mwwYtlixHmdTD_VTM|h|kDX!7$k4>$rWDe1X!swl8M0 zmu)$W)_U65ga$Tuz-Pk(qTOCvoL1w{EGCQ*TY4$V;$Ofm?E_0uWb1|0FcY*7vD@1iFzMv3}A+{#6;2$1kI!kWla49sFieXDsELK zVVDzt{sucZT}kUG6c*0^7h`W7R@K^d4`Xsr(IeP|L5ZXwB8^FlqS9=Tl$MUY2}Myv z=}rSsa!Yq8CEaWqC8bNczIkt~=Y8JycYW)Rqt|iA+H0+Q-gAyQ#+Zfu$gdMTPe-8l z(NgEQz|CU=3KdWc14s*mWmRaanADd;ZnPC|5J8qa1-1y1=2v8se`lq}Fy&Fey*%OYEBwOOC~FkifYf#rRPC?ILiQH|b1S@7a8BA`eV#B{|HdUG6%5cufOGvZ z6X?Cyx}lY`0yPXmY}%_BPg*tKCJy{;lwfM9>JOGm3n_;W6&;Xz<=N=hbf78gc<))^ z%6NE~JA70UU?L90-&{Mu#%c(b6FhHvxE%4FM7t--?H3WxvPKF(u`LbL}RcMJV4L8%dc0U2qT)6v86#S2ZXb3x03(7=&)iIHVB_tuH?Z4FrZx|%q$@_ zs&!mGK)=mh!BsKx<55KN2o%Cd&dQ@(eGI$mcjsmUR4J`dW3cgx&Ru|vcmrk!Kk|$d zUKH5~r1d zaz%zLtw%cF`eT!yw;g%7?e;&HGrWZEGp2^mISCa?Xr57_NU0f^bIkY98v@hl3W+oK zKjZ4=uwTRIq)9R4V*y8ZM>p@Z@#R?MX{K@$p!tRoN*cCO#SUY_@m3`J*r2zbkq5om zp&6K(7Zn$05O_XWu{vS*yF%^)h)i4{*gOsdxN>Y8`T-Q~ z@R0*GC$D5~PJb++vlY7y0U&^7%EjvJZpK({0C9{^eX9n0w8K@3+jWrR&`=+%bkS5$x3$M-(}Oj1t=>t1;iZ$c|U@@xpFn!Ui@6(O$tJaJuG9!bW4 zq36*O>Lgby!32SxdcTd~I502u|LX3=atv-S07%jT)4SfxV{mTBN%TY1a9K#y(bZcZCy%zhr-KBp3wd*xt4ze zDs#N9^?7L98aL(J7&(d>h2G-$^UF!D%2e*cInBqb&woe_8q4WhTpfhWKJZNf4AHIP znR0W*@qF#AF+dJkbf!ej;zoj?d2j%4Or^3A3e$wg6zfJ-DmGhPy*HZ-iOXqiV)7t$X!GQmB9)oHb} z*Sgbc30gMiS50yKR4xyn{*SkRH;rxT$*2L!EeDt&PAn`TMgg<|8C??7(_6;ryuZ+v zOT&YOhA+;cP?1!knan<{4zXexwp4bc`Wn&v4WSV~eMf~AwcBLdDS=+>J!SbqqlFb! z5Tm-9k@g}RV6pzO(a{00oc2Q7@$M>s=-42BB-!PGL2hhZT!)tUGI&@g?$_mrdF_JW27mPPpcFgJ(d zpPkZrJwrpf76~aSazHg;0!GvcDk_^`tBK4zI8N`#hGyR& z5*PqedH>RHke+yU8cS}x_o^1&n|iUy;^3NaNPWqjcQS>Lc&d zuXiplEY{?U)wB@! zVoOUc7WBZh@7sI z?$#IA&dfs3sS-#ioX$jc%gkBu~EpQH_PlD+O4|d67PfO zF0^2x3kn=FhfP4jGA9fPsyNgd22hE~l$7Wj2Pm#X#3Q8S_f@bT67XUPC?}lndAXNY z;%)TJF5A1B=~Sf(oXX?X)UgpxsnoXfxS64VeWSxWNn&-sY!T5=h{8=_dwt#6a~=fF zAx`=rR1<-wuoQKrF_<3A7@FTLCnt9XsEk+<%x`FogycsT>^Srg0Zej682Nw$BJ>pyvUCVg-*x`DA^>WBln=fD7 zX}>oP93=75+@=m-x`KqGf2r@!stC04LPFB|~bdAW&8{selY#Hh`lD3Pc0cB6DOfgN@AT?4$9>r}wHz!L}Ip-}C&tPFx>g+&E;x%e? z{BZ%;a#w-0FRjx8be}P*Hr-a;Ng(z9=Qs=_URx>`nJi}cvnM+jq~lwps7{<10L9oc zrZ^wzsRseX2}I-&g>Ede6In2Tazp&2Ox4jK2Utobg69GzWUMDAbQjfV0>^)h@yw-r z#IEY5u#=p6x}yMOaTNP@+hA)mj43-Nk{(<*2ZJ%Z(46H1c%pCa*3-EXK*(L(r6?sO z6%89JUJJB)dJFkvBf`@~I~cF6wbwbygUz_KRtz*H7qcLj7gtN_7k@B8G1u1KuCWj? zex)fmlLFiJ=Pu9M!?#iH`MiMy2V3BN5@DtJu9p9K6~>*l!UsO=6#Fm{o{7?&iUu(LgIX_R0++mTIAiFt|^^V=OKxD@3(g;0uU)K zm~|V>Zx#0v4HnZ%H=Kfc)VOKE0ZOJF*027A7S4J!ggQ1M!4GPmq;iYUkPvB7b@J{4 zsO)Cp)+oWwWmJp!3I3>>njMYDS3;L*Wk4B57_nq_TdPDiLy79ZB!5SL;U=r*LO?lM zsPW4Db+B;x&CE0tHCK1U2!jvbcUl#>Y9K#xc=QM5-h{ejqr0ai8(bPFww4#8xk1LS5#weV4^vrjp2pYjxd zX4@D@<(VP$U{#=Zc3k~(XH#?pmF(_k+eq|}O|!AGUZ|=p={K9J8r()oeF}K5USw;I zqjw^?>e5reyP$`q;lV6N7$|)!f$AsF_V<@WgdWR@ZAzF-|+Bn5F9en?#=by z%?fyQ2VrQyL{koMO9DVeRE6fX%gD$uUc-TF{-jO!UkRd)E$pPL>oeQNLx(udgvv`a z&F-R5&b=1);6dQ|43V>+$eQREvx0rj$6R5p>XX_VbxGYUxV^JL`(Fshr4W&4e+Xiu z=Tw<`%La2iv*e4-DGQ@KX#v}T69j;xig4834U@-lT8Q}GE7UfcTz z!XRmEfY__j^aF`E#^yR8mg-uysF-A5?}0v+aI6xf@fi`oa31ybJfJbvC(|OAI=vsF z&C1MW!a=4Z=dlwdvEM|<*E13@+8JM$V&w$2JZvqn8+uel_1{=d=zU&Y8SY%zRpR!v zl#JJnDfdHpx@ANozot@568?dah$?Y~kT0DhpG3VY-A?elAL$Dfr$^ZgKq}mAfqxMz z)^GOGIRK?+KxCs|BKdHo2tv&sLq+f&Z2(vwfLD=qht4Fq#e ziyf%*@lje7pZ>~>OMG-lr#)k&I`Nak`rO2YCkzd8OxB$0tes60{7Jr?bAGM2KV5wv zx}1_ zmFmP8Ui@SeCn0>>pz{p$rm=zXv74K=lt9le1CKcXF1kCE(F$cyc;grQ+Q zt-5Y4rWa{&Y@I9+QImIMYue#xU;^wz-;w&*%M9df%X@CPhX>QO%$Wx4z(;WObopFf z4Dj;oizt<8^8 zR`=}M!;yH(;^7%ZErWtpL4d}iSurxF83!-KW#Vfa>C9|CcS;k zLg)|V6y?*}Dxd0k?M!#XTwvi^sU;yFQuf@#Fc6YG0Ch;AcJIa`J}BwKJP3CD z>SOf{RK*hCU36v}ic_n5pRU+wo@qXnOyf_{o+Gcx<4+Nv$c3H5iAD4EZrHpJUi?Po zvd*mWe0u-FE)t<=o2A5#4tl6+{Tap#84h*NpFIB9(Nmg*!zWnGU-G&>yA8?jtwTc` z3&WHK0kh%p3}jPbym#*&7l`{EYC~Zb+Q8so#c{o`Rfib*C#fREnI2PEGtTWh7A3AQ=utQF0Q+KXQzCHk`Hl7Qw9AOwFx?rXeOj zgTd!py3BW*h7f~P8Ne`x!niP!=3KkyJAPj-XIX@st*sVrV#O9Q_mq^Ffy(bIdg>H7 z!SHPB>2A1Lc%o<>QZ$a^$5$OW#!-AnT*1n!Dw)@r;pP43yX|<|kchlONiUoM;<`EH zpH;h#s-8lOp5?M_`qfs{WQl5;w1y94?NatGwr4N;LK4-qKSEh-N5LB&eDF#@&GshI zxJKu1j}+fR;~v)4 zz#+_E>3i@Y^UdkwWn&&lzhF7lO+!vLwp(MVfzz9kJlHG3`rzFYqNC*8vO5Zt#fqI8 zyp&ww{wH|iPZWtZI=``|d}X9;{4<($Zioh&p{@Apd#T9**ot+}u$XAIB}%HNPFtHP zt4I&`EIh=!TFEG^b$4BQcVAuB+Pm!&&W+b-;-6isFUo@FP9zXSu-y|MJb%E@VrI(8 z{F$dV^Z^g)sinRI#5}*&f07gnj{|L|&y#-1E;E_$ywvXE#%CGdnfuzX^iF>km@VQH zgN@XX1ETiHMx8qs$)ZC3F3J2=*M8ZmEb2_6Hln~ z)bzaBIj&vT-`!TqHjhTAOF86dyXSN2GZU*!H^=z(-AZK8?J>RSDpu+KSk7;7iemB} zU@cH+zwft-s3q{*uwwLndl$eZ=Im0!ICZ*YEcSGlY#g?vP#e|PlZE^>*gAbbS}6ho zRMkDcY7hA57M?)(3?F;anx{LeWh+_XYzjaL;MWK`MoyY3&{+4d0G~H=@R_Uvn@ct@ zIBR~5VOr>oOO%1;HTTcy|=a`z(q{pV5i zahQdjTYX1o;J&^bx2!BTPpZWEC$$#oSbS_?do++8M$XCS-VS^4#S(8rEJp?w;^bFh zy0Dc@w;~(4?6Y{keM_|=JW^l}hG_>T1beum*sBu^sBhH;DkXC$Xe)+=7y0xbh{v>h z+aF1gcFm+x(V}=I(3j4}TvIcCd(0d*JIjJriPr8${GTBUfLNcKKKzQZ^W+5@8)Nk% zYKzY@`Ef16bGGy^U|9HdrzZE0K^UAr+<bvi5EX?varq6^t(Rf3Q{@tVIA$p0@at;9 zpRU|h84Q>1hu9hE4Td@ZI-$zc@Q$A!Gi;SaDQKA!dw@ig-=e=EgY>4ksoetp^~8u= z-76-S;$x0-llPh-v$($i#C}4~J@N|c?|+@oKE3SnnhRLjQ?jghbyX&IKz>$@ z3R-WL2hZH>swVKqOb%$Pq33L)I}lfYq}&o~?OV;>VVa^JuV=@-fTxv{2Pn1|5T9%q zA2bL^rZ;lF-D$f>58&zzPg-MIRP@jm#a~nZkZ>T_fj(m2qP?*cE~00hBOY#>fpNTo zQeeVg1xwMx0H`Y-_rHIk7+^am7M$PI!8)^21HGnrlp9P5s*mZs48Eih30e=AQUz7r zg$$14C03MXW|S5FLs-e-5pwPd`(U+EttE+UXHzY$ceuIG-tmPcSJ&MZ@7uu6U0ZTodx^B> zNs7CT!}h9mna{AqwW=%&BtNf7-1YvF1yY%Ewa%lQLn&%I{nrIrk zJ}M4pbN~K*F@+unCFsCj;9=N&wz!O2$LV}GbTplHs#{PseJd2)DK#hAG zku^6IAYPGxEty>^sjWVLpFz!BHTR#g&^U&i^&M^|DohQd^A+n02dd44@cq(R%-rR0 z^OO&eIDacjF($hiq)XeWw5%KXAhuKQ=$dTf3_so?{Og-08Hatc%!@=1#GIB_ycBL< zQ0+gbIQ5SJ0Hu)0*9TVad93z0%dFgA@vV)T4g6q*VB`79J-)!%`h7T~l7(ybEh#_$ z@`{+BJ7hTTsNT5Rb=yWYHGbP>fhkY7nQU2BCWZ4sg`@5i*?qttb39tz1d6` z*ZGQDxx6_%EW!O7GwLT`>|+JNhZsxKR9}Az7GY8zjHIF|NAvQwW%2)rHrut0Y(+>@ zC15A6V)I_8vTq^%kGrdaiSHhnCJI~>S>C(l!M1gZ;*Ad{QKA4zkM755t5}`~T;|=NbXRy1BAz>NH4Yf|R z-9=qggkc5Hd0e`J0Wp+EKO*ViCJfc7n#XR`wP!FiRk~OAuQ}I^k6k%0k!IC5!44se zpAd|}XpjE&3_2&}Wi!N3PJO@&Gq)dp?>=!LzLdEc9xT+9iNJ)wwMk$p- zj>Dhxb#>1Tnu8vWyu)K-0bWC2#NebIV1+9I9*FiOH4f8m9I1N@#F2wJ&OfQ zNDEH=uxOi$L&f*#7mcdH_P5^jgq?b4&Rt!==i^oLD)H}lBEwqq4f_}LAeuRX{V{1m z3#?7+PcH9+l3W$_#*ZBDB%$ z?HjeSwvE?2nWTNY`gJ9t?(K0WC3(#@fc@Gs7p?n^hC(^>E@UUEZeuSf4O{&1&vo1< zs+yfu%L%NP9ODkv1zjD+L^&2^rq0fqr=Aw_AJG0Hq({rhn>Xz-plz$8dRa8%!gcx+ zHc>eY1{d+hZsi%$1US8nIjnJ0wnB0KiS4Z@+Wa}jBiQMBXeCF#^7oaT3BMw7obg9z zioJLHKMdPQrq7$2xQ&!hwWleE^r)Uf`FtU7y3`aqZxuDanmN;04Hsp$((aL?)7^n( zWjB_Gcng_9zg(@MzQ^GeJK6;eEAc50aEOrd_0so z%>wU=P5+aJLo+bHp0p~;{*w_(kl%m0mUTNUoV>5(bMDI)oze+n%SHOw(z|DR5)f(? z<*7-WGg`(_##)2m40(x!7`ZOnYpkZOOE0QQ6fVfKuJ*T#J-UB%S`8$n)uFte&ZaM# z9!{dd~xrEX)UnpOi_!^jp%dWsaS^8MKW{I4W1?pBbv={hoyYj2p!s+fHpqoU3N`N4K! z*+8?)g<>&*M=Pq|-KZ#Oq*f06EBJgoy47EKf>jA+kS}bvoK82w+otR--9PYRaK`E- zZ~tc*p9itrr@tyr+?YB1@`wPpSln6Cs@P37}oxkr9KHes&>{iL`nAppAMFKZ4wPn_7Y#M*k0ii9l=LnGwq`}9&v zSSpJKiUe4I0Tb=>`B+a`!S?H#q;mjZrPCc62RyHqz?xTVIm>{Djj3KBW8Zny;k5hK z7D&|?=xWPTkL^2MYTogNK^I>~Mx1&6^J%RYg7yS`+N2fb=qp~Ml%X-&WeTKmr;&7-8a%tqE1BPmgQJCQeh;R*!C#zS8w6;x(9M!k zQ&THc<@mE6AQ}BtI+*p}PBt=4u`uOLJps+b^0;E%g4UUxbI~I;yL|XE-bUgf!9FEK zp6xsZE%yN+LUX<8a@o)SLDs-=L`vNU(3fo4zkqKNlBm4|Gt@G*15pqsR@VBPu)w0D z50n9L2k-o@n1u$81VPvT*sSXS%LfGZp79osY-uW*26&@EZ~m`yC272zVEyh=gBPPi zsoT?<^8#L-@yZi((li7fE3Nc<4)*!*;^I>10LG(E&Z2()+8WLddY-Fkh%)!<5RG$h zxf_yCDRogZRS=UbSb%A1vdKE0xL>X=r`vzd`1<+o^}1JL zowS!K@(0@sA7{Lm65{Q#VYvj)=RPKQ%pCwb9sumcucM0rmN z??->iJ=#Lky|VrjO()R^g3@RTsVn(_sxXLbvQ$Bxo*TAVx49QbF0H7X@&#E3bR_A&?#@N@#sF@%47t#&Qz?TYg)nG6*5Mr2gkYH8Q+T5JhX$Dr< z!>Ehn&3q?D+`=Li2cX)?X~Vy^Op;@jTNz}jn`_Dc6P6|sU6IP(Ux4^EzXOWncYODq+49tbxWxN z9*N%~CTKip;3dennELOclCK1b7Q-RW2`B0mo zft}^D{`EQ0eKjW;k~?1YrCpSQW~A+$RB4J3cA_i(8-|7>Kxb$SL#!fRM?#h@%8v>K zP`I||7{YKB-QN28dQXL|d&8M__gUzmhrhdyzLie-`Eo0UzLJ`r4AzQ|`HVkuAIvGI z%CIr}@`;6?VR$szt+>S&X>{qCR)KZ{>fO(ELFZW$@QVk$@-#3ggQiZkP!G|J! zmIMWxRSfJ?_Er%S2cXt49yOzbX;?*^dzMhE$p-;vy0u-4T>Fz1r6&tF9p|#r(kw}m zwstj*X}0*Dv#GuI63Uvl%}V{t9>ia`R!niThNc3k_p}pF~3tvuG@YamNwCxNuPa$%6#~36V;h$U2Sy5EnGNl4| zKOD=`6@OYI@f`{l_1KK4Am}dK(yfbN13F>nSQg}v%fMnjiz>cqn)@&}vh4S>qTz}) zRV}E0g5{~tEy%u^;Tl3uEepfSGT4sO;t?$U6ZqxLOTN|9mh5eMhWLyXOaH7ah!n7` z+TyN}dQlkR7M{uzKnh520csA%S{1ay^IpUWN+aA%sZU@a6Y{1P1h#7mxV*3rBWIm# zKy7u_mS$$*ar;EQcee}Up{)zyRU21a11Np9gt$e*y^9&mQWp;L-tX}d&7k&CVePjN z6SuqR{nttIZw?*i2(~Alp@wb4@8aT207HaE!O{&si5nwt`dHX0)f*I3dF#adh%}K< zJEAql$`g=?8h6eD2?yf=)R)e0c=2U? zHiFi9LWU$j`+a3}ns(g$Im^nq*|Epqvx_f$jo*LiE6Fm1WO~#5`2fTWnFZ;Hv_ z+k%`;Bg&{Kvm2bZ4Yzu4jo$s2(DwhIWS0C|AV>L-(%Oom$pgTQIsTfZRKr|VEWk+J zl$Q5ev95a1!3*Jb*em5@d7}^AW8ZD-C1f}}80|dLZA-ki=s&w9EAzSU0R04Y!!^{m z*vmUKVF-thzdr+Sx211e_dka4#7vEhNpnas zi6d1Zy<=FPW_?p)Og{a>kC81)YxEtbYPJ_3WDs~g;%aK$kZ_~_OR_!*-h6?;7*#8P zt5*rM^@6&Y0G$ey3W4M`43)P10vDw3W;BO7l(@NPoxyY-iJTa@#}@v6F8yYFEBE}e z4Z4rS!}*b)`8M@*AbcMeuuiZmHgAc$=i-1wSFpK1hwiu|jc4;=D+*ma4bH#3qtIzq zKe89Y(J24hQ<`K49m9@-;YgZaS%*qiK7OE`xt05>>A+`s_55$WuaWAp z`GqmtD0U~6OiX7=weUCo)q8jcM{NE}jP;JKs|s%xor>xbaOiOO4ixFY9s4hdq7gTc zA1ELWO13J57;_jg9gLwXZ#N zJ6i5`h+#l1Dant>(NTkTa9j2q1|3SOdXnBHmMV76)qR~Tn$Uz1)4X{Fm;cYus36c< zxzZzI)!T;ucnUjT*t671AlTSBg8VoXl#<4?U`SR8v|V<%6oD|)hR+;4HmYEb1nGn_ zgpGRMxKKLt@;<8+%d2YT=he6bDQvEVE_4Jy)_w6!?{&ktnv3(VuLN6E+A>#EeC>q0 ztqnd7=AFiwGxIdt%XE&4*N^$$5@g)wDf@XQ=t8M-^jW(2tyZ~x>dRJ|(D2>^3R~MA zTmxsJWCocBV!dFMdG8zxiw*z{jleiVYZH+XAwM~ovja{m>H})2w3_yCeZvqA>;F?8 zmBLPM7;ht~qox=)TC5w1qvhJ_1ezL++q=NSGx8|cRh0hb~zKLyH zxQS!Yrx?JRe;&JUcH|2H+Yhy{~r45#oE)H(+mhYFd z7R!$Icn659eolUpfZtou8uR>#R>emjLIxD!-7J5$rs@5s)k%szazf@&EnFAL3|?e? z9&{?jGJT`r9ANN|npDux1N)Wlgg?^=MMFq&@$vD40=>%~)Ry&^&B0_t{1Wv=)0_HP ziz>Y<0ST(va{C3wIhV)vL|8zUJF2114kxzoHiz#_s=B?bCYe|Womso$$$$r4=V4ni zDx{X9_M4$giOM^hO+Zj2vEggEQNxk1H@Xd4tv$C^fe^cB8+t*XqW6X4t=qTG-I1y+ zp^&<<%c3-eRo~;fw#5gt$Z*_N7rL(cXjOBl;;qU>6yuJag7FyM;GXma0)9{8jN7#< zjM70Gm~tocs!GVhIx`nX`H!$E(=&xz`haIXLXol~KqNFDcLd!6ji8-4o)1)e7y@4y zWg2&0M2HCRr&JwheIv!Cq}<6C4C)u5@!*dbtH}3_a%0j1C(M2l;+G|ET9JYvGchntJ8v@0GCU^8T`vAlAl4=rbeV6DyLo&3>^vd+R&kf3X5BtTOeuh1IoH5m{iE|z6u ziHWft&wut3YE{Dn%Ncd*Id5*tn;H+P{6ivc$nc07Wqf_9LO%UferD~v`W9^&CNIg+ zn0OxuG0;|P+OO2BN=(}S^qq(xj_9T`thMZevtUI{(K)%%nc0!QC?>Mvy*6o6=nHHw z(?A)jQ}fNhPG&}J2OW8tbwqD+EK~;#t+baSe&!{2EoV(2dKyU9>sXj??8pNZU(Cqo zcpGX`k0=fl!LyzIuj0xFt0 z^FymUe1_`|NwE@vD}bcodo~4tp)Ejr66Q+{3Dr;9f@hx&m=w)|X<&hD(p81)>z@ud zp2FY>2@xGiy1Fr_q2M>=FoiV-)6L4qyY{XOXc6JV#t$y|Mh1;EcYKe3+_xSe6*r+| z^YR9`ty!{kb(+BN7~Ku1szBy|fp4~q?9WQkc1X1A`qv}a;eLH)U2T43RKFEwm>-{r z=K+je+~!1WxKm##S9(oJ~&!88ebo0&28g>xA3g*^_5zL^2bdWghdbbz` zgYnE+L<2o&YP?o78Cn!s84*DN?5@>n$0|RJI&BO)X@g0m!|ZutUa5a%`reBBXqtW# zk&=iKBVE3r2sDVZUE$un`QpQL1er|@x_}oCX7xtf>Y|I$n-5Tdxw~+eCzR=*_9eh_CNsCEEPk)cxmAr+Sw7e!~D<2@LGjM$3p=Pl2Sg zG8(caK{=(PJ}IA1^`0eRj@@F*i+h$WYVU7!-)+mXM=ZF;j3(AV->Wi!-|Z4v#YdqS z>{Q!0E;-RJpA?xI9kcG6$r|bDOp1+_a9r)|4VeJ_l0WhiFb7uk!iOQC#&VTc^dij7gJuVh zPJCC(dU(Hl4$>pc#+=CJ9h`8lvnq!xE%{8q;Gqz-Q;Uuo7#aB?DxHC$AtKW9#s?Vi zszX2NXjV z`hWlV0?xnD+1c&X;4kI}B1{R+V;4-v9UB3HFswy1lBr7zh(p~REQDQf#t>EDuT8PEpb_nVWoVDrXYqUtFD|{)ZXIc8JCW z5xM;L&D3lH*$(ZI06sXo1!@aRobhhc$z$)ghx>4#a+tWDzKe96(jTn!kHMO*zIu~$ z&cH^W_p7yi@%M=DQz4R0vP59v2Oio-864bkG|xaM$A~D*)_j}bw)sU*c!baoHWs9l0P5n@jW1QHq&tTN91M{Dc`f4?P&}1|3d&!qQu? z1gM|L7LLTL^lK(7iXHv7j+o&U=&|gVF@1v006K##%w=ZOd`L?0Tmk9f%pvaC9G{Ek zaFEcg4mu4Q>|{aku1|q!nau3$v{5XO9*fGh5&Ku#z!0i9utX1}5a3tPVvXWEttdPU zhnU0T0Z|TKfp36Al>gk>vtHDk9*X^a2_%c)`-xO?P`V&1i%y*0C!>OQ8hl->%tvJ!T4SC+?3JpWv z9sq-1=9a*4uWKSGCWbLKKAziCB>VF@^y1f3(W*r@07uQ%Up-K?lYWY&FbaYWK;;xDvu=fkGoY!VDB0mwvlG$(_W3D52uAXk z6Y=;d^GVQm@&Xlrl@VsmhzDBmF8~`q5cM5l&8D1;JdHm0b*>!yygkT1E0BJ~A&A8bLs0{1Siv>$NlY`NuKfFf`i>yl=*YTmi&e9I4IKEZu|ZR|ql) z9d2%2-vs62bHFQLSyllNPe-^6B*~;X#MVd=2_T|V&|+mnPQlq%Eln@%T$=)DxUsQO zGXna=)3MokjS=r(H*bIPnEXbHFTk8FFAYnEm{P zR-_dri6CC$(r={a0~vq~-_*Rl&c@m@TByxWaPE+NW+Aa;3b+~aK}xs!jTli#+Gy}m zL9z~`caZG20{ENE2nNyydyb(%`Sn5hsf%a?p8g~wa)Kg64Ihu@jk3|&gP%kv}}YE|zny5kt&@X>^x{I@e>i67-O0HEkRXuAj^No?LlK6|Lc zvGd8bK$M+}80~4xFz!(qT)&52c1)G|==41i$O=K!gh2`g%J1Fb3lFCdCm*Z~-r5RA zY%4%9>BoP|7o9D&q+VE?Vv&vrKzaY-{Q}ib>_oC@pxv$89)xm%a`YvC9ir#NEA|&m zph6|}9uy(KRb?S3C-?F7rGw(+Bbuw~;$ZjJ8_-{iruQsmu&}UjBYEcEhu7%%rvm41 zniW0_Tv}!OvSEE6=UrXeL)@kRyos~9{*#R} z5Pj!uYhk(xBlIi%p<20-he>Js^D5%sinnd+-PYLTY+`Jjh+D2w4?ts0L1aiU{oCaf zz0~>5(~OT-o1ubcN7_jo5JkRcdfxs!{adI)IQrj*#<5+vcMTsP-<8;fW`*5_dj*@` z%6xxyxPXF5?ga1(e&c9A-}pWF{=w;PC_h1xaD&3_$v!KX{N)Eja#vFKk4B1zRb2KB*F`omAIoX-CGc<%tPas9!F+VUgE&#?Uav|LUx2rTh?&>=?N8q7}g zh5Ek=ETT%Sy4A|`%X?@9tiOOoEW=?U76&k#B-qi+ZdGvPiBr=@}_>?^t5-EyD6KJE-~xaE|U&%q>%TqA%7Hx0{><5w>A z)-wJ5A)+fl%9?t6-Cdfu2Mww`!hvB05WeqHEp4W)AUm>A*k{%7;I3wJ(0Et2MP{fY zyQE0uf|lDg&5s=a^C2%5`WnAYVIItWDnQ#t5A$=dG++XY+KN{Td`)$91~Iw+%0>!z zzsv=$oPbBTZJ(Qq!>_3tzs~8{mc^x`uZedvijGDTvY+SUkh|x*+5r|M%|gbazf=YXM$q#6|nP0DBs^& z_Uw(ava-wB2+#Wa*r$e(IFDjaR+3=`Qaz*LUWm;Iilj!^fL-o4MoCcYe+K0QG64~e z{U0~Z`3)Pe#5&gHi<1I$f=Te!CEcM5W;y@!;dRYHBrQnkc;PXd7#bXuu(r;C;M%?0 zRx3FO?5f2toS^yDJ^XWi_LTvLEMR<<#Qpnk^56o?sjG9q1OzTM9IsK^$EpPYFCh0w zt%kXJ|NR(<*E!>RrvhPU;5DGU=koLn&!H_xpMQf05&ZcU=p-x1)ua26kw0Z*ZfF>f zt|7qoJC!m`x}8uMZV%e^T#pFmOkMy#t4?peth1_d+{r~Ti zQWu#1z6!@UnU7C*7dYgiPJ0TNR{#n4Jw1h6w}<_bG(2^rK3maGUZU_Qua>7GtN5Uibljqt zYVY79X6}EM|6D22D403{3Xs^l3JQ=4KyD5fY#AV=di>9A!Zl*_Vd@ApqkD!FE@*1mSU z`TG)zJ3%KFOzb6K%CaCtxfm8xLE1n-;9GV&(Ugy*z~uGI`}qd`U4|ToSshH5NLL$) zJ3Ji}T*Loq^){`zqxwa@vIzwsKtw1=SsE+GGxJa0t`;s7sL z6&w(pc2Tdxs@RnF*h4N}eACIe37YhdKm)a~NnaX`c7`bHOhXS|a;qe74bW*qQ5bxk9tK3v#h(hB3Qy6(V79h+#z!v0VN zD(0Fwuu`vrs*wSx;f_niCoAF39EL1v<4id%HUSZQVX75AC;;ea$(CD8qT=g1Qu*y- zVOh^v;BL*dM<5OnzsTgJ#?canuQL)lQsI7shZbgt!|sXa8RbOuGI$aCJeWQIzj<^( zXe#|hq^qF*U_DC%QY#8U+ZR!(06Sn|aB}eef{ycInIMypP*V%%vjMZzN+eWrKgtmR z7Y?l7tX}3oQ-E~2a%&Zdy77~x680BVYEATtJW2zA>!^PGfnOKRc@i8Xq~;&DS3EQ| zOf4}$E(lDe^I+ov) zIwQ`tEDx>EvB@Eo+OJ#2j)HV|=|!2F&U@9!R!oC#;%~;?s}|E%7frpP=U_mP(4Dsk zvP-a6pb!W`{ty+n955;JH;7}<6#Q%05_BPg6XFmK@+}^2UJIjs6%QWm6M~q zG10prV{TzVI(TC1{Jx$g_B&Mq%_!W)M8f#UX6DZXAu&K}MYDa33flpnL60&ERcIr&bBOX z92`XaSI{v_4Ylo&5Ci^LcOVShAY!4=a~A1O*-QU@Ug9jRFYF)RY^6gq6XpE8Tl$sx zWuZ+@$_RvVfx?qXCw`q&lnboM5%&0P&HIz+kdR%oU2~O7`g^9%{F&5UKtBRDb_v|z z5pftKbkIcF`g}%y1&|8%@u&pol>Gm6NQ# zp0pAE`xbMO=&z7dblzt6PBdhYzr&o|aSqriHg`jiiAkv4$pUX{bvcKc*J>~QQ&T^U z3$;ImF)Ff(8RgYP|AO>12N@q98eFDP`x)ThMX;(DbP0+;4#@y^Zi4Ip^Z^r|NOhmI zi1bBz$QSOgN`5_*p^#Rj0AZ?PPEXR9p1$FlYKCj5wk0QC#l~fve?Z2sU4s*dc1kOvPqBxn^S9VDLKK4J2qTE5Xk6${G{R4cyUJl#9b zmM%xt&U~J!LB|7Z3G54mx`->Z!M=NBV{1q7iX&2_Bbo%YYCdKmWu{aiB28#}G{|;tp9S+3Daf%0h9Qqln7~8TX_i~$X3CgD3&0ipId3N_@Yi}XR$;B%@|@3YcU%) z8P|n+t75t=Ynr0VGegWK?$b{UP_0bAy1XF`w@2|8Nw^V6!Xy7I+V8#L-a>n$dk3_% zI<6K>%v~J|kkoE6kRS~p^e((+OBuB`E^5@e`BqBE!NJD^ei%{l3hvjeXap2$JXoy3 z%te_O4uCK2Fn1u{2#p89T$*8moH{qen0kRP#oUsVhlza7z*tQsQSz&U)*-Msic2K^ zjCK9LK$t~7YZwD>UUpnh9O@QrZEYegilA!o$_U(l3-MYo%Mh%xYW6TjcEO~qwBGq` z`(#*I_5<04hfQ5$!R_I@5qZOQ3`pdyvG+u2^vXIh&}9wEF=ZT!;r~yE2m5BOf0xsf@;=HSW$!5b1CacZ zJ6PXE!Cb}cm)yP!vIf1Q#27RtNVGX5S#bwk64lXu%y+a`evHh*yqgd$EE=3z0iM9; zP`4xskh8Z99}?6HF=(oG?1v9tpu#aOOd0{^L!hG3qG?7iSWc|o1G|Tkls*tml=r^# zpnH=pRjs9`=hBY-BP{;u&LYyX4ErF6Y&>!^I5a%?zQtf#%sYmH`2%!DS6-A!@=F3s z6u1uBx{P-St7za0C}wy(L5#ApTuJ<;MYrVty8$}nVLQZ5#=%OMTUr$SM z9CkOx<2Kfhc{<0*eOD+)6TpZi$p#h&E$Wlfcl ztor&&luH*#r5!e(=MOX7xeNvtkU*b7zFG}(h8XTG4-3moj0J!YWn+Z0*%jD*Y-Xh; z6qpxHS`bsiQUBF7AE#prmVxo?>UY%Cj0<8%VJgpwBBHr6;)1){R+;Y^ENQ$tkk&w1 zjftcrcHub{7t+s-07}MiY@apRqO~g7YZpHDVz0>vMahk6RHd;mV~ar4h)OhJGJvu6)b zaQ_9DxSqq?^zQvA44q%B;L(3}R%4^jadW4FyON5E${_U2kbzW?M-enKFrH&1;%q2z z95djJxMpMI6+V@JjxApOBI@uwJ2$}?N|cH&(#m(gU-)RKB2*Q6dPFq$$C0`qI&0mG z5$SQ3W8DX5U){sYTF=Xr= zW_yqJQ7xv1ne+z-&cD%l^k1eUN0_?kBgWs-5*qC!#~x%VCyue4U>SkD>p$!(R4KmQ zFtffGgbyd1x8AeRQQ+K0^t)jwWDIU+?25N)RI3DcAQ<&USGdxGukOEfmL7T&V9&)M zBI5Ls<2SVsD6q`{wGX1+WSG;&GS~gjPiSj|#y=KUw?Y^19%9F5gELiBboBKNpj%WS z>>WmaO+8~F~4!i1w=FgiUH53p0{tchm*lEI%t@ru__|q@YE|yb@)B?AX5U(*n`jcAQ}6a$@8JPC`j#*Ez&x}ZWK`2PXlkDs&HYFAVtruEM z3daceDPMcy-mq_Hx!C}KKY>s&D?t1)@ldlLiCztR->(O9fy^#*_mPAstAe@ksV^XM z(gvC+<5?mXUz~&J5e01(BC)1S++pwwou?n_m2p{(-gPVQXB=1!uEXgTj$we)Fr?cY zfn0mFflb2IrdsX|Vl=mwyDz9bL;iJjJ!WM$WI6uP^+y>b0M3t&n8sZU$Ih4i`#xO> zDKduTL1)U8duv=Y3AT-LTWF1 z3N~!6W5X0G4 zo?N`Zv*5LFNgkRy5Rsbow)Fz&7(DoZc)`ROz>wY-2I6Fc`Em7Z+==GyKyVo7cw$%h z|1tK~aZ#pi-1peJiV9eWfJ!K>fP#deASs}9qjV!JjfyBL-HenHBHcM)fJllU42{x_ zwDfbFGq}6%b3dQ=<)6LpU6{G%n)5o(BYwyCH=n>>4V=nHzWt~tgzC`{XtCtP@La@g zUL%Y-dj-Km6Q*J94FVjo27#rns~PT442qzXiMijm&k-1-tMQ5HmtU*Pj!suUx>52L zfj0il*~~2oXZw;$)x|Xs_h8qZH@dJVyb~%<1b&gT*cM1+>4;}bX2!V^@rgTbVuzK6 zN2QtG!enV;&iI|O#U?+^-{USCJ3c%445_7jTs_EUy2qtfa(7tXBXfiNWbT(*vSX%X zNIQSV`17YoR1dqFvH-fF1yxqUJ=k4?DjbNb;4<@EI~a5kE;0R-l$3+TJDT)m!aREZ zRX7W*6&ACPbe(nlOw`P6OZGqs=8hYd;eVw$cY8YZlc--kxOD7Ak7<~C0xDzyZlGjH z^m1D0`$SDoDT8j^>!nUU26lTgdOaN$?C#pG?jh^Wmw5%CrqxNB@P4PB)V;U48tR~A zYM5C=*!LNYCIJjOE>R6KqYmxd}wQYG{qO$s%MOZt~XgJ7%&Iaubhh_$aJ4av9CZc+<8nc<1PmBcHGBp`wFr zA`G(aXC4GmLwq64+V?%##?1^7+?HD9-26?Hk_)=1qRi3t0oNH*bg{_An#-)X!q`7P z3Q@{zUG)KLMBZ_aut^`a+&IrE%C~It`H?@n7Y7QZ4(!|-hfIB-JXp=vWjNe}hzGJI zy(Uy7zq}9_MLnMteIhC#fhMcoe^N9ml_ATGQ?2vPiwvQu$gW(}kGy4BRXQV|aR1XO z-lembwwJAJmkSFfd|eo4Janj_WHZ^MXzVcma<>aX-M18$3&kz~M}6&g1Z`i}v>)N< z`q;fxwj`hmX0f2RSo6EjUvfwU+y%-5K($yXd$s4o}!InYp!K)|dHM7Cmt`>(Meyz;%%R)#@MLbkO4D?CIPGafBk&IwO%3)0B1c z`Y>gp)Aiv|pL0$hz3nSozNfa*Fm2OL$XMk-bfc2}aKvVO^%1L>HF%m)c+=&E?h_IG z-2>9X97J84pW8fb5!B=dkqEvQ77sy#Gtr(?AIL7?IyVD?uMkM_a(jttCy)1u-L{>B zLsQEZOD|p=$id&sDBGuT>(+(SctQZ*Rsuv?^&YV7p1Th^bU8&udPIcgU^w>Nj!Q}o zc#l1%^?9avd&doUWz@Jttov-I1rs#pT0g_8p8pvpqEzR8Ar&j%RG~0b2k4-+679OE zN;u@%ar1#tu^_=(>OwJgA7Q7=dt@wDSa4_l>W<=*8!c8qXki#gnS+Vm`q?_zW_D1& zyG1y4H(qJ}2s-p~pr>P9@<_KqaZMF4mG0TUX*!(Y<@ZDmLm}Mj@8cF08d?KLO;a~3 z9MG7-%;poz@+*gkvF^l4hYb5F7-y-c3PlSE6Q2UAFyE^8ckcQ1ca*HXy~k6ub`%p& zS!JguY?D@6ys*R3aZU}Xk3gw==MBnX0oon`AmV+!Z?^#J%j@YjPkNxnmklgLcCa@M zabGQPAGe->ncaYwFHc;$OY`;Q3sZca(1VThdkilNUxWYQCrE z<5Twvfdq^=br_Q$jO%UZ6DPWxBofG!p<(c(Yv|oPEa7a zLBpg5vZ8Z{IkNWii6Ek}%A}XAn1Ft|*OWxlZ5}2IH#{_nHS`_z!{a?h^^pD*!mh{ za^)=?EZ@1n>`{HI`pLts<_=|xc^MHT9hioI#t!-+sUO4%^tjQwPIAzsS7P5vQvq+~ zI;7hRs$LYt1yCL4Q|ro+@$2S%?kntCo4>g*G=SQYdPM3m-PbD49KRX zadm794{R?E>?n&0J4_fd0F~fl7L`mPH$cq7%y*a0;)>LW4|k7I@y3*I&x|AyFzMeg zKh$bp>^T;l>)_VpE4@;(xN)A5@uIpcNfN#0wgWGq|Js#hoyC%tKEX3om@e|Nu)Q;s zo+2Ob>2};)%QQckUY}$5jeIV zT%2+TQU18{FvIBO=tg>mH;k#4iduh=Mokl__!=5U0SmHk%7C7&HoLN+?igQ6qirA_ za;IE}kfozOgOrbRn_9?%XNj8vG^$MnqQ^As-QB^05Ph880n{d)hS_}>Mi`%*q4 zrk5k};@QHo^#_E7TdY)AWwDhv`puRsGCXXKo! zhboZ8_IId9xqEdMJ<*sG7dj-CU~9VM2d>2*1$;X*?>=geaa$SPVQ&tL?ne)07<+K2 zioyr)@Knq6ptLxKeO0BBd2CpsA^EY5LofjldDQiUsnnz0)fmB>ps2OGewmgR~#i0J3HJLk;)L!BDuvO4lqws}bqHiyz(v4qSw9Dl)d3@y8iyT1HBIiT zC9Z>gz7066aItL+^Odp#j9=ISVIp}Z&q2cUHKGs^hE(z#W^uZMeR^SN!1#c3Ss%yT zrA$`}s`sSaq~qPDc#)eL=O{F?Tmjz&xATBlsJ_I8gtB<)T~m&CDVx5A8=C3n&AQa( zDrGlqbc3fB962UBFN;FUrIy1kH@bCKlXS;U7jE+oIW0ouH)@W z+N_gZLSbJ`sLYR^ukZP1+MGAf$r7vo24#iWxy5oycuT5G0w7j63^oBE@{ATj^gR?# zZZW2qw&aF;+>larn4yJN zhtU$i%;SK%5b3I$tN6;h@V>dabE*|8Fi0WQ@-s`{*f)9v&>mJHu9}Aaqb!PL>tBn8|HFljJoB#&C~?m#q4X` zlw0I}0%lNBFml3=#!&{j%a?sBbZFSUVVcvpczKL643&!pGCv-q{6@q-#B!rab)v%f zJOKBHRQ}KyPuchEIK+SFVd={1EE36qP8cMDCKiE^FWW2|V8o38f<=e z@%=YOC2G7he^MCe?HJ5w0Skj!JKZf@o<*p8tEhZ;Tz}pDa~4CUR3Us12it0=-cYbsd`-e9LQOa?Z*Io z;$V<#Ijre?>xrNh6x2p%d(l+!cwKfpTDF+@Y>6NSyHtf{`Hn0wHWBBhR38H{hBr)R z$_492zWyoupaM!f1{2O84~)Lg zVu#LIMlT$FfoveiJA4$MKZPb`%DAwDxXe`C0P!(-oTBi!N; zl45@hC^BY(j7aNTsM$RoEqT?@(a)xn>J(hO}f55!hR)d_kJeaNwo* zPro^|3}JqRX$}cZIyW>g#MLfLK3QCzT;OnOCqWYBQO5sK2hKT?YyX@xu1Ds*7F3Y= zn6>#I@Hf9#<^#H$@;K&1G}km)d#+?;DEo!lCTv4UOe_`iqrdH6c6FC+i%-*2*0QM* zwzixcF0YKBOzWc}bdFzay!T<+VJW`b1tydcgh}%{ZVV<0f;X2oH)7U6UM%J}X5Lkp z<@ej(;oTjg2xT(Zz`G)EH6ZA)Hv7XOG?@~0GtF@9_~P;PD|3M7zKcL$&S+Z^@wkLe(&!o%Rh^hQobvz~q~{O*Pr34%r-( zOQp&+nF;qC%9xyNB|;CiVm$jU?z`^-TEuw9Rwj__38W_g75=OHlW)bkIdiK&2#@<1 zA_xXqLSx$4$>srq!ftmgJ~Gdy$#W=*ttcpO|FB5$z3m@WfU_-!yOR$A>X4U5LwC7g zvdxku$qsh_*c7|(5SM}_1?N3wF!t$lP+<(tEEI+|aHcSZBhKb)%X_bDzEeW`qG8ms z8%@PkBl-FI+t-^yTQaEAdF`RB&7z^Tuj)n#=+pLN|f(`FteSbXLOj{%VP zO;)z;0iZnuq*Ei#4H3G`b)g#3g$M{@z-UBx005_w<@B@oh|r3cbAh1E>wPg-zGgxj z&!vpaHxn>8p4NO?2IXU-=z|(S+VW3CJ3D(C|}k2$dw7r z4r>=m07Go+wkaOTO)onp-1}WLB<}9#-7cV%Mcy17R(&GXHDiuTBu9Nj6Tndj*}6ze zR|_^0zYUCBXWb)Tj%~gC?up+-uaikv=mUR6bkAI|-RttpI}sp}w7kl6EWB9%=#G0x zPbj|UWZwetCMhv4*`0C7-R=Jd+-veGMq2$~0M=;4;d_AM`t=9k-m>`V4x!>wufJr% z8CX+}M>GspV=2eL80NXYbFpR>kTc+BN-E#}E}BvXkA-lRKglns4s@e~e@P+@Wd7eg z9}_ECnE0}159K1%m!WD(fJd^$u9X~)-Dko@I_GIB?CC>J!P% z?K`)~d>&k!`V~9?6*^GlSSdB+=qMA%C90lq=49x-vj!hZt&I1psQm9S`?lkg{E2aU zNPa$UWg|UzvP1vHd~!$E#OW2zZxT<(EBJ=g zw91jnT5FOz1=fLAgAY^I*u5$rrj@1eo;Lv7duVyP`1c3H#PV^y%(7g6vo39ujV2ky zzVAFi4PjQ$d-u7VGiJW+54yBk{#`iuZO3yU`ulr%WVRu`u!gO-0p}$0y)9VE`Qey9 z`=&^qijbRXdk9|;!}hYRH6^D8awzI>Yv0uLUZ(v_%GIWwSA%cy8}KgL9|K`OY_7F+ z*?&c-G_E(GUgL?Lf105euaz{s50V`_#s8JyLUQ*0_5_}iEvdTs{fMuIj~T5&+vW& zD}$$n`>e=MR_uRH+}Blk)kd3|JEDB2tc9G$f3?TnC0W65h#Z*n_C0Ap24UwW>n(iTCq#1eOI1q zwfBxO2>T+c?3K#e@7*pUgmeNBL3fZIV1ivT888=Vg#|MrscxcsN{*5BI)6r|D| z>%Z;skGA&18ZSl*MXQc=+4Vt{pDBIZ-n7h@vp=fvcdZ8vT>h~f(A{WcARz3;gUSFE zTg~0NqX_3LTxR}TQS~h2l7He>R%PDLihMSv3DCj0t9;92sKU$l1@AVCq9M*n6;_Gjj>V!jbS0tVJ ziZo?^kjNW*|L=F8&gUn6j z|7ptt=>}%^c33h3e{Y=VLm0i@RxfZA#FdRsq2;2boRa_8?-F=say5Z+x+eFvot zjgS+-cDD>b#G!Zq5Y>8ybY_{ZF#AuDILlKeBLd(x;6Q^(_IO2tJQLW=qON;;58e)15i0cSq+I`Q&e z(EaS^PHUH%9BXVRzhyoWJP(x}ux+~gZP)D`a-bGPJXbQcIkj2C=Ys9k1yLJjd;jU7 z)sv0FBfgTc$svlFMf_Nhbe}OUevZ zz!zhA@m>Z(Yl)59C9M+L#^-r|@7U;Ne(w7xAlRM7X#;R(nLZNr3Li209tGAW1y;b$ zezho*xek_O7xAF;LszFp9g|EzS;Dyf$iMH?I}0$|JWI>&6#F_T!(F5Z!9y2!)j5(Z z6wd&4Ng4Tc;CqUcA78d%qfBTmKT~O~`rDTV zb@XGE|5yW=1>CLwe<+PdQsloAa0pHh|M+TFWAAqVbIAP7UOxjl+{{s*qqX_VYUr?Q zv;5-$9@+N$>xTcfvZLVO)`1BBkN6|JcdM@W`(Hpk-RR$nn`gj!CA2&H>;5|Vk@SzJ z2mQ@~^LRUYI9T8WI1Msf7-F)g&|Q5*_VR)>Y|V@mx=a<>sdwizPex}AUCZ1OO=$o? zfAv%e&;n5^5TBWO3t%n-ARP@gO)nC?Y~I0j8Z2S|_-WJzGdQHa)2k)d24lVFfxwu9 zfOAW8FHG!zSQeiC-syL$DgZfrB;JfT+ngjD2FR1Ir#i7EQ^is;0t*TR-Xwx@`iSZS zFliQg&QdpSJT3)0>2=5IKi(8LR}Ay-IhIF$sG>M^*&w<<(HLT*(b`$~l070^KQ z^(NvN5l~zCB`rk`4KJ@)Lp7-yrjik)j$ormfZ=d+aeamnKF4;b6u4{s%k2$ah)}sF zAtgq3V^Ws3RZgHeJbLcfWrPq1U^$U}@p5#k6SB4CgHQa~xAnRq$M4$Fq!>2swZ7wn z@Zoxge<5pMYL}nanirOGn`MH84_*;LQecA3830J8_b!8~wLtJ+!_V(dBhV(`vV_s# zH;e-V7;ykOqJh7zq=bYw%z(?I>ezbmZoC~L7F_?Qn?20-(Q!gp7 zvY}TWsrMxMwo<0_raGK>hKRZZ%Qq;P*ezdIrH=V+ZwACVQ^<+#^cLOX(Bv3w&&99EckK}TiftoPDg=)9Ic+4 zv90+fON*0$=w$6(Zg3cQxS!1*$!Zb zS@RegSnOx9P8%h%Z`&Nkj_kPZZj3j#TyraLS5{D%udYf>PrvNYy%=myiP)Mekv*zK zCZ<8abyEyY%?P>0l~o)52O^U>RDZ^2MEGQE58w`KR{TZ!eShKdgOBb+CIn{Kj7#XU zFzeS!e&+N2Hmn{0_34u+p+c@pvdbZH+Yd^M!fRzPGLIyn7QEB;_&|E80l>5d_4VmM z@2;$AunR^n246jA3j}v`jWS5mu~YBS3pbK)CDKF(*`t9Et0kVX9q$@gBxEWwZeHD z847lQsJP55?Ram3E&=1^3lLOSUxXQoPfwRY;9JBfcevsXqaEQ(N0gzI1oUWr>-M1p>F zi6S8x+5DAnEU@RiZ1CJizI)XguFKVOnx{^1TW2x&rM3{ERr4 z>~D2zLSB`4MZx`l{WTE#=pct*48jYzc7e9h9Yha{YD?j|z86<%szpd7=1A#%`n~#mzCwI`ypOE z@+^2sQ4RlNb@ugpvhQ!FGw6ogTLGW5&%su^TnwFl<;AQwIX97cW8c~8n$~$HEtsxJ zY>Q!C-WD^Uzry>l1qL!tXxpHR!|YZ8HZhB4@i%@pX6DX*9)SYz1VPU0J!!=mrL)g+ z^Yf?jrl2$=jk!YYhb>0*IDL1R7_arE;&bA+gei#C1uK-49VjK{2YR$;kR^BjxFTz9 zKRHNO$15PJcs6+`dsUrn^fhs4 za(l`)d6K2eVtv^~SuH!IVF3MaAClu#U#+%mNcP^>byX1^)|Zs=Qnqj#6^H<0kz8QV zfpwkfy-LJNU?kcyy+uCoQ-c7Ey6Wihr19~v;t&4H$4 zpjEe;YY(SNyA$ALQ)DyH6@2s?FScIQ#z#zLbrcl{bYX*j1T=NsY|dK>;+jwo9^{VF zE4Z8|X+w9#Qsde?fMU<^Hdo`b?W3Oik*1<;33J-cxG-PSVk$Z;r~b2e&(5?TJ+P%P zoMqjXPUn<<*@s>Me8#4fs}FzgnXzqdRXR*UFuMWEbR zMt^bI{5P=k)-(awsmwP!#fB1TS^KF4+lX>o;i%M}4*oka!o|B%YM(!35b7>6wI05c z7j3y2IgYBATqHWvfb^QTdtc09Rbk5R5Ptp z+PU*TfzeBasXFk`9ZIIhz@{>tBmzQjzEw7G4`C9WEUK-$S5RW1E$KyR zYn_mL_477HNgKCSNnHh zybhY5B_%d}{9%LY6A>HnsY81(jGv&kvBrXrnaO8AEyKbB;C%je zfz9p@`?w=;t)$TWcfFxYPeuBZ>J<~QnNax9GWU?|JZo%x!xm8 z2UZrh3?)-6yd!x}{&Y2WO-r_1%51%NEt4?g>+wxVL!)bk=Sat;wQuQJSzjk?tgXS% z?Ddy%-xC-6HVYhRe%=lq-BA_OJ&_pTNhfsr+pQa*uN1BsZ;L-6e#SGmdty!S3#GmEmqg2DSHYNiGy5S| z2YUm1`{)S3I(b3tbg`h=1ktf$C^3h5x{4^W4SN)-wKwZ&4yjSk6h5oF|^6sl<^bag$$*N*_R!{xIK`=C_ zB3Hh{@7W~Zhk2T3*XI;>6~S(wF$=PQ8qko_pM5pvvjnOZ^F;#I;^fEBiS5OjDu`!TWA4hr_;5+NDL&mKsWZpW zk75zFy00tU1(q>@48|uz_tqq^{BG9TVpn0)fL3i_;MysxNtv)$QRPofWs3_r3L@i{ z-5rW4GMY!{6T3f6tG>e=7RmjqD6f4H;PKu$%)$O{I6E?Ibhj3C7YdLM)-Ld$n1Khp}jOB`w!Cp-0F&ylqd_}Eg0|sT)KRP>atn*wDOIVaeSwt=E^QiY~nyqZ*SoZ{>P4ejBNgW-PoH= zp&NQ7**AD9hMsZ=C-{xukCI8k+n1NSaY~fI$9z?M;DTaXr2)B^ju_|sktuSAMSJ;( z0tWcnZYDK{nP;ruup4EMdj_8~6J(srFlbS~ju0=cY3j_<{nkZ#eHGrb5E4{_x;O#! zjYCQ1rQ9T~AWLSU6@7v1AZzu*G+R&Q9E1m-tGI86cVW-N47;?`>H!6~0zu2Z3pKP^ z#Al%~w$kI%Rq%E2(soTuOsx6&1JI5QP8>ge4nipx+z_P1 zgAMimFRlbtGFe54uqqE7%j&As$>FOA@IMGMrJz&zIa;?*&f~?{c7vCIvR0j=g!Jvo>2&W5|kXT6(I*zC&yE z>qe=z(t#Uvzb?nYEWtG$9i4dh&5faRrV36@#kS+E(mJ}j(vP(=Al6mWa-O^d-wdzq z8)zjZRS%)S+DJ0Mx9LI!7O&n{Uzc{y(%I7e_MR0nM>^uMcKBp^`G!-FUWtC~F);Gf zPnd~unf0bPNX_4-p*#-*eck$A@V;?CuT%g(U%VDG>~$pfcVRs4C6-&@410vjYH;Zj zlPj@pulp+_nuO2xbv$MLpqlQpk@5Q*?~yEX9+F;I9q!(SVU;S+4B(i$ony(px^cN1 zmd26V{>$2J=Qms*9hp{RucW|AJ}I}n@cVBGci=jOav8QU_S&O(K#ZIcQ79c89+nz! zO>=GD0O8YH>*BW-+V1Oi@(n0mY>aOT)TyQKD;5YXlpIsGQ-+0o)HSv|cc5wGHnn#P z{0auMv+To%>zpi1OmFQYL0edZJSV3F0RuYt$+!d*)HGxi6pX;A(@Dq&Pa8q{GiR=$ zR2cxFY}`}9@-hJk@-fw2GKfZo&~SWnd#lv3m7Eu zQ8^#Oy2i!F=q@{p_?X+3$_z`-E&#}S)8~k}dW#vDIW=C$67UOMJT5(_IO}7E7e3{k ztmE)0d?vEawCH)=tHVB>3UgS-I;`&E$H0d;oucQJ1`grztnThwnn|3^om7dq zMO{$mb+BVj^B7rM3=4hY>(xdk;Ls$^90=z z6B(gF$HiRI&G6AV_u>+{uB5vGGjlIJ{T`;76)D(X^j9gqzV;cV2?-$j)Ck>a+Sw5v zeqyw@yj-G8addRFDNUW*+s7va=PX4Y#uRzkJW^u76{e6AG)wF`Y)5WMNK1!+2(=o- z{_^_R@r?2wx)GB+E!VPVxy94Kxnlq&dWpnY8A-`N5U?wtA=9A4E{)e9bA|4QCwXmu zz?$~4h}G!zD+VV>!!%3>d!E@knJeeVtl90C-o$u({~<1ZG2}j<)(pEhw@2Z75YWNcR}&0R@j-e*HM8H(}6k#V)jGFB$HY} z=`5w4QZ+Jf;YS~Euw*nTx7WA+!qWRFm9$z-@>lycZZKR^n-=?ahB0#M#5##5K1H!w z=6O09J!=UPB~B?43JSqDqxsvrV7IuLUdP(U*nq#OJyR$N55&cN3uCppwe{yGtFmvF zr`M&CwX^wz?8aOZ$siGPpt@tRa)YEhtYk6%`5+q^mbON@9&d2yi(3AVWu(l&tyi!qaBPn;@ z-BqK?ImkILDj)BbE9m}q)9d%?2Y=35X?>ig(B}JEIqR#tR2{T63rQ{1+c10S=?Ils zBT~kh+p{C1d!BQCV4Jypa5VHte+m;eK$(SdaiDgkdsX^+#=!;j4qHb+hu`9p$gPzL zFK@(nS#00|-=3zB)Icx05k^LQ%tkOD1{3GG6DhwitV1If5*(AMZe@~X0)e{pm(ED) zyiACD#xQrRNWkFDycJbOvm^78iSy*1jWfiv4F0N-?4@~gUE>ssbVZ(Imrh9GSW8%b z4*%4S^&4U1G#HOtKa55RLuH41xUM)X(u>u6+ciFjtyc{^(a*(Qn;qXcNm@Ud*D3Of z%3l6KtEthFUIfQm?hxnkqPj~LR~inrMs8lZ>tq=xW&M|i+;=AFH;W94&g3a}QMtbM z&(gO`r?$SW-a265a@GdTnx$cp!@4?N!YRt1zJ2D%fTV~9mX}?`JSmq(z$$H>x6@W% zAA`C6*FHk0cl)cisSGdEJBnn7Qrph#=hl~Wv+_=EQdct5^L#P#RrJ%riSz67{k8OK zuPnrg*$oEsoxQf76i#BRNr~gNnk*1MC5OJ768uhxjQIXfx_h;#u$~=fS9Fz*^ zq`iHxB%Z!X5?^s5%k+vi*I!$a5(c9n=B}S+)G1l5$ssoDuB!JoT`68s{?c8}A8)eA zTJ$kDC~h%#D{;N&KAV^qJfI)xY30x$V?}2-Yr6V%QZA{0-y+B;eLdW5kDopyuh$Q5 z-3ecY8I$W7J&n2IsRuQ44C(_BFA{+hs_W}R9vuQ!70j_9J24TFU)m&uTor@)Q5A(f z1BY(N+CuNzOza@3U&`kLl?HJ8Yv|TZvJ-oBoDYTM>n1*>J(EChNVQFd{Jov}SM%C{ zwyz3ai^N#WiY~ELrCJ$Qmvx2=`(>9IhrLQB3?FOGaDL&fPO5fs=@Z9EsW#T}m5%fu%ZbND)v zgUjQV5PKOpTTIxOfMjc62W=t3R0I^6gUf>4zeA?cHbpCPusZ^_<0dW&ygTD zn(4|uSLll$g+nN5lGC8qcxA_1^3FLUWB0FI+Vs7j?FA|V!kO$1Ur=OJmxh*nJ`e); z&yLq}Pz!=^4Ce4#aiYNCv`8t;>jSe>@B6z4ioVm$Nqz@Ta((V{A4^V(betky(BU`G z%N3ZTo>iQ()3?O$kxEHPocDiPcsWtcM3wN(*zrbbbviOHPepLI%l0 z?9@4&u_^j2Kg}c`@9{leF*c9PvWj_w-fD;Fa{-Q4x|v8O-0ifw%=t|f!urdDl^@se zwTTnGJgHw*AZz=s!00IUN((;`-ig4_Bh1}_Iu#ZLSx+$-H=xpTeZ)C0De+0;(>3ce z3ky{cmIx@%;VVW=i_Zw(;~C!yg{=0q z645xw57S?4Z-#upB&A4dSlkxBEtTV2@%o7UD{jKBr$pTK=q`%|XGCVy%TNhpgzghI zve?HXU*yudBA9KICW3EZIq1s^FI;a}&vjk0uEa7A^xIJ|6ybGM z;Rp#>ucU|lV;se~@F>B3Zn-iPu3LADc`hB0xu2NInb_ET9}}5KhleyG)GOp)W<-?r zSse|pB1S2l4fDFHiP~wOpi|~iObC)=BUpO^S^Kp#8G6kcnrzeq<-Z5cr@AcD>z2nG z9{t=pv7M7;U9k5B;n7%H4>fD0z{E;I))U1OC1c|b3};1|92nZ={Py;zv9ZE?;^*J% zkS;K4Fk%&Qj3NuN+hez#e3R32qw2L*bepz963i{`1TjVUb))=&9`&JgQf2Qdh0*Q+ zb-GH6FEo1$?Xem6_a0|mGNo@=na*`>s}9z5M^GL;Y*1*)y?Xiw;OXl2~uxF zkuCzeIaKN)II#dKmRmwbCKP6eB#_q{qCeN?Lgy~X({n{phY@>=ALes;3rc_(Fz|%N z?am}&qsHvS)M~nXZ+I|%H2CNsjmA0NP zJ6mAZt8TT_D7w8R^+$8%6^^(zVylQ=~PgxJ|G1Z4a zLQ>MjxCvUDMn=XVCFL}= zJe@7I=FYuX+SzweJMicK4vFgD=K(gsW92kDmt!dazHzFrG6BXm>KJn-qTEtB-GnwOA89%*^huM@Bay%Dvtd~ooo7PAF4Eci5Na%Fm`id-aPQ-az%vj z*$j5hvjlxBp)L3v)|GP9F-3BURjMjXY0Bq3egi_PY?I-uttT<>*wqUxLQrN|CejNT zXZ8SbEuC(FB$%4QlxeCXD&dAG|E{71HI5$pL>g@U{J2?jNCJHDTZafo7uTaJ%=VE# zdaj2ZDG}()?7TUs<(@J1Nd`VLI&U(l@qWJ4eVeE_P9md1T83#H6xrdi6xg@6Cn{S9d| zyNt?{aPY&oO4|@GQ%0w){E30Fy7ov){5*aa?my|qBlu%Kth#nb&t#U%x+D3MZJ2OgySE4)9Qg7j%Z@zn#^0It5_sHB8`m1e745%i+nA##(p zbHN`n{l4}XT59EM#&VVs6tRNO?Ocpei zy~SRV+R4_TYS#^#5q8$1TzBG|z{>Dy8t7_pk7nHpWyK*nDDu|#u2MX&<0xWgpT+lD zS}r3)b2_fczU~MUa&_P$Ba{dtRSM!yc>BCS>&e@yBjMd(0Bl>i#z$3$%W|Wd+{`Xx zM+;1KZj#p#>m%@vdzF1XkH}XS7m?1ma6eVV zZqzbe6Mj9`YU`6s*kcb&e-%Xuy7xsH#(PI4l*($m{4!VFU!_#&M%YVsz9kjt2#3dI z>*r(;!?-BQokOc=A*1f=2x1E@5jXQazZLQ5R@DA~Yw^JN>vBbf1=Z`eGvYXupP= zW3+pR9JwB(b6+)jeD~cpD9m^xl0VJL72;_63Ie{UGBfAN40jX$@vVsl!UdnMAb!vT zxsubtw{i4rHD@k1JlzrEEEVL!tv@6+w4q}aa=#|;>*m70%a&`&TLeYor}p^XM@%~R z9^XotYwKX=$5^eMU8->_DC{i_an8dnZe>P< zSMX>Q*#(idhe2X>Q4aeRxkNSK@FLPWMoj0P@-D4lT zkvua<=JxOFKO9Nidd@_q^2O>tEOO)zHLGXzhvus7&c(T{*i|i}S8; zaDz^EEF)n#+}c%}tvA@95s{;l#L^MWxLipel87F-9|9epVZCykzI4s(GG#3p@m+t| z9b|P*s%tO3er&x=VzxV7vbloyB}b|2A&O4d*aPB{gQrencDB2f{gXh`Mfa^qHbaI- zzZm-?@ZL8S?=cRKb(q!_qCHFa>K{TZ$zk{2Y1zOgbo!!SbcMBZg|2s-`B_NOC05q& zYkC!tOh&Vy>QC^m^P%U6S8`oT^!?R{Vx0#rK>=DDry{G&z3j2luOf`hGqfPwO9T5m9tcIs(bpbS3^(bAz9c{MT6^D@tdCV zWVE{Rc6zxIyQ!B3Q)WkEn+HeiyVZUk-D)`L)kUyGf8b~BXQtofT$v*%#-ILB613zO zbu2^9lU_`d=J;v(#V07(%1_el%WKuoaBE2PERE3K5f|L$T-$Ytp{U@U;#q9=EQC@4 z>_zyy1raqkUIoGf1>u4N#PGB0p%cg4=!v&gsF{ALCtELCVyeZnM|w3|&(JOXNTF1a zGnIXb$PJ#lTbuYQD10Y1o0ee9W6t$X_k3X5?tzh>T3`23ziFL8%&f_vB%+Ouq%)Am zP%!&`E$FLj>1Kylle_BTh}h)9w$D`V3=d5;-x>+ zai-y^U>RjX^Wd>!dZ-RVf@TK6g-qIO`l~f(9NaRM479D|<156n%(iYh2ghHF@M3JT z-V-)QYZliuvRG>A<`~2(B_DFCyhVO)Y!L=DX`j>SA z9lI2ZLl%0@IFo}QT%gxojA~l`l2aMr|KTjeqHoSIL50yHGwJvl>d5jQ<=>I6Ku3in zRw-aG&^hFf4vYNpRPJ@y;?d6;n}g<++qDO^EUhg|IVGJc@&Yd3POG6`Vp`Xx!4u2N zr6Dd!=_>E8aAEcyF81r;oIXSN{S1b2UU?^RD9%||<0Sw7&iE|pdj;kavyqX!5eBVq zp*Hm*PUSM`FB}rZeAdrluT=}+{$P<}wLJ2xsRl-b{rG2&&#-PK=| zS-woG$&#ff7BSExla)sQL2Hg)3>7hhT%?_|2Cy$|RYPz&?OG6XIo;?~lH6FalnzYi zGkgL|FyNbn+0n9hw*%0gE>YIAxIA7S@X9*+?S;TZvJ4j^ksBDOR@NKC%Ly344i_7?X_JE4kr2 zn^Ey7v3EX1nzt8&*&JYt(DgzOllAfE^;3t%bWEZa=M0=mJ`!58Qc|n%f4mp)CIFktJyeu&o|Yz*1{fD=Ih(wULlX!yoBBiS8Jo+AMzR>P`KCqUrV+ zT`y9r>O7^XG;uHHO^Ak25wg#-Iw@J^qjOiuQ%;V!f___ zuIPR9=-Jg_3vRM8qEFDaki930Php2PchyT_n-V=!En~71YupY~8uF~oF`Y0!e{1-L zGZe&>IuXT3Q0eGloqwg@AzJv%D!Omz1)BZzBiuA2)G6)IN%vtFI*m@JCKwK5?*^1` zp)JIl^Of5ZaVX2BeAuy`U>LHv6=&>BnJ+ctWSK3z!6NX);J6`G3a^tf`m&CgxF>F= zibnO``&q~N<<})mU@;5;r}K?`FIbfXf_<;Tl_?NR1#o`h&yiW*w%3K2njih$EYN06 zWi~g=2|Fe-Q}|cy0^xooYdiA7Z8&_}h!gOvRquJ?()hU!@;dU;r-h- zc^xmc_sTcgPAUnDca~K4k7tYsZT|f7MR1cv+jSwN3-q4IX&H=We0WazN=g(XsvGhP z(ZPF;@!p4u-M}JXdI5T+bP`HHd`jepAF?>iK)pZRxNU5S{vgdd+0$h?abx$;5-uw= zP;4hmSjDE$vkmI(DeWP%G_VkG>~vmz&f6$R`1UY|Q_mh!fO%v|S*MWuyuSIawgt^4JLR8kXWF;f8tm1QMz&u}_iDO6(0s?MP&=S)lxsbG^+hQ5!0i zKD^~{tv_DPn`Xg3@77opRR5$lM^!H9s|0UX4uGmj-TGeVQQ4gABxV_}+ZCc)WuJzY5(4MV5aPDUKt>H18 zg@ZBaBP9D=oBL8f86ZX-02Z05Fp=N-CWR4vDD07e1m!>VhEn{LGarWK;z@Lx>&4{NM)X%NLhD|+FtSkayBSIfBM zI(2e5mqzFHJ5Al8)%35=1kq|p9HX%gIo9@t^o44zRgD|j0`3`q|3ybb?s4pBhP#|e z4$kXdCU_Ep)sZHS%qp)QA#0K3RSy{Evrsen4DfElPemGRMW|Q@+lR@+qTPr0f;7e- zqRJcW);wf6eRtcolcAfYfQs|R#8)dF zzZay2a_6)IGyY%A8Jbl`_zWvHT(LmM6#5LgRG^rwpo&Fwi71p6n^+k|?FWuYWOdR~ zI93h~Wp>hiu;5g5?$&2o73G~sw9a5y;-#HPq?z10NcPf07)A((ho*-mN;%bvD{p-E zUDJS-Cnb6^Um7D%>9_;G7Rwn2Uj-p{+)) zW#G@8ZHi}$;B!bvEUxUF9C}8^0@)LVm}4qB~tbeswxTzJRXms=OUK*%KDZ4+~l3N$uc z2;vh|G2NIBIK}*T(xBykKBkSbKUYfU1^R>WBCsGNBPObge zG3W00ORrsBBs=r~iePO?WbAUV^fSpN8#e{zhb z_#O^#9CVVP$to#w(^URFv44oNZx1hGJK}(JLzHWE!0*gW;(H5LUsY~o@#)Y~hxysB z2c3&zLQeiCsT+em z46{R6%V*sdVc^Yl$*C8l>p`!5c_qP_l+TK%u;PFxuXMxY+Hm`p(9lPuf*}&C5_(_b z@!3$Z3e+U+pj%k!SfFMyueuorEhor0&#b_X_U1HX4+^uIc{VY1s#(IvENX%Yx%QbIkG{y0XpYO~9`mx0 z0IQLI9T-EZHIVHmz}X}{d&=0@INPk9V-)^v(EOp(nLK22H|cvJ=B0BOJp~cqE&j@7 zc*q#JqXamVbXI-+J>Tonzm;-doP)Rbd5TU=4<@7RDG%R$Lqjtv*_V=pnsR0nK2HXm zf1=qGsGDG_^P(;9C45Bmb2xptF_143TQ&Q+we*z4m)gLyvfd)?|EIg}j%q4zyS1Rg zSZJ29P*g;vih@W-91BPUm0pz&5fG40K(L|$4oGh{iiCia5JDA2kluvQ5s?~t3j{;% z^JC_nnfJTjKX-k1t^2O4Yl(x79M1Wjr|f4xdmk1M71J-MIP#>&%5hYGyJw&83gK2) z9tNgwC4%0;Am@wxa*rq~mQ*EdRQ@(G{HAcniT`aXb*3vhFbAWX)zN{Z6(l#UHOY3b zREuI7@zQ^M{dL-L=W;rZh$?n;H~vJ%B!SPKy#P;RQdOvTq?oZCSK#{lM={@nZbe!l z;;{{{Ptc#3FZ%xjUcicnjLXm$WS*d^swyQo$_uM2&B>VkNOYC#RLWc}M5HFSiB9cz z@s|3|u)|Xgh2!BZJa;t1iq-}I%9ekQiPx@3`ME*)FOnDe+gUhHnuPNxC8i8K3Gq_I1tU)s`m)F3OwSNqLIlEQ`wYTe` z8-|UWyw82*IgG_GJ3D9p1VJ((=}BZ!xm7G*`SqJOmf-X54EpXhwkh#~sNPhMJzdwm z2JcCVUp%G6_pg5yFqz+rz^iFUC-&`I0Wfn>4IhvN5+slX%;M2sQeO88m6iYYgG2ex zq3%CEyMgr&&cQ!ErM&JBGQ>YVwT_klpZDmGKUx1LVdWoxkN@t!eeY|3!oqR!a>KfS z1}IHxZv&+gX_=DdQUA7%)oGvii=guyKOYODmR$1a_v%I!b%d+)8=0v=h|tMV5)Lph zGkZPWQ%Fj(MrFEklx6n@Jp7e^6vCa9^UGgoO`nfnJ7D^l3eJ3_De+C~Ni89;zbxupbCI zD-S<>SdIGMztFmsz0;l>g7kUu~S_?G|tVRP_*@QBvl z%zyn$=;PgWD*sXEr%`jFlNbh4cA4EwR=)r8)cn?s@87U-#XQ12)qKBo^rMY=E)kw* zZpc|jZydM&FwAzwYF*`n{(A$=KOa=}tq4nfZF$5I{^yUEo7xS(tNz#fsulDnL*wti z`rjY(|LA-8Ke{;9W6{yk&Xqjwml_fjjz~yc-MoFD0IbB=+(tb3a5iqiOO?SqNtoEv zs5b^3cgKB}37kt*Q{)6|meV2B1B9D&BXaiDgpEPgz)e4CRr_nSr0unPE1h7fV+2gh zW+GM>O}P6%J*q*f(-)#OSXSw}x+b2M;ZuIaS)wctFJCU%g0W?s zTc_APA11p2%e S_a@p;}dS-&J4(xL} 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 SwzUaend4%fA0+Jn literal 0 HcmV?d00001 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..d02d375 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,7 @@ +matplotlib==3.10.8 +numpy==2.4.4 +pandas==3.0.1 +pyarrow==23.0.1 +scikit-learn==1.8.0 +scipy==1.17.1 +seaborn==0.13.2 diff --git a/scripts/build_scirep_analysis.py b/scripts/build_scirep_analysis.py new file mode 100644 index 0000000..b418801 --- /dev/null +++ b/scripts/build_scirep_analysis.py @@ -0,0 +1,4987 @@ +#!/usr/bin/env python3 +"""Build analysis artefacts for the Scientific Reports peg-transfer paper. + +This script intentionally separates: + 1. the 115-recording dataset inventory, + 2. consistently processed kinematics for the 107 recordings whose study + identifier occurs once, and + 3. the 38-recording phase-annotated subset for phase/cycle analyses. + +The input locations can be configured with: + LASK_PHASE_CACHE Directory containing canonical_trials.csv and the phase + parquet files. + LASK_AI_ELT_ROOT AI-ELT project root containing motion and feature caches. + LASK_ORIGIN_MOTION + Optional override for the per-recording kinematic JSON root. + LASK_PROJECT_ROOT Optional output project root. +""" +from __future__ import annotations + +import json +import math +import os +import platform +import re +import hashlib +import sys +from importlib import metadata +from pathlib import Path +from typing import Iterable + + +def configured_path(name: str, default: Path) -> Path: + """Return an environment-configured path with a deterministic default.""" + return Path(os.environ.get(name, str(default))).expanduser().resolve() + + +SCRIPT_PROJECT_ROOT = Path(__file__).resolve().parents[1] +ROOT = configured_path("LASK_PROJECT_ROOT", SCRIPT_PROJECT_ROOT) +PHD = SCRIPT_PROJECT_ROOT.parents[1] +BTPN_CACHE = configured_path( + "LASK_PHASE_CACHE", + PHD / "Code" / "BTPN-MT" / "data" / "cache", +) +AI_ELT = configured_path("LASK_AI_ELT_ROOT", PHD / "Code" / "AI-ELT") +ORIGIN_MOTION = configured_path( + "LASK_ORIGIN_MOTION", + AI_ELT / "outputs" / "ssl" / "origin" / "origin_data" / "ORIGIN_ALL", +) + +os.environ.setdefault( + "MPLCONFIGDIR", + str(ROOT / "paper" / "build" / "mplconfig"), +) + +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt +from matplotlib.patches import FancyArrowPatch, Rectangle +import numpy as np +import pandas as pd +from scipy import stats +from scipy.signal import correlate, correlation_lags, find_peaks, savgol_filter +from scipy.spatial.transform import Rotation + + +OUT = ROOT / "data" / "derived" +FIG = ROOT / "paper" / "figures" +TAB = ROOT / "paper" / "tables" +for d in (OUT, FIG, TAB): + d.mkdir(parents=True, exist_ok=True) + + +def file_sha256(path: Path) -> str | None: + if not path.exists() or not path.is_file(): + return None + h = hashlib.sha256() + with path.open("rb") as fh: + for chunk in iter(lambda: fh.read(1024 * 1024), b""): + h.update(chunk) + return h.hexdigest() + + +def package_version(name: str) -> str | None: + try: + return metadata.version(name) + except metadata.PackageNotFoundError: + return None + + +def analysis_input_paths() -> dict[str, Path]: + """Return the core files required to regenerate the reported analysis.""" + return { + "canonical_trials": BTPN_CACHE / "canonical_trials.csv", + "phase_trials": BTPN_CACHE / "trials.parquet", + "phase_cycles": BTPN_CACHE / "cycles.parquet", + "phase_frames": BTPN_CACHE / "frames.parquet", + "combined_motion_metrics": AI_ELT + / "outputs" + / "motion" + / "combined_motion_metrics.csv", + "trimmed_extended_features": AI_ELT + / "outputs" + / "papers" + / "paper1" + / "results" + / "extended_features_cache_trimmed.csv", + } + + +def validate_analysis_inputs() -> None: + """Fail early with actionable configuration guidance.""" + missing = [ + f"{name}: {path}" + for name, path in analysis_input_paths().items() + if not path.is_file() + ] + if not ORIGIN_MOTION.is_dir(): + missing.append(f"origin_motion_directory: {ORIGIN_MOTION}") + if missing: + details = "\n ".join(missing) + raise FileNotFoundError( + "The analysis inputs are incomplete. Configure LASK_PHASE_CACHE, " + "LASK_AI_ELT_ROOT, and optionally LASK_ORIGIN_MOTION.\n " + f"{details}" + ) + + +def portable_input_path(path: Path) -> str: + """Describe an input without writing a machine-specific absolute path.""" + try: + return f"$LASK_PHASE_CACHE/{path.relative_to(BTPN_CACHE)}" + except ValueError: + pass + try: + return f"$LASK_AI_ELT_ROOT/{path.relative_to(AI_ELT)}" + except ValueError: + return path.name + +DATASET_ORDER = ["BAPES2024", "6DOF2023", "7DOF2024"] +DATASET_LABELS = { + "7DOF2024": "Urology 2 (2024)", + "BAPES2024": "Paediatric", + "6DOF2023": "Urology 1 (2023)", +} +SKILL_ORDER = ["novice", "intermediate", "expert"] +PHASE_ORDER = ["reach", "grasp", "transfer", "place", "nudge", "idle", "dropped"] +DATASET_COLORS = {"BAPES2024": "#0072B2", "6DOF2023": "#009E73", "7DOF2024": "#D55E00"} +BAND_ORDER = ["metric_low", "metric_middle", "metric_high"] +BAND_LABELS = { + "metric_low": "Lower motion-score band", + "metric_middle": "Middle motion-score band", + "metric_high": "Upper motion-score band", +} +BAND_SHORT_LABELS = { + "metric_low": "Lower", + "metric_middle": "Middle", + "metric_high": "Upper", +} +CLUSTER_COLORS = { + "metric_low": "#009E73", + "metric_middle": "#E69F00", + "metric_high": "#CC3311", +} +SKILL_COLORS = {"novice": "#009E73", "intermediate": "#E69F00", "expert": "#CC3311"} +PHASE_COLORS = { + "reach": "#4FC3F7", + "grasp": "#66BB6A", + "transfer": "#FFA726", + "place": "#AB47BC", + "nudge": "#FFD54F", + "idle": "#B0BEC5", + "dropped": "#E53935", +} + +FEATURES = { + "total_time": "Analysed duration", + "bimanual_correlation": "Bimanual correlation", + "bimanual_lag_s": "Bimanual lag", + "bimanual_concurrent_efficiency": "Concurrent efficiency", + "bimanual_dist_speed_corr": "Distance-speed coupling", + "simultaneous_motion_ratio": "Simultaneous motion", + "bimanual_symmetry": "Bimanual symmetry", + "combined_idle_ratio": "Combined idle ratio", + "tool1_normalized_jerk": "Tool 1 normalised jerk", + "tool2_normalized_jerk": "Tool 2 normalised jerk", + "tool1_active_time_ratio": "Tool 1 active time", + "tool2_active_time_ratio": "Tool 2 active time", + "tool1_path_length": "Tool 1 path length", + "tool2_path_length": "Tool 2 path length", + "tool1_avg_speed": "Tool 1 speed", + "tool2_avg_speed": "Tool 2 speed", + "tool_distance_cv": "Tool distance variability", + "tool_close_proximity_ratio": "Close proximity", + "tool1_working_volume": "Tool 1 working volume", + "tool2_working_volume": "Tool 2 working volume", + "tool1_working_area_xy": "Tool 1 working area", + "tool2_working_area_xy": "Tool 2 working area", + "tool1_range_z": "Tool 1 depth range", + "tool2_range_z": "Tool 2 depth range", + "tool1_rotation_per_path": "Tool 1 rotation per path", + "tool2_rotation_per_path": "Tool 2 rotation per path", + "tool1_angular_velocity_cv": "Tool 1 angular velocity variability", + "tool2_angular_velocity_cv": "Tool 2 angular velocity variability", + "tool1_num_speed_peaks": "Tool 1 speed peaks", + "tool2_num_speed_peaks": "Tool 2 speed peaks", + "Coordination-control composite": "Coordination and control score", +} + +FEATURE_DIRECTIONS = { + "total_time": ("$\\downarrow$", "shorter analysed task interval"), + "bimanual_correlation": ("$\\uparrow$", "more synchronous tool motion"), + "bimanual_lag_s": ("$\\downarrow$", "less timing delay between tools"), + "bimanual_concurrent_efficiency": ("$\\uparrow$", "more efficient simultaneous tool use"), + "bimanual_dist_speed_corr": ("$\\uparrow$", "more coupled spacing and speed control"), + "simultaneous_motion_ratio": ("$\\uparrow$", "larger fraction of active frames with both tools moving"), + "bimanual_symmetry": ("$\\uparrow$", "more balanced left/right tool use"), + "combined_idle_ratio": ("$\\downarrow$", "less inactive task time"), + "tool1_normalized_jerk": ("$\\downarrow$", "smoother Tool 1 motion"), + "tool2_normalized_jerk": ("$\\downarrow$", "smoother Tool 2 motion"), + "tool1_active_time_ratio": ("$\\uparrow$", "more active Tool 1 use"), + "tool2_active_time_ratio": ("$\\uparrow$", "more active Tool 2 use"), + "tool1_path_length": ("$\\downarrow$", "shorter Tool 1 travel distance"), + "tool2_path_length": ("$\\downarrow$", "shorter Tool 2 travel distance"), + "tool1_avg_speed": ("$\\uparrow$", "faster Tool 1 movement"), + "tool2_avg_speed": ("$\\uparrow$", "faster Tool 2 movement"), + "tool_distance_cv": ("$\\downarrow$", "steadier distance between tools"), + "tool_close_proximity_ratio": ("$\\downarrow$", "less time with tools very close together"), + "tool1_working_volume": ("$\\downarrow$", "more compact Tool 1 three-dimensional workspace"), + "tool2_working_volume": ("$\\downarrow$", "more compact Tool 2 three-dimensional workspace"), + "tool1_working_area_xy": ("$\\downarrow$", "more compact Tool 1 image-plane workspace"), + "tool2_working_area_xy": ("$\\downarrow$", "more compact Tool 2 image-plane workspace"), + "tool1_range_z": ("$\\downarrow$", "less Tool 1 camera-axis excursion"), + "tool2_range_z": ("$\\downarrow$", "less Tool 2 camera-axis excursion"), + "tool1_rotation_per_path": ("$\\downarrow$", "less Tool 1 rotation per millimetre travelled"), + "tool2_rotation_per_path": ("$\\downarrow$", "less Tool 2 rotation per millimetre travelled"), + "tool1_angular_velocity_cv": ("$\\downarrow$", "steadier Tool 1 rotational speed"), + "tool2_angular_velocity_cv": ("$\\downarrow$", "steadier Tool 2 rotational speed"), + "tool1_num_speed_peaks": ("$\\downarrow$", "fewer Tool 1 stop-start speed peaks"), + "tool2_num_speed_peaks": ("$\\downarrow$", "fewer Tool 2 stop-start speed peaks"), +} + +KMEANS_FEATURES = [ + "bimanual_correlation", + "bimanual_lag_s", + "simultaneous_motion_ratio", + "bimanual_symmetry", + "combined_idle_ratio", + "tool_distance_cv", + "tool1_normalized_jerk", + "tool2_normalized_jerk", + "tool1_active_time_ratio", + "tool2_active_time_ratio", + "bimanual_concurrent_efficiency", + "tool1_working_volume", + "tool2_working_volume", + "tool1_working_area_xy", + "tool2_working_area_xy", + "tool1_range_z", + "tool2_range_z", + "tool1_rotation_per_path", + "tool2_rotation_per_path", + "tool1_angular_velocity_cv", + "tool2_angular_velocity_cv", + "tool_close_proximity_ratio", +] + +OSATS_DOMAINS = { + "Bimanual coordination": [ + ("bimanual_correlation", 1), + ("simultaneous_motion_ratio", 1), + ("bimanual_concurrent_efficiency", 1), + ("tool_distance_cv", -1), + ], + "Task efficiency": [ + ("total_time", -1), + ("combined_idle_ratio", -1), + ("tool1_active_time_ratio", 1), + ("tool2_active_time_ratio", 1), + ("tool1_num_speed_peaks", -1), + ("tool2_num_speed_peaks", -1), + ], + "Instrument motion control": [ + ("tool1_normalized_jerk", -1), + ("tool2_normalized_jerk", -1), + ("tool1_rotation_per_path", -1), + ("tool2_rotation_per_path", -1), + ("tool1_angular_velocity_cv", -1), + ("tool2_angular_velocity_cv", -1), + ], + "Workspace excursion": [ + ("tool1_working_volume", -1), + ("tool2_working_volume", -1), + ("tool1_working_area_xy", -1), + ("tool2_working_area_xy", -1), + ("tool1_range_z", -1), + ("tool2_range_z", -1), + ], +} + +# Mirrored tools and closely related measurements are first averaged into +# motor constructs so that duplicated channels do not receive extra weight. +OSATS_DOMAIN_CONSTRUCTS = { + "Bimanual coordination": [ + [("bimanual_correlation", 1)], + [("simultaneous_motion_ratio", 1), ("bimanual_concurrent_efficiency", 1)], + [("tool_distance_cv", -1)], + ], + "Task efficiency": [ + [("total_time", -1)], + [("combined_idle_ratio", -1), ("tool1_active_time_ratio", 1), ("tool2_active_time_ratio", 1)], + [("tool1_num_speed_peaks", -1), ("tool2_num_speed_peaks", -1)], + ], + "Instrument motion control": [ + [("tool1_normalized_jerk", -1), ("tool2_normalized_jerk", -1)], + [("tool1_rotation_per_path", -1), ("tool2_rotation_per_path", -1)], + [("tool1_angular_velocity_cv", -1), ("tool2_angular_velocity_cv", -1)], + ], + "Workspace excursion": [ + [("tool1_working_volume", -1), ("tool2_working_volume", -1)], + [("tool1_working_area_xy", -1), ("tool2_working_area_xy", -1)], + [("tool1_range_z", -1), ("tool2_range_z", -1)], + ], +} + +# These two domains are available in every cohort and avoid direct timing +# measures. Task efficiency and workspace excursion are retained as +# descriptive checks that do not define the bands. +CORE_PERFORMANCE_DOMAINS = [ + "Bimanual coordination", + "Instrument motion control", +] + + +def setup_style() -> None: + plt.rcParams.update( + { + "figure.dpi": 300, + "savefig.dpi": 300, + "font.family": "serif", + "font.serif": ["Times New Roman", "Times", "DejaVu Serif"], + "mathtext.fontset": "stix", + "pdf.fonttype": 42, + "ps.fonttype": 42, + "axes.linewidth": 0.6, + "font.size": 8, + "axes.labelsize": 8, + "axes.titlesize": 9, + "xtick.labelsize": 7, + "ytick.labelsize": 7, + "legend.fontsize": 7, + "figure.facecolor": "white", + "savefig.facecolor": "white", + "savefig.bbox": "tight", + } + ) + + +def save_fig(fig: plt.Figure, name: str) -> None: + fig.savefig(FIG / f"{name}.png") + fig.savefig(FIG / f"{name}.pdf") + plt.close(fig) + + +def nice(s: str) -> str: + return str(s).replace("_", " ").title() + + +def dataset_label(dataset: str) -> str: + return DATASET_LABELS.get(str(dataset), str(dataset)) + + +def dataset_slug(dataset: str) -> str: + return re.sub(r"[^A-Za-z0-9]+", "", str(dataset)) + + +def panel_label(ax: plt.Axes, label: str) -> None: + ax.text(-0.12, 1.03, label, transform=ax.transAxes, fontsize=10, fontweight="bold") + + +def trial_key(dataset: str, trial_number: int) -> str: + if dataset == "6DOF2023": + return f"6Test {int(trial_number)}" + if dataset == "7DOF2024": + return f"7Trial{int(trial_number)}" + if dataset == "BAPES2024": + return f"BTrial{int(trial_number)}" + return f"{dataset}_{trial_number}" + + +def phase_trial_key(dataset: str, trial_short: str) -> str: + text = str(trial_short) + match = re.search(r"Trial\s*(\d+)", text) + if match: + return trial_key(dataset, int(match.group(1))) + match = re.search(r"Test\s*(\d+)", text) + if match: + return trial_key(dataset, int(match.group(1))) + return f"{dataset}_{text}" + + +def load_handedness() -> pd.DataFrame: + rows: list[dict[str, object]] = [] + paths = { + "6DOF2023": AI_ELT / "outputs" / "ssl" / "raw" / "6DOF2023" / "ssl_results" / "trial_embeddings.json", + "7DOF2024": AI_ELT / "outputs" / "ssl" / "raw" / "7DOF2024" / "ssl_results" / "trial_embeddings.json", + "BAPES2024": AI_ELT / "outputs" / "ssl" / "raw" / "BAPES2024" / "ssl_results" / "trial_embeddings.json", + } + for dataset, path in paths.items(): + if not path.exists(): + continue + data = json.loads(path.read_text()) + for value in data.values(): + hand = str(value.get("handedness", "unknown")).lower().strip() + if "right" in hand: + compact = "right" + elif "left" in hand: + compact = "left" + elif "mixed" in hand or "ambi" in hand: + compact = "mixed" + else: + compact = "unknown" + rows.append( + { + "dataset": dataset, + "trial_number": int(value.get("trial_number", 0)), + "handedness": compact, + "procedures_last_12_months": value.get("procedures_last_12_months", np.nan), + } + ) + return pd.DataFrame(rows) + + +def _safe_corr(x: np.ndarray, y: np.ndarray) -> float: + if len(x) < 3 or len(y) < 3 or np.std(x) <= 1e-12 or np.std(y) <= 1e-12: + return np.nan + return float(np.corrcoef(x, y)[0, 1]) + + +def _savgol_positions( + positions: np.ndarray, + fps: int, + window_s: float = 0.4, +) -> np.ndarray: + """Smooth position using a short polynomial window.""" + if window_s <= 0: + return positions.copy() + window = max(5, int(round(window_s * fps))) + if window % 2 == 0: + window += 1 + if len(positions) <= window: + return positions.copy() + return savgol_filter(positions, window_length=window, polyorder=3, axis=0, mode="interp") + + +def _savgol_quaternions( + quaternions: np.ndarray, + fps: int, + window_s: float = 0.0, +) -> np.ndarray: + """Smooth sign-aligned quaternion components for sensitivity analysis.""" + q = np.asarray(quaternions, dtype=float).copy() + if window_s <= 0 or len(q) < 3: + return q + norms = np.linalg.norm(q, axis=1) + if not np.isfinite(q).all() or np.any(norms <= 1e-12): + return q + q /= norms[:, None] + for idx in range(1, len(q)): + if np.dot(q[idx - 1], q[idx]) < 0: + q[idx] *= -1 + window = max(5, int(round(window_s * fps))) + if window % 2 == 0: + window += 1 + if len(q) <= window: + return q + q = savgol_filter(q, window_length=window, polyorder=3, axis=0, mode="interp") + norms = np.linalg.norm(q, axis=1) + if np.any(norms <= 1e-12): + return np.asarray(quaternions, dtype=float).copy() + return q / norms[:, None] + + +def _active_motion_bounds( + positions1: np.ndarray, + positions2: np.ndarray, + fps: int, + speed_threshold: float = 2.0, +) -> tuple[int, int]: + """Find the first and last sustained instrument movement.""" + n = min(len(positions1), len(positions2)) + if n < 2 * fps: + return 0, max(0, n - 1) + dt = 1.0 / fps + p1 = _savgol_positions(positions1[:n], fps) + p2 = _savgol_positions(positions2[:n], fps) + speed = np.maximum( + np.linalg.norm(np.gradient(p1, dt, axis=0), axis=1), + np.linalg.norm(np.gradient(p2, dt, axis=0), axis=1), + ) + sustained_frames = max(3, int(round(0.4 * fps))) + active = speed > speed_threshold + runs = np.convolve(active.astype(int), np.ones(sustained_frames, dtype=int), mode="valid") + candidates = np.flatnonzero(runs == sustained_frames) + if not len(candidates): + return 0, n - 1 + buffer_frames = int(round(0.5 * fps)) + start = max(0, int(candidates[0]) - buffer_frames) + end = min(n - 1, int(candidates[-1] + sustained_frames - 1) + buffer_frames) + return start, end + + +def _movement_episodes(speed: np.ndarray, fps: int, threshold: float = 5.0) -> list[tuple[int, int]]: + moving = speed > threshold + minimum = max(2, int(round(0.25 * fps))) + starts = np.flatnonzero(moving & ~np.r_[False, moving[:-1]]) + ends = np.flatnonzero(moving & ~np.r_[moving[1:], False]) + 1 + return [(int(start), int(end)) for start, end in zip(starts, ends) if end - start >= minimum] + + +def _idle_episodes(speed: np.ndarray, fps: int, threshold: float = 5.0) -> list[tuple[int, int]]: + idle = speed < threshold + minimum = max(2, int(round(0.25 * fps))) + starts = np.flatnonzero(idle & ~np.r_[False, idle[:-1]]) + ends = np.flatnonzero(idle & ~np.r_[idle[1:], False]) + 1 + return [(int(start), int(end)) for start, end in zip(starts, ends) if end - start >= minimum] + + +def _angular_metrics(quaternions_wxyz: np.ndarray, fps: int) -> tuple[float, float, float]: + """Return total rotation, mean angular speed, and angular-speed CV.""" + q = np.asarray(quaternions_wxyz, dtype=float) + if len(q) < 3 or q.shape[1] != 4: + return np.nan, np.nan, np.nan + norms = np.linalg.norm(q, axis=1) + if not np.isfinite(q).all() or np.any(norms <= 1e-12): + return np.nan, np.nan, np.nan + q = q / norms[:, None] + rotations = Rotation.from_quat(q[:, [1, 2, 3, 0]]) + relative = rotations[:-1].inv() * rotations[1:] + increments_deg = np.degrees(relative.magnitude()) + angular_speed = increments_deg * fps + active = angular_speed[angular_speed > 0.1] + total_rotation = float(np.sum(increments_deg)) + mean_speed = float(np.mean(angular_speed)) + cv = float(np.std(active, ddof=0) / np.mean(active)) if len(active) > 5 else np.nan + return total_rotation, mean_speed, cv + + +def _tool_motion_features( + positions: np.ndarray, + quaternions: np.ndarray, + fps: int, + prefix: str, + position_window_s: float = 0.4, + orientation_window_s: float = 0.0, +) -> tuple[dict[str, float], np.ndarray]: + dt = 1.0 / fps + pos = _savgol_positions( + np.asarray(positions, dtype=float), + fps, + window_s=position_window_s, + ) + velocity = np.gradient(pos, dt, axis=0) + acceleration = np.gradient(velocity, dt, axis=0) + jerk = np.gradient(acceleration, dt, axis=0) + speed = np.linalg.norm(velocity, axis=1) + acceleration_magnitude = np.linalg.norm(acceleration, axis=1) + jerk_magnitude = np.linalg.norm(jerk, axis=1) + path_length = float(np.linalg.norm(np.diff(pos, axis=0), axis=1).sum()) + duration = float(len(pos) / fps) + elapsed = np.arange(len(pos), dtype=float) * dt + if path_length > 0 and len(pos) > 3: + jerk_integral = float(np.trapezoid(jerk_magnitude**2, elapsed)) + normalised_jerk = float( + np.sqrt(0.5 * jerk_integral * ((len(pos) - 1) * dt) ** 5 / path_length**2) + ) + else: + normalised_jerk = np.nan + ranges = np.ptp(pos, axis=0) + episodes = _movement_episodes(speed, fps) + idle_episodes = _idle_episodes(speed, fps) + movement_durations = [(end - start) / fps for start, end in episodes] + peaks, _ = find_peaks( + speed, + height=5.0, + prominence=2.0, + distance=max(1, int(round(0.25 * fps))), + ) + processed_quaternions = _savgol_quaternions( + quaternions, + fps, + window_s=orientation_window_s, + ) + total_rotation, mean_angular_speed, angular_cv = _angular_metrics( + processed_quaternions, + fps, + ) + features = { + f"{prefix}_total_time": duration, + f"{prefix}_path_length": path_length, + f"{prefix}_path_length_3d": path_length, + f"{prefix}_avg_speed": float(np.mean(speed)), + f"{prefix}_max_speed": float(np.max(speed)), + f"{prefix}_std_speed": float(np.std(speed, ddof=0)), + f"{prefix}_speed_cv": ( + float(np.std(speed, ddof=0) / np.mean(speed)) if np.mean(speed) > 0 else np.nan + ), + f"{prefix}_avg_acceleration": float(np.mean(acceleration_magnitude)), + f"{prefix}_max_acceleration": float(np.max(acceleration_magnitude)), + f"{prefix}_std_acceleration": float(np.std(acceleration_magnitude, ddof=0)), + f"{prefix}_accel_cv": ( + float(np.std(acceleration_magnitude, ddof=0) / np.mean(acceleration_magnitude)) + if np.mean(acceleration_magnitude) > 0 + else np.nan + ), + f"{prefix}_avg_jerk": float(np.mean(jerk_magnitude)), + f"{prefix}_max_jerk": float(np.max(jerk_magnitude)), + f"{prefix}_normalized_jerk": normalised_jerk, + f"{prefix}_working_area_xy": float(ranges[0] * ranges[1]), + f"{prefix}_working_volume": float(np.prod(ranges)), + f"{prefix}_range_x": float(ranges[0]), + f"{prefix}_range_y": float(ranges[1]), + f"{prefix}_range_z": float(ranges[2]), + f"{prefix}_economy_of_motion": ( + float(np.linalg.norm(pos[-1] - pos[0]) / path_length) if path_length > 0 else np.nan + ), + f"{prefix}_idle_time_ratio": float(np.mean(speed < 5.0)), + f"{prefix}_active_time_ratio": float(np.mean(speed >= 5.0)), + f"{prefix}_num_movements": float(len(episodes)), + f"{prefix}_idle_episode_count": float(len(idle_episodes)), + f"{prefix}_avg_movement_duration": ( + float(np.mean(movement_durations)) if movement_durations else 0.0 + ), + f"{prefix}_num_speed_peaks": float(len(peaks)), + f"{prefix}_total_rotation": total_rotation, + f"{prefix}_avg_angular_velocity": mean_angular_speed, + f"{prefix}_angular_velocity_cv": angular_cv, + f"{prefix}_rotation_per_path": ( + float(total_rotation / path_length) + if np.isfinite(total_rotation) and path_length > 0 + else np.nan + ), + f"{prefix}_rotation_economy": ( + float(total_rotation / len(episodes)) + if np.isfinite(total_rotation) and episodes + else np.nan + ), + } + return features, speed + + +def _trial_motion_features( + trial_key_value: str, + dataset: str, + phase_bounds: dict[str, tuple[int, int]], + position_window_s: float = 0.4, + orientation_window_s: float = 0.0, +) -> dict[str, object] | None: + path = ORIGIN_MOTION / f"{trial_key_value}.json" + if not path.exists(): + return None + payload = json.loads(path.read_text()) + raw = np.asarray(payload.get("features", []), dtype=float) + if raw.ndim != 2 or raw.shape[1] < 14 or len(raw) < 20: + return None + fps = _phase_frame_rate(dataset) + pos1, quat1 = raw[:, 0:3], raw[:, 3:7] + pos2, quat2 = raw[:, 7:10], raw[:, 10:14] + if trial_key_value in phase_bounds: + start, end = phase_bounds[trial_key_value] + trim_method = "phase annotation" + else: + start, end = _active_motion_bounds(pos1, pos2, fps) + trim_method = "sustained motion" + start = max(0, min(int(start), len(raw) - 1)) + end = max(start, min(int(end), len(raw) - 1)) + selection = slice(start, end + 1) + pos1, quat1 = pos1[selection], quat1[selection] + pos2, quat2 = pos2[selection], quat2[selection] + if len(pos1) < 20: + return None + + tool1, speed1 = _tool_motion_features( + pos1, + quat1, + fps, + "tool1", + position_window_s=position_window_s, + orientation_window_s=orientation_window_s, + ) + tool2, speed2 = _tool_motion_features( + pos2, + quat2, + fps, + "tool2", + position_window_s=position_window_s, + orientation_window_s=orientation_window_s, + ) + distances = np.linalg.norm( + _savgol_positions(pos1, fps, window_s=position_window_s) + - _savgol_positions(pos2, fps, window_s=position_window_s), + axis=1, + ) + moving1_10 = speed1 > 10.0 + moving2_10 = speed2 > 10.0 + either_10 = moving1_10 | moving2_10 + both_10 = moving1_10 & moving2_10 + moving1_5 = speed1 > 5.0 + moving2_5 = speed2 > 5.0 + both_5 = moving1_5 & moving2_5 + if np.any(both_5): + concurrent_efficiency = float( + np.mean( + np.minimum(speed1[both_5], speed2[both_5]) + / np.maximum(speed1[both_5], speed2[both_5]) + ) + ) + else: + concurrent_efficiency = np.nan + + speed1_standard = (speed1 - np.mean(speed1)) / (np.std(speed1) + 1e-12) + speed2_standard = (speed2 - np.mean(speed2)) / (np.std(speed2) + 1e-12) + cross = correlate(speed1_standard, speed2_standard, mode="full", method="fft") + lags = correlation_lags(len(speed1_standard), len(speed2_standard), mode="full") + lag_limit = 5 * fps + allowed = np.abs(lags) <= lag_limit + best_lag_frames = int(lags[allowed][np.argmax(cross[allowed])]) + path1 = tool1["tool1_path_length"] + path2 = tool2["tool2_path_length"] + result: dict[str, object] = { + "trial_key": trial_key_value, + "trim_start_frame": start, + "trim_end_frame": end, + "trim_method": trim_method, + "n_analysed_frames": int(len(pos1)), + "fps_used": fps, + "total_time": float(len(pos1) / fps), + **tool1, + **tool2, + "bimanual_correlation": _safe_corr(speed1, speed2), + "bimanual_lag_s": float(abs(best_lag_frames) / fps), + "bimanual_symmetry": ( + float(min(path1, path2) / max(path1, path2)) if max(path1, path2) > 0 else np.nan + ), + "tool_distance_avg": float(np.mean(distances)), + "tool_distance_std": float(np.std(distances, ddof=0)), + "tool_distance_cv": ( + float(np.std(distances, ddof=0) / np.mean(distances)) + if np.mean(distances) > 0 + else np.nan + ), + "tool_close_proximity_ratio": float(np.mean(distances < 20.0)), + "simultaneous_motion_ratio": ( + float(np.sum(both_10) / np.sum(either_10)) if np.any(either_10) else 0.0 + ), + "bimanual_concurrent_efficiency": concurrent_efficiency, + "bimanual_dist_speed_corr": _safe_corr(distances, speed1 + speed2), + "combined_idle_ratio": float( + (tool1["tool1_idle_time_ratio"] + tool2["tool2_idle_time_ratio"]) / 2 + ), + "combined_jerk_index": float( + (tool1["tool1_normalized_jerk"] + tool2["tool2_normalized_jerk"]) / 2 + ), + } + return result + + +def extract_primary_kinematics( + canonical: pd.DataFrame, + phase_frames: pd.DataFrame | None, + position_window_s: float = 0.4, + orientation_window_s: float = 0.0, + output_name: str | None = "primary_kinematics.csv", +) -> pd.DataFrame: + counts = canonical.groupby("trial_key")["trial_key"].transform("size") + independent = canonical.loc[counts.eq(1), ["trial_key", "dataset"]].drop_duplicates() + # Use one endpoint rule for every primary recording. Dense labels are + # retained only to validate this automatic interval and for phase analyses. + phase_bounds: dict[str, tuple[int, int]] = {} + rows = [] + for row in independent.itertuples(index=False): + features = _trial_motion_features( + str(row.trial_key), + str(row.dataset), + phase_bounds, + position_window_s=position_window_s, + orientation_window_s=orientation_window_s, + ) + if features is not None: + rows.append(features) + out = pd.DataFrame(rows) + if output_name is not None: + out.to_csv(OUT / output_name, index=False) + return out + + +def load_all_trial_data(phase_frames: pd.DataFrame | None = None) -> pd.DataFrame: + canon = pd.read_csv(BTPN_CACHE / "canonical_trials.csv") + motion = pd.read_csv(AI_ELT / "outputs" / "motion" / "combined_motion_metrics.csv") + trimmed = pd.read_csv(AI_ELT / "outputs" / "papers" / "paper1" / "results" / "extended_features_cache_trimmed.csv") + hand = load_handedness() + + df = canon.merge(motion, on=["dataset", "trial_name"], how="left", validate="one_to_one") + df = df.merge(trimmed, on="trial_name", how="left", validate="one_to_one", suffixes=("", "_trimmed")) + if not hand.empty: + df = df.merge(hand, on=["dataset", "trial_number"], how="left") + else: + df["handedness"] = "unknown" + df["handedness"] = df["handedness"].fillna("unknown") + df["cohort"] = df["dataset"].map( + {"7DOF2024": "urology", "6DOF2023": "urology", "BAPES2024": "paediatric"} + ) + df["cohort_label"] = df["dataset"].map(DATASET_LABELS) + df["trial_key"] = [trial_key(ds, tn) for ds, tn in zip(df["dataset"], df["trial_number"])] + primary = extract_primary_kinematics(df, phase_frames) + df = df.merge(primary, on="trial_key", how="left", suffixes=("", "_primary"), validate="many_to_one") + for col in primary.columns: + if col == "trial_key": + continue + primary_col = f"{col}_primary" if col in canon.columns or col in motion.columns or col in trimmed.columns else col + if primary_col in df.columns: + df[col] = df[primary_col] + if primary_col != col: + df = df.drop(columns=primary_col) + df["dof"] = df["dataset"].map({"7DOF2024": "7 DoF", "BAPES2024": "7 DoF", "6DOF2023": "6 DoF"}) + df["jaw"] = df["dataset"].map({"7DOF2024": "yes", "BAPES2024": "yes", "6DOF2023": "no"}) + df["fps"] = df["dataset"].map({"7DOF2024": 13, "BAPES2024": 13, "6DOF2023": 26}) + df.to_csv(OUT / "all_trial_analysis.csv", index=False) + return df + + +def _phase_frame_rate(dataset: str) -> int: + return 26 if dataset == "6DOF2023" else 13 + + +def _trim_phase_frames_to_task(frames: pd.DataFrame) -> pd.DataFrame: + """Retain the labelled task interval from first to last non-idle frame.""" + kept = [] + group_cols = ["dataset", "trial_id", "ann_dir"] + for _, group in frames.sort_values(group_cols + ["frame_idx"]).groupby(group_cols, sort=False): + active = ~group["coarse_derived"].isin(["idle", "nan", "None"]) + if not active.any(): + continue + active_idx = np.flatnonzero(active.to_numpy()) + trimmed = group.iloc[active_idx[0] : active_idx[-1] + 1].copy() + fps = _phase_frame_rate(str(trimmed["dataset"].iloc[0])) + trimmed["time_s"] = np.arange(len(trimmed), dtype=float) / fps + kept.append(trimmed) + return pd.concat(kept, ignore_index=True) if kept else frames.iloc[0:0].copy() + + +def _rebuild_completed_cycles(frames: pd.DataFrame) -> pd.DataFrame: + """Retain phase-defined cycles that reach a placement endpoint. + + A cycle is complete only when it contains at least one placement frame and + at least one task-action frame (reach, grasp, transfer, or nudge). The + exporter can put placement-only boundary frames into the following cycle + index. Such a segment is attached to the immediately preceding interval + only when that interval has no placement. Other placement-only residuals + and attempts without placement are excluded. + """ + rows: list[dict[str, object]] = [] + excluded_rows: list[dict[str, object]] = [] + group_cols = ["dataset", "trial_id", "ann_dir"] + for _, group in frames.sort_values(group_cols + ["frame_idx"]).groupby(group_cols, sort=False): + dataset = str(group["dataset"].iloc[0]) + fps = _phase_frame_rate(dataset) + cycle_indices = sorted( + pd.to_numeric(group["cycle_index"], errors="coerce") + .dropna() + .astype(int) + .unique() + ) + if not cycle_indices: + continue + cycle_frames = { + cycle_index: group[group["cycle_index"] == cycle_index].copy() + for cycle_index in cycle_indices + } + for position, cycle_index in enumerate(cycle_indices): + cycle = cycle_frames[cycle_index] + labels = set(cycle["coarse_derived"].astype(str)) + substantive = labels - {"idle", "place"} + if "place" not in labels or substantive: + continue + previous = [ + index + for index in cycle_indices[:position] + if not cycle_frames[index].empty + ] + if previous: + previous_index = previous[-1] + if not cycle_frames[previous_index]["coarse_derived"].eq("place").any(): + cycle_frames[previous_index] = ( + pd.concat( + [cycle_frames[previous_index], cycle], + ignore_index=True, + ) + .sort_values("frame_idx") + .reset_index(drop=True) + ) + cycle_frames[cycle_index] = cycle.iloc[0:0].copy() + + for cycle_index in cycle_indices: + cycle = cycle_frames[cycle_index] + if cycle.empty: + continue + labels = cycle["coarse_derived"].astype(str) + has_placement = bool(labels.eq("place").any()) + has_task_action = bool( + labels.isin(["reach", "grasp", "transfer", "nudge"]).any() + ) + if not (has_placement and has_task_action): + excluded_rows.append( + { + "dataset": dataset, + "trial_id": group["trial_id"].iloc[0], + "ann_dir": group["ann_dir"].iloc[0], + "cycle_index": cycle_index, + "n_frames": int(len(cycle)), + "has_placement": has_placement, + "has_task_action": has_task_action, + "phase_sequence": ",".join(labels.drop_duplicates()), + } + ) + continue + row: dict[str, object] = { + "dataset": dataset, + "trial_id": group["trial_id"].iloc[0], + "ann_dir": group["ann_dir"].iloc[0], + "cycle_index": cycle_index, + "duration_s": float(len(cycle) / fps), + "dominant_phase": labels.value_counts().idxmax(), + "n_transitions": int(labels.ne(labels.shift()).sum() - 1), + "n_dropped_frames": int(labels.eq("dropped").sum()), + "n_drop_events": int( + (labels.eq("dropped") & ~labels.shift(fill_value="").eq("dropped")).sum() + ), + } + for phase in PHASE_ORDER: + row[f"frac_{phase}"] = float(labels.eq(phase).mean()) + rows.append(row) + pd.DataFrame(excluded_rows).to_csv( + OUT / "phase_cycle_exclusions.csv", + index=False, + ) + return pd.DataFrame(rows) + + +def _rebuild_phase_trials( + source_trials: pd.DataFrame, + frames: pd.DataFrame, + cycles: pd.DataFrame, +) -> pd.DataFrame: + rebuilt = [] + phase_cols = [f"frac_{phase}" for phase in PHASE_ORDER] + for (dataset, trial_id), group in frames.groupby(["dataset", "trial_id"], sort=False): + source = source_trials[ + (source_trials["dataset"] == dataset) & (source_trials["trial_id"] == trial_id) + ].iloc[0].to_dict() + fps = _phase_frame_rate(str(dataset)) + labels = group["coarse_derived"].astype(str) + trial_cycles = cycles[ + (cycles["dataset"] == dataset) & (cycles["trial_id"] == trial_id) + ] + durations = trial_cycles["duration_s"].to_numpy(float) + source.update( + { + "n_frames": int(len(group)), + "total_s": float(len(group) / fps), + "n_cycles": int(len(trial_cycles)), + "min_cycle_s": float(np.min(durations)) if len(durations) else np.nan, + "max_cycle_s": float(np.max(durations)) if len(durations) else np.nan, + "mean_cycle_s": float(np.mean(durations)) if len(durations) else np.nan, + "std_cycle_s": float(np.std(durations, ddof=0)) if len(durations) else np.nan, + } + ) + for col in phase_cols: + source[col] = float(labels.eq(col.replace("frac_", "")).mean()) + rebuilt.append(source) + return pd.DataFrame(rebuilt) + + +def load_phase_data() -> tuple[pd.DataFrame, pd.DataFrame, pd.DataFrame]: + source_trials = pd.read_parquet(BTPN_CACHE / "trials.parquet") + frames = pd.read_parquet(BTPN_CACHE / "frames.parquet") + meta = source_trials[["dataset", "trial_id", "trial_short", "skill_category", "total_procedures"]] + frames = frames.merge(meta, on=["dataset", "trial_id", "trial_short"], how="left") + frames["exported_max_cycle_index"] = frames.groupby( + ["dataset", "trial_id", "ann_dir"] + )["cycle_index"].transform("max") + frames = _trim_phase_frames_to_task(frames) + cycles = _rebuild_completed_cycles(frames) + trials = _rebuild_phase_trials(source_trials, frames, cycles) + cycles = cycles.merge(meta, on=["dataset", "trial_id"], how="left") + trials["trial_key"] = [ + phase_trial_key(dataset, short) + for dataset, short in zip(trials["dataset"], trials["trial_short"]) + ] + cycles["trial_key"] = [ + phase_trial_key(dataset, short) + for dataset, short in zip(cycles["dataset"], cycles["trial_short"]) + ] + frames["trial_key"] = [ + phase_trial_key(dataset, short) + for dataset, short in zip(frames["dataset"], frames["trial_short"]) + ] + trials.to_csv(OUT / "phase_trials_current.csv", index=False) + cycles.to_csv(OUT / "phase_cycles_current.csv", index=False) + return trials, cycles, frames + + +def bootstrap_ci(values: Iterable[float], func=np.mean, n_boot: int = 3000) -> tuple[float, float]: + x = np.asarray([v for v in values if np.isfinite(v)], dtype=float) + if len(x) == 0: + return (np.nan, np.nan) + if len(x) == 1: + return (float(x[0]), float(x[0])) + rng = np.random.default_rng(20260618) + boots = [func(rng.choice(x, size=len(x), replace=True)) for _ in range(n_boot)] + return tuple(np.percentile(boots, [2.5, 97.5])) + + +def bootstrap_spearman_ci( + x_values: Iterable[float], + y_values: Iterable[float], + n_boot: int = 3000, +) -> tuple[float, float]: + """Paired recording-level percentile interval for Spearman correlation.""" + pairs = pd.DataFrame({"x": x_values, "y": y_values}).replace( + [np.inf, -np.inf], + np.nan, + ).dropna() + if len(pairs) < 3: + return (np.nan, np.nan) + x = pairs["x"].to_numpy(float) + y = pairs["y"].to_numpy(float) + rng = np.random.default_rng(20260618) + estimates = [] + for _ in range(n_boot): + idx = rng.choice(np.arange(len(pairs)), size=len(pairs), replace=True) + if np.unique(x[idx]).size < 2 or np.unique(y[idx]).size < 2: + continue + estimates.append(stats.spearmanr(x[idx], y[idx]).statistic) + if not estimates: + return (np.nan, np.nan) + return tuple(np.nanpercentile(estimates, [2.5, 97.5])) + + +def cliffs_delta(a: Iterable[float], b: Iterable[float]) -> float: + x = np.asarray([v for v in a if np.isfinite(v)], dtype=float) + y = np.asarray([v for v in b if np.isfinite(v)], dtype=float) + if len(x) == 0 or len(y) == 0: + return np.nan + gt = sum((v > y).sum() for v in x) + lt = sum((v < y).sum() for v in x) + return (gt - lt) / (len(x) * len(y)) + + +def benjamini_hochberg(p_values: Iterable[float]) -> np.ndarray: + """Benjamini-Hochberg false-discovery-rate correction.""" + p = np.asarray(list(p_values), dtype=float) + q = np.full_like(p, np.nan, dtype=float) + finite = np.isfinite(p) + if not finite.any(): + return q + idx = np.where(finite)[0] + order = idx[np.argsort(p[idx])] + ranked = p[order] + m = len(ranked) + adjusted = ranked * m / np.arange(1, m + 1) + adjusted = np.minimum.accumulate(adjusted[::-1])[::-1] + q[order] = np.minimum(adjusted, 1.0) + return q + + +def zscore_within_dataset(df: pd.DataFrame, columns: list[str]) -> pd.DataFrame: + out = df.copy() + for col in columns: + vals = [] + for _, g in df.groupby("dataset"): + x = g[col].astype(float) + sd = x.std(ddof=0) + vals.append((x - x.mean()) / (sd if sd and np.isfinite(sd) else 1.0)) + out[col + "_z"] = pd.concat(vals).sort_index() + return out + + +def feature_statistics(df: pd.DataFrame) -> pd.DataFrame: + cols = [ + c + for c in FEATURES + if c in df.columns + and pd.to_numeric(df[c], errors="coerce").dropna().nunique() > 1 + ] + identifier_counts = df.groupby("trial_key")["trial_key"].transform("size") + independent_df = df.loc[identifier_counts.eq(1)].copy() + records: list[dict[str, object]] = [] + rng = np.random.default_rng(20260618) + for col in cols: + cohort_deltas = [] + cohort_delta_weights = [] + cohort_kruskal_p = [] + cohort_rho_z = [] + cohort_rho_weights = [] + for _, cohort in independent_df.groupby("dataset"): + cohort = cohort[ + ["skill_category", "total_procedures", col] + ].replace([np.inf, -np.inf], np.nan).dropna() + novice = cohort.loc[ + cohort["skill_category"] == "novice", col + ].to_numpy(float) + expert = cohort.loc[ + cohort["skill_category"] == "expert", col + ].to_numpy(float) + if len(novice) and len(expert): + cohort_deltas.append(cliffs_delta(novice, expert)) + cohort_delta_weights.append(len(novice) * len(expert)) + groups = [ + cohort.loc[cohort["skill_category"] == skill, col].to_numpy(float) + for skill in SKILL_ORDER + ] + groups = [group for group in groups if len(group)] + if len(groups) >= 2 and np.unique(np.concatenate(groups)).size > 1: + cohort_kruskal_p.append(float(stats.kruskal(*groups).pvalue)) + if ( + len(cohort) >= 4 + and cohort[col].nunique() > 1 + and cohort["total_procedures"].nunique() > 1 + ): + rho = float( + stats.spearmanr( + cohort[col], + cohort["total_procedures"], + ).statistic + ) + cohort_rho_z.append(np.arctanh(np.clip(rho, -0.999999, 0.999999))) + cohort_rho_weights.append(max(len(cohort) - 3, 1)) + + delta = ( + float(np.average(cohort_deltas, weights=cohort_delta_weights)) + if cohort_deltas + else np.nan + ) + boot = [] + if cohort_deltas: + for _ in range(3000): + sampled_deltas = [] + sampled_weights = [] + for _, cohort in independent_df.groupby("dataset"): + novice = cohort.loc[ + cohort["skill_category"] == "novice", col + ].dropna().to_numpy(float) + expert = cohort.loc[ + cohort["skill_category"] == "expert", col + ].dropna().to_numpy(float) + if len(novice) and len(expert): + sampled_deltas.append( + cliffs_delta( + rng.choice(novice, size=len(novice), replace=True), + rng.choice(expert, size=len(expert), replace=True), + ) + ) + sampled_weights.append(len(novice) * len(expert)) + boot.append(np.average(sampled_deltas, weights=sampled_weights)) + lo, hi = np.nanpercentile(boot, [2.5, 97.5]) + else: + lo = hi = np.nan + + if cohort_kruskal_p: + h = float( + -2 + * np.sum( + np.log(np.clip(cohort_kruskal_p, np.finfo(float).tiny, 1.0)) + ) + ) + p = float( + stats.chi2.sf(h, 2 * len(cohort_kruskal_p)) + ) + else: + h = p = np.nan + + if cohort_rho_z: + weights = np.asarray(cohort_rho_weights, dtype=float) + z_values = np.asarray(cohort_rho_z, dtype=float) + z_meta = float(np.average(z_values, weights=weights)) + z_se = float(1.0 / np.sqrt(weights.sum())) + rho = float(np.tanh(z_meta)) + rho_p = float(2 * stats.norm.sf(abs(z_meta / z_se))) + rho_lo, rho_hi = np.tanh( + [z_meta - 1.96 * z_se, z_meta + 1.96 * z_se] + ) + heterogeneity_q = float(np.sum(weights * (z_values - z_meta) ** 2)) + heterogeneity_df = max(len(z_values) - 1, 0) + heterogeneity_i2 = ( + float( + max( + 0.0, + 100.0 + * (heterogeneity_q - heterogeneity_df) + / heterogeneity_q, + ) + ) + if heterogeneity_q > 0 and heterogeneity_df > 0 + else 0.0 + ) + else: + rho = rho_p = rho_lo = rho_hi = np.nan + heterogeneity_q = heterogeneity_i2 = np.nan + records.append( + { + "feature": col, + "label": FEATURES[col], + "cliffs_delta_novice_expert": delta, + "delta_ci_low": lo, + "delta_ci_high": hi, + "kruskal_h": h, + "kruskal_p": p, + "spearman_rho_procedures": rho, + "spearman_p": rho_p, + "spearman_ci_low": float(rho_lo), + "spearman_ci_high": float(rho_hi), + "spearman_meta_i2": heterogeneity_i2, + "n_cohorts": int(len(cohort_rho_z)), + "n_nonmissing": int(independent_df[col].notna().sum()), + } + ) + res = pd.DataFrame(records) + res["kruskal_q"] = benjamini_hochberg(res["kruskal_p"]) + res["spearman_q"] = benjamini_hochberg(res["spearman_p"]) + res = res.sort_values("cliffs_delta_novice_expert") + res.to_csv(OUT / "all_trial_feature_statistics.csv", index=False) + return res + + +def ols_fit(X: np.ndarray, y: np.ndarray) -> tuple[np.ndarray, float]: + beta = np.linalg.lstsq(X, y, rcond=None)[0] + pred = X @ beta + ss_res = float(np.sum((y - pred) ** 2)) + ss_tot = float(np.sum((y - y.mean()) ** 2)) + r2 = 1.0 - ss_res / ss_tot if ss_tot > 0 else np.nan + return beta, r2 + + +def cohort_adjusted_models(df: pd.DataFrame, proxy: pd.DataFrame) -> pd.DataFrame: + """Cohort-adjusted association between experience volume and key outcomes.""" + use_df = df.copy() + use_df["Coordination-control composite"] = ( + proxy["Coordination-control composite"].to_numpy() if len(proxy) == len(df) else np.nan + ) + identifier_counts = use_df.groupby("trial_key")["trial_key"].transform("size") + use_df = use_df.loc[identifier_counts.eq(1)].copy() + outcomes = [ + "total_time", + "bimanual_correlation", + "tool1_avg_speed", + "tool2_avg_speed", + "combined_idle_ratio", + "tool1_range_z", + "tool2_range_z", + "Coordination-control composite", + ] + rows = [] + rng = np.random.default_rng(20260618) + for outcome in outcomes: + if outcome not in use_df.columns: + continue + d = use_df[["dataset", "total_procedures", outcome]].replace([np.inf, -np.inf], np.nan).dropna() + if len(d) < 20: + continue + y_raw = d[outcome].to_numpy(float) + y_sd = y_raw.std(ddof=0) + if not np.isfinite(y_sd) or y_sd == 0: + continue + y = (y_raw - y_raw.mean()) / y_sd + log_proc = np.log10(d["total_procedures"].to_numpy(float) + 1) + cohort = pd.get_dummies(d["dataset"], drop_first=True).to_numpy(float) + X_full = np.column_stack([np.ones(len(d)), log_proc, cohort]) + X_proc = np.column_stack([np.ones(len(d)), log_proc]) + X_cohort = np.column_stack([np.ones(len(d)), cohort]) + beta, r2_full = ols_fit(X_full, y) + _, r2_proc = ols_fit(X_proc, y) + _, r2_cohort = ols_fit(X_cohort, y) + boot = [] + for _ in range(2000): + idx = np.concatenate( + [ + rng.choice( + cohort_idx, + size=len(cohort_idx), + replace=True, + ) + for dataset in d["dataset"].unique() + for cohort_idx in [ + np.flatnonzero(d["dataset"].to_numpy() == dataset) + ] + ] + ) + b, _ = ols_fit(X_full[idx], y[idx]) + boot.append(b[1]) + lo, hi = np.nanpercentile(boot, [2.5, 97.5]) + permuted = [] + dataset_values = d["dataset"].to_numpy() + for _ in range(5000): + permuted_log_proc = log_proc.copy() + for dataset in d["dataset"].unique(): + idx = np.flatnonzero(dataset_values == dataset) + permuted_log_proc[idx] = rng.permutation(log_proc[idx]) + X_permuted = np.column_stack( + [np.ones(len(d)), permuted_log_proc, cohort] + ) + permuted.append(ols_fit(X_permuted, y)[0][1]) + procedure_p = float( + ( + 1 + + np.sum( + np.abs(np.asarray(permuted, dtype=float)) + >= abs(float(beta[1])) + ) + ) + / (len(permuted) + 1) + ) + rows.append( + { + "outcome": outcome, + "label": FEATURES.get(outcome, outcome), + "n": int(len(d)), + "beta_log10_procedures": float(beta[1]), + "ci_low": float(lo), + "ci_high": float(hi), + "procedure_p": procedure_p, + "r2_procedure_only": float(r2_proc), + "r2_cohort_only": float(r2_cohort), + "r2_full": float(r2_full), + "cohort_delta_r2_after_procedure": float(r2_full - r2_proc), + } + ) + out = pd.DataFrame(rows) + if not out.empty: + out["procedure_q"] = benjamini_hochberg(out["procedure_p"]) + out.to_csv(OUT / "cohort_adjusted_models.csv", index=False) + return out + + +def write_feature_dictionary(df: pd.DataFrame) -> pd.DataFrame: + domain_by_feature: dict[str, list[str]] = {} + for domain, specs in OSATS_DOMAINS.items(): + for feature, _ in specs: + domain_by_feature.setdefault(feature, []).append(domain) + rows = [] + for feature, label in FEATURES.items(): + if feature not in df.columns: + continue + direction, meaning = FEATURE_DIRECTIONS.get(feature, ("", "")) + nonmissing = int(df[feature].notna().sum()) + cohorts = [ + dataset_label(ds) + for ds in DATASET_ORDER + if ds in set(df.loc[df[feature].notna(), "dataset"].astype(str)) + ] + rows.append( + { + "feature": feature, + "label": label, + "favourable_direction": direction.replace("$", "").replace("\\", ""), + "interpretation": meaning, + "domain": "; ".join(domain_by_feature.get(feature, [])), + "available_cohorts": "; ".join(cohorts), + "nonmissing_trials": nonmissing, + "missing_trials": int(len(df) - nonmissing), + } + ) + out = pd.DataFrame(rows) + out.to_csv(OUT / "feature_dictionary.csv", index=False) + return out + + +def run_classification(df: pd.DataFrame) -> dict[str, object]: + try: + from sklearn.ensemble import RandomForestClassifier + from sklearn.impute import SimpleImputer + from sklearn.linear_model import LogisticRegression + from sklearn.metrics import balanced_accuracy_score + from sklearn.model_selection import LeaveOneGroupOut, StratifiedGroupKFold, cross_val_score + from sklearn.pipeline import make_pipeline + from sklearn.preprocessing import StandardScaler + except Exception as exc: # pragma: no cover + return {"available": False, "error": str(exc)} + + all_cols = [c for c in FEATURES if c in df.columns] + time_cols = ["total_time"] if "total_time" in df.columns else [] + identifier_counts = df.groupby("trial_key")["trial_key"].transform("size") + use = df.loc[identifier_counts.eq(1)].dropna( + subset=["skill_category", "dataset", "total_time"] + ).copy() + y = use["skill_category"].astype(str).to_numpy() + groups = use["dataset"].astype(str).to_numpy() + participant_groups = use["trial_key"].astype(str).to_numpy() + out: dict[str, object] = {"available": True, "features": all_cols, "time_only_features": time_cols} + + base_models = { + "logistic_regression": make_pipeline( + SimpleImputer(strategy="median"), + StandardScaler(), + LogisticRegression(max_iter=500, class_weight="balanced", random_state=13), + ), + "random_forest": make_pipeline( + SimpleImputer(strategy="median"), + RandomForestClassifier(n_estimators=400, class_weight="balanced", random_state=13), + ), + } + model_specs = { + "time_only_logistic_regression": (base_models["logistic_regression"], time_cols), + "time_only_random_forest": (base_models["random_forest"], time_cols), + "all_features_logistic_regression": (base_models["logistic_regression"], all_cols), + "all_features_random_forest": (base_models["random_forest"], all_cols), + } + skf = StratifiedGroupKFold(n_splits=5, shuffle=True, random_state=13) + cv = {} + for name, (model, cols) in model_specs.items(): + if not cols: + continue + X = use[cols].replace([np.inf, -np.inf], np.nan) + scores = cross_val_score( + model, + X, + y, + cv=skf, + groups=participant_groups, + scoring="balanced_accuracy", + ) + cv[name] = {"mean_balanced_accuracy": float(scores.mean()), "sd": float(scores.std()), "features": cols} + out["stratified_group_5fold"] = cv + + logo = LeaveOneGroupOut() + lodo: dict[str, list[dict[str, object]]] = {} + for name, (model, cols) in model_specs.items(): + if not cols: + continue + X = use[cols].replace([np.inf, -np.inf], np.nan) + rows = [] + for train, test in logo.split(X, y, groups): + model.fit(X.iloc[train], y[train]) + pred = model.predict(X.iloc[test]) + rows.append( + { + "held_out_dataset": str(groups[test][0]), + "balanced_accuracy": float(balanced_accuracy_score(y[test], pred)), + "n_test": int(len(test)), + } + ) + lodo[name] = rows + out["leave_one_dataset_out"] = lodo + + pd.DataFrame(columns=["feature", "label", "importance"]).to_csv( + OUT / "skill_feature_importance.csv", + index=False, + ) + out["top_random_forest_features"] = [] + (OUT / "classification_summary.json").write_text(json.dumps(out, indent=2)) + return out + + +def run_metric_band_classification(clusters: pd.DataFrame) -> dict[str, object]: + try: + from sklearn.cluster import KMeans + from sklearn.ensemble import RandomForestClassifier + from sklearn.impute import SimpleImputer + from sklearn.linear_model import LogisticRegression + from sklearn.metrics import balanced_accuracy_score + from sklearn.model_selection import LeaveOneGroupOut, StratifiedGroupKFold, cross_val_score + from sklearn.pipeline import make_pipeline + from sklearn.preprocessing import StandardScaler + except Exception as exc: # pragma: no cover + return {"available": False, "error": str(exc)} + + if clusters.empty or "metric_cluster" not in clusters: + return {"available": False, "error": "metric clusters unavailable"} + feature_cols = [ + c + for c in [*CORE_PERFORMANCE_DOMAINS, "Coordination-control composite"] + if c in clusters.columns + ] + use = clusters.dropna(subset=["metric_cluster", "dataset", "total_procedures"]).copy() + if not feature_cols or use["metric_cluster"].nunique() < 2: + return {"available": False, "error": "insufficient metric bands"} + + X = use[feature_cols].replace([np.inf, -np.inf], np.nan) + groups = use["dataset"].astype(str).to_numpy() + participant_groups = use["trial_key"].astype(str).to_numpy() + + proc = use["total_procedures"].astype(float) + use["procedure_fixed_band"] = np.select( + [proc < 20, proc < 100], + ["procedure_novice", "procedure_intermediate"], + default="procedure_expert", + ) + ranked_proc = proc.rank(method="first") + use["procedure_tertile_band"] = pd.qcut( + ranked_proc, + q=3, + labels=["procedure_tertile_low", "procedure_tertile_mid", "procedure_tertile_high"], + ).astype(str) + proc_x = np.log10(proc.to_numpy().reshape(-1, 1) + 1) + if len(use) >= 6: + km = KMeans(n_clusters=3, n_init=200, random_state=29) + raw = km.fit_predict(proc_x) + proc_tmp = pd.DataFrame({"raw": raw, "proc": proc.to_numpy()}) + ordered = proc_tmp.groupby("raw")["proc"].median().sort_values().index.to_list() + proc_map = { + ordered[0]: "procedure_kmeans_low", + ordered[1]: "procedure_kmeans_mid", + ordered[2]: "procedure_kmeans_high", + } + use["procedure_kmeans_band"] = [proc_map[v] for v in raw] + else: + use["procedure_kmeans_band"] = use["procedure_tertile_band"] + + model_factories = { + "logistic_regression": lambda: make_pipeline( + SimpleImputer(strategy="median"), + StandardScaler(), + LogisticRegression(max_iter=500, class_weight="balanced", random_state=29), + ), + "random_forest": lambda: make_pipeline( + SimpleImputer(strategy="median"), + RandomForestClassifier(n_estimators=500, class_weight="balanced", random_state=29), + ), + } + + targets = { + "motion_defined": { + "label": "Motion-score bands", + "column": "metric_cluster", + }, + "procedure_fixed": { + "label": "Procedure thresholds", + "column": "procedure_fixed_band", + }, + "procedure_tertiles": { + "label": "Procedure tertiles", + "column": "procedure_tertile_band", + }, + "procedure_kmeans": { + "label": "Procedure K-means", + "column": "procedure_kmeans_band", + }, + } + + results: list[dict[str, object]] = [] + details: dict[str, object] = {} + logo = LeaveOneGroupOut() + for target_key, target in targets.items(): + y = use[target["column"]].astype(str).to_numpy() + class_counts = pd.Series(y).value_counts() + if len(class_counts) < 2 or class_counts.min() < 2: + details[target_key] = {"available": False, "class_counts": class_counts.to_dict()} + continue + n_splits = max(2, min(5, int(class_counts.min()))) + skf = StratifiedGroupKFold(n_splits=n_splits, shuffle=True, random_state=29) + details[target_key] = { + "available": True, + "label": target["label"], + "class_counts": class_counts.to_dict(), + "models": {}, + } + for model_key, factory in model_factories.items(): + model = factory() + scores = cross_val_score( + model, + X, + y, + cv=skf, + groups=participant_groups, + scoring="balanced_accuracy", + ) + lodo_rows = [] + for train, test in logo.split(X, y, groups): + model = factory() + model.fit(X.iloc[train], y[train]) + pred = model.predict(X.iloc[test]) + lodo_rows.append( + { + "held_out_dataset": str(groups[test][0]), + "balanced_accuracy": float(balanced_accuracy_score(y[test], pred)), + "n_test": int(len(test)), + } + ) + mean_lodo = float(np.mean([r["balanced_accuracy"] for r in lodo_rows])) + min_lodo = float(np.min([r["balanced_accuracy"] for r in lodo_rows])) + max_lodo = float(np.max([r["balanced_accuracy"] for r in lodo_rows])) + model_label = "Logistic regression" if model_key == "logistic_regression" else "Random forest" + results.append( + { + "target": target_key, + "target_label": target["label"], + "model": model_key, + "model_label": model_label, + "stratified_cv_balanced_accuracy": float(scores.mean()), + "stratified_cv_sd": float(scores.std()), + "leave_one_dataset_out_balanced_accuracy": mean_lodo, + "leave_one_dataset_out_min": min_lodo, + "leave_one_dataset_out_max": max_lodo, + "n_splits": int(n_splits), + } + ) + details[target_key]["models"][model_key] = { + "stratified_cv": { + "mean_balanced_accuracy": float(scores.mean()), + "sd": float(scores.std()), + "n_splits": int(n_splits), + }, + "leave_one_dataset_out": lodo_rows, + } + + result_df = pd.DataFrame(results) + result_df.to_csv(OUT / "metric_band_classification_comparison.csv", index=False) + legacy = {} + if not result_df.empty: + motion = result_df[result_df["target"] == "motion_defined"] + legacy["stratified_cv"] = { + f"metric_band_{r['model']}": { + "mean_balanced_accuracy": float(r["stratified_cv_balanced_accuracy"]), + "sd": float(r["stratified_cv_sd"]), + "n_splits": int(r["n_splits"]), + } + for _, r in motion.iterrows() + } + legacy["leave_one_dataset_out"] = { + f"metric_band_{model_key}": details["motion_defined"]["models"][model_key]["leave_one_dataset_out"] + for model_key in ["logistic_regression", "random_forest"] + if "motion_defined" in details and details["motion_defined"].get("available") and model_key in details["motion_defined"]["models"] + } + + out = {"available": True, "features": feature_cols, "targets": details, "comparison_rows": results, **legacy} + (OUT / "metric_band_classification_summary.json").write_text(json.dumps(out, indent=2)) + return out + + +def oriented_percentile_scores(df: pd.DataFrame, specs: list[tuple[str, int]]) -> pd.Series: + parts = [] + for col, direction in specs: + if col not in df.columns: + continue + x = pd.to_numeric(df[col], errors="coerce") * direction + scored = [] + for _, g in df.assign(_x=x).groupby("dataset"): + ranks = g["_x"].rank(pct=True) + scored.append(ranks) + parts.append(pd.concat(scored).sort_index()) + if not parts: + return pd.Series(np.nan, index=df.index) + score01 = pd.concat(parts, axis=1).mean(axis=1, skipna=True) + return 1.0 + 4.0 * score01 + + +def construct_balanced_domain_score( + df: pd.DataFrame, + constructs: list[list[tuple[str, int]]], + reference_mask: pd.Series, +) -> pd.Series: + construct_scores = [] + for specs in constructs: + feature_scores = [] + for col, direction in specs: + if col not in df.columns: + continue + x = pd.to_numeric(df[col], errors="coerce") * direction + ranked = pd.Series(np.nan, index=df.index, dtype=float) + reference = df.loc[reference_mask] + for _, idx in reference.groupby("dataset").groups.items(): + ranked.loc[idx] = x.loc[idx].rank(pct=True) + feature_scores.append(ranked) + if len(feature_scores) == len(specs): + construct_scores.append(pd.concat(feature_scores, axis=1).mean(axis=1, skipna=False)) + if not construct_scores: + return pd.Series(np.nan, index=df.index) + score01 = pd.concat(construct_scores, axis=1).mean(axis=1, skipna=False) + return 1.0 + 4.0 * score01 + + +def osats_proxy_scores(df: pd.DataFrame) -> pd.DataFrame: + out = df[["dataset", "cohort_label", "trial_name", "trial_number", "trial_key", "skill_category", "total_procedures"]].copy() + identifier_counts = df.groupby("trial_key")["trial_key"].transform("size") + reference_mask = identifier_counts.eq(1) & df["total_time"].notna() + out["Analysed duration (s)"] = pd.to_numeric(df["total_time"], errors="coerce").where(reference_mask) + for domain, constructs in OSATS_DOMAIN_CONSTRUCTS.items(): + out[domain] = construct_balanced_domain_score(df, constructs, reference_mask) + domain_cols = list(OSATS_DOMAINS) + out["Coordination-control composite"] = out[CORE_PERFORMANCE_DOMAINS].mean( + axis=1, + skipna=False, + ) + out.to_csv(OUT / "osats_aligned_proxy_scores.csv", index=False) + + rows = [] + for skill, g in out.groupby("skill_category"): + for col in domain_cols + ["Coordination-control composite"]: + lo, hi = bootstrap_ci(g[col].dropna()) + rows.append( + { + "skill_category": skill, + "domain": col, + "n": int(g[col].notna().sum()), + "mean_score": float(g[col].mean()), + "ci_low": lo, + "ci_high": hi, + } + ) + pd.DataFrame(rows).to_csv(OUT / "osats_proxy_by_skill.csv", index=False) + return out + + +def processing_sensitivity( + df: pd.DataFrame, + phase_frames: pd.DataFrame, + baseline_proxy: pd.DataFrame, + baseline_clusters: pd.DataFrame, + cluster_summary: dict[str, object], +) -> pd.DataFrame: + """Compare the primary score under alternative position and orientation processing.""" + from sklearn.cluster import KMeans + from sklearn.metrics import adjusted_rand_score + + baseline = baseline_proxy[ + ["trial_key", "Coordination-control composite"] + ].dropna( + subset=["Coordination-control composite"] + ).merge( + baseline_clusters[ + ["trial_key", "metric_cluster"] + ].dropna(subset=["metric_cluster"]), + on="trial_key", + how="left", + validate="one_to_one", + ) + baseline = baseline.dropna( + subset=["Coordination-control composite", "metric_cluster"] + ).copy() + baseline["baseline_label"] = baseline["metric_cluster"].map( + {band: i for i, band in enumerate(BAND_ORDER)} + ) + thresholds = np.asarray( + cluster_summary.get("metric_band_thresholds", []), + dtype=float, + ) + if len(baseline) == 0 or len(thresholds) != 2: + return pd.DataFrame() + + rows = [] + for position_window_s, orientation_window_s, label in [ + (0.0, 0.0, "No position smoothing"), + (0.4, 0.0, "Primary processing"), + (0.8, 0.0, "0.8 s position window"), + (0.4, 0.4, "0.4 s orientation sensitivity"), + ]: + if position_window_s == 0.4 and orientation_window_s == 0.0: + alternative = baseline[ + ["trial_key", "Coordination-control composite"] + ].copy() + else: + motion = extract_primary_kinematics( + df, + phase_frames, + position_window_s=position_window_s, + orientation_window_s=orientation_window_s, + output_name=None, + ) + replace_cols = [c for c in motion.columns if c != "trial_key"] + alternative_df = df.drop(columns=replace_cols, errors="ignore").merge( + motion, + on="trial_key", + how="left", + validate="many_to_one", + ) + identifier_counts = alternative_df.groupby("trial_key")[ + "trial_key" + ].transform("size") + reference_mask = identifier_counts.eq(1) & alternative_df[ + "total_time" + ].notna() + alternative = alternative_df[["trial_key"]].copy() + for domain in CORE_PERFORMANCE_DOMAINS: + alternative[domain] = construct_balanced_domain_score( + alternative_df, + OSATS_DOMAIN_CONSTRUCTS[domain], + reference_mask, + ) + alternative["Coordination-control composite"] = alternative[ + CORE_PERFORMANCE_DOMAINS + ].mean(axis=1, skipna=False) + + compared = baseline.merge( + alternative[ + ["trial_key", "Coordination-control composite"] + ].dropna( + subset=["Coordination-control composite"] + ).rename( + columns={ + "Coordination-control composite": "alternative_score" + } + ), + on="trial_key", + how="inner", + validate="one_to_one", + ).dropna(subset=["alternative_score"]) + if compared.empty: + continue + rho = stats.spearmanr( + compared["Coordination-control composite"], + compared["alternative_score"], + ).statistic + fixed_label = np.digitize( + compared["alternative_score"].to_numpy(float), + thresholds, + ) + fixed_ari = adjusted_rand_score( + compared["baseline_label"].to_numpy(int), + fixed_label, + ) + values = compared["alternative_score"].to_numpy(float).reshape(-1, 1) + fitted = KMeans( + n_clusters=3, + n_init=300, + random_state=20260618, + ).fit(values) + centres = np.sort(fitted.cluster_centers_.ravel()) + refit_thresholds = (centres[:-1] + centres[1:]) / 2 + refit_label = np.digitize(values.ravel(), refit_thresholds) + refit_ari = adjusted_rand_score( + compared["baseline_label"].to_numpy(int), + refit_label, + ) + rows.append( + { + "processing": label, + "position_window_s": position_window_s, + "orientation_window_s": orientation_window_s, + "n": int(len(compared)), + "score_spearman_rho": float(rho), + "median_absolute_score_change": float( + np.median( + np.abs( + compared["alternative_score"] + - compared["Coordination-control composite"] + ) + ) + ), + "fixed_cut_assignment_ari": float(fixed_ari), + "refit_assignment_ari": float(refit_ari), + } + ) + out = pd.DataFrame(rows) + out.to_csv(OUT / "processing_sensitivity.csv", index=False) + if not out.empty: + table_rows = [ + f"{row['processing']} & {int(row['n'])} & " + f"{row['score_spearman_rho']:.3f} & " + f"{row['median_absolute_score_change']:.3f} & " + f"{row['fixed_cut_assignment_ari']:.3f} & " + f"{row['refit_assignment_ari']:.3f} \\\\" + for _, row in out.iterrows() + ] + (TAB / "processing_sensitivity.tex").write_text( + "\n".join( + [ + "\\begin{tabular}{lrrrrr}", + "\\toprule", + "Processing alternative & $n$ & Score $\\rho$ & Median $|\\Delta|$ & Fixed-cut ARI & Refit ARI \\\\", + "\\midrule", + *table_rows, + "\\bottomrule", + "\\end{tabular}", + ] + ) + ) + return out + + +def kmeans_skill_clusters(df: pd.DataFrame, proxy: pd.DataFrame) -> tuple[pd.DataFrame, dict[str, object]]: + try: + from sklearn.cluster import KMeans + from sklearn.decomposition import PCA + from sklearn.metrics import adjusted_rand_score, calinski_harabasz_score, davies_bouldin_score, silhouette_score + from sklearn.preprocessing import StandardScaler + except Exception as exc: # pragma: no cover + empty = df[["dataset", "trial_name", "trial_number", "skill_category", "total_procedures"]].copy() + summary = {"available": False, "error": str(exc)} + (OUT / "kmeans_thresholds.json").write_text(json.dumps(summary, indent=2)) + return empty, summary + + cols = [c for c in OSATS_DOMAINS if c in proxy.columns] + core_cols = [c for c in CORE_PERFORMANCE_DOMAINS if c in proxy.columns] + tmp = proxy[ + [ + "dataset", + "cohort_label", + "trial_name", + "trial_number", + "trial_key", + "skill_category", + "total_procedures", + *cols, + "Analysed duration (s)", + "Coordination-control composite", + ] + ].copy() + tmp["log_total_procedures"] = np.log10(tmp["total_procedures"] + 1) + + pca_cols = core_cols + X = tmp[pca_cols].replace([np.inf, -np.inf], np.nan) + cluster_cols = ["Coordination-control composite"] + Xc = tmp[cluster_cols].replace([np.inf, -np.inf], np.nan).to_numpy(float) + identifier_counts = tmp.groupby("trial_key")["trial_key"].transform("size") + fit_mask = ( + identifier_counts.eq(1).to_numpy() + & np.isfinite(Xc).all(axis=1) + & np.isfinite(X.to_numpy(float)).all(axis=1) + ) + Xc_fit = Xc[fit_mask] + tmp["metric_pc1"] = np.nan + tmp["metric_pc2"] = np.nan + Xs = StandardScaler().fit_transform(X.loc[fit_mask].to_numpy(float)) + pca = PCA(n_components=2, random_state=20260618) + pcs = pca.fit_transform(Xs) + tmp.loc[fit_mask, "metric_pc1"] = pcs[:, 0] + tmp.loc[fit_mask, "metric_pc2"] = pcs[:, 1] + validation_rows = [] + if len(Xc_fit) >= 6: + for k in range(2, 7): + km_k = KMeans(n_clusters=k, n_init=200, random_state=20260618) + labels_k = km_k.fit_predict(Xc_fit) + validation_rows.append( + { + "k": k, + "silhouette": float(silhouette_score(Xc_fit, labels_k)), + "davies_bouldin": float(davies_bouldin_score(Xc_fit, labels_k)), + "calinski_harabasz": float(calinski_harabasz_score(Xc_fit, labels_k)), + "inertia": float(km_k.inertia_), + } + ) + + km = KMeans(n_clusters=3, n_init=300, random_state=20260618) + raw_cluster_fit = km.fit_predict(Xc_fit) + metric_silhouette = float(silhouette_score(Xc_fit, raw_cluster_fit)) + metric_davies = float(davies_bouldin_score(Xc_fit, raw_cluster_fit)) + metric_calinski = float(calinski_harabasz_score(Xc_fit, raw_cluster_fit)) + ordered_centres = np.sort(km.cluster_centers_.ravel()) + thresholds = (ordered_centres[:-1] + ordered_centres[1:]) / 2 + reference_ordered = np.full(len(tmp), -1, dtype=int) + reference_ordered[fit_mask] = np.digitize(Xc_fit.ravel(), thresholds) + tmp["metric_cluster"] = pd.Series(np.nan, index=tmp.index, dtype=object) + tmp.loc[fit_mask, "metric_cluster"] = [ + BAND_ORDER[i] for i in reference_ordered[fit_mask] + ] + rng = np.random.default_rng(20260618) + bootstrap_thresholds = [] + bootstrap_ari = [] + for seed in range(1000): + sample = rng.choice( + Xc_fit.ravel(), + size=len(Xc_fit), + replace=True, + ).reshape(-1, 1) + alt = KMeans(n_clusters=3, n_init=30, random_state=seed).fit(sample) + alt_centres = np.sort(alt.cluster_centers_.ravel()) + alt_thresholds = (alt_centres[:-1] + alt_centres[1:]) / 2 + bootstrap_thresholds.append(alt_thresholds) + bootstrap_ari.append( + adjusted_rand_score( + reference_ordered[fit_mask], + np.digitize(Xc_fit.ravel(), alt_thresholds), + ) + ) + bootstrap_thresholds = np.asarray(bootstrap_thresholds) + metric_seed_ari_mean = float(np.mean(bootstrap_ari)) + metric_seed_ari_min = float(np.min(bootstrap_ari)) + threshold_ci = np.percentile(bootstrap_thresholds, [2.5, 50, 97.5], axis=0) + + required_core_features = sorted( + { + col + for domain in CORE_PERFORMANCE_DOMAINS + for construct in OSATS_DOMAIN_CONSTRUCTS[domain] + for col, _ in construct + if col in df.columns + } + ) + complete_keys = set( + df.loc[df[required_core_features].notna().all(axis=1), "trial_key"].astype(str) + ) + complete_mask = ( + tmp["trial_key"].astype(str).isin(complete_keys).to_numpy() + & fit_mask + ) + complete_values = tmp.loc[complete_mask, ["Coordination-control composite"]].to_numpy() + complete_model = KMeans(n_clusters=3, n_init=300, random_state=20260618).fit(complete_values) + complete_centres = np.sort(complete_model.cluster_centers_.ravel()) + complete_thresholds = (complete_centres[:-1] + complete_centres[1:]) / 2 + complete_assignment_ari = float( + adjusted_rand_score( + reference_ordered[fit_mask], + np.digitize(Xc_fit.ravel(), complete_thresholds), + ) + ) + + perturbation_ari = [] + domain_matrix = tmp[core_cols].to_numpy(float) + for seed in range(500): + weights = rng.uniform(0.75, 1.25, size=len(core_cols)) + perturbed_score = np.average(domain_matrix, axis=1, weights=weights) + perturbed_model = KMeans(n_clusters=3, n_init=30, random_state=seed).fit( + perturbed_score[fit_mask].reshape(-1, 1) + ) + perturbed_centres = np.sort(perturbed_model.cluster_centers_.ravel()) + perturbed_thresholds = (perturbed_centres[:-1] + perturbed_centres[1:]) / 2 + perturbation_ari.append( + adjusted_rand_score( + reference_ordered[fit_mask], + np.digitize(perturbed_score[fit_mask], perturbed_thresholds), + ) + ) + + leave_one_domain_out = [] + for omitted in core_cols: + retained = [c for c in core_cols if c != omitted] + score = tmp[retained].mean(axis=1).to_numpy(float) + model = KMeans(n_clusters=3, n_init=300, random_state=20260618).fit( + score[fit_mask].reshape(-1, 1) + ) + centres = np.sort(model.cluster_centers_.ravel()) + cuts = (centres[:-1] + centres[1:]) / 2 + omitted_slug = re.sub(r"[^a-z0-9]+", "_", omitted.lower()).strip("_") + omitted_clusters = pd.Series(np.nan, index=tmp.index, dtype=object) + omitted_clusters.loc[fit_mask] = [ + BAND_ORDER[i] for i in np.digitize(score[fit_mask], cuts) + ] + tmp[f"metric_cluster_without_{omitted_slug}"] = omitted_clusters + leave_one_domain_out.append( + { + "omitted_domain": omitted, + "adjusted_rand_index": float( + adjusted_rand_score( + reference_ordered[fit_mask], + np.digitize(score[fit_mask], cuts), + ) + ), + "thresholds": [float(v) for v in cuts], + } + ) + + leave_one_cohort_out = [] + for held_out in DATASET_ORDER: + train_mask = (tmp["dataset"] != held_out).to_numpy() & fit_mask + train_values = Xc[train_mask] + model = KMeans(n_clusters=3, n_init=300, random_state=20260618).fit(train_values) + centres = np.sort(model.cluster_centers_.ravel()) + cuts = (centres[:-1] + centres[1:]) / 2 + held_mask = (tmp["dataset"] == held_out).to_numpy() & fit_mask + leave_one_cohort_out.append( + { + "held_out_dataset": held_out, + "thresholds": [float(v) for v in cuts], + "held_out_adjusted_rand_index": float( + adjusted_rand_score( + reference_ordered[held_mask], + np.digitize(Xc.ravel()[held_mask], cuts), + ) + ), + } + ) + else: + tmp["metric_cluster"] = np.nan + metric_silhouette = np.nan + metric_davies = np.nan + metric_calinski = np.nan + metric_seed_ari_mean = np.nan + metric_seed_ari_min = np.nan + ordered_centres = np.array([np.nan, np.nan, np.nan]) + thresholds = np.array([np.nan, np.nan]) + threshold_ci = np.full((3, 2), np.nan) + complete_mask = np.zeros(len(tmp), dtype=bool) + complete_thresholds = np.array([np.nan, np.nan]) + complete_assignment_ari = np.nan + bootstrap_ari = [np.nan] + perturbation_ari = [np.nan] + leave_one_domain_out = [] + leave_one_cohort_out = [] + tmp["metric_cluster_order"] = tmp["metric_cluster"].map({name: i for i, name in enumerate(BAND_ORDER)}) + tmp["data_driven_skill_band"] = tmp["metric_cluster"] + tmp.to_csv(OUT / "kmeans_skill_clusters.csv", index=False) + + cluster_rows = [] + for cl in BAND_ORDER: + g = tmp[tmp["metric_cluster"] == cl] + if g.empty: + continue + cluster_rows.append( + { + "metric_cluster": cl, + "cluster_label": BAND_LABELS[cl], + "n": int(len(g)), + "median_total_procedures": float(g["total_procedures"].median()), + "procedure_iqr_low": float(g["total_procedures"].quantile(0.25)), + "procedure_iqr_high": float(g["total_procedures"].quantile(0.75)), + "mean_coordination_control_composite": float( + g["Coordination-control composite"].mean() + ), + } + ) + cluster_summary = pd.DataFrame(cluster_rows) + cluster_summary.to_csv(OUT / "kmeans_cluster_summary.csv", index=False) + validation = pd.DataFrame(validation_rows) + validation.to_csv(OUT / "kmeans_validation.csv", index=False) + + label_codes = tmp["skill_category"].map({"novice": 0, "intermediate": 1, "expert": 2}) + valid_ari = ( + label_codes.notna().to_numpy() + & tmp["metric_cluster_order"].notna().to_numpy() + & fit_mask + ) + summary = { + "available": True, + "features": cluster_cols, + "n_recordings_assigned": int(tmp["metric_cluster"].notna().sum()), + "n_independent_identifiers_fitted": int(fit_mask.sum()), + "metric_band_silhouette": metric_silhouette, + "metric_band_davies_bouldin": metric_davies, + "metric_band_calinski_harabasz": metric_calinski, + "metric_band_seed_ari_mean": metric_seed_ari_mean, + "metric_band_seed_ari_min": metric_seed_ari_min, + "metric_band_bootstrap_assignment_ari_median": float(np.nanmedian(bootstrap_ari)), + "metric_band_bootstrap_assignment_ari_ci": [ + float(v) for v in np.nanpercentile(bootstrap_ari, [2.5, 97.5]) + ], + "metric_band_centres": [float(v) for v in ordered_centres], + "metric_band_thresholds": [float(v) for v in thresholds], + "metric_band_threshold_bootstrap_ci": [ + { + "threshold": i + 1, + "ci_low": float(threshold_ci[0, i]), + "median": float(threshold_ci[1, i]), + "ci_high": float(threshold_ci[2, i]), + } + for i in range(2) + ], + "sensitivity": { + "complete_case": { + "n_trials": int(complete_mask.sum()), + "thresholds": [float(v) for v in complete_thresholds], + "assignment_adjusted_rand_index": float(complete_assignment_ari), + }, + "domain_weight_perturbation": { + "n_repetitions": int(len(perturbation_ari)), + "adjusted_rand_index_median": float(np.nanmedian(perturbation_ari)), + "adjusted_rand_index_ci_low": float(np.nanpercentile(perturbation_ari, 2.5)), + "adjusted_rand_index_ci_high": float(np.nanpercentile(perturbation_ari, 97.5)), + }, + "leave_one_domain_out": leave_one_domain_out, + "leave_one_cohort_out": leave_one_cohort_out, + }, + "k_validation": validation.to_dict(orient="records"), + "pca_variance": [float(v) for v in pca.explained_variance_ratio_], + "adjusted_rand_vs_original_skill": float( + adjusted_rand_score( + label_codes.to_numpy()[valid_ari], + tmp.loc[valid_ari, "metric_cluster_order"], + ) + ), + "cluster_summary": cluster_summary.to_dict(orient="records"), + } + (OUT / "kmeans_thresholds.json").write_text(json.dumps(summary, indent=2)) + return tmp, summary + + +def held_out_band_statistics(clusters: pd.DataFrame) -> pd.DataFrame: + """Evaluate band gradients using outcomes that did not define the bands.""" + if clusters.empty: + out = pd.DataFrame() + out.to_csv(OUT / "held_out_band_statistics.csv", index=False) + return out + + identifier_counts = clusters.groupby("trial_key")["trial_key"].transform("size") + d = clusters.loc[identifier_counts.eq(1)].copy() + outcomes = [ + ("Task efficiency", 1), + ("Analysed duration (s)", -1), + ("Workspace excursion", 1), + ] + rows = [] + rng = np.random.default_rng(20260618) + for outcome, direction in outcomes: + if outcome not in d: + continue + oriented = pd.Series(np.nan, index=d.index, dtype=float) + for _, idx in d.groupby("dataset").groups.items(): + values = pd.to_numeric(d.loc[idx, outcome], errors="coerce") * direction + oriented.loc[idx] = values.rank(pct=True) + groups = [ + oriented.loc[d["metric_cluster"] == band].dropna().to_numpy() + for band in BAND_ORDER + ] + finite_groups = [values for values in groups if len(values)] + h, p = stats.kruskal(*finite_groups) if len(finite_groups) >= 2 else (np.nan, np.nan) + low, middle, high = groups + delta = cliffs_delta(high, low) + upper_lower_p = ( + stats.mannwhitneyu(high, low, alternative="two-sided").pvalue + if len(high) and len(low) + else np.nan + ) + boot = [] + if len(high) and len(low): + for _ in range(3000): + boot.append( + cliffs_delta( + rng.choice(high, size=len(high), replace=True), + rng.choice(low, size=len(low), replace=True), + ) + ) + lo, hi = ( + np.nanpercentile(boot, [2.5, 97.5]) + if boot + else (np.nan, np.nan) + ) + raw_groups = [ + pd.to_numeric( + d.loc[d["metric_cluster"] == band, outcome], + errors="coerce", + ).dropna() + for band in BAND_ORDER + ] + rows.append( + { + "outcome": outcome, + "direction": "higher" if direction > 0 else "lower", + "n_lower": int(len(raw_groups[0])), + "n_middle": int(len(raw_groups[1])), + "n_upper": int(len(raw_groups[2])), + "median_lower": float(raw_groups[0].median()), + "median_middle": float(raw_groups[1].median()), + "median_upper": float(raw_groups[2].median()), + "oriented_cliffs_delta_upper_vs_lower": float(delta), + "delta_ci_low": float(lo), + "delta_ci_high": float(hi), + "kruskal_h": float(h), + "kruskal_p": float(p), + "upper_lower_p": float(upper_lower_p), + } + ) + out = pd.DataFrame(rows) + if not out.empty: + out["kruskal_q"] = benjamini_hochberg(out["kruskal_p"]) + out["upper_lower_q"] = benjamini_hochberg(out["upper_lower_p"]) + out.to_csv(OUT / "held_out_band_statistics.csv", index=False) + + time_rows = [] + for cohort, g in [("All cohorts", d), *[(dataset_label(ds), d[d["dataset"] == ds]) for ds in DATASET_ORDER]]: + g = g.dropna(subset=["Coordination-control composite", "Analysed duration (s)"]) + rho, p = ( + stats.spearmanr( + g["Coordination-control composite"], + g["Analysed duration (s)"], + ) + if len(g) >= 3 + else (np.nan, np.nan) + ) + time_rows.append( + { + "cohort": cohort, + "n": int(len(g)), + "spearman_rho": float(rho), + "p": float(p), + } + ) + time_corr = pd.DataFrame(time_rows) + time_corr["q"] = benjamini_hochberg(time_corr["p"]) + time_corr.to_csv(OUT / "coordination_control_time_correlation.csv", index=False) + return out + + +def load_ssl_embedding_table(df: pd.DataFrame) -> pd.DataFrame: + path = AI_ELT / "outputs" / "ssl" / "origin" / "ORIGIN_ALL" / "ssl_results" / "trial_embeddings.json" + if not path.exists(): + return pd.DataFrame() + data = json.loads(path.read_text()) + rows = [] + meta = df[["trial_key", "dataset", "cohort_label", "trial_number", "skill_category", "total_procedures"]] + identifier_counts = meta.groupby("trial_key")["trial_key"].transform("size") + meta = meta.loc[identifier_counts.eq(1)].copy() + meta_map = meta.set_index("trial_key").to_dict(orient="index") + for key, value in data.items(): + if key not in meta_map: + continue + emb = value.get("mean_embedding") + if not isinstance(emb, list): + continue + row = {"trial_key": key, **meta_map[key]} + for i, v in enumerate(emb): + row[f"emb_{i:02d}"] = v + rows.append(row) + out = pd.DataFrame(rows) + if out.empty: + return out + try: + from sklearn.decomposition import PCA + from sklearn.preprocessing import StandardScaler + + emb_cols = [c for c in out.columns if c.startswith("emb_")] + X = StandardScaler().fit_transform(out[emb_cols].to_numpy(float)) + pca = PCA(n_components=2, random_state=20260618) + pcs = pca.fit_transform(X) + out["ssl_pc1"] = pcs[:, 0] + out["ssl_pc2"] = pcs[:, 1] + out.attrs["pca_variance"] = [float(v) for v in pca.explained_variance_ratio_] + except Exception: + pass + out.to_csv(OUT / "ssl_embedding_pca.csv", index=False) + return out + + +def phase_statistics(trials: pd.DataFrame, cycles: pd.DataFrame, frames: pd.DataFrame) -> dict[str, object]: + # Segment durations in the corrected phase cache. + seg_rows = [] + for (trial_id, ann_dir), g in frames.sort_values(["trial_id", "ann_dir", "frame_idx"]).groupby(["trial_id", "ann_dir"]): + gg = g.reset_index(drop=True) + if len(gg) < 2: + continue + dt = float(np.median(np.diff(gg["time_s"]))) if len(gg) > 2 else 0.0 + start = 0 + labels = gg["coarse_derived"].astype(str).to_numpy() + times = gg["time_s"].to_numpy(float) + for i in range(1, len(gg) + 1): + if i == len(gg) or labels[i] != labels[start]: + duration = max(0.0, (times[i - 1] - times[start]) + dt) + seg_rows.append( + { + "dataset": gg.loc[start, "dataset"], + "trial_id": trial_id, + "skill_category": gg.loc[start, "skill_category"], + "phase": labels[start], + "duration_s": duration, + "n_frames": i - start, + } + ) + start = i + seg = pd.DataFrame(seg_rows) + seg.to_csv(OUT / "phase_segments_current.csv", index=False) + if not seg.empty: + seg_summary = ( + seg.groupby("phase")["duration_s"] + .agg(n_segments="count", mean_duration_s="mean", median_duration_s="median") + .reindex(PHASE_ORDER) + .dropna(how="all") + .reset_index() + ) + seg_summary.to_csv(OUT / "phase_segment_summary.csv", index=False) + + canonical = pd.read_csv(BTPN_CACHE / "canonical_trials.csv") + canonical["trial_key"] = [ + trial_key(dataset, trial_number) + for dataset, trial_number in zip(canonical["dataset"], canonical["trial_number"]) + ] + global_counts = canonical.groupby("trial_key")["trial_key"].transform("size") + unique_keys = set(canonical.loc[global_counts.eq(1), "trial_key"]) + inferential_trials = trials[trials["trial_key"].isin(unique_keys)].copy() + inferential_cycles = cycles[cycles["trial_key"].isin(unique_keys)].copy() + + stats_out: dict[str, object] = {} + cycle_records = [] + trial_cycles = ( + inferential_cycles.groupby(["dataset", "skill_category", "trial_id"], as_index=False) + .agg(mean_cycle_duration_s=("duration_s", "mean"), n_cycles=("cycle_index", "count")) + ) + for (dataset, skill), g in trial_cycles.groupby(["dataset", "skill_category"]): + x = g["mean_cycle_duration_s"].dropna() + lo, hi = bootstrap_ci(x) + cycle_records.append( + { + "dataset": dataset, + "skill_category": skill, + "n_cycles": int(g["n_cycles"].sum()), + "n_trials": int(len(x)), + "mean_duration_s": float(x.mean()), + "ci_low": lo, + "ci_high": hi, + } + ) + cycle_summary = pd.DataFrame(cycle_records) + cycle_summary.to_csv(OUT / "cycle_duration_ci.csv", index=False) + + phase_records = [] + frac_cols = [c for c in inferential_trials.columns if c.startswith("frac_")] + for skill, g in inferential_trials.groupby("skill_category"): + for c in frac_cols: + phase = c.replace("frac_", "") + x = g[c].dropna() + lo, hi = bootstrap_ci(x) + phase_records.append( + { + "skill_category": skill, + "phase": phase, + "n_trials": int(len(x)), + "mean_fraction": float(x.mean()), + "ci_low": lo, + "ci_high": hi, + } + ) + phase_summary = pd.DataFrame(phase_records) + phase_summary.to_csv(OUT / "phase_fraction_ci.csv", index=False) + + stats_out["n_segments"] = int(len(seg)) + stats_out["n_inferential_phase_recordings"] = int(len(inferential_trials)) + stats_out["n_unique_phase_identifiers"] = int(inferential_trials["trial_key"].nunique()) + stats_out["mean_cycle_duration_by_skill"] = ( + trial_cycles.groupby("skill_category")["mean_cycle_duration_s"].mean().to_dict() + ) + return stats_out + + +def phase_specific_kinematics( + frames: pd.DataFrame, + clusters: pd.DataFrame, +) -> pd.DataFrame: + """Exploratory phase-specific kinematics for phase-labelled primary recordings.""" + base = AI_ELT / "outputs" / "ssl" / "origin" / "origin_data" / "ORIGIN_ALL" + if not base.exists(): + out = pd.DataFrame() + out.to_csv(OUT / "phase_kinematics_summary.csv", index=False) + return out + rows = [] + for (dataset, trial_id, trial_short), g in frames.groupby(["dataset", "trial_id", "trial_short"]): + key = phase_trial_key(dataset, trial_short) + path = base / f"{key}.json" + if not path.exists(): + continue + data = json.loads(path.read_text()) + feats = np.asarray(data.get("features", []), dtype=float) + if feats.ndim != 2 or feats.shape[1] < 14 or len(feats) < 3: + continue + phase_g = g.sort_values("frame_idx").reset_index(drop=True) + phase_frame_idx = phase_g["frame_idx"].to_numpy(int) + phase_labels = phase_g["coarse_derived"].astype(str).to_numpy() + if len(phase_frame_idx) < 3: + continue + valid_frames = (phase_frame_idx >= 0) & (phase_frame_idx < len(feats)) + phase_frame_idx = phase_frame_idx[valid_frames] + labels = phase_labels[valid_frames] + if len(phase_frame_idx) < 3: + continue + fps = _phase_frame_rate(str(dataset)) + p1 = _savgol_positions(feats[:, 0:3], fps)[phase_frame_idx] + p2 = _savgol_positions(feats[:, 7:10], fps)[phase_frame_idx] + frame_steps = np.diff(phase_frame_idx) + dt = frame_steps / fps + valid = frame_steps > 0 + d1 = np.linalg.norm(np.diff(p1, axis=0), axis=1) + d2 = np.linalg.norm(np.diff(p2, axis=0), axis=1) + interval_phase = labels[1:] + for phase in PHASE_ORDER: + mask = valid & (interval_phase == phase) + if not mask.any(): + continue + rows.append( + { + "dataset": dataset, + "trial_id": trial_id, + "trial_key": key, + "phase": phase, + "duration_s": float(dt[mask].sum()), + "tool1_path_mm": float(d1[mask].sum()), + "tool2_path_mm": float(d2[mask].sum()), + "tool1_mean_speed_mm_s": float(d1[mask].sum() / dt[mask].sum()), + "tool2_mean_speed_mm_s": float(d2[mask].sum() / dt[mask].sum()), + "combined_path_rate_mm_s": float((d1[mask].sum() + d2[mask].sum()) / dt[mask].sum()), + "n_intervals": int(mask.sum()), + } + ) + phase_df = pd.DataFrame(rows) + if not phase_df.empty: + valid_keys = set(clusters.loc[clusters["metric_cluster"].notna(), "trial_key"]) + phase_df = phase_df[phase_df["trial_key"].isin(valid_keys)].copy() + phase_df.to_csv(OUT / "phase_kinematics_by_trial.csv", index=False) + if phase_df.empty: + out = pd.DataFrame() + else: + out = ( + phase_df.groupby("phase") + .agg( + n_trials=("trial_key", "nunique"), + duration_s=("duration_s", "sum"), + tool1_speed_mm_s=("tool1_mean_speed_mm_s", "mean"), + tool2_speed_mm_s=("tool2_mean_speed_mm_s", "mean"), + combined_path_rate_mm_s=("combined_path_rate_mm_s", "mean"), + ) + .reindex(PHASE_ORDER) + .dropna(how="all") + .reset_index() + ) + out.to_csv(OUT / "phase_kinematics_summary.csv", index=False) + return out + + +def trimming_rule_validation( + frames: pd.DataFrame, + clusters: pd.DataFrame, +) -> pd.DataFrame: + """Compare automatic motion bounds with dense non-idle annotation bounds.""" + valid_keys = set( + clusters.loc[clusters["metric_cluster"].notna(), "trial_key"].astype(str) + ) + rows = [] + for (dataset, key), group in frames.groupby(["dataset", "trial_key"]): + key = str(key) + if key not in valid_keys: + continue + path = ORIGIN_MOTION / f"{key}.json" + if not path.exists(): + continue + payload = json.loads(path.read_text()) + raw = np.asarray(payload.get("features", []), dtype=float) + if raw.ndim != 2 or raw.shape[1] < 14 or len(raw) < 20: + continue + fps = _phase_frame_rate(str(dataset)) + manual_start = int(group["frame_idx"].min()) + manual_end = int(group["frame_idx"].max()) + automatic_start, automatic_end = _active_motion_bounds( + raw[:, 0:3], + raw[:, 7:10], + fps, + ) + manual_start = max(0, min(manual_start, len(raw) - 1)) + manual_end = max(manual_start, min(manual_end, len(raw) - 1)) + overlap = max( + 0, + min(manual_end, automatic_end) + - max(manual_start, automatic_start) + + 1, + ) + union = ( + max(manual_end, automatic_end) + - min(manual_start, automatic_start) + + 1 + ) + manual_duration = (manual_end - manual_start + 1) / fps + automatic_duration = (automatic_end - automatic_start + 1) / fps + rows.append( + { + "dataset": str(dataset), + "trial_key": key, + "manual_start_frame": manual_start, + "manual_end_frame": manual_end, + "automatic_start_frame": automatic_start, + "automatic_end_frame": automatic_end, + "start_error_s": (automatic_start - manual_start) / fps, + "end_error_s": (automatic_end - manual_end) / fps, + "duration_error_s": automatic_duration - manual_duration, + "absolute_duration_error_s": abs( + automatic_duration - manual_duration + ), + "interval_iou": overlap / union if union > 0 else np.nan, + } + ) + detail = pd.DataFrame(rows) + detail.to_csv(OUT / "trimming_rule_validation_by_recording.csv", index=False) + if detail.empty: + return detail + summary_rows = [] + for label, group in [ + ("All cohorts", detail), + *[ + (dataset_label(dataset), detail[detail["dataset"] == dataset]) + for dataset in DATASET_ORDER + ], + ]: + if group.empty: + continue + summary_rows.append( + { + "cohort": label, + "n": int(len(group)), + "median_abs_start_error_s": float( + np.median(np.abs(group["start_error_s"])) + ), + "median_abs_end_error_s": float( + np.median(np.abs(group["end_error_s"])) + ), + "median_abs_duration_error_s": float( + np.median(group["absolute_duration_error_s"]) + ), + "median_interval_iou": float( + np.median(group["interval_iou"]) + ), + } + ) + summary = pd.DataFrame(summary_rows) + summary.to_csv(OUT / "trimming_rule_validation.csv", index=False) + table_rows = [ + f"{row['cohort']} & {int(row['n'])} & " + f"{row['median_abs_start_error_s']:.2f} & " + f"{row['median_abs_end_error_s']:.2f} & " + f"{row['median_abs_duration_error_s']:.2f} & " + f"{row['median_interval_iou']:.3f} \\\\" + for _, row in summary.iterrows() + ] + (TAB / "trimming_rule_validation.tex").write_text( + "\n".join( + [ + "\\begin{tabular}{lrrrrr}", + "\\toprule", + "Cohort & $n$ & Start error (s) & End error (s) & Duration error (s) & Interval overlap \\\\", + "\\midrule", + *table_rows, + "\\bottomrule", + "\\end{tabular}", + ] + ) + ) + return summary + + +def load_origin_motion(df: pd.DataFrame, max_points_per_trial: int = 350) -> pd.DataFrame: + base = AI_ELT / "outputs" / "ssl" / "origin" / "origin_data" / "ORIGIN_ALL" + if not base.exists(): + return pd.DataFrame() + meta = df[["trial_key", "dataset", "cohort_label", "trial_number", "skill_category", "total_procedures"]] + identifier_counts = meta.groupby("trial_key")["trial_key"].transform("size") + meta = ( + meta.loc[identifier_counts.eq(1)] + .set_index("trial_key") + .to_dict(orient="index") + ) + rows = [] + rng = np.random.default_rng(20260618) + for path in sorted(base.glob("*.json")): + if path.name == "metadata.json": + continue + data = json.loads(path.read_text()) + key = data.get("name") + if key not in meta: + continue + feats = np.asarray(data.get("features", []), dtype=float) + times = np.asarray(data.get("times", []), dtype=float) + if feats.ndim != 2 or feats.shape[1] < 14: + continue + n = len(feats) + if n > max_points_per_trial: + idx = np.sort(rng.choice(np.arange(n), size=max_points_per_trial, replace=False)) + else: + idx = np.arange(n) + for i in idx: + row = { + "trial_key": key, + "frame_sample": int(i), + "time_s": float(times[i]) if i < len(times) else np.nan, + "tool1_x": feats[i, 0], + "tool1_y": feats[i, 1], + "tool1_z": feats[i, 2], + "tool1_qw": feats[i, 3], + "tool1_qx": feats[i, 4], + "tool1_qy": feats[i, 5], + "tool1_qz": feats[i, 6], + "tool2_x": feats[i, 7], + "tool2_y": feats[i, 8], + "tool2_z": feats[i, 9], + "tool2_qw": feats[i, 10], + "tool2_qx": feats[i, 11], + "tool2_qy": feats[i, 12], + "tool2_qz": feats[i, 13], + **meta[key], + } + rows.append(row) + out = pd.DataFrame(rows) + if not out.empty: + out.to_csv(OUT / "origin_motion_sample.csv", index=False) + return out + + +def plot_cohort(df: pd.DataFrame, phase_trials: pd.DataFrame) -> None: + fig, axes = plt.subplots(1, 2, figsize=(7.2, 3.0), gridspec_kw={"width_ratios": [1.2, 1]}) + ax = axes[0] + counts = pd.crosstab(df["dataset"], df["skill_category"]).reindex(DATASET_ORDER).fillna(0) + bottom = np.zeros(len(counts)) + x = np.arange(len(counts)) + for skill in SKILL_ORDER: + vals = counts.get(skill, pd.Series(0, index=counts.index)).to_numpy() + ax.bar(x, vals, bottom=bottom, color=SKILL_COLORS[skill], label=nice(skill), width=0.7) + bottom += vals + ax.set_xticks(x, [dataset_label(ds) for ds in counts.index], rotation=20, ha="right") + ax.set_ylabel("Trials") + panel_label(ax, "a") + ax.legend(frameon=False) + + ax = axes[1] + phase_counts = pd.crosstab(phase_trials["dataset"], phase_trials["skill_category"]).reindex(DATASET_ORDER).fillna(0) + bottom = np.zeros(len(phase_counts)) + x = np.arange(len(phase_counts)) + for skill in SKILL_ORDER: + vals = phase_counts.get(skill, pd.Series(0, index=phase_counts.index)).to_numpy() + ax.bar(x, vals, bottom=bottom, color=SKILL_COLORS[skill], width=0.7) + bottom += vals + ax.set_xticks(x, [dataset_label(ds) for ds in phase_counts.index], rotation=20, ha="right") + ax.set_ylabel("Trials") + panel_label(ax, "b") + fig.tight_layout() + save_fig(fig, "fig1_cohort_structure") + + +def plot_task_setup_overview() -> None: + sample_paths = [ + (AI_ELT / "docs" / "paper" / "figures" / "dataset_b.png", "Paediatric"), + (AI_ELT / "docs" / "paper" / "figures" / "dataset_c.png", "Urology 1"), + (AI_ELT / "docs" / "paper" / "figures" / "dataset_a.png", "Urology 2"), + ] + if not all(path.exists() for path, _ in sample_paths): + return + fig, axes = plt.subplots(1, 3, figsize=(7.2, 2.8)) + for ax, (path, label), panel in zip(axes, sample_paths, "abc"): + img = plt.imread(path) + ax.imshow(img) + ax.set_axis_off() + ax.text( + 0.02, + 0.08, + label, + transform=ax.transAxes, + fontsize=8, + weight="bold", + color="white", + bbox=dict(facecolor="black", alpha=0.55, edgecolor="none", pad=2), + ) + panel_label(ax, panel) + fig.tight_layout(w_pad=0.2) + save_fig(fig, "fig0_task_setup_overview") + + +def plot_training_systems_placeholder() -> None: + systems = [ + { + "name": "MISTELS", + "subtitle": "Bench-station laparoscopic skills", + "items": ["Peg transfer", "Pattern cutting", "Ligating loop", "Suturing tasks"], + "note": "Insert representative station or official task photograph", + }, + { + "name": "FLS", + "subtitle": "Fundamentals of Laparoscopic Surgery", + "items": ["Standard timed tasks", "Error penalties", "Proficiency targets", "Certification context"], + "note": "Insert FLS box trainer or task-board image", + }, + { + "name": "E-BLUS", + "subtitle": "European Basic Laparoscopic Urological Skills", + "items": ["Urology-focused dry-lab tasks", "Peg transfer", "Cutting and suturing", "Exam pathway"], + "note": "Insert E-BLUS exam or task-station image", + }, + ] + fig, axes = plt.subplots(1, 3, figsize=(7.4, 2.8)) + for ax, system, panel in zip(axes, systems, "abc"): + ax.set_axis_off() + ax.add_patch(Rectangle((0.04, 0.24), 0.92, 0.58, facecolor="#F7F7F7", edgecolor="#555555", lw=0.9)) + ax.text(0.5, 0.72, system["name"], ha="center", va="center", fontsize=13, weight="bold") + ax.text(0.5, 0.61, system["subtitle"], ha="center", va="center", fontsize=7.5, color="#333333", wrap=True) + y = 0.50 + for item in system["items"]: + ax.text(0.12, y, f"- {item}", ha="left", va="center", fontsize=6.9) + y -= 0.085 + ax.text( + 0.5, + 0.14, + system["note"], + ha="center", + va="center", + fontsize=6.4, + color="#555555", + style="italic", + wrap=True, + ) + panel_label(ax, panel) + fig.tight_layout(w_pad=0.4) + save_fig(fig, "fig0_training_systems_placeholder") + + +def plot_collection_setup_placeholder() -> None: + setups = [ + ("Paediatric", "7 DoF + jaw", "Paediatric dry-lab course", "Insert photograph of BAPES collection station"), + ("Urology 1", "6 DoF", "2023 urology cohort", "Insert photograph of original 6 DoF rig"), + ("Urology 2", "7 DoF + jaw", "2024 urology cohort", "Insert photograph of updated 7 DoF rig"), + ] + fig, axes = plt.subplots(1, 3, figsize=(7.4, 2.8)) + for ax, (cohort, sensing, context, note), panel in zip(axes, setups, "abc"): + ax.set_axis_off() + ax.add_patch(Rectangle((0.05, 0.22), 0.90, 0.60, facecolor="#F4F8FB", edgecolor="#4A4A4A", lw=0.9)) + ax.plot([0.18, 0.45], [0.40, 0.56], color="#0072B2", lw=2.2) + ax.plot([0.82, 0.55], [0.40, 0.56], color="#009E73", lw=2.2) + ax.add_patch(Rectangle((0.36, 0.50), 0.28, 0.10, facecolor="#DDDDDD", edgecolor="#777777", lw=0.6)) + ax.add_patch(Rectangle((0.43, 0.57), 0.14, 0.08, facecolor="#BBBBBB", edgecolor="#777777", lw=0.6)) + ax.text(0.5, 0.76, cohort, ha="center", va="center", fontsize=11, weight="bold") + ax.text(0.5, 0.66, sensing, ha="center", va="center", fontsize=8) + ax.text(0.5, 0.30, context, ha="center", va="center", fontsize=7.2) + ax.text(0.5, 0.13, note, ha="center", va="center", fontsize=6.3, style="italic", color="#555555", wrap=True) + panel_label(ax, panel) + fig.tight_layout(w_pad=0.35) + save_fig(fig, "fig0_collection_setups_placeholder") + + +def plot_peg_transfer_cycle_placeholder() -> None: + stages = [ + ("Reach", "Approach the source peg", "left", (0.24, 0.54), (0.22, 0.45)), + ("Grasp", "Close jaws around object", "left", (0.28, 0.55), (0.28, 0.55)), + ("Lift", "Lift clear of the peg", "left", (0.30, 0.68), (0.30, 0.68)), + ("Transfer", "Meet the opposite tool", "both", (0.50, 0.65), (0.50, 0.65)), + ("Place", "Move to the target peg", "right", (0.72, 0.58), (0.72, 0.58)), + ("Release", "Release and reset", "right", (0.76, 0.52), (0.78, 0.45)), + ] + + def draw_scene(ax: plt.Axes, stage: tuple[str, str, str, tuple[float, float], tuple[float, float]], panel: str) -> None: + name, subtitle, active, tool_tip, object_xy = stage + ax.set_xlim(0, 1) + ax.set_ylim(0, 1) + ax.set_aspect("equal") + ax.set_axis_off() + ax.add_patch(Rectangle((0.10, 0.20), 0.80, 0.50, facecolor="#F8F8F8", edgecolor="#777777", lw=0.8)) + for x in (0.25, 0.75): + ax.plot([x, x], [0.34, 0.56], color="#555555", lw=2.0, solid_capstyle="round") + ax.add_patch(plt.Circle((x, 0.56), 0.025, facecolor="#D0D0D0", edgecolor="#777777", lw=0.6)) + + left_tip = tool_tip if active in {"left", "both"} else (0.18, 0.40) + right_tip = tool_tip if active in {"right", "both"} else (0.82, 0.40) + ax.plot([0.05, left_tip[0]], [0.22, left_tip[1]], color="#0072B2", lw=2.2, solid_capstyle="round") + ax.plot([0.95, right_tip[0]], [0.22, right_tip[1]], color="#009E73", lw=2.2, solid_capstyle="round") + + if active == "both": + ax.add_patch(FancyArrowPatch((0.35, 0.63), (0.65, 0.63), arrowstyle="<->", mutation_scale=10, lw=1.2, color="#555555")) + elif active == "left": + ax.add_patch(FancyArrowPatch((0.18, 0.45), tool_tip, arrowstyle="->", mutation_scale=10, lw=1.2, color="#0072B2")) + elif active == "right": + ax.add_patch(FancyArrowPatch((0.58, 0.60), tool_tip, arrowstyle="->", mutation_scale=10, lw=1.2, color="#009E73")) + + ax.add_patch(plt.Circle(object_xy, 0.040, facecolor="#E69F00", edgecolor="#8A5A00", lw=0.8)) + if name == "Release": + ax.add_patch(FancyArrowPatch((0.70, 0.52), (0.80, 0.52), arrowstyle="->", mutation_scale=9, lw=1.0, color="#CC3311")) + ax.text(0.50, 0.16, "Optional nudge or correction", ha="center", va="center", fontsize=6.4, color="#CC3311") + + ax.text(0.50, 0.91, name, ha="center", va="center", fontsize=10, weight="bold") + ax.text(0.50, 0.82, subtitle, ha="center", va="center", fontsize=6.9, color="#333333", wrap=True) + panel_label(ax, panel) + + fig, axes = plt.subplots(2, 3, figsize=(7.4, 4.8)) + for ax, stage, panel in zip(axes.flat, stages, "abcdef"): + draw_scene(ax, stage, panel) + fig.tight_layout(w_pad=0.25, h_pad=0.35) + save_fig(fig, "fig0_peg_transfer_cycle_placeholder") + + +def plot_feature_effects(stats_df: pd.DataFrame) -> None: + d = stats_df.dropna(subset=["cliffs_delta_novice_expert"]).copy() + d = d[d["n_nonmissing"] >= 20] + orientation = [] + for feature in d["feature"]: + arrow, _ = FEATURE_DIRECTIONS.get(feature, ("$\\uparrow$", "")) + orientation.append(-1 if "\\uparrow" in arrow else 1) + d["_orientation"] = orientation + d["oriented_delta"] = d["cliffs_delta_novice_expert"] * d["_orientation"] + d["oriented_ci_low"] = np.where( + d["_orientation"] > 0, + d["delta_ci_low"], + -d["delta_ci_high"], + ) + d["oriented_ci_high"] = np.where( + d["_orientation"] > 0, + d["delta_ci_high"], + -d["delta_ci_low"], + ) + d = d.loc[d["oriented_delta"].abs().sort_values(ascending=False).index].head(18) + d = d.sort_values("oriented_delta") + y = np.arange(len(d)) + fig, ax = plt.subplots(figsize=(7.2, max(5.2, 0.22 * len(d)))) + ax.axvline(0, color="#444444", lw=0.8) + colors = ["#0072B2" if q < 0.05 else "#8A8A8A" for q in d["kruskal_q"]] + ax.errorbar( + d["oriented_delta"], + y, + xerr=[ + d["oriented_delta"] - d["oriented_ci_low"], + d["oriented_ci_high"] - d["oriented_delta"], + ], + fmt="none", + ecolor="#666666", + elinewidth=0.9, + capsize=2, + ) + ax.scatter(d["oriented_delta"], y, s=24, c=colors, zorder=3) + ax.set_yticks(y, d["label"]) + ax.set_xlabel("Oriented Cliff's delta for expert versus novice") + ax.text( + 0.01, + 1.01, + "Novice-favouring", + transform=ax.transAxes, + ha="left", + va="bottom", + fontsize=7, + ) + ax.text( + 0.99, + 1.01, + "Expert-favouring", + transform=ax.transAxes, + ha="right", + va="bottom", + fontsize=7, + ) + fig.tight_layout() + save_fig(fig, "fig2_feature_effects") + + +def plot_phase_timing(cycles: pd.DataFrame, trials: pd.DataFrame) -> None: + fig, axes = plt.subplots(1, 2, figsize=(7.2, 3.35)) + recording_counts = ( + trials[["trial_key", "trial_id"]] + .drop_duplicates() + .groupby("trial_key")["trial_id"] + .transform("size") + ) + unique_keys = set( + trials[["trial_key", "trial_id"]] + .drop_duplicates() + .loc[recording_counts.eq(1), "trial_key"] + ) + inferential_trials = trials[trials["trial_key"].isin(unique_keys)].copy() + inferential_cycles = cycles[cycles["trial_key"].isin(unique_keys)].copy() + trial_cycles = ( + inferential_cycles.groupby(["dataset", "skill_category", "trial_id"], as_index=False) + .agg(mean_cycle_duration_s=("duration_s", "mean")) + ) + ax = axes[0] + x_base = np.arange(len(DATASET_ORDER)) + offsets = {"novice": -0.22, "intermediate": 0.0, "expert": 0.22} + for skill in SKILL_ORDER: + xs, ys, los, his = [], [], [], [] + for i, ds in enumerate(DATASET_ORDER): + g = trial_cycles[ + (trial_cycles["dataset"] == ds) + & (trial_cycles["skill_category"] == skill) + ]["mean_cycle_duration_s"].dropna() + if len(g) == 0: + continue + lo, hi = bootstrap_ci(g) + xs.append(i + offsets[skill]) + ys.append(g.mean()) + los.append(g.mean() - lo) + his.append(hi - g.mean()) + ax.errorbar(xs, ys, yerr=[los, his], fmt="o", capsize=2, color=SKILL_COLORS[skill], label=nice(skill), ms=4) + ax.set_xticks(x_base, [dataset_label(ds) for ds in DATASET_ORDER], rotation=20, ha="right") + ax.set_ylabel("Cycle duration (s)") + panel_label(ax, "a") + ax.legend(frameon=False) + + ax = axes[1] + phase_cols = ["frac_reach", "frac_grasp", "frac_transfer", "frac_place", "frac_nudge", "frac_idle"] + means = inferential_trials.groupby("skill_category")[phase_cols].mean().reindex(SKILL_ORDER) + bottom = np.zeros(len(means)) + x = np.arange(len(means)) + for c in phase_cols: + phase = c.replace("frac_", "") + vals = means[c].fillna(0).to_numpy() + ax.bar(x, vals, bottom=bottom, color=PHASE_COLORS[phase], label=nice(phase), width=0.7) + bottom += vals + ax.set_xticks(x, [nice(s) for s in SKILL_ORDER], rotation=20, ha="right") + ax.set_ylabel("Mean fraction of corrected trial time") + panel_label(ax, "b") + handles, labels = ax.get_legend_handles_labels() + fig.legend(handles, labels, frameon=False, ncol=len(labels), loc="lower center", bbox_to_anchor=(0.5, 0.02)) + fig.subplots_adjust(left=0.10, right=0.98, top=0.91, bottom=0.25, wspace=0.34) + save_fig(fig, "fig3_phase_timing") + + +def plot_experience_links(df: pd.DataFrame, phase_trials: pd.DataFrame) -> None: + fig, axes = plt.subplots(2, 3, figsize=(9.4, 5.2), sharex=False) + for c, ds in enumerate(DATASET_ORDER): + ax = axes[0, c] + g = df[df["dataset"] == ds] + ax.scatter( + np.log10(g["total_procedures"] + 1), + g["bimanual_correlation"], + s=18, + alpha=0.75, + color=DATASET_COLORS[ds], + ) + ax.set_title(dataset_label(ds), fontsize=8) + ax.set_xlabel("log10(total procedures + 1)") + if c == 0: + ax.set_ylabel("Bimanual correlation") + panel_label(ax, chr(ord("a") + c)) + + ax = axes[1, c] + g = phase_trials[phase_trials["dataset"] == ds] + ax.scatter( + np.log10(g["total_procedures"] + 1), + g["mean_cycle_s"], + s=22, + alpha=0.8, + color=DATASET_COLORS[ds], + ) + ax.set_xlabel("log10(total procedures + 1)") + if c == 0: + ax.set_ylabel("Mean cycle duration (s)") + panel_label(ax, chr(ord("d") + c)) + fig.tight_layout() + save_fig(fig, "fig4_experience_links") + + +def plot_osats_proxy(proxy: pd.DataFrame, clusters: pd.DataFrame, cluster_summary: dict[str, object]) -> None: + band_proxy = proxy.merge( + clusters[["dataset", "trial_name", "metric_cluster"]].drop_duplicates( + ["dataset", "trial_name"] + ), + on=["dataset", "trial_name"], + how="left", + validate="one_to_one", + ) + domain_cols = [ + "Coordination-control composite", + *CORE_PERFORMANCE_DOMAINS, + "Task efficiency", + "Workspace excursion", + ] + display_labels = { + "Bimanual coordination": "Bimanual\ncoordination", + "Task efficiency": "Task\nefficiency", + "Instrument motion control": "Instrument\nmotion control", + "Workspace excursion": "Workspace\ncompactness\n(descriptive)", + "Coordination-control composite": "Coordination and control\nscore", + "Analysed duration (s)": "Analysed\nduration", + } + + fig, axes = plt.subplots(len(DATASET_ORDER), 1, figsize=(7.2, 6.8), sharex=True) + ims = [] + for idx, (ax, ds, label) in enumerate(zip(axes, DATASET_ORDER, "abc")): + cohort = band_proxy[band_proxy["dataset"] == ds] + summary = cohort.groupby("metric_cluster")[domain_cols].mean().reindex(BAND_ORDER) + im = ax.imshow(summary[domain_cols].to_numpy(float), vmin=1, vmax=5, cmap="YlGnBu", aspect="auto") + ims.append(im) + counts = cohort["metric_cluster"].value_counts() + ax.set_title(dataset_label(ds), fontsize=8, loc="left", pad=3) + ax.set_yticks( + np.arange(len(summary)), + [f"{BAND_SHORT_LABELS[b]} (n={int(counts.get(b, 0))})" for b in summary.index], + ) + ax.set_xticks(np.arange(len(domain_cols))) + if idx == len(DATASET_ORDER) - 1: + ax.set_xticklabels([display_labels[c] for c in domain_cols], rotation=24, ha="right") + else: + ax.set_xticklabels([]) + ax.set_ylabel("Measured\nband") + for r in range(summary.shape[0]): + for c in range(summary.shape[1]): + value = summary.iloc[r, c] + text = "Not recorded" if not np.isfinite(value) else f"{value:.2f}" + ax.text(c, r, text, ha="center", va="center", fontsize=6.1) + panel_label(ax, label) + fig.subplots_adjust(left=0.20, right=0.98, top=0.95, bottom=0.24, hspace=0.38) + cax = fig.add_axes([0.30, 0.055, 0.42, 0.025]) + cbar = fig.colorbar(ims[0], cax=cax, orientation="horizontal") + cbar.set_label("Relative domain score (1-5)") + save_fig(fig, "fig5_osats_proxy_heatmap") + + held_out_cols = [ + "Task efficiency", + "Analysed duration (s)", + "Workspace excursion", + ] + identifier_counts = band_proxy.groupby("trial_key")["trial_key"].transform("size") + held_out_proxy = band_proxy[identifier_counts == 1].copy() + fig, axes = plt.subplots( + len(held_out_cols), + len(DATASET_ORDER), + figsize=(9.4, 6.8), + sharey="row", + ) + for r, domain in enumerate(held_out_cols): + for c, ds in enumerate(DATASET_ORDER): + ax = axes[r, c] + cohort = held_out_proxy[held_out_proxy["dataset"] == ds] + data = [cohort.loc[cohort["metric_cluster"] == band, domain].dropna() for band in BAND_ORDER] + if sum(len(values) for values in data) == 0: + ax.set_axis_off() + ax.text(0.5, 0.5, "Jaw aperture not recorded", ha="center", va="center", transform=ax.transAxes, fontsize=7) + continue + bp = ax.boxplot( + data, + patch_artist=True, + tick_labels=[BAND_SHORT_LABELS[band] for band in BAND_ORDER], + showfliers=False, + widths=0.58, + ) + for patch, band in zip(bp["boxes"], BAND_ORDER): + patch.set_facecolor(CLUSTER_COLORS[band]) + patch.set_alpha(0.68) + for i, values in enumerate(data): + if len(values) == 0: + continue + xs = np.full(len(values), i + 1) + np.linspace(-0.08, 0.08, len(values)) + ax.scatter(xs, values, s=6.5, color="#222222", alpha=0.34, linewidths=0) + if domain != "Analysed duration (s)": + ax.set_ylim(1, 5) + if r == 0: + ax.set_title(dataset_label(ds), fontsize=8) + if c == 0: + unit = "score (1-5)" if domain != "Analysed duration (s)" else "seconds" + ax.set_ylabel(f"{display_labels[domain].replace(chr(10), ' ')}\n{unit}") + ax.tick_params(axis="x", rotation=0, labelsize=6.5) + ax.text( + 0.08, + 1.03, + chr(ord("a") + r * len(DATASET_ORDER) + c), + transform=ax.transAxes, + fontsize=10, + fontweight="bold", + ) + fig.tight_layout(h_pad=1.12, w_pad=0.52) + save_fig(fig, "fig5_osats_proxy_boxplots") + + experience_cols = [ + *CORE_PERFORMANCE_DOMAINS, + "Task efficiency", + "Workspace excursion", + "Coordination-control composite", + ] + fig, axes = plt.subplots(len(DATASET_ORDER), 1, figsize=(7.0, 6.8), sharex=True) + ims = [] + for idx, (ax, ds, label) in enumerate(zip(axes, DATASET_ORDER, "abc")): + cohort = proxy[proxy["dataset"] == ds] + summary = cohort.groupby("skill_category")[experience_cols].mean().reindex(SKILL_ORDER) + im = ax.imshow(summary[experience_cols].to_numpy(float), vmin=1, vmax=5, cmap="YlGnBu", aspect="auto") + ims.append(im) + ax.set_title(dataset_label(ds), fontsize=8, loc="left", pad=3) + ax.set_yticks(np.arange(len(summary)), [nice(s) for s in summary.index]) + ax.set_xticks(np.arange(len(experience_cols))) + if idx == len(DATASET_ORDER) - 1: + ax.set_xticklabels([display_labels.get(c, c) for c in experience_cols], rotation=24, ha="right") + else: + ax.set_xticklabels([]) + ax.set_ylabel("Procedure-count\ngroup") + for rr in range(summary.shape[0]): + for cc in range(summary.shape[1]): + value = summary.iloc[rr, cc] + ax.text(cc, rr, "Not recorded" if not np.isfinite(value) else f"{value:.2f}", ha="center", va="center", fontsize=6.1) + panel_label(ax, label) + fig.subplots_adjust(left=0.20, right=0.98, top=0.95, bottom=0.24, hspace=0.38) + cax = fig.add_axes([0.30, 0.055, 0.42, 0.025]) + cbar = fig.colorbar(ims[0], cax=cax, orientation="horizontal") + cbar.set_label("Relative domain score (1-5)") + save_fig(fig, "figS_experience_domain_heatmap") + + fig, axes = plt.subplots(len(experience_cols), len(DATASET_ORDER), figsize=(9.4, 11.2), sharey=True) + for r, domain in enumerate(experience_cols): + for c, ds in enumerate(DATASET_ORDER): + ax = axes[r, c] + cohort = proxy[proxy["dataset"] == ds] + data = [cohort.loc[cohort["skill_category"] == skill, domain].dropna() for skill in SKILL_ORDER] + if sum(len(values) for values in data) == 0: + ax.set_axis_off() + ax.text(0.5, 0.5, "Jaw aperture not recorded", ha="center", va="center", transform=ax.transAxes, fontsize=7) + continue + bp = ax.boxplot(data, patch_artist=True, tick_labels=[nice(s) for s in SKILL_ORDER], showfliers=False, widths=0.58) + for patch, skill in zip(bp["boxes"], SKILL_ORDER): + patch.set_facecolor(SKILL_COLORS[skill]) + patch.set_alpha(0.68) + for i, values in enumerate(data): + if len(values) == 0: + continue + xs = np.full(len(values), i + 1) + np.linspace(-0.08, 0.08, len(values)) + ax.scatter(xs, values, s=6.5, color="#222222", alpha=0.34, linewidths=0) + ax.set_ylim(1, 5) + if r == 0: + ax.set_title(dataset_label(ds), fontsize=8) + if c == 0: + ax.set_ylabel(f"{display_labels.get(domain, domain).replace(chr(10), ' ')}\nscore (1-5)") + ax.tick_params(axis="x", rotation=20, labelsize=6.2) + panel_label(ax, chr(ord("a") + r * len(DATASET_ORDER) + c)) + fig.tight_layout(h_pad=1.08, w_pad=0.50) + save_fig(fig, "figS_experience_domain_boxplots") + + +def plot_kmeans_clusters(clusters: pd.DataFrame, summary: dict[str, object]) -> None: + if clusters.empty or not summary.get("available"): + return + fig, axes = plt.subplots(1, 3, figsize=(7.8, 3.35), gridspec_kw={"width_ratios": [1.25, 1.0, 1.0]}) + ax = axes[0] + for i, cl in enumerate(BAND_ORDER): + g = clusters[clusters["metric_cluster"] == cl].sort_values( + "Coordination-control composite" + ) + if g.empty: + continue + y = np.linspace(i - 0.16, i + 0.16, len(g)) + ax.scatter( + g["Coordination-control composite"], + y, + s=21, + alpha=0.82, + color=CLUSTER_COLORS[cl], + label=BAND_SHORT_LABELS[cl], + ) + for threshold in summary.get("metric_band_thresholds", []): + ax.axvline(threshold, color="#555555", lw=0.9, ls="--") + ax.set_xlim(1, 5) + ax.set_yticks(range(len(BAND_ORDER)), [BAND_SHORT_LABELS[b] for b in BAND_ORDER]) + ax.set_xlabel("Coordination and control score (1-5)") + ax.set_ylabel("Relative band") + panel_label(ax, "a") + + ax = axes[1] + validation = pd.DataFrame(summary.get("k_validation", [])) + if not validation.empty: + ax.plot(validation["k"], validation["silhouette"], color="#555555", marker="o", lw=1.1, ms=4) + selected = validation[validation["k"] == 3] + if not selected.empty: + ax.scatter(selected["k"], selected["silhouette"], s=42, color="#CC3311", zorder=3) + ax.set_xticks(range(2, 7)) + ax.set_xlabel("Number of bands, k") + ax.set_ylabel("Silhouette score") + panel_label(ax, "b") + + ax = axes[2] + for i, cl in enumerate(BAND_ORDER): + g = clusters[clusters["metric_cluster"] == cl] + if g.empty: + continue + values = np.log10(g["total_procedures"] + 1) + xs = np.full(len(g), i) + np.linspace(-0.10, 0.10, len(g)) + ax.scatter(xs, values, s=18, alpha=0.78, color=CLUSTER_COLORS[cl]) + ax.hlines(values.median(), i - 0.24, i + 0.24, colors="#222222", lw=1.2) + ax.set_xticks(range(len(BAND_ORDER)), [BAND_SHORT_LABELS[cl] for cl in BAND_ORDER]) + ax.set_ylabel("log10(total procedures + 1)") + ax.set_xlabel("Relative band") + panel_label(ax, "c") + fig.tight_layout() + save_fig(fig, "fig6_kmeans_procedure_thresholds") + + +def plot_motion_domains(df: pd.DataFrame) -> None: + panels = [ + ("Path length", "tool1_path_length", "tool2_path_length", "mm"), + ("Average speed", "tool1_avg_speed", "tool2_avg_speed", "mm/s"), + ("Speed variability", "tool1_speed_cv", "tool2_speed_cv", "CV"), + ("Acceleration variability", "tool1_accel_cv", "tool2_accel_cv", "CV"), + ("Normalised jerk", "tool1_normalized_jerk", "tool2_normalized_jerk", "a.u."), + ("Rotation per path", "tool1_rotation_per_path", "tool2_rotation_per_path", "degrees/mm"), + ("Angular velocity variability", "tool1_angular_velocity_cv", "tool2_angular_velocity_cv", "CV"), + ("Workspace depth range", "tool1_range_z", "tool2_range_z", "mm"), + ("Working area", "tool1_working_area_xy", "tool2_working_area_xy", "mm$^2$"), + ("Movement count", "tool1_num_movements", "tool2_num_movements", "count"), + ("Idle episodes", "tool1_idle_episode_count", "tool2_idle_episode_count", "count"), + ("Speed peaks", "tool1_num_speed_peaks", "tool2_num_speed_peaks", "count"), + ] + for ds in DATASET_ORDER: + cohort = df[df["dataset"] == ds] + if cohort.empty: + continue + fig, axes = plt.subplots(3, 4, figsize=(9.4, 6.7)) + axes = axes.ravel() + for ax, (title, c1, c2, unit), label in zip(axes, panels, list("abcdefghijkl")): + plot_df = cohort[["skill_category", c1, c2]].copy() + plot_df["metric"] = plot_df[[c1, c2]].mean(axis=1, skipna=True) + data = [plot_df.loc[plot_df["skill_category"] == s, "metric"].dropna() for s in SKILL_ORDER] + bp = ax.boxplot(data, patch_artist=True, tick_labels=[nice(s) for s in SKILL_ORDER], showfliers=False) + for patch, skill in zip(bp["boxes"], SKILL_ORDER): + patch.set_facecolor(SKILL_COLORS[skill]) + patch.set_alpha(0.65) + ax.set_ylabel(unit) + ax.set_title(title, fontsize=8) + ax.tick_params(axis="x", rotation=20) + panel_label(ax, label) + for ax in axes[len(panels) :]: + ax.axis("off") + fig.tight_layout() + save_fig(fig, f"fig7_motion_component_domains_{dataset_slug(ds)}") + + +def plot_jaw_and_rotation(df: pd.DataFrame) -> None: + fig, axes = plt.subplots(1, 3, figsize=(7.4, 2.9)) + jaw_df = df[df["dataset"].isin(["7DOF2024", "BAPES2024"])].copy() + panels = [ + ("Jaw signal range", "tool1_jaw_angle_range", "tool2_jaw_angle_range", "Voltage range"), + ("Detected aperture cycles", "tool1_jaw_open_close_count", "tool2_jaw_open_close_count", "Cycles"), + ("Angular velocity variability", "tool1_angular_velocity_cv", "tool2_angular_velocity_cv", "CV"), + ] + for ax, (title, c1, c2, ylabel), label in zip(axes, panels, ["a", "b", "c"]): + source = jaw_df if "jaw" in c1 else df + order = ["BAPES2024", "7DOF2024"] if "jaw" in c1 else DATASET_ORDER + source = source.copy() + source["metric"] = source[[c1, c2]].mean(axis=1, skipna=True) + for i, ds in enumerate(order): + g = source[source["dataset"] == ds]["metric"].dropna() + if len(g) == 0: + continue + x = np.full(len(g), i) + np.linspace(-0.12, 0.12, len(g)) + ax.scatter(x, g, s=15, alpha=0.75, color=DATASET_COLORS[ds]) + lo, hi = bootstrap_ci(g) + ax.errorbar(i, g.mean(), yerr=[[g.mean() - lo], [hi - g.mean()]], color="#333333", capsize=3, fmt="o", ms=3) + ax.set_xticks(range(len(order)), [dataset_label(ds) for ds in order], rotation=25, ha="right") + ax.set_ylabel(ylabel) + ax.set_title(title, fontsize=8) + panel_label(ax, label) + fig.tight_layout() + save_fig(fig, "fig8_jaw_rotation_components") + + +def plot_workspace_heatmaps(motion: pd.DataFrame) -> None: + if motion.empty: + return + long_rows = [] + for tool in ["tool1", "tool2"]: + sub = motion[["dataset", "cohort_label", "skill_category", f"{tool}_x", f"{tool}_y", f"{tool}_z"]].copy() + sub.columns = ["dataset", "cohort_label", "skill_category", "x", "y", "z"] + sub["tool"] = tool + long_rows.append(sub) + pos = pd.concat(long_rows, ignore_index=True).dropna(subset=["x", "y", "z"]) + planes = [("x", "y", "Camera X (mm)", "Camera Y (mm)"), ("x", "z", "Camera X (mm)", "Depth Z (mm)"), ("y", "z", "Camera Y (mm)", "Depth Z (mm)")] + fig, axes = plt.subplots(len(planes), len(DATASET_ORDER), figsize=(7.4, 6.4), sharex=False, sharey=False) + mesh = None + for r, (a, b, xlabel, ylabel) in enumerate(planes): + for c, ds in enumerate(DATASET_ORDER): + ax = axes[r, c] + g = pos[pos["dataset"] == ds] + density, a_edges, b_edges = np.histogram2d(g[a], g[b], bins=48) + peak = density.max() + relative_density = density / peak if peak > 0 else density + relative_density = np.ma.masked_where(relative_density <= 0, relative_density) + mesh = ax.pcolormesh( + a_edges, + b_edges, + relative_density.T, + cmap="viridis", + vmin=0, + vmax=1, + shading="auto", + ) + if r == 0: + ax.set_title(dataset_label(ds), fontsize=8) + if c == 0: + ax.set_ylabel(ylabel) + panel_label(ax, chr(ord("a") + r)) + ax.set_xlabel(xlabel if r == len(planes) - 1 else "") + ax.tick_params(labelsize=6) + fig.subplots_adjust(left=0.10, right=0.98, top=0.96, bottom=0.16, wspace=0.24, hspace=0.28) + if mesh is not None: + cax = fig.add_axes([0.30, 0.055, 0.40, 0.018]) + colourbar = fig.colorbar(mesh, cax=cax, orientation="horizontal") + colourbar.set_label("Relative sampling density within each panel", fontsize=7) + colourbar.ax.tick_params(labelsize=6) + save_fig(fig, "fig9_workspace_heatmaps_camera_planes") + + +def plot_skill_workspace_xy(motion: pd.DataFrame) -> None: + if motion.empty: + return + rows = [] + for tool in ["tool1", "tool2"]: + sub = motion[["dataset", "skill_category", f"{tool}_x", f"{tool}_y"]].copy() + sub.columns = ["dataset", "skill_category", "x", "y"] + rows.append(sub) + pos = pd.concat(rows, ignore_index=True).dropna() + fig, axes = plt.subplots(len(SKILL_ORDER), len(DATASET_ORDER), figsize=(7.4, 6.4), sharex=False, sharey=False) + mesh = None + for r, skill in enumerate(SKILL_ORDER): + for c, ds in enumerate(DATASET_ORDER): + ax = axes[r, c] + g = pos[(pos["dataset"] == ds) & (pos["skill_category"] == skill)] + if len(g): + density, x_edges, y_edges = np.histogram2d(g["x"], g["y"], bins=42) + peak = density.max() + relative_density = density / peak if peak > 0 else density + relative_density = np.ma.masked_where(relative_density <= 0, relative_density) + mesh = ax.pcolormesh( + x_edges, + y_edges, + relative_density.T, + cmap="magma", + vmin=0, + vmax=1, + shading="auto", + ) + if r == 0: + ax.set_title(dataset_label(ds), fontsize=8) + if c == 0: + ax.set_ylabel(f"{nice(skill)}\nCamera Y (mm)") + if r == len(SKILL_ORDER) - 1: + ax.set_xlabel("Camera X (mm)") + ax.tick_params(labelsize=6) + fig.subplots_adjust(left=0.11, right=0.98, top=0.96, bottom=0.16, wspace=0.24, hspace=0.28) + if mesh is not None: + cax = fig.add_axes([0.30, 0.055, 0.40, 0.018]) + colourbar = fig.colorbar(mesh, cax=cax, orientation="horizontal") + colourbar.set_label("Relative sampling density within each panel", fontsize=7) + colourbar.ax.tick_params(labelsize=6) + save_fig(fig, "fig10_skill_workspace_xy_heatmaps") + + +def plot_phase_by_cluster(trials: pd.DataFrame, clusters: pd.DataFrame) -> None: + if clusters.empty or "metric_cluster" not in clusters: + return + phase_cols = ["frac_reach", "frac_grasp", "frac_transfer", "frac_place", "frac_nudge", "frac_idle"] + phase = trials.copy() + phase["trial_key"] = [phase_trial_key(ds, ts) for ds, ts in zip(phase["dataset"], phase["trial_short"])] + cluster_lookup = clusters[["trial_key", "metric_cluster"]].drop_duplicates("trial_key") + merged = phase.merge(cluster_lookup, on="trial_key", how="left") + fig, axes = plt.subplots(1, 2, figsize=(6.9, 2.65)) + for ax, group_col, labels, label in [ + (axes[0], "skill_category", SKILL_ORDER, "a"), + (axes[1], "metric_cluster", BAND_ORDER, "b"), + ]: + means = merged.groupby(group_col)[phase_cols].mean().reindex(labels) + left = np.zeros(len(means)) + y = np.arange(len(means)) + for col in phase_cols: + phase = col.replace("frac_", "") + vals = means[col].fillna(0).to_numpy() + ax.barh(y, vals, left=left, color=PHASE_COLORS[phase], label=nice(phase), height=0.68) + left += vals + tick_labels = [BAND_SHORT_LABELS.get(s, nice(s)) for s in labels] + ax.set_yticks(y, tick_labels, fontsize=7) + ax.set_xlabel("Mean fraction of trial time", fontsize=8) + ax.set_xlim(0, 1) + ax.invert_yaxis() + panel_label(ax, label) + handles, labels = axes[1].get_legend_handles_labels() + fig.legend(handles, labels, frameon=False, ncol=len(labels), fontsize=6.8, loc="lower center", bbox_to_anchor=(0.5, 0.03)) + fig.subplots_adjust(left=0.16, right=0.98, top=0.90, bottom=0.30, wspace=0.36) + save_fig(fig, "fig11_phase_allocation_original_vs_cluster") + + +def plot_ssl_embeddings(ssl_df: pd.DataFrame) -> None: + if ssl_df.empty or "ssl_pc1" not in ssl_df.columns: + return + fig, axes = plt.subplots(1, 3, figsize=(7.4, 3.25)) + ax = axes[0] + for ds in DATASET_ORDER: + g = ssl_df[ssl_df["dataset"] == ds] + ax.scatter(g["ssl_pc1"], g["ssl_pc2"], s=18, alpha=0.8, color=DATASET_COLORS[ds], label=dataset_label(ds)) + ax.set_xlabel("Embedding PC1") + ax.set_ylabel("Embedding PC2") + ax.legend(frameon=False, fontsize=6) + panel_label(ax, "a") + + ax = axes[1] + for skill in SKILL_ORDER: + g = ssl_df[ssl_df["skill_category"] == skill] + ax.scatter(g["ssl_pc1"], g["ssl_pc2"], s=18, alpha=0.75, color=SKILL_COLORS[skill], label=nice(skill)) + ax.set_xlabel("Embedding PC1") + ax.set_ylabel("Embedding PC2") + panel_label(ax, "b") + + ax = axes[2] + sc = ax.scatter( + ssl_df["ssl_pc1"], + ssl_df["ssl_pc2"], + c=np.log10(ssl_df["total_procedures"] + 1), + cmap="viridis", + s=18, + alpha=0.8, + ) + ax.set_xlabel("Embedding PC1") + ax.set_ylabel("Embedding PC2") + panel_label(ax, "c") + fig.subplots_adjust(left=0.08, right=0.98, top=0.93, bottom=0.34, wspace=0.34) + cax = fig.add_axes([0.32, 0.11, 0.36, 0.045]) + cbar = fig.colorbar(sc, cax=cax, orientation="horizontal") + cbar.set_label("log10(total procedures + 1)") + save_fig(fig, "fig12_unsupervised_motion_embeddings") + + +def plot_tool_specific_motion_boxplots(df: pd.DataFrame) -> None: + panels = [ + ("Path length", "path_length", "mm", False), + ("Average speed", "avg_speed", "mm/s", True), + ("Speed variability", "speed_cv", "CV", False), + ("Normalised jerk", "normalized_jerk", "a.u.", False), + ("Rotation per path", "rotation_per_path", "degrees/mm", False), + ("Depth range", "range_z", "mm", False), + ("Working area", "working_area_xy", "mm$^2$", False), + ("Movement count", "num_movements", "count", False), + ] + offsets = {"novice": -0.22, "intermediate": 0.0, "expert": 0.22} + for ds in DATASET_ORDER: + cohort = df[df["dataset"] == ds] + if cohort.empty: + continue + fig, axes = plt.subplots(3, 3, figsize=(9.1, 7.4), sharex=False) + axes = axes.ravel() + for ax, (title, suffix, ylabel, higher_is_more), label in zip(axes, panels, list("abcdefgh")): + positions = [] + data = [] + colors = [] + for base, tool in enumerate(["tool1", "tool2"]): + col = f"{tool}_{suffix}" + if col not in cohort.columns: + continue + for skill in SKILL_ORDER: + values = cohort.loc[cohort["skill_category"] == skill, col].dropna() + data.append(values) + positions.append(base + offsets[skill]) + colors.append(SKILL_COLORS[skill]) + if not data: + ax.axis("off") + continue + bp = ax.boxplot(data, positions=positions, widths=0.16, patch_artist=True, showfliers=False) + for patch, color in zip(bp["boxes"], colors): + patch.set_facecolor(color) + patch.set_alpha(0.65) + direction = "$\\uparrow$" if higher_is_more else "$\\downarrow$" + ax.set_title(f"{title} ({direction})", fontsize=8) + ax.set_xticks([0, 1], ["Tool 1", "Tool 2"]) + ax.set_ylabel(ylabel) + panel_label(ax, label) + for ax in axes[len(panels) :]: + ax.axis("off") + handles = [plt.Rectangle((0, 0), 1, 1, color=SKILL_COLORS[s], alpha=0.65) for s in SKILL_ORDER] + fig.legend(handles, [nice(s) for s in SKILL_ORDER], frameon=False, ncol=3, loc="lower center", bbox_to_anchor=(0.5, 0.02)) + fig.subplots_adjust(left=0.07, right=0.99, top=0.93, bottom=0.12, wspace=0.34, hspace=0.44) + save_fig(fig, f"fig13_tool_specific_motion_boxplots_{dataset_slug(ds)}") + + +def plot_feature_importance() -> None: + path = OUT / "skill_feature_importance.csv" + if not path.exists(): + return + imp = pd.read_csv(path).head(20).sort_values("importance") + fig, ax = plt.subplots(figsize=(7.2, 5.8)) + y = np.arange(len(imp)) + ax.barh(y, imp["importance"], color="#4C78A8") + ax.set_yticks(y, imp["label"]) + ax.set_xlabel("Random forest feature importance") + ax.set_ylabel("Kinematic feature") + fig.tight_layout() + save_fig(fig, "fig14_skill_feature_importance") + + +def plot_sorted_participant_bars(df: pd.DataFrame, proxy: pd.DataFrame) -> None: + merged = df.copy() + merged["Coordination-control composite"] = ( + proxy["Coordination-control composite"].to_numpy() if len(proxy) == len(df) else np.nan + ) + specs = [ + ("Coordination-control composite", "Coordination and\ncontrol score ($\\uparrow$)", True), + ("bimanual_correlation", "Bimanual\ncorrelation ($\\uparrow$)", True), + ("combined_idle_ratio", "Idle fraction ($\\downarrow$)", False), + ("tool1_normalized_jerk", "Tool 1 normalised\njerk ($\\downarrow$)", False), + ("tool2_normalized_jerk", "Tool 2 normalised\njerk ($\\downarrow$)", False), + ("total_time", "Analysed\nduration ($\\downarrow$)", False), + ] + fig, axes = plt.subplots(len(specs), len(DATASET_ORDER), figsize=(9.4, 9.2), sharex=False) + for r, (col, ylabel, higher_better) in enumerate(specs): + for c, ds in enumerate(DATASET_ORDER): + ax = axes[r, c] + if col not in merged.columns: + ax.axis("off") + continue + d = ( + merged.loc[merged["dataset"] == ds, ["skill_category", "dataset", col]] + .dropna() + .sort_values(col, ascending=not higher_better) + ) + colors = [SKILL_COLORS.get(s, "#999999") for s in d["skill_category"]] + ax.bar(np.arange(len(d)), d[col], color=colors, width=0.85) + if c == 0: + ax.set_ylabel( + ylabel, + rotation=0, + ha="right", + va="center", + labelpad=24, + fontsize=7, + ) + if r == 0: + ax.set_title(dataset_label(ds), fontsize=8) + ax.set_xticks([]) + panel_label(ax, chr(ord("a") + r * len(DATASET_ORDER) + c)) + handles = [plt.Rectangle((0, 0), 1, 1, color=SKILL_COLORS[s]) for s in SKILL_ORDER] + fig.legend(handles, [nice(s) for s in SKILL_ORDER], frameon=False, ncol=3, loc="lower center", bbox_to_anchor=(0.5, 0.02)) + fig.subplots_adjust(left=0.20, right=0.99, top=0.94, bottom=0.08, wspace=0.24, hspace=0.46) + save_fig(fig, "fig15_sorted_trial_metric_bars") + + +def _normalised_cohort_means(df: pd.DataFrame, specs: list[tuple[str, str, int]]) -> pd.DataFrame: + rows = [] + for col, label, direction in specs: + if col not in df.columns: + continue + x = pd.to_numeric(df[col], errors="coerce") * direction + finite = x[np.isfinite(x)] + if finite.empty: + continue + lo, hi = finite.quantile([0.05, 0.95]) + denom = hi - lo if hi != lo else 1.0 + scaled = ((x - lo) / denom).clip(0, 1) + for ds in DATASET_ORDER: + rows.append({"dataset": ds, "metric": label, "value": float(scaled[df["dataset"] == ds].mean())}) + return pd.DataFrame(rows) + + +def plot_cohort_radar(df: pd.DataFrame) -> None: + specs = [ + ("bimanual_correlation", "Bimanual\nsynchrony", 1), + ("simultaneous_motion_ratio", "Simultaneous\nmotion", 1), + ("combined_idle_ratio", "Low idle\ntime", -1), + ("total_time", "Shorter\ntrial", -1), + ("tool1_normalized_jerk", "Tool 1\nnormalised jerk", -1), + ("tool2_normalized_jerk", "Tool 2\nnormalised jerk", -1), + ("tool1_working_volume", "Tool 1 compact\nworkspace", -1), + ("tool2_working_volume", "Tool 2 compact\nworkspace", -1), + ] + norm = _normalised_cohort_means(df, specs) + if norm.empty: + return + metrics = [label for _, label, _ in specs if label in set(norm["metric"])] + theta = np.linspace(0, 2 * np.pi, len(metrics), endpoint=False) + fig = plt.figure(figsize=(7.2, 5.9)) + ax = fig.add_subplot(111, polar=True) + for ds in DATASET_ORDER: + vals = [] + for metric in metrics: + value = norm[(norm["dataset"] == ds) & (norm["metric"] == metric)]["value"] + vals.append(float(value.iloc[0]) if len(value) else np.nan) + vals = np.asarray(vals, dtype=float) + vals = np.nan_to_num(vals, nan=np.nanmean(vals) if np.isfinite(vals).any() else 0.0) + ax.plot(np.r_[theta, theta[0]], np.r_[vals, vals[0]], color=DATASET_COLORS[ds], lw=1.4, label=dataset_label(ds)) + ax.fill(np.r_[theta, theta[0]], np.r_[vals, vals[0]], color=DATASET_COLORS[ds], alpha=0.08) + ax.set_xticks(theta, metrics) + ax.set_ylim(0, 1) + ax.set_yticks([0.25, 0.5, 0.75], ["0.25", "0.50", "0.75"]) + ax.tick_params(axis="x", pad=10, labelsize=14) + ax.tick_params(axis="y", labelsize=12) + ax.legend(frameon=False, loc="upper center", bbox_to_anchor=(0.5, -0.12), ncol=3, fontsize=13) + fig.tight_layout(rect=(0, 0.08, 1, 1)) + save_fig(fig, "fig16_cohort_radar_summary") + + +def plot_dataset_metric_matrix(df: pd.DataFrame, proxy: pd.DataFrame) -> None: + merged = df.copy() + merged["Coordination-control composite"] = ( + proxy["Coordination-control composite"].to_numpy() if len(proxy) == len(df) else np.nan + ) + specs = [ + ("Coordination-control composite", "Coordination and control score", 1), + ("total_time", "Analysed duration", -1), + ("bimanual_correlation", "Bimanual correlation", 1), + ("bimanual_lag_s", "Bimanual lag", -1), + ("bimanual_concurrent_efficiency", "Concurrent efficiency", 1), + ("simultaneous_motion_ratio", "Simultaneous motion", 1), + ("combined_idle_ratio", "Idle fraction", -1), + ("tool_distance_cv", "Tool distance variability", -1), + ("tool_close_proximity_ratio", "Close proximity", -1), + ("tool1_normalized_jerk", "Tool 1 normalised jerk", -1), + ("tool2_normalized_jerk", "Tool 2 normalised jerk", -1), + ("tool1_avg_speed", "Tool 1 speed", 1), + ("tool2_avg_speed", "Tool 2 speed", 1), + ("tool1_path_length", "Tool 1 path length", -1), + ("tool2_path_length", "Tool 2 path length", -1), + ("tool1_rotation_per_path", "Tool 1 rotation economy", -1), + ("tool2_rotation_per_path", "Tool 2 rotation economy", -1), + ("tool1_range_z", "Tool 1 depth range", -1), + ("tool2_range_z", "Tool 2 depth range", -1), + ("tool1_working_volume", "Tool 1 working volume", -1), + ("tool2_working_volume", "Tool 2 working volume", -1), + ("tool1_num_speed_peaks", "Tool 1 speed peaks", -1), + ("tool2_num_speed_peaks", "Tool 2 speed peaks", -1), + ] + rows = [] + for col, label, direction in specs: + if col not in merged.columns: + continue + vals = pd.to_numeric(merged[col], errors="coerce") * direction + sd = vals.std(ddof=0) + z = (vals - vals.mean()) / (sd if sd and np.isfinite(sd) else 1.0) + for ds in DATASET_ORDER: + rows.append({"metric": label, "dataset": ds, "z": float(z[merged["dataset"] == ds].mean())}) + mat_df = pd.DataFrame(rows) + if mat_df.empty: + return + metrics = mat_df["metric"].drop_duplicates().to_list() + mat = np.full((len(DATASET_ORDER), len(metrics)), np.nan) + for r, metric in enumerate(metrics): + for c, ds in enumerate(DATASET_ORDER): + v = mat_df[(mat_df["metric"] == metric) & (mat_df["dataset"] == ds)]["z"] + mat[c, r] = float(v.iloc[0]) if len(v) else np.nan + fig = plt.figure(figsize=(10.8, 3.8)) + ax = fig.add_axes([0.08, 0.30, 0.90, 0.38]) + im = ax.imshow(mat, cmap="RdBu_r", vmin=-1.2, vmax=1.2, aspect="auto") + ax.set_xticks(np.arange(len(metrics)), metrics, rotation=45, ha="left") + ax.xaxis.tick_top() + ax.tick_params(axis="x", top=True, bottom=False, labeltop=True, labelbottom=False, pad=1) + ax.set_yticks(np.arange(len(DATASET_ORDER)), [dataset_label(ds) for ds in DATASET_ORDER]) + for r in range(mat.shape[0]): + for c in range(mat.shape[1]): + if np.isfinite(mat[r, c]): + ax.text(c, r, f"{mat[r, c]:.1f}", ha="center", va="center", fontsize=6) + else: + ax.text(c, r, "NA", ha="center", va="center", fontsize=6, color="#555555") + cax = fig.add_axes([0.24, 0.10, 0.52, 0.055]) + cbar = fig.colorbar(im, cax=cax, orientation="horizontal") + cbar.set_label("Cohort mean, oriented z-score") + save_fig(fig, "fig17_dataset_metric_matrix") + + +def plot_procedure_motion_disagreement(clusters: pd.DataFrame) -> None: + """Show how self-reported experience and measured motion bands diverge.""" + if clusters.empty or "metric_cluster" not in clusters: + return + d = clusters.dropna(subset=["skill_category", "metric_cluster"]).copy() + if d.empty: + return + matrix = ( + pd.crosstab(d["skill_category"], d["metric_cluster"]) + .reindex(index=SKILL_ORDER, columns=BAND_ORDER) + .fillna(0) + .astype(int) + ) + mismatch_specs = [ + ("Novice in\nupper band", (d["skill_category"] == "novice") & (d["metric_cluster"] == "metric_high"), int((d["skill_category"] == "novice").sum())), + ("Expert in\nlower band", (d["skill_category"] == "expert") & (d["metric_cluster"] == "metric_low"), int((d["skill_category"] == "expert").sum())), + ("Novice outside\nlower band", (d["skill_category"] == "novice") & (d["metric_cluster"] != "metric_low"), int((d["skill_category"] == "novice").sum())), + ("Expert outside\nupper band", (d["skill_category"] == "expert") & (d["metric_cluster"] != "metric_high"), int((d["skill_category"] == "expert").sum())), + ] + + fig, axes = plt.subplots(1, 2, figsize=(7.4, 3.4), gridspec_kw={"width_ratios": [1.0, 1.25]}) + ax = axes[0] + im = ax.imshow(matrix.to_numpy(), cmap="YlGnBu", vmin=0) + ax.set_xticks(np.arange(len(BAND_ORDER)), [BAND_SHORT_LABELS[b].replace(" ", "\n") for b in BAND_ORDER]) + ax.set_yticks(np.arange(len(SKILL_ORDER)), [nice(s) for s in SKILL_ORDER]) + ax.set_xlabel("Motion-score band") + ax.set_ylabel("Procedure-count label") + for r in range(matrix.shape[0]): + for c in range(matrix.shape[1]): + value = int(matrix.iloc[r, c]) + ax.text(c, r, str(value), ha="center", va="center", fontsize=9, weight="bold", color="#111111") + cbar = fig.colorbar(im, ax=ax, fraction=0.046, pad=0.03) + cbar.set_label("Trials") + panel_label(ax, "a") + + ax = axes[1] + counts = np.array([int(mask.sum()) for _, mask, _ in mismatch_specs], dtype=float) + denoms = np.array([denom if denom else np.nan for _, _, denom in mismatch_specs], dtype=float) + perc = 100 * counts / denoms + colors = ["#4C78A8", "#E45756", "#72B7B2", "#F58518"] + x = np.arange(len(mismatch_specs)) + ax.bar(x, counts, color=colors, width=0.72) + for i, (count, pct) in enumerate(zip(counts, perc)): + ax.text(i, count + 0.7, f"{int(count)}\n({pct:.0f}%)", ha="center", va="bottom", fontsize=7) + ax.set_xticks(x, [label for label, _, _ in mismatch_specs]) + ax.set_ylabel("Trials") + ax.set_ylim(0, max(counts) * 1.22 if len(counts) else 1) + panel_label(ax, "b") + fig.tight_layout() + save_fig(fig, "fig18_procedure_motion_disagreement") + + +def plot_feedback_targets(clusters: pd.DataFrame) -> None: + """Plot prevalence and magnitude of domain scores below the cohort midpoint.""" + domain_cols = [c for c in OSATS_DOMAINS if c in clusters.columns] + if clusters.empty or not domain_cols: + return + d = clusters.dropna(subset=["metric_cluster", "cohort_label"]).copy() + domain_order = [ + x + for x in [*CORE_PERFORMANCE_DOMAINS, "Workspace excursion"] + if x in domain_cols + ] + short = { + "Bimanual coordination": "Bimanual\ncoordination", + "Task efficiency": "Task\nefficiency", + "Instrument motion control": "Instrument\nmotion control", + "Workspace excursion": "Workspace\nexcursion", + } + midpoint = 3.0 + prevalence = pd.DataFrame(index=domain_order, columns=BAND_ORDER, dtype=float) + deficit = pd.DataFrame(index=domain_order, columns=BAND_ORDER, dtype=float) + for domain in domain_order: + for band in BAND_ORDER: + values = d.loc[d["metric_cluster"] == band, domain].dropna() + prevalence.loc[domain, band] = 100 * (values < midpoint).mean() if len(values) else np.nan + deficit.loc[domain, band] = np.maximum(0, midpoint - values).mean() if len(values) else np.nan + + fig, axes = plt.subplots(1, 2, figsize=(7.7, 3.85), gridspec_kw={"width_ratios": [0.95, 1.35]}) + ax = axes[0] + im = ax.imshow(prevalence.to_numpy(float), vmin=0, vmax=100, cmap="YlOrRd", aspect="auto") + ax.set_xticks(range(len(BAND_ORDER)), [BAND_SHORT_LABELS[b] for b in BAND_ORDER]) + ax.set_yticks(range(len(domain_order)), [short[d].replace("\n", " ") for d in domain_order]) + for r in range(len(domain_order)): + for c in range(len(BAND_ORDER)): + value = prevalence.iloc[r, c] + ax.text(c, r, "NA" if not np.isfinite(value) else f"{value:.0f}%", ha="center", va="center", fontsize=7) + cbar = fig.colorbar(im, ax=ax, orientation="horizontal", pad=0.20, fraction=0.08) + cbar.set_label("Trials below score 3.0") + panel_label(ax, "a") + + ax = axes[1] + x = np.arange(len(domain_order)) + width = 0.24 + for i, band in enumerate(BAND_ORDER): + ax.bar( + x + (i - 1) * width, + deficit[band].to_numpy(float), + width=width, + color=CLUSTER_COLORS[band], + label=BAND_SHORT_LABELS[band], + ) + ax.set_xticks(x, [short[domain] for domain in domain_order]) + ax.set_ylabel("Mean shortfall below score 3.0") + ax.legend(frameon=False, fontsize=6.6, loc="upper right") + panel_label(ax, "b") + fig.subplots_adjust(left=0.12, right=0.98, top=0.91, bottom=0.22, wspace=0.38) + save_fig(fig, "fig19_feedback_targets") + + +def _phase_trials_with_clusters(trials: pd.DataFrame, clusters: pd.DataFrame) -> pd.DataFrame: + phase = trials.copy() + phase["trial_key"] = [phase_trial_key(ds, ts) for ds, ts in zip(phase["dataset"], phase["trial_short"])] + band_col = "metric_cluster" + cluster_lookup = ( + clusters[["dataset", "trial_name", band_col, "cohort_label"]] + .rename(columns={band_col: "metric_cluster"}) + .drop_duplicates(["dataset", "trial_name"]) + ) + phase = phase.merge( + cluster_lookup, + left_on=["dataset", "trial_short"], + right_on=["dataset", "trial_name"], + how="left", + validate="one_to_one", + ) + identifier_count = phase.groupby("trial_key")["trial_key"].transform("size") + return phase.loc[identifier_count.eq(1)].copy() + + +def _phase_cycles_with_clusters(cycles: pd.DataFrame, clusters: pd.DataFrame) -> pd.DataFrame: + cyc = cycles.copy() + cyc["trial_key"] = [ + phase_trial_key(ds, trial_short) + for ds, trial_short in zip(cyc["dataset"], cyc["trial_short"]) + ] + band_col = "metric_cluster" + cluster_lookup = ( + clusters[["dataset", "trial_name", band_col, "cohort_label"]] + .rename(columns={band_col: "metric_cluster"}) + .drop_duplicates(["dataset", "trial_name"]) + ) + cyc = cyc.merge( + cluster_lookup, + left_on=["dataset", "trial_short"], + right_on=["dataset", "trial_name"], + how="left", + validate="many_to_one", + ) + identifier_recordings = ( + cyc[["trial_key", "trial_id"]].drop_duplicates().groupby("trial_key")["trial_id"].transform("size") + ) + unique_keys = set( + cyc[["trial_key", "trial_id"]] + .drop_duplicates() + .loc[identifier_recordings.eq(1), "trial_key"] + ) + return cyc.loc[cyc["trial_key"].isin(unique_keys)].copy() + + +def plot_phase_bottlenecks(trials: pd.DataFrame, cycles: pd.DataFrame, clusters: pd.DataFrame) -> None: + """Compare phase timing across descriptive motion-score bands.""" + if clusters.empty: + return + phase = _phase_trials_with_clusters(trials, clusters).dropna(subset=["metric_cluster"]) + cyc = _phase_cycles_with_clusters(cycles, clusters).dropna(subset=["metric_cluster"]) + if phase.empty or cyc.empty: + return + trial_cycle = ( + cyc.groupby(["metric_cluster", "trial_key"], as_index=False) + .agg( + mean_cycle_duration_s=("duration_s", "mean"), + mean_transitions=("n_transitions", "mean"), + ) + ) + fig, axes = plt.subplots( + 1, + 4, + figsize=(9.4, 3.35), + gridspec_kw={"width_ratios": [0.9, 1.2, 0.9, 0.9]}, + ) + + ax = axes[0] + means = [] + los = [] + his = [] + for band in BAND_ORDER: + vals = trial_cycle.loc[ + trial_cycle["metric_cluster"] == band, + "mean_cycle_duration_s", + ].dropna() + mean = vals.mean() + lo, hi = bootstrap_ci(vals) + means.append(mean) + los.append(mean - lo) + his.append(hi - mean) + x = np.arange(len(BAND_ORDER)) + ax.bar(x, means, color=[CLUSTER_COLORS[b] for b in BAND_ORDER], width=0.72) + ax.errorbar(x, means, yerr=[los, his], color="#222222", fmt="none", capsize=3, lw=0.8) + ax.set_xticks(x, [BAND_SHORT_LABELS[b].replace(" ", "\n") for b in BAND_ORDER]) + ax.set_ylabel("Cycle duration (s)") + panel_label(ax, "a") + + ax = axes[1] + phase_cols = ["frac_reach", "frac_grasp", "frac_transfer", "frac_place", "frac_nudge", "frac_idle", "frac_dropped"] + means_df = phase.groupby("metric_cluster")[phase_cols].mean().reindex(BAND_ORDER).fillna(0) + left = np.zeros(len(BAND_ORDER)) + y = np.arange(len(BAND_ORDER)) + for col in phase_cols: + phase_name = col.replace("frac_", "") + vals = means_df[col].to_numpy() + ax.barh(y, vals, left=left, color=PHASE_COLORS[phase_name], label=nice(phase_name), height=0.68) + left += vals + ax.set_yticks(y, [BAND_SHORT_LABELS[b] for b in BAND_ORDER]) + ax.set_xlabel("Mean fraction of corrected trial time") + ax.set_xlim(0, 1) + ax.invert_yaxis() + panel_label(ax, "b") + + ax = axes[2] + trans_means = ( + trial_cycle.groupby("metric_cluster")["mean_transitions"] + .mean() + .reindex(BAND_ORDER) + ) + trans_los = [] + trans_his = [] + for band in BAND_ORDER: + vals = trial_cycle.loc[ + trial_cycle["metric_cluster"] == band, + "mean_transitions", + ].dropna() + mean = vals.mean() + lo, hi = bootstrap_ci(vals) + trans_los.append(mean - lo) + trans_his.append(hi - mean) + ax.bar(x, trans_means, color=[CLUSTER_COLORS[b] for b in BAND_ORDER], width=0.72) + ax.errorbar(x, trans_means, yerr=[trans_los, trans_his], color="#222222", fmt="none", capsize=3, lw=0.8) + ax.set_xticks(x, [BAND_SHORT_LABELS[b].replace(" ", "\n") for b in BAND_ORDER]) + ax.set_ylabel("Phase transitions per cycle") + panel_label(ax, "c") + + ax = axes[3] + trial_drops = ( + cyc.groupby(["metric_cluster", "trial_key"], as_index=False) + .agg( + n_cycles=("cycle_index", "count"), + n_drop_events=("n_drop_events", "sum"), + ) + ) + trial_drops["drop_events_per_100_cycles"] = ( + 100 * trial_drops["n_drop_events"] / trial_drops["n_cycles"] + ) + drop_means = [] + drop_los = [] + drop_his = [] + for band in BAND_ORDER: + values = trial_drops.loc[ + trial_drops["metric_cluster"] == band, + "drop_events_per_100_cycles", + ].dropna() + mean = values.mean() + lo, hi = bootstrap_ci(values) + drop_means.append(mean) + drop_los.append(mean - lo) + drop_his.append(hi - mean) + ax.bar(x, drop_means, color=[CLUSTER_COLORS[b] for b in BAND_ORDER], width=0.72) + ax.errorbar( + x, + drop_means, + yerr=[drop_los, drop_his], + color="#222222", + fmt="none", + capsize=3, + lw=0.8, + ) + ax.set_xticks(x, [BAND_SHORT_LABELS[b].replace(" ", "\n") for b in BAND_ORDER]) + ax.set_ylabel("Drop episodes per 100 cycles") + panel_label(ax, "d") + + handles, labels = axes[1].get_legend_handles_labels() + fig.legend(handles, labels, frameon=False, ncol=7, fontsize=6.4, loc="lower center", bbox_to_anchor=(0.5, 0.02)) + fig.subplots_adjust(left=0.065, right=0.99, top=0.90, bottom=0.24, wspace=0.43) + save_fig(fig, "fig20_phase_bottlenecks") + + +def plot_cohort_effect_forest(df: pd.DataFrame) -> None: + """Cohort-specific expert-versus-novice effects for clinically important metrics.""" + identifier_counts = df.groupby("trial_key")["trial_key"].transform("size") + df = df.loc[identifier_counts.eq(1)].copy() + specs = [ + ("tool2_avg_speed", "Tool 2 speed", 1), + ("tool1_avg_speed", "Tool 1 speed", 1), + ("bimanual_correlation", "Bimanual correlation", 1), + ("tool2_num_speed_peaks", "Tool 2 stop-start peaks", -1), + ("tool1_num_speed_peaks", "Tool 1 stop-start peaks", -1), + ("total_time", "Analysed duration", -1), + ("tool2_range_z", "Tool 2 depth range", -1), + ] + rows = [] + rng = np.random.default_rng(20260618) + for col, label, direction in specs: + if col not in df.columns: + continue + for ds in DATASET_ORDER: + g = df[df["dataset"] == ds] + nov = (pd.to_numeric(g.loc[g["skill_category"] == "novice", col], errors="coerce") * direction).dropna().to_numpy() + exp = (pd.to_numeric(g.loc[g["skill_category"] == "expert", col], errors="coerce") * direction).dropna().to_numpy() + if len(nov) == 0 or len(exp) == 0: + continue + delta = cliffs_delta(exp, nov) + boot = [] + if len(nov) > 1 and len(exp) > 1: + for _ in range(1000): + boot.append(cliffs_delta(rng.choice(exp, len(exp), replace=True), rng.choice(nov, len(nov), replace=True))) + lo, hi = np.percentile(boot, [2.5, 97.5]) + else: + lo, hi = np.nan, np.nan + rows.append({"feature": label, "dataset": ds, "delta": delta, "lo": lo, "hi": hi}) + res = pd.DataFrame(rows) + if res.empty: + return + res.to_csv(OUT / "cohort_specific_effects.csv", index=False) + + features = [label for _, label, _ in specs if label in set(res["feature"])] + y_base = np.arange(len(features)) + offsets = {"BAPES2024": -0.22, "6DOF2023": 0.0, "7DOF2024": 0.22} + fig, ax = plt.subplots(figsize=(7.4, 4.8)) + for ds in DATASET_ORDER: + sub = res[res["dataset"] == ds] + ys = np.array([features.index(f) for f in sub["feature"]], dtype=float) + offsets[ds] + xerr = np.vstack([(sub["delta"] - sub["lo"]).clip(lower=0), (sub["hi"] - sub["delta"]).clip(lower=0)]) + ax.errorbar( + sub["delta"], + ys, + xerr=xerr, + fmt="o", + ms=4, + lw=0.8, + capsize=2.5, + color=DATASET_COLORS[ds], + label=dataset_label(ds), + alpha=0.92, + ) + ax.axvline(0, color="#333333", lw=0.8) + ax.set_yticks(y_base, features) + ax.invert_yaxis() + ax.set_xlabel("Oriented Cliff's delta for expert minus novice") + ax.set_xlim(-1.05, 1.05) + ax.text(0.01, 1.015, "Novice trials more favourable", transform=ax.transAxes, ha="left", va="bottom", fontsize=7) + ax.text(0.99, 1.015, "Expert trials more favourable", transform=ax.transAxes, ha="right", va="bottom", fontsize=7) + ax.legend(frameon=False, ncol=3, loc="lower center", bbox_to_anchor=(0.5, -0.22)) + fig.tight_layout(rect=(0, 0.07, 1, 1)) + save_fig(fig, "fig21_cohort_effect_forest") + + +def plot_time_synchrony_quadrants(df: pd.DataFrame, clusters: pd.DataFrame) -> None: + """Contrast completion time with coordination to show why time alone is incomplete.""" + if "total_time" not in df.columns or "bimanual_correlation" not in df.columns: + return + identifier_counts = df.groupby("trial_key")["trial_key"].transform("size") + d = df.loc[identifier_counts.eq(1)].copy() + correlation_rows = [] + fig, axes = plt.subplots(1, 3, figsize=(8.7, 3.1), sharex=False, sharey=True) + for ax, ds, label in zip(axes, DATASET_ORDER, "abc"): + g = d[d["dataset"] == ds].dropna(subset=["total_time", "bimanual_correlation"]) + if g.empty: + ax.axis("off") + continue + for skill in SKILL_ORDER: + sub = g[g["skill_category"] == skill] + ax.scatter( + sub["total_time"], + sub["bimanual_correlation"], + s=22, + alpha=0.82, + color=SKILL_COLORS[skill], + label=nice(skill), + ) + xmed = g["total_time"].median() + ymed = g["bimanual_correlation"].median() + ax.axvline(xmed, color="#555555", lw=0.8, ls=":") + ax.axhline(ymed, color="#555555", lw=0.8, ls=":") + rho, p = stats.spearmanr( + g["total_time"], + g["bimanual_correlation"], + nan_policy="omit", + ) + ci_low, ci_high = bootstrap_spearman_ci( + g["total_time"], + g["bimanual_correlation"], + ) + correlation_rows.append( + { + "dataset": ds, + "n": int(len(g)), + "spearman_rho": float(rho), + "ci_low": float(ci_low), + "ci_high": float(ci_high), + "p": float(p), + } + ) + ax.text( + 0.04, + 0.96, + f"$n={len(g)}$\n$\\rho={rho:.2f}$ [{ci_low:.2f}, {ci_high:.2f}]", + transform=ax.transAxes, + ha="left", + va="top", + fontsize=6.8, + bbox=dict(facecolor="white", edgecolor="none", alpha=0.78, pad=1.4), + ) + ax.text( + 0.04, + 0.06, + "Shorter", + transform=ax.transAxes, + ha="left", + va="bottom", + fontsize=6.2, + color="#555555", + ) + ax.text( + 0.96, + 0.06, + "Longer", + transform=ax.transAxes, + ha="right", + va="bottom", + fontsize=6.2, + color="#555555", + ) + ax.set_title(dataset_label(ds), fontsize=8) + ax.set_xlabel("Analysed duration (s)") + if ax is axes[0]: + ax.set_ylabel("Bimanual correlation") + panel_label(ax, label) + handles, labels = axes[-1].get_legend_handles_labels() + fig.legend(handles, labels, frameon=False, ncol=3, loc="lower center", bbox_to_anchor=(0.5, 0.02)) + fig.subplots_adjust(left=0.07, right=0.98, top=0.88, bottom=0.25, wspace=0.24) + save_fig(fig, "fig22_time_synchrony_quadrants") + pd.DataFrame(correlation_rows).to_csv( + OUT / "coordination_control_time_correlation.csv", + index=False, + ) + + +def plot_continuous_performance_validation( + proxy: pd.DataFrame, + clusters: pd.DataFrame, +) -> None: + """Show construction-excluded relationships without depending on cut points.""" + d = proxy.merge( + clusters[["dataset", "trial_name", "metric_cluster"]].drop_duplicates( + ["dataset", "trial_name"] + ), + on=["dataset", "trial_name"], + how="left", + validate="one_to_one", + ) + identifier_counts = d.groupby("trial_key")["trial_key"].transform("size") + d = d.loc[identifier_counts.eq(1)].copy() + outcomes = [ + ("Task efficiency", "Task efficiency score (1-5)"), + ("Analysed duration (s)", "Analysed duration (s)"), + ] + rows = [] + fig, axes = plt.subplots(2, 3, figsize=(8.9, 5.8), sharex="col") + for r, (outcome, ylabel) in enumerate(outcomes): + for c, (ax, ds, label) in enumerate(zip(axes[r], DATASET_ORDER, "abcdef"[r * 3 : r * 3 + 3])): + g = d[d["dataset"] == ds].dropna( + subset=["Coordination-control composite", outcome, "metric_cluster"] + ) + for band in BAND_ORDER: + sub = g[g["metric_cluster"] == band] + ax.scatter( + sub["Coordination-control composite"], + sub[outcome], + s=24, + alpha=0.78, + color=CLUSTER_COLORS[band], + edgecolor="white", + linewidth=0.25, + label=BAND_SHORT_LABELS[band], + ) + if len(g) >= 3: + x = g["Coordination-control composite"].to_numpy(float) + y = g[outcome].to_numpy(float) + slope, intercept = np.polyfit(x, y, 1) + xline = np.linspace(x.min(), x.max(), 100) + ax.plot(xline, intercept + slope * xline, color="#333333", lw=1.0) + rho, p_value = stats.spearmanr(x, y) + ci_low, ci_high = bootstrap_spearman_ci(x, y) + rows.append( + { + "dataset": ds, + "outcome": outcome, + "n": len(g), + "spearman_rho": rho, + "ci_low": ci_low, + "ci_high": ci_high, + "p": p_value, + } + ) + ax.text( + 0.04, + 0.96, + f"$n={len(g)}$\n$\\rho={rho:.2f}$ [{ci_low:.2f}, {ci_high:.2f}]", + transform=ax.transAxes, + ha="left", + va="top", + fontsize=6.8, + bbox=dict(facecolor="white", edgecolor="none", alpha=0.95, pad=1.4), + ) + if r == 0: + ax.set_title(dataset_label(ds), fontsize=8) + if r == len(outcomes) - 1: + ax.set_xlabel("Coordination and control score (1-5)") + if c == 0: + ax.set_ylabel(ylabel) + if outcome == "Task efficiency": + ax.set_ylim(1, 5) + panel_label(ax, label) + + result = pd.DataFrame(rows) + if not result.empty: + result["q"] = benjamini_hochberg(result["p"]) + result.to_csv(OUT / "continuous_performance_validation.csv", index=False) + result["dataset"] = pd.Categorical( + result["dataset"], categories=DATASET_ORDER, ordered=True + ) + result = result.sort_values(["dataset", "outcome"]) + table_rows = [] + for row in result.itertuples(index=False): + q_text = "$<0.001$" if row.q < 0.001 else f"{row.q:.3f}" + table_rows.append( + f"{dataset_label(row.dataset)} & {row.outcome.replace(' (s)', '')} & " + f"{int(row.n)} & {row.spearman_rho:.2f} " + f"[{row.ci_low:.2f}, {row.ci_high:.2f}] & {q_text} \\\\" + ) + (TAB / "continuous_performance_validation.tex").write_text( + "\n".join( + [ + "\\begin{tabular}{llrrr}", + "\\toprule", + "Cohort & Contextual outcome & $n$ & Spearman $\\rho$ [95\\% CI] & FDR $q$ \\\\", + "\\midrule", + *table_rows, + "\\bottomrule", + "\\end{tabular}", + ] + ) + ) + handles, labels = axes[0, -1].get_legend_handles_labels() + fig.legend( + handles, + labels, + frameon=False, + ncol=3, + loc="lower center", + bbox_to_anchor=(0.5, 0.015), + ) + fig.subplots_adjust(left=0.08, right=0.985, top=0.91, bottom=0.16, hspace=0.28, wspace=0.22) + save_fig(fig, "fig23_continuous_performance_validation") + + +def write_tables( + df: pd.DataFrame, + phase_trials: pd.DataFrame, + phase_cycles: pd.DataFrame, + feature_stats: pd.DataFrame, + adjusted_models: pd.DataFrame, + phase_kinematics: pd.DataFrame, + classification: dict[str, object], + proxy: pd.DataFrame, + clusters: pd.DataFrame, + cluster_summary: dict[str, object], + metric_band_classification: dict[str, object], +) -> None: + dataset_rows = [] + for ds in DATASET_ORDER: + g = df[df["dataset"] == ds] + skills = g["skill_category"].value_counts() + hands = g["handedness"].value_counts() + context = "BAPES training event" if ds == "BAPES2024" else "Urology" + dataset_rows.append( + f"{dataset_label(ds)} & {context} & {g['dof'].iloc[0]} & {len(g)} & " + f"{g['trial_key'].nunique()} & " + f"{int(skills.get('novice', 0))}/{int(skills.get('intermediate', 0))}/{int(skills.get('expert', 0))} & " + f"{int(hands.get('right', 0))}/{int(hands.get('left', 0))}/{int(hands.get('mixed', 0))} \\\\" + ) + (TAB / "dataset_characteristics.tex").write_text( + "\n".join( + [ + "\\begin{tabular}{lllrrrr}", + "\\toprule", + "Cohort & Collection context & Sensing & Recordings & Study IDs & Experience N/I/E & Hand R/L/M \\\\", + "\\midrule", + *dataset_rows, + "\\bottomrule", + "\\end{tabular}", + ] + ) + ) + + identifier_counts = df.groupby("trial_key")["trial_key"].transform("size") + independent_keys = set(df.loc[identifier_counts.eq(1), "trial_key"]) + phase_inferential = phase_trials[phase_trials["trial_key"].isin(independent_keys)] + analysis_unit_rows = [ + f"Dataset inventory & {len(df)} & {df['trial_key'].nunique()} & All available recordings \\\\", + f"Primary inferential set & {int(identifier_counts.eq(1).sum())} & " + f"{df.loc[identifier_counts.eq(1), 'trial_key'].nunique()} & " + "Identifiers represented by one recording \\\\", + f"Annotated phase inventory & {len(phase_trials)} & {phase_trials['trial_key'].nunique()} & " + "All densely annotated recordings \\\\", + f"Phase inferential set & {len(phase_inferential)} & " + f"{phase_inferential['trial_key'].nunique()} & " + "Identifiers represented once in full inventory \\\\", + ] + (TAB / "analysis_units.tex").write_text( + "\n".join( + [ + "\\begin{tabular}{lrrL{5.0cm}}", + "\\toprule", + "Analysis set & Recordings & Study IDs & Use \\\\", + "\\midrule", + *analysis_unit_rows, + "\\bottomrule", + "\\end{tabular}", + ] + ) + ) + + phase_rows = [] + for ds in DATASET_ORDER: + g = phase_trials[phase_trials["dataset"] == ds] + skills = g["skill_category"].value_counts() + phase_rows.append( + f"{dataset_label(ds)} & {len(g)} & {g['trial_key'].nunique()} & " + f"{int(skills.get('novice', 0))}/{int(skills.get('intermediate', 0))}/{int(skills.get('expert', 0))} & " + f"{int(g['n_frames'].sum()):,} & {int(g['n_cycles'].sum())} & {g['mean_cycle_s'].mean():.1f} \\\\" + ) + (TAB / "phase_subset.tex").write_text( + "\n".join( + [ + "\\begin{tabular}{lrrrrrr}", + "\\toprule", + "Dataset & Recordings & IDs & Procedure N/I/E & Frames & Cycles & Mean cycle (s) \\\\", + "\\midrule", + *phase_rows, + "\\bottomrule", + "\\end{tabular}", + ] + ) + ) + + annotated_names = set( + zip( + phase_trials["dataset"].astype(str), + phase_trials["trial_short"].astype(str), + ) + ) + selection = df[["dataset", "trial_name", "trial_key", "total_time"]].copy() + selection["phase_annotated"] = [ + (str(dataset), str(name)) in annotated_names + for dataset, name in zip(selection["dataset"], selection["trial_name"]) + ] + selection = selection.merge( + clusters[ + ["dataset", "trial_name", "Coordination-control composite"] + ].drop_duplicates(["dataset", "trial_name"]), + on=["dataset", "trial_name"], + how="left", + validate="one_to_one", + ) + selection_counts = selection.groupby("trial_key")["trial_key"].transform("size") + selection = selection.loc[selection_counts.eq(1)].copy() + selection_rows = [] + for ds in DATASET_ORDER: + cohort = selection[selection["dataset"] == ds] + annotated = cohort[cohort["phase_annotated"]] + other = cohort[~cohort["phase_annotated"]] + selection_rows.append( + f"{dataset_label(ds)} & {len(annotated)}/{len(cohort)} & " + f"{annotated['total_time'].median():.1f}/{other['total_time'].median():.1f} & " + f"{annotated['Coordination-control composite'].median():.2f}/" + f"{other['Coordination-control composite'].median():.2f} \\\\" + ) + (TAB / "phase_subset_selection.tex").write_text( + "\n".join( + [ + "\\begin{tabular}{lrrr}", + "\\toprule", + "Cohort & Annotated/available & Median time annotated/not (s) & " + "Median coordination and control score annotated/not \\\\", + "\\midrule", + *selection_rows, + "\\bottomrule", + "\\end{tabular}", + ] + ) + ) + + rows = [] + feature_rows = feature_stats[feature_stats["n_nonmissing"] >= 20].copy() + feature_rows = feature_rows.loc[ + feature_rows["cliffs_delta_novice_expert"] + .abs() + .sort_values(ascending=False) + .index + ].head(12) + for _, r in feature_rows.iterrows(): + arrow, interpretation = FEATURE_DIRECTIONS.get(r["feature"], ("", "")) + higher_is_better = "\\uparrow" in arrow + effect_orientation = -1 if higher_is_better else 1 + rho_orientation = 1 if higher_is_better else -1 + oriented_delta = effect_orientation * r["cliffs_delta_novice_expert"] + if effect_orientation > 0: + oriented_lo, oriented_hi = r["delta_ci_low"], r["delta_ci_high"] + else: + oriented_lo, oriented_hi = -r["delta_ci_high"], -r["delta_ci_low"] + kruskal_q = "$<0.001$" if r["kruskal_q"] < 0.001 else f"{r['kruskal_q']:.3f}" + spearman_q = "$<0.001$" if r["spearman_q"] < 0.001 else f"{r['spearman_q']:.3f}" + if rho_orientation > 0: + rho_lo, rho_hi = r["spearman_ci_low"], r["spearman_ci_high"] + else: + rho_lo, rho_hi = -r["spearman_ci_high"], -r["spearman_ci_low"] + rows.append( + f"{r['label']} ({arrow}) & {interpretation} & " + f"{oriented_delta:.2f} [{oriented_lo:.2f}, {oriented_hi:.2f}] & " + f"{kruskal_q} & {rho_orientation * r['spearman_rho_procedures']:.2f} " + f"[{rho_lo:.2f}, {rho_hi:.2f}; {spearman_q}] \\\\" + ) + (TAB / "feature_effects.tex").write_text( + "\n".join( + [ + "\\begin{tabular}{L{0.17\\linewidth}L{0.27\\linewidth}L{0.18\\linewidth}L{0.11\\linewidth}L{0.16\\linewidth}}", + "\\toprule", + "Feature & Prespecified interpretation & Oriented Cliff $\\delta$ [95\\% CI] & " + "Three-group $q$ & Oriented meta-$\\rho$ [95\\% CI; $q$] \\\\", + "\\midrule", + *rows, + "\\bottomrule", + "\\end{tabular}", + ] + ) + ) + + if not adjusted_models.empty: + rows = [] + for _, r in adjusted_models.iterrows(): + q_text = ( + "$<0.001$" + if r["procedure_q"] < 0.001 + else f"{r['procedure_q']:.3f}" + ) + rows.append( + f"{r['label']} & {r['beta_log10_procedures']:.2f} & " + f"[{r['ci_low']:.2f}, {r['ci_high']:.2f}] & " + f"{q_text} & " + f"{r['r2_procedure_only']:.2f} & {r['r2_cohort_only']:.2f} & " + f"{r['r2_full']:.2f} & {int(r['n'])} \\\\" + ) + (TAB / "cohort_adjusted_models.tex").write_text( + "\n".join( + [ + "\\begin{tabular}{lrrrrrrr}", + "\\toprule", + "Outcome & $\\beta_{\\log_{10}\\mathrm{proc}}$ & 95\\% CI & FDR $q$ & $R^2$ proc. & $R^2$ cohort & Full $R^2$ & $n$ \\\\", + "\\midrule", + *rows, + "\\bottomrule", + "\\end{tabular}", + ] + ) + ) + + if classification.get("available"): + cv = classification["stratified_group_5fold"] + lodo = classification["leave_one_dataset_out"] + model_labels = { + "time_only_logistic_regression": "Duration-only logistic regression", + "time_only_random_forest": "Duration-only random forest", + "all_features_logistic_regression": "All-feature logistic regression", + "all_features_random_forest": "All-feature random forest", + } + lines = [ + "\\begin{tabular}{L{0.35\\linewidth}L{0.22\\linewidth}L{0.31\\linewidth}}", + "\\toprule", + "Model & 5-fold balanced accuracy, mean (SD) & Leave-one-cohort-out balanced accuracy, mean [range] \\\\", + "\\midrule", + ] + for model, vals in cv.items(): + lodo_scores = [r["balanced_accuracy"] for r in lodo[model]] + mean_lodo = np.mean(lodo_scores) + lines.append( + f"{model_labels.get(model, model.replace('_', ' ').title())} & " + f"{vals['mean_balanced_accuracy']:.2f} ({vals['sd']:.2f}) & " + f"{mean_lodo:.2f} [{np.min(lodo_scores):.2f}, {np.max(lodo_scores):.2f}] \\\\" + ) + lines += ["\\bottomrule", "\\end{tabular}"] + (TAB / "classification.tex").write_text("\n".join(lines)) + + if metric_band_classification.get("available"): + comparison_rows = metric_band_classification.get("comparison_rows", []) + target_order = { + "motion_defined": 0, + "procedure_fixed": 1, + "procedure_tertiles": 2, + "procedure_kmeans": 3, + } + model_order = {"logistic_regression": 0, "random_forest": 1} + comparison_rows = sorted( + comparison_rows, + key=lambda r: (target_order.get(r.get("target"), 99), model_order.get(r.get("model"), 99)), + ) + lines = [ + "\\begin{tabular}{L{0.18\\linewidth}L{0.18\\linewidth}L{0.27\\linewidth}L{0.28\\linewidth}}", + "\\toprule", + "Target rule & Model & Group cross-validation, mean (SD) & Cross-cohort rule recovery, mean [range] \\\\", + "\\midrule", + ] + for r in comparison_rows: + lines.append( + f"{r['target_label']} & {r['model_label']} & " + f"{r['stratified_cv_balanced_accuracy']:.2f} " + f"({r['stratified_cv_sd']:.2f}) & " + f"{r['leave_one_dataset_out_balanced_accuracy']:.2f} " + f"[{r['leave_one_dataset_out_min']:.2f}, " + f"{r['leave_one_dataset_out_max']:.2f}] \\\\" + ) + lines += ["\\bottomrule", "\\end{tabular}"] + (TAB / "metric_band_classification.tex").write_text("\n".join(lines)) + + if not clusters.empty and "metric_cluster" in clusters: + d = clusters.dropna(subset=["skill_category", "metric_cluster"]).copy() + denom_novice = int((d["skill_category"] == "novice").sum()) + denom_expert = int((d["skill_category"] == "expert").sum()) + disagreement_specs = [ + ("Novice procedure group in upper band", (d["skill_category"] == "novice") & (d["metric_cluster"] == "metric_high"), denom_novice), + ("Expert procedure group in lower band", (d["skill_category"] == "expert") & (d["metric_cluster"] == "metric_low"), denom_expert), + ("Novice procedure group outside lower band", (d["skill_category"] == "novice") & (d["metric_cluster"] != "metric_low"), denom_novice), + ("Expert procedure group outside upper band", (d["skill_category"] == "expert") & (d["metric_cluster"] != "metric_high"), denom_expert), + ] + rows = [] + for label, mask, denom in disagreement_specs: + count = int(mask.sum()) + pct = 100 * count / denom if denom else np.nan + rows.append(f"{label} & {count}/{denom} & {pct:.1f}\\% \\\\") + (TAB / "performance_disagreement.tex").write_text( + "\n".join( + [ + "\\begin{tabular}{lrr}", + "\\toprule", + "Comparison & Count & Percentage \\\\", + "\\midrule", + *rows, + "\\bottomrule", + "\\end{tabular}", + ] + ) + ) + + if not clusters.empty and cluster_summary.get("available"): + rows = [] + order = {cl: i for i, cl in enumerate(BAND_ORDER)} + thresholds = cluster_summary.get("metric_band_thresholds", [np.nan, np.nan]) + threshold_rules = { + "metric_low": f"$< {thresholds[0]:.2f}$", + "metric_middle": f"${thresholds[0]:.2f}$ to $< {thresholds[1]:.2f}$", + "metric_high": f"$\\geq {thresholds[1]:.2f}$", + } + for cl in BAND_ORDER: + g = clusters[clusters["metric_cluster"] == cl] + if g.empty: + continue + rows.append( + ( + order[cl], + f"{BAND_LABELS[cl]} & {threshold_rules[cl]} & {len(g)} & " + f"{g['Coordination-control composite'].mean():.2f} & {g['total_procedures'].median():.0f} " + f"[{g['total_procedures'].quantile(0.25):.0f}, {g['total_procedures'].quantile(0.75):.0f}] & " + f"{int((g['skill_category']=='novice').sum())}/{int((g['skill_category']=='intermediate').sum())}/{int((g['skill_category']=='expert').sum())} \\\\" + ) + ) + rows = [r for _, r in sorted(rows)] + (TAB / "kmeans_clusters.tex").write_text( + "\n".join( + [ + "\\begin{tabular}{llrrrr}", + "\\toprule", + "Motion-score band & Score rule & Trials & Mean score & Procedure median [IQR] & Procedure N/I/E \\\\", + "\\midrule", + *rows, + "\\bottomrule", + "\\end{tabular}", + ] + ) + ) + held_out_path = OUT / "held_out_band_statistics.csv" + if held_out_path.exists(): + held_out = pd.read_csv(held_out_path) + held_out_rows = [] + for _, row in held_out.iterrows(): + if row["outcome"] == "Workspace excursion": + outcome_label = "Workspace compactness (descriptive)" + arrow = "" + else: + outcome_label = str(row["outcome"]) + arrow = " ($\\uparrow$)" if row["direction"] == "higher" else " ($\\downarrow$)" + q_text = "$<0.001$" if row["upper_lower_q"] < 0.001 else f"{row['upper_lower_q']:.3f}" + held_out_rows.append( + f"{outcome_label}{arrow} & " + f"{row['median_lower']:.2f}/{row['median_middle']:.2f}/{row['median_upper']:.2f} & " + f"{row['oriented_cliffs_delta_upper_vs_lower']:.2f} " + f"[{row['delta_ci_low']:.2f}, {row['delta_ci_high']:.2f}] & " + f"{q_text} & " + f"{int(row['n_lower'])}/{int(row['n_middle'])}/{int(row['n_upper'])} \\\\" + ) + (TAB / "held_out_band_checks.tex").write_text( + "\n".join( + [ + "\\begin{tabular}{lrrrr}", + "\\toprule", + "Contextual outcome & Lower/middle/upper median & " + "Oriented Cliff $\\delta$ [95\\% CI] & FDR $q$ & $n$ L/M/U \\\\", + "\\midrule", + *held_out_rows, + "\\bottomrule", + "\\end{tabular}", + ] + ) + ) + validation = pd.read_csv(OUT / "kmeans_validation.csv") if (OUT / "kmeans_validation.csv").exists() else pd.DataFrame() + if not validation.empty: + val_rows = [ + f"{int(r['k'])} & {r['silhouette']:.2f} & {r['davies_bouldin']:.2f} & {r['calinski_harabasz']:.1f} & {r['inertia']:.1f} \\\\" + for _, r in validation.iterrows() + ] + (TAB / "kmeans_validation.tex").write_text( + "\n".join( + [ + "\\begin{tabular}{rrrrr}", + "\\toprule", + "$k$ & Silhouette $\\uparrow$ & Davies--Bouldin $\\downarrow$ & Calinski--Harabasz $\\uparrow$ & Inertia $\\downarrow$ \\\\", + "\\midrule", + *val_rows, + "\\bottomrule", + "\\end{tabular}", + ] + ) + ) + sensitivity = cluster_summary.get("sensitivity", {}) + sensitivity_rows = [] + complete = sensitivity.get("complete_case", {}) + complete_cuts = complete.get("thresholds", [np.nan, np.nan]) + sensitivity_rows.append( + "Complete raw-feature cases & " + f"$n={int(complete.get('n_trials', 0))}$ & " + f"{complete_cuts[0]:.2f}, {complete_cuts[1]:.2f} & " + f"{complete.get('assignment_adjusted_rand_index', np.nan):.2f} \\\\" + ) + perturb = sensitivity.get("domain_weight_perturbation", {}) + sensitivity_rows.append( + "Domain weights varied by 25\\% & " + f"{int(perturb.get('n_repetitions', 0))} repetitions & -- & " + f"{perturb.get('adjusted_rand_index_median', np.nan):.2f} " + f"[{perturb.get('adjusted_rand_index_ci_low', np.nan):.2f}, " + f"{perturb.get('adjusted_rand_index_ci_high', np.nan):.2f}] \\\\" + ) + for row in sensitivity.get("leave_one_domain_out", []): + cuts = row.get("thresholds", [np.nan, np.nan]) + sensitivity_rows.append( + f"Omit {row['omitted_domain']} & Remaining one-domain score & " + f"{cuts[0]:.2f}, {cuts[1]:.2f} & {row['adjusted_rand_index']:.2f} \\\\" + ) + for row in sensitivity.get("leave_one_cohort_out", []): + cuts = row.get("thresholds", [np.nan, np.nan]) + sensitivity_rows.append( + f"Fit without {dataset_label(row['held_out_dataset'])} & Excluded cohort & " + f"{cuts[0]:.2f}, {cuts[1]:.2f} & {row['held_out_adjusted_rand_index']:.2f} \\\\" + ) + (TAB / "band_sensitivity.tex").write_text( + "\n".join( + [ + "\\begin{tabular}{llll}", + "\\toprule", + "Sensitivity analysis & Data or perturbation & Cut points & Assignment ARI \\\\", + "\\midrule", + *sensitivity_rows, + "\\bottomrule", + "\\end{tabular}", + ] + ) + ) + + if not proxy.empty: + rows = [] + for skill in SKILL_ORDER: + g = proxy[proxy["skill_category"] == skill] + rows.append( + f"{nice(skill)} & {g['Bimanual coordination'].mean():.2f} & {g['Task efficiency'].mean():.2f} & " + f"{g['Instrument motion control'].mean():.2f} & {g['Workspace excursion'].mean():.2f} & " + f"{g['Coordination-control composite'].mean():.2f} \\\\" + ) + (TAB / "osats_proxy.tex").write_text( + "\n".join( + [ + "\\begin{tabular}{lrrrrr}", + "\\toprule", + "Procedure group & Bimanual $\\uparrow$ & Efficiency $\\uparrow$ & Motion control $\\uparrow$ & Workspace compactness & Coordination and control score $\\uparrow$ \\\\", + "\\midrule", + *rows, + "\\bottomrule", + "\\end{tabular}", + ] + ) + ) + + seg_summary_path = OUT / "phase_segment_summary.csv" + if seg_summary_path.exists(): + seg_summary = pd.read_csv(seg_summary_path) + rows = [] + for phase in PHASE_ORDER: + g = seg_summary[seg_summary["phase"] == phase] + if g.empty: + continue + r = g.iloc[0] + rows.append( + f"{nice(phase)} & {int(r['n_segments'])} & {r['mean_duration_s']:.2f} & {r['median_duration_s']:.2f} \\\\" + ) + (TAB / "phase_segment_summary.tex").write_text( + "\n".join( + [ + "\\begin{tabular}{lrrr}", + "\\toprule", + "Phase & Segments & Mean duration (s) & Median duration (s) \\\\", + "\\midrule", + *rows, + "\\bottomrule", + "\\end{tabular}", + ] + ) + ) + + if not phase_kinematics.empty: + rows = [] + for phase in ["reach", "grasp", "transfer", "place", "nudge"]: + g = phase_kinematics[phase_kinematics["phase"] == phase] + if g.empty: + continue + r = g.iloc[0] + rows.append( + f"{nice(phase)} & {int(r['n_trials'])} & {r['duration_s']:.0f} & " + f"{r['tool1_speed_mm_s']:.1f} & {r['tool2_speed_mm_s']:.1f} & " + f"{r['combined_path_rate_mm_s']:.1f} \\\\" + ) + (TAB / "phase_kinematics_summary.tex").write_text( + "\n".join( + [ + "\\begin{tabular}{lrrrrr}", + "\\toprule", + "Phase & Trials & Duration (s) & Tool 1 speed & Tool 2 speed & Combined path rate \\\\", + "\\midrule", + *rows, + "\\bottomrule", + "\\end{tabular}", + ] + ) + ) + + if not clusters.empty and not phase_trials.empty and not phase_cycles.empty: + phase = _phase_trials_with_clusters(phase_trials, clusters).dropna(subset=["metric_cluster"]) + cyc = _phase_cycles_with_clusters(phase_cycles, clusters).dropna(subset=["metric_cluster"]) + if not phase.empty and not cyc.empty: + trial_cycle = ( + cyc.groupby(["metric_cluster", "trial_key"], as_index=False) + .agg( + mean_cycle_duration_s=("duration_s", "mean"), + mean_transitions=("n_transitions", "mean"), + n_cycles=("cycle_index", "count"), + ) + ) + rows = [] + for band in BAND_ORDER: + pg = phase[phase["metric_cluster"] == band] + cg = cyc[cyc["metric_cluster"] == band] + tg = trial_cycle[trial_cycle["metric_cluster"] == band] + if pg.empty or cg.empty: + continue + rows.append( + f"{BAND_LABELS[band]} & {pg['trial_key'].nunique()} & {len(cg)} & " + f"{tg['mean_cycle_duration_s'].mean():.2f} & {tg['mean_transitions'].mean():.2f} & " + f"{100 * pg['frac_transfer'].mean():.1f}\\% & {100 * pg['frac_place'].mean():.1f}\\% \\\\" + ) + (TAB / "phase_bottlenecks.tex").write_text( + "\n".join( + [ + "\\begin{tabular}{lrrrrrr}", + "\\toprule", + "Motion-score band & Trials & Cycles & Cycle time (s) & Transitions & Transfer time & Place time \\\\", + "\\midrule", + *rows, + "\\bottomrule", + "\\end{tabular}", + ] + ) + ) + + drop_rows = [] + for band in BAND_ORDER: + cg = cyc[cyc["metric_cluster"] == band] + if cg.empty: + continue + per_trial = cg.groupby("trial_key").agg( + n_drop_events=("n_drop_events", "sum"), + n_cycles=("cycle_index", "count"), + ) + per_trial["rate"] = 100 * per_trial["n_drop_events"] / per_trial["n_cycles"] + drop_rows.append( + f"Motion-score band & {BAND_SHORT_LABELS[band]} & " + f"{len(per_trial)} & {len(cg)} & {int(cg['n_drop_events'].sum())} & " + f"{per_trial['rate'].mean():.2f} & " + f"{100 * (per_trial['n_drop_events'] > 0).mean():.1f}\\% \\\\" + ) + for skill in SKILL_ORDER: + cg = cyc[cyc["skill_category"] == skill] + if cg.empty: + continue + per_trial = cg.groupby("trial_key").agg( + n_drop_events=("n_drop_events", "sum"), + n_cycles=("cycle_index", "count"), + ) + per_trial["rate"] = 100 * per_trial["n_drop_events"] / per_trial["n_cycles"] + drop_rows.append( + f"Procedure count & {nice(skill)} & {len(per_trial)} & {len(cg)} & " + f"{int(cg['n_drop_events'].sum())} & " + f"{per_trial['rate'].mean():.2f} & " + f"{100 * (per_trial['n_drop_events'] > 0).mean():.1f}\\% \\\\" + ) + (TAB / "drop_episode_summary.tex").write_text( + "\n".join( + [ + "\\begin{tabular}{llrrrrr}", + "\\toprule", + "Grouping & Group & Trials & Cycles & Drop episodes & " + "Mean episodes per 100 cycles & Trials with drop \\\\", + "\\midrule", + *drop_rows, + "\\bottomrule", + "\\end{tabular}", + ] + ) + ) + + +def write_reproducibility_manifest() -> None: + """Write an auditable manifest for the caches used by this manuscript.""" + input_paths = analysis_input_paths() + packages = [ + "numpy", + "pandas", + "matplotlib", + "seaborn", + "scipy", + "scikit-learn", + "pyarrow", + ] + manifest = { + "analysis_script": { + "path": str((ROOT / "scripts" / "build_scirep_analysis.py").relative_to(ROOT)), + "sha256": file_sha256(ROOT / "scripts" / "build_scirep_analysis.py"), + }, + "python": { + "executable": Path(sys.executable).name, + "version": sys.version, + "platform": platform.platform(), + }, + "packages": {name: package_version(name) for name in packages}, + "inputs": { + key: { + "path": portable_input_path(path), + "exists": path.exists(), + "size_bytes": path.stat().st_size if path.exists() and path.is_file() else None, + "sha256": file_sha256(path), + } + for key, path in input_paths.items() + }, + "random_seeds": { + "bootstrap_and_sampling": 20260618, + "classification_cv": 13, + "pca": 20260618, + "kmeans": 20260618, + }, + } + (OUT / "analysis_manifest.json").write_text(json.dumps(manifest, indent=2)) + + +def main() -> None: + validate_analysis_inputs() + setup_style() + trials, cycles, frames = load_phase_data() + all_df = load_all_trial_data(frames) + feature_stats = feature_statistics(all_df) + classification = run_classification(all_df) + proxy = osats_proxy_scores(all_df) + adjusted_models = cohort_adjusted_models(all_df, proxy) + feature_dictionary = write_feature_dictionary(all_df) + clusters, cluster_summary = kmeans_skill_clusters(all_df, proxy) + trim_validation = trimming_rule_validation(frames, clusters) + processing_checks = processing_sensitivity( + all_df, + frames, + proxy, + clusters, + cluster_summary, + ) + held_out_band_statistics(clusters) + metric_band_classification = run_metric_band_classification(clusters) + motion_sample = load_origin_motion(all_df) + phase_statistics(trials, cycles, frames) + phase_kinematics = phase_specific_kinematics(frames, clusters) + plot_task_setup_overview() + plot_cohort(all_df, trials) + plot_feature_effects(feature_stats) + plot_phase_timing(cycles, trials) + plot_experience_links(all_df, trials) + plot_osats_proxy(proxy, clusters, cluster_summary) + plot_kmeans_clusters(clusters, cluster_summary) + plot_motion_domains(all_df) + plot_jaw_and_rotation(all_df) + plot_workspace_heatmaps(motion_sample) + plot_skill_workspace_xy(motion_sample) + plot_phase_by_cluster(trials, clusters) + plot_tool_specific_motion_boxplots(all_df) + plot_sorted_participant_bars(all_df, proxy) + plot_dataset_metric_matrix(all_df, proxy) + plot_procedure_motion_disagreement(clusters) + plot_phase_bottlenecks(trials, cycles, clusters) + plot_cohort_effect_forest(all_df) + plot_time_synchrony_quadrants(all_df, clusters) + plot_continuous_performance_validation(proxy, clusters) + write_tables( + all_df, + trials, + cycles, + feature_stats, + adjusted_models, + phase_kinematics, + classification, + proxy, + clusters, + cluster_summary, + metric_band_classification, + ) + write_reproducibility_manifest() + summary = { + "all_trials": int(len(all_df)), + "phase_trials": int(len(trials)), + "phase_cycles": int(len(cycles)), + "feature_dictionary_rows": int(len(feature_dictionary)), + "trimming_rule_validation": trim_validation.to_dict(orient="records"), + "processing_sensitivity": processing_checks.to_dict( + orient="records" + ), + "classification": classification, + "metric_band_classification": metric_band_classification, + "kmeans": cluster_summary, + "core_motion_score_mean_by_procedure_group": ( + proxy.groupby("skill_category")["Coordination-control composite"].mean().to_dict() + ), + "top_feature_effects": feature_stats.head(5).to_dict(orient="records"), + } + (OUT / "analysis_summary.json").write_text(json.dumps(summary, indent=2)) + print(json.dumps(summary, indent=2)[:4000]) + + +if __name__ == "__main__": + main() diff --git a/scripts/validate_release.py b/scripts/validate_release.py new file mode 100644 index 0000000..2c09d7a --- /dev/null +++ b/scripts/validate_release.py @@ -0,0 +1,126 @@ +#!/usr/bin/env python3 +"""Validate the aggregate LASK analysis release without private source data.""" +from __future__ import annotations + +import csv +import hashlib +import json +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] +DERIVED = ROOT / "data" / "derived" + + +def read_json(name: str) -> dict: + with (DERIVED / name).open(encoding="utf-8") as handle: + return json.load(handle) + + +def read_csv(name: str) -> list[dict[str, str]]: + with (DERIVED / name).open(newline="", encoding="utf-8") as handle: + return list(csv.DictReader(handle)) + + +def sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as handle: + for chunk in iter(lambda: handle.read(1024 * 1024), b""): + digest.update(chunk) + return digest.hexdigest() + + +def require(condition: bool, message: str) -> None: + if not condition: + raise AssertionError(message) + + +def main() -> None: + required_files = [ + ROOT / "README.md", + ROOT / "CITATION.cff", + ROOT / "docs" / "DATASET.md", + ROOT / "docs" / "ANALYSIS.md", + ROOT / "docs" / "FEATURES.md", + ROOT / "docs" / "PHASES.md", + ROOT / "scripts" / "build_scirep_analysis.py", + DERIVED / "analysis_manifest.json", + DERIVED / "analysis_summary.json", + DERIVED / "feature_dictionary.csv", + DERIVED / "all_trial_feature_statistics.csv", + DERIVED / "cohort_adjusted_models.csv", + ] + for path in required_files: + require(path.is_file() and path.stat().st_size > 0, f"Missing required file: {path}") + + summary = read_json("analysis_summary.json") + require(summary["all_trials"] == 115, "Expected 115 recordings in the inventory") + require(summary["phase_trials"] == 38, "Expected 38 phase-labelled recordings") + require(summary["phase_cycles"] == 425, "Expected 425 placement-complete cycles") + require(summary["feature_dictionary_rows"] == 30, "Expected 30 defined motion features") + + feature_rows = read_csv("all_trial_feature_statistics.csv") + require(len(feature_rows) == 29, "Expected 29 inferential feature rows") + significant_correlations = [ + row for row in feature_rows if float(row["spearman_q"]) < 0.05 + ] + significant_group_tests = [ + row for row in feature_rows if float(row["kruskal_q"]) < 0.05 + ] + require( + len(significant_correlations) == 8, + "Expected eight false-discovery-rate-corrected procedure correlations", + ) + require( + not significant_group_tests, + "No three-group feature test should survive correction", + ) + + model_rows = read_csv("cohort_adjusted_models.csv") + significant_models = { + row["outcome"] for row in model_rows if float(row["procedure_q"]) < 0.05 + } + require( + significant_models + == { + "total_time", + "bimanual_correlation", + "Coordination-control composite", + }, + "Unexpected set of corrected cohort-adjusted procedure effects", + ) + + manifest = read_json("analysis_manifest.json") + analysis_script = ROOT / manifest["analysis_script"]["path"] + require( + sha256(analysis_script) == manifest["analysis_script"]["sha256"], + "Analysis script hash does not match the public manifest", + ) + for source in manifest["inputs"].values(): + require( + not source["path"].startswith("/"), + "Manifest contains a machine-specific absolute input path", + ) + require(len(source["sha256"]) == 64, "Input hash is missing or malformed") + + figures = [ + "fig1_cohort_structure.png", + "fig2_feature_effects.png", + "fig3_phase_timing.png", + "fig4_experience_links.png", + "fig21_cohort_effect_forest.png", + "fig23_continuous_performance_validation.png", + ] + for name in figures: + path = ROOT / "paper" / "figures" / name + require(path.is_file() and path.stat().st_size > 20_000, f"Missing figure: {name}") + + print( + "Validated LASK aggregate release: " + "115 recordings, 38 phase recordings, 425 cycles, " + "29 feature tests, 8 corrected continuous associations." + ) + + +if __name__ == "__main__": + main()

Sb*50%A2Eah}6#ffUlTrmADzE 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